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
This commit is contained in:
Cydh 2019-09-16 10:54:25 +07:00
parent 10f0ead08f
commit 600ff371c2
4 changed files with 31 additions and 5 deletions

View File

@ -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, 쉐도우 아이템

View File

@ -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;

View File

@ -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]))

View File

@ -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;
}