summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2019-10-02 11:16:03 -0300
committerJesusaves <cpntb1@ymail.com>2019-10-02 11:16:03 -0300
commit1f6cb4ec6049e2f15e043c33e9787de8f13a9e3e (patch)
treeefbeabfb0a5f6ad59aab254e97923fec4c6565f4
parent6da4682a7b3ec14d278b22abcc0a56b9499d076a (diff)
downloadevol-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.c1
-rw-r--r--src/emap/script_buildins.c102
-rw-r--r--src/emap/script_buildins.h1
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);