summaryrefslogtreecommitdiff
path: root/world/map/npc/functions
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/functions')
-rw-r--r--world/map/npc/functions/clear_vars.txt30
-rw-r--r--world/map/npc/functions/gm_island.txt35
2 files changed, 65 insertions, 0 deletions
diff --git a/world/map/npc/functions/clear_vars.txt b/world/map/npc/functions/clear_vars.txt
index e98def7d..2abfb118 100644
--- a/world/map/npc/functions/clear_vars.txt
+++ b/world/map/npc/functions/clear_vars.txt
@@ -18,6 +18,7 @@ function|script|ClearVariables
callsub S_Flags;
callsub S_Bitmask;
callsub S_BlueSage;
+ callsub S_Luca;
callsub S_Easter;
callsub S_Easter2008;
@@ -236,6 +237,35 @@ S_BlueSage:
set QUEST_BlueSage, QUEST_BlueSage & ~((1<<5)|(1<<6)|(1<<7));
return;
+S_Luca:
+ if (FLAGS & FLAG_LUCA_FIX) goto S_Return;
+ if (FLAGS & FLAG_LUCA_6SKILLS_MAXED) goto S_Luca6;
+ if (FLAGS & FLAG_LUCA_4SKILLS_MAXED) goto S_Luca4;
+ if (FLAGS & FLAG_LUCA_2SKILLS_MAXED) goto S_Luca2;
+ goto S_LucaX;
+
+S_Luca6:
+ if (countitem("AssassinMask") < 1) goto S_Return;
+ delitem "AssassinMask", 1;
+ set FLAGS, FLAGS ^ FLAG_LUCA_6SKILLS_MAXED;
+ goto S_Luca4;
+
+S_Luca4:
+ if (countitem("AssassinPants") < 1) goto S_Return;
+ delitem "AssassinPants", 1;
+ set FLAGS, FLAGS ^ FLAG_LUCA_4SKILLS_MAXED;
+ goto S_Luca2;
+
+S_Luca2:
+ if (countitem("AssassinBoots") < 1) goto S_Return;
+ delitem "AssassinBoots", 1;
+ set FLAGS, FLAGS ^ FLAG_LUCA_2SKILLS_MAXED;
+ goto S_LucaX;
+
+S_LucaX:
+ set FLAGS, FLAGS | FLAG_LUCA_FIX;
+ return;
+
S_Flags:
if (Open_Underground_Palace_Barrier)
set FLAGS, FLAGS | FLAG_OPENED_UNDERGROUND;
diff --git a/world/map/npc/functions/gm_island.txt b/world/map/npc/functions/gm_island.txt
index 3e1127c4..e2763bbf 100644
--- a/world/map/npc/functions/gm_island.txt
+++ b/world/map/npc/functions/gm_island.txt
@@ -9,6 +9,41 @@ OnInit:
disablenpc "Gm Event#3";
end;
}
+-|script|#Puppet|32767
+{
+ mes "You found me! Now please send my coordinates to staff.";
+ close;
+
+OnSpawn:
+ if (GM < G_SYSOP) goto L_GM;
+ callfunc "argv_splitter";
+ if (@argv$[4] == "") goto L_Failed;
+ set $@PMAP$, @argv$[0];
+ set $@PX, @argv$[1];
+ set $@PY, @argv$[2];
+ set $@PNAME$, @argv$[3];
+ set $@PNPC, @argv$[4];
+ if (puppet($@PMAP$, $@PX, $@PY, $@PNAME$, $@PNPC) > 0)
+ gmlog "@puppeter " + @args$;
+ set $@PMAP$, "";
+ set $@PX, 0;
+ set $@PY, 0;
+ set $@PNAME$, "";
+ set $@PNPC, 0;
+ end;
+
+L_Failed:
+ message strcharinfo(0), "Syntax: @puppeter MAP X Y NAME NPCID";
+ end;
+
+L_GM:
+ message strcharinfo(0), "puppeter : GM command is level "+ G_SYSOP +", but you are level " + GM;
+ end;
+
+OnInit:
+ registercmd chr(ATCMD_SYMBOL) + "puppeter", strnpcinfo(0)+"::OnSpawn";
+ end;
+}
function|script|GmWarp
{
if ($@GM_EVENT_WARP == 1) warp "028-1", 110, 30;