summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2014-10-19 04:42:19 +0200
committerHaru <haru@dotalux.com>2014-10-24 00:59:20 +0200
commit98274e4ab8d5f8cb6381a4a625441c90020dffff (patch)
treeb9c3a1ccc70d0f19cee32542800fc1419a4908e2
parentdb1abaf5ef67bffb882b4b6b19c03343117a2b21 (diff)
downloadhercules-98274e4ab8d5f8cb6381a4a625441c90020dffff.tar.gz
hercules-98274e4ab8d5f8cb6381a4a625441c90020dffff.tar.bz2
hercules-98274e4ab8d5f8cb6381a4a625441c90020dffff.tar.xz
hercules-98274e4ab8d5f8cb6381a4a625441c90020dffff.zip
Restored ability to differentiate between active and inactive quests
- Added the questactive script command. - While this information may not be needed by official scripts, it was offered by the now deprecated checkquest, and as such it is made available again. Signed-off-by: Haru <haru@dotalux.com>
-rw-r--r--doc/script_commands.txt9
-rw-r--r--src/map/script.c18
2 files changed, 27 insertions, 0 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 26ecbdd42..b3f0b0e5c 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -8411,6 +8411,15 @@ If parameter 'HUNTING' is supplied:
---------------------------------------
+*questactive(<ID>)
+
+Check whether the given quest is in its active state.
+
+Returns true if the quest is active, false otherwise (quest not started,
+inactive or completed)
+
+---------------------------------------
+
*showevent <icon>{,<mark color>}
Show an emotion on top of a NPC, and optionally,
diff --git a/src/map/script.c b/src/map/script.c
index c88e2851f..0588d2f24 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -16373,6 +16373,23 @@ BUILDIN(checkquest) {
return true;
}
+BUILDIN(questactive) {
+ struct map_session_data *sd = script->rid2sd(st);
+ int quest_progress = 0;
+
+ if (sd == NULL)
+ return false;
+
+ if (quest->check(sd, script_getnum(st, 2), HAVEQUEST) == Q_ACTIVE)
+ script_pushint(st, 1);
+ else
+ script_pushint(st, 0);
+
+ script_pushint(st, quest_progress);
+
+ return true;
+}
+
BUILDIN(questprogress) {
struct map_session_data *sd = script->rid2sd(st);
enum quest_check_type type = HAVEQUEST;
@@ -19323,6 +19340,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(completequest, "i?"),
BUILDIN_DEF(checkquest, "i?"),
BUILDIN_DEF(questprogress, "i?"),
+ BUILDIN_DEF(questactive, "i"),
BUILDIN_DEF(changequest, "ii"),
BUILDIN_DEF(showevent, "i?"),