From 32cbb82b32d4ccbc3b5090ca517ed74feb5c9b5f Mon Sep 17 00:00:00 2001 From: Vincent Petithory Date: Mon, 24 Sep 2012 21:11:33 +0200 Subject: Add Illia quest scripts. Update submodule pointer. --- world/map/npc/051-1/_import.txt | 6 ++ world/map/npc/051-1/desert.txt | 140 ++++++++++++++++++++++++++++++ world/map/npc/051-1/desertmonsters.txt | 150 +++++++++++++++++++++++++++++++++ world/map/npc/051-1/forest.txt | 85 +++++++++++++++++++ world/map/npc/051-1/forestmonsters.txt | 21 +++++ world/map/npc/051-1/janitor.txt | 25 ++++++ world/map/npc/051-1/mapflags.txt | 1 + 7 files changed, 428 insertions(+) create mode 100644 world/map/npc/051-1/desert.txt create mode 100644 world/map/npc/051-1/desertmonsters.txt create mode 100644 world/map/npc/051-1/forest.txt create mode 100644 world/map/npc/051-1/forestmonsters.txt create mode 100644 world/map/npc/051-1/janitor.txt create mode 100644 world/map/npc/051-1/mapflags.txt (limited to 'world/map/npc/051-1') diff --git a/world/map/npc/051-1/_import.txt b/world/map/npc/051-1/_import.txt index 5c7a5118..85c3d272 100644 --- a/world/map/npc/051-1/_import.txt +++ b/world/map/npc/051-1/_import.txt @@ -3,3 +3,9 @@ map: 051-1.gat npc: npc/051-1/_mobs.txt npc: npc/051-1/_warps.txt +npc: npc/051-1/desert.txt +npc: npc/051-1/desertmonsters.txt +npc: npc/051-1/forest.txt +npc: npc/051-1/forestmonsters.txt +npc: npc/051-1/janitor.txt +npc: npc/051-1/mapflags.txt diff --git a/world/map/npc/051-1/desert.txt b/world/map/npc/051-1/desert.txt new file mode 100644 index 00000000..ba163347 --- /dev/null +++ b/world/map/npc/051-1/desert.txt @@ -0,0 +1,140 @@ +//----------------------------------------------------------------------------- +// Souless Desert +// $@illia_progress = 3 +// +// Level progress: +// 0: Did not start the task yet +// 1: Players are instructed to collect souls +// 2: Players collected enough souls and gave the souls to the waterfall +//----------------------------------------------------------------------------- + +051-1.gat,142,39,0|script|Bones|367,{ + mes "You find a ruined paper next to these bones."; + mes "It says..."; + next; + mes "\"This waterfall is cursed... it feeds on living souls... I could not get past throught it.\""; + mes "\"God, they appeared from nowhere...\""; + mes "\"...\""; + next; + mes "The rest isn't legible."; + close; + +} + +051-1.gat,170,24,0|script|Cursed Waterfall|127,{ + set $@illia_num_sealed_souls, 7; + set @step, 3; + if ($@illia_progress < @step) goto L_ShouldNotBeHere; + if ($@illia_level_3_progress == 0 && strcharinfo(0) == $@ILLIA_HERO$) goto L_GiveTask; + if ($@illia_level_3_progress == 0 && strcharinfo(0) != $@ILLIA_HERO$) goto L_HintToHelpers; + if ($@illia_level_3_progress == 1) goto L_GiveSouls; + mes "Jump in the waterfall?"; + menu + "Yes", L_Warp, + "No", -; + close; + +OnTimer1000: + npctalk "Youuuuuuu... Bring me souls... " + $@illia_num_sealed_souls + " fresh souls... Nooooow. And you shall paaass."; + end; + +OnTimer4750: + mapannounce "051-1.gat", "You hear a loud scream coming from the wind... Something terrifying raised out there.", 0; + end; + +OnTimer6500: + npctalk "Nooooo... Do not let these things take them from youuuuuu!"; + stopnpctimer; + setnpctimer 0; + end; + +L_ShouldNotBeHere: + percentheal -100, 0; + end; + +L_HintToHelpers: + mes "[Cursed Waterfall]"; + mes "\"Who are you?... Bring " + $@ILLIA_HERO$ + " to me!\""; + close; + +L_GiveTask: + set $@illia_level_3_progress, 1; + mes "[Cursed Waterfall]"; + mes "\"Yooouuuuuu...\""; + next; + + mes "You look around and see this ghostly voice comes from the waterfall."; + next; + + // This message will be in the timed messages, + // but display it here anyway to be sure the hero sees it. + mes "\"Youuuuuuu... Bring me souls... " + $@illia_num_sealed_souls + " fresh souls... Nooooow.\""; + mes "\"And you shall paaass.\""; + + // Reset the soul eaters counters. + set $@SoulEaters0_count, 0; + set $@SoulEaters1_count, 0; + set $@SoulEaters2_count, 0; + set $@SoulEaters3_count, 0; + set $@SoulEaters4_count, 0; + // Spawn 7 additional soul snakes in the north building, as a bait. + areamonster "051-1.gat", 125, 14, 143, 18, "", 1096, 7, "IlliaDMobs051-1::On1096"; + // Same with 5, in the island + areamonster "051-1.gat", 138, 34, 145, 41, "", 1096, 5, "IlliaDMobs051-1::On1096"; + // Start timed messages + initnpctimer; + close; + +L_GiveSouls: + if (strcharinfo(0) != $@ILLIA_HERO$) + goto L_GiveSoulsToHero; + mes "[Cursed Waterfall]"; + mes "\"Give me the souuuuuuls... Noooooooow!!\""; + menu + "Please, have a look at these.", L_CheckSouls, + "Sorry, I don't have any.", -; + close; + +L_GiveSoulsToHero: + mes "[Cursed Waterfall]"; + mes "\"Who are you?.... I want the souuuuuuls from " + $@ILLIA_HERO$ + "!\""; + close; + +L_CheckSouls: + if (countitem ("SealedSoul") < $@illia_num_sealed_souls) + goto L_NotEnough; + delitem "SealedSoul", $@illia_num_sealed_souls; + set $@illia_level_3_progress, 2; + set $@illia_progress, 4; + set $@illia_max_time, $@illia_max_time + 1200; + + // Clean all spawned monsters + killmonster "051-1.gat", "IlliaDMobs051-1::On1096"; + killmonster "051-1.gat", "#SoulEaters0::OnSoulEaterDeath"; + killmonster "051-1.gat", "#SoulEaters1::OnSoulEaterDeath"; + killmonster "051-1.gat", "#SoulEaters2::OnSoulEaterDeath"; + killmonster "051-1.gat", "#SoulEaters3::OnSoulEaterDeath"; + killmonster "051-1.gat", "#SoulEaters4::OnSoulEaterDeath"; + + + mes "\"Goooood... Tasty souuuuuls...\""; + mes "You shall pass now... before I change my mind...\""; + next; + mes "A blinding light appears from inside the waterfall."; + + // Display an effect to show the waterfall opens itself / kills remaining monsters + misceffect FX_MEDIUM_BLINDINGLIGHT; + close; + +L_NotEnough: + mes "[Cursed Waterfall]"; + mes "\"Moooooooooore... Give me more...\""; + close; + +L_Warp: + warp "052-1.gat", 23, 52; + // Count the player who reached the island. + set $@illia_players_in_luvia_territory, $@illia_players_in_luvia_territory + 1; + close; + +} diff --git a/world/map/npc/051-1/desertmonsters.txt b/world/map/npc/051-1/desertmonsters.txt new file mode 100644 index 00000000..af33fefd --- /dev/null +++ b/world/map/npc/051-1/desertmonsters.txt @@ -0,0 +1,150 @@ +051-1.gat,134,36,67,49|monster|Soul Snake|1096,12,100000,30000,IlliaDMobs051-1::On1096 + +// The soul snakes release a Sealed Soul at random, once the soul collecting is started +051-1.gat,0,0,0|script|IlliaDMobs051-1|-1,{ + +On1096: + if (rand(4) == 0 && $@illia_progress == 3 && $@illia_level_3_progress == 1) + getitem "SealedSoul", 1; + set @mobID, 1010; + callfunc "MobPoints"; + end; + +} + +// Soul eater spawns. They will eat a Sealed Soul when killed, and when the soul collecting is started. + +// Spawn in the island +051-1.gat,142,38,0|script|#SoulEaters0Trigger|32767,3,3,{ + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if ($@SoulEaters0_count > 0) + end; + donpcevent "#SoulEaters0::OnSpawn"; + end; +} + +051-1.gat,142,38,0|script|#SoulEaters0|32767,{ +OnSpawn: + set $@SoulEaters0_count, 5; + areamonster "051-1.gat", 139, 34, 145, 41, "", 1097, $@SoulEaters0_count, "#SoulEaters0::OnSoulEaterDeath"; + end; + +OnSoulEaterDeath: + set $@SoulEaters0_count, $@SoulEaters0_count - 1; + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if (countitem("SealedSoul") == 0) + end; + delitem "SealedSoul", countitem("SealedSoul"); + message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying."; + end; +} + +// Spawn inside the north building +051-1.gat,134,16,0|script|#SoulEaters1Trigger|32767,9,2,{ + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if ($@SoulEaters1_count > 0) + end; + donpcevent "#SoulEaters1::OnSpawn"; + end; +} + +051-1.gat,134,16,0|script|#SoulEaters1|32767,{ +OnSpawn: + set $@SoulEaters1_count, 7; + areamonster "051-1.gat", 125, 14, 143, 18, "", 1097, $@SoulEaters1_count, "#SoulEaters1::OnSoulEaterDeath"; + end; + +OnSoulEaterDeath: + set $@SoulEaters1_count, $@SoulEaters1_count - 1; + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if (countitem("SealedSoul") == 0) + end; + delitem "SealedSoul", countitem("SealedSoul"); + message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying."; + end; +} + +// Spawn in the south grass area +051-1.gat,137,55,0|script|#SoulEaters2Trigger|32767,5,4,{ + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if ($@SoulEaters2_count > 0) + end; + donpcevent "#SoulEaters2::OnSpawn"; + end; +} + +051-1.gat,137,55,0|script|#SoulEaters2|32767,{ +OnSpawn: + set $@SoulEaters2_count, 4; + areamonster "051-1.gat", 134, 54, 139, 58, "", 1097, $@SoulEaters2_count, "#SoulEaters2::OnSoulEaterDeath"; + end; + +OnSoulEaterDeath: + set $@SoulEaters2_count, $@SoulEaters2_count - 1; + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if (countitem("SealedSoul") == 0) + end; + delitem "SealedSoul", countitem("SealedSoul"); + message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying."; + end; +} + +// Spawn near the eastern cliff +051-1.gat,155,35,0|script|#SoulEaters3Trigger|32767,4,7,{ + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if ($@SoulEaters3_count > 0) + end; + donpcevent "#SoulEaters3::OnSpawn"; + end; +} + +051-1.gat,155,35,0|script|#SoulEaters3|32767,{ +OnSpawn: + set $@SoulEaters3_count, 4; + areamonster "051-1.gat", 151, 29, 160, 45, "", 1097, $@SoulEaters3_count, "#SoulEaters3::OnSoulEaterDeath"; + end; + +OnSoulEaterDeath: + set $@SoulEaters3_count, $@SoulEaters3_count - 1; + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if (countitem("SealedSoul") == 0) + end; + delitem "SealedSoul", countitem("SealedSoul"); + message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying."; + end; +} + +// Spawn near the western cliff +051-1.gat,120,38,0|script|#SoulEaters4Trigger|32767,6,9,{ + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if ($@SoulEaters4_count > 0) + end; + donpcevent "#SoulEaters4::OnSpawn"; + end; +} + +051-1.gat,120,38,0|script|#SoulEaters4|32767,{ +OnSpawn: + set $@SoulEaters4_count, 4; + areamonster "051-1.gat", 116, 29, 127, 50, "", 1097, $@SoulEaters4_count, "#SoulEaters4::OnSoulEaterDeath"; + end; + +OnSoulEaterDeath: + set $@SoulEaters4_count, $@SoulEaters4_count - 1; + if ($@illia_progress != 3 || $@illia_level_3_progress != 1) + end; + if (countitem("SealedSoul") == 0) + end; + delitem "SealedSoul", countitem("SealedSoul"); + message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying."; + end; +} diff --git a/world/map/npc/051-1/forest.txt b/world/map/npc/051-1/forest.txt new file mode 100644 index 00000000..e21940ce --- /dev/null +++ b/world/map/npc/051-1/forest.txt @@ -0,0 +1,85 @@ +//----------------------------------------------------------------------------- +// Forest +// $@illia_progress = 1 +// +// Level progress: +// 0: Did not start the task yet +// 1: Players are searching for the rock. +// 2: Players found the rock +// 3: Players unlocked the door +//----------------------------------------------------------------------------- + +051-1.gat,64,46,0|script|Strange Stone|127,{ + set @step, 1; + if ($@illia_progress < @step) goto L_ShouldNotBeHere; + if (isin("051-1.gat", 65,45, 67,48) == 0) end; + if (strcharinfo(0) != $@ILLIA_HERO$) goto L_HandleHelper; + if ($@illia_level_1_progress == 0) goto L_GiveTask; + if ($@illia_level_1_progress == 1) goto L_TaskNotComplete; + if ($@illia_level_1_progress == 2) goto L_TaskComplete; + if ($@illia_level_1_progress == 3) goto L_NothingElseToDo; + end; + +L_ShouldNotBeHere: + percentheal -100, 0; + end; + +L_HandleHelper: + mes "This stuff sounds complicated."; + mes "I should ask " + $@ILLIA_HERO$ + " what to do."; + close; + +L_NothingElseToDo: + mes "The door is opened... What am I waiting for?"; + close; + +L_GiveTask: + mes "You look at the rocks with attention."; + mes "You are smart enough to notice that there seems to be a missing rock that could activate a mechanism."; + next; + menu + "This rock must not be far... Let's look around.", -; + set $@illia_level_1_progress, 1; + set $@illia_level_1_num_deaths, 0; + close; + +L_TaskNotComplete: + mes "It's not working. I have to find the rock."; + mes "With all the slimes around here, maybe one absorbed it."; + close; + +L_TaskComplete: + set $@illia_level_1_progress, 3; + set $@illia_progress, 2; + set $@illia_max_time, $@illia_max_time + 900; + mes "You insert the rock in the mechanism, then hear an unlock noise. The rocks move by themselves in a rumbling noise, making an opening in the wall."; + close; + +} + +// Warp from the forest, to the cave +051-1.gat,66,44,0|script|#ToCave|32767,1,1,{ + set @step, 1; + if ($@illia_progress < @step) goto L_ShouldNotBeHere; + if ($@illia_level_1_progress < 2) goto L_Blocked; + if ($@illia_level_1_progress == 2 && strcharinfo(0) == $@ILLIA_HERO$) goto L_SeeStone; + if ($@illia_level_1_progress == 3) goto L_Warp; + end; + +L_ShouldNotBeHere: + percentheal -100, 0; + end; + +L_Blocked: + message strcharinfo(0), "There should be a way to open this... but not with my bare hands."; + end; + +L_SeeStone: + message strcharinfo(0), "I should take a look at the stone."; + end; + +L_Warp: + warp "051-3.gat", 24, 60; + end; +} + diff --git a/world/map/npc/051-1/forestmonsters.txt b/world/map/npc/051-1/forestmonsters.txt new file mode 100644 index 00000000..28d1ac50 --- /dev/null +++ b/world/map/npc/051-1/forestmonsters.txt @@ -0,0 +1,21 @@ +051-1.gat,52,32,10,8|monster|Green Slime|1005,20,100000,30000,IlliaFMobs051-1::On1005 + +051-1.gat,0,0,0|script|IlliaFMobs051-1|-1,{ + +On1005: + if ($@illia_level_1_progress == 1) + goto L_RockFinding; + end; + +L_RockFinding: + set $@illia_level_1_num_deaths, $@illia_level_1_num_deaths + 1; + set @p, 50 - $@illia_level_1_num_deaths; + if (@p < 0) + set @p, 0; + if ($@illia_progress != 1 || $@ILLIA_STATUS != 4 || rand(@p) != 0) + end; + message strcharinfo(0), "This slime released a rock with a weird shape, that seems to fit in the mechanism!"; + set $@illia_level_1_progress, 2; + end; + +} diff --git a/world/map/npc/051-1/janitor.txt b/world/map/npc/051-1/janitor.txt new file mode 100644 index 00000000..333bb791 --- /dev/null +++ b/world/map/npc/051-1/janitor.txt @@ -0,0 +1,25 @@ +// Forest janitor +051-1.gat,1,1,0|script|#IlliaJanitor1|127,{ +end; + +OnCommandClean: + // Nothing to do here. + end; + +} + +// Desert janitor +051-1.gat,1,1,0|script|#IlliaJanitor3|127,{ +end; + +OnCommandClean: + killmonster "051-1.gat", "IlliaDMobs051-1::On1096"; + // Kill the soul eaters that were spawned + killmonster "051-1.gat", "#SoulEaters0::OnSoulEaterDeath"; + killmonster "051-1.gat", "#SoulEaters1::OnSoulEaterDeath"; + killmonster "051-1.gat", "#SoulEaters2::OnSoulEaterDeath"; + killmonster "051-1.gat", "#SoulEaters3::OnSoulEaterDeath"; + killmonster "051-1.gat", "#SoulEaters4::OnSoulEaterDeath"; + end; + +} diff --git a/world/map/npc/051-1/mapflags.txt b/world/map/npc/051-1/mapflags.txt new file mode 100644 index 00000000..83da4b77 --- /dev/null +++ b/world/map/npc/051-1/mapflags.txt @@ -0,0 +1 @@ +051-1.gat mapflag nosave 007-1,86,76; -- cgit v1.2.3-70-g09d2