summaryrefslogtreecommitdiff
path: root/world/map/npc/annuals
diff options
context:
space:
mode:
authorJesusaves <jesusalva@themanaworld.org>2020-09-15 16:22:36 -0300
committerGitHub <noreply@github.com>2020-09-15 19:22:36 +0000
commit9db73b3e2747f0767f0203ced94c7561149acc41 (patch)
tree3ff63df4def09aa48f2ca74cbb7e3f15b8b3f3d6 /world/map/npc/annuals
parent716914f5b74325442b88cb55adc465dda2e38936 (diff)
downloadserverdata-9db73b3e2747f0767f0203ced94c7561149acc41.tar.gz
serverdata-9db73b3e2747f0767f0203ced94c7561149acc41.tar.bz2
serverdata-9db73b3e2747f0767f0203ced94c7561149acc41.tar.xz
serverdata-9db73b3e2747f0767f0203ced94c7561149acc41.zip
Halloween 2020 (#563)
An epic halloween event which will last about a week. Non-definitive version; Final showdown might receive last-minute changes.
Diffstat (limited to 'world/map/npc/annuals')
-rw-r--r--world/map/npc/annuals/halloween/doomsday.txt714
-rw-r--r--world/map/npc/annuals/halloween/munro.txt13
2 files changed, 727 insertions, 0 deletions
diff --git a/world/map/npc/annuals/halloween/doomsday.txt b/world/map/npc/annuals/halloween/doomsday.txt
new file mode 100644
index 00000000..6af00341
--- /dev/null
+++ b/world/map/npc/annuals/halloween/doomsday.txt
@@ -0,0 +1,714 @@
+// Evol script
+// Year: 2020
+//
+// Controls Doomsday Event - Vanilla Jande's Rescue (Halloween 2020)
+//
+// Operates: 057-1 070-1 003-1
+// See also: npc/annuals/halloween/munro.txt
+// Variables:
+// $@HW2020_SLAIN, array
+// $@HW2020_TIMER, array
+// $@HW2020_HOCUS, integer
+// (0 - Not yet, 1 - Cutscene, 2 - Ambushed, 3 - Completing, 4 - Completed)
+// $@HW2020_CNT, temporary int
+// $@JACKOID, temporary int
+// $@UnderMc, temporary int
+// @TulimMc, temporary int
+// @JACKOID, temporary int
+// @mobID, temporary int
+// @mobAM, temporary int
+
+////////////////////////////////////////////////
+// JackO Central Processing Core ($@JACKOID)
+function|script|HocusJackO
+{
+ if (!$@HW2020_SLAIN[$@JACKOID])
+ goto L_Return;
+
+ if ($@HW2020_TIMER[$@JACKOID] < gettimetick(2))
+ goto L_Expired;
+
+ // Count the JackO
+ set $@HW2020_CNT, $@HW2020_CNT+1;
+ set $@JACKOID, 0;
+ return;
+
+// Time expired!
+L_Expired:
+ set $@HW2020_SLAIN[$@JACKOID], 0;
+ // Re-enable the NPC
+ if ($@JACKOID == 0)
+ enablenpc "JackO#Tybalt";
+ if ($@JACKOID == 1)
+ enablenpc "JackO#Nicolas";
+ if ($@JACKOID == 2)
+ enablenpc "JackO#Elanore";
+ if ($@JACKOID == 3)
+ enablenpc "JackO#Aisha";
+ if ($@JACKOID == 4)
+ enablenpc "JackO#Nina";
+ if ($@JACKOID == 5)
+ enablenpc "JackO#Ian";
+ if ($@JACKOID == 6)
+ enablenpc "JackO#Luca";
+ if ($@JACKOID == 7)
+ enablenpc "JackO#Ekinu";
+ if ($@JACKOID == 8)
+ enablenpc "JackO#Ryan";
+ if ($@JACKOID == 9)
+ enablenpc "JackO#Neko";
+ if ($@JACKOID == 10)
+ enablenpc "JackO#Ishi";
+ if ($@JACKOID == 11)
+ enablenpc "JackO#Sandra";
+ if ($@JACKOID == 12)
+ enablenpc "JackO#Vincent";
+ set $@JACKOID, 0;
+ return;
+
+L_Return:
+ set $@JACKOID, 0;
+ return;
+}
+
+////////////////////////////////////////////////
+// Monster Script Control
+-|script|HW2020 Mobs|32767
+{
+ close;
+
+OnInit:
+ goto L_Main;
+
+// They'll respawn at midday.
+OnClock1200:
+ goto L_Main;
+
+L_Main:
+ // Do not waste RAM/CPU if we don't need it
+ if ($DOOMSDAY != 3 || !$@halloween_time)
+ end;
+ if ($DOOMSDAY_TJANDE || !$DOOMSDAY_TWARP)
+ end;
+
+ /////////////////////////////////////////////////////////////////////////
+ // Underworld Controller
+
+ // TYPE 1141, SASQUATCH
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath1")+1;
+ if ($@UnderMc < 20)
+ areamonster "070-1", 20, 20, 75, 100, "", 1141, 20-$@UnderMc, "HW2020 Mobs::OnDeath1";
+
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath2")+1;
+ if ($@UnderMc < 20)
+ areamonster "070-1", 77, 20, 127, 100, "", 1141, 20-$@UnderMc, "HW2020 Mobs::OnDeath2";
+
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath3")+1;
+ if ($@UnderMc < 20)
+ areamonster "070-1", 130, 20, 170, 100, "", 1141, 20-$@UnderMc, "HW2020 Mobs::OnDeath3";
+
+ // TYPE 1140, TENGU
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath4")+1;
+ if ($@UnderMc < 20)
+ areamonster "070-1", 20, 20, 75, 100, "", 1140, 20-$@UnderMc, "HW2020 Mobs::OnDeath4";
+
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath5")+1;
+ if ($@UnderMc < 20)
+ areamonster "070-1", 77, 20, 127, 100, "", 1140, 20-$@UnderMc, "HW2020 Mobs::OnDeath5";
+
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath6")+1;
+ if ($@UnderMc < 20)
+ areamonster "070-1", 130, 20, 170, 100, "", 1140, 20-$@UnderMc, "HW2020 Mobs::OnDeath6";
+
+ // TYPE 1143, SLAYER
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath7")+1;
+ if ($@UnderMc < 20)
+ areamonster "070-1", 20, 20, 75, 100, "", 1143, 20-$@UnderMc, "HW2020 Mobs::OnDeath7";
+
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath8")+1;
+ if ($@UnderMc < 20)
+ areamonster "070-1", 77, 20, 127, 100, "", 1143, 20-$@UnderMc, "HW2020 Mobs::OnDeath8";
+
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath9")+1;
+ if ($@UnderMc < 20)
+ areamonster "070-1", 130, 20, 170, 100, "", 1143, 20-$@UnderMc, "HW2020 Mobs::OnDeath9";
+
+ // GUARDIANS
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath10")+1;
+ if ($@UnderMc < 3)
+ areamonster "070-1", 132, 30, 140, 36, "", 1147, 3-$@UnderMc, "HW2020 Mobs::OnDeath10";
+
+ set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath11")+1;
+ if ($@UnderMc < 1)
+ areamonster "070-1", 134, 32, 135, 34, "", 1146, 1, "HW2020 Mobs::OnDeath10";
+
+ /////////////////////////////////////////////////////////////////////////
+ // Tulimshar Controller
+
+ // Done
+ set $@UnderMc, 0;
+ end;
+
+// Labels
+OnDeath0:
+ end;
+OnDeath1:
+ end;
+OnDeath2:
+ end;
+OnDeath3:
+ end;
+OnDeath4:
+ end;
+OnDeath5:
+ end;
+OnDeath6:
+ end;
+OnDeath7:
+ end;
+OnDeath8:
+ end;
+OnDeath9:
+ end;
+OnDeath10:
+ end;
+OnDeath11:
+ end;
+OnDeath12:
+ end;
+
+OnTimer30000:
+ // Check every JackO
+ set $@HW2020_CNT, 0;
+ set $@JACKOID, 0; callfunc "HocusJackO";
+ set $@JACKOID, 1; callfunc "HocusJackO";
+ set $@JACKOID, 2; callfunc "HocusJackO";
+ set $@JACKOID, 3; callfunc "HocusJackO";
+ set $@JACKOID, 4; callfunc "HocusJackO";
+ set $@JACKOID, 5; callfunc "HocusJackO";
+ set $@JACKOID, 6; callfunc "HocusJackO";
+ set $@JACKOID, 7; callfunc "HocusJackO";
+ set $@JACKOID, 8; callfunc "HocusJackO";
+ set $@JACKOID, 9; callfunc "HocusJackO";
+ set $@JACKOID, 10; callfunc "HocusJackO";
+ set $@JACKOID, 11; callfunc "HocusJackO";
+ set $@JACKOID, 12; callfunc "HocusJackO";
+
+ // Check if portal is to be active
+ if ($@HW2020_CNT >= 13)
+ goto L_Active;
+
+ // Janitor
+ set $@HW2020_CNT, 0;
+ initnpctimer;
+ end;
+
+L_Active:
+ mapannounce "003-1", "##1There is a loud sound coming from the Bazar.##0" , 0;
+ enablenpc "#HW2020Bazar";
+ stopnpctimer;
+ end;
+
+// Misc functions
+OnStopThere:
+ if (getx() > 66 || gety() > 62)
+ warp "003-1", 44, 61;
+ sendcollision "003-1", 1, 42, 62, 46, 64;
+ end;
+
+OnReward:
+ set $@HW2020_HOCUS, 4;
+ mes "[Jande]";
+ mes "Jande was rescued. Numa will take care of him until he recovers.";
+ mes "He struggled for words, but the time he spent there did a number on him.";
+ mes "";
+ mes "What Jande found out? Where is Zax De'Kagen?";
+ next;
+ mes ".:: DOOMSDAY ACT 5: THE FINAL BATTLE ::.";
+ mes "---- ----";
+ mes "INTERLUDE III: RESCUING JANDE";
+ mes "";
+ mes "Continues in ##BOctober 24th, 17:30 UTC##b";
+ mes "##1The Final Snapshot will happen at October 31st.##0";
+ next;
+ // Reward
+ set @rand, rand(7);
+ if (@rand == 0)
+ getitem "Eyepatch", 1; // Classic from HW and Christmas (10% chance)
+ if (@rand == 1)
+ getitem "MoubooHead", 1; // Replaced from: Circlet
+ if (@rand == 2)
+ getitem "Goggles", 1;
+ if (@rand == 3)
+ getitem "LeatherGoggles", 1;
+ if (@rand == 4)
+ getitem "SailorHat", 1; // Replaced from: Pirate Hat (Rarity)
+ if (@rand == 5)
+ getitem "SkullMask", 1;
+ if (@rand == 6)
+ getitem "FaceMask", 1; // Actually Christmas
+ warp "009-1", 52, 40;
+ message strcharinfo(0), "Numa : Thanks for helping. I know it is not much, but here is a reward for you.";
+ close;
+
+}
+
+
+////////////////////////////////////////////////
+// Return gate
+003-1,142,18,0|script|To Underworld|400,1,0
+{
+ end;
+OnTouch:
+ if ($DOOMSDAY != 3) end;
+ if ($DOOMSDAY_TJANDE == 1) end;
+ if (!$@halloween_time) end;
+
+ warp "070-1", 134, 30;
+ close;
+
+OnInit:
+ if ($DOOMSDAY != 3)
+ disablenpc "To Underworld";
+ end;
+}
+
+
+////////////////////////////////////////////////
+003-1,44,64,0|script|#HW2020ActionLess|400,3,0
+{
+ end;
+OnTouch:
+ if ($@HW2020_HOCUS == 2 || $@HW2020_HOCUS == 3)
+ warp "070-1", 0, 0;
+ end;
+}
+
+003-1,44,40,0|script|#HW2020Bazar|424,0,0
+{
+ close;
+
+OnTouch:
+ if ($@HW2020_HOCUS == 0)
+ goto L_Ambush;
+ if ($@HW2020_HOCUS == 1)
+ end;
+ if ($@HW2020_HOCUS == 2)
+ goto L_Check;
+ if ($@HW2020_HOCUS == 3)
+ end;
+ warp "009-1", 52, 40;
+ end;
+
+// TODO
+L_Ambush:
+ set $@HW2020_HOCUS, 1;
+ mapannounce "003-1", "What, did you thought it would be so easy?" , 0;
+ addnpctimer 3000, "#HW2020Bazar::OnAmbush1";
+ end;
+
+OnAmbush1:
+ mapannounce "003-1", "Hahaha! I am the self-proclaimed sovereign of the underworld..." , 0;
+ addnpctimer 3000, "#HW2020Bazar::OnAmbush2";
+ end;
+
+OnAmbush2:
+ mapannounce "003-1", "...THE LOST! Return to where you come from!!" , 0;
+ // Boss and his shrooms
+ monster "003-1", 44, 40, "", 1073, 1, "HW2020 Mobs::OnDeath1";
+ areamonster "003-1", 20, 20, 60, 60, "", 1106, 12, "HW2020 Mobs::OnDeath2";
+ // Collection of nearly every monster you saw thus far :>
+ areamonster "003-1", 20, 25, 60, 40, "", 1096, 8, "HW2020 Mobs::OnDeath3";
+ areamonster "003-1", 20, 25, 60, 40, "", 1036, 6, "HW2020 Mobs::OnDeath4";
+ areamonster "003-1", 20, 20, 60, 35, "", 1103, 6, "HW2020 Mobs::OnDeath5";
+ areamonster "003-1", 20, 20, 60, 35, "", 1045, 4, "HW2020 Mobs::OnDeath6";
+ areamonster "003-1", 20, 20, 60, 30, "", 1022, 2, "HW2020 Mobs::OnDeath7";
+ areamonster "003-1", 20, 20, 60, 30, "", 1075, 2, "HW2020 Mobs::OnDeath8";
+ areamonster "003-1", 20, 20, 60, 40, "", 1074, 2, "HW2020 Mobs::OnDeath9";
+ areamonster "003-1", 20, 20, 60, 40, "", 1124, 2, "HW2020 Mobs::OnDeath10";
+ set $@HW2020_HOCUS, 2;
+ areatimer 0, "003-1", 18, 18, 150, 100, 10, "HW2020 Mobs::OnStopThere";
+ initnpctimer;
+ end;
+
+L_Check:
+ set @TulimMc, mobcount("003-1", "HW2020 Mobs::OnDeath1")+1;
+ if (@TulimMc)
+ goto L_Reaper;
+
+ set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath2")+1;
+ set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath3")+1;
+ set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath4")+1;
+ set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath5")+1;
+ set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath6")+1;
+ set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath7")+1;
+ set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath8")+1;
+ set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath9")+1;
+ set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath10")+1;
+
+ if (@TulimMc)
+ goto L_NotReady;
+
+ goto L_Finish;
+
+L_Reaper:
+ message strcharinfo(0), "The Lost : Hahaha! Don't you think I can't see you!";
+ set @TulimMc, 0;
+ end;
+
+L_NotReady:
+ message strcharinfo(0), strcharinfo(0) + " : I can still count "+@TulimMc+" monsters which need to be defeated first.";
+ set @TulimMc, 0;
+ end;
+
+L_Finish:
+ set $@HW2020_HOCUS, 3;
+ announce "Doomsday : Jande has been rescued from the Underworld." , 0;
+ mapannounce "003-1", "The Lost : To be defeated... You should all get lost here forever..." , 0;
+ areatimer 0, "003-1", 18, 18, 66, 62, 2000, "HW2020 Mobs::OnReward";
+ stopnpctimer;
+ end;
+
+OnInit:
+ disablenpc "#HW2020Bazar";
+ end;
+
+// Players defeated? :(
+OnTimer5000:
+ if (getmapusers("003-1") < 1)
+ goto L_Janitor;
+ initnpctimer;
+ end;
+
+L_Janitor:
+ killmonster "003-1", "All";
+ set $@HW2020_HOCUS, 0;
+ cleararray $@HW2020_SLAIN, 0, 20;
+ cleararray $@HW2020_TIMER, 0, 20;
+ enablenpc "JackO#Tybalt";
+ enablenpc "JackO#Nicolas";
+ enablenpc "JackO#Elanore";
+ enablenpc "JackO#Aisha";
+ enablenpc "JackO#Nina";
+ enablenpc "JackO#Ian";
+ enablenpc "JackO#Luca";
+ enablenpc "JackO#Ekinu";
+ enablenpc "JackO#Ryan";
+ enablenpc "JackO#Neko";
+ enablenpc "JackO#Ishi";
+ enablenpc "JackO#Sandra";
+ enablenpc "JackO#Vincent";
+ disablenpc strnpcinfo(0);
+ stopnpctimer;
+ end;
+}
+
+////////////////////////////////////////////////
+// Hocus Campaign Main Function
+// HocusCampaign( @JACKOID )
+// Use getmap(), getx() and gety() for spawn centering
+// OnBegin:
+// $@HW2020_SLAIN[ JACKOID ] = False
+// $@HW2020_TIMER[ JACKOID ] = gettimetick(2)
+// Have HW2020 Mobs timer controlling all of them (runs every minute for expire)
+// OnFinish:
+// $@HW2020_SLAIN[ JACKOID ] = True
+// Timer NOT updated!!
+function|script|HocusCampaign
+{
+ if (@JACKOID < 1)
+ goto L_Return;
+
+ set @JACKOID, @JACKOID-1;
+
+ if ($@HW2020_TIMER[@JACKOID] > gettimetick(2))
+ goto L_Check;
+
+ mes "[Jack O]";
+ mes "Hohoho... I am the JackO who curses this lost soul.";
+ mes "Do you want to free this person? Defeat meeeeee....";
+ next;
+ mes "[Jack O]";
+ mes "Hohoho... Prove your worth, defeat meeeeee....";
+ mes "Slay all my minions, can you prove yourself to meeeeee....?";
+ next;
+ mes "##3.:: Mission Goals ::.##0";
+ mes "1. Defeat all monsters spawned by JackO";
+ mes "2. Talk to JackO after this to lift the curse";
+ mes "3. Once all 13 NPCs curse is lifted, go to ?????";
+ mes "";
+ mes "##1Time Limit: 30 minutes since first JackO monster spawn.";
+ next;
+ menu
+ "Bring it on!", L_Begin,
+ "Not now!", L_Abort;
+
+L_Begin:
+ if ($@HW2020_TIMER[@JACKOID] > gettimetick(2))
+ goto L_Return;
+
+ // Assign timer, set JackO to ACTIVE
+ set $@HW2020_SLAIN[@JACKOID], 0;
+ set $@HW2020_TIMER[@JACKOID], gettimetick(2)+1800;
+
+ // Define mob id
+ if (@JACKOID % 8 == 0)
+ set @mobID, 1096; // Soul Snake
+ if (@JACKOID % 8 == 1)
+ set @mobID, 1036; // Zombie
+ if (@JACKOID % 8 == 2)
+ set @mobID, 1103; // Witch Guard
+ if (@JACKOID % 8 == 3)
+ set @mobID, 1045; // Fallen
+ if (@JACKOID % 8 == 4)
+ set @mobID, 1022; // JackO
+ if (@JACKOID % 8 == 5)
+ set @mobID, 1075; // Stalker
+ if (@JACKOID % 8 == 6)
+ set @mobID, 1074; // Red Bone
+ if (@JACKOID % 8 == 7)
+ set @mobID, 1124; // Wight
+
+ // Define mob amount
+ set @mobAM, 8; // Default
+ if (@JACKOID % 8 == 0)
+ set @mobAM, 12; // Soul Snake must be more
+ if (@JACKOID % 8 >= 4)
+ set @mobAM, 6; // Stalker, JackO, Red and Wigh must be less
+
+ // Spawn the Monsters
+ areamonster "003-1", getx()-10, gety()-10, getx()+10, gety()+10, "", @mobID, @mobAM, "HW2020 Mobs::OnDeath"+@JACKOID;
+
+ // Announce
+ mapannounce "003-1", "JackO : Hohoho... You cannot defeat meeeee!" , 0;
+
+ // Clear temporary variables
+ set @mobID, 0;
+ set @mobAM, 0;
+ close2;
+ return;
+
+L_Abort:
+ close2;
+ return;
+
+L_Check:
+ // Count Monsters
+ set @TulimMc, mobcount("003-1", "HW2020 Mobs::OnDeath"+@JACKOID)+1;
+ if (@TulimMc)
+ goto L_Information;
+
+ // Disable JackO here, the script will catch that
+ set $@HW2020_SLAIN[@JACKOID], 1;
+
+ mes "[JackO]";
+ mes "Hohoho... We'll meet againnnnnnnn!";
+ donpcevent "HW2020 Mobs::OnTimer30000";
+ close2;
+ return;
+
+L_Information:
+ message strcharinfo(0), "JackO : Hohoho... Still "+@TulimMc+" monsters alive... Defeat meeeeee.....!";
+ set @TulimMc, 0;
+ return;
+
+L_Return:
+ return;
+
+}
+
+////////////////////////////////////////////////
+// JackOs (13 JackOs)
+003-1,26,73,0|script|JackO#Tybalt|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 1;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,101,31,0|script|JackO#Nicolas|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 2;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,38,66,0|script|JackO#Elanore|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 3;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,56,70,0|script|JackO#Aisha|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 4;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,119,33,0|script|JackO#Nina|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 5;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,32,30,0|script|JackO#Ian|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 6;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,113,43,0|script|JackO#Luca|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 7;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,47,79,0|script|JackO#Ekinu|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 8;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,38,79,0|script|JackO#Ryan|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 9;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,53,45,0|script|JackO#Neko|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 10;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,54,51,0|script|JackO#Ishi|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 11;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,71,61,0|script|JackO#Sandra|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 12;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+003-1,136,35,0|script|JackO#Vincent|133
+{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ set @JACKOID, 13;
+ callfunc "HocusCampaign";
+ if ($@HW2020_SLAIN[@JACKOID])
+ disablenpc strnpcinfo(0);
+ set @JACKOID, 0;
+ close;
+}
+
+057-1,126,63,0|script|#HW2020Shroom|400
+{
+ // Halloween only
+ if (!$@halloween_time) end;
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ mes "This is a strange mushroom.";
+ mes "Seeing it makes you feel like saying";
+ mes "##B" + get(.invocation$, "alonsialonso") + "##b";
+ next;
+ mes "This never happened before. Must be halloween.";
+ mes "I should be careful, it could be related to [@@666|@@]!";
+ next;
+ mes "##9HINT: Use the spell only in the precise area of interest.##0";
+ mes "##9Side effects of spell misuse includes and are not limited to:##0";
+ mes "##9death, warp, heal and/or item loss.##0";
+ mes "";
+ mes "##9The spell will cease to function once Halloween is over.##0";
+ close;
+}
+
+070-1,134,30,0|script|#HW2020Chapel|400
+{
+ // Halloween only
+ if (!$@halloween_time) end;
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ mes "Past this door lies the crypt where Tormenta was supposed to be.";
+ mes "I really should not lock myself up in a place where I cannot leave.";
+ next;
+ mes "It should be safe to try the following on the door:";
+ mes "##B" + get(.invocation$, "alonsialonso") + "##b";
+ // NOTE: This door should lead to 070-3, Abyss/Reaper Room.
+ // Players from TMW Hardcore would know.
+ close;
+}
+
diff --git a/world/map/npc/annuals/halloween/munro.txt b/world/map/npc/annuals/halloween/munro.txt
index 03c81477..23075a9b 100644
--- a/world/map/npc/annuals/halloween/munro.txt
+++ b/world/map/npc/annuals/halloween/munro.txt
@@ -98,6 +98,19 @@ L_Tormenta:
// Spawn Tormenta and finish
monster "057-1", 126, 64, "Tormenta", 1137, 1, "Munro::OnTormentaDie";
+
+ // Doomsday Untils
+ if ($DOOMSDAY == 3)
+ goto L_Doomsday;
+ end;
+
+// Doomsday Act 5 Utils
+L_Doomsday:
+ if (!$DOOMSDAY_TWARP)
+ end;
+ if ($DOOMSDAY_TJANDE)
+ end;
+ set $DOOMSDAY_CNT2, $DOOMSDAY_CNT2+1;
end;
}