diff options
Diffstat (limited to 'npc')
-rw-r--r-- | npc/010-4-1/katze.txt | 9 | ||||
-rw-r--r-- | npc/017-1/inspector.txt | 17 | ||||
-rw-r--r-- | npc/config/inspector.txt | 281 |
3 files changed, 193 insertions, 114 deletions
diff --git a/npc/010-4-1/katze.txt b/npc/010-4-1/katze.txt index 8d8114db7..f750b7f7b 100644 --- a/npc/010-4-1/katze.txt +++ b/npc/010-4-1/katze.txt @@ -32,6 +32,15 @@ // 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 +OnClock1945: + disablenpc .name$; + end; +OnClock2015: + enablenpc .name$; end; OnInit: diff --git a/npc/017-1/inspector.txt b/npc/017-1/inspector.txt index 0fadaf652..3533c3ad9 100644 --- a/npc/017-1/inspector.txt +++ b/npc/017-1/inspector.txt @@ -2,7 +2,7 @@ // Author: // Jesusalva // Description: -// Part of Katze quest +// Part of Katze quest (Lv 49 Quest) // See also // npc/config/inspector.txt @@ -11,7 +11,7 @@ mesn; mesq l("Hello. My name is Anselmo and I'm investigating a recent string of robberies."); next; - if (BaseLevel < 50) goto L_Close; + if (BaseLevel < 49) goto L_Close; if (!is_staff()) goto L_Close; // FIXME mesn; mesq l("Well... Not robberies per se... Just cheese vanishing and being replaced by %s, which is super weird.", getitemlink(GoldenApple)); @@ -34,6 +34,19 @@ setq LoFQuest_Inspector, 1, 0; next; goto L_Close; + if (.@q2 == (1024-1)) { + mesn; + mesq l("Cool, you have collected enough evidence. I also have some of my own, so we can proceed."); + next; + // getexp; setq + mesn; + mesq l("So, what have we concluded thus far?"); + next; + //... + mesn; + mesq l("Excellent. So, this time, we should follow the other lead we had - the %s found in the scene of the crime.", getitemlink(GoldenApple)); + } + goto L_Close; L_Close: closeclientdialog; diff --git a/npc/config/inspector.txt b/npc/config/inspector.txt index f64610110..ca7576aa0 100644 --- a/npc/config/inspector.txt +++ b/npc/config/inspector.txt @@ -1,27 +1,27 @@ // TMW2/LOF Script. // Author: -// Jesusalva +// Jesusalva // Description: // Inspector Quest core // Main logical loop, takes no argument function script inspectorQuest { - .@npc$ = strnpcinfo(0); - if ($@GM_OVERRIDE) debugmes .@npc$; - // TODO: Rather than using .@q == 1 - // Check with compare(getmap(), "017") && .@q == 1 - // Then with compare(getmap(), "012") && .@q == 2 - // Then with compare(getmap(), "009") && .@q == 3 - // ...So on, for each stage - .@q = getq(LoFQuest_Inspector); - if (.@q != 1) return; - select - l("Talk normally."), - l("Ask about the robberies."); - if (@menu == 1) { - clear; - return; - } + .@npc$ = strnpcinfo(0); + if ($@GM_OVERRIDE) debugmes .@npc$; + // TODO: Rather than using .@q == 1 + // Check with compare(getmap(), "017") && .@q == 1 + // Then with compare(getmap(), "012") && .@q == 2 + // Then with compare(getmap(), "009") && .@q == 3 + // ...So on, for each stage + .@q = getq(LoFQuest_Inspector); + if (.@q != 1) return; + select + l("Talk normally."), + l("Ask about the robberies."); + if (@menu == 1) { + clear; + return; + } /* // NPC List (24+6 = 30 NPCs) /////////////////////////////// @@ -77,175 +77,232 @@ function script inspectorQuest { LoF alchemist */ mes ""; - .@q2 = getq2(LoFQuest_Inspector); - .@THIEF_DESCRIPTION = 1; // Know how thief looked alike - .@CHEESE_TYPES = 2; // Know which kind of cheese was stolen - .@TIME_OF_THEFT = 4; // Know the time the theft happened - .@VICTIM_CHEF = 8; // Talked to Dimond Cove chef - .@VICTIM_LAB = 16; // Alchemist explained about cheese thieves - .@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 (no noise) - .@SCRATCH_EVIDENCE = 512; // Learned about the scratch marks left by thief - // Each NPC sets exactly ONE piece of evidence to true, or none - // Some NPCs require some pieces to already be set in advance - // Technically, Dimond Chef can set two pieces - one on first talk, 2nd locked - // Some NPCs set the same piece of evidence - you don't need to talk to all + .@q2 = getq2(LoFQuest_Inspector); + .@THIEF_DESCRIPTION = 1; // Know how thief looked alike + .@CHEESE_TYPES = 2; // Know which kind of cheese was stolen + .@TIME_OF_THEFT = 4; // Know the time the theft happened + .@VICTIM_CHEF = 8; // Talked to Dimond Cove chef + .@VICTIM_LAB = 16; // Alchemist explained about cheese thieves + .@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 (no noise) + .@SCRATCH_EVIDENCE = 512; // Learned about the scratch marks left by thief + // Each NPC sets exactly ONE piece of evidence to true, or none + // Some NPCs require some pieces to already be set in advance + // Technically, Dimond Chef can set two pieces - one on first talk, 2nd locked + // Some NPCs set the same piece of evidence - you don't need to talk to all if (.@npc$ == "Doug") { - // Knows nothing, saw nothing + // Knows nothing, saw nothing mesn; mesq l("I know nothing about the robberies, sorry."); next; mesn; mesq l("Besides, this room is too dark, so I wouldn't be able to see anything."); } else if (.@npc$ == "Royal Fairy") { - // Knows nothing, saw nothing + // Knows nothing, saw nothing mesn; mesq l("I know nothing about the robberies, sorry."); - next; + next; mesn; mesq l("There haven't been anything unusual in the fairy district of the Land of Fire Village, after all."); } else if (.@npc$ == "Erik") { - // Points toward Pet Dectective if CHEESE_TYPES - if (.@q2 & .@CHEESE_TYPES) { - mesn; - mesq l("Hmm, based on these cheese types... Definitely either a person, or a pet."); - next; - mesn; - mesq l("Try asking Ace Ventura, the Pet Detective. He'll be able to trim further the list."); - } else { - mesn; - mesq l("I know nothing about the robberies, sorry."); - } + // Points toward Pet Dectective if CHEESE_TYPES + if (.@q2 & .@CHEESE_TYPES) { + mesn; + mesq l("Hmm, based on these cheese types... Definitely either a person, or a pet."); + next; + mesn; + mesq l("Try asking Ace Ventura, the Pet Detective. He'll be able to trim further the list."); + } else { + mesn; + mesq l("I know nothing about the robberies, sorry."); + } } else if (.@npc$ == "Kenton") { - // FIXME Acquire SCRATCH_EVIDENCE FIXME + // FIXME Acquire SCRATCH_EVIDENCE FIXME mesn; mesq l("I know nothing about the robberies, sorry."); } else if (compare(.@npc$, "Guard")) { - // List some excluded NPCs. Could use miller rand to be predictable but... + // List some excluded NPCs. Could use miller rand to be predictable but... mesn; mesq l("I know nothing about the robberies, sorry."); - next; - .@n1$ = any(l("Doctor"), l("Boring NPC"), l("Nowhere family"), l("Drowned Man"), l("Billy"), l("Drueme"), l("Stranger"), l("Fortiun"), l("Fusus"), l("Nahrec"), l("Silversmith")); - .@n2$ = any(l("Doctor"), l("Boring NPC"), l("Nowhere family"), l("Drowned Man"), l("Billy"), l("Drueme"), l("Stranger"), l("Fortiun"), l("Fusus"), l("Nahrec"), l("Silversmith")); - .@n3$ = any(l("Doctor"), l("Boring NPC"), l("Nowhere family"), l("Drowned Man"), l("Billy"), l("Drueme"), l("Stranger"), l("Fortiun"), l("Fusus"), l("Nahrec"), l("Silversmith")); - mesn; - mesq l("But don't waste your breath with %s... %s, if I haven't mentioned... did I mention %s already? Anyway, they definitely cannot help.", .@n1$, .@n2$, .@n3$); + next; + .@n1$ = any(l("Doctor"), l("Boring NPC"), l("Nowhere family"), l("Drowned Man"), l("Billy"), l("Drueme"), l("Stranger"), l("Fortiun"), l("Fusus"), l("Nahrec"), l("Silversmith")); + .@n2$ = any(l("Doctor"), l("Boring NPC"), l("Nowhere family"), l("Drowned Man"), l("Billy"), l("Drueme"), l("Stranger"), l("Fortiun"), l("Fusus"), l("Nahrec"), l("Silversmith")); + .@n3$ = any(l("Doctor"), l("Boring NPC"), l("Nowhere family"), l("Drowned Man"), l("Billy"), l("Drueme"), l("Stranger"), l("Fortiun"), l("Fusus"), l("Nahrec"), l("Silversmith")); + mesn; + mesq l("But don't waste your breath with %s... %s, if I haven't mentioned... did I mention %s already? Anyway, they definitely cannot help.", .@n1$, .@n2$, .@n3$); } else if (.@npc$ == "Elen The Traveler") { - // FIXME Hints towards more useful NPCs? FIXME + // Actually useful hint, but only if you are reading the code, so no effect mesn; mesq l("I know nothing about the robberies, sorry."); + next; + mesn; + mesq l("But if it helps, it should take under 15 minutes to reach Tulimshar on foot from here for most animals, via Halinarzo's Canyon."); + next; + mesn; + mesq l("Reaching Nivalis instead, would likely take considerably longer."); } else if (.@npc$ == "Milocat") { - // Points toward Axzell + // Points toward Axzell mesn; mesq l("No idea. Paxel would at least know a few tricks, and Axzell the Alchemist could speak more about cheese thieves."); } else if (.@npc$ == "Pydisgner#spoints") { - // FIXME Acquire PORTAL_USE if THIEF_DESCRIPTION and TIME_OF_THEFT FIXME + // FIXME Acquire PORTAL_USE if THIEF_DESCRIPTION and TIME_OF_THEFT FIXME mesn; mesq l("I've been here all day and night. And a lot of people use this portal, unless you have a description of what I'm looking for, and the time, I can't help."); } else if (.@npc$ == "Paxel") { - // General hints from Prsm - have you talked to Chef? And to Dimond? + // General hints from Prsm - have you talked to Chef? And to Dimond? mesn; mesq l("I know nothing about the robberies, sorry."); - next; + next; mesn; mesq l("But my father, Prsm, always told me to check multiple times with the victim and the boss. I guess in your case it would be..."); - next; + next; mesn; mesq l("Dimond's Chef and Dimond herself. So if you're stuck, try talking to them again, confirm the details?"); } else if (.@npc$ == "Pet Detective") { - // FIXME Acquire RAT_RULEOUT if CHEESE_TYPES FIXME + // Acquire RAT_RULEOUT if CHEESE_TYPES + if (.@q2 & .@CHEESE_TYPES) { + mesn; + mesq l("Hmm, based on these cheese types... Definitely either a person, or a pet."); + next; + mesn; + mesq l("We can rule out rats, though. I know, shocking, right? But these kind of cheese are eaten by cats, dragons and yetis, but not by rats."); + next; + mesn; + mesq l("I would limit the search for persons, cats, dragons or yetis. Keep in mind these aren't the primary food for any of them, so you're unlikely to find them in a pile of stolen cheese."); + setq2 LoFQuest_Inspector, .@q2 | .@RAT_RULEOUT; + } else { + mesn; + mesq l("I know nothing about the robberies, sorry."); + } mesn; mesq l("I know nothing about the robberies, sorry."); } else if (.@npc$ == "Chef#dimond") { - // FIXME Acquire VICTIM_CHEF, acquire CHEESE_TYPES if VICTIM_LAB FIXME + // FIXME Acquire VICTIM_CHEF, acquire CHEESE_TYPES if VICTIM_LAB FIXME mesn; mesq l("I know nothing about the robberies, sorry."); } else if (.@npc$ == "Dimond") { - // FIXME Acquire THIEF_DESCRIPTION if TIME_OF_THEFT FIXME + // FIXME Acquire THIEF_DESCRIPTION if TIME_OF_THEFT FIXME mesn; mesq l("I know nothing about the robberies, sorry."); } else if (.@npc$ == "Phil") { - // FIXME Acquire TROUPE_DISGUISE if VICTIM_CHEF FIXME + // FIXME Acquire TROUPE_DISGUISE if VICTIM_CHEF FIXME mesn; mesq l("I know nothing about the robberies, sorry."); } else if (.@npc$ == "Jerry") { - // FIXME Acquire TROUPE_DISGUISE if VICTIM_CHEF FIXME + // FIXME Acquire TROUPE_DISGUISE if VICTIM_CHEF FIXME mesn; mesq l("I know nothing about the robberies, sorry."); } else if (.@npc$ == "Robert") { - // FIXME Acquire TROUPE_DISGUISE if VICTIM_CHEF FIXME + // FIXME Acquire TROUPE_DISGUISE if VICTIM_CHEF FIXME mesn; mesq l("I know nothing about the robberies, sorry."); } else if (.@npc$ == "Shannon") { - // FIXME Acquire UNDERGROUND_PASS if VICTIM_CHEF FIXME + // FIXME Acquire UNDERGROUND_PASS if VICTIM_CHEF FIXME mesn; mesq l("I know nothing about the robberies, sorry."); } else if (.@npc$ == "Basil") { - // FIXME Guides about Zack requisites FIXME + // Guides about Zack requisites mesn; - mesq l("I know nothing about the robberies, sorry."); + mesq l("I know nothing about the robberies, but I might help if you brief me on the issue."); + next; + mesn; + mesq l("I see, I believe the workers at the basement might know something, but they likely don't know they know."); + next; + mesn; + mesq l("If you limit your suspects, they might cooperate... But talk to them in order, or they might be too scared to spill the beans. Talk to them once, twice, if you want to be sure."); } else if (.@npc$ == "Gambler#017-3") { - // FIXME Guides about Lora and Nico requisites FIXME + // Guides about Lora and Nico requisites mesn; - mesq l("I know nothing about the robberies, sorry."); - } else if (.@npc$ == "Lora Tay") { - // FIXME Acquire TIME_OF_THEFT if UNDERGROUND_PASS FIXME + mesq l("I know nothing about the robberies. But Lora Tay spends most of the time awake and Nico Goethe is always running through the whole Inn searching for someone to play with. Both are very sharp when it comes to time and noises, even if aloof to what they don't care about."); + next; mesn; - mesq l("I know nothing about the robberies, sorry."); + mesq l("If you learn enough to jog their memories, they might know the time of the theft. If they don't, then I don't think anyone will."); + } else if (.@npc$ == "Lora Tay") { + // Acquire TIME_OF_THEFT if UNDERGROUND_PASS + if (.@q2 & .@UNDERGROUND_PASS) { + mesn; + mesq l("Hm? You mean when someone made a ruckus with metallic noise on the underground basement?"); + next; + mesn; + mesq l("Of course, it was maybe 20:00, give or take ten minutes. Every day. It is incredibly annoying."); + setq2 LoFQuest_Inspector, .@q2 | .@TIME_OF_THEFT; + } else { + mesn; + mesq l("I know nothing about the robberies, sorry."); + next; + mesn; + mesq l("Now get out of my way, what I'm sewing is clearly more important than whatever you're playing. Kids, these days...!"); + } } else if (.@npc$ == "Nico Goethe") { - // FIXME Acquire TIME_OF_THEFT if UNDERGROUND_PASS FIXME - mesn; - mesq l("I know nothing about the robberies, sorry."); + // Acquire TIME_OF_THEFT if UNDERGROUND_PASS + if (.@q2 & .@UNDERGROUND_PASS) { + mesn; + mesq l("Hm? You mean when someone made a ruckus with metallic noise on the underground basement?"); + next; + mesn; + mesq l("Of course, it was maybe 20:00, give or take ten minutes. Every day. It is incredibly annoying."); + setq2 LoFQuest_Inspector, .@q2 | .@TIME_OF_THEFT; + } else { + mesn; + mesq l("I know nothing about the robberies, sorry."); + next; + mesn; + mesq l("Now, unless you're interested in a match of Arcmage, I've heard Basil had some free time, so I'll ask him instead."); + } } else if (.@npc$ == "Jenny") { - // Acquire THIEF_DESCRIPTION if UNDERGROUND_PASS - mesn; - mesq l("You want to know if I saw something going through here?"); - next; - if (.@q2 & .@UNDERGROUND_PASS) { - mesn; - mesq l("And not a rat? Not really... No, wait, I did. Multiple times, something relatively big, which came in as if they were liquid."); - next; - mesn; - mesq l("Here, I'll write down how it seemed. Some sort of grey fluff. But it clearly wasn't human, so why would I be worried it could be a thief?"); - setq2 LoFQuest_Inspector, .@q2 | .@THIEF_DESCRIPTION; - } else { - mesn; - mesq l("Well... Rats, maybe?"); - } + // Acquire THIEF_DESCRIPTION if UNDERGROUND_PASS + mesn; + mesq l("You want to know if I saw something going through here?"); + next; + if (.@q2 & .@UNDERGROUND_PASS) { + mesn; + mesq l("And not a rat? Not really... No, wait, I did. Multiple times, something relatively big, which came in as if they were liquid."); + next; + mesn; + mesq l("Here, I'll write down how it seemed. Some sort of grey fluff with a gold ball or something? But it clearly wasn't human, and it came *with* gold, so why would I be worried it could be a thief?"); + setq2 LoFQuest_Inspector, .@q2 | .@THIEF_DESCRIPTION; + } else { + mesn; + mesq l("Well... Rats, maybe?"); + // Basil's instructions, slightly less obscure this time + if (.@q2 & .@RAT_RULEOUT) { + mesc l("%s glances over to %s, before turning to you with a shrug.", l("Jenny"), l("Zack")); + } + } } else if (.@npc$ == "Zack") { - // Acquire UNDERGROUND_PASS if RAT_RULEOUT - if (.@q2 & .@RAT_RULEOUT) { - mesn; - mesq l("You want to know if something could pass through the tunnel we're digging?"); - next; - mesn; - mesq l("Well, if you look behind the building, there's a couple chimneys on ground and a hole which connects here."); - next; - mesn; - mesq l("I imagine something sufficiently small or nimble, or maybe liquid, could pass through it to reach the kitchen's depot."); - setq2 LoFQuest_Inspector, .@q2 | .@UNDERGROUND_PASS; - } else { - mesn; - mesq l("I don't know what you're talking, I've been working all day."); - } + // Acquire UNDERGROUND_PASS if RAT_RULEOUT + if (.@q2 & .@RAT_RULEOUT) { + mesn; + mesq l("You want to know if something could pass through the tunnel we're digging?"); + next; + mesn; + mesq l("Well, if you look behind the building, there's a couple chimneys on ground and a hole which connects here. Would make some metallic noise to go through either of them."); + next; + mesn; + mesq l("I imagine something sufficiently small or nimble, or maybe liquid, could pass through it to reach the kitchen's depot."); + setq2 LoFQuest_Inspector, .@q2 | .@UNDERGROUND_PASS; + } else { + mesn; + mesq l("I don't know what you're talking, I've been working all day."); + } } else if (.@npc$ == "Pihro") { - // Send to Dimond's Cove chef + // Send to Dimond's Cove chef mesn; mesq l("Ah, so you're the one in charge of the cheese robberies? I believe Dimond's Cove Chef was the most affected one, but I keep myself out of these matters."); } else if (.@npc$ == "Pyndragon") { - // Send to Kenton, the Public Affairs Officer + // Send to Kenton, the Public Affairs Officer mesn; mesq l("Ah, so you're the one in charge of the cheese robberies? I wouldn't know anything myself, but try asking Kenton, he is in charge of Public Affairs."); } else if (.@npc$ == "Axzell the Alchemist") { - // Acquire VICTIM_LAB + // Acquire VICTIM_LAB mesn; mesq l("You want help with your investigation? Well, several creatures eat cheese. Like me. You could try to shorten this list."); - next; + next; mesn; mesq l("The trick is figuring out which kind of cheese was stolen. Once you know that, I guess either Ace Ventura or Erik could help you to thin out the list."); - setq2 LoFQuest_Inspector, .@q2 | .@VICTIM_LAB; + setq2 LoFQuest_Inspector, .@q2 | .@VICTIM_LAB; } else { Exception(sprintf("Oops, unhandled NPC at investigation (typo)! %s was not found on stage %d <= report this!", .@npc$, .@q), RB_SPEECH|RB_PLEASEREPORT); } |