summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2024-05-19 13:06:38 -0300
committerJesusaves <cpntb1@ymail.com>2024-05-19 13:06:38 -0300
commitd0757c12f3179509368984266e5b16065f26c921 (patch)
tree40d02f110e0fdec903e1c7bcac77226c568a575e /npc
parent2232c540d56dfd980bc32ddca308bce352a034b0 (diff)
downloadserverdata-d0757c12f3179509368984266e5b16065f26c921.tar.gz
serverdata-d0757c12f3179509368984266e5b16065f26c921.tar.bz2
serverdata-d0757c12f3179509368984266e5b16065f26c921.tar.xz
serverdata-d0757c12f3179509368984266e5b16065f26c921.zip
Add a bunch of code, it will even appear to be "finishable" until you test it.
No rewards whatsoever yet.
Diffstat (limited to 'npc')
-rw-r--r--npc/025-4/_mobs.txt2
-rw-r--r--npc/025-4/main.txt148
-rw-r--r--npc/functions/clientversion.txt3
3 files changed, 105 insertions, 48 deletions
diff --git a/npc/025-4/_mobs.txt b/npc/025-4/_mobs.txt
index 56291b237..bc6332a3a 100644
--- a/npc/025-4/_mobs.txt
+++ b/npc/025-4/_mobs.txt
@@ -3,7 +3,7 @@
025-4,107,37,25,17 monster Terranite Protector 1212,7,60000,30000
025-4,64,32,17,12 monster Black Skull Slime 1408,4,60000,30000
025-4,47,56,27,10 monster Pinkie Suseran 1419,5,60000,30000
-025-4,32,74,12,8 monster Mandragora 1423,3,60000,30000
+025-4,32,74,12,8 monster Mandragora 1423,3,60000,30000,#MQFinPHut::OnKill
025-4,66,56,17,30 monster Whirly Bird 1232,4,90000,60000
025-4,93,56,17,10 monster Gobo Bear 1214,4,60000,20000
025-4,41,90,21,6 monster Green Skull Slime 1405,4,60000,30000
diff --git a/npc/025-4/main.txt b/npc/025-4/main.txt
index 3b6e79dc4..6fe161f05 100644
--- a/npc/025-4/main.txt
+++ b/npc/025-4/main.txt
@@ -10,6 +10,7 @@
OnTouch:
.@q=getq(General_Narrator);
.@q2=getq2(General_Narrator);
+ if (.@q > 22) end;
// Cheater Detected
if (.@q < 22) {
warp "Save", 0, 0;
@@ -24,15 +25,15 @@ OnTouch:
mesc l("The hut appears to be a mix between a watchhouse and a lighthouse. It likely was used to support the naval operations of the expedition.");
next;
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)) {
+ if (!(.@q2 & FRAG_HASKEY)) {
next;
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)) {
+ if (!(.@q2 & FRAG_NEEDSKEY)) {
mesc l("You don't need any of them, so you leave them alone.");
} else {
mesc l("You grab the key to open the small chest.");
- setq2 General_Narrator, .@q | FRAG_HASKEY;
+ setq2 General_Narrator, .@q2 | FRAG_HASKEY;
}
} else {
mesc l("You are currently carrying all the keys you needed here.");
@@ -63,9 +64,6 @@ OnTouch:
// 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
@@ -81,7 +79,7 @@ OnTouch:
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;
+ setq2 General_Narrator, .@q2 | FRAG_CAMP_01;
close;
OnInit:
@@ -92,9 +90,6 @@ OnInit:
// 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
@@ -110,7 +105,7 @@ OnTouch:
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;
+ setq2 General_Narrator, .@q2 | FRAG_CAMP_02;
close;
OnInit:
@@ -121,9 +116,6 @@ OnInit:
// 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
@@ -139,7 +131,7 @@ OnTouch:
next;
mes l("There's nothing remarkable or which could help you.");
if (!(.@q2 & FRAG_CAMP_03))
- setq2 General_Narrator, .@q | FRAG_CAMP_03;
+ setq2 General_Narrator, .@q2 | FRAG_CAMP_03;
close;
OnInit:
@@ -149,7 +141,7 @@ OnInit:
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,{
+025-4,85,58,0 script #MQFinLHut NPC_HIDDEN,1,0,{
end;
OnTouch:
@@ -177,8 +169,8 @@ OnTouch:
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;
+ if (!(.@q2 & FRAG_EXPLOREDCAMP))
+ setq2 General_Narrator, .@q2 | FRAG_EXPLOREDCAMP;
slide 85, 59;
}
close;
@@ -191,6 +183,7 @@ OnTouch:
OnTouch:
.@q=getq(General_Narrator);
.@q2=getq2(General_Narrator);
+ if (.@q > 22) end;
// Cheater Detected
if (.@q < 22 || !(.@q2 & FRAG_EXPLOREDCAMP)) {
warp "Save", 0, 0;
@@ -207,9 +200,9 @@ OnTouch:
// 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)) {
+ if (!(.@q2 & FRAG_HASKEY)) {
mesc l("If you had a key, you could open this chest.");
- setq2 General_Narrator, .@q | FRAG_NEEDSKEY;
+ setq2 General_Narrator, .@q2 | FRAG_NEEDSKEY;
close;
}
@@ -247,13 +240,13 @@ OnTouch:
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.");
+ mesq col(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."), 3);
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.");
+ mesq col(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."),3);
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.");
+ mesq col(l("The Fragments scattered, and the War which was to come. The fate of Terranite, the story of all. AEGIS MAGNA PROTECTIVE SCUTUM."),3);
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.");
@@ -263,7 +256,87 @@ OnTouch:
// 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.
- /*
+ if ((.@q2 & FRAG_LETTER) && .@q3 >= 5) {
+ mesn l("Your father?");
+ mesq b(l("Dispel the illusion on the stairs west of here, and find my final gift to you in the box. If the Mana Source approves of you, that is."));
+ next;
+ mesc l("You notice a simple trick; uppercase words in the Aegis Magna Protective Scutum spell which are not part of the chant: AMTMTT. Corresponding to the broken pieces on the stair, you now know how to climb it.");
+ setq2 General_Narrator, .@q2 | FRAG_LADDER;
+ } else {
+ mesn l("Your father?");
+ mesq b(l("Prove yourself by killing %d %s west of here, then come back here and read this letter again. The meaning of the words will have shifted.", 5, getmonsterlink(Mandragora)));
+ setq2 General_Narrator, .@q2 | FRAG_LETTER;
+ }
+
+ next;
+ setpcblock(PCBLOCK_HARD, false);
+ closeclientdialog;
+ end;
+
+OnKill:
+ .@q=getq(General_Narrator);
+ .@q2=getq2(General_Narrator);
+ .@q3=getq3(General_Narrator);
+ if (.@q > 22) end;
+ // Cheater Detected
+ if (.@q < 22 || !(.@q2 & FRAG_EXPLOREDCAMP)) {
+ warp "Save", 0, 0;
+ die();
+ end;
+ }
+ if (!(.@q2 & FRAG_LETTER)) end;
+ if (.@q2 & FRAG_LADDER) end;
+ if (.@q3 > 5) end;
+ setq3 General_Narrator, .@q3 + 1;
+ dispbottom l("Progress %d/%d %s", .@q3, 5, getmonstername(Mandragora));
+ end;
+}
+
+// The stairway has a different logic
+025-4,26,56,0 script #MQFinStairway NPC_HIDDEN,0,0,{
+ end;
+
+OnTouch:
+ .@q=getq(General_Narrator);
+ .@q2=getq2(General_Narrator);
+ .@q3=getq3(General_Narrator);
+ if (.@q > 22) end;
+ // Cheater Detected
+ if (.@q < 22 || !(.@q2 & FRAG_EXPLOREDCAMP)) {
+ warp "Save", 0, 0;
+ die();
+ end;
+ }
+ if (!(.@q2 & FRAG_LADDER) && .@q < 23) {
+ slide 25, 57;
+ dispbottom l("The stair is broken; we cannot go up.");
+ end;
+ }
+
+ slide 26, 51;
+ // Endtrail (short)
+ dispbottom l("@@ You need to wait further releases to continue this quest!", b(l("WARNING:"))), 1;
+ end;
+}
+
+
+
+
+// Pandorica's Box
+025-4,32,41,0 script #MQFinBox NPC_HIDDEN,{
+ .@q=getq(General_Narrator);
+ .@q2=getq2(General_Narrator);
+ .@q3=getq3(General_Narrator);
+ if (.@q >= 23) end;
+ // Cheater Detected
+ if (.@q < 22 || .@q2 != 255) {
+ warp "Save", 0, 0;
+ die();
+ end;
+ }
+ setpcblock(PCBLOCK_HARD, true);
+ mesc l("STORY MODE ENABLED. Monsters won't attack you, so you can read without worries."), 1;
+ mes "";
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;
@@ -291,9 +364,9 @@ OnTouch:
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.");
+ mesc l("You find a %s 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.", getitemlink(SunnyCrystal));
next;
- */
+ //setq General_Narrator, 23, 0, 0;
// Endtrail
mes "";
@@ -302,28 +375,9 @@ OnTouch:
setpcblock(PCBLOCK_HARD, false);
closeclientdialog;
end;
-}
-///////////////
-025-4,0,0,0 script #MQFinPlaceholder NPC_HIDDEN,{
- 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;
- // Endtrail (short)
- dispbottom l("@@ You need to wait further releases to continue this quest!", b(l("WARNING:"))), 1;
+OnInit:
+ .distance=1;
end;
}
-025-4,74,22,0 duplicate(#MQFinPlaceholder) #MQFinPlaceholderH NPC_HIDDEN,1,0
-025-4,26,56,0 duplicate(#MQFinPlaceholder) #MQFinPlaceholderS NPC_HIDDEN,0,0
-
-
diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt
index d40ee1a4b..fd7b70a53 100644
--- a/npc/functions/clientversion.txt
+++ b/npc/functions/clientversion.txt
@@ -1205,6 +1205,9 @@ function script clientupdater {
UPDATE=1716078285;
if (PETER_REPEAT >= 50 && PETER_REPEAT < 100)
getitem Cap, 1;
+ // You were in Fortress Encampment? Fix coordinates
+ if (getmap() == "025-4") {
+ slide 27, 91;
}
// TODO: Anniversary (leap years disregarded)