diff options
author | Jesusaves <cpntb1@ymail.com> | 2019-10-02 11:16:03 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2019-10-02 11:16:03 -0300 |
commit | 1f6cb4ec6049e2f15e043c33e9787de8f13a9e3e (patch) | |
tree | efbeabfb0a5f6ad59aab254e97923fec4c6565f4 | |
parent | 6da4682a7b3ec14d278b22abcc0a56b9499d076a (diff) | |
download | evol-hercules-1f6cb4ec6049e2f15e043c33e9787de8f13a9e3e.tar.gz evol-hercules-1f6cb4ec6049e2f15e043c33e9787de8f13a9e3e.tar.bz2 evol-hercules-1f6cb4ec6049e2f15e043c33e9787de8f13a9e3e.tar.xz evol-hercules-1f6cb4ec6049e2f15e043c33e9787de8f13a9e3e.zip |
New function: readbattleparam( <param> )
Complements with some info only available with getunitdata(), which
only works with non-players. Not everything covered by getunitdata() is
covered by this function.
-rw-r--r-- | src/emap/init.c | 1 | ||||
-rw-r--r-- | src/emap/script_buildins.c | 102 | ||||
-rw-r--r-- | src/emap/script_buildins.h | 1 |
3 files changed, 104 insertions, 0 deletions
diff --git a/src/emap/init.c b/src/emap/init.c index eb06678..4c46190 100644 --- a/src/emap/init.c +++ b/src/emap/init.c @@ -211,6 +211,7 @@ HPExport void plugin_init (void) addScriptCommand("getitemoptionparambyindex", "ii", getItemOptionParamByIndex); addScriptCommand("setitemoptionbyindex", "iii*", setItemOptionByIndex); addScriptCommand("isinstance", "i", isInstance); + addScriptCommand("readbattleparam","i?",readBattleParam); // TMW2 Custom Script Commands addScriptCommand("getguildinfo","i",getguildinfo); diff --git a/src/emap/script_buildins.c b/src/emap/script_buildins.c index 329af68..284c539 100644 --- a/src/emap/script_buildins.c +++ b/src/emap/script_buildins.c @@ -2383,6 +2383,108 @@ BUILDIN(isInstance) return true; } +/*========================================== + * return the battle stats of a structure + * Supported values are most of UDT_* ones + * Not all values are supported; Only those without + * another assessor are (eg. MaxHP vs UDT_MAXHP) + * + * From 1 onwards: Str, Agi, Vit, Int, Dex, Luck + * From 7 onwards: AtkMin, AtkMax, Def, MDef, Hit, Flee + * From 13 onwards: MAtkMin, MatkMax + *------------------------------------------*/ +BUILDIN(readBattleParam) +{ + struct map_session_data *sd; + int data = script_getnum(st,2); + + // Account ID/Player Name is also supported + if (script_hasdata(st, 3)) { + if (script_isstringtype(st, 3)) { + sd = script->nick2sd(st, script_getstr(st, 3)); + } else { + sd = script->id2sd(st, script_getnum(st, 3)); + } + } else { + sd = script->rid2sd(st); + } + + // Error + if (sd == NULL) { + ShowError("Target is not player in readbattleparam(%d)\n", data); + script_pushint(st, -1); + return true; + } + + switch (data) { + // * From 1 onwards: Str, Agi, Vit, Int, Dex, Luck + case UDT_STR: + script_pushint(st, sd->battle_status.str); + break; + case UDT_AGI: + script_pushint(st, sd->battle_status.agi); + break; + case UDT_VIT: + script_pushint(st, sd->battle_status.vit); + break; + case UDT_INT: + script_pushint(st, sd->battle_status.int_); + break; + case UDT_DEX: + script_pushint(st, sd->battle_status.dex); + break; + case UDT_LUK: + script_pushint(st, sd->battle_status.luk); + break; + case UDT_ATKRANGE: + script_pushint(st, sd->battle_status.rhw.range); + break; + case UDT_ATKMIN: + script_pushint(st, sd->battle_status.rhw.atk); + break; + case UDT_ATKMAX: + script_pushint(st, sd->battle_status.rhw.atk+sd->battle_status.batk); + break; + case UDT_DEF: + script_pushint(st, sd->battle_status.def); + break; + case UDT_MDEF: + script_pushint(st, sd->battle_status.mdef+sd->battle_status.mdef2); + break; + case UDT_HIT: + script_pushint(st, sd->battle_status.hit); + break; + case UDT_FLEE: + script_pushint(st, sd->battle_status.flee); + break; + case UDT_MATKMIN: + script_pushint(st, sd->battle_status.matk_min); + break; + case UDT_MATKMAX: + script_pushint(st, sd->battle_status.matk_max); + break; + case UDT_CRIT: + script_pushint(st, sd->battle_status.cri); + break; + case UDT_ELETYPE: + script_pushint(st, sd->battle_status.def_ele); + break; + case UDT_ADELAY: + script_pushint(st, sd->battle_status.adelay); + break; + case UDT_DMOTION: + script_pushint(st, sd->battle_status.dmotion); + break; + default: + ShowError("Wrong paramType in readbattleparam(%d)\nAre you sure you used the right constants?\n", data); + script_pushint(st, -1); + break; + } + + return true; +} + + /////////////////////////////////////////////////////////////////////////////// // TMW2 Custom Commands /////////////////////////////////////////////////////////////////////////////// diff --git a/src/emap/script_buildins.h b/src/emap/script_buildins.h index 8c29632..cca24cd 100644 --- a/src/emap/script_buildins.h +++ b/src/emap/script_buildins.h @@ -100,6 +100,7 @@ BUILDIN(getItemOptionValueByIndex); BUILDIN(getItemOptionParamByIndex); BUILDIN(setItemOptionByIndex); BUILDIN(isInstance); +BUILDIN(readBattleParam); // TMW2 Build Ins BUILDIN(getguildinfo); |