// TMW2 Scripts // Author: // Jesusalva // Description: // Controls Forgotten Shrine 018-6-3 mapflag nowarpto // 01863_RelevanceCheck ( Room ID ) function script 01863_RelevanceCheck { .@id=getarg(0); .@q=getq(LoFQuest_Barbara); .@q2=getq2(LoFQuest_Barbara); .@q3=getq3(LoFQuest_Barbara); if (.@q < 3) Exception("INVALID QUEST STATE, REVCHECK", RB_DEFAULT|RB_ISFATAL); if (.@q != 3) return false; if (.@q3 & .@id) return false; return true; } // TODO: filler function script 01863_DisableAllWarps { .@q=getq(LoFQuest_Barbara); .@q2=getq2(LoFQuest_Barbara); .@q3=getq3(LoFQuest_Barbara); if (.@q < 3) Exception("ERROR, INVALID WARP", RB_DEFAULT|RB_ISFATAL); disablenpc instance_npcname("#01863_fromNorthtoOut", .@q2); disablenpc instance_npcname("#01863_fromNorthtoNW", .@q2); disablenpc instance_npcname("#01863_fromNorthtoNE", .@q2); disablenpc instance_npcname("#01863_fromSouthtoOut", .@q2); disablenpc instance_npcname("#01863_fromSouthtoSW", .@q2); disablenpc instance_npcname("#01863_fromSouthtoSE", .@q2); disablenpc instance_npcname("#01863_fromNWtoNorth", .@q2); disablenpc instance_npcname("#01863_fromNWtoNC", .@q2); disablenpc instance_npcname("#01863_fromNWtoSW", .@q2); disablenpc instance_npcname("#01863_fromSWtoSouth", .@q2); disablenpc instance_npcname("#01863_fromSWtoSC", .@q2); disablenpc instance_npcname("#01863_fromSWtoNW", .@q2); disablenpc instance_npcname("#01863_fromNEtoNorth", .@q2); disablenpc instance_npcname("#01863_fromNEtoNC", .@q2); disablenpc instance_npcname("#01863_fromNEtoSE", .@q2); disablenpc instance_npcname("#01863_fromSEtoSouth", .@q2); disablenpc instance_npcname("#01863_fromSEtoSC", .@q2); disablenpc instance_npcname("#01863_fromSEtoNE", .@q2); disablenpc instance_npcname("#01863_fromNCtoNW", .@q2); disablenpc instance_npcname("#01863_fromNCtoNE", .@q2); //disablenpc instance_npcname("#01863_fromNCtoCC", .@q2); disablenpc instance_npcname("#01863_fromSCtoSW", .@q2); disablenpc instance_npcname("#01863_fromSCtoSE", .@q2); //disablenpc instance_npcname("#01863_fromSCtoCC", .@q2); return; } // Main Controller for Instanced maps 018-6-3,0,0,0 script #01863_InstCtrl NPC_HIDDEN,{ end; // Map, x1, y1, x2, y2, mob, amount function AreaMonsterB { .@m$=getarg(0); .@x1=getarg(1); .@x2=getarg(3); .@y1=getarg(2); .@y2=getarg(4); .@mi=getarg(5); .@am=getarg(6); if (!.@am) return; areamonster(.@m$, .@x1, .@y1, .@x2, .@y2, strmobinfo(1, .@mi), .@mi, .@am); //, instance_npcname(.name$)+"::OnKill"+.@mi); return; } // Map, x1, y1, x2, y2, mob, bossID function AreaMonsterBoss { .@m$=getarg(0); .@x1=getarg(1); .@x2=getarg(3); .@y1=getarg(2); .@y2=getarg(4); .@mi=getarg(5); .@id=getarg(6); areamonster(.@m$, .@x1, .@y1, .@x2, .@y2, strmobinfo(1, .@mi), .@mi, 1, instance_npcname(.name$)+"::OnKill"+.@id); return; } // BossRoom ( RoomID, x1, y1, x2, y2, adjustment ) // Adjustment is for bigger rooms. Defaults to false. function BossRoom { .@id=getarg(0); .@x1=getarg(1); .@y1=getarg(2); .@x2=getarg(3); .@y2=getarg(4); .@ad=getarg(5, false); // True: Must spawn boss, False: Allow to use warps if (01863_RelevanceCheck(.@id)) { mapannounce getmap(), l("BOSS FIGHT!"), bc_map|bc_pc; // Spawn a boss. Aggressive chance: 33% AreaMonsterBoss(getmap(), .@x1, .@y1, .@x2, .@y2, any(HolyPixie, NulityPixie, VanityPixie, TerraniteProtector, GoboBear, Centaur), .@id); // BIG ROOM: 6~12 support units // SMALL ROOM: 5~10 support units AreaMonsterB(getmap(), .@x1, .@y1, .@x2, .@y2, BlackSlime, rand2(2,4)+.@ad); AreaMonsterB(getmap(), .@x1, .@y1, .@x2, .@y2, DarkLizard, rand2(1,2)+.@ad); AreaMonsterB(getmap(), .@x1, .@y1, .@x2, .@y2, BlackScorpion, rand2(1,2)); AreaMonsterB(getmap(), .@x1, .@y1, .@x2, .@y2, Archant, rand2(1,2)-.@ad); // Only spawn the fast Hooded Ninja on big rooms if (.@ad) { AreaMonsterB(getmap(), .@x1, .@y1, .@x2, .@y2, HoodedNinja, any(0,0,1)); } return false; } return true; } // W - West, C - Center, E - East, N - North, S - South OnRoomNorth: L_Room1: if (BossRoom(1, 62, 41, 121, 58, true)) { enablenpc instance_npcname("#01863_fromNorthtoNW"); enablenpc instance_npcname("#01863_fromNorthtoNE"); enablenpc instance_npcname("#01863_fromNorthtoOut"); } end; OnRoomNW: L_Room2: if (BossRoom(2, 48, 65, 68, 85)) { enablenpc instance_npcname("#01863_fromNWtoNorth"); enablenpc instance_npcname("#01863_fromNWtoNC"); enablenpc instance_npcname("#01863_fromNWtoSW"); } end; OnRoomNC: L_Room4: if (BossRoom(4, 77, 65, 103, 76)) { enablenpc instance_npcname("#01863_fromNCtoNW"); enablenpc instance_npcname("#01863_fromNCtoNE"); //enablenpc instance_npcname("#01863_fromNCtoCC"); } end; OnRoomNE: L_Room8: if (BossRoom(8, 111, 65, 131, 85)) { enablenpc instance_npcname("#01863_fromNEtoNorth"); enablenpc instance_npcname("#01863_fromNEtoNC"); enablenpc instance_npcname("#01863_fromNEtoSE"); } end; OnRoomSW: L_Room16: if (BossRoom(16, 48, 95, 68, 115)) { enablenpc instance_npcname("#01863_fromSWtoSouth"); enablenpc instance_npcname("#01863_fromSWtoSC"); enablenpc instance_npcname("#01863_fromSWtoNW"); } end; OnRoomSC: L_Room32: if (BossRoom(32, 77, 104, 103, 115)) { enablenpc instance_npcname("#01863_fromSCtoSW"); enablenpc instance_npcname("#01863_fromSCtoSE"); //enablenpc instance_npcname("#01863_fromSCtoCC"); } end; OnRoomSE: L_Room64: if (BossRoom(64, 111, 95, 131, 115)) { enablenpc instance_npcname("#01863_fromSEtoSouth"); enablenpc instance_npcname("#01863_fromSEtoSC"); enablenpc instance_npcname("#01863_fromSEtoNE"); } end; OnRoomSouth: L_Room128: if (BossRoom(128, 62, 122, 121, 139, true)) { enablenpc instance_npcname("#01863_fromSouthtoSW"); enablenpc instance_npcname("#01863_fromSouthtoSE"); enablenpc instance_npcname("#01863_fromSouthtoOut"); } end; // Kill boss will use setq3 and also erase any remaining monster // Then it'll cast again the room event to enable the warps. OnKill1: .@q3=getq3(LoFQuest_Barbara); setq3 LoFQuest_Barbara, .@q3|1; killmonsterall(getmap()); goto L_Room1; OnKill2: .@q3=getq3(LoFQuest_Barbara); setq3 LoFQuest_Barbara, .@q3|2; killmonsterall(getmap()); goto L_Room2; OnKill4: .@q3=getq3(LoFQuest_Barbara); setq3 LoFQuest_Barbara, .@q3|4; killmonsterall(getmap()); goto L_Room4; OnKill8: .@q3=getq3(LoFQuest_Barbara); setq3 LoFQuest_Barbara, .@q3|8; killmonsterall(getmap()); goto L_Room8; OnKill16: .@q3=getq3(LoFQuest_Barbara); setq3 LoFQuest_Barbara, .@q3|16; killmonsterall(getmap()); goto L_Room16; OnKill32: .@q3=getq3(LoFQuest_Barbara); setq3 LoFQuest_Barbara, .@q3|32; killmonsterall(getmap()); goto L_Room32; OnKill64: .@q3=getq3(LoFQuest_Barbara); setq3 LoFQuest_Barbara, .@q3|64; killmonsterall(getmap()); goto L_Room64; OnKill128: .@q3=getq3(LoFQuest_Barbara); setq3 LoFQuest_Barbara, .@q3|128; killmonsterall(getmap()); goto L_Room128; OnKill256: .@q3=getq3(LoFQuest_Barbara); setq3 LoFQuest_Barbara, .@q3|256; killmonsterall(getmap()); end; } ////////// Warp System below this file 018-6-3,86,32,0 script #01863_fromOuttoNorth NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 86, 44; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNorth"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; } 018-6-3,86,43,0 script #01863_fromNorthtoOut NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 86, 31; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,64,50,0 script #01863_fromNorthtoNW NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 58, 67; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNW"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,58,66,0 script #01863_fromNWtoNorth NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 65, 50; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNorth"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,119,50,0 script #01863_fromNorthtoNE NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 122, 68; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNE"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,122,67,0 script #01863_fromNEtoNorth NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 118, 50; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNorth"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,67,75,0 script #01863_fromNWtoNC NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 79, 71; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNC"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,78,71,0 script #01863_fromNCtoNW NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 66, 75; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNW"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,57,83,0 script #01863_fromNWtoSW NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 57, 97; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSW"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,57,96,0 script #01863_fromSWtoNW NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 57, 82; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNW"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,112,75,0 script #01863_fromNEtoNC NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 101, 70; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNC"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,102,70,0 script #01863_fromNCtoNE NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 113, 75; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNE"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,121,84,0 script #01863_fromNEtoSE NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 121, 97; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSE"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,121,96,0 script #01863_fromSEtoNE NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 121, 83; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNE"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,57,113,0 script #01863_fromSWtoSouth NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 64, 131; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSouth"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,63,131,0 script #01863_fromSouthtoSW NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 57, 112; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSW"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,123,113,0 script #01863_fromSEtoSouth NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 119, 131; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSouth"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,120,131,0 script #01863_fromSouthtoSE NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 123, 112; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSE"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,66,106,0 script #01863_fromSWtoSC NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 79, 110; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSC"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,78,110,0 script #01863_fromSCtoSW NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 65, 106; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSW"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,112,110,0 script #01863_fromSEtoSC NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 101, 110; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSC"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,102,110,0 script #01863_fromSCtoSE NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 113, 110; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSE"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,92,137,0 script #01863_fromSouthtoOut NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 92, 151; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,92,150,0 script #01863_fromOuttoSouth NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 92, 136; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSouth"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; } 018-6-3,90,84,0 script #01863_fromCCtoNC NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 90, 73; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomNC"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } 018-6-3,90,96,0 script #01863_fromCCtoSC NPC_SUMMONING_CIRC,0,0,{ dispbottom l("I should be prepared before walking on this."); end; OnTouch: // Disable any other active portal 01863_DisableAllWarps(); // Warp you to next room coordinates slide 90, 106; // Execute the next room code and finish doevent instance_npcname("#01863_InstCtrl", .@q2)+"::OnRoomSC"; end; // NPC must remain hidden. OnInit: disablenpc .name$; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; } ///////////////////////////// ///////////////////////////// ///////////////////////////// // Critical Room