summaryrefslogtreecommitdiff
path: root/src/map/script.c
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2019-09-23 02:25:22 +0200
committerGitHub <noreply@github.com>2019-09-23 02:25:22 +0200
commit1132e2e89b4f193cc6edd9ed2856995f3fb8fdd2 (patch)
treed19c8deee09fa6d3e1f50a601f3a0d17767cde17 /src/map/script.c
parent418b26dddca1d6ad9261adee56f96cf7c2c2de9b (diff)
parentde6b3e72de09b3ca0ad34cd95e1fa7ebc572b2c1 (diff)
downloadhercules-1132e2e89b4f193cc6edd9ed2856995f3fb8fdd2.tar.gz
hercules-1132e2e89b4f193cc6edd9ed2856995f3fb8fdd2.tar.bz2
hercules-1132e2e89b4f193cc6edd9ed2856995f3fb8fdd2.tar.xz
hercules-1132e2e89b4f193cc6edd9ed2856995f3fb8fdd2.zip
Merge pull request #2336 from Asheraf/lapineddukddak
Implementation of LapineDdukDdak System
Diffstat (limited to 'src/map/script.c')
-rw-r--r--src/map/script.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/map/script.c b/src/map/script.c
index df6e0d329..0fe97574c 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -25755,6 +25755,25 @@ static BUILDIN(identifyidx)
return true;
}
+static BUILDIN(openlapineddukddakboxui)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+ const int item_id = script_getnum(st, 2);
+ struct item_data *it = itemdb->exists(item_id);
+ if (it == NULL) {
+ ShowError("buildin_openlapineddukddakboxui: Item %d is not valid\n", item_id);
+ script->reportfunc(st);
+ script->reportsrc(st);
+ script_pushint(st, false);
+ return true;
+ }
+ clif->lapineDdukDdak_open(sd, item_id);
+ script_pushint(st, true);
+ return true;
+}
+
/**
* Adds a built-in script function.
*
@@ -25934,6 +25953,22 @@ static void script_run_item_rental_end_script(struct map_session_data *sd, struc
script->current_item_id = 0;
}
+static void script_run_item_lapineddukddak_script(struct map_session_data *sd, struct item_data *data, int oid) __attribute__((nonnull (1, 2)));
+
+/**
+ * Run item lapineddukddak script for item.
+ *
+ * @param sd player session data. Must be correct and checked before.
+ * @param data unequipped item data. Must be correct and checked before.
+ * @param oid npc id. Can be also 0 or fake npc id.
+ */
+static void script_run_item_lapineddukddak_script(struct map_session_data *sd, struct item_data *data, int oid)
+{
+ script->current_item_id = data->nameid;
+ script->run(data->lapineddukddak->script, 0, sd->bl.id, oid);
+ script->current_item_id = 0;
+}
+
#define BUILDIN_DEF(x,args) { buildin_ ## x , #x , args, false }
#define BUILDIN_DEF2(x,x2,args) { buildin_ ## x , x2 , args, false }
#define BUILDIN_DEF_DEPRECATED(x,args) { buildin_ ## x , #x , args, true }
@@ -26549,6 +26584,7 @@ static void script_parse_builtin(void)
BUILDIN_DEF(identify, "i"),
BUILDIN_DEF(identifyidx, "i"),
+ BUILDIN_DEF(openlapineddukddakboxui, "i"),
};
int i, len = ARRAYLENGTH(BUILDIN);
RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up
@@ -27489,4 +27525,5 @@ void script_defaults(void)
script->run_item_unequip_script = script_run_item_unequip_script;
script->run_item_rental_start_script = script_run_item_rental_start_script;
script->run_item_rental_end_script = script_run_item_rental_end_script;
+ script->run_item_lapineddukddak_script = script_run_item_lapineddukddak_script;
}