diff --git a/db/re/item_upgrade.yml b/db/re/item_upgrade.yml index af1b8b2cb6..4da53821ea 100644 --- a/db/re/item_upgrade.yml +++ b/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, 쉐도우 아이템 diff --git a/npc/re/other/LapineEnchants.txt b/npc/re/other/LapineEnchants.txt index 5b68e7c108..ca70ffcf25 100644 --- a/npc/re/other/LapineEnchants.txt +++ b/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; diff --git a/src/map/item_synthesis.cpp b/src/map/item_synthesis.cpp index 7361319bbe..42aa4f8230 100644 --- a/src/map/item_synthesis.cpp +++ b/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])) diff --git a/src/map/item_upgrade.cpp b/src/map/item_upgrade.cpp index d96237d033..70eec546eb 100644 --- a/src/map/item_upgrade.cpp +++ b/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; }