From 9877fd4ad81120af8e63e96d5d429092014dc017 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Wed, 7 Jul 2021 20:34:27 -0300 Subject: Remove all Legacy files --- world/map/npc/functions/doomsday.txt | 1435 ---------------------------------- 1 file changed, 1435 deletions(-) delete mode 100644 world/map/npc/functions/doomsday.txt (limited to 'world/map/npc/functions/doomsday.txt') diff --git a/world/map/npc/functions/doomsday.txt b/world/map/npc/functions/doomsday.txt deleted file mode 100644 index 1d3df2cd..00000000 --- a/world/map/npc/functions/doomsday.txt +++ /dev/null @@ -1,1435 +0,0 @@ -// Evol script -// Controls Doomsday Event -// -// A really long event (months), controlling and being written by -// every event which happens since doomsday program officialy started -// in Halloween 2019 with Tormenta's release. -// -// This file history is written by GMs and players as the events happen -// and therefore it is not possible to predict or add code for things which -// are too far away from happening. -// -// Please keep Doomsday System simple. -// Revert it to anything to stage once it is over. -// It can be epic. But it doesn't needs to be. -// But above all, this should NOT affect the merge. -// The event purpose is to give players background history. - -function|script|DoomsdayDebug -{ - mes "$DOOMSDAY: "+$DOOMSDAY; // Event Status - mes ""; - mes "Act 2:"; - mes "Amount of slain Mana Guardians:"; - mes "$DOOMSDAY_CNT: "+$DOOMSDAY_CNT; - mes ""; - mes "Act 3:"; - mes "Situation of the towns (0 - standing, n - fallen n times)"; - mes "$DOOMSDAY_TOWN[0] (Tulim): "+$DOOMSDAY_TOWN[0]; - mes "$DOOMSDAY_TOWN[1] (Hurns): "+$DOOMSDAY_TOWN[1]; - mes "$DOOMSDAY_TOWN[2] (Nival): "+$DOOMSDAY_TOWN[2]; - mes "$DOOMSDAY_SCORE: "+$DOOMSDAY_SCORE; - mes "$DOOMSDAY_CLUES: "+$DOOMSDAY_CLUES; - mes ""; - mes "Act 4:"; - mes "Can players summon Mana Guardians? "+if_then_else($DOOMSDAY_SUMMON, "Yes", "No"); - mes "Is TMW under Jande's control? "+if_then_else($DOOMSDAY_TAKENOVER, "Yes", "No"); - mes "Zealite Upgrade? "+if_then_else($DOOMSDAY_SUMMON > 1, "Yes", "No"); - mes ""; - mes "Act 5:"; - mes "Warp to fake Keshlam? "+if_then_else($DOOMSDAY_TWARP, "No", "Yes"); - mes "Jande was rescued? "+if_then_else($@HW2020_HOCUS > 2, "Yes", "No"); - mes "Jande has recovered? "+if_then_else($DOOMSDAY_TJANDE, "Yes", "No"); - mes "$DOOMSDAY_CNT2: "+$DOOMSDAY_CNT2; - mes "Vanilla Mode? "+if_then_else($DOOMSDAY_VANILLA, "Yes", "No"); - //($DOOMSDAY_SUMMON ? "Yes" : "No"); - next; - // Only GM 80 and above can modify Doomsday - // ...Yes, G_ADMIN is 80 while G_SYSOP is 99. - if (GM < G_ADMIN) goto L_Close; - mes "Setting $DOOMSDAY event state"; - mes "[DOOMSDAY][ACT][STATE]"; - menu - "[0][1][0] Tormenta's Seal",L_Seal, - "[1][2][0] Jande's Army",L_Army, - "[1][2][1] Toggle Mana Guardian Skill",L_Summon, - "[1][2][2] Surrender TMW to Jande",L_Surrender, - "[1][3][0] The Great War - First Wave",L_War, - "[2][3][1] The Great War - Additional Wave",L_GreatWar, - "[2][4][0] Wumpus Great Egg Hunt - DEBUG",L_Wumpus, - "[2][4][1] Council - Tulimshar's Guild",L_TulimCouncil, - "[2][4][2] Council - Celestia's Residence",L_HurnsCouncil, - "[2][4][3] Council - Blue Sage's Residence",L_NivalCouncil, - "[2][4][4] Toggle Zealite Upgrade",L_Zealite, - "[3][5][0] Keshlam Warps",L_Keshlam, - "[3][5][1] Rescuing Jande",L_Jande, - "[3][5][2] Kage's Final Battle",L_Kage, - "[3][5][3] Vanilla Mode",L_Vanilla, - "[-] Close",L_Close; - -L_Close: - return; - -// Act 1: Tormenta's Seal -L_Seal: - set $DOOMSDAY, 0; - donpcevent "Doomsday::OnJanitor"; - gmlog strcharinfo(0) + " changed doomsday to Act 1: Tormenta's Seal."; - return; - -// Act 2: Jande's Army -L_Army: - set $DOOMSDAY, 1; - donpcevent "Doomsday::OnJanitor"; - gmlog strcharinfo(0) + " changed doomsday to Act 2: Jande's Army."; - return; - -L_Summon: - set $DOOMSDAY_SUMMON, (!$DOOMSDAY_SUMMON); - gmlog strcharinfo(0) + " changed the availability of #jande spell."; - return; - -L_Surrender: - set $DOOMSDAY_TAKENOVER, 1; - donpcevent "Doomsday::OnDoomsday2Restart"; - gmlog strcharinfo(0) + " surrendered The Mana World to Jande."; - return; - - -// Act 3: The Great War -L_War: - set $@DOOMSDAY_SKIP, 1; // Skip the next scheduled siege - donpcevent "Doomsday::OnDoomsday3First"; // Forces a doomsday to begin now - gmlog strcharinfo(0) + " changed doomsday to Act 3: The Great War."; - return; - -L_Wumpus: - set $@DOOMSDAY_SKIP, 0; - donpcevent "Doomsday::OnClock1830"; // Forces a doomsday act 4 check - gmlog strcharinfo(0) + " manually triggered debug function. Doomsday Act 4."; - return; - -// Act 4: The Great War Council -L_GreatWar: - disablenpc "Wizard#1"; - disablenpc "Wizard#2"; - disablenpc "Wizard#3"; - disablenpc "Wizard#4"; - disablenpc "Wizard#5"; - disablenpc "Wizard#6"; - disablenpc "Wizard#7"; - disablenpc "Wizard#8"; - disablenpc "Arch-Wizard#9"; - set $DOOMSDAY, 2; - set $@DOOMSDAY_SKIP, 0; - donpcevent "Doomsday::OnJanitor"; - gmlog strcharinfo(0) + " changed doomsday to Act 4: The Great War Council."; - return; - -L_CouncilRefusal: - mes "##1Cowardly refusing to meet in a town destroyed five times."; - next; - return; - -L_TulimCouncil: - if ($DOOMSDAY_TOWN[0] >= 5) - goto L_CouncilRefusal; - - enablenpc "Arch-Wizard#_DT"; - gmlog strcharinfo(0) + " called the Council to Tulimshar."; - return; - -L_HurnsCouncil: - if ($DOOMSDAY_TOWN[1] >= 5) - goto L_CouncilRefusal; - - enablenpc "Arch-Wizard#_DH"; - gmlog strcharinfo(0) + " called the Council to Hurnscald."; - return; - -L_NivalCouncil: - if ($DOOMSDAY_TOWN[2] >= 5) - goto L_CouncilRefusal; - - enablenpc "Arch-Wizard#_DN"; - gmlog strcharinfo(0) + " called the Council to Nivalis."; - return; - -L_Zealite: - set $DOOMSDAY_SUMMON, 2; - disablenpc "Soul Menhir#deadmire"; - disablenpc "Soul Menhir#hurnscald"; - disablenpc "Soul Menhir#nivalis"; - disablenpc "Soul Menhir#tulimshar"; - enablenpc "Chest#Zealite"; - //disablenpc "Soul Menhir#candor"; - gmlog strcharinfo(0) + " changed the availability of #manatez and Savior Armor."; - return; - -// Act 5: The Doomsday -L_Keshlam: - mes "//-- TODO --//"; - enablenpc "Wizard#1"; - enablenpc "Wizard#2"; - enablenpc "Wizard#3"; - enablenpc "Wizard#4"; - enablenpc "Wizard#5"; - enablenpc "Wizard#6"; - enablenpc "Wizard#7"; - enablenpc "Wizard#8"; - enablenpc "Arch-Wizard#9"; - enablenpc "Chest#DarkRose"; - set $DOOMSDAY, 3; - set $DOOMSDAY_TWARP, 0; - set $DOOMSDAY_VANILLA, 0; - donpcevent "Doomsday::OnJanitor"; // TODO - gmlog strcharinfo(0) + " changed doomsday to Act 5: The Doomsday."; - gmlog strcharinfo(0) + " changed doomsday warp to Keshlam Maze"; - return; - -L_Jande: - set $DOOMSDAY_TWARP, 1; - donpcevent "Doomsday::OnJanitor"; // TODO - gmlog strcharinfo(0) + " changed doomsday warp to Abandoned Building"; - return; - -L_Kage: - set $DOOMSDAY_TJANDE, 1; - donpcevent "Doomsday::OnJanitor"; // TODO - gmlog strcharinfo(0) + " changed Jande from MIA to ACT. Final battle begun."; - return; - -L_Vanilla: - set $DOOMSDAY_VANILLA, 1; - donpcevent "Doomsday::OnJanitor"; // TODO - gmlog strcharinfo(0) + " disabled rewards from final showdown (VANILLA)."; - return; - -} - -// Doomsday script controller --|script|Doomsday|32767 -{ - close; - -// Destroy any artifact as doomsday mode changes -OnJanitor: - // TODO: Act 2: Kill monsters? - // Act 3: Clean eventually on-going Doomsday - set $@DOOMSDAY_SKIP, 0; - set $@DD_NUMWAVES, 0; - set $@DoomsdayLoc, 0; - set $@DoomsdayMc, 0; - set $@DD_LOC$, ""; - // Act 4: Disable council puppets - disablenpc "Sagatha#_DT"; - disablenpc "Elanore#_DT"; - disablenpc "Nikolai#_DT"; - disablenpc "Morgan#_DT"; - disablenpc "Valia#_DT"; - disablenpc "Waric#_DT"; - disablenpc "Golbenez#_DT"; - disablenpc "Sagatha#_DH"; - disablenpc "Elanore#_DH"; - disablenpc "Nikolai#_DH"; - disablenpc "Morgan#_DH"; - disablenpc "Valia#_DH"; - disablenpc "Waric#_DH"; - disablenpc "Golbenez#_DH"; - disablenpc "Sagatha#_DN"; - disablenpc "Elanore#_DN"; - disablenpc "Nikolai#_DN"; - disablenpc "Morgan#_DN"; - disablenpc "Valia#_DN"; - disablenpc "Waric#_DN"; - disablenpc "Golbenez#_DN"; - disablenpc "Arch-Wizard#_DT"; - disablenpc "Arch-Wizard#_DH"; - disablenpc "Arch-Wizard#_DN"; - // Act 5: Cleanup - if ($DOOMSDAY == 3 && !$DOOMSDAY_TWARP) - donpcevent "Keshlam Maze::OnInit"; // Spawn monsters if needed - if ($DOOMSDAY != 3) - disablenpc "To Underworld"; - if ($DOOMSDAY == 3) - enablenpc "To Underworld"; - // Clear timers - setnpctimer 0; - stopnpctimer; - goto OnInit; - -// Check for our current doomsday state -OnInit: - setarray $@doomsday_mobs, 1140, 1141, 1143, 1140, 1141, 1143, 1140, 1141, 1143; - setarray $@doomsday_boss, 1146, 1147, 1146, 1147, 1146, 1147, 1146, 1147, 1146, 1147; - if ($DOOMSDAY == 1) - goto L_Doomsday1; - if ($DOOMSDAY == 2) - goto L_Doomsday2; - if ($DOOMSDAY == 3) - goto L_Doomsday5; - // goto L_Check2; - end; - -//////////////////////////////////////////////////////////////////////////////// -L_Doomsday1: - // 1138 - Mana Guardian - // Argaes Invasion (1) - areamonster "017-1", 169, 49, 198, 77, "", 1138, 1, "Doomsday::OnDeathMapname"; - // Argaes Invasion (2) - areamonster "012-1", 20, 47, 74, 77, "", 1138, 3, "Doomsday::OnDeathMapname"; - // Argaes Invasion (3) - areamonster "057-1", 115, 50, 140, 75, "", 1138, 4, "Doomsday::OnDeathMapname"; - // Kaizei Invasion (I) - areamonster "046-1", 58, 49, 92, 70, "", 1138, 2, "Doomsday::OnDeathMapname"; - // Kaizei Invasion (II) - areamonster "034-1", 83, 51, 121, 98, "", 1138, 6, "Doomsday::OnDeathMapname"; - // Tonori Invasion - areamonster "003-4", 20, 20, 85, 60, "", 1138, 7, "Doomsday::OnDeathMapname"; - end; - -L_Doomsday1Respawn: - // Argaes Invasion (1) - set $@DoomsdayMc, mobcount("017-1", "Doomsday::OnDeathMapname")+1; - if ($@DoomsdayMc < 1) - areamonster "017-1", 169, 49, 198, 77, "", 1138, 1-$@DoomsdayMc, "Doomsday::OnDeathMapname"; - - // Argaes Invasion (2) - set $@DoomsdayMc, mobcount("012-1", "Doomsday::OnDeathMapname")+1; - if ($@DoomsdayMc < 3) - areamonster "012-1", 20, 47, 74, 77, "", 1138, 3-$@DoomsdayMc, "Doomsday::OnDeathMapname"; - - // Argaes Invasion (3) - set $@DoomsdayMc, mobcount("057-1", "Doomsday::OnDeathMapname")+1; - if ($@DoomsdayMc < 4) - areamonster "057-1", 115, 50, 140, 75, "", 1138, 4-$@DoomsdayMc, "Doomsday::OnDeathMapname"; - - // Kaizei Invasion (I) - set $@DoomsdayMc, mobcount("046-1", "Doomsday::OnDeathMapname")+1; - if ($@DoomsdayMc < 2) - areamonster "046-1", 58, 49, 92, 70, "", 1138, 2-$@DoomsdayMc, "Doomsday::OnDeathMapname"; - - // Kaizei Invasion (II) - set $@DoomsdayMc, mobcount("034-1", "Doomsday::OnDeathMapname")+1; - if ($@DoomsdayMc < 6) - areamonster "034-1", 83, 51, 121, 98, "", 1138, 6-$@DoomsdayMc, "Doomsday::OnDeathMapname"; - - // Tonori Invasion - set $@DoomsdayMc, mobcount("003-4", "Doomsday::OnDeathMapname")+1; - if ($@DoomsdayMc < 7) - areamonster "003-4", 20, 20, 85, 60, "", 1138, 7-$@DoomsdayMc, "Doomsday::OnDeathMapname"; - // goto L_TimerCheck2; - goto L_TimerFinish; - -//////////////////////////////////////////////////////////////////////////////// -// Disable Tulimshar Magic Council -L_Doomsday2: - addnpctimer 1000, "Doomsday::OnDoomsday2Restart"; - end; - -OnDoomsday2Restart: - disablenpc "Wizard#1"; - disablenpc "Wizard#2"; - disablenpc "Wizard#3"; - disablenpc "Wizard#4"; - disablenpc "Wizard#5"; - disablenpc "Wizard#6"; - disablenpc "Wizard#7"; - disablenpc "Wizard#8"; - disablenpc "Arch-Wizard#9"; - - // TODO: Maybe the town was taken over? - if (!$DOOMSDAY_TAKENOVER) - end; - - fakenpcname "Constable Bob", "Constable Bob#_D", 421; - fakenpcname "Inspector#Hurnscald", "Inspector#Hurnscald_D", 420; - //fakenpcname "Richard", "Guardian Richard#_D", 420; - fakenpcname "Selim", "Guardian Selim#_D", 420; - fakenpcname "General Store#hurnscald", "Guardian Store#hurns_D", 420; - fakenpcname "General Store#dimond", "Guardian Store#dimond_D", 420; - fakenpcname "Sabine", "Mana Tourist#_D", 420; - fakenpcname "Apprentice", "Apprentice#_D", 420; - fakenpcname "Entertainer", "Entertainer#_D", 420; - fakenpcname "Drinker#2", "Drinker#2_D", 420; - fakenpcname "Bartender#Duels", "Bartender#Duels_D", 420; - fakenpcname "Jerry", "Mana Singer#_D", 420; - - fakenpcname "Constable Perry Graf", "Constable Perry#_D", 420; // Name too long - fakenpcname "Guard#school", "Guard#school_D", 420; - fakenpcname "Guard#castle", "Guard#castle_D", 420; - fakenpcname "Guard#east3", "Guard#east3_D", 420; - fakenpcname "Guard#govt_out", "Guard#govtout_D", 420; - fakenpcname "Guard#govt_in", "Guard#govtin_D", 420; - fakenpcname "Guard#port1", "Guard#port1_D", 420; - fakenpcname "Guard#port2", "Guard#port2_D", 420; - fakenpcname "Guard#east1", "Guard#east1_D", 420; - - fakenpcname "Mede", "Mana Shopkeeper#_D", 420; - fakenpcname "Bracco", "Mana Shopkeeper#2_D", 420; - - if ($DOOMSDAY_SUMMON == 2) - goto L_MenhirUpdate; - end; - -L_MenhirUpdate: - disablenpc "Soul Menhir#deadmire"; - disablenpc "Soul Menhir#hurnscald"; - disablenpc "Soul Menhir#nivalis"; - disablenpc "Soul Menhir#tulimshar"; - enablenpc "Chest#Zealite"; - end; - -/////// Act 3 sieges -// Variables: -// $@DoomsdayLoc / 100 = Town Code (0: Tulim, 1: Hurns, 2: Nivalis) - -// Fake label for the first Zax's movement -OnDoomsday3First: - set $@DoomsdayLoc, 1; - goto L_Doomsday3; - -// Setup a siege -L_Doomsday3Init: - set $@DoomsdayLoc, rand(300) / 100; - - // Announce based on location - if ($@DoomsdayLoc == 0) - announce "Jande : Zax De'Kagen's army is marching to ##BTULIMSHAR##b in 10 minutes! (Attack by south gate)", 0; - if ($@DoomsdayLoc == 1) - announce "Jande : Zax De'Kagen's army is marching to ##BHURNSCALD##b in 10 minutes! (Attack by the mines)", 0; - if ($@DoomsdayLoc == 2) - announce "Jande : Zax De'Kagen's army is marching to ##BNIVALIS##b in 10 minutes! (Attack by east entrance)", 0; - end; - -// This siege will be skipped -L_Doomsday3Skip: - set $@DOOMSDAY_SKIP, 0; - end; - -// Operational label, handles sieges -L_Doomsday3: - // At this point it is no longer possible to skip the event. - // Based on $@DoomsdayLoc go to a town-specific label - // One wave every 5 minutes, until 6 waves were called (~30 min) - // Then stop the timer, and check for survivor mobs 45 minutes after - // If survivors are found, the town will be overrun - set $@DD_NUMWAVES, 0; - - // Set the map for other labels (could use an array but meh) - if ($@DoomsdayLoc == 0) - set $@DD_LOC$, "002-1"; - if ($@DoomsdayLoc == 1) - set $@DD_LOC$, "018-1"; - if ($@DoomsdayLoc == 2) - set $@DD_LOC$, "031-1"; - - - // Set the map coordinates for spawns - // Tulimshar - if ($@DoomsdayLoc == 0) - setarray $@DD_XPOS, 98, 97, 91, 75, 56, 44, 76, 54; - if ($@DoomsdayLoc == 0) - setarray $@DD_YPOS, 75, 86, 99,104, 81, 63, 76, 96; - - // Hurnscald - if ($@DoomsdayLoc == 1) - setarray $@DD_XPOS,138,136,133,111, 95, 79, 67, 88; - if ($@DoomsdayLoc == 1) - setarray $@DD_YPOS, 63, 71, 79, 74, 75, 64, 82, 90; - - // Nivalis - if ($@DoomsdayLoc == 2) - setarray $@DD_XPOS, 90, 62, 63, 56, 70, 36, 62, 85; - if ($@DoomsdayLoc == 2) - setarray $@DD_YPOS, 47, 49, 61, 83, 41, 37, 26, 30; - - - // Make an extra announce for those whom missed - if ($@DoomsdayLoc == 0) - announce "Jande : Zax De'Kagen's army reached ##BTULIMSHAR##b! (Attack by south gate)", 0; - if ($@DoomsdayLoc == 1) - announce "Jande : Zax De'Kagen's army reached ##BHURNSCALD##b! (Attack by the mines)", 0; - if ($@DoomsdayLoc == 2) - announce "Jande : Zax De'Kagen's army reached ##BNIVALIS##b! (Attack by east entrance)", 0; - - goto L_DDAdvanceWave; - -// Advance wave (max. 10->6 waves) -L_DDAdvanceWave: - set $@DD_NUMWAVES, $@DD_NUMWAVES+1; - if ($@DD_NUMWAVES > 6) - end; // TODO: Maybe a final wave announcement? - - // Variable initialization - set $@DD_INT, 0; - set $@DD_UNITS, getmapusers($@DD_LOC$)+$DOOMSDAY_SCORE; - - // Spawns - if ($@DoomsdayLoc == 0) - goto L_DD3Tulim; - if ($@DoomsdayLoc == 1) - goto L_DD3Hurns; - if ($@DoomsdayLoc == 2) - goto L_DD3Nival; - - // Fallback - debugmes "DOOMSDAY/ACT3: Unrecognized town: "+$@DoomsdayLoc; - goto L_DDAdvanceTimers; - -// Restart timers and advance wave -L_DDAdvanceTimers: - initnpctimer; - if ($@DD_INT < $@DD_UNITS*2) - goto L_DDAdvanceTimers2; - goto L_DDAdvanceWavePost; - -// If we have more users than possible, waves come faster -L_DDAdvanceTimers2: - set $@ADD_TIME, (($@DD_UNITS*2-$@DD_INT)*500); // ±1 second per player/victory - // Cap to 90s (to prevent skipping first third) - if ($@ADD_TIME > 90000) - set $@ADD_TIME, 90000; - - setnpctimer $@ADD_TIME; - - set $@ADD_TIME, 0; - // If we have clues, we will cause a few extra spawns - if ($DOOMSDAY_CLUES) - goto L_DD3WaveReinforcements; - goto L_DDAdvanceWavePost; - -// Reinforcements on waves, to ensure Kage never really weaken their attacks -L_DD3WaveReinforcements: - set $@DD_UNITS, $@DD_UNITS-$@DD_INT; - set $@DD_UNITS, $@DD_UNITS*$DOOMSDAY_CLUES/3; - set $@DD_INT, 0; - - if ($@DD_UNITS > 0) - goto L_DD3WRCallsub; - goto L_DDAdvanceWavePost; - -L_DD3WRCallsub: - callsub S_DD3ThirdSpawns; - goto L_DDAdvanceWavePost; - -// Clear temporary variables and broadcast -L_DDAdvanceWavePost: - set $@DD_IDX, 0; - set $@DD_INT, 0; - set $@DD_UNITS, 0; - - // Tell users - mapannounce $@DD_LOC$, "Jande : Watch out, another wave! Only "+(6-$@DD_NUMWAVES)+" waves left!", 0; - - // Prepare optional boss - set $@DD_IDX1, rand(getarraysize($@DD_XPOS)); - set $@DD_IDX2, rand(getarraysize($@doomsday_boss)); - - // Spawn optional boss if req. is met - if ($@DD_NUMWAVES > 6-$DOOMSDAY_CLUES) - monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", $@doomsday_boss[$@DD_IDX2], 1, "Doomsday::OnDeathAct3"; - end; - - - - -// Tulimshar Siege points -L_DD3Tulim: - // Compulsory spawns - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "002-1", 98, 75, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "002-1", 97, 86, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - // Non-compulsory spawns - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "002-1", 91, 99, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "002-1", 75, 104, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "002-1", 56, 81, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "002-1", 44, 63, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "002-1", 76, 76, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "002-1", 54, 96, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - // No extra spawns possible - goto L_DDAdvanceTimers; - - - -// Hurnscald Siege points -L_DD3Hurns: - // Compulsory spawns - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "018-1", 138, 63, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "018-1", 136, 71, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - // Non-compulsory spawns - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "018-1", 133, 79, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "018-1", 111, 74, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "018-1", 94, 75, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "018-1", 79, 64, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "018-1", 67, 82, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "018-1", 88, 90, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - // No extra spawns possible - goto L_DDAdvanceTimers; - - - -// Nivalis Siege points -L_DD3Nival: - // Compulsory spawns - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "031-1", 90, 47, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "031-1", 62, 49, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - // Non-compulsory spawns - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "031-1", 63, 61, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "031-1", 56, 83, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "031-1", 70, 41, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "031-1", 36, 37, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "031-1", 62, 26, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "031-1", 85, 30, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3"; - set $@DD_INT, $@DD_INT+1; - - // No extra spawns possible - goto L_DDAdvanceTimers; - - - - -// Extra wave control system [0] -S_DD3ThirdSpawns: - set $@DD_IDX1, rand(getarraysize($@DD_XPOS)); - set $@DD_IDX2, rand(getarraysize($@doomsday_mobs)); - - monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", $@doomsday_mobs[$@DD_IDX2], 1, "Doomsday::OnDeathAct3"; - - set $@DD_INT, $@DD_INT+1; - if($@DD_INT < $@DD_UNITS) goto S_DD3ThirdSpawns; - return; - -// Extra wave control system [1] -L_DD3FirstThird: - set $@DD_UNITS, getmapusers($@DD_LOC$)-mobcount($@DD_LOC$, "Doomsday::OnDeathAct3")+1; - set $@DD_INT, 0; - - // Difficulty adjustment: Invoke -1 mob per player and +1 mob per 2 score points - set $@DD_UNITS, $@DD_UNITS-getmapusers($@DD_LOC$)+($DOOMSDAY_SCORE/2); - - // Monsters already overpower players - if ($@DD_UNITS < 0) - goto L_DD3EndThird; - - // Prepare optional boss - set $@DD_IDX1, rand(getarraysize($@DD_XPOS)); - set $@DD_IDX2, rand(getarraysize($@doomsday_boss)); - - // Spawn optional boss - if ($@DD_NUMWAVES == 5 && $DOOMSDAY_SCORE > 6) - monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", $@doomsday_boss[$@DD_IDX2], 1, "Doomsday::OnDeathAct3"; - - // Spawn first third's wave - callsub S_DD3ThirdSpawns; - goto L_DD3EndThird; - -// Extra wave control system [2] -L_DD3SecondThird: - set $@DD_UNITS, getmapusers($@DD_LOC$)-mobcount($@DD_LOC$, "Doomsday::OnDeathAct3")+1; - set $@DD_INT, 0; - - // Intensity control - if ($DOOMSDAY_SCORE < 12-$DOOMSDAY_CLUES) - goto L_DD3EndThird; - - // Difficulty adjustment: Invoke -1 mob per player and +1 mob per 3 score points - set $@DD_UNITS, $@DD_UNITS-getmapusers($@DD_LOC$)+($DOOMSDAY_SCORE/3); - - // Prepare optional boss - set $@DD_IDX1, rand(getarraysize($@DD_XPOS)); - set $@DD_IDX2, rand(getarraysize($@doomsday_boss)); - - // Spawn optional boss - if ($@DD_NUMWAVES == 5) - monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", $@doomsday_boss[$@DD_IDX2], 1, "Doomsday::OnDeathAct3"; - - // Monsters already overpower players - if ($@DD_UNITS < 0) - goto L_DD3EndThird; - - // Spawn second third's wave - callsub S_DD3ThirdSpawns; - goto L_DD3EndThird; - -// Extra wave control system [3] -L_DD3EndThird: - set $@DD_UNITS, 0; - set $@DD_IDX1, 0; - set $@DD_IDX2, 0; - set $@DD_INT, 0; - end; - - - -// Timer controls (5 minutes between waves); -// It only fires after first wave -L_TimerCheck2: - if ($@DD_NUMWAVES > 0) - goto L_DDAdvanceWave; - end; - -// Siege one hour condition fully elapsed -L_Doomsday3Check: - set $@DoomsdayMc, mobcount($@DD_LOC$, "Doomsday::OnDeathAct3")+1; - if ($@DoomsdayMc > 0) - goto L_Doomsday3Defeat; - goto L_Doomsday3Victory; - -// Town was defeated -L_Doomsday3Defeat: - // Warn players that town is in danger - mapannounce $@DD_LOC$, "Jande : Oh noes, "+$@DoomsdayMc+" monsters passed the barricate!!", 0; - - // Move the monsters to town - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - if ($@DoomsdayLoc == 0) - areamonster "001-1", 52, 35, 119, 113, "", $@doomsday_mobs[$@DD_IDX], $@DoomsdayMc; - if ($@DoomsdayLoc == 1) - areamonster "009-1", 25, 25, 96, 53, "", $@doomsday_mobs[$@DD_IDX], $@DoomsdayMc; - if ($@DoomsdayLoc == 2) - areamonster "020-1", 24, 32, 99, 96, "", $@doomsday_mobs[$@DD_IDX], $@DoomsdayMc; - - // Update defeat counter and advance - set $DOOMSDAY_TOWN[$@DoomsdayLoc], $DOOMSDAY_TOWN[$@DoomsdayLoc]+1; - set $@DD_IDX, 0; - goto L_Doomsday3Cleanup; - -// Siege was cleared up -L_Doomsday3Victory: - set $DOOMSDAY_SCORE, $DOOMSDAY_SCORE+1; - mapannounce $@DD_LOC$, "Jande : That was a close call, but we did it! We defended "+$DOOMSDAY_SCORE+" times.", 0; - goto L_Doomsday3Cleanup; - -// Clean up temporary variables (except skip) -L_Doomsday3Cleanup: - killmonster $@DD_LOC$, "Doomsday::OnDeathAct3"; - set $@DD_NUMWAVES, 0; - set $@DoomsdayLoc, 0; - set $@DoomsdayMc, 0; - set $@DD_LOC$, ""; - cleararray $@DD_XPOS, 0, 8; - cleararray $@DD_YPOS, 0, 8; - end; - -// Bonus spawn -L_Doomsday3Bonus: - announce "Jande : Stray minions from Zax De'Kagen army were sighted all over the world!", 0; - set $@DD_UNITS, 2+($DOOMSDAY_SCORE/5); - - // Cap value (to prevent huge spikes) - if ($@DD_UNITS > 5) - set $@DD_UNITS, 3+($DOOMSDAY_SCORE/10); - - // Sum the permanent clues - set $@DD_UNITS, $@DD_UNITS+$DOOMSDAY_CLUES; - - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "031-1", 62, 49, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "018-1", 136, 71, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - monster "002-1", 97, 86, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES; - - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - areamonster "017-1", 169, 49, 198, 77, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - areamonster "012-1", 20, 47, 74, 77, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - areamonster "057-1", 115, 50, 140, 75, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - areamonster "046-1", 58, 49, 92, 70, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - areamonster "034-1", 83, 51, 121, 98, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS; - set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); - areamonster "003-4", 20, 20, 85, 60, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS; - - // Tormenta - if (rand(10) <= $DOOMSDAY_CLUES) - monster "057-1", 126, 64, "", 1137, 1; - - set $@DD_UNITS, 0; - set $@DD_IDX, 0; - end; - -// Act 4 System -L_Doomsday4Check: - // Magic number: 21 - if ($DOOMSDAY_SCORE >= 20-$DOOMSDAY_CLUES) - goto L_DD4WarnSeq; - end; - -L_DD4WarnSeq: - areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 100, "Doomsday::OnDD4Warning1"; - announce "Jande : ##1##BWarning: ##bZax's Golem spawning! Defeat it!!", 0; - addnpctimer 7500, "Doomsday::OnDD4Spawn"; - end; - -OnDD4Warning1: - mapmask 1 | 2; - music "Dramatic.ogg"; - areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 600, "Doomsday::OnDD4Warning2"; - end; - -OnDD4Warning2: - misceffect 51, strcharinfo(0); - areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 7000, "Doomsday::OnDD4Warning3"; - end; - -OnDD4Warning3: - mapmask 1; - end; - -OnDD4Spawn: - set $@DD_IDX1, rand(getarraysize($@DD_XPOS)); - monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", 1145, 1, "Doomsday::OnDeathAct4"; - //debugmes "Success "+$@DD_LOC$+" ("+$@DD_XPOS[$@DD_IDX1]+", "+$@DD_YPOS[$@DD_IDX1]+")"; - mapannounce $@DD_LOC$, "Golem : FRAIL SMALL PEOPLE, ME SMASH!!!", 0; - // Spawn a few mobs - set $@DD_INT, 0; - set $@DD_UNITS, $DOOMSDAY_CLUES*4; - callsub S_DD3ThirdSpawns; - goto OnDD4Smash; - -// Could use a new optional skill: FRAIL NOOBS, ZAX RULES! (causes new wave of 6 monsters) -OnDD4Smash: - // Golem got itself smashed D: - if ($@DD_LOC$ == "") - end; - if (!(mobcount($@DD_LOC$, "Doomsday::OnDeathAct4")+1)) - end; - // TODO: Do not keep repeating the announce - //mapannounce $@DD_LOC$, "Golem : FRAIL SMALL PEOPLE, ME SMASH!!!", 0; - areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 100, "Doomsday::OnDD4Smashed"; - addnpctimer rand(12000, 18000), "Doomsday::OnDD4Smash"; - end; - -OnDD4Smashed: - misceffect 52, strcharinfo(0); - heal -70-BaseLevel, 0; - end; - -// For surviving -OnDD4SurvivorReward: - getexp 10000, 0; - end; - - -//////////////////////////////////////////////////////////////////////////////// -// Act 5 utils -L_Doomsday5: - enablenpc "Chest#DarkRose"; - if ($DOOMSDAY_SUMMON == 2) - goto L_MenhirUpdate; - end; - -//////////////////////////////////////////////////////////////////////////////// -// Respawn logic (5 minutes) -OnTimer100000: - if ($DOOMSDAY == 2) - goto L_DD3FirstThird; - end; - -OnTimer200000: - if ($DOOMSDAY == 2) - goto L_DD3SecondThird; - end; - -OnTimer300000: - if ($DOOMSDAY == 1) - goto L_Doomsday1Respawn; - if ($DOOMSDAY == 2) - goto L_TimerCheck2; - goto L_TimerFinish; - -// Once all timer checks are over -L_TimerFinish: - set $@DoomsdayMc, 0; - setnpctimer 0; - stopnpctimer; - end; - -// Act 3 clock handlers [1] -OnClock1750: - if ($@DOOMSDAY_SKIP) - end; - if ($DOOMSDAY == 2) - goto L_Doomsday3Init; - end; - -OnClock1800: - if ($@DOOMSDAY_SKIP) - end; - if ($DOOMSDAY == 2) - goto L_Doomsday3; - end; - -OnClock1830: - if ($@DOOMSDAY_SKIP) - end; - if ($DOOMSDAY == 2) - goto L_Doomsday4Check; - end; - -// 19h -> 18h45 -OnClock1845: - if ($@DOOMSDAY_SKIP) - goto L_Doomsday3Skip; - if ($DOOMSDAY == 2) - goto L_Doomsday3Check; - end; - -// Act 3 clock handlers [2] -OnClock2350: - if ($@DOOMSDAY_SKIP) - end; - if ($DOOMSDAY == 2) - goto L_Doomsday3Init; - end; - -OnClock0000: - if ($@DOOMSDAY_SKIP) - end; - if ($DOOMSDAY == 2) - goto L_Doomsday3; - end; - -OnClock0030: - if ($@DOOMSDAY_SKIP) - end; - if ($DOOMSDAY == 2) - goto L_Doomsday4Check; - end; - -OnClock0045: - if ($@DOOMSDAY_SKIP) - goto L_Doomsday3Skip; - if ($DOOMSDAY == 2) - goto L_Doomsday3Check; - end; - -// Act 3 clock handlers [3] -OnClock0900: - if ($DOOMSDAY == 2) - goto L_Doomsday3Bonus; - end; - -//////////////////////////////////////////////////////////////////////////////// -// Puppet labels -OnDeathMapname: - if ($DOOMSDAY == 1) - set $DOOMSDAY_CNT, $DOOMSDAY_CNT+1; - startnpctimer; - end; - -OnDeathAct3: - end; - -OnDeathAct4: - set $DOOMSDAY_SCORE, 0; - set $DOOMSDAY_CLUES, $DOOMSDAY_CLUES+1; - announce "Jande : Golem destroyed, crisis averted. I'll be resetting the number of victories.", 0; - if ($@DD_LOC$ == "") - end; - areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 100, "Doomsday::OnDD4SurvivorReward"; - end; - -} - -// Control puppets for Doomsday Council Meetings --|script|Doomsday Council|32767 -{ - if (GM >= G_DEV) - mes "["+strnpcinfo(0)+"]"; - mes "You probably should try talking to them normally."; - if (GM >= G_DEV) - mes "##9 Use: @npctalk \""+strnpcinfo(0)+"\" \"your message goes here\"##0"; - close; - -OnInit: - // Tulimshar room (Doomsday Tulim: _DT) - if (puppet("001-2", 99, 22, "Sagatha#_DT", 167) < 1) mapexit; - if (puppet("001-2", 92, 24, "Elanore#_DT", 108) < 1) mapexit; - if (puppet("001-2", 92, 30, "Nikolai#_DT", 362) < 1) mapexit; - if (puppet("001-2", 99, 32, "Morgan#_DT", 355) < 1) mapexit; - if (puppet("001-2", 110, 22, "Valia#_DT", 370) < 1) mapexit; - if (puppet("001-2", 117, 24, "Waric#_DT", 153) < 1) mapexit; - if (puppet("001-2", 117, 30, "Golbenez#_DT", 307) < 1) mapexit; - if (puppet("001-2", 110, 32, "Numa#_DT", 393) < 1) mapexit; - - // Hurnscald room (Doomsday Hurns: _DH) - if (puppet("069-2", 101, 85, "Sagatha#_DH", 167) < 1) mapexit; - if (puppet("069-2", 94, 87, "Elanore#_DH", 108) < 1) mapexit; - if (puppet("069-2", 94, 93, "Nikolai#_DH", 362) < 1) mapexit; - if (puppet("069-2", 101, 95, "Morgan#_DH", 355) < 1) mapexit; - if (puppet("069-2", 112, 85, "Valia#_DH", 370) < 1) mapexit; - if (puppet("069-2", 119, 87, "Waric#_DH", 153) < 1) mapexit; - if (puppet("069-2", 119, 93, "Golbenez#_DH", 307) < 1) mapexit; - if (puppet("069-2", 112, 95, "Numa#_DH", 393) < 1) mapexit; - - // Nivalis room (Doomsday Nivalis: _DN) - if (puppet("048-2", 113, 86, "Sagatha#_DN", 167) < 1) mapexit; - if (puppet("048-2", 112, 87, "Elanore#_DN", 108) < 1) mapexit; - if (puppet("048-2", 114, 87, "Nikolai#_DN", 362) < 1) mapexit; - if (puppet("048-2", 113, 88, "Morgan#_DN", 355) < 1) mapexit; - if (puppet("048-2", 118, 85, "Valia#_DN", 370) < 1) mapexit; - if (puppet("048-2", 117, 86, "Waric#_DN", 153) < 1) mapexit; - if (puppet("048-2", 119, 86, "Golbenez#_DN", 307) < 1) mapexit; - if (puppet("048-2", 118, 87, "Numa#_DN", 393) < 1) mapexit; - - // Disable puppets - disablenpc "Sagatha#_DT"; - disablenpc "Elanore#_DT"; - disablenpc "Nikolai#_DT"; - disablenpc "Morgan#_DT"; - disablenpc "Valia#_DT"; - disablenpc "Waric#_DT"; - disablenpc "Golbenez#_DT"; - disablenpc "Numa#_DT"; - - disablenpc "Sagatha#_DH"; - disablenpc "Elanore#_DH"; - disablenpc "Nikolai#_DH"; - disablenpc "Morgan#_DH"; - disablenpc "Valia#_DH"; - disablenpc "Waric#_DH"; - disablenpc "Golbenez#_DH"; - disablenpc "Numa#_DH"; - - disablenpc "Sagatha#_DN"; - disablenpc "Elanore#_DN"; - disablenpc "Nikolai#_DN"; - disablenpc "Morgan#_DN"; - disablenpc "Valia#_DN"; - disablenpc "Waric#_DN"; - disablenpc "Golbenez#_DN"; - disablenpc "Numa#_DN"; - end; -} - -// 114,80 --|script|Doomsday Council Master|32767 -{ - mes "The wizard seems to ignore you."; - if (GM < G_DEV) - close; - goto L_Main; - -L_Main: - explode @n$, strnpcinfo(0), "#"; - // @n$[1] = _DT/_DH/_DN for dismissal - mes ""; - menu - "[GM 40] Enable Sagatha", L_Sagatha, - "[GM 40] Enable Elanore", L_Elanore, - "[GM 40] Enable Nikolai", L_Nikolai, - "[GM 40] Enable Morgan", L_Morgan, - "[GM 40] Enable Valia", L_Valia, - "[GM 40] Enable Waric", L_Waric, - "[GM 40] Enable Golbenez", L_Golbenez, - "[GM 98] Enable Numa", L_Numa, - "[GM 40] Disable Sagatha", L_NoSagatha, - "[GM 40] Disable Elanore", L_NoElanore, - "[GM 40] Disable Nikolai", L_NoNikolai, - "[GM 40] Disable Morgan", L_NoMorgan, - "[GM 40] Disable Valia", L_NoValia, - "[GM 40] Disable Waric", L_NoWaric, - "[GM 40] Disable Golbenez", L_NoGolbenez, - "[GM 98] Disable Numa", L_NoNuma, - "[GM 60] Cancel Next Siege", L_SkipSiege, - "[GM 80] Dismiss the council", L_Dismiss; - -L_Sagatha: - enablenpc "Sagatha#"+@n$[1]; - goto L_Main; -L_NoSagatha: - disablenpc "Sagatha#"+@n$[1]; - goto L_Main; - -L_Elanore: - enablenpc "Elanore#"+@n$[1]; - goto L_Main; -L_NoElanore: - disablenpc "Elanore#"+@n$[1]; - goto L_Main; - -L_Nikolai: - enablenpc "Nikolai#"+@n$[1]; - goto L_Main; -L_NoNikolai: - disablenpc "Nikolai#"+@n$[1]; - goto L_Main; - -L_Morgan: - enablenpc "Morgan#"+@n$[1]; - goto L_Main; -L_NoMorgan: - disablenpc "Morgan#"+@n$[1]; - goto L_Main; - -L_Valia: - enablenpc "Valia#"+@n$[1]; - goto L_Main; -L_NoValia: - disablenpc "Valia#"+@n$[1]; - goto L_Main; - -L_Waric: - enablenpc "Waric#"+@n$[1]; - goto L_Main; -L_NoWaric: - disablenpc "Waric#"+@n$[1]; - goto L_Main; - -L_Golbenez: - enablenpc "Golbenez#"+@n$[1]; - goto L_Main; -L_NoGolbenez: - disablenpc "Golbenez#"+@n$[1]; - goto L_Main; - -L_Numa: - if (GM < G_SYSOP) - mes "Your GM level does not authorizes you to perform this operation."; - if (GM < G_SYSOP) - close; - enablenpc "Numa#"+@n$[1]; - goto L_Main; -L_NoNuma: - if (GM < G_SYSOP) - mes "Your GM level does not authorizes you to perform this operation."; - if (GM < G_SYSOP) - close; - disablenpc "Numa#"+@n$[1]; - goto L_Main; - -L_Dismiss: - if (GM < G_ADMIN) - mes "Your GM level does not authorizes you to perform this operation."; - if (GM < G_ADMIN) - close; - disablenpc "Sagatha#"+@n$[1]; - disablenpc "Elanore#"+@n$[1]; - disablenpc "Nikolai#"+@n$[1]; - disablenpc "Morgan#"+@n$[1]; - disablenpc "Valia#"+@n$[1]; - disablenpc "Waric#"+@n$[1]; - disablenpc "Golbenez#"+@n$[1]; - disablenpc "Arch-Wizard#"+@n$[1]; - gmlog strcharinfo(0) + " dismissed the Council."; - close; - -L_SkipSiege: - if (GM < G_GM) - mes "Your GM level does not authorizes you to perform this operation."; - if (GM < G_GM) - close; - set $@DOOMSDAY_SKIP, 1; - announce "Jande : I do not believe the enemy army will move this time. We should be safe for now.", 0; - gmlog strcharinfo(0) + " cancelled the scheduled doomsday attack."; - close; - -OnInit: - // Tulimshar room (Doomsday Tulim: _DT) - if (puppet("001-2", 104, 27, "Arch-Wizard#_DT", 354) < 1) mapexit; - if (puppet("069-2", 106, 90, "Arch-Wizard#_DH", 354) < 1) mapexit; - if (puppet("048-2", 114, 80, "Arch-Wizard#_DN", 354) < 1) mapexit; - - // Disable puppets - disablenpc "Arch-Wizard#_DT"; - disablenpc "Arch-Wizard#_DH"; - disablenpc "Arch-Wizard#_DN"; - end; -} - -009-1,53,40,0|script|Chest#Zealite|111 -{ - if ($DOOMSDAY_SUMMON < 2) end; - if ((gettimetick(2)-TUT_var < 3*7*86400) || (BaseLevel < 25)) //player must be created at least 3 weeks ago - goto L_EndTooYoung; - if (#DOOMSDAY_ARMOR) - goto L_EndTooYoung; - mes "[Chest]"; - mes "Inside this chest, Jande left us some Zealite based armor."; - next; - mes "[Chest]"; - mes "The @@5254|@@ can be really powerful. It'll be taken away once Doomsday Event ends."; - next; - mes "[Chest]"; - mes "Should we take it? (Max. 1 per account)"; - next; - mes "Event Details: [@@https://forums.themanaworld.org/viewtopic.php?t=20921|@@]"; - menu - "Yes, take it", L_Yes, - "No, I don't trust it", L_No; - -L_Yes: - message strcharinfo(0), "Chest : You took the Savior Armor from the chest. It will be lost once event ends."; - getitem "SaviorArmor", 1; - set #DOOMSDAY_ARMOR, 1; - close; - -L_No: - close; - -L_EndTooYoung: - if ($DOOMSDAY == 3) goto L_Hocus; - message strcharinfo(0), "Chest : It is empty!"; - end; - -L_Hocus: - message strcharinfo(0), "Chest : Only contains fire extinguishers, water hoses, and other fire-fighting stuff. I wonder what that is for."; - end; - -OnInit: - disablenpc "Chest#Zealite"; - end; -} - -008-1,97,28,0|script|#Haystack|400 -{ - if ($DOOMSDAY != 3) end; - if ((gettimetick(2)-TUT_var < 5*7*86400) || (BaseLevel < 40)) //player must be created at least 5 weeks ago - goto L_EndTooYoung; - if (gettimetick(2) < #HAYSTACKTIMEPENALTY) - goto L_EndRateLimit; - set #HAYSTACKTIMEPENALTY, gettimetick(2) + 5; - message strcharinfo(0), "Haystack : What exactly are you looking for?"; - // 5% chance (was 1% on 2010) - if (rand(20) == 0) - goto L_GetNeedle; - close; - -L_GetNeedle: - set #HAYSTACKTIMEPENALTY, gettimetick(2) + 3600; // 1 hours delay - getitem "BentNeedle", 1; - end; - -L_EndTooYoung: - end; - -L_EndRateLimit: - message strcharinfo(0), "Haystack : I just searched this haystack... Gimme a break."; - end; -} - -// This function controls death, both on Zax Domains as with Black Rose -// Undead cannot use the Black Rose :> -function|script|DoomsdayAct5 -{ - if ($DOOMSDAY != 3 || Class == 6) - goto L_Return; - if (getmap() == "099-8") - goto L_Return; - if (getmap() == "099-5") - goto L_WaitRoom; - if (getmap() == "099-1" || getmap() == "099-2" || getmap() == "099-3" || getmap() == "099-4" || getmap() == "099-6") - goto L_WarpOut; - // Iilia, Candor, Botcheck, etc. - if (getmapflag(getmap(), MF_NOSAVE)) - goto L_Return; - // Anywhere else is fine - if (countitem("BlackRose") || @alonso) - goto L_WarpTo; - goto L_Return; - -L_WarpTo: - heal 100000, 10000; - if ($DOOMSDAY_TWARP == 0) - goto L_KeshlamMaze; - if ($DOOMSDAY_TJANDE == 1) - goto L_KeshlamAbandoned; - if (!@alonso) - message strcharinfo(0), "The Black Rose did a miracle! Failed to die!"; - else - message strcharinfo(0), "World Shift : Shifted to full health"; - // Ops, nowhere to go! - goto L_Payment; - -L_Payment: - if (@alonso) - goto L_PayAlonso; - goto L_PayNormal; - -L_PayAlonso: - delitem "DarkPetal", 1; - set @alonso, 0; - return; - -L_PayNormal: - delitem "BlackRose", 1; - if (rand(5) < 3) - getitem "DarkPetal", 1; - return; - -L_WarpOut: - if (countitem("DarkPetal") < 1) - goto L_Failure; - if (rand(9) == 6) - goto L_Failure; - delitem "DarkPetal", 1; - heal 100000, 10000; - warp "009-1", 52, 40; - message strcharinfo(0), "The Dark Petal has protected you from certain death!"; - return; - -L_WaitRoom: - heal 100000, 10000; - warp "099-4", 50, 49; - message strcharinfo(0), "You were defeated in combat and warped to a parallel dimension where Zax does not exist."; - message strcharinfo(0), "Try to survive and provide support to your friends from the backline!"; - return; - -L_Failure: - heal 100000, 10000; - warp "009-1", 52, 40; - message strcharinfo(0), "You returned to life as an undead!"; - set Class, 6; - return; - -L_Return: - return; - -/////////////////////////////////// -L_KeshlamMaze: - if (rand(10) % 2 == 1) - warp "099-8", 23, 378; - else - warp "099-8", 379, 378; - goto L_Payment; - -L_KeshlamAbandoned: - warp "099-1", 34, 34; - goto L_Payment; -} - -009-1,30,43,0|script|Chest#DarkRose|111 -{ - if ($DOOMSDAY != 3) end; - if ((gettimetick(2)-TUT_var < 2*7*86400) || (BaseLevel < 35)) //player must be created at least 2 weeks ago - goto L_EndTooYoung; - if (#DOOMSDAY_FREEROSE > gettimetick(2)) - goto L_Cooldown; - mes "[Old Woman]"; - mes "Hello. I've been picking up some @@666|@@, they are growing in my garden."; - next; - mes "[Old Woman]"; - mes "The last time this happened was 10 years ago. They give me an ominous feeling."; - next; - mes "[Old Woman]"; - mes "Do you want one? I don't like them. (Max. 1 per account)"; - next; - mes "Event Details: [@@https://forums.themanaworld.org/viewtopic.php?t=20921|@@]"; - menu - "Yes, take it", L_Yes, - "No, it sounds dangerous", L_No; - -L_Yes: - message strcharinfo(0), "Chest : You can get another black rose for free in 23 hours."; - getitem "BlackRose", 1; - set #DOOMSDAY_FREEROSE, gettimetick(2)+82800; - close; - -L_No: - close; - -L_EndTooYoung: - message strcharinfo(0), "Chest : It is locked."; - end; - -L_Cooldown: - message strcharinfo(0), "Chest : You can only claim a free rose every 23 hours, please come back later."; - end; - -OnInit: - disablenpc "Chest#DarkRose"; - end; -} - -- cgit v1.2.3-60-g2f50