diff options
Diffstat (limited to 'npc/052-2/lobby.txt')
-rw-r--r-- | npc/052-2/lobby.txt | 352 |
1 files changed, 352 insertions, 0 deletions
diff --git a/npc/052-2/lobby.txt b/npc/052-2/lobby.txt new file mode 100644 index 00000000..0245cc6b --- /dev/null +++ b/npc/052-2/lobby.txt @@ -0,0 +1,352 @@ + +052-2,50,29,0 script #InnDoorTrigger NPC32767,2,2,{ + @step = 5; + if ($@illia_progress < @step) goto L_ShouldNotBeHere; + if ($@illia_level_5_progress == 8) goto L_Warp; + message strcharinfo(0), "A magical field prevents you from going further..."; + end; + +L_Warp: + warp "052-2", 33, 81; + message strcharinfo(0), "This place is full of dust... *coughs*"; + end; + +L_ShouldNotBeHere: + heal -100, 0; + end; + +} + +052-2,43,50,0 script #EntranceTrigger NPC32767,4,2,{ + @step = 5; + if ($@illia_progress < @step) goto L_ShouldNotBeHere; + if ($@illia_level_5_progress == 0 && strcharinfo(0) == $@iLLIA_HERO$) goto L_StartVoices; + end; + +L_StartVoices: + $@illia_level_5_progress = 1; + donpcevent "#MysteriousVoice::OnCommandStart"; + end; + +L_ShouldNotBeHere: + heal -100, 0; + end; +} + +052-2,1,1,0 script #LuviaShadow NPC127,{ +end; + +OnCommandEscape: + initnpctimer; + end; + +OnTimer100: + if ($@illia_level_5_progress != 7) + end; + npcwarp 49, 45, "#LuviaShadow"; + misceffect FX_DARK_TELEPORT; + npcwarp 1, 1, "Luvia?"; + end; + +OnTimer750: + if ($@illia_level_5_progress != 7) + end; + npcwarp 1, 1, "#LuviaShadow"; + stopnpctimer; + setnpctimer 0; + end; + +OnCommandInvoke: + initnpctimer; + end; + +OnTimer650: + if ($@illia_level_5_progress != 2) + end; + npcwarp 49, 45, "#LuviaShadow"; + misceffect FX_EVIL_SUMMON; + end; + +OnTimer1500: + if ($@illia_level_5_progress != 2) + end; + npcwarp 1, 1, "#LuviaShadow"; + npcwarp 49, 45, "Luvia?"; + $@illia_level_5_progress = 3; + stopnpctimer; + setnpctimer 0; + end; + +OnNN: + message strcharinfo(0), "The last guard is down. Let's go after Luvia now!"; + end; + +} + +052-2,1,1,0 script #MysteriousVoice NPC127,{ +end; + +OnInit: + setarray $@illia_lobby_voices$, "Finally.", "I was...", "Waiting...", "For you!"; + end; + +OnCommandStart: + $@illia_lobby_voices_index = 0; + initnpctimer; + end; + +OnTimer2000: + if ($@illia_level_5_progress != 1) + end; + npcwarp rand(40,52), rand(42,48), "?"; + donpcevent "?::OnCommandTalk"; + end; + +OnTimer3000: + if ($@illia_level_5_progress != 1) + end; + npcwarp 1, 1, "?"; + $@illia_lobby_voices_index = $@illia_lobby_voices_index + 1; + // FIXME Uncomment next line, comment the next next, when getarraysize is repaired. + //if ($@illia_lobby_voices_index < getarraysize($@illia_lobby_voices$)) goto L_Continue; + if ($@illia_lobby_voices_index < 4) + goto L_Continue; + // End the process + stopnpctimer; + setnpctimer 0; + $@illia_lobby_voices_index = 0; + $@illia_level_5_progress = 2; + donpcevent "#LuviaShadow::OnCommandInvoke"; + end; + +L_Continue: + setnpctimer 0; + end; + +} + +052-2,1,1,0 script ? NPC127,{ +end; + +OnCommandTalk: + npctalk strnpcinfo(0), $@illia_lobby_voices$[$@illia_lobby_voices_index]; + end; + +} + +052-2,1,1,0 script Luvia? NPC371,2,2,{ + if ($@illia_level_5_progress != 3) end; + if (isin("052-2", 47,46, 51,49)) goto L_HandleTalk; + // Notify too far + mes "You see a strange and frightening, yet beautiful woman."; + if (strcharinfo(0) == $@iLLIA_HERO$) + mes "Maybe she knows something about this place."; + close; + +L_HandleTalk: + if (strcharinfo(0) == $@iLLIA_HERO$) + goto L_TalkToHero; + goto L_TalkToHelper; + +L_TalkToHelper: + mes "She gives you a quick look then gives her attention to " + $@iLLIA_HERO$ + "."; + close; + +L_TalkToHero: + mes "Are you Luvia? Your sister Valia sent me to save you! Where is Ismuth?"; + next; + $@illia_level_5_progress = 4; + initnpctimer; + close; + +OnTimer1500: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "Yes " + $@iLLIA_HERO$ + ", I am Luvia."; + end; + +OnTimer4500: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "How nice of all of you to have come to save me!"; + end; + +OnTimer7500: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "But I fear..."; + end; + +OnTimer10500: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "... that you are mistaken about who has to be saved!"; + end; + +OnTimer13500: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "Don't make these faces..."; + end; + +OnTimer16500: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "Valia is just helping me by sending new soldiers for my personal army!"; + end; + +OnTimer21500: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "So, if I may... Let's see what you are made of!"; + end; + +OnTimer24500: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "Demonotis!"; + misceffect FX_EVIL_SUMMON; + callsub S_GetHeroRect; + areamonster "052-2", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1101, 20 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::OnDSDeath"; + callsub S_ClearHeroRect; + end; + +OnTimer44000: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "Demonotis!"; + misceffect FX_EVIL_SUMMON; + callsub S_GetHeroRect; + areamonster "052-2", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1101, 28 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::OnDSDeath"; + callsub S_ClearHeroRect; + end; + +OnTimer77000: + if ($@illia_level_5_progress != 4) + end; + npctalk strnpcinfo(0), "Demonotis!"; + misceffect FX_EVIL_SUMMON; + callsub S_GetHeroRect; + areamonster "052-2", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1101, 42 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::OnDSDeath"; + callsub S_ClearHeroRect; + // That was the last spawn: reset the timer to start the CheckInvoke loop. + $@illia_level_5_progress = 5; + setnpctimer 0; + end; + +OnTimer6500: + if ($@illia_level_5_progress != 6) + end; + npctalk strnpcinfo(0), "Okay. You have some skill."; + end; + +OnTimer10000: + if ($@illia_level_5_progress != 6) + end; + npctalk strnpcinfo(0), "But that was only the beginning!"; + end; + +OnTimer13000: + if ($@illia_level_5_progress != 6) + end; + npctalk strnpcinfo(0), "I'll leave you in the good hands of your predecessors. Farewell!"; + end; + +OnTimer18500: + if ($@illia_level_5_progress != 6) + end; + npctalk strnpcinfo(0), "Demonotis Major!"; + misceffect FX_EVIL_SUMMON; + misceffect FX_MAGIC_DARK_EXPLOSION; + callsub S_GetHeroRect; + areamonster "052-2", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1103, 8 + (16 - 480/(30+$Illia_Luvia_Harvest))/3, "Luvia?::OnWGDeath"; + callsub S_ClearHeroRect; + end; + +OnTimer20000: + if ($@illia_level_5_progress != 6) + end; + $@illia_level_5_progress = 7; + donpcevent "#LuviaShadow::OnCommandEscape"; + setnpctimer 0; + end; + +OnTimer2000: + if ($@illia_progress != 5) + goto L_Clear; + if ($@illia_level_5_progress != 5 && $@illia_level_5_progress != 7) + end; + setnpctimer 0; + // Mock players randomly (more or less once every 40 secs) and if still enough mobs running after them + if ($@illia_level_5_progress == 5 && rand(20) == 0 && (mobcount("052-2", "Luvia?::OnDSDeath") > 21)) + npctalk strnpcinfo(0), "Ahaha! Run... Run!"; + if ($@illia_level_5_progress == 5 && (mobcount("052-2", "Luvia?::OnDSDeath") <= 0)) + goto L_AllWavesClear; + if ($@illia_level_5_progress == 7 && (mobcount("052-2", "Luvia?::OnWGDeath") <= 0)) + goto L_AllWavesClear; + end; + +L_Clear: + stopnpctimer; + setnpctimer 0; + killmonster "052-2", "Luvia?::OnDSDeath"; + killmonster "052-2", "Luvia?::OnWGDeath"; + end; + +L_AllWavesClear: + $@illia_level_5_progress = $@illia_level_5_progress + 1; + stopnpctimer; + setnpctimer 0; + if ($@illia_level_5_progress == 6) + startnpctimer; + if ($@illia_level_5_progress == 8) + goto L_ChaseLuvia; + end; + +L_ChaseLuvia: + $@illia_progress = 6; + callfunc "UpdateIlliaProgress"; + $@illia_max_time = $@illia_max_time + 360; + areatimer 0, "052-2", 29, 28, 58, 53, 2000, "#LuviaShadow::OnNN"; + end; + +S_GetHeroRect: + if (!(attachrid($@iLLIA_HERO_ID))) + goto L_Clear; + if(!(isin("052-2", 30, 31, 57, 53))) + goto L_Clear; + + $@illia_lobby_x = getx(); + $@illia_lobby_y = gety(); + + $@illia_lobby_x1 = $@illia_lobby_x - 12; + $@illia_lobby_y1 = $@illia_lobby_y - 8; + $@illia_lobby_x2 = $@illia_lobby_x + 12; + $@illia_lobby_y2 = $@illia_lobby_y + 8; + + if ($@illia_lobby_x1 < 30) + $@illia_lobby_x1 = 30; + if ($@illia_lobby_y1 < 19) + $@illia_lobby_y1 = 19; + if ($@illia_lobby_x2 > 57) + $@illia_lobby_x2 = 57; + if ($@illia_lobby_y2 > 42) + $@illia_lobby_y2 = 42; + + detachrid; + return; + +S_ClearHeroRect: + $@illia_lobby_x1 = 30; + $@illia_lobby_y1 = 19; + $@illia_lobby_x2 = 57; + $@illia_lobby_y2 = 42; + return; + +OnDSDeath: + end; + +OnWGDeath: + end; + +} |