From c1c02048f9703c06127feac9a3e09ae247300445 Mon Sep 17 00:00:00 2001 From: Cydh Date: Tue, 12 Nov 2019 10:38:57 +0700 Subject: [PATCH] * Typo fixed, thanks to @xEasycore * Udpated item upgrade, added `NeedRefineMax` --- db/import-tmpl/item_synthesis.yml | 2 +- db/import-tmpl/item_upgrade.yml | 5 +++-- db/pre-re/item_synthesis.yml | 2 +- db/pre-re/item_upgrade.yml | 5 +++-- db/re/item_synthesis.yml | 2 +- db/re/item_upgrade.yml | 5 +++-- src/map/item_synthesis.cpp | 2 +- src/map/item_upgrade.cpp | 10 +++++++++- src/map/item_upgrade.hpp | 1 + 9 files changed, 23 insertions(+), 11 deletions(-) diff --git a/db/import-tmpl/item_synthesis.yml b/db/import-tmpl/item_synthesis.yml index f6b07c2d7d..a7e79df6a3 100644 --- a/db/import-tmpl/item_synthesis.yml +++ b/db/import-tmpl/item_synthesis.yml @@ -7,7 +7,7 @@ ########################################################################### # - Id: # (int) Item ID of synthesis box # NeedRefine: # (int) Minimum refine level for source item -# SourceNeeded: # (int) Number of item sets (in SourceItem) must be selected +# SourceNeeded: # (int) Number of item sets (in SourceItem) must be selected (default: 1) # SourceItem: # List of item required # - Item: # (int) Item ID for source # - Amount: # (int) Item amount will be consumed diff --git a/db/import-tmpl/item_upgrade.yml b/db/import-tmpl/item_upgrade.yml index fdfe1cbcbb..5d3ca5bb96 100644 --- a/db/import-tmpl/item_upgrade.yml +++ b/db/import-tmpl/item_upgrade.yml @@ -6,8 +6,9 @@ # ########################################################################### # - Id: # (int) Item ID of upgrade box -# NeedRefineMin: # (int) Minimum refine level for target item (default :0) -# NeedOptionNumMin: # (int) Minimum random option that target item has (default :0) +# NeedRefineMin: # (int) Minimum refine level needed for target item (default: 0) +# NeedRefineMax: # (int) Maximum refine level needed for target item (default: MAX_REFINE) +# NeedOptionNumMin: # (int) Minimum random option that target item has (default: 0) # NotSocketEnchantItem: # (bool) Target item must not has enchant stone (default: true) # TargetItem: # List of possible item to be upgraded # - Item: # (int) Target's Item ID diff --git a/db/pre-re/item_synthesis.yml b/db/pre-re/item_synthesis.yml index f6b07c2d7d..a7e79df6a3 100644 --- a/db/pre-re/item_synthesis.yml +++ b/db/pre-re/item_synthesis.yml @@ -7,7 +7,7 @@ ########################################################################### # - Id: # (int) Item ID of synthesis box # NeedRefine: # (int) Minimum refine level for source item -# SourceNeeded: # (int) Number of item sets (in SourceItem) must be selected +# SourceNeeded: # (int) Number of item sets (in SourceItem) must be selected (default: 1) # SourceItem: # List of item required # - Item: # (int) Item ID for source # - Amount: # (int) Item amount will be consumed diff --git a/db/pre-re/item_upgrade.yml b/db/pre-re/item_upgrade.yml index fdfe1cbcbb..5d3ca5bb96 100644 --- a/db/pre-re/item_upgrade.yml +++ b/db/pre-re/item_upgrade.yml @@ -6,8 +6,9 @@ # ########################################################################### # - Id: # (int) Item ID of upgrade box -# NeedRefineMin: # (int) Minimum refine level for target item (default :0) -# NeedOptionNumMin: # (int) Minimum random option that target item has (default :0) +# NeedRefineMin: # (int) Minimum refine level needed for target item (default: 0) +# NeedRefineMax: # (int) Maximum refine level needed for target item (default: MAX_REFINE) +# NeedOptionNumMin: # (int) Minimum random option that target item has (default: 0) # NotSocketEnchantItem: # (bool) Target item must not has enchant stone (default: true) # TargetItem: # List of possible item to be upgraded # - Item: # (int) Target's Item ID diff --git a/db/re/item_synthesis.yml b/db/re/item_synthesis.yml index b93f57bd3f..2f4d9c635a 100644 --- a/db/re/item_synthesis.yml +++ b/db/re/item_synthesis.yml @@ -7,7 +7,7 @@ ########################################################################### # - Id: # (int) Item ID of synthesis box # NeedRefine: # (int) Minimum refine level for source item -# SourceNeeded: # (int) Number of item sets (in SourceItem) must be selected +# SourceNeeded: # (int) Number of item sets (in SourceItem) must be selected (default: 1) # SourceItem: # List of item required # - Item: # (int) Item ID for source # - Amount: # (int) Item amount will be consumed diff --git a/db/re/item_upgrade.yml b/db/re/item_upgrade.yml index 3b9345aacf..f980f45dea 100644 --- a/db/re/item_upgrade.yml +++ b/db/re/item_upgrade.yml @@ -6,8 +6,9 @@ # ########################################################################### # - Id: # (int) Item ID of upgrade box -# NeedRefineMin: # (int) Minimum refine level for target item (default :0) -# NeedOptionNumMin: # (int) Minimum random option that target item has (default :0) +# NeedRefineMin: # (int) Minimum refine level needed for target item (default: 0) +# NeedRefineMax: # (int) Maximum refine level needed for target item (default: MAX_REFINE) +# NeedOptionNumMin: # (int) Minimum random option that target item has (default: 0) # NotSocketEnchantItem: # (bool) Target item must not has enchant stone (default: true) # TargetItem: # List of possible item to be upgraded # - Item: # (int) Target's Item ID diff --git a/src/map/item_synthesis.cpp b/src/map/item_synthesis.cpp index c967c2701d..cc89fbecc7 100644 --- a/src/map/item_synthesis.cpp +++ b/src/map/item_synthesis.cpp @@ -213,7 +213,7 @@ void do_final_item_synthesis(void) { * Constructor */ s_item_synthesis_db::s_item_synthesis_db() - : source_needed(0) + : source_needed(1) , sources() , reward(nullptr) , source_refine_min(0) diff --git a/src/map/item_upgrade.cpp b/src/map/item_upgrade.cpp index 888a78d0a4..f5980ea499 100644 --- a/src/map/item_upgrade.cpp +++ b/src/map/item_upgrade.cpp @@ -84,8 +84,12 @@ uint64 ItemUpgradeDatabase::parseBodyNode(const YAML::Node &node) { this->asUInt16(node, "NeedRefineMin", entry->source_refine_min); } + if (this->nodeExists(node, "NeedRefineMax")) { + this->asUInt16(node, "NeedRefineMax", entry->source_refine_max); + } + if (this->nodeExists(node, "NeedOptionNumMin")) { - this->asUInt16(node, "NeedOptionNumMin", entry->source_refine_min); + this->asUInt16(node, "NeedOptionNumMin", entry->need_option_num); } if (this->nodeExists(node, "NotSocketEnchantItem")) { @@ -212,6 +216,7 @@ s_item_upgrade_db::s_item_upgrade_db() : targets() , result(nullptr) , source_refine_min(0) + , source_refine_max(MAX_REFINE) , need_option_num(0) , not_socket_enchant(false) , delete_target_onsuccess(true) @@ -252,6 +257,9 @@ bool s_item_upgrade_db::checkRequirement(item *it, item_data *id) if (this->source_refine_min > it->refine) return false; + if (this->source_refine_max < it->refine) + return false; + if (this->not_socket_enchant) { for (int i = id->slot; i < MAX_SLOTS; i++) { if (it->card[i]) diff --git a/src/map/item_upgrade.hpp b/src/map/item_upgrade.hpp index 1770c67daf..1b78b1abbe 100644 --- a/src/map/item_upgrade.hpp +++ b/src/map/item_upgrade.hpp @@ -21,6 +21,7 @@ struct s_item_upgrade_db { std::vector targets; script_code *result; uint16 source_refine_min; + uint16 source_refine_max; uint16 need_option_num; bool not_socket_enchant; bool delete_target_onsuccess;