From cf18ce071c79ae37e14ea38943e0b1d88da70a7b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 9 Apr 2021 13:33:57 -0300 Subject: Override --- npc/007-2/_import.txt | 4 + npc/007-2/_warps.txt | 3 + npc/007-2/witch.txt | 996 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1003 insertions(+) create mode 100644 npc/007-2/_import.txt create mode 100644 npc/007-2/_warps.txt create mode 100755 npc/007-2/witch.txt (limited to 'npc/007-2') diff --git a/npc/007-2/_import.txt b/npc/007-2/_import.txt new file mode 100644 index 00000000..ec867053 --- /dev/null +++ b/npc/007-2/_import.txt @@ -0,0 +1,4 @@ +// Map 007-2: Illia forsaken inn +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/007-2/_warps.txt", +"npc/007-2/witch.txt", diff --git a/npc/007-2/_warps.txt b/npc/007-2/_warps.txt new file mode 100644 index 00000000..8cb4a09c --- /dev/null +++ b/npc/007-2/_warps.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 007-2: Illia forsaken inn warps +007-2,34,35,0 warp #007-2_34_35 0,0,007-1,73,77 diff --git a/npc/007-2/witch.txt b/npc/007-2/witch.txt new file mode 100755 index 00000000..3625bb13 --- /dev/null +++ b/npc/007-2/witch.txt @@ -0,0 +1,996 @@ + + +007-2,36,23,0 script Valia NPC370,{ + @illia_sapphire_powder = 3; + @illia_amethyst_powder = 1; + @illia_iron_powder = 13; + @illia_yeti_tear = 1; + @illia_iced_water = 4; + $@illia_min_level = 90; + + if ((GM >= DBG_VALIA || debug) && getequipid(equip_head) == 647) + goto L_DeveloperBoard; + + if (BaseLevel < $@illia_min_level) goto L_Unexperienced; + if ($@iLLIA_STATUS == 0) goto L_Introduce; + if ($@iLLIA_STATUS == 1) goto L_PreparingSpell; + if ($@iLLIA_STATUS == 2) goto L_ReadyToTeleport; + if ($@iLLIA_STATUS == 3) end; + if ($@iLLIA_STATUS >= 4) goto L_AlreadyBegun; + end; + +L_DeveloperBoard: + callfunc "IlliaDebug"; + close; + +L_Introduce: + if (@illia_go_find_items) + goto L_AskItems; + if (@illia_know_witch == 1) + goto L_QuickIntroduce; + mes "[Valia]"; + mes "\"I'm Valia Illia. Is it needed to say I am a witch?\""; + next; + mes "\"No I don't think so.\""; + next; + mes "\"And you, you seem to be quite an adventurer.\""; + menu + "Well... No.", L_Disappointed, + "No doubt!", L_Next; + +L_Next: + mes "[Valia]"; + mes "\"Maybe you can help then."; + mes "You see, I have a sister. Yes, a witch too. Very talented."; + mes "But unfortunately not enough to avoid being captured.\""; + menu + "That's unfortunate...", L_Exit, + "What informations do you have about all this?", L_Next1; + +L_Next1: + @illia_know_witch = 1; + mes "[Valia]"; + mes "\"Ismuth, some dark mage we both hate. He is the one holding her jailed for sure."; + mes "She has knowledge about specific magic sides that no other sorcerer knows about.\""; + next; + mes "\"He has been looking for her for a long time because of that..."; + mes "I am worried about her."; + mes "And I am unable to go help her.\""; + + menu + "Why not? You seem to be quite talented as well.", L_Next2; + +L_Next2: + mes "[Valia]"; + mes "\"Sure. But I know the enemy. My chances are thin. And if I fail, no one will ever find us."; + mes "And my magic skills aren't suited for this...\""; + menu + "That makes sense...", L_AskHelp, + "For what are they suited then?", L_HideSkills; + +L_HideSkills: + mes "[Valia]"; + mes "\"Please, never ask a witch what she is skilled in.\""; + next; + goto L_AskHelp; + +L_QuickIntroduce: + mes "[Valia]"; + mes "\"My sister is in great danger, and time is running out.\""; + next; + goto L_AskHelp; + +L_AskHelp: + mes "[Valia]"; + mes "\"Will you help me?\""; + menu + "That sounds quite dangerous... I don't feel it.", L_Disappointed, + "Ok, I can do that for you.", L_Next3; + +L_Next3: + mes "[Valia]"; + mes "\"Good. Now listen carefully. Ismuth owns an island where he makes his researchs."; + mes "An island where no boat goes, and where no magic could teleport you to..."; + mes "Strong enchantments are protecting the area, however, I know about a mysterious waterfall, which can send you wherever you want, provided you pay the price.\""; + next; + mes "\"Of course, it would be a straight way to death if you go alone."; + mes "You will need three experienced comrades that you would trust enough to leave your life in their care.\""; + next; + + if (getusers(1) < 4) + goto L_NotPeepAv; + + mes "[Valia]"; + mes "\"Do you know such people?\""; + menu + "I'm afraid not. I should better look around.", L_Exit, + "Yes I know such people!", L_Next4; + +L_Next4: + mes "[Valia]"; + mes "\"Good."; + mes "I can teleport all of you close to that waterfall, but for that, I will need " + @illia_sapphire_powder + " bags of Sapphire Powder, " + @illia_amethyst_powder + " of Amethyst Powder, " + @illia_iron_powder + " Iron Powders," + @illia_yeti_tear + " Frozen Yeti Tear and " + @illia_iced_water + " bottles of Iced Water.\""; + menu + "I have them here.", L_CheckItems, + "I don't have them, but I'll try to find.", L_NoItems; + +L_NotPeepAv: + mes "[Valia]"; + mes "\"But it seems there are not enough people around."; + mes "Come back later.\""; + close; + +L_AskItems: + mes "[Valia]"; + mes "\"So, did you bring me what I need?\""; + menu + "Hum, I forgot what you asked...", L_RepeatItems, + "Here they are!", L_CheckItems; + +L_RepeatItems: + mes "[Valia]"; + mes "\"I need " + @illia_sapphire_powder + " bags of Sapphire Powder, " + @illia_amethyst_powder + " of Amethyst Powder, " + @illia_iron_powder + " Iron Powders," + @illia_yeti_tear + " Frozen Yeti Tear and " + @illia_iced_water + " bottles of Iced Water.\""; + next; + mes "\"Hurry up.\""; + close; + +L_NoItems: + @illia_go_find_items = 1; + close; + +L_MissingItems: + mes "[Valia]"; + mes "\"Obviously you are missing some of the components."; + mes "Go find the missing ones, fast. We lack time!\""; + @illia_go_find_items = 1; + close; + +L_CheckItems: + if ( + (countitem ("SapphirePowder") < @illia_sapphire_powder) || + (countitem ("AmethystPowder") < @illia_amethyst_powder) || + (countitem ("IronPowder") < @illia_iron_powder) || + (countitem ("FrozenYetiTear") < @illia_yeti_tear) || + (countitem ("IcedWater") < @illia_iced_water) + ) goto L_MissingItems; + // someone started the quest in the meantime, so we cancel this one. + if ($@iLLIA_STATUS > 0) + goto L_Interrupt; + // Block other players to start the quest, and start a timer to limit + // the time a player will take to gather his team. + // Considering the previous npc dialogs, we assume the player already designated his team mates, + // hence 5 mins should be enough. + $@iLLIA_STATUS = 1; + initnpctimer; + @illia_go_find_items = 0; + + mes "[Valia]"; + mes "\"Very well! I can prepare the spell now!\""; + next; + goto L_PrepareTeam; + +L_Interrupt: + mes "[Valia]"; + mes "\"Unfortunately, someone else is already helping me.\""; + close; + +L_PrepareTeam: + // We clear early this variable. + @illia_know_witch = 0; + mes "[Valia]"; + mes "\"While I focus on preparing the spell, call your three comrades, and make sure they come here within five minutes. We don't have time.\""; + next; + $@iLLIA_HERO$ = strcharinfo(0); + $@iLLIA_HERO_ID = getcharid(3, $@iLLIA_HERO$); + goto L_ChooseHelper1; + +L_Disappointed: + mes "[Valia]"; + mes "\"What a shame... You have no idea what you are missing, really.\""; + close; + +L_Unexperienced: + mes "You see a charismatic witch."; + next; + mes "But she seems to completely ignore your presence."; + close; + +L_ChooseHelperConfirm1: + mes "[Team Selector]"; + mes "If it happens you cannot elect three players to help you, you can give up now."; + menu + "Continue.", L_ChooseHelper1, + "I give up.", L_PlayerGaveUp; + +L_ChooseHelper1: + mes "[Team Selector]"; + mes "Name the first player to help you:"; + input $@iLLIA_HELPER1$; + + if ($@iLLIA_HELPER1$ == "") + goto L_ChooseHelperConfirm1; + if (getcharid(3, $@iLLIA_HELPER1$) == $@iLLIA_HERO_ID) + goto L_WrongHelper1; + if (isloggedin(getcharid(3, $@iLLIA_HELPER1$)) == 0) + goto L_HelperDoesNotExist1; + if (!(attachrid(getcharid(3, $@iLLIA_HELPER1$)))) + goto L_Exit; + if (BaseLevel < $@illia_min_level) + goto L_HelperTooWeak1; + $@iLLIA_HELPER1$ = strcharinfo(0); + detachrid; + if (attachrid($@iLLIA_HERO_ID)) + goto L_ChooseHelper2; + goto L_Exit; + +L_HelperTooWeak1: + detachrid; + if (!(attachrid($@iLLIA_HERO_ID))) + goto L_Exit; + mes "[Team Selector]"; + mes "The player " + $@iLLIA_HELPER1$ + " is too weak to help you."; + $@iLLIA_HELPER1$ = ""; + next; + goto L_ChooseHelperConfirm1; + +L_HelperDoesNotExist1: + mes "[Team Selector]"; + mes "This player " + $@iLLIA_HELPER1$ + " seems offline or does not exist."; + $@iLLIA_HELPER1$ = ""; + next; + goto L_ChooseHelperConfirm1; + +L_WrongHelper1: + mes "[Team Selector]"; + mes "You can't name yourself."; + next; + goto L_ChooseHelperConfirm1; + +L_ChooseHelperConfirm2: + mes "[Team Selector]"; + mes "If it happens you cannot elect three players to help you, you can give up now."; + menu + "Continue.", L_ChooseHelper2, + "I give up.", L_PlayerGaveUp; + +L_ChooseHelper2: + mes "[Team Selector]"; + mes "Name the second player to help you:"; + input $@iLLIA_HELPER2$; + if ($@iLLIA_HELPER2$ == "") + goto L_ChooseHelperConfirm2; + if (getcharid(3, $@iLLIA_HELPER2$) == getcharid(3, $@iLLIA_HELPER1$) || + getcharid(3, $@iLLIA_HELPER2$) == $@iLLIA_HERO_ID) + goto L_WrongHelper2; + if (isloggedin(getcharid(3, $@iLLIA_HELPER2$)) == 0) + goto L_HelperDoesNotExist2; + if (!(attachrid(getcharid(3, $@iLLIA_HELPER2$)))) + goto L_Exit; + if (BaseLevel < $@illia_min_level) + goto L_HelperTooWeak2; + $@iLLIA_HELPER2$ = strcharinfo(0); + detachrid; + if (attachrid($@iLLIA_HERO_ID)) + goto L_ChooseHelper3; + goto L_Exit; + +L_HelperTooWeak2: + detachrid; + if (!(attachrid($@iLLIA_HERO_ID))) + goto L_Exit; + mes "[Team Selector]"; + mes "The player " + $@iLLIA_HELPER2$ + " is too weak to help you."; + $@iLLIA_HELPER2$ = ""; + next; + goto L_ChooseHelperConfirm2; + +L_HelperDoesNotExist2: + mes "[Team Selector]"; + mes "This player " + $@iLLIA_HELPER2$ + " seems offline or does not exist."; + $@iLLIA_HELPER2$ = ""; + next; + goto L_ChooseHelperConfirm2; + +L_WrongHelper2: + mes "[Team Selector]"; + mes "You can't name yourself or someone already chosen."; + next; + goto L_ChooseHelperConfirm2; + +L_ChooseHelperConfirm3: + mes "[Team Selector]"; + mes "If it happens you cannot elect three players to help you, you can give up now."; + menu + "Continue.", L_ChooseHelper3, + "I give up.", L_PlayerGaveUp; + +L_ChooseHelper3: + mes "[Team Selector]"; + mes "Name the third player to help you:"; + input $@iLLIA_HELPER3$; + if ($@iLLIA_HELPER3$ == "") + goto L_ChooseHelperConfirm3; + if (getcharid(3, $@iLLIA_HELPER3$) == getcharid(3, $@iLLIA_HELPER2$) || + getcharid(3, $@iLLIA_HELPER3$) == getcharid(3, $@iLLIA_HELPER1$) || + getcharid(3, $@iLLIA_HELPER3$) == $@iLLIA_HERO_ID) + goto L_WrongHelper3; + if (isloggedin(getcharid(3, $@iLLIA_HELPER3$)) == 0) + goto L_HelperDoesNotExist3; + if (!(attachrid(getcharid(3, $@iLLIA_HELPER3$)))) + goto L_Exit; + if (BaseLevel < $@illia_min_level) + goto L_HelperTooWeak3; + $@iLLIA_HELPER3$ = strcharinfo(0); + detachrid; + if (!(attachrid($@iLLIA_HERO_ID))) + goto L_Exit; + mes $@iLLIA_HELPER1$ + ", " + $@iLLIA_HELPER2$ + " and " + $@iLLIA_HELPER3$ + " will be your three comrades."; + close; + +L_HelperTooWeak3: + detachrid; + if (!(attachrid($@iLLIA_HERO_ID))) + goto L_Exit; + mes "[Team Selector]"; + mes "The player " + $@iLLIA_HELPER3$ + " is too weak to help you."; + $@iLLIA_HELPER3$ = ""; + next; + goto L_ChooseHelperConfirm3; + + +L_HelperDoesNotExist3: + mes "[Team Selector]"; + mes "This player " + $@iLLIA_HELPER3$ + " seems offline or does not exist."; + $@iLLIA_HELPER3$ = ""; + next; + goto L_ChooseHelperConfirm3; + +L_WrongHelper3: + mes "[Team Selector]"; + mes "You can't name yourself or someone already chosen."; + next; + goto L_ChooseHelperConfirm3; + +L_PreparingSpell: + mes "The witch looks busy with a spell, giving shape to strange rings,"; + mes "and is not paying any attention to you."; + close; + +L_ReadyToTeleport: + if ($@iLLIA_HELPER1$ == "" || $@iLLIA_HELPER2$ == "" || $@iLLIA_HELPER3$ == "") + goto L_PlayerGaveUp; + if (strcharinfo(0) == $@iLLIA_HERO$) + goto L_AskToTeleport; + if (strcharinfo(0) == $@iLLIA_HELPER1$ || strcharinfo(0) == $@iLLIA_HELPER2$ || strcharinfo(0) == $@iLLIA_HELPER3$) + goto L_TalkHelper; + mes "[Valia]"; + mes "\"I do not have time for you.\""; + close; + +L_AskToTeleport: + // Check area users just to give a hint if there are players around + // $@iLLIA_HERO$ $@iLLIA_HELPER1$ $@iLLIA_HELPER2$ $@iLLIA_HELPER3$ + if (!(attachrid(getcharid(3,$@iLLIA_HELPER1$)))) + goto L_NotEveryoneHere; + if (!(isin("007-2", 0, 0, 57, 55))) + goto L_NotEveryoneHere; + detachrid; + if (!(attachrid(getcharid(3,$@iLLIA_HELPER2$)))) + goto L_NotEveryoneHere; + if (!(isin("007-2", 0, 0, 57, 55))) + goto L_NotEveryoneHere; + detachrid; + if (!(attachrid(getcharid(3,$@iLLIA_HELPER3$)))) + goto L_NotEveryoneHere; + if (!(isin("007-2", 0, 0, 57, 55))) + goto L_NotEveryoneHere; + detachrid; + if (!(attachrid(getcharid(3,$@iLLIA_HERO$)))) + goto L_NotEveryoneHere; + if (!(isin("007-2", 0, 0, 57, 55))) + goto L_NotEveryoneHere; + mes "[Valia]"; + mes "\"Everyone seems to be here. Make sure to stay close to me.\""; + menu + "I'm ready.", L_Next5, + "Wait a minute.", L_Exit; + +L_Next5: + if ( + (countitem ("SapphirePowder") < @illia_sapphire_powder) || + (countitem ("AmethystPowder") < @illia_amethyst_powder) || + (countitem ("IronPowder") < @illia_iron_powder) || + (countitem ("FrozenYetiTear") < @illia_yeti_tear) || + (countitem ("IcedWater") < @illia_iced_water) + ) goto L_MissingItems; + delitem "SapphirePowder", @illia_sapphire_powder; + delitem "AmethystPowder", @illia_amethyst_powder; + delitem "IronPowder", @illia_iron_powder; + delitem "FrozenYetiTear", @illia_yeti_tear; + delitem "IcedWater", @illia_iced_water; + + // Stop the 5mins timer and start it again. + $@iLLIA_STATUS = 3; + initnpctimer; + close; + +L_NotEveryoneHere: + mes "[Valia]"; + mes "\"I don't see your comrades around."; + mes "Let's wait a little more.\""; + close; + +L_TalkHelper: + mes "[Valia]"; + mes "\"" + strcharinfo(0) + ", do your best to assist " + $@iLLIA_HERO$ + ".\""; + menu + "What is " + $@iLLIA_HERO$ + " going to do?", L_Next6, + "I will, no problem.", L_Exit; + +L_Next6: + mes "[Valia]"; + mes "\"You weren't told about it? This is about saving my captive sister.\""; + next; + mes "\"For the details, you'll have to ask " + $@iLLIA_HERO$ + "..."; + mes "I am not going to repeat myself...\""; + close; + +OnWarpHero: + if (strcharinfo(0) == $@iLLIA_HERO$) + goto L_Warp; + end; + +OnWarpHelper1: + if (strcharinfo(0) == $@iLLIA_HELPER1$) + goto L_Warp; + end; + +OnWarpHelper2: + if (strcharinfo(0) == $@iLLIA_HELPER2$) + goto L_Warp; + end; + +OnWarpHelper3: + if (strcharinfo(0) == $@iLLIA_HELPER3$) + goto L_Warp; + end; + +L_Warp: + misceffect FX_MAGIC_BLUE_TELEPORT, strcharinfo(0); + @illia_got_rewards = 0; + @illia_current_num_rewards = 0; + addtimer 2000, "Valia::OnRealWarp"; + end; + +OnRealWarp: + warp "051-1", 23 + rand(2), 24 + rand(3); + if (strcharinfo(0) == $@iLLIA_HERO$) + goto L_InitVars; + end; + +L_InitVars: + $@iLLIA_STATUS = 4; + donpcevent "#IlliaDaemon::OnCommandToggle"; + // init various variables + $@illia_progress = 1; + callfunc "UpdateIlliaProgress"; + $@illia_level_1_progress = 0; + $@illia_level_2_progress = 0; + $@illia_level_3_progress = 0; + $@illia_level_4_progress = 0; + $@illia_level_5_progress = 0; + $@illia_level_6_progress = 0; + $@illia_level_7_progress = 0; + $@illia_players_in_luvia_territory = 0; + + // Save the time at which the quest started + $@illia_begin_time = gettimetick(2); + + // Clean all levels + donpcevent "#IlliaJanitor1::OnCommandClean"; + donpcevent "#IlliaJanitor2::OnCommandClean"; + donpcevent "#IlliaJanitor3::OnCommandClean"; + donpcevent "#IlliaJanitor4::OnCommandClean"; + donpcevent "#IlliaJanitor5::OnCommandClean"; + donpcevent "#IlliaJanitor6::OnCommandClean"; + donpcevent "#IlliaJanitor7::OnCommandClean"; + + stopnpctimer; + setnpctimer 0; + end; + +L_AlreadyBegun: + mes "At the moment you are about to talk to her, she briefly shows a malicious smile and looks away."; + next; + mes "Probably it is best to not annoy her."; + close; + +L_Exit: + close; + +L_ReactToPlayersReturn: + // If players did not enter the Inn's lobby, they arent aware of the trap. + // Otherwise, they are aware of the trap. Whether they died or not, + // the rings will have deleted their memories. + // So the same dialog can apply. + if ($@illia_progress < 8) + goto L_Disappoint; + if ($@illia_progress == 8) + goto L_SurprisedByHeroWin; + end; + +L_SurprisedByHeroWin: + npctalk strnpcinfo(0), "(How is it possible... " + $@iLLIA_HERO$ + " survived...)"; + emotion EMOTE_SURPRISE; + goto L_EndQuest; + +L_Disappoint: + npctalk strnpcinfo(0), "Oh no... It seems " + $@iLLIA_HERO$ + " did not make it... Who will save my sister now?"; + emotion EMOTE_SAD; + goto L_EndQuest; + +L_PlayerGaveUp: + close2; + npctalk strnpcinfo(0), "Well... It seems you can't do it " + $@iLLIA_HERO$ + ". I knew it as soon as I saw you!"; + emotion EMOTE_UPSET; + goto L_EndQuest; + +L_EndQuest: + $@iLLIA_STATUS = 0; + $@iLLIA_HERO$ = ""; + $@iLLIA_HERO_ID = 0; + $@iLLIA_HELPER1$ = ""; + $@iLLIA_HELPER2$ = ""; + $@iLLIA_HELPER3$ = ""; + $@illia_progress = 0; + callfunc "UpdateIlliaProgress"; + $@illia_level_1_progress = 0; + $@illia_level_2_progress = 0; + $@illia_level_3_progress = 0; + $@illia_level_4_progress = 0; + $@illia_level_5_progress = 0; + $@illia_level_6_progress = 0; + $@illia_level_7_progress = 0; + $@illia_players_in_luvia_territory = 0; + $@illia_bp = 0; + + // Clean all levels + donpcevent "#IlliaJanitor1::OnCommandClean"; + donpcevent "#IlliaJanitor2::OnCommandClean"; + donpcevent "#IlliaJanitor3::OnCommandClean"; + donpcevent "#IlliaJanitor4::OnCommandClean"; + donpcevent "#IlliaJanitor5::OnCommandClean"; + donpcevent "#IlliaJanitor6::OnCommandClean"; + donpcevent "#IlliaJanitor7::OnCommandClean"; + + stopnpctimer; + setnpctimer 0; + end; + +OnTimer3000: + if ($@iLLIA_STATUS >= 253) + goto L_ReactToPlayersReturn; + end; + +OnTimer2500: + if ($@iLLIA_STATUS != 3) + end; + npctalk strnpcinfo(0), $@iLLIA_HERO$ + ", " + $@iLLIA_HELPER1$ + ", " + $@iLLIA_HELPER2$ + ", " + $@iLLIA_HELPER3$ + ", listen!"; + end; + +OnTimer7500: + if ($@iLLIA_STATUS != 3) + end; + npctalk strnpcinfo(0), "I will teleport the 4 of you in a forest that isn't far from the waterfall."; + end; + +OnTimer14000: + if ($@iLLIA_STATUS != 3) + end; + npctalk strnpcinfo(0), "Each of you takes one of these rings. They will allow you to come back here when needed."; + end; + +OnTimer24000: + if ($@iLLIA_STATUS != 3) + end; + if ($Illia_Luvia_Harvest < 10) + npctalk strnpcinfo(0), "Do your best and save my sister!"; + if ($Illia_Luvia_Harvest >= 10 && $Illia_Luvia_Harvest < 35) + npctalk strnpcinfo(0), "This will be quite dangerous, but do your best and save my sister!"; + if ($Illia_Luvia_Harvest >= 35) + npctalk strnpcinfo(0), "This will be awfully dangerous, but do your best and save my sister!"; + end; + +OnTimer34000: + if ($@iLLIA_STATUS != 3) + end; + // Trigger 4 areatimers to show the teleport spell + // This is better looking than a basic areawarp + areatimer 0, "007-2", 0, 0, 57, 55, 3000, "Valia::OnWarpHero"; + areatimer 0, "007-2", 0, 0, 57, 55, 3500, "Valia::OnWarpHelper1"; + areatimer 0, "007-2", 0, 0, 57, 55, 4000, "Valia::OnWarpHelper2"; + areatimer 0, "007-2", 0, 0, 57, 55, 4500, "Valia::OnWarpHelper3"; + npctalk strnpcinfo(0), "Spiralis Major!"; + misceffect FX_BLUE_MAGIC_CAST; + end; + +OnTimer50000: + // Add a check that the quest started. + // This timer on status 3 should be reached since L_Init_Vars will have + // stopped it before. + // It may happen it didn't if the hero logged off during the warp sequence + // Hence we'll just init what's necessary to trigger the end sequence + if ($@iLLIA_STATUS != 3) + end; + goto L_InitVars; + +OnTimer150000: + if ($@iLLIA_STATUS != 1) + end; + $@iLLIA_STATUS = 2; + npctalk strnpcinfo(0), $@iLLIA_HERO$ + ", I am ready to cast the teleport spell. You and your comrades should not wait any longer!"; + end; + +OnTimer280000: + if ($@iLLIA_STATUS != 2) + end; + npctalk strnpcinfo(0), "Hurry up " + $@iLLIA_HERO$ + ", I am losing patience."; + end; + +OnTimer300000: + if ($@iLLIA_STATUS != 2) + end; + npctalk strnpcinfo(0), $@iLLIA_HERO$ + ", you and your missing comrades made me lose a precious time! Out of my sight!"; + emotion EMOTE_UPSET; + if (attachrid($@iLLIA_HERO_ID)) + goto L_KillHero; + goto L_EndQuest; + +L_KillHero: + heal -Hp, 0; + goto L_EndQuest; + +} + +007-2,57,55,0 script #IlliaDaemon NPC32767,{ +end; + +OnInit: + disablenpc "#IlliaTorch1"; + disablenpc "#IlliaTorch2"; + disablenpc "#IlliaTorch3"; + disablenpc "#IlliaTorch4"; + disablenpc "#IlliaTorch5"; + disablenpc "#IlliaTorch6"; + disablenpc "#IlliaTorch7"; + disablenpc "#IlliaTorch8"; + $@illia_max_time = 300; + end; + +OnCommandToggle: + $@illia_max_time = 300; + if ($@iLLIA_STATUS >= 253) + goto L_Stop; + if ($@iLLIA_STATUS >= 4) + goto L_Start; + end; + +OnTimer1000: + if ($@iLLIA_STATUS < 4 || $@iLLIA_STATUS >= 254) + end; + goto L_Check; + +OnTimer2000: + if ($@iLLIA_STATUS < 4 || $@iLLIA_STATUS >= 254) + end; + // This is executed only when making a double check when we detected + // the hero offline/not in the good map previously. + goto L_Check; + +OnTimer4000: + // Check if we need to force-warp the hero + if (isloggedin($@iLLIA_HERO_ID) == 0) + end; + if ($@iLLIA_STATUS == 255 && attachrid($@iLLIA_HERO_ID) && ( + isin("051-1",1,1,190,80) || + isin("051-3",1,1,115,130) || + isin("052-1",1,1,100,80) || + isin("052-2",1,1,150,100) + ) + ) goto L_WarpHero; + detachrid; + end; + +OnTimer4500: + if ($@iLLIA_STATUS < 254) + end; + // send a message to all the helpers + setarray $@illia_helpers$, $@iLLIA_HELPER1$,$@iLLIA_HELPER2$,$@iLLIA_HELPER3$; + $@illia_helper_index = 0; + goto L_HelperNotification; + +OnTimer6500: + if ($@iLLIA_STATUS < 254) + end; + // Make the first witch to say something happened, when she will see people back + // If no helpers will be warped, it still makes sense: she felt the hero died. + startnpctimer "Valia"; + // $@illia_players_in_luvia_territory is set when players enter the island + $Illia_Luvia_Harvest = $Illia_Luvia_Harvest + $@illia_players_in_luvia_territory; + // Cap the difficulty to 50. We do not want the quest to really be impossible to finish. + if ($Illia_Luvia_Harvest > 50) + $Illia_Luvia_Harvest = 50; + $@illia_players_in_luvia_territory = 0; + end; + +L_HelperNotification: + if ($@illia_helper_index >= 4) + goto L_CleanHelpers; + $@illia_helper$ = $@illia_helpers$[$@illia_helper_index]; + if (isloggedin(getcharid(3, $@illia_helper$)) == 0) + goto L_NextHelperToNotify; + if ( + $@illia_helper$ != "" && + attachrid(getcharid(3, $@illia_helper$)) && ( + isin("051-1",1,1,190,80) || + isin("051-3",1,1,115,130) || + isin("052-1",1,1,100,80) || + isin("052-2",1,1,150,100) + ) + ) goto L_NotifyHelperFail; + detachrid; + goto L_NextHelperToNotify; + +L_NextHelperToNotify: + $@illia_helper_index = $@illia_helper_index + 1; + goto L_HelperNotification; + +L_CleanHelpers: + cleararray $@illia_helpers$, "", 3; + $@illia_helper$ = ""; + $@illia_helper_index = 0; + end; + +L_NotifyHelperFail: + message strcharinfo(0), $@iLLIA_HERO$ + " disappeared. There is no way I continue like this... Let's use the ring Valia gave!"; + // display the warp spell already if needed + misceffect FX_MAGIC_BLUE_TELEPORT, strcharinfo(0); + detachrid; + goto L_NextHelperToNotify; + +OnTimer8000: + if ($@iLLIA_STATUS < 254) + end; + // Warp remaining helpers back to the origin if needed + setarray $@illia_helpers$, $@iLLIA_HELPER1$,$@iLLIA_HELPER2$,$@iLLIA_HELPER3$; + $@illia_helper_index = 0; + goto L_CheckHelperNeedWarp; + +L_CheckHelperNeedWarp: + if ($@illia_helper_index >= 4) + goto L_CleanHelpersWarps; + $@illia_helper$ = $@illia_helpers$[$@illia_helper_index]; + if (isloggedin(getcharid(3, $@illia_helper$)) == 0) + goto L_NextHelperToWarp; + if ($@illia_helper$ != "" && attachrid(getcharid(3, $@illia_helper$))) + goto L_WarpHelper; + detachrid; + goto L_NextHelperToWarp; + +L_NextHelperToWarp: + $@illia_helper_index = $@illia_helper_index + 1; + goto L_CheckHelperNeedWarp; + +L_CleanHelpersWarps: + cleararray $@illia_helpers$, "", 3; + $@illia_helper$ = ""; + $@illia_helper_index = 0; + end; + +L_WarpHelper: + // Proceed only if the helper is still on one of the quest's maps + if ( + isin("051-1",1,1,190,80 ) || + isin("051-3",1,1,115,130) || + isin("052-1",1,1,100,80 ) || + isin("052-2",1,1,150,100) + ) goto L_DoWarpHelper; + detachrid; + goto L_NextHelperToWarp; + +L_DoWarpHelper: + // At this point, the player has been attached + if ($@illia_progress >= 5) + message strcharinfo(0), "You feel dizzy, and that your memory is being rewritten... Who is Luvia? Something isn't right."; + warp "007-2",31 + rand(0,2),23 + rand(0,2); + detachrid; + goto L_NextHelperToWarp; + +L_Check: + // We check for the hero to be logged in, alive, and in one of the quest's maps + if (isloggedin($@iLLIA_HERO_ID) == 0) + goto L_HeroLogOff; + if (attachrid($@iLLIA_HERO_ID) && + (isin("051-1",1,1,190,80 ) == 0) && + (isin("051-3",1,1,115,130) == 0) && + (isin("052-1",1,1,100,80 ) == 0) && + (isin("052-2",1,1,150,100) == 0) + ) goto L_HeroEscape; + if (ispcdead()) + goto L_HeroDead; + // If the quest lasts more than $@illia_max_time seconds, abort it + if (gettimetick(2) - $@illia_begin_time > $@illia_max_time) + goto L_HeroRingActivated; + // Conditions are all met. schedule another check 1s later + setnpctimer 0; + detachrid; + end; + +L_HeroRingActivated: + misceffect FX_MAGIC_BLUE_TELEPORT, strcharinfo(0); + message strcharinfo(0), "The ring Valia gave you seems to activate itself!"; + detachrid; + $@iLLIA_STATUS = 255; + setnpctimer 0; + end; + +L_HeroLogOff: + if (getnpctimer(0) < 1900) + end; + $@iLLIA_STATUS = 254; + setnpctimer 0; + end; + +L_HeroEscape: + detachrid; + // because of lags, warps between maps, etc + // let's assume a check can detect the player to not be in any of the map, + // while he is supposed to be in one. + // it does not hurt to make a double check 1sec later + if (getnpctimer(0) < 1900) + end; + $@iLLIA_STATUS = 254; + setnpctimer 0; + end; + +L_WarpHero: + // At this point, the player has been attached + if ($@illia_progress >= 5) + message strcharinfo(0), "You feel dizzy, and that your memory is being rewritten... Who is Luvia? Something isn't right."; + warp "007-2",31 + rand(0,2),23 + rand(0,2); + detachrid; + end; + +L_HeroDead: + // we notify the player that his death will add luvia's power. + // her power is increasing once players reach her island, + // but they didn't find out about her yet on the island, + // so we notify the hero only once they met her in the Inn + if ($@illia_progress >= 5 && $@illia_progress < 8) + message strcharinfo(0), "You are in Luvia's hands, and your soul is now meant to serve her dark purposes."; + detachrid; + $@iLLIA_STATUS = 255; + setnpctimer 0; + end; + +L_Stop: + stopnpctimer; + setnpctimer 0; + end; + +L_Start: + initnpctimer; + end; + +} + +function script UpdateIlliaProgress { + if ($@illia_progress == 1) + goto L_Torch1; + if ($@illia_progress == 2) + goto L_Torch2; + if ($@illia_progress == 3) + goto L_Torch3; + if ($@illia_progress == 4) + goto L_Torch4; + if ($@illia_progress == 5) + goto L_Torch5; + if ($@illia_progress == 6) + goto L_Torch6; + if ($@illia_progress == 7) + goto L_Torch7; + if ($@illia_progress == 8) + goto L_Torch8; + // Else, we disable everything + disablenpc "#IlliaTorch1"; + disablenpc "#IlliaTorch2"; + disablenpc "#IlliaTorch3"; + disablenpc "#IlliaTorch4"; + disablenpc "#IlliaTorch5"; + disablenpc "#IlliaTorch6"; + disablenpc "#IlliaTorch7"; + disablenpc "#IlliaTorch8"; + return; + +L_Torch8: + enablenpc "#IlliaTorch8"; + goto L_Torch7; + +L_Torch7: + enablenpc "#IlliaTorch7"; + goto L_Torch6; + +L_Torch6: + enablenpc "#IlliaTorch6"; + goto L_Torch5; + +L_Torch5: + enablenpc "#IlliaTorch5"; + goto L_Torch4; + +L_Torch4: + enablenpc "#IlliaTorch4"; + goto L_Torch3; + +L_Torch3: + enablenpc "#IlliaTorch3"; + goto L_Torch2; + +L_Torch2: + enablenpc "#IlliaTorch2"; + goto L_Torch1; + +L_Torch1: + enablenpc "#IlliaTorch1"; + return; +} + +007-2,29,22,0 script #IlliaTorch1 NPC374,{ +end; +} + +007-2,30,21,0 script #IlliaTorch2 NPC374,{ +end; +} + +007-2,33,24,0 script #IlliaTorch3 NPC374,{ +end; +} + +007-2,32,25,0 script #IlliaTorch4 NPC374,{ +end; +} + +007-2,32,21,0 script #IlliaTorch5 NPC374,{ +end; +} + +007-2,33,22,0 script #IlliaTorch6 NPC374,{ +end; +} + +007-2,29,24,0 script #IlliaTorch7 NPC374,{ +end; +} + +007-2,30,25,0 script #IlliaTorch8 NPC374,{ +end; +} + +function script IlliaDebug { + mes "$Illia_Luvia_Harvest: "+$Illia_Luvia_Harvest; + mes "$Illia_Win_Counter: "+$Illia_Win_Counter; + mes "---"; + mes "$@illia_progress: "+$@illia_progress; + if ($@illia_begin_time > 0) + mes "Time: "+(gettimetick(2) - $@illia_begin_time)+"/"+$@illia_max_time; + mes "---"; + mes "$@illia_level_1_progress: "+$@illia_level_1_progress; + mes "$@illia_level_2_progress: "+$@illia_level_2_progress; + mes "$@illia_level_3_progress: "+$@illia_level_3_progress; + mes "$@illia_level_4_progress: "+$@illia_level_4_progress; + mes "$@illia_level_5_progress: "+$@illia_level_5_progress; + mes "$@illia_level_6_progress: "+$@illia_level_6_progress; + mes "$@illia_level_7_progress: "+$@illia_level_7_progress; + return; +} -- cgit v1.2.3-60-g2f50