summaryrefslogtreecommitdiff
path: root/world/map/npc/easter/2010/Doctor.txt
blob: 78097fd6ab1a30b14dfb79c732534bdc1813e74a (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
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
// Doctor 1, at the big tree.

028-1.gat,21,105,0	script	Doctor#who1	184,{
    // States here
    callsub S_Helped_Count;
    if (@Easter_2010_helper >= 2 && !((Easter_2010_QuestState >> E10_FLAG_MID_REWARD_SHIFT) & E10_FLAG_MID_REWARD_MASK))
        goto L_MidReward;
    if (@Easter_2010_helper == 4 && !((Easter_2010_QuestState >> E10_FLAG_RETURN_READY_SHIFT) & E10_FLAG_RETURN_READY_MASK))
        goto L_Defeat_Invader;
    if ((Easter_2010_QuestState >> E10_FLAG_RETURN_READY_SHIFT) & E10_FLAG_RETURN_READY_MASK == E10_FLAG_RETURN_READY && (Easter_2010_QuestState >> E10_STATE_ROSE_SHIFT) & E10_STATE_ROSE_MASK == E10_STATE_ROSE_ROSE_COMPLETE)
        goto L_Return_Ready_Optional;

// ======================
// === First location ===
// ======================

L_At_Tree:
    // Checks for if the player has already helped the doctor, either here or elsewhere, go here.
    if ((Easter_2010_QuestState >> E10_FLAG_HELPED_DOCTOR_TREE_SHIFT) & E10_FLAG_HELPED_DOCTOR_TREE_MASK == E10_FLAG_HELPED_DOCTOR_TREE)
        goto L_At_Tree_Helped;

    if ((Easter_2010_QuestState >> E10_FLAG_KNOWS_DOCTOR_SHIFT) & E10_FLAG_KNOWS_DOCTOR_MASK == E10_FLAG_KNOWS_DOCTOR)
        goto L_At_Tree_Knows_Doctor;
    // Fallthrough, reaction to a player that is completely new.

    setarray @responses$, "\"This tree, I'm sure it's - \"The man looks up distractedly.\" Oh, hello. Can't talk now, I'm afraid, this world needs my help...\"", "He looks up, confused. \"Withering... why is this world dying? Perhaps--er, who are you? You'll have to excuse me, I'm a little preoccupied with this tree...\"", "\"What-what? I mean, sorry, hello! Can't quite talk, a bit busy trying to save this world.\" He seems to be deep in thought, brandishing what looks to be a small tool near the tree.", "\"You there! Do you realise what's happening here? This world is dying, much like a human would, perhaps. Nevertheless...\""; // Not many responses are needed here, since init only happens one per player.
    callsub S_Update_Knows;
    next;
    if (countitem("LifeStone") > 0)
        goto L_has_lifestone;
    close;

L_At_Tree_Knows_Doctor:
    // More responses than the initial here, and need to be more of a hint.
    setarray @responses$, "\"I just don't know what's wrong. My analysis tells me this tree is important, but I don't seem to have the right tool...\"", "A distinct... whirring noise sounds from the device the Doctor wields. \"You see this tree? Right here, this one! There's something amiss here, perhaps beyond my expertise.\"", "\"Yes, yes, all evidence points to this tree. \"He leans in for a closer look. \"Brilliant! No! Um... that's not right.\"", "He withdraws what appear to be glasses from his pocket and puts them on, peering intently at the tree.", "\"Mm-hmm, yes! Do you see what's wrong with this tree? No?\" He sounds somewhat dejected, but still determined. \"Well, neither do I, I'm afraid.\"", "The Doctor turns with a look of panic on his face, gesturing for you to stop talking. He turns back to the tree, muttering \"some way to heal...\"";
    callsub S_Dialogue_Knows;
    next;

    if (countitem("LifeStone") > 0)
        goto L_has_lifestone;
    mes "[Doctor]";
    mes "";
    mes "\"I'm trying to understand something, but it's got me quite confused, I'm afraid. I need something to assist me... something to counter the death...\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Unfortunately, I really can't think of anything to use. Please leave me alone while I think.\"";
    next;
    menu "Okay...", -,
            "Actually, I just want to go home. Can you help?", L_Warning;
    close;

L_has_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"I'm busy right now, I'm afraid I - what's that thing you've got there?\"";
    next;
    goto L_spotted_lifestone;

L_spotted_lifestone:
    menu
            "That? That's just a Life Stone. Basic level one magic item.", L_want_lifestone,
            "Sorry, I'm not interested in talking right now.", -;
    close;

L_want_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"A Life Stone? It is not of this world... and it's just what I need! Where did you get it?\"";
    next;
    menu
        "I made it myself!", L_made_lifestone,
        "Elanore the Healer made it for me.", L_elanore_lifestone,
        "I bought it off someone.", L_bought_lifestone,
        "What? You expect me to remember where I get every single lifestone?", L_expect_lifestone;
    close;

L_made_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"You made it? But then you... you must be from elsewhere as well! How did you get here?\"";
    next;
    menu
        "A mysterious old woman gave me a flower, and then I appeared here.", L_woman_lifestone,
        "I died.", L_dead_lifestone,
        "I think I've told you enough for now...", -;
    close;

L_elanore_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Elanore the Healer... I have not heard of her, but she must be a powerful being indeed. But there are more pressing matters - will you lend me this... 'Life Stone'?\"";
    next;
    menu
        "Yeah, whatever.", L_offer_lifestone,
        "I'm not giving you my stuff!", -;
    close;

L_bought_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"And you could afford it? Something as powerful as this must be worth a fortune.\"";
    next;
    menu
        "Actually, it was only 100 GP.", L_cheap_lifestone,
        "Yeah, well, I got a few million in the bank.", L_rich_lifestone,
        "Powerful? I thought it just did minor healing.", L_powerful_lifestone;
    close;

L_expect_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Well, I suppose so. I need something like this, however... I must be sure it has not been tainted with darkness. If you don't remember where you got it, it's no use to me.\"";
    close;

L_woman_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"An old woman gave you - ? Well, never mind that. This 'Life Stone'... I think I need it. Will you lend it to me?\"";
    next;
    menu
        "Sure.", L_offer_lifestone,
        "Sorry, I need it.", -;
    close;

L_dead_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"So... you're dead? Then maybe this world is some kind of... afterlife to yours?\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"But if this world is dying, how can it be an afterlife? That doesn't make sense...\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Unless you were already dead, and you've been reincarnated...\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"But surely you wouldn't be able to make a powerful thing like this... this 'Life Stone' in a world for the dead?\"";
    mes "\"But since you are here, and you do have this Life Stone - can I borrow it? I think I may need it, and quite soon.\"";
    next;
    menu
        "Yes, take it.", L_offer_lifestone,
        "No, I need it.", -;
    close;

L_cheap_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Then that was a bargain, my friend. This must surely be worth thousands! And I'm afraid I'm going to have to ask you if I may borrow it.\"";
    next;
    menu
        "Yeah, you can.", L_offer_lifestone,
        "Nope, sorry.", -;
    close;

L_rich_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Ah! I'm afraid I expected you to be poor... being the warrior type, I mean. Well... I'm going to need this Life Stone. It's quite important. Might I purchase it from you?\"";
    next;
    menu
        "Indeed. That will be 50,000 GP, please.", L_expensive_lifestone,
        "Better. You can have it for free!", L_offer_lifestone,
        "No. It's mine.", -;
    close;

L_powerful_lifestone:
    if (getskilllv(SKILL_MAGIC)) goto L_hasmagic_lifestone;
    mes "[Doctor]";
    mes "";
    mes "\"It contains a strange power which I have never detected before... and I think I can use it. Can I borrow it off you?\"";
    next;
    menu
        "Yeah, if you want.", L_offer_lifestone,
        "Er... no. My powerful rock! Ha!", -;
    close;

L_hasmagic_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"It contains a strange power which I have never detected before... except... in you. You have this power in you!\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Anyway... this stone, this Life Stone, can I borrow it?\"";
    next;
    menu
        "Sure. Here you are.", L_offer_lifestone,
        "Tell me more about this power.", L_power_lifestone,
        "No.", -;
    close;

L_power_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"There's nothing I can really tell you. I just know it's there, I don't know what it is. Can I borrow the Stone?\"";
    next;
    menu
        "Yeah, sure.", L_offer_lifestone,
        "No.", -;
    close;

L_help_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Just the boost I needed... hm? No, that's all for now, thank you. Is there anything *you* need?\"";
    next;
    menu "I might have some questions later, if you'll be here...", -,
         "Thank you for the offer, really, but I'm fine.", -;
    mes "[Doctor]";
    mes "";
    mes "\"Well, I'll still be gathering information myself, so perhaps we'll cross paths again.\"";
    close;

L_expensive_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Oh, excuse me. I'm not sure about your currency, but I don't think I can cover that right now. Please let me know if you change your mind.\"";
    close;

L_only_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Yes... uh, well, I suppose if you wanted I could pay you for it. Let me see now...\"";
    next;
    mes "\"Here we are! It's all I've got on me at the moment, I'm afraid.\"";
    getitem "StrangeCoin", 1;
    next;
    menu
        "Is there anything else you need?", L_help_lifestone,
        "Alright then. Bye!", -;
    close;

L_offer_lifestone:
    if (countitem("LifeStone") < 1)
        goto L_lost_lifestone;

    delitem "LifeStone", 1;
    callsub S_Update_Helped;

    if (countitem("LifeStone") == 0)
        goto L_one_lifestone;

    mes "[Doctor]";
    mes "";
    mes "\"Wonderful! What a spot of luck it was you coming here with this. You don't know how much you deserve thanks.\"";
    mes "He takes your lifestone and places it into a curious device, then waves the device up and down the tree. It makes a number of beeping sounds, and the Doctor seems happy.";
    next;
    goto L_given_lifestone;

L_one_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Wonderful! What a spot of luck it was you coming here with this. You don't know how much you deserve thanks.\"";
    mes "He takes your lifestone and places it into a curious device, then waves the device up and down the tree. It makes a number of beeping sounds, and the Doctor seems happy.";
    next;
    menu
        "Is there anything else you need?", L_help_lifestone,
        "That was the only one I had, I'm glad it helped.", L_only_lifestone,
        "Alright then. Bye!", -;
    close;

L_lost_lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Brilliant! Fantastic! This will surely help... Wait, I thought you had a lifestone for me? Well, maybe you can come by again when you do.\"";
    close;

L_given_lifestone:
    menu
        "Is there anything else you need?", L_help_lifestone,
        "Alright then. Bye!", -;
    close;

L_At_Tree_Helped:
    mes "[Doctor]";
    mes "";
    mes "\"Fantastic! Your help with this tree is much appreciated. I believe we are that much closer to solving this mystery.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"I suspect there is still much to do. Please feel free to look around, there might be more information to gather elsewhere.\"";
    next;
    menu "Okay, I'll see you around!", -,
            "Actually, I'd like to go home now. Any chance you could help?", L_Warning;
    close;

// ===================================================================
// Helper portions, duplicated in each script for want of time, sorry.
// ===================================================================

// The player has defeated the invader and helped enough times.
L_Return_Ready_Optional:
    if (!(~(Easter_2010_QuestState >> E10_HELPED_DOCTOR_SHIFT) & E10_HELPED_DOCTOR_MASK) || ((Easter_2010_QuestState >> E10_HELPED_DOCTOR_TREE_SHIFT) & E10_HELPED_DOCTOR_TREE_MASK))
        goto L_Return_Ready;

    // Player can help one more time, if so desired.
    mes "[Doctor]";
    mes "";
    mes "\"Well... this has been quite an adventure, hasn't it? I'd say it's about timey--er, time for me to go, but I think I can stick around for a little while longer to tie up some loose ends for myself.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Oh, did you want to help again?\"";
    next;
    menu "Sure, that sounds good", L_At_Tree,
            "Hm, I can't right now, but maybe later.", L_Return_Ready,
            "I was looking for a way to go home.", L_Return_Capable,
            "No, sorry, I don't think so.", L_Return_Ready;
    close;

// Player has done "everything" to do in this world, just talking to the Doctor.
L_Return_Ready:
    set @parting$, "!";
    if (strcharinfo(0) == "Alonso" || strcharinfo(0) == "AlOnS") set @parting$, ", Alonso!";
    mes "[Doctor]";
    mes "";
    mes "\"Well, you have been absolutely brilliant! Brilliant! Very impressive.\" He smiles kindly and shakes your hand. \"It has been a pleasure. Now for the next adventure. Allons-y" + @parting$ + "\"";
    close;

L_Defeat_Invader:
    mes "[Doctor]";
    mes "";
    mes "\"Ah-ha! It's nice to see you again. How goes the battle?\"";
    next;
    menu "I'm having a hard time, actually. I'd like to go home...", -,
            "Regrouping now for the next encounter, actually.", L_Encourage;
   goto L_Warning;

L_Encourage:
    mes "[Doctor]";
    mes "";
    mes "\"Oh, well, I think you'll prevail in the end! If you'll excuse me, I still have some things to see to.\"";
    close;

L_MidReward:
    if (((Easter_2010_QuestState >> E10_FLAG_MID_REWARD_SHIFT) & E10_FLAG_MID_REWARD_MASK)) close;
    mes "[Doctor]";
    mes "";
    mes "\"Fantastic! You have really been quite helpful.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Er, now that I think about it, perhaps I have something you'd be interested in.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"While visiting another dimension--hm, as a matter of fact, it was quite like this one. But their choices in the past seem to have differed from the ones here...\"";
	next;
    mes "[Doctor]";
    mes "";
    mes "The Doctor reflects on his words. \"Interesting how things turn out. Well, I now have a lot of these Valentine's Glasses, if you'd like a pair.\"";
    next;
    getinventorylist;
    if (@inventorylist_count == 100)
        goto L_MidReward_NoRoom;
    mes "[Doctor]";
    mes "";
    mes "He hands you the glasses.";
    mes "\"They're not too brainy, or suited for detecting background radiation, but they are charming.\"";
    set Easter_2010_QuestState, Easter_2010_QuestState & ~(E10_FLAG_MID_REWARD_MASK << E10_FLAG_MID_REWARD_SHIFT) | (E10_FLAG_MID_REWARD << E10_FLAG_MID_REWARD_SHIFT);
    getitem E10_MIDREWARD_ID, 1;
    close;

L_MidReward_NoRoom:
    mes "[Doctor]";
    mes "";
    mes "\"Oh, I don't think you have room for these. Well, I suppose I'll hold on to them for now.\"";
    close;

// Warning about the potential perils ahead, but the player must still want to abort the quest.
L_Warning:
    mes "[Doctor]";
    mes "";
    mes "\"There is no doubt in my mind that what awaits us is both powerful and dangerous, to say the least.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"If this... destruction, this disregard for life isn't an indication, what is?\"";
    mes "He takes a moment, searching your face.";
    next;
    mes "[Doctor]";
    mes "";
    if (((Easter_2010_QuestState >> E10_HELPED_DOCTOR_SHIFT) & E10_HELPED_DOCTOR_MASK))
        mes "\"I do appreciate your help thus far, really. And I did look forward to working with you again in putting an end to this devastation.\"";
    if (!((Easter_2010_QuestState >> E10_HELPED_DOCTOR_SHIFT) & E10_HELPED_DOCTOR_MASK))
        mes "\"Despite the danger, I think pressing on would certainly be a brave choice.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"But if you were to leave now, I'm afraid it would be impossible to return...\"";
    mes "He pauses again. \"There is still time for you to turn back now, while it's relatively easy.\"";
    next;
    menu "N-no, I-I think I will continue... Yes, I'm ready!", -,
            "Now that you mention it, maybe I'd better leave now while I can.", L_Turn_Back,
            "Um, could I have a minute to think it over?", -;
    close;

L_Turn_Back:
    mes "[Doctor]";
    mes "";
    mes "\"You really want to turn back now?\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"I don't think there's any shame in going back. Quite the contrary. You're brave for even being here.\"";
    mes "He hesitates ever so slightly, choosing his words. \"I just wanted to make sure you were certain about your decision.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Once you've left, I don't see how you'll be able to return.\"";
    next;
    menu "On second thought, perhaps I will stick around.", -,
            "No, no, I'm quite sure I want to leave.", L_Really_Return;
    close;

// The player definitely wants to go back, and there's no returning.
L_Really_Return:
    if ((Easter_2010_QuestState >> E10_FLAG_RETURN_READY_SHIFT) & E10_FLAG_RETURN_READY_MASK == E10_FLAG_RETURN_READY && (Easter_2010_QuestState >> E10_STATE_ROSE_SHIFT) & E10_STATE_ROSE_MASK == E10_STATE_ROSE_ROSE_COMPLETE)
        goto L_Return_Capable;
    mes "[Doctor]";
    mes "";
    mes "\"If that is what you want, then consider it done. And good luck.\"";
    next;
    goto L_Return_Player;

L_Return_Player:
    callsub S_Helped_Count;
    if (countitem("DarkPetal") == 0 && @Easter_2010_helper < 3) goto L_Difficult_Return;
    set Easter_2010_QuestState, (Easter_2010_QuestState & ~(E10_STATE_ROSE_MASK << E10_STATE_ROSE_SHIFT)) | (E10_STATE_ROSE_RETURNED << E10_STATE_ROSE_SHIFT);
    if (@Easter_2010_helper < 3)
        delitem "DarkPetal", 1;
    savepoint "009-1", 52, 40;
    warp "009-1", 0, 0;
    close;

L_Difficult_Return:
    mes "[Doctor]";
    mes "";
    mes "\"Hm... you don't seem to have the thing that brought you here, that petal, that I could have used to send you back... assuming you really do want to give up.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Others have been able to battle some darkness directly, which might serve as a substitute.\"";
    mes "\"You could still help me here and elsewhere if you want to try to get this done once and for all, but if you want to go early you will need to fight, somehow.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Though there are others helping, too. No doubt that soon enough, you'll be able to go anyway...\"";
    close;

L_Return_Capable:
    mes "[Doctor]";
    mes "";
    mes "\"Hm. Oh, it looks like you've learned how to travel between these worlds on your own. Don't you remember the way?\"";
    next;
    menu "Oh, you're right! It was a spell, um..." + getspellinvocation("world-shift") + " was the name!", -;
    mes "[Doctor]";
    mes "";
    mes "\"Excellent! Though I suspect its effects will work best when you are closer to where you started.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"When you came to this world, where did you end up? I trust that is your origin.\"";
    close;

S_Dialogue_Knows:
    mes "[Doctor]";
    mes "";
    mes "\"Oh, hello again... hm...\"";
    next;
    mes "[Doctor]";
    mes "";
    mes @responses$[rand(getarraysize(@responses$))];
    return;

S_Update_Knows:
    // Working "name" for when he hasn't introduced himself (can be changed).
    mes "[Mysterious Man]";
    mes "";
    mes @responses$[rand(getarraysize(@responses$))];
    next;
    set Easter_2010_QuestState, Easter_2010_QuestState & ~(E10_FLAG_KNOWS_DOCTOR_MASK << E10_FLAG_KNOWS_DOCTOR_SHIFT) | (E10_FLAG_KNOWS_DOCTOR << E10_FLAG_KNOWS_DOCTOR_SHIFT);
    mes "[Doctor]";
    mes "";
    mes "\"Oh, excuse me,\" he gestures. \"I'm the Doctor.\"";
    return;

S_Update_Helped:
    set Easter_2010_QuestState, Easter_2010_QuestState & ~(E10_FLAG_HELPED_DOCTOR_TREE_MASK << E10_FLAG_HELPED_DOCTOR_TREE_SHIFT) | (E10_FLAG_HELPED_DOCTOR_TREE << E10_FLAG_HELPED_DOCTOR_TREE_SHIFT);
    callsub S_Helped_Count;
    if (@Easter_2010_helper == 3) set Easter_2010_QuestState, (Easter_2010_QuestState & ~(E10_STATE_ROSE_MASK << E10_STATE_ROSE_SHIFT)) | (E10_STATE_ROSE_ROSE_COMPLETE << E10_STATE_ROSE_SHIFT);
    return;

S_Helped_Count:
    set @Easter_2010_helper, 0;
    if ((Easter_2010_QuestState >> E10_FLAG_HELPED_DOCTOR_TREE_SHIFT) & E10_FLAG_HELPED_DOCTOR_TREE_MASK == E10_FLAG_HELPED_DOCTOR_TREE)
        set @Easter_2010_helper, @Easter_2010_helper + 1;
    if ((Easter_2010_QuestState >> E10_FLAG_HELPED_DOCTOR_ISLAND_SHIFT) & E10_FLAG_HELPED_DOCTOR_ISLAND_MASK == E10_FLAG_HELPED_DOCTOR_ISLAND)
        set @Easter_2010_helper, @Easter_2010_helper + 1;
    if ((Easter_2010_QuestState >> E10_FLAG_HELPED_DOCTOR_STONES_SHIFT) & E10_FLAG_HELPED_DOCTOR_STONES_MASK == E10_FLAG_HELPED_DOCTOR_STONES)
        set @Easter_2010_helper, @Easter_2010_helper + 1;
    if ((Easter_2010_QuestState >> E10_FLAG_HELPED_DOCTOR_FRUIT_SHIFT) & E10_FLAG_HELPED_DOCTOR_FRUIT_MASK == E10_FLAG_HELPED_DOCTOR_FRUIT)
        set @Easter_2010_helper, @Easter_2010_helper + 1;
    return;
}