summaryrefslogtreecommitdiff
path: root/world/map/npc/easter/2010/Doctor2.txt
blob: c98f71c2f52845eeee9eda8f3a598dea626ca40f (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
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
// Doctor 2, at the island.

028-1.gat,89,37,0	script	Doctor#who2	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;

// =======================
// === Second location ===
// =======================

L_At_Island:
    // Checks for if the player has already helped the doctor, either here or elsewhere, go here.
    if ((Easter_2010_QuestState >> E10_FLAG_HELPED_DOCTOR_ISLAND_SHIFT) & E10_FLAG_HELPED_DOCTOR_ISLAND_MASK == E10_FLAG_HELPED_DOCTOR_ISLAND)
        goto L_At_Island_Helped;

    if ((Easter_2010_QuestState >> E10_FLAG_KNOWS_DOCTOR_SHIFT) & E10_FLAG_KNOWS_DOCTOR_MASK == E10_FLAG_KNOWS_DOCTOR)
        goto L_At_Island_Knows_Doctor;

    setarray @responses$, "\"Odd spheres of energy floating about... Interesting. The decay is very severe here...\" He looks over, as if only now noticing your presence. \"Excuse me, how do you do? Don't mean to be rude, just lost in thought...\"", "There's a man in glasses, scanning the area carefully. \"There are more trees affected than I had thought.\" He extends his hand, waving a small device around carefully.", "\"Well, so what does that mea--oh, sorry! Please don't mind me, but right now I'm trying to figure out why this world is dying.\"", "A somewhat oddly dressed man turns about. Suddenly, he speaks up, \"No, no, something's definitely wrong. Explain it? Well... it's complicated.\"";
    callsub S_Update_Knows;
    close;

L_At_Island_Knows_Doctor:
    setarray @responses$, "\"Oi! What killed these trees...\" He takes a moment, studying carefully. \"And this open area--there don't seem to be any creatures around. Interesting.",
                          "\"Hm, do you know anything about those spheres of energy?\" The device he's holding glows briefly. \"Well, that's what I thought. If you'll excuse me for a moment.\" He adjusts his glasses and continues his work.",
                          "\"There's the other, big tree... Then there are these trees, and... glowing orbs. Some... force is slowly destroying this world.\" The Doctor finishes his thought and continues pacing.",
                          "The Doctor takes out the same strange device, anticipating a question and responding. \"Oh, this, it's good for everything. Right now I'm looking for what might be controlling these blobs of light; they don't seem to be moving on their own.\"",
                         "\"I know there is some other agent at work here. I don't quite know what it is yet, but... Well, if you have any information that could help, please do share.\"";

    callsub S_Dialogue_Knows;
    next;

L_At_Island_Menu:
    setarray @menuitems$, "", "", "", "", "";
    set @c, 0;

    set @menuitems$[@c], "What's going on here? It looks like everything is dying! The trees are dead and decaying, the grass is weak and easily crushed, and the animals are gone!";
    set @menuid[@c], E10_ISLAND_MENU_DEATH_AWE;
    set @c, @c + 1;

    set @menuitems$[@c], "There's an eerie sort of silence about this place, don't you think? ... Er, what was that?! ... It doesn't seem all that safe here...";
    set @menuid[@c], E10_ISLAND_MENU_SCARED;
    set @c, @c + 1;

    set @menuitems$[@c], "The orbs of light flying about? Wisps. And you know, they do seem to be behaving strangely, or as much is possible given the circumstances. You think there's a reason for that?";
    set @menuid[@c], E10_ISLAND_MENU_WISPS;
    set @c, @c + 1;


    if (!(Easter_2010_QuestState & (E10_FLAG_HELPED_DOCTOR_TREE << E10_FLAG_HELPED_DOCTOR_TREE_SHIFT))) goto L_post_tree_help;
    set @menuitems$[@c], "This place looks dead... do you need any more lifestones?";
    set @menuid[@c], E10_ISLAND_MENU_OFFER_LIFESTONE;
    set @c, @c + 1;

L_post_tree_help:
    menu
        @menuitems$[0], -,
        @menuitems$[1], -,
        @menuitems$[2], -,
        @menuitems$[3], -,
        @menuitems$[4], -,
        "I'm actually more interested in going home.", L_Warning;

    set @menu, @menu -1;
    if (@menu >= @c) close;
    if (@menuid[@menu] == E10_ISLAND_MENU_DEATH_AWE) goto L_At_Island_Death_Awe;
    if (@menuid[@menu] == E10_ISLAND_MENU_SCARED) goto L_At_Island_Scared;
    if (@menuid[@menu] == E10_ISLAND_MENU_WISPS) goto L_At_Island_Wisps;
    if (@menuid[@menu] == E10_ISLAND_MENU_OFFER_LIFESTONE) goto L_At_Island_Offer_Lifestone;
    close;

L_At_Island_Death_Awe:
    mes "[Doctor]";
    mes "";
    mes "\"Yes, yes. For most, death can't be avoided, but this...\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"So much death, and so quickly, even. It doesn't seem quite natural, does it?\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Take a look at this, won't you?\"";
    next;
    menu "I'm not sure, what am I looking for exactly?", -;
    mes "[Doctor]";
    mes "";
    mes "\"Ah, you don't see it? Well, these glasses of mine--well, here, take a look\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "The Doctor takes off his red-blue glasses and holds them up. You peer through and examine the surroundings.";
    next;
    menu "I... don't see anything unusual, sorry.", -,
            "Oh, something about the grass?", L_At_Island_Grass,
            "Er, what exactly do these glasses do?", L_At_Island_Glasses,
            "Oh, so the... the um... that?", -,
            "Right, of course, that is... very... interesting?", -,
            "Could you hold that thought? I need to check on something else first.", -;
    close;

L_At_Island_Grass:
    mes "[Doctor]";
    mes "";
    mes "The Doctor pauses, examining the ground. \"Now that you mention it...\" He holds up a blade of grass between his fingers. \"There is a sort of strange texture about it, perhaps slightly grating.\"";
    next;
    menu "Yes, I had noticed that, too. Do you think it's relevant?", L_At_Island_Explain,
            "Hm, now that I think about it, it doesn't seem all too different from my own world's.", L_At_Island_Explain,
            "Do you think it's a result of all the death here?", L_At_Island_Explain,
            "Oh, excuse me for just a second.", -;
    close;

L_At_Island_Glasses:
    mes "[Doctor]";
    mes "";
    mes "\"Well, I had suspected that what may have been causing damage to this world was in fact from another universe.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"So you can think of these glasses as the means to identifying when something or someone has gone through the Void.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Here, let me show you.\" The Doctor turns the glasses so you can view him and moves around.";
    next;
    menu "Oh, wow. There's a sort of... grainy effect about you. Like particles?", -;
    mes "[Doctor]";
    mes "";
    mes "\"Yes, stuff from the Void. I saw something earlier, but nothing now. Strange.\"";
    close;

L_At_Island_Explain:
    mes "[Doctor]";
    mes "";
    mes "\"Well, from the other things I've seen here, I wouldn't couldn't say so definitively, but it's possible.\"";
    next;
    mes "Your eyes follow the Doctor as he begins to pace. He pauses to continue his thought.";
    next;
    mes "[Doctor]";
    mes "";
    if ((Easter_2010_QuestState >> E10_HELPED_DOCTOR_SHIFT) & E10_HELPED_DOCTOR_MASK)
        goto L_At_Island_Theory;
    mes "\"Well, it's interesting. I'll have to take a closer look.\"";
    close;

L_At_Island_Theory:
    mes "[Doctor]";
    mes "";
    mes "\"Based on what we had uncovered before, I think some force is exerting its will on those glowing entities.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"How it all ties together is what I'm still trying to figure out.\" He adjusts his glasses again.";
    next;
    menu "It is very strange, can't argue there.", -,
            "I have faith in you.", -,
            "What if--oh, are you thinking about something?", L_At_Island_Knows_Doctor,
            "Yes, that is an interesting idea. I will think it over for a bit.", -;
    close;

L_At_Island_Scared:
    mes "[Doctor]";
    mes "";
    mes "\"Ahh, feeling a bit anxious are we? I don't blame you, chap, it is a bit unnerving here.\" The Doctor continues to analyze the environment with his various instruments, apparently lost in thought.";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"It's really quite strange... the levels of electromagnetic energy in the area seem to be spiking regularly, almost in time with the movements of these glowing blobs.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Judging from these readouts, it would seem that either some force is acting upon these orbs of light, or they are in fact creating a sporadic magnetic field.\"";
    next;
    menu "What? I'm just really, really scared!", L_At_Island_Terror,
            "Electromagnetic what now?", L_At_Island_Magnetic,
            "I've got to get out of here!", L_At_Island_Terror,
            "Um, uh, I... gotta run... to some place more safe.", L_At_Island_Terror;
    close;

L_At_Island_Terror:
    mes "[Doctor]";
    mes "";
    if (BaseLevel == 99)
        mes "\"Really? Out of those I've detected here, I would have thought you'd be among the most skilled.\"";
    if (BaseLevel >= 90 && BaseLevel <= 98)
        mes "\"Er, um? I'm so sorry, I had assumed you were more than capable for this sort of thing.";
    if (BaseLevel >= 70 && BaseLevel <= 89)
        mes "\"Please excuse me, but I had sensed you were stronger than that.\"";
    if (BaseLevel >= 50 && BaseLevel <= 69)
        mes "\"Ah... well, I have seen others here, too. Perhaps you could work together?\"";
    if (BaseLevel <= 49)
        mes "\"Don't lose hope, you're not alone in all this. We'll get through it.\"";
    next;
    menu "I don't know what to say...", -,
            "Yes, yes, you're absolutely right!", L_At_Island_Calm,
            "I-I need a moment to think.", -;
    close;

L_At_Island_Magnetic:
    mes "[Doctor]";
    mes "";
    mes "\"Well, haven't you noticed the strange behaviour of those blobs of light?\"";
    next;
    menu "Um, strange doesn't even begin to cover this world.", -,
            "Sure, I can never find enough stuff after fighting them.", L_At_Island_Loot,
            "Other than the fact that they wish to kill me?", L_At_Island_Wisps,
            "Blobs? I hadn't noticed anything.",L_At_Island_Knows_Doctor;
    close;

L_At_Island_Calm:
    mes "[Doctor]";
    mes "";
    mes "\"There, isn't that better?\" He smiles warmly. \"Now, I was thinking--\"";
    next;
    menu "Sorry to interrupt, but...", L_At_Island_Menu,
            "*I* was thin--oh, thought you were pausing. Sorry, please continue.", L_At_Island_Theory,
            "Sorry, I need another moment to regain my composure.", -;
    close;

L_At_Island_Loot:
    mes "[Doctor]";
    mes "";
    mes "He seems confused. \"Find enough stuff? I'm not sure I could help you there, but perhaps someone else can?\"";
    close;

L_At_Island_Wisps:
    mes "[Doctor]";
    mes "";
    mes "\"I'm glad you asked! You see, the behaviour of these creatures doesn't appear to be very natural at all; the elephant in the room if you will.\" The Doctor pauses temporarily to check his instruments again.";
    next;
    menu "Well, they are normally very peaceful; they'll only attack if you attack them.", -;
    mes "[Doctor]";
    mes "";
    mes "\"Interesting! I've seen them attack with no discernable provocation. This is quite ominous. \"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\If it didn't sound so mad, I'd postulate that something is controlling these things... some malevolent force or entity.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Oh, sorry, what do you think?\"";
    next;
    menu "That doesn't seem quite right, to be honest.", -,
            "Now that you mention it, I had some ideas.", L_At_Island_Ideas,
            "Malevolent? Where did you get that idea?", -,
            "Instruments? They seem quite versatile.", L_At_Island_Devices,
            "That's a lot for me to take in right now. Excuse me.", -;
    close;

L_At_Island_Ideas:
    menu "Strange behaviour comes up with magic in my world, like agitating creatures to do harm.", L_At_Island_Magic,
            "Maybe something or someone is summoning them?", L_At_Island_Summon,
            "Could it be possible they're not from this place, either?", L_At_Island_Void,
            "Maybe this sounds crazy, but... could these be the remains of all the entities that have died?", L_At_Island_Spirits,
            "I don't understand time all that well, but perhaps the wisps indicate a rip... in the fabric?", L_At_Island_Time,
            "Er, how embarrassing. I seem to have forgotten what I was going to say.", -;
    close;

L_At_Island_Devices:
    mes "[Doctor]";
    mes "";
    mes "\"Hm? Oh, ha-ha, like this?\" The Doctor points out one of the instruments.";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"They are very useful, yes! Fantastic, even. Proved invaluable in so many circumstances.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Yes. Well, then.\" He continues his analysis, putting something away, almost in anticipation of your next question.";
    close;

L_At_Island_Magic:
    mes "[Doctor]";
    mes "";
    mes "\"Magic, you say? Yes, I have been hearing about that from others, too.\"";
    mes "The Doctor looks off into the distance.";
    next;
    menu "Erm? Hello?", -;
    mes "[Doctor]";
    mes "";
    mes "\"Still here, just wondering. So you say it's possible to aggravate creatures where you come from?\"";
    next;
    menu "Yes, within a certain radius of the caster, it is possible.", -;
    mes "[Doctor]";
    mes "";
    mes "\"Really? Ha-ha! I knew it. Tell me more, could you? Anything particular about the practice of magic in your world?\"";
    next;
    menu "Well... it is possible to follow a darker path, so to speak, when it comes to practicing magic.", L_At_Island_Dark,
            "Hm. Not sure if it's relevant, but I have often suspected an unknown evil in my own world.", L_At_Island_Dark,
            "Even the 'good' practicioners seem to exhibit malicious behaviour at times.", L_At_Island_Evil,
            "I don't know much more than that, I'm afraid.", -;
    close;

L_At_Island_Summon:
    mes "[Doctor]";
    mes "";
    mes "\"Summoning them? Via some sort of magic, presumably, or do you mean by other means?\"";
    next;
    menu "Yes, with magic, I think. The creatures can be aggravated, even.", L_At_Island_Magic,
            "Other means? I never thought of that. Could you explain?", L_At_Island_Void,
            "On second thought, I've lost my train of thought.", -;
    close;

L_At_Island_Void:
    mes "[Doctor]";
    mes "";
    mes "\"Sure, it is a distinct possibility.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"The Void, or otherwise this sort of, empty space between universes.\"";
    mes "\"It might be easier to think about the universes as being stacked on top of one another, though can't quite say there's an up or a down about the Void.\"";
    close;

L_At_Island_Spirits:
    mes "[Doctor]";
    mes "";
    mes "\"Sort of like spirits?\" Or are you suggesting that these blobs are the collective energy lost upon death?\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Um, I'm not sure what to make of that.\"";
    close;

L_At_Island_Time:
    mes "[Doctor]";
    mes "\"Time, did you say?\" He takes a moment. \"Well, it's more like a big ball--it's probably not what you think. But you know? I have detected temporal abnormalities here.\"";
    close;

L_At_Island_Dark:
    mes "[Doctor]";
    mes "";
    mes "\"Your home isn't all that safe? Are there regular patrols, or is there a shortage of help?\"";
    next;
    menu "I forgot what we were talking about. Something about the wisps?", L_At_Island_Wisps,
            "Well, either way, I can't quite compare that to this... sinister atmosphere.", -,
            "It--wait, a shortage? Well...", L_At_Island_Help;
    mes "[Doctor]";
    mes "";
    mes "\"That feeling does pervade this world. A darkness that wishes to smother and extinguish all in its path.\"";
    next;
    menu "Maybe a poison was unleashed, and it's what's causing the death, and the erratic behaviour?", -,
            "So, could the behaviour of these wisps be explained by magic?", -,
            "Could we start over? I was trying to recall what you said--hello?", L_At_Island_Knows_Doctor,
             "Well, the effects, though widespread, seem to be more severe at times.", L_At_Island_Evil;
    mes "[Doctor]";
    mes "";
    mes "\"A very valid idea. Hm...\"";
    close;

L_At_Island_Evil:
    mes "[Doctor]";
    mes "";
    mes "\"Yes, sadly that does seem to be the case at times. I feel we've almost solved at least this mystery. Just... definitively, what would you say is going on here?\"";
    next;
    setarray @menuitems$,
     "I think the wisps are drawn to those that have died, like... me? And when they become aggravated they end up destroying more of the world.",
        "In order to escape, the beings that have died and ended up here are forced to... fight?",
        "An evil force placed a curse on all of us, dooming us to fight here, pitted against one another in pointless battle--for all eternity!",
        "The trees are dead as a result of the fighting, and the wisps are angry spirits looking for revenge?",
        "This world is in disarray, subject to chaos, and ultimately, utter destruction. Those, like me, have been given an opportunity, a choice--to put an end to this, to drive out the evil stench that plagues this land.",
        "Unlike me, the old woman that led me here was not without hidden motives. So, she planted a way to bring me here, and in doing so, eliminated the ones that could foil her plans.",
        "When I died and came here, my soul was fragmented, and part of it manifested as the tormented wisps here now?",
        "You do seem rather odd, using those alien devices. I think you're to blame for what's happened here!",
        "Something, or someone, perhaps, walks this world, appearing from the shadows. With it come misery and pain. But it is up to us to rid this world of its blight.",
        "There is an intermittent, evil presence in this world. When it arrives it brings about more destruction, resulting in these dead trees. Then, at the whim of its madness, it uses magic to incite the wisps to attack and be unwilling accomplices.";
    setarray @submenu$, "", "", "", "";
    setarray @submenuindex, 0, 0, 0, 0;
    set @c, 0;

L_island_end_menu_loop:
    set @index, rand(getarraysize(@menuitems$));
    set @i, 0;
    if (@c == 0) goto L_island_post_menu_loop_sub;
L_island_end_menu_loop_sub:
    if (@submenu$[@i] == @menuitems$[@index]) goto L_island_end_menu_loop;
    set @i, @i + 1;
    if (@i < @c) goto L_island_end_menu_loop_sub;
L_island_post_menu_loop_sub:
    set @submenu$[@i], @menuitems$[@index];
    set @submenuindex[@i], @index;
    set @c, @c + 1;
    if (@c < 4) goto L_island_end_menu_loop;

    menu @submenu$[0], -,
         @submenu$[1], -,
         @submenu$[2], -,
         @submenu$[3], -;
    set @menu, @menu - 1;
    if (@menu >= 4 || @menu < 0) goto L_island_oo_range;
    if (@submenuindex[@menu] == 8 || @submenuindex[@menu] == 9)
        goto L_At_Island_Resolve;

L_island_oo_range:
    mes "[Doctor]";
    mes "";
    mes "\"Ah, I'm sorry, but that doesn't seem to fit with what we know. Perhaps we should give this some more thought.\"";
    close;

L_At_Island_Help:
    menu "Yes, help is probably needed, but I hadn't really considered my own role...", -,
            "Perhaps, but it's not really my problem.", -;
    mes "[Doctor]";
    mes "";
    mes "\"Just as you are helping here, I believe that if it is what you desire, you can find a suitable way to help elsewhere, too.\"";
    close;

L_At_Island_Resolve:
    callsub S_Update_Helped;
    mes "[Doctor]";
    mes "";
    mes "\"Ha-ha, that's it! Brilliant!\" He shakes your hand enthusiastically. \"I knew you could do it! You don't know how much your help means!\"";
    close;

L_At_Island_Offer_Lifestone:
    mes "[Doctor]";
    mes "";
    mes "\"Hm, no, while I appreciate your generosity, I don't think that will be necessary.\"";
    mes "He looks off into the distance. \"Strange things...\"";
    close;

L_At_Island_Helped:
    mes "[Doctor]";
    mes "";
    mes "The Doctor smiles. \"A disturbing force is devastating this world. But with your help I think we're well on our way. Indeed.\"";
    next;
    mes "[Doctor]";
    mes "";
    mes "\"Well, I won't keep you, still rather busy. Should probably survey some other regions, too.\" The Doctor's words trail off as he returns to thought.";
    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_ISLAND_SHIFT) & E10_HELPED_DOCTOR_ISLAND_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_Island,
            "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_ISLAND_MASK << E10_FLAG_HELPED_DOCTOR_ISLAND_SHIFT) | (E10_FLAG_HELPED_DOCTOR_ISLAND << E10_FLAG_HELPED_DOCTOR_ISLAND_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;
}