summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2024-05-24 18:28:43 -0300
committerJesusaves <cpntb1@ymail.com>2024-05-24 18:28:43 -0300
commit8e27154005a9e6c10ffbf97fc4ce99d6914f7076 (patch)
treec0c1177caa57782689297f003ec5a3e79ac213e8
parent0b74eeb14ace6e7368f321d85424afefee6a0eda (diff)
downloadserverdata-8e27154005a9e6c10ffbf97fc4ce99d6914f7076.tar.gz
serverdata-8e27154005a9e6c10ffbf97fc4ce99d6914f7076.tar.bz2
serverdata-8e27154005a9e6c10ffbf97fc4ce99d6914f7076.tar.xz
serverdata-8e27154005a9e6c10ffbf97fc4ce99d6914f7076.zip
Halinarzo's Arc for Anselmo Quest. Tested, at least a little bit.
-rw-r--r--npc/009-1/guards.txt5
-rw-r--r--npc/010-4-1/katze.txt55
-rw-r--r--npc/017-1/inspector.txt83
-rw-r--r--npc/config/inspector.txt43
4 files changed, 146 insertions, 40 deletions
diff --git a/npc/009-1/guards.txt b/npc/009-1/guards.txt
index ed6239958..66891c65f 100644
--- a/npc/009-1/guards.txt
+++ b/npc/009-1/guards.txt
@@ -5,6 +5,7 @@
// Protect Halinarzo
009-1,71,24,0 script Lieutenant Jacob NPC_PLAYER,{
+ inspectorQuest();
// The Monster King guild have a special menu
if (strcharinfo(2) == "Monster King") goto L_MKControl;
mesn;
@@ -159,6 +160,7 @@ function script HaliGuardHandler {
}
009-1,100,30,0 script Guard Corina NPC_GUARD2,{
+ inspectorQuest();
HaliGuardHandler();
end;
@@ -170,6 +172,7 @@ OnInit:
009-1,111,48,0 script Guard Jhon NPC_GUARD1,{
+ inspectorQuest();
HaliGuardHandler();
end;
@@ -180,6 +183,7 @@ OnInit:
}
009-1,41,56,0 script Guard Laurie NPC_GUARD2,{
+ inspectorQuest();
HaliGuardHandler();
end;
@@ -191,6 +195,7 @@ OnInit:
009-1,62,74,0 script Guard Amy NPC_GUARD2,{
+ inspectorQuest();
HaliGuardHandler();
end;
diff --git a/npc/010-4-1/katze.txt b/npc/010-4-1/katze.txt
index f750b7f7b..05012ac94 100644
--- a/npc/010-4-1/katze.txt
+++ b/npc/010-4-1/katze.txt
@@ -11,6 +11,7 @@
mesn;
mesq l("Meow.");
next;
+ if (getq(LoFQuest_Inspector) == 5) goto L_InspectorQuest;
mesn strcharinfo(0);
mesq l("What is a cat doing in the middle of the desert?");
next;
@@ -25,6 +26,44 @@
compareandsetq CaveQuest_Katze, 0, 1;
npctalk3 l("Did you knew that %s's generosity is legendary?", rand_sponsor());
close;
+
+L_InspectorQuest:
+ mesc l("You ask Katze about the recent cheese robberies in Dimond's Cove.");
+ next;
+ mesn;
+ mesq l("It was... an itch I couldn't scratch. But meow! I paid the fair price for the cheese I took.");
+ next;
+ mesn;
+ mesq l("I know %s are rare and expensive. They should have more than covered the costs for what I took.", getitemlink(GoldenApple));
+ next;
+ mesc l("You spend some time explaining to Katze about how trade works.");
+ next;
+ mesn;
+ mesq l("So you want me to sell the Apple to some vendor, and then purchase the Cheese with the money? Sure, just tell me the name of a NPC which buys %s and sells %s. But I warn you, they must be close, in either Tulimshar or Halinarzo.", getitemlink(GoldenApple), getitemlink(Cheese));
+ next;
+ input .@ans$;
+ // I won't even bother blackboxing this one
+ if (!riddlevalidation(.@ans$, "Juliet", l("Juliet"))) {
+ mesn;
+ mesq l("Don't be ridiculous and stop wasting my time.");
+ mesc l("%s scrathes you! -%s HP.", .name$, fnum(Hp/5));
+ percentheal -20, 0;
+ close;
+ }
+ mesn;
+ mesq l("Nard's nurse and shipkeeper? Yeah, I can do that, I can get a copy of his ship schedule rather easily.");
+ next;
+ inventoryplace GoldenApple, 1;
+ mesn;
+ mesq l("Well %s, you're not as incompentent as you look! Meow, here, you can have this %s, as a token of my appreciation.", strcharinfo(0), getitemlink(GoldenApple));
+ next;
+ mesn;
+ mesq l("Let's be friends from now on, meow!");
+ setq LoFQuest_Inspector, 6, 0;
+ getitem GoldenApple, 1;
+ getexp 60000, 600;
+ close;
+
// No Cat Ears regardless of whatever you donate, no "lets play" like TMW Classic
// Inspector Quest: You can ask her, she'll signal the pot, and THEN you start
// giving Katze the items for the cat ears.
@@ -32,10 +71,8 @@
// After instructing her on how to trade, she'll reward you a Golden Apple
// You can come back to Inspector to begin the second part.
// Use Fairy Hat instead of Inspector Hat?
- // "It was... an itch I couldn't scratch. But I paid for it! I know Golden Apples are rare, they should have more than covered the costs for what I took."
- end;
-// At some times, she goes to rob the bank... No, just kidding
+// At some times, she goes to rob the bank... No, just kidding, but she has errands
OnClock1945:
disablenpc .name$;
end;
@@ -118,13 +155,13 @@ OnLoadMobilia:
if (.@id < 1) {
mesc l("You give up.");
close;
- } else if (checkbound(.@id)) {
+ } else if (checkbound(.@id) && .@id != LeatherSuitcase) {
mesc l("You cannot donate bound items!");
close;
} else if ((getiteminfo(.@id, ITEMINFO_TRADE) & ITR_NOSELLTONPC)) {
mesc l("This item cannot be given to NPCs!");
close;
- } else if (!getiteminfo(.@id, ITEMINFO_MAXCHANCE)) {
+ } else if (!getiteminfo(.@id, ITEMINFO_MAXCHANCE) && .@id != LeatherSuitcase) {
mesc l("This item is too precious, you cannot part with it!");
close;
} else if (getiteminfo(.@id, ITEMINFO_TYPE) != IT_HEALING &&
@@ -153,7 +190,13 @@ OnLoadMobilia:
if ($@GM_OVERRIDE)
debugmes sprintf("Katze Donations: %s", fnum($KATZE_DONATION));
donpcevent "Katze::OnLoadMobilia";
- // TODO: INSPECTOR QUEST HANDLER = getq(LoFQuest_Inspector)
+ // Handle quest items
+ if (.@id == LeatherSuitcase) {
+ $KATZE_DONATION += rand2(500); // The suitcase contents
+ compareandsetq LoFQuest_Inspector, 4, 5;
+ getexp 5000, 100;
+ dispbottom l("Now I should be able to ask Katze about the cheese robbery in the Land of Fire.");
+ }
}
closeclientdialog;
close;
diff --git a/npc/017-1/inspector.txt b/npc/017-1/inspector.txt
index ce0bba1ae..d6a66880d 100644
--- a/npc/017-1/inspector.txt
+++ b/npc/017-1/inspector.txt
@@ -16,6 +16,9 @@
if (.@q == 1) goto L_Arc1;
if (.@q == 2) goto L_Arc2;
if (.@q == 3) goto L_Arc3;
+ if (.@q == 4) goto L_Interlude;
+ if (.@q == 5) goto L_Interlude;
+ if (.@q == 6) goto L_Arc4;
goto L_Close;
L_Start:
@@ -64,7 +67,7 @@ L_Arc1:
next;
mesn;
mesq l("My authority won't do you any good, but we have good relations with Hurnscald so you should have no problem. Good luck, %s!", strcharinfo(0));
- getexp 60000, 600;
+ getexp 40000, 200;
setq LoFQuest_Inspector, 2, 0;
} else {
.@p = bitmask_count(.@q2);
@@ -74,14 +77,14 @@ L_Arc1:
next;
goto L_Close;
}
- .@THIEF_DESCRIPTION = 1; // Know how thief looked alike
- .@TIME_OF_THEFT = 4; // Know the time the theft happened
- .@VICTIM_CHEF = 8; // Talked to Dimond Cove chef
- .@UNDERGROUND_PASS = 32; // Know the route used in Dimond
- .@RAT_RULEOUT = 64; // Ruled out the possibility of rats
- .@PORTAL_USE = 128; // Concluded the Portal was used by thief
- .@TROUPE_DISGUISE = 256; // Learned about thief "run-in" with musics
- .@SCRATCH_EVIDENCE = 512; // Learned about the scratch marks left by thief
+ .@THIEF_DESCRIPTION = 1; // Know how thief looked alike
+ .@TIME_OF_THEFT = 4; // Know the time the theft happened
+ .@VICTIM_CHEF = 8; // Talked to Dimond Cove chef
+ .@UNDERGROUND_PASS = 32; // Know the route used in Dimond
+ .@RAT_RULEOUT = 64; // Ruled out the possibility of rats
+ .@PORTAL_USE = 128; // Concluded the Portal was used by thief
+ .@TROUPE_DISGUISE = 256; // Learned about thief "run-in" with musics
+ .@SCRATCH_EVIDENCE = 512; // Learned about the scratch marks left by thief
if (!(.@q2 & .@THIEF_DESCRIPTION))
mesc l("- I don't know how the thief looks like.");
if (!(.@q2 & .@TIME_OF_THEFT))
@@ -103,14 +106,23 @@ L_Arc1:
L_Arc2:
.@q2 = getq2(LoFQuest_Inspector);
if (.@q2 == 63 || .@q2 == 127) {
- mesc l("@@ You need to wait further releases to continue this quest!", b(l("WARNING:"))), 1;
+ mesn;
+ mesq l("Hmm, none of them saw anything? What did we miss... Oh right, Golden Apples grows in the Desert Canyon as well. Snakes often carry them, although we already discarded the possibility of a snake being the thief.");
+ next;
+ mesn;
+ mesq l("Sorry for wasting so much of your time, but go in Halinarzo and ask about it. Who knows, one of them might have seen our little thief crossing the Eternal Swamps, and it would match the time range if they had to occasionally wait for the floods to stop, and the fact no one in Hurnscald saw anything.");
+ next;
+ mesn;
+ mesq l("But be careful, they won't like an inspector snooping there. In fact, better to limit yourself to asking only to the guards, they're mostly volunteers but they'll help. Ask all of them, don't cut corners!");
+ getexp 30000, 250;
+ setq LoFQuest_Inspector, 3, 0;
} else {
- .@LA_MARINE = 1; // Asked around La Marine
- .@SHOPKEEPERS = 2; // Asked around shops
- .@GUARDS = 4; // Asked to guards or police
- .@CIVILIANS = 8; // Asked around to some civilians
- .@AUTHORITY = 16; // Asked around to e.g. Airlia or Celeste
- .@FARMERS = 32; // Asked around to those in the camps
+ .@LA_MARINE = 1; // Asked around La Marine
+ .@SHOPKEEPERS = 2; // Asked around shops
+ .@GUARDS = 4; // Asked to guards or police
+ .@CIVILIANS = 8; // Asked around to some civilians
+ .@AUTHORITY = 16; // Asked around to e.g. Airlia or Celeste
+ .@FARMERS = 32; // Asked around to those in the camps
.@p = bitmask_count(.@q2);
// Kfahr correction
if (.@q2 & 64)
@@ -134,19 +146,40 @@ L_Arc2:
goto L_Close;
L_Arc3:
- if (!is_staff()) end;
- //...
- // ... ... ... ......
- mesn;
- mesq l("Hmm, none of them saw anything? What did we miss... Oh right, Golden Apples grows in the Desert Canyon as well. Snakes often carry them, although we already discarded the possibility of a snake being the thief.");
+ .@q2 = getq2(LoFQuest_Inspector);
+ if (.@q2 == 31) {
+ mesn;
+ mesq l("Hmm... Katze is a very reputable cat, I don't believe she would rob, let alone something as mundane as cheese. Something fishy is going on. Or cheesy, should I say.");
+ next;
+ mesn;
+ mesq l("Alright, you should go visit Katze. She's not lactose intolerant, so she could eat cheese, but still, you should give her a gift before going.");
+ inventoryplace LeatherSuitcase, 1;
+ next;
+ mesn;
+ mesq l("Here, this %s contains some wood so she may scratch her pawns, some toys, a flask of milk, some steak but not made of Mouboos, as cats are allergic to Mouboo meat... And other gifts from us. Give this to her.", getitemlink(LeatherSuitcase));
+ getitembound LeatherSuitcase, 1, 4;
+ getexp 30000, 300;
+ setq LoFQuest_Inspector, 4, 0;
+ } else {
+ mesn;
+ mesq l("Talk to all guards in Halinarzo, don't cut corners now!");
+ }
next;
+ goto L_Close;
+
+L_Interlude:
mesn;
- mesq l("Sorry for wasting so much of your time, but go in Halinarzo and ask about it. Who knows, one of them might have seen our little thief crossing the Eternal Swamps, and it would match the time range if they had to occasionally wait for the floods to stop, and the fact no one in Hurnscald saw anything.");
+ mesq l("Have you talked to Katze yet?");
next;
+ goto L_Close;
+
+L_Arc4:
mesn;
- mesq l("But be careful, they won't like an inspector snooping there.");
- getexp 60000, 600;
- setq LoFQuest_Inspector, 3, 0;
+ mesc l("The inspector looks at you with a pale face.");
+ mesq l("It's terrible... How could this happen?");
+ next;
+ mes "";
+ mesc l("@@ You need to wait further releases to continue this quest!", b(l("WARNING:"))), 1;
next;
goto L_Close;
diff --git a/npc/config/inspector.txt b/npc/config/inspector.txt
index b0665bc33..3fd5debae 100644
--- a/npc/config/inspector.txt
+++ b/npc/config/inspector.txt
@@ -45,14 +45,18 @@ function script inspectorQuest {
.@SCRATCH_EVIDENCE = 512; // Learned about the scratch marks left by thief
// Stage 2 - Hurnscald
.@LA_MARINE = 1; // Asked around La Marine
- .@SHOPKEEPERS = 2; // Asked around shops
- .@GUARDS = 4; // Asked to guards or police
- .@CIVILIANS = 8; // Asked around to some civilians
- .@AUTHORITY = 16; // Asked around to e.g. Airlia or Celeste
- .@FARMERS = 32; // Asked around to those in the camps
- .@KHAFAR = 64; // Bonus, not necessary
+ .@SHOPKEEPERS = 2; // Asked around shops
+ .@GUARDS = 4; // Asked to guards or police
+ .@CIVILIANS = 8; // Asked around to some civilians
+ .@AUTHORITY = 16; // Asked around to e.g. Airlia or Celeste
+ .@FARMERS = 32; // Asked around to those in the camps
+ .@KHAFAR = 64; // Bonus, not necessary
// Stage 3 - Halinarzo
- // TODO
+ .@LT_JACOB = 1; // ...
+ .@G_CORINA = 2; // ...
+ .@G_JHON = 4; // ...
+ .@G_LAURIE = 8; // ...
+ .@G_AMY = 16; // ...
///////////////////////////////
// All NPCs list
if (.@npc$ == "Doug") {
@@ -429,7 +433,7 @@ function script inspectorQuest {
mesq l("I can ask the guards to be on lookout, but... Well, while squirrels are known for stealing things, what you imply is too far fetched. Weren't you a LoF official, I would likely have thrown you out the door for wasting my time.");
next;
mesn;
- mesq l("So rest assured, what craziness is happening at Land of Fire has nothing to do with Hurnscald.");
+ mesq l("So rest assured, whatever craziness is happening at Land of Fire has nothing to do with Hurnscald.");
setq2 LoFQuest_Inspector, .@q2 | .@AUTHORITY;
} else if (.@npc$ == "Celestia") {
mesn;
@@ -456,7 +460,7 @@ function script inspectorQuest {
mesq l("I've been looking around all day and night to sell my father's %s, so I remember roughly everyone who have been on this ship.", getitemlink(OrangeDye));
next;
mesn;
- mesq l("And I can say no one matching your description was here today or yesterday or the day before. Sorry.");
+ mesq l("And I can say with confidence that no one matching your description was here today or yesterday or the day before. Sorry.");
setq2 LoFQuest_Inspector, .@q2 | .@LA_MARINE;
} else if (.@npc$ == "Teraa") {
mesn;
@@ -472,6 +476,27 @@ function script inspectorQuest {
setq2 LoFQuest_Inspector, .@q2 | .@KHAFAR;
getitem Beer, 1;
}
+ // Third Phase: 009 (5 guards)
+ } else if (.@npc$ == "Lieutenant Jacob") {
+ mesn;
+ mesq l("You want to know if I saw any squirrel or cat leaving and coming back through this gate yesterday? Yes, I did, a gray cat, but I didn't paid much attention.");
+ setq2 LoFQuest_Inspector, .@q2 | .@LT_JACOB;
+ } else if (.@npc$ == "Guard Corina") {
+ mesn;
+ mesq l("Hm... Yes, now that you mention it, Katze always come to the bank at night, and she fits your description nicely.");
+ setq2 LoFQuest_Inspector, .@q2 | .@G_CORINA;
+ } else if (.@npc$ == "Guard Jhon") {
+ mesn;
+ mesq l("Hm... I did saw Katze coming to this cave a few days prior. And she did left with some %s. But that's normal for her, so I didn't bother.", getitemlink(GoldenApple));
+ setq2 LoFQuest_Inspector, .@q2 | .@G_JHON;
+ } else if (.@npc$ == "Guard Laurie") {
+ mesn;
+ mesq l("Uhm, Katze often comes to the Hospital and shares some of her cheese with the sick. The cheese types and the description matches, but Katze would never steal anything.");
+ setq2 LoFQuest_Inspector, .@q2 | .@G_LAURIE;
+ } else if (.@npc$ == "Guard Amy") {
+ mesn;
+ mesq l("Hmm... Why don't you ask Katze the cat? Her cave should be below the chasm in the Canyon Caves. You know, the one where the river flows to? I'm sure she could elucidate this for you.");
+ setq2 LoFQuest_Inspector, .@q2 | .@G_AMY;
} else {
Exception(sprintf("Oops, unhandled NPC at investigation (typo)! %s was not found on stage %d <= report this!", .@npc$, .@q), RB_SPEECH|RB_PLEASEREPORT);
}