summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorYour Name <hemagx2@gmail.com>2015-12-12 21:44:27 +0200
committerHaru <haru@dotalux.com>2015-12-13 03:55:41 +0100
commitf102c913b2aa093ef40c7846e25850ebb1106d71 (patch)
tree8965bde6164baa50121171c7291ea438e11d8503 /src/map
parentbb214d4651c9c9aa9599f50cb5de52059176a87f (diff)
downloadhercules-f102c913b2aa093ef40c7846e25850ebb1106d71.tar.gz
hercules-f102c913b2aa093ef40c7846e25850ebb1106d71.tar.bz2
hercules-f102c913b2aa093ef40c7846e25850ebb1106d71.tar.xz
hercules-f102c913b2aa093ef40c7846e25850ebb1106d71.zip
- Fixed #723 now it's possible to retrieve Battle Config Settings from plugins into scripts
- Fixed Possible Crash when null parse function pointer passed to HPMi->addConf - Now it's possible to use same parse function for all config entries - Now Battle Config entries must have a return function
Diffstat (limited to 'src/map')
-rw-r--r--src/map/battle.c20
-rw-r--r--src/map/battle.h4
-rw-r--r--src/map/script.c14
3 files changed, 29 insertions, 9 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index 7fbbcd0d5..1725d8c65 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -7329,15 +7329,23 @@ int battle_set_value(const char* w1, const char* w2)
return 1;
}
-int battle_get_value(const char* w1)
+bool battle_get_value(const char *w1, int *value)
{
int i;
- nullpo_retr(1, w1);
+
+ nullpo_retr(false, w1);
+ nullpo_retr(false, value);
+
ARR_FIND(0, ARRAYLENGTH(battle_data), i, strcmpi(w1, battle_data[i].str) == 0);
- if (i == ARRAYLENGTH(battle_data))
- return 0; // not found
- else
- return *battle_data[i].val;
+ if (i == ARRAYLENGTH(battle_data)) {
+ if (HPM->getBattleConf(w1,value))
+ return true;
+ } else {
+ *value = *battle_data[i].val;
+ return true;
+ }
+
+ return false;
}
void battle_set_defaults(void) {
diff --git a/src/map/battle.h b/src/map/battle.h
index 68a427e72..595ed32bb 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -630,8 +630,8 @@ struct battle_interface {
/* - battle_config */
int (*config_read) (const char *cfgName);
void (*config_set_defaults) (void);
- int (*config_set_value) (const char* w1, const char* w2);
- int (*config_get_value) (const char* w1);
+ int (*config_set_value) (const char *w1, const char *w2);
+ bool (*config_get_value) (const char *w1, int *value);
void (*config_adjust) (void);
/* ----------------------------------------- */
/* picks a random enemy within the specified range */
diff --git a/src/map/script.c b/src/map/script.c
index cfc7ed052..cc9552d60 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -14620,8 +14620,20 @@ BUILDIN(setbattleflag)
BUILDIN(getbattleflag)
{
const char *flag;
+ int value;
+
flag = script_getstr(st,2);
- script_pushint(st,battle->config_get_value(flag));
+
+ if (battle->config_get_value(flag, &value)) {
+ script_pushint(st,value);
+ return true;
+ } else {
+ script_pushint(st,0);
+ ShowWarning("buildin_getbattleflag: non-exist battle config requested %s \n", flag);
+ script->reportsrc(st);
+ return false;
+ }
+
return true;
}