// Clears old variables function|script|ClearVariables { if(@login_event != 1) goto L_Deprecated; callsub S_Bernard_Mikhail; callsub S_Sarah; callsub S_Vincent; callsub S_Sandra; callsub S_Desert; callsub S_Bandit; callsub S_Tutorial; callsub S_Heathin; callsub S_Remove_Skills; callsub S_FixBank; callsub S_Angus; callsub S_Flags; callsub S_Bitmask; callsub S_BlueSage; callsub S_Luca; callsub S_Easter; callsub S_Easter2008; callsub S_Easter2009; callsub S_Easter2010; callsub S_Easter2011; callsub S_Easter2012; callsub S_Halloween2006; callsub S_Halloween2007; callsub S_Halloween2008; callsub S_Halloween2009; callsub S_Halloween2010; callsub S_Halloween2011; callsub S_Halloween2016; callsub S_Xmas2006; callsub S_Xmas2007; callsub S_Xmas2008; callsub S_Xmas2009; callsub S_Xmas2010; callsub S_Xmas2011; callsub S_Xmas2012; callsub S_Valentine2021; callsub S_Misc; return; // go back to global handler S_Return: // this is to end execution of a sub return; //////////////////////////////////////////////////////////////// S_Xmas2007: if(!QUEST_xmas07_state) goto S_Return; set QUEST_xmas07_state, 0; set QUEST_xmas07_milk, 0; set QUEST_xmas07_cookies, 0; set QUEST_xmas07_presents, 0; return; S_Halloween2007: set QUEST_Halloween07_state, 0; return; S_Xmas2006: if(!XMASQUEST1) goto S_Return; set XMASQUEST1, 0; set XMASQUEST2, 0; set XMASQUEST3, 0; set XMASQUEST4, 0; set XMASQUEST5, 0; set XMASQUEST6, 0; set XMASQUEST7, 0; set XMASQUEST8, 0; set XMASQUEST9, 0; set XMASQUEST10, 0; set XMASQUEST11, 0; set XMASQUEST12, 0; set XMASQUEST13, 0; set XMASQUEST14, 0; set XMASQUEST15, 0; set XMASQUEST16, 0; set XMASQUEST17, 0; set XMASQUEST18, 0; set XMASQUEST19, 0; set XMASQUEST20, 0; return; S_Halloween2006: if(!HWQUEST1) goto S_Return; set HWQUEST1, 0; set HWQUEST2, 0; set HWQUEST3, 0; set HWQUEST4, 0; set HWQUEST5, 0; set HWQUEST6, 0; set HWQUEST7, 0; set HWQUEST8, 0; set HWQUEST9, 0; set HWQUEST10, 0; set HWQUEST11, 0; set HWQUEST12, 0; set HWQUEST13, 0; set HWQUEST14, 0; set HWQUEST15, 0; set HWQUEST16, 0; set HWQUEST17, 0; set HWQUEST18, 0; set HWQUEST18, 0; set HWQUEST19, 0; set HWQUEST20, 0; return; S_Easter: set EasterQuest, 0; return; S_Easter2008: set QUEST_Easter08_state, 0; return; S_Halloween2008: set Halloween08, 0; return; S_Xmas2008: set QUEST_xmas08_state, 0; return; S_Easter2009: set QUEST_Easter09, 0; set QUEST_Easter09_slots, 0; return; S_Halloween2009: set Candyman, 0; return; S_Xmas2009: set QUEST_Christmas09_state, 0; return; S_Easter2010: if(!Easter_2010_QuestState) goto S_Return; set Easter_2010_QuestState, 0; set Easter_2010_EggState1, 0; set Easter_2010_EggState2, 0; set Easter_2010_EggState3, 0; set Easter_2010_EggState4, 0; set Easter_2010_EggState5, 0; return; S_Halloween2010: if(!hween10) goto S_Return; set hween10, 0; set hween10_collect_canpump, 0; set hween10_credits, 0; set hween10_collect, 0; set hween10_collect_mmallow, 0; set hween10_collect_jelskul, 0; set hween10_bonecount, 0; set hween10_collect_tondel, 0; set hween10_paid, 0; return; S_Halloween2016: set HWEEN16, 0; if(!hween16) goto S_Return; set hween16, 0; set hween16_collect_canpump, 0; set hween16_credits, 0; set hween16_collect, 0; set hween16_collect_mmallow, 0; set hween16_collect_jelskul, 0; set hween16_bonecount, 0; set hween16_collect_tondel, 0; set hween16_paid, 0; return; S_Xmas2010: if(!Xmas2010) goto S_Return; set Count_Yellow, 0; set Count_White, 0; set Maze, 0; set Yellow, 0; set White, 0; set Xmas2010, 0; set Golbenez_Inn_Cost, 0; return; S_Easter2011: set QUEST_Easter11, 0; return; S_Halloween2011: set hw2011, 0; return; S_Xmas2011: set xmas11, 0; return; S_Easter2012: set QUEST_Easter12, 0; return; S_Xmas2012: set xmas2012, 0; return; S_Angus: set QUEST_clothdyer_angus, 0; set QUEST_clothdyer_state, 0; return; S_Bitmask: // move Scythe quest into bitmasked variable QUEST_Hurnscald if (QUEST_Scythe_state) set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_1_MASK)) | (QUEST_Scythe_state << NIBBLE_1_SHIFT); set QUEST_Scythe_state, 0; // move Demon Mask quest into bitmasked variable QUEST_Hurnscald if (QUEST_demon_mines) set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_2_MASK)) | (QUEST_demon_mines << NIBBLE_2_SHIFT); set QUEST_demon_mines, 0; // move Inspector quest into bitmasked variable QUEST_Hurnscald set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT); if (Inspector > @inspector) set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (Inspector << NIBBLE_3_SHIFT); set Inspector, 0; set @inspector, 0; return; S_BlueSage: if (QUEST_BlueSage & (1 << 7)) 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; set Open_Underground_Palace_Barrier, 0; if (Naem_Quest_Done) set FLAGS, FLAGS | FLAG_GOT_NAEM_GLOVES; set Naem_Quest_Done, 0; if (ChristmasQuest) set FLAGS, FLAGS | FLAG_SNOWMAN; set ChristmasQuest, 0; if (ChristmasQuest2) set FLAGS, FLAGS | FLAG_SANTAS_HELPER; set ChristmasQuest2, 0; if (ChestQuest) set FLAGS, FLAGS | FLAG_HURNSMINE_CHEST; set ChestQuest, 0; return; S_FixBank: if(#BankAccount >= 0) goto S_Return; if (Zeny >= -#BankAccount) goto S_Fix_Bank_Full; // Partial fix set #BankAccount, #BankAccount + Zeny; set Zeny, 0; return; S_Fix_Bank_Full: set Zeny, Zeny + #BankAccount; set #BankAccount, 0; return; S_Remove_Skills: if(getskilllv(SKILL_TRADE) < 1) goto S_Return; setskill SKILL_TRADE, 0; setskill SKILL_PARTY, 0; setskill SKILL_EMOTE, 0; return; S_Misc: set Death_Kill, 0; set Scorp, 0; // Tulimshar and Mine Variables which aren't used anymore set Bugleg, 0; // Tulimshar and Mine Variables which aren't used anymore set KatzeBeenOutside, 0; // variable was moved to a temporary player variable set LastHiss, 0; // variable was moved to Nibble 1 of the variable Katze set CaveSnakeLamp, 0; // quest was turned into a Daily Quest, so the variable isn't needed anymore set MAGIC_CAST_TICK, 0; // legacy stuff return; S_Tutorial: if(!TUTORIAL && !sorfina) goto S_Return; //TUTORIAL to STARTAREA if ((sorfina) || (kaan) || (hasan) || (tanisha)) goto S_ResetAllTut; set @tutorial_tmp, ((TUTORIAL & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT); // Tutorial // Nibble 0 (sorfina, tanisha, kaan & hasan) set STARTAREA, (STARTAREA & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT)); // Nibble 1 (valon) set @tutorial_tmp, ((TUTORIAL & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); set @valon_done, (TUTORIAL & (1 << 7)); set @valon_start, (TUTORIAL & (1 << 6)); if (@valon_start) set @tutorial_tmp, (@tutorial_tmp + 2); if (@valon_done) set @tutorial_tmp, 7; set STARTAREA, (STARTAREA & ~(NIBBLE_1_MASK) | (@tutorial_tmp << NIBBLE_1_SHIFT)); // Nibble 2 (Counts) set @tutorial_tmp, ((TUTORIAL & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT); set STARTAREA, (STARTAREA & ~(NIBBLE_2_MASK) | (@tutorial_tmp << NIBBLE_2_SHIFT)); // Nibble 3 (Morgan) set @tutorial_tmp, ((TUTORIAL & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT); set STARTAREA, (STARTAREA & ~(NIBBLE_3_MASK) | (@tutorial_tmp << NIBBLE_3_SHIFT)); // Nibble 4 (Zegas) Barrels shuffled set @zegas_done, (TUTORIAL & (1 << 23)); set @zegas_start, (TUTORIAL & (1 << 16)); set @zegas_met, (TUTORIAL & (1 << 30)); set @tutorial_tmp, 0; if (@zegas_met) set @tutorial_tmp, 1; if (@zegas_start) set @tutorial_tmp, 2; if (@zegas_done) set @tutorial_tmp, 4; set STARTAREA, (STARTAREA & ~(NIBBLE_4_MASK) | (@tutorial_tmp << NIBBLE_4_SHIFT)); // Nibble 5 (Barrels) set @tutorial_tmp, 0; set STARTAREA, (STARTAREA & ~(NIBBLE_5_MASK) | (@tutorial_tmp << NIBBLE_5_SHIFT)); // Nibble 6 (Barrels) set STARTAREA, (STARTAREA & ~(NIBBLE_6_MASK) | (@tutorial_tmp << NIBBLE_6_SHIFT)); set TUTORIAL, 0; return; S_ResetAllTut: set sorfina, 0; set tanisha, 0; set hasan, 0; set kaan, 0; set TUTORIAL, 0; set STARTAREA, 0; set FLAGS, FLAGS &~ FLAG_TUTORIAL_DONE; return; S_Heathin: if(!HEATHIN_QUEST) goto S_Return; set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_6_MASK)) | (HEATHIN_QUEST << NIBBLE_6_SHIFT); set HEATHIN_QUEST, 0; return; S_Desert: // move guard and miner subquest into Byte 2 (Nibble 4 and 5) of QUEST_SouthTulimshar if(!TMW_QUEST || TMW_QUEST > 40) goto S_Return; set @miners, TMW_Quest - 12; set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(BYTE_2_MASK) | (@miners << BYTE_2_SHIFT)); set TMW_Quest, 12; set @miners, 0; return; S_Sandra: // move Sandra subquest into Nibble 3 of QUEST_SouthTulimshar if(!TMW_QUEST || TMW_QUEST > 12) goto S_Return; set @sandra, TMW_Quest - 10; set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_3_MASK) | (@sandra << NIBBLE_3_SHIFT)); set TMW_Quest, 10; set @sandra, 0; return; S_Vincent: // move Vincent subquest into Nibble 2 of QUEST_SouthTulimshar if(!TMW_QUEST || TMW_QUEST > 10) goto S_Return; set @vincent, TMW_Quest - 8; set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_2_MASK) | (@vincent << NIBBLE_2_SHIFT)); set TMW_Quest, 8; set @vincent, 0; return; S_Sarah: // move Sarah subquest into Nibble 1 of QUEST_SouthTulimshar if(!TMW_QUEST || TMW_QUEST > 8) goto S_Return; set @sarah, TMW_Quest - 6; set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_1_MASK) | (@sarah << NIBBLE_1_SHIFT)); set TMW_Quest, 6; set @sarah, 0; return; S_Bernard_Mikhail: // move Bernard and Mikhail subquest into Nibble 0 of QUEST_SouthTulimshar if(!TMW_QUEST || TMW_QUEST > 6) goto S_Return; set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_0_MASK) | (TMW_Quest << NIBBLE_0_SHIFT)); set TMW_Quest, 0; return; S_Bandit: // move Bandit subquest into Nibble 0 of QUEST_Hurnscald if(!TMW_QUEST) goto S_Return; set @bandit, TMW_Quest - 40; set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_0_MASK) | (@bandit << NIBBLE_0_SHIFT)); set TMW_Quest, 40; set @bandit, 0; return; S_Valentine2021: set #VALENTINE2021, 0; return; L_Deprecated: debugmes "Explicitely calling ClearVariables after login is deprecated."; mapexit; } function|script|ClearGlobalVars { goto L_IlliaClear; // Clear the array which saves the teams who beat the Illia quest L_IlliaClear: set $@loop, 0; goto L_IlliaLoop; L_IlliaLoop: if ($Illia_Win_Records$[$@loop] == "") goto L_EventClear; set $Illia_Win_Records$[$@loop], ""; set $@loop, $@loop + 1; goto L_IlliaLoop; L_EventClear: set $@loop, 0; // Clear global variable used in the Halloween event 2009 set $CandyOpsComplete, 0; // Clear global variables used in the Easter event 2010 set $Easter_2010_Npc_State1, 0; set $Easter_2010_Npc_State2, 0; set $Easter_2010_Egg_Loc_State1, 0; set $Easter_2010_Egg_Loc_State2, 0; set $Easter_2010_Egg_Loc_State3, 0; set $Easter_2010_Egg_Loc_State4, 0; set $Easter_2010_Egg_Loc_State5, 0; // Clear global variables used in the Halloween event 2010 set $hween10, 0; set $hween10_tondel, 0; set $hween10_mmallow, 0; set $hween10_jelskul, 0; set $hween10_canpump, 0; // Clear global variable used in Christmas event 2010 set $Golbenez_Inn_Cost, 0; // Clear global variables used in the Halloween event 2016 set $hween16, 0; set $hween16_tondel, 0; set $hween16_mmallow, 0; set $hween16_jelskul, 0; set $hween16_canpump, 0; // Variable was used in Voltain's script, was renamed and turned into a temporary variable set $state, 0; return; }