Pārlūkot izejas kodu

* Typo fixed, thanks to @xEasycore
* Udpated item upgrade, added `NeedRefineMax`

Cydh 5 gadi atpakaļ
vecāks
revīzija
c1c02048f9

+ 1 - 1
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

+ 3 - 2
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

+ 1 - 1
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

+ 3 - 2
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

+ 1 - 1
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

+ 3 - 2
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

+ 1 - 1
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)

+ 9 - 1
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])

+ 1 - 0
src/map/item_upgrade.hpp

@@ -21,6 +21,7 @@ struct s_item_upgrade_db {
 	std::vector<uint32> targets;
 	script_code *result;
 	uint16 source_refine_min;
+	uint16 source_refine_max;
 	uint16 need_option_num;
 	bool not_socket_enchant;
 	bool delete_target_onsuccess;