// Clears old variables
function|script|ClearVariables|,
{
// Tutorial
if ((TUTORIAL) || (sorfina))
goto L_ResetTut;
goto L_Heathin;
L_ResetTut:
//TUTORIAL to STARTAREA
if ((sorfina) || (kaan) || (hasan) || (tanisha))
goto L_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;
goto L_Heathin;
L_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;
goto L_Heathin;
L_Heathin:
if (HEATHIN_QUEST > 0)
set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_6_MASK)) | (HEATHIN_QUEST << NIBBLE_6_SHIFT);
set HEATHIN_QUEST, 0;
goto L_Easter;
L_Easter:
// Easter
set EasterQuest, 0;
// Halloween 2006
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;
// Christmas 2006
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;
set QUEST_Halloween07_state, 0;
set QUEST_xmas07_state, 0;
set QUEST_xmas07_milk, 0;
set QUEST_xmas07_cookies, 0;
set QUEST_xmas07_presents, 0;
set QUEST_Easter08_state, 0;
set Halloween08, 0;
set QUEST_xmas08_state, 0;
set QUEST_Easter09, 0;
set Candyman, 0; // Halloween 2009
set QUEST_Christmas09_state, 0;
set QUEST_Easter09_slots, 0;
// easter 2010
// This must not be cleared: since some people would like to go to the easter island!
// 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;
// halloween 2010
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;
// Xmas 2010:
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;
set QUEST_Easter11, 0;
// contains bad karma information
// set hw2011, 0;
set xmas11, 0;
set QUEST_Easter12, 0;
set xmas2012, 0;
set QUEST_clothdyer_angus, 0;
// Tulimshar and Mine Variables which aren't used anymore
set Scorp, 0;
set Bugleg, 0;
// variable isn't used
set QUEST_clothdyer_state, 0;
// variable was moved to a temporary player variable
set KatzeBeenOutside, 0;
// variable was moved to Nibble 1 of the variable Katze
set LastHiss, 0;
// quest was turned into a Daily Quest, so the variable isn't needed anymore
set CaveSnakeLamp, 0;
// 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;
//These lines are needed to migrate stuff from variables to 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;
if (#BankAccount < 0)
goto L_FixBank;
goto L_Fix_Skills;
L_FixBank:
if (Zeny >= -#BankAccount)
goto L_Fix_Full;
// Partial fix
set #BankAccount, #BankAccount + Zeny;
set Zeny, 0;
goto L_Fix_Skills;
L_Fix_Full:
set Zeny, Zeny + #BankAccount;
set #BankAccount, 0;
goto L_Fix_Skills;
L_Fix_Skills:
if(getskilllv(SKILL_TRADE) > 0) setskill SKILL_TRADE, 0;
if(getskilllv(SKILL_PARTY) > 0) setskill SKILL_PARTY, 0;
if(getskilllv(SKILL_EMOTE) > 0) setskill SKILL_EMOTE, 0;
goto L_Barber_Janitor;
L_Barber_Janitor:
callfunc "getHeadStyles"; // this converts class, color and hair
goto L_Return;
L_Return:
return;
}
// The variable TMW_Quest was used to save the progress in several subquests linearly.
// The subquests are moved to different nibbles of other variables
// to make it possible to do some of the quests in parallel.
function|script|ClearVarTMW_Quest|,
{
if (TMW_Quest == 0) goto L_Done;
if (TMW_Quest <= 6) goto L_Bernard_Mikhail;
if (TMW_Quest <= 8) goto L_Sarah;
if (TMW_Quest <= 10) goto L_Vincent;
if (TMW_Quest <= 12) goto L_Sandra;
if (TMW_Quest <= 40) goto L_Desert;
goto L_Bandit;
L_Bandit:
// move Bandit subquest into Nibble 0 of QUEST_Hurnscald
set @bandit, TMW_Quest - 40;
set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_0_MASK) | (@bandit << NIBBLE_0_SHIFT));
set TMW_Quest, 40;
set @bandit, 0;
goto L_Desert;
L_Desert:
// move guard and miner subquest into Byte 2 (Nibble 4 and 5) of QUEST_SouthTulimshar
set @miners, TMW_Quest - 12;
set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(BYTE_2_MASK) | (@miners << BYTE_2_SHIFT));
set TMW_Quest, 12;
set @miners, 0;
goto L_Sandra;
L_Sandra:
// move Sandra subquest into Nibble 3 of QUEST_SouthTulimshar
set @sandra, TMW_Quest - 10;
set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_3_MASK) | (@sandra << NIBBLE_3_SHIFT));
set TMW_Quest, 10;
set @sandra, 0;
goto L_Vincent;
L_Vincent:
// move Vincent subquest into Nibble 2 of QUEST_SouthTulimshar
set @vincent, TMW_Quest - 8;
set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_2_MASK) | (@vincent << NIBBLE_2_SHIFT));
set TMW_Quest, 8;
set @vincent, 0;
goto L_Sarah;
L_Sarah:
// move Sarah subquest into Nibble 1 of QUEST_SouthTulimshar
set @sarah, TMW_Quest - 6;
set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_1_MASK) | (@sarah << NIBBLE_1_SHIFT));
set TMW_Quest, 6;
set @sarah, 0;
goto L_Bernard_Mikhail;
L_Bernard_Mikhail:
// move Bernard and Mikhail subquest into Nibble 0 of QUEST_SouthTulimshar
set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_0_MASK) | (TMW_Quest << NIBBLE_0_SHIFT));
set TMW_Quest, 0;
goto L_Done;
L_Done:
return;
}
-|script|#ClearGlobalVars|-1,
{
end;
OnInit:
// Clear some entries of the arrays which save the Fluffy Hunting highscore list
set $@loop, 5;
goto L_FluffyClear;
L_FluffyClear:
if ($@loop == 12)
goto L_IlliaClear;
set $Record_Fluffy_Name$[$@loop], "";
set $Record_Fluffy_Date$[$@loop], "";
set $Record_Fluffy_Kills[$@loop], 0;
set $@loop, $@loop + 1;
goto L_FluffyClear;
// 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;
// Variable was used in Voltain's script, was renamed and turned into a temporary variable
set $state, 0;
end;
}