summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/map/init.c2
-rw-r--r--src/map/script.c28
-rw-r--r--src/map/script.h1
3 files changed, 30 insertions, 1 deletions
diff --git a/src/map/init.c b/src/map/init.c
index 022428c..3015ea5 100644
--- a/src/map/init.c
+++ b/src/map/init.c
@@ -72,7 +72,7 @@ HPExport void plugin_init (void)
addScriptCommand("requestlang", "v", requestLang);
addScriptCommand("getq", "i", getq);
addScriptCommand("setq", "ii", setq);
- addScriptCommand("getnpcdir", "*", dummyInt);
+ addScriptCommand("getnpcdir", "*", getNpcDir);
addScriptCommand("setnpcdir", "*", dummy);
addScriptCommand("rif", "is*", dummyStr);
addScriptCommand("countitemcolor", "*", dummyInt);
diff --git a/src/map/script.c b/src/map/script.c
index a2f0f8a..ba75561 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -295,3 +295,31 @@ BUILDIN(getq)
script_pushint(st, sd->quest_log[i].count[0]);
return true;
}
+
+BUILDIN(getNpcDir)
+{
+ struct npc_data *nd = 0;
+
+ if (script_hasdata(st, 2))
+ {
+ nd = npc->name2id (script_getstr(st, 2));
+ }
+ if (!nd && !st->oid)
+ {
+ script_pushint(st, -1);
+ return true;
+ }
+
+ if (!nd)
+ nd = (struct npc_data *) map->id2bl (st->oid);
+
+ if (!nd)
+ {
+ script_pushint(st, -1);
+ return true;
+ }
+
+ script_pushint(st, (int)nd->dir);
+
+ return true;
+}
diff --git a/src/map/script.h b/src/map/script.h
index fc63764..999d65e 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -18,5 +18,6 @@ BUILDIN(getItemLink);
BUILDIN(requestLang);
BUILDIN(getq);
BUILDIN(setq);
+BUILDIN(getNpcDir);
#endif // EVOL_MAP_SCRIPT