summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2024-05-19 01:33:39 -0300
committerJesusaves <cpntb1@ymail.com>2024-05-19 01:33:39 -0300
commit2232c540d56dfd980bc32ddca308bce352a034b0 (patch)
treef34cc52591357a509e8819bc3afa5e06a8a01927
parentbb475b2fc2841a78646f815ffb14b6cd84ec4b91 (diff)
downloadserverdata-2232c540d56dfd980bc32ddca308bce352a034b0.tar.gz
serverdata-2232c540d56dfd980bc32ddca308bce352a034b0.tar.bz2
serverdata-2232c540d56dfd980bc32ddca308bce352a034b0.tar.xz
serverdata-2232c540d56dfd980bc32ddca308bce352a034b0.zip
The lore for the final stage of the main quest is now done.
Just some minor gameplay is now missing.
-rw-r--r--db/constants.conf5
-rw-r--r--npc/025-4/main.txt248
2 files changed, 250 insertions, 3 deletions
diff --git a/db/constants.conf b/db/constants.conf
index 37241eb1c..ddf9de56a 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -2263,6 +2263,11 @@ constants_db: {
FRAG_HASKEY: 1
FRAG_NEEDSKEY: 2
FRAG_EXPLOREDCAMP: 4
+ FRAG_CAMP_01: 8
+ FRAG_CAMP_02: 16
+ FRAG_CAMP_03: 32
+ FRAG_LETTER: 64
+
comment__: "Event Feat Constants"
EVFEAT_EASTER: 1
diff --git a/npc/025-4/main.txt b/npc/025-4/main.txt
index 49ac9a48c..3b6e79dc4 100644
--- a/npc/025-4/main.txt
+++ b/npc/025-4/main.txt
@@ -26,7 +26,7 @@ OnTouch:
mesc l("You can find harpoons, a telescope, an empty weapon rack, and of course, the central light. The hut definitely wasn't assaulted by monsters, but it's hard to say what happened to its occupants.");
if (!(.@q & FRAG_HASKEY)) {
next;
- mesc l("You see several keys hanging on the wall, along small plates, presumably describing what they're for.");
+ mesc l("You see several keys hanging on the wall, along small plates with numbers on them, presumably describing what they're for.");
next;
if (!(.@q & FRAG_NEEDSKEY)) {
mesc l("You don't need any of them, so you leave them alone.");
@@ -61,6 +61,249 @@ OnTouch:
end;
}
+// The huts doors use 2 tiles, so all NPCs have a duplicate
+025-4,95,52,0 script #MQFinHutB NPC_NO_SPRITE,{
+ end;
+
+OnTouch:
+ .@q=getq(General_Narrator);
+ .@q2=getq2(General_Narrator);
+ // Cheater Detected
+ if (.@q < 22) {
+ warp "Save", 0, 0;
+ die();
+ end;
+ }
+ if (.@q != 22) end;
+ mes l("You cannot enter this hut, but you can peek inside.");
+ next;
+ mes l("You can see a lot of weapons inside, mostly bows or crossbows. Likely their armory.");
+ next;
+ mes l("The distinct lack of metal weapons such as swords make you nervous, and makes impossible to say for how long it was abandoned.");
+ if (!(.@q2 & FRAG_CAMP_01))
+ setq2 General_Narrator, .@q | FRAG_CAMP_01;
+ close;
+
+OnInit:
+ .distance=3;
+ end;
+}
+025-4,96,52,0 duplicate(#MQFinHutB) #MQFinHutB2 NPC_NO_SPRITE
+
+// The huts doors use 2 tiles, so all NPCs have a duplicate
+025-4,90,59,0 script #MQFinHutC NPC_NO_SPRITE,{
+ end;
+
+OnTouch:
+ .@q=getq(General_Narrator);
+ .@q2=getq2(General_Narrator);
+ // Cheater Detected
+ if (.@q < 22) {
+ warp "Save", 0, 0;
+ die();
+ end;
+ }
+ if (.@q != 22) end;
+ mes l("You cannot enter this hut, but you can peek inside.");
+ next;
+ mes l("You can see fishing poles, maps, and a desk in the center. It seems to be their command center.");
+ next;
+ mes l("The desk, however, is empty. There's no point trying to enter here.");
+ if (!(.@q2 & FRAG_CAMP_02))
+ setq2 General_Narrator, .@q | FRAG_CAMP_02;
+ close;
+
+OnInit:
+ .distance=3;
+ end;
+}
+025-4,91,59,0 duplicate(#MQFinHutC) #MQFinHutC2 NPC_NO_SPRITE
+
+// The huts doors use 2 tiles, so all NPCs have a duplicate
+025-4,80,60,0 script #MQFinHutD NPC_NO_SPRITE,{
+ end;
+
+OnTouch:
+ .@q=getq(General_Narrator);
+ .@q2=getq2(General_Narrator);
+ // Cheater Detected
+ if (.@q < 22) {
+ warp "Save", 0, 0;
+ die();
+ end;
+ }
+ if (.@q != 22) end;
+ mes l("You cannot enter this hut, but you can peek inside.");
+ next;
+ mes l("You can see several navigation apparatus, and some sleeping sacks.");
+ next;
+ mes l("There's nothing remarkable or which could help you.");
+ if (!(.@q2 & FRAG_CAMP_03))
+ setq2 General_Narrator, .@q | FRAG_CAMP_03;
+ close;
+
+OnInit:
+ .distance=3;
+ end;
+}
+025-4,79,60,0 duplicate(#MQFinHutD) #MQFinHutD2 NPC_NO_SPRITE
+
+// Their central dorm
+025-4,85,58,0 script #MQFinHutC NPC_HIDDEN,1,0,{
+ end;
+
+OnTouch:
+ .@q=getq(General_Narrator);
+ .@q2=getq2(General_Narrator);
+ // Cheater Detected
+ if (.@q < 22) {
+ warp "Save", 0, 0;
+ die();
+ end;
+ }
+ if (.@q != 22) end;
+ if (!(.@q2 & FRAG_CAMP_01) ||
+ !(.@q2 & FRAG_CAMP_02) ||
+ !(.@q2 & FRAG_CAMP_03)) {
+ dispbottom l("There's a terrible smell inside. You should explore the other huts before braving inside this one.");
+ end;
+ }
+ mesc l("This hut seems to be abandoned. Do you want to explore it?");
+ if (askyesno() == ASK_YES) {
+ mesc l("The source of the smell is quickly noticed - several dead bodies lie on the beds, which compose the presumably living quarters of this encampment.");
+ next;
+ mesc l("The smell, however, means the bodies are recent. While it makes no sense for the bodies to exist, they couldn't have been dead for longer than a week, or a couple of them at worst case.");
+ next;
+ mesc l("You're not entirely sure what to make out of this. There's nothing of importance in the room and the stench is awful, so you leave quickly.");
+ next;
+ closeclientdialog;
+ if (!(.@q & FRAG_EXPLOREDCAMP))
+ setq2 General_Narrator, .@q | FRAG_EXPLOREDCAMP;
+ slide 85, 59;
+ }
+ close;
+}
+
+// Your parent's hut
+025-4,74,21,0 script #MQFinPHut NPC_HIDDEN,1,0,{
+ end;
+
+OnTouch:
+ .@q=getq(General_Narrator);
+ .@q2=getq2(General_Narrator);
+ // Cheater Detected
+ if (.@q < 22 || !(.@q2 & FRAG_EXPLOREDCAMP)) {
+ warp "Save", 0, 0;
+ die();
+ end;
+ }
+ if (.@q != 22) end;
+ mesc l("This hut is clearly different from the others. It has a bed, a small desk, a place where a weapon should have been, and a wooden door leading to the other side.");
+ next;
+ mesc l("...A sealed, magically reinforced door, with magical wards you've never seen before, which you can only assume to keep monsters away.");
+ next;
+ mesc l("With exploring the northern part as a non-option, you look at a small chest over the desk. It's locked, and there's a name plate on it.");
+ next;
+ // Lets make your name code
+ mesc l("The name plate reads: \"%s - #%d\". Now, that's not ominous at all.", strcharinfo(0), #REG_DATE));
+ next;
+ if (!(.@q & FRAG_HASKEY)) {
+ mesc l("If you had a key, you could open this chest.");
+ setq2 General_Narrator, .@q | FRAG_NEEDSKEY;
+ close;
+ }
+
+ if (getq(LoFQuest_EPISODE) < 17) {
+ mesc l("You try to open the chest with the small key you took earlier, but it seems to be magically warded.");
+ next;
+ mesc l("Words begin to form on it, a message for you.");
+ next;
+ mesn l("Elli, Supreme Guardian of the Talpan Races and an Original");
+ mesq l("Meet me in the past, and you shall learn the future. For the present has nothing for you yet.");
+ next;
+ mesc l("It seems you need to travel back in time and find this Elli before you manage to open the chest.");
+ close;
+ }
+ // NOW we use Story Mode
+ setpcblock(PCBLOCK_HARD, true);
+ mesc l("STORY MODE ENABLED. Monsters won't attack you, so you can read without worries."), 1;
+ mes "";
+ mesc l("Carefully you open the chest, with the small key you took earlier.");
+ next;
+
+ mesc l("The chest has only a small piece of paper, a letter. You carefully unfold it, and start reading it.");
+ next;
+
+ mesn l("Your father?");
+ mesq l("%s, if you're reading this, then as Ms. Elli predicted, you survived the seawreck and returned to our encampment. You might notice some things changed in these short weeks we don't see each other.", strcharinfo(0));
+ next;
+ mesn l("Your father?");
+ mesq l("Your mother is still missing, but if the sea didn't claim her then she'll not come back here, and will find my message to her at the designated point.");
+ next;
+ mesn l("Your father?");
+ mesq l("As my mother suspected, Benjamin Yorn betrayed us. Or rather, the Moubootaur took control over him. But you never believed that, so I have no choice but to leave this message in our old residence, risky as that may, in case the sea didn't claim your soul."); // Benjamin Yorn = B. Jorn = Bjørn :3
+ next;
+ mesn l("Your father?");
+ mesq l("As you surely remember, there are 8 Mana Fragments, which symbolize the essence of the eight places where Soul Menhirs are: Candor, Hurnscald, Halinarzo, Lilit, Nivalis, Tulimshar, Land of Fire and Frostia. And that the Monster King collected all of them %s ago.", FuzzyTime($NIVALIS_LIBDATE));
+ next;
+ mesn l("Your father?");
+ mesq l("And as you certainly know: the War between the Moubootaur and the sentient races, the Blood which was spilled, and the Inspiration it caused.");
+ next;
+ mesn l("Your father?");
+ mesq l("The Mana, the World, snarling Defiance at him. The Guard and the Heir, the four Originals assembled, the lesser Races which were born. The Later, and finally, the Seal of the Moubootaur.");
+ next;
+ mesn l("Your father?");
+ mesq l("The Fragments scattered, and the War which was to come. The fate of Terranite, the story of all. AEGIS MAGNA PROTECTIVE SCUTUM.");
+ next;
+ mesn l("Your father?");
+ mesq l("For the Mana Source and the Moubootaur haven't finished their struggle, the Supreme Guardian of the World giving form and source to all mana, and granting its protection to us mortals, by magic and the Aegis Scutum.");
+ next;
+ // AT THIS POINT, send to kill Madragoras, set FRAG_LETTER
+ // Then open the box on the upper floor where the rest the letter shall be.
+ // You need to kill the Mandragoras to climb the ladder, not to open the box
+ // To open the box you need to earn Lightbringer's acknowledgement, which
+ // you already did to find Lalica's Magic Apple.
+ /*
+ mesn l("Your father?");
+ mesq l("Everything the Moubootaur does, he does for this one moment. And everything the Mana Source does, is for the same moment. And everything Elli does, is for her own amusement. Naturally.");
+ next;
+ mesn l("Your father?");
+ mesq l("All the monsters pledge to the Moubootaur, so we knew he was involved the moment the Monster King started collecting the Fragments. As soon as the ritual is conducted in the Holy Site of Kolev, where Artis was built upon, the final moves on this dance will begin."); // Fires of Steam. Time-accurate.
+ next;
+ mesn l("Your father?");
+ mesq l("I have no doubts that once the ritual is conducted, the Moubootaur will start discarding the pieces he no longer needs, such as the expedition leader, Ben Yorn. Unfortunately, these will not revive, they shall face permanent death."); // Ben Yorn = Benjamin Yorn = B. Jorn = Bjørn :3 The Moubootaur takes the souls for himself, like the Soul Eater. Without a soul, you suffer permanent death.
+ next;
+ mesn l("Your father?");
+ mesq l("The families which brought the Soul Menhirs to the world were fated to become Terranites, a shadow of the once great Savior civilization. But in time, you may also ascend to the Savior race yourself. No victory was ever gained without sacrifice.");
+ next;
+ mesn l("Your father?");
+ mesq l("If you managed to open this box, then you've met the Mana Source itself, and was approved by it. If you read the previous letter, then you've met Elli, and was also approved by her."); // You acquired Mana Source's approval during Barbara's scene
+ next;
+ mesn l("Your father?");
+ mesq l("So come, the one whose deeds impressed even the Originals, my child, %s! Witness how I live, and witness how I die! Tell our tales to the future generations, how we fought an Original and prevailed.", strcharinfo(0));
+ next;
+ mesn l("Your father?");
+ mesq l("You were just a nobody when your ship wrecked, and if you remained as such, I would have no interest in you. Being a hero is a choice I made, and being a hero is also a choice you made, if you came this far.");
+ next;
+ mesn l("Your father?");
+ mesq l("Find where the Seal used to be. The Lightbringer, as the Mana Source's avatar, shall light the way. And if they leave the others behind, then surely the Mana Source shall abandon them. Wield its will, or follow the one whom does.");
+ next;
+ mesn l("Your father?");
+ mesq l("Once you do so, be you good or be you evil, challenge the Moubootaur and engrave your name in history, or fail the fight and face permanent death. In this box, you shall find my will to you. Use it well."); // The Final Showdown might inflict permanent death, maybe, I don't know, I'm not in charge of doing it.
+ next;
+ mesc l("You find a Sunny Crystal inside. Holding it, you can feel it - The Lightbringer, source of mana and supreme guardian of the world, blessing your journey. You can now choose a new trait. This concludes the player quest.");
+ next;
+ */
+
+ // Endtrail
+ mes "";
+ mesc l("@@ You need to wait further releases to continue this quest!", b(l("WARNING:"))), 1;
+ next;
+ setpcblock(PCBLOCK_HARD, false);
+ closeclientdialog;
+ end;
+}
+
///////////////
025-4,0,0,0 script #MQFinPlaceholder NPC_HIDDEN,{
end;
@@ -69,7 +312,7 @@ OnTouch:
.@q=getq(General_Narrator);
.@q2=getq2(General_Narrator);
// Cheater Detected
- if (.@q < 22) {
+ if (.@q < 22 || !(.@q2 & FRAG_EXPLOREDCAMP)) {
warp "Save", 0, 0;
die();
end;
@@ -80,7 +323,6 @@ OnTouch:
end;
}
-025-4,91,63,0 duplicate(#MQFinPlaceholder) #MQFinPlaceholderB NPC_HIDDEN,0,1
025-4,74,22,0 duplicate(#MQFinPlaceholder) #MQFinPlaceholderH NPC_HIDDEN,1,0
025-4,26,56,0 duplicate(#MQFinPlaceholder) #MQFinPlaceholderS NPC_HIDDEN,0,0