summaryrefslogtreecommitdiff
path: root/npc/items/warpTowels.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/items/warpTowels.txt')
-rw-r--r--npc/items/warpTowels.txt150
1 files changed, 150 insertions, 0 deletions
diff --git a/npc/items/warpTowels.txt b/npc/items/warpTowels.txt
new file mode 100644
index 00000000..a6ffa8d1
--- /dev/null
+++ b/npc/items/warpTowels.txt
@@ -0,0 +1,150 @@
+function script WarpTowel {
+ @seconds = TowelLastUsed - (gettimetick(2) - 1200);
+ if (@seconds > 0 && !is_trusted())
+ goto L_DontPanic;
+ .@zone = getmapinfo(MAPINFO_ZONE);
+ if (.@zone == "Jail")
+ goto L_Prison;
+ // Zone will never be MMO, though
+ if (.@zone == "MMO" || .@zone == "Event")
+ goto L_Forbid;
+ if (getmapflag(getmapname(), mf_noteleport) || getmapflag(getmapname(), mf_nowarp) || isin("009-7",$@fightclub_x1,$@fightclub_y1,$@fightclub_x2,$@fightclub_y2))
+ goto L_Forbid;
+
+ if (@warpTowelName$ == "HitchhikersTowel")
+ goto L_Save;
+ if(@warpTowelName$ == "WhiteHitchhikersTowel")
+ goto L_White;
+ if(@warpTowelName$ == "RedHitchhikersTowel")
+ goto L_Red;
+ if(@warpTowelName$ == "GreenHitchhikersTowel")
+ goto L_Green;
+ if(@warpTowelName$ == "BlueHitchhikersTowel")
+ goto L_Blue;
+ if(@warpTowelName$ == "YellowHitchhikersTowel")
+ goto L_Yellow;
+ if(@warpTowelName$ == "PurpleHitchhikersTowel")
+ goto L_Purple;
+ if(@warpTowelName$ == "OrangeHitchhikersTowel")
+ goto L_Orange;
+ if(@warpTowelName$ == "PinkHitchhikersTowel")
+ goto L_Pink;
+ if(@warpTowelName$ == "TealHitchhikersTowel")
+ goto L_Teal;
+ if(@warpTowelName$ == "LimeHitchhikersTowel")
+ goto L_Lime;
+ goto L_Save;
+
+L_White:
+ // Koga
+ @NextLocationMap$ = "035-2";
+ @NextLocationX = 20;
+ @NextLocationY = 21;
+ goto L_WarpPlayer;
+
+L_Red:
+ // Barbarians
+ @NextLocationMap$ = "033-1";
+ @NextLocationX = 66;
+ @NextLocationY = 33;
+ goto L_WarpPlayer;
+
+L_Green:
+ // Candor
+ @NextLocationMap$ = "029-1";
+ @NextLocationX = 69;
+ @NextLocationY = 69;
+ goto L_WarpPlayer;
+
+L_Blue:
+ // Blue Sages
+ @NextLocationMap$ = "048-2";
+ @NextLocationX = 26;
+ @NextLocationY = 47;
+ goto L_WarpPlayer;
+
+L_Yellow:
+ // Tulimshar Mines
+ @NextLocationMap$ = "002-1";
+ @NextLocationX = 113;
+ @NextLocationY = 117;
+ goto L_WarpPlayer;
+
+L_Purple:
+ // Dimonds Inn
+ @NextLocationMap$ = "010-1";
+ @NextLocationX = 27;
+ @NextLocationY = 97;
+ goto L_WarpPlayer;
+
+L_Orange:
+ // Graveyard
+ @NextLocationMap$ = "027-1";
+ @NextLocationX = 70;
+ @NextLocationY = 100;
+ goto L_WarpPlayer;
+
+L_Pink:
+ // Terranite Cave
+ @NextLocationMap$ = "012-3";
+ @NextLocationX = 448;
+ @NextLocationY = 66;
+ goto L_WarpPlayer;
+
+L_Teal:
+ // Mana Seed
+ @NextLocationMap$ = "012-3";
+ @NextLocationX = 64;
+ @NextLocationY = 130;
+ goto L_WarpPlayer;
+
+L_Lime:
+ // Pachua
+ @NextLocationMap$ = "006-1";
+ @NextLocationX = 28;
+ @NextLocationY = 97;
+ callfunc "MiriamCheat";
+ goto L_WarpPlayer;
+
+L_Save:
+ // Soul Menhir
+ @NextLocationMap$ = getsavepoint(0);
+ @NextLocationX = getsavepoint(1);
+ @NextLocationY = getsavepoint(2);
+ goto L_WarpPlayer;
+
+L_WarpPlayer:
+ TowelLastUsed = gettimetick(2);
+ warp @NextLocationMap$,@NextLocationX,@NextLocationY;
+ goto L_BreakChance;
+
+L_BreakChance:
+ if (rand2(12))
+ goto L_Keep;
+ getitem HitchhikersTowel, 1;
+ goto L_End;
+
+L_Forbid:
+ message strcharinfo(0), "Towel : This area is protected by a force that doesn't tolerate the power of the Towel.";
+ goto L_Keep;
+
+L_Prison:
+ message strcharinfo(0), "Towel : You must be warped by a GM to leave this area.";
+ goto L_Keep;
+
+L_DontPanic:
+ callfunc "HumanTime";
+ message strcharinfo(0), "Towel : Your towel is still too low on power to jump again. Try again in ##B"+ @time$ + "##b.";
+ goto L_Keep;
+
+L_Keep:
+ getitem @warpTowelName$, 1;
+ goto L_End;
+
+L_End:
+ @NextLocationMap$ = "";
+ @NextLocationX = 0;
+ @NextLocationY = 0;
+ @warpTowelName$ = "";
+ return;
+}