summaryrefslogtreecommitdiff
path: root/npc/017-1/inspector.txt
blob: fc8fc4ad2d083fc54627737cff603e1f077b8244 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
// TMW2/LOF Script.
// Author:
//    Jesusalva
// Description:
//  Part of Katze quest (Lv 48 Quest)
// See also
//  npc/config/inspector.txt

017-1,77,104,0	script	Anselmo	NPC_ANSELMO_BR,{
    .@q = getq(LoFQuest_Inspector);
    // TODO: Require orange pants like originally planned?
    //if (getequipcardid(EQI_HEAD_TOP, 0) == OrangeDye)
    mesn;
    mesq l("Hello. My name is Anselmo and I'm investigating a recent string of robberies.");
    next;
    if (BaseLevel < 48) goto L_Close;
    if (.@q == 0) goto L_Start;
    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;
    if (.@q == 7) goto L_Hurry;
    if (.@q == 8) goto L_Finish;
    if (.@q == 9) goto L_Done;
    goto L_Close;

L_Start:
    mesn;
    mesq l("Well... Not robberies per se... Just cheese vanishing and being replaced by %s, which is super weird.", getitemlink(GoldenApple));
    next;
    mesn;
    mesq l("You look capable, will you help me solve these robberies? Of course, not for free.");
    next;
    if (askyesno() == ASK_NO)
        goto L_Close;
    mesn;
    mesq l("Excellent. I'd like you to ask around about the recent string of robberies.");
    next;
    mesn;
    mesq l("I'll just... put this tiny coat of arms on you. This will let everyone know you are acting on an official capacity.");
    next;
    mesn;
    mesq l("But remember, they're stealing %s, not shinies, so try to limit your search a bit.", getitemlink(Cheese));
    setq LoFQuest_Inspector, 1, 0;
    next;
    goto L_Close;

L_Arc1:
    .@q2 = getq2(LoFQuest_Inspector);
    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;
        mesn;
        mesq l("So, what have we concluded thus far?");
        next;
        mesc l("You spend some time going over the evidence with Anselmo. You mention which kind of cheese was stolen and the thief description, the time of the robbery and the victims, the route they used from the portal to the kitchen depot, the scratch marks and the odd aversion to loud instruments the thief had.");
        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));
        next;
        mesn;
        mesq l("We know our thief is likely either a squirrel or a cat, although one intelligent enough and resourceful enough to make the travel every day. So I'm going to assume it was bought in some store as some sort of prank.");
        next;
        mesn;
        mesq l("Considering the direction they came from, we should check Hurnscald next. Ask them if they saw a squirrel robbing Golden Apples, or anything which could help.");
        next;
        mesn;
        mesq l("Ah, and you don't need to ask all of them, that would be a real bother. Ask around, and try to prioritize shop keepers, unless you feel you found a trail. You can also ask inside La Marine.");
        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));
        mesc l("Anselmo gives you %s GP, likely some advance payment of some kind.", fnum(1000));
        getexp 40000, 200;
        Zeny += 1000;
        setq LoFQuest_Inspector, 2, 0;
    } else {
        .@p = bitmask_count(.@q2);
        mesn;
        mesq l("Keep investigating. You've found %d/%d pieces of evidence thus far.", .@p, 10);
        if (!TUTORIAL) {
            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
        if (!(.@q2 & .@THIEF_DESCRIPTION))
            mesc l("- I don't know how the thief looks like.");
        if (!(.@q2 & .@TIME_OF_THEFT))
            mesc l("- I don't know when the theft happened.");
        if (!(.@q2 & .@VICTIM_CHEF))
            mesc l("- I don't know the victims of the thievery.");
        if (!(.@q2 & .@UNDERGROUND_PASS))
            mesc l("- I don't know how the theft happened.");
        if (!(.@q2 & .@RAT_RULEOUT))
            mesc l("- I don't know the possible culprits for this.");
        if (!(.@q2 & .@PORTAL_USE))
            mesc l("- I don't know if the thief is from LoF or not.");
        if (!(.@q2 & .@SCRATCH_EVIDENCE))
            mesc l("- I don't know any supporting evidence from the crome.");
    }
    next;
    goto L_Close;

L_Arc2:
    .@q2 = getq2(LoFQuest_Inspector);
    if (.@q2 == 63 || .@q2 == 127) {
        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!");
        mesc l("Anselmo gives you %s GP, likely some advance payment of some kind.", fnum(600));
        getexp 30000, 250;
        Zeny += 600;
        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
        .@p = bitmask_count(.@q2);
        // Kfahr correction
        if (.@q2 & 64)
            .@p -= 1;
        mesn;
        mesq l("Keep investigating. You've talked to %d/%d groups in Hurnscald thus far.", .@p, 6);
        if (!(.@q2 & .@LA_MARINE))
            mesc l("- Please collect reports from La Marine.");
        if (!(.@q2 & .@SHOPKEEPERS))
            mesc l("- Please collect reports from the shop keepers.");
        if (!(.@q2 & .@GUARDS))
            mesc l("- Please collect reports from the guards and police.");
        if (!(.@q2 & .@CIVILIANS))
            mesc l("- Please collect reports from the civilians.");
        if (!(.@q2 & .@AUTHORITY))
            mesc l("- Please collect reports from Hurnscald authorities.");
        if (!(.@q2 & .@FARMERS))
            mesc l("- Please collect reports from the farmers.");
    }
    next;
    goto L_Close;

L_Arc3:
    .@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));
        mesc l("Anselmo gives you %s GP, likely some advance payment of some kind.", fnum(1400));
        getitembound LeatherSuitcase, 1, 4;
        getexp 30000, 300;
        Zeny += 1400;
        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("Have you talked to Katze yet?");
    next;
    goto L_Close;

L_Arc4:
    mesn;
    mesc l("The inspector looks at you with a pale face.");
    mesq l("It's terrible... How could this happen?");
    next;
    select
        l("What happened?"),
        l("Uh, I better leave before I'm involved again.");
    if (@menu == 2) goto L_Close;
    mesn;
    mesq l("Ignore the cheese theft for now, we had a major incident. Rossy was kidnapped by slimes.");
    next;
    mesn;
    mesq l("I am... unsure about the details. As you definitely know, her sister started working on Nard's Ship crew a few years ago, but Rossy stayed here. She was planning to visit some friends in Nivalis when the abduction happened.");
    next;
    mesn;
    mesq l("Land of Fire never had a problem with slimes before... And Jak1, the infamous slime researcher, was banned centuries ago with his sister to the Oranye Isles.");
    next;
    mesn;
    mesq l("Our guards tracked down to an... well, it's an old ritual cave located in the watery area of Jack's House basement. I'll allow you to enter there from now on.");
    next;
    inventoryplace PileOfAsh, 5;
    mesn;
    mesq l("Please find Clauquer, our senior dispatched police officer. He likes pretending to be a smartass and is too reckless with his own life, but he can instruct you.");
    next;
    mesn;
    mesq l("But we don't know if they'll try to sacrifice Rossy or not, so you're on a timer. Prepare yourself well before heading to the cave. Good luck!");
    mesc l("Anselmo gives you some %s, but you'll likely need more for this.", getitemlink(PileOfAsh));
    tutmes l("* Timer begins once you enter the ritual cave; if you don't rescue Rossy in time or die trying, the cave state will reset and you'll need to start over the rescue.");
    setq LoFQuest_Inspector, 7, 0;
    getitem PileOfAsh, 5;
    next;
    goto L_Close;

L_Hurry:
    mesn;
    mesq l("What are you waiting for? Go rescue Rossy in the Ritual Cave, in Jack's house basement! It's northeast of here.");
    tutmes l("* Timer begins once you enter the ritual cave; if you don't rescue Rossy in time or die trying, the cave state will reset and you'll need to start over the rescue.");
    next;
    goto L_Close;

L_Finish:
    mesn;
    mesq l("I'm grateful for your help. Who knows what would have happened to Rossy without your intervention. So, did you find out who was behind the cheese theft?");
    next;
    mesc l("You tell the truth to Inspector Anselmo.");
    next;
    mesn;
    mesq l("So Katze didn't knew how to sell Golden Apples or where to buy Cheese? I don't blame her at all, these things change all the time.");
    next;
    mesn;
    mesq l("Thanks for your excellent services. I hereby name you a junior (intern) officer of the Land of Fire police. Although I doubt there'll be anything else to do for quite a while, Land of Fire is quite pacific.");
    next;
    inventoryplace NPCEyes, 6; // FIXME
    mesn;
    mesq l("Here, you can have this uniform. The payment for your work is also here. Regards on a job well done, junior!");
    Zeny += 2000; // total 5kGP
    getexp 90000, 900;
    getitem2(CottonTrousers, 1, 1, 0, 0, NavyBlueDye, 0,0,0);
    getitem2(CottonGloves,   1, 1, 0, 0, NavyBlueDye, 0,0,0);
    getitem2(CottonBoots,    1, 1, 0, 0, NavyBlueDye, 0,0,0);
    getitem2(VneckSweater,   1, 1, 0, 0, NavyBlueDye, 0,0,0);
    getitem2(InspectorHat,   1, 1, 0, 0, NavyBlueDye, 0,0,0);
    getitem Kanabo, 1;
    // TODO: SacredForestHat?
    // TODO: Add a way to acquire Murderer Crown lease, maybe rent it to #1 PvP
    // TODO: Send Medals (Gold, Silver, Bronze) on Olympics too, and give them stat
    // 3 gold, 3 silver and 4 bronze, for the whole top 10
    setq LoFQuest_Inspector, 9, 0, 0;
    next;
    goto L_Close;

L_Done:
    mesn;
    if (getq(General_Narrator) <= 17) {
        mesq l("However, the officer in command is Benjamin, who was dispatched to handle it. You'll need to ask him if you want to participate on this investigation, or get someone with overriding authority to appoint you to it.");
        tutmes l("* Advance Player Quest (the one marked with a star on quest log) first.");
    } else {
        mesq l("Although since Katze and Barbara's incidents, not much is happening, besides some vaults being looted every now and then. Nothing of worry, which is a good thing, I guess.");
        if (THIEF_RANK)
            mesc l("Anselmo seems to like he doubt your intentions, but he doesn't says anything else.");
        else
            mesc l("Anselmo sighs and weaves, clearly not interested in getting help.");
    }
    next;
    goto L_Close;

L_Close:
    closeclientdialog;
    if (rand2(100) < 2)
        npctalk3 l("And remember to never sit on Paxel! He hates that!");
    else
        goodbye();
    close;

OnInit:
    .distance=5;
    .sex = G_MALE;
    end;
}