浏览代码

Follow up 10f0ead08f82711135ee0d582e2ab905579380e0
* Added missing script function `F_Lapine_Shadow_Random_Mix`
* Corrected `F_Lapine_Gold_Statue`usage
* Corrected `F_Lapine_Cursed_Blood` usage
* fixed some alerts
* Thanks to @ecdarreola, @Angelic234, @teededung

Cydh 5 年之前
父节点
当前提交
600ff371c2
共有 4 个文件被更改,包括 31 次插入5 次删除
  1. 2 2
      db/re/item_upgrade.yml
  2. 26 0
      npc/re/other/LapineEnchants.txt
  3. 2 2
      src/map/item_synthesis.cpp
  4. 1 1
      src/map/item_upgrade.cpp

+ 2 - 2
db/re/item_upgrade.yml

@@ -472,7 +472,7 @@ Body:
   TargetItem:
   - Item: 28945 #Bloody_Knight_Shield_
   Result: |
-    callfunc("F_Lapine_Cursed_Blood", .@opts[0], .@vals[0]);
+    callfunc("F_Lapine_Cursed_Blood", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23547 # Gold_Statue, 정화된 기사의 방패
@@ -482,7 +482,7 @@ Body:
   TargetItem:
   - Item: 28946 #Bloody_Knight_Shield__
   Result: |
-    callfunc("F_Lapine_Gold_Statue", .@opts[0], .@vals[0], .@opts[1], .@vals[1], .@opts[2], .@vals[3]);
+    callfunc("F_Lapine_Gold_Statue", .@opts[0], .@vals[0], .@opts[1], .@vals[1], .@opts[2], .@vals[2]);
     .@params[0] = 0;
     getitem3(LapineUpgradeItem,1,1,@last_lapine_refine,0,@last_lapine_card1,@last_lapine_card2,@last_lapine_card3,@last_lapine_card4,.@opts,.@vals,.@params);
 - Id: 23436 # Shadow_Refine_Hammer, 쉐도우 아이템

+ 26 - 0
npc/re/other/LapineEnchants.txt

@@ -1954,6 +1954,32 @@ function	script	F_Lapine_Grace_Convert4	{
 	return;
 }
 
+function	script	F_Lapine_Shadow_Random_Mix	{
+	// Option:1
+	.@r = rand(200); // No rates info
+	if (.@r < 10)  { set getarg(2), RDMOPT_VAR_STRAMOUNT; set getarg(3), rand(1,15); return; }
+	if (.@r < 20)  { set getarg(2), RDMOPT_VAR_AGIAMOUNT; set getarg(3), rand(1,15); return; }
+	if (.@r < 30)  { set getarg(2), RDMOPT_VAR_VITAMOUNT; set getarg(3), rand(1,3); return; }
+	if (.@r < 40)  { set getarg(2), RDMOPT_VAR_INTAMOUNT; set getarg(3), rand(1,3); return; }
+	if (.@r < 50)  { set getarg(2), RDMOPT_VAR_DEXAMOUNT; set getarg(3), 1; return; }
+	if (.@r < 60)  { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(100,500); return; }
+	if (.@r < 70)  { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(20,100); return; }
+	if (.@r < 80)  { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(1,2); return; }
+	if (.@r < 90)  { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(1,2); return; }
+	if (.@r < 100) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(5,15); return; }
+	if (.@r < 110) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(5,15); return; }
+	if (.@r < 120) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(1,5); return; }
+	if (.@r < 130) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(1,3); return; }
+	if (.@r < 140) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(1,5); return; }
+	if (.@r < 150) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(1,5); return; }
+	if (.@r < 160) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(3,5); return; }
+	if (.@r < 170) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(3,5); return; }
+	if (.@r < 180) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(10,25); return; }
+	if (.@r < 190) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(1,3); return; }
+	if (.@r < 200) { set getarg(2), RDMOPT_VAR_LUKAMOUNT; set getarg(3), rand(1,5); return; }
+	return;
+}
+
 // TODO
 function	script	F_Lapine_Ein_Ddbox	{
 	return;

+ 2 - 2
src/map/item_synthesis.cpp

@@ -98,7 +98,7 @@ uint64 ItemSynthesisDatabase::parseBodyNode(const YAML::Node &node) {
 		std::string script_str;
 		script_code *code;
 
-		if (!this->asString(node, "Reward", script_str) || !(code = parse_script(script_str.c_str(), this->getCurrentFile().c_str(), id, SCRIPT_IGNORE_EXTERNAL_BRACKETS)) != NULL) {
+		if (!this->asString(node, "Reward", script_str) || !(code = parse_script(script_str.c_str(), this->getCurrentFile().c_str(), id, SCRIPT_IGNORE_EXTERNAL_BRACKETS))) {
 			this->invalidWarning(node["Reward"], "Invalid item script for 'Reward'.\n");
 			return 0;
 		}
@@ -251,7 +251,7 @@ bool s_item_synthesis_db::checkRequirement(map_session_data *sd, const std::vect
 	item_data *id = NULL;
 
 	for (auto &it : items) {
-		if (it.index < 0 || it.index >= MAX_INVENTORY)
+		if (it.index >= MAX_INVENTORY)
 			return false;
 
 		if (!(item = &sd->inventory.u.items_inventory[it.index]) || !(id = sd->inventory_data[it.index]))

+ 1 - 1
src/map/item_upgrade.cpp

@@ -50,7 +50,7 @@ uint64 ItemUpgradeDatabase::parseBodyNode(const YAML::Node &node) {
 		std::string script_str;
 		script_code *code;
 
-		if (!this->asString(node, "Result", script_str) || !(code = parse_script(script_str.c_str(), this->getCurrentFile().c_str(), id, SCRIPT_IGNORE_EXTERNAL_BRACKETS)) != NULL) {
+		if (!this->asString(node, "Result", script_str) || !(code = parse_script(script_str.c_str(), this->getCurrentFile().c_str(), id, SCRIPT_IGNORE_EXTERNAL_BRACKETS))) {
 			this->invalidWarning(node["Result"], "Invalid item script for 'Result'.\n");
 			return 0;
 		}