summaryrefslogtreecommitdiff
path: root/world/map/npc/051-1
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/051-1')
-rw-r--r--world/map/npc/051-1/_import.txt6
-rw-r--r--world/map/npc/051-1/desert.txt140
-rw-r--r--world/map/npc/051-1/desertmonsters.txt150
-rw-r--r--world/map/npc/051-1/forest.txt85
-rw-r--r--world/map/npc/051-1/forestmonsters.txt21
-rw-r--r--world/map/npc/051-1/janitor.txt25
-rw-r--r--world/map/npc/051-1/mapflags.txt1
7 files changed, 428 insertions, 0 deletions
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;