diff options
author | Haru <haru@dotalux.com> | 2017-06-03 18:43:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-03 18:43:44 +0200 |
commit | 3061bb8257578bc88b9873f1ecebb05f8508bd0f (patch) | |
tree | 2d2257b9c574f29896ae0baa71a224c3b4f53ecf /src/map/script.c | |
parent | f795a6df2766348d2a7f43f48e392b3cf3008781 (diff) | |
parent | 6f2827cbf9282981a29abaa06236fb0cd6300057 (diff) | |
download | hercules-3061bb8257578bc88b9873f1ecebb05f8508bd0f.tar.gz hercules-3061bb8257578bc88b9873f1ecebb05f8508bd0f.tar.bz2 hercules-3061bb8257578bc88b9873f1ecebb05f8508bd0f.tar.xz hercules-3061bb8257578bc88b9873f1ecebb05f8508bd0f.zip |
Merge pull request #1684 from Smokexyz/refine-update
Enriched refine chance correction
Diffstat (limited to 'src/map/script.c')
-rw-r--r-- | src/map/script.c | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/map/script.c b/src/map/script.c index bd73fc021..91f1d8cc9 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -9366,20 +9366,32 @@ BUILDIN(getequipweaponlv) * 0 : false (max refine level or unequip..) *------------------------------------------*/ BUILDIN(getequippercentrefinery) { - int i = -1,num; + int i = -1, num; struct map_session_data *sd; + int type = 0; + + num = script_getnum(st, 2); + type = (script_hasdata(st, 3)) ? script_getnum(st, 3) : REFINE_CHANCE_TYPE_NORMAL; - num = script_getnum(st,2); sd = script->rid2sd(st); - if( sd == NULL ) + if (sd == NULL) return true; + if (type < REFINE_CHANCE_TYPE_NORMAL || type >= REFINE_CHANCE_TYPE_MAX) { + ShowError("buildin_getequippercentrefinery: Invalid type (%d) provided!\n", type); + script_pushint(st, 0); + return false; + } + + if (num > 0 && num <= ARRAYLENGTH(script->equip)) - i=pc->checkequip(sd,script->equip[num-1]); - if(i >= 0 && sd->status.inventory[i].nameid && sd->status.inventory[i].refine < MAX_REFINE) - script_pushint(st,status->get_refine_chance(itemdb_wlv(sd->status.inventory[i].nameid), (int)sd->status.inventory[i].refine)); + i = pc->checkequip(sd, script->equip[num - 1]); + + if (i >= 0 && sd->status.inventory[i].nameid != 0 && sd->status.inventory[i].refine < MAX_REFINE) + script_pushint(st, + status->get_refine_chance(itemdb_wlv(sd->status.inventory[i].nameid), (int) sd->status.inventory[i].refine, (enum refine_chance_type) type)); else - script_pushint(st,0); + script_pushint(st, 0); return true; } @@ -23412,7 +23424,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(getequipisidentify,"i"), BUILDIN_DEF(getequiprefinerycnt,"i"), BUILDIN_DEF(getequipweaponlv,"i"), - BUILDIN_DEF(getequippercentrefinery,"i"), + BUILDIN_DEF(getequippercentrefinery,"i?"), BUILDIN_DEF(successrefitem,"i?"), BUILDIN_DEF(failedrefitem,"i"), BUILDIN_DEF(downrefitem,"i?"), @@ -24057,6 +24069,12 @@ void script_hardcoded_constants(void) script->set_constant("BL_CHAR",BL_CHAR,false, false); script->set_constant("BL_ALL",BL_ALL,false, false); + script->constdb_comment("Refine Chance Types"); + script->set_constant("REFINE_CHANCE_TYPE_NORMAL", REFINE_CHANCE_TYPE_NORMAL, false, false); + script->set_constant("REFINE_CHANCE_TYPE_ENRICHED", REFINE_CHANCE_TYPE_ENRICHED, false, false); + script->set_constant("REFINE_CHANCE_TYPE_E_NORMAL", REFINE_CHANCE_TYPE_E_NORMAL, false, false); + script->set_constant("REFINE_CHANCE_TYPE_E_ENRICHED", REFINE_CHANCE_TYPE_E_ENRICHED, false, false); + script->constdb_comment("Player permissions"); script->set_constant("PERM_TRADE", PC_PERM_TRADE, false, false); script->set_constant("PERM_PARTY", PC_PERM_PARTY, false, false); |