2018-04-29 20:49:43 +02:00
|
|
|
|
/*
|
2019-08-03 19:43:48 +02:00
|
|
|
|
* This software is licensed under the terms of the MIT License.
|
2018-04-29 20:49:43 +02:00
|
|
|
|
* See COPYING for further information.
|
|
|
|
|
* ---
|
2024-05-16 23:30:41 +02:00
|
|
|
|
* Copyright (c) 2011-2024, Lukas Weber <laochailan@web.de>.
|
|
|
|
|
* Copyright (c) 2012-2024, Andrei Alexeyev <akari@taisei-project.org>.
|
2018-04-29 20:49:43 +02:00
|
|
|
|
*/
|
|
|
|
|
|
2019-07-08 02:47:50 +02:00
|
|
|
|
#include "dialog_macros.h"
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
/*
|
|
|
|
|
* Stage 1
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
DIALOG_TASK(reimu, Stage1PreBoss) {
|
2020-04-27 21:58:25 +02:00
|
|
|
|
PRELOAD {
|
|
|
|
|
PRELOAD_CHAR(reimu) {
|
|
|
|
|
PRELOAD_FACE(normal);
|
|
|
|
|
PRELOAD_FACE(unamused);
|
|
|
|
|
PRELOAD_FACE(sigh);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PRELOAD_CHAR(cirno) {
|
|
|
|
|
PRELOAD_FACE(normal);
|
|
|
|
|
PRELOAD_FACE(angry);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Initialization, must be at the very top (after PRELOAD).
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_BEGIN(Stage1PreBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(cirno);
|
|
|
|
|
|
|
|
|
|
// Hide cirno for now, to be revealed later.
|
|
|
|
|
HIDE(cirno);
|
|
|
|
|
|
2020-02-18 00:34:36 +01:00
|
|
|
|
// Let’s wait a bit, then change Reimu’s expression.
|
2020-01-23 01:23:35 +01:00
|
|
|
|
// All timings are in frames (60 = 1 sec).
|
|
|
|
|
WAIT_SKIPPABLE(60);
|
2020-05-07 14:37:26 +02:00
|
|
|
|
// "normal" is the default face.
|
2023-04-10 21:05:46 +02:00
|
|
|
|
FACE(reimu, sigh);
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
// MSG() makes the actor say a line, and then waits an unspecified amount of time (skippable).
|
|
|
|
|
// The timeout is determined by the dialog_util_estimate_wait_timeout_from_text() function in dialog.c
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "Snow during summer? This is certainly familiar…");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
// EVENT()s are handled by stage code.
|
|
|
|
|
// You can find the list of events per dialogue in dialog_interface.h
|
|
|
|
|
// All of them should be signaled eventually.
|
|
|
|
|
EVENT(boss_appears);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(cirno, "Nobody can stop me now!");
|
2020-02-19 00:29:16 +01:00
|
|
|
|
// Reveal Cirno’s portrait
|
|
|
|
|
SHOW(cirno);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
FACE(cirno, normal);
|
|
|
|
|
MSG(cirno, "Mwahahaha!");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
FACE(reimu, puzzled);
|
|
|
|
|
MSG(reimu, "What’s gotten into you all of a sudden?");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
// Titles are not yet implemented, but this should work once they are.
|
|
|
|
|
// Right now this does nothing.
|
2020-02-18 00:34:36 +01:00
|
|
|
|
TITLE(cirno, "Cirno", "Thermodynamic Ice Fairy");
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(cirno, "Gah! Y-you again?! Are you here to get in the way of my plans?!");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "What ‘plans'? Freezing frogs?");
|
|
|
|
|
FACE(reimu, sigh);
|
|
|
|
|
MSG(reimu, "Anyway, I don’t really care. So if you could just—");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
EVENT(music_changes);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
FACE(reimu, annoyed);
|
|
|
|
|
MSG(cirno, "I’ll never tell you! Prepare to be chilled to the bone!");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
// Teardown, must be at the very bottom.
|
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_TASK(reimu, Stage1PostBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage1PostBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(cirno);
|
|
|
|
|
|
|
|
|
|
// VARIANT() changes the base body sprite.
|
|
|
|
|
// Bosses currently only have a "defeated" variant with some clothing damage, to be used in post-battle scenes.
|
2020-02-18 00:34:36 +01:00
|
|
|
|
// Elly’s is called "beaten" and is slightly subdued.
|
2020-01-23 01:23:35 +01:00
|
|
|
|
VARIANT(cirno, defeated);
|
|
|
|
|
|
|
|
|
|
// Bosses also have a "defeated" face to go along with the variant, but all the other faces can be used as well.
|
2020-02-18 00:34:36 +01:00
|
|
|
|
// It’s best to set the face to "defeated" in the beginning of a post-battle dialogue, and change it later if needed.
|
2020-01-23 01:23:35 +01:00
|
|
|
|
FACE(cirno, defeated);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(cirno, "Chill out! I didn’t mean it like that!");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, smug);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "You could have just let me through, you know.");
|
|
|
|
|
MSG(cirno, "Not fair! You broke the rules! I wasn’t ready yet…");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
/*
|
|
|
|
|
* Stage 2
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
DIALOG_TASK(reimu, Stage2PreBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage2PreBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(hina);
|
|
|
|
|
|
2020-02-18 00:34:36 +01:00
|
|
|
|
HIDE(hina);
|
|
|
|
|
WAIT_SKIPPABLE(60);
|
|
|
|
|
|
2020-10-09 00:11:13 +02:00
|
|
|
|
FACE(reimu, normal);
|
|
|
|
|
MSG(reimu, "With those loudmouthed kappa gone, the mountain feels practically deserted.");
|
|
|
|
|
FACE(reimu, sigh);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "I almost miss them.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
EVENT(boss_appears);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(hina, "Ah, it’s Ms. Hakurei.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
SHOW(hina);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
FACE(reimu, normal);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(hina, normal);
|
|
|
|
|
MSG(hina, "I thought you might come.");
|
|
|
|
|
FACE(hina, concerned);
|
|
|
|
|
MSG(hina, "But once again, you’re trying to go places you shouldn’t.");
|
|
|
|
|
MSG(hina, "What a troubled girl…");
|
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, sigh);
|
|
|
|
|
MSG(reimu, "So much for ‘deserted’…");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(reimu, normal);
|
|
|
|
|
MSG(reimu, "Do you even know what you’re protecting me from this time?");
|
|
|
|
|
|
|
|
|
|
TITLE(hina, "Kagiyama Hina", "Gyroscopic Pestilence God");
|
|
|
|
|
|
|
|
|
|
FACE(hina, normal);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(hina, "A bright girl like you should know that Yōkai Mountain is especially dangerous today.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(hina, concerned);
|
|
|
|
|
MSG(hina, "You ought to turn back now, my dear.");
|
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, sigh);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "(She… she completely ignored my question.)");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, puzzled);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "Does it matter that the Gods asked me to come this time?");
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
EVENT(music_changes);
|
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(hina, "I know better than the mountain Gods this time.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(hina, "If you do not turn back immediately, I’ll have to repel you by force.");
|
|
|
|
|
|
|
|
|
|
FACE(reimu, sigh);
|
|
|
|
|
MSG(reimu, "So annoying…");
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_TASK(reimu, Stage2PostBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage2PostBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(hina);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
WAIT_SKIPPABLE(30);
|
2020-05-07 14:37:26 +02:00
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
VARIANT(hina, defeated);
|
|
|
|
|
FACE(hina, defeated);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(reimu, normal);
|
|
|
|
|
|
|
|
|
|
MSG(hina, "So I lost… you can keep going then, I suppose.");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, puzzled);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "You should know by now that I can handle it. Why are you being so overbearing?");
|
|
|
|
|
MSG(hina, "Just don’t say I didn’t warn you, when you inevitably get mauled by whatever’s out there…");
|
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, unamused);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "(Ignored again…)");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
/*
|
|
|
|
|
* Stage 3
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
DIALOG_TASK(reimu, Stage3PreBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage3PreBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(wriggle);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
HIDE(wriggle);
|
|
|
|
|
FACE(reimu, normal);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "Aside from everyone being whipped up into a frenzy, I can’t see anything abnormal yet.");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
EVENT(boss_appears);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(wriggle, "Well, to your human eyes, insects may seem ‘normal’…");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
|
2020-02-18 00:34:36 +01:00
|
|
|
|
SHOW(wriggle);
|
|
|
|
|
FACE(wriggle, proud);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(wriggle, "… but there was a time when we reigned supreme!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(reimu, puzzled);
|
|
|
|
|
MSG(reimu, "Eh? You? Aren’t you a bit far from home?");
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "Besides, ‘reigned supreme’? I’ve never heard of insects ruling over Gensōkyō.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
TITLE(wriggle, "Wriggle Nightbug", "Insect Rights Activist");
|
|
|
|
|
FACE(wriggle, outraged);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(wriggle, "'Far from home'? But you’ve intruded on my secret lair!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(wriggle, proud);
|
|
|
|
|
MSG(wriggle, "Haven’t you heard of the Car—…");
|
|
|
|
|
MSG(wriggle, "Carb—…");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, puzzled);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(wriggle, "That period of history?");
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(wriggle, "It was the greatest time, everyone should’ve heard of it by now!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
MSG(reimu, "Seems pretty far-fetched to me, honestly. But you yōkai are always coming up with the craziest theories…");
|
|
|
|
|
|
|
|
|
|
FACE(wriggle, outraged);
|
2020-05-07 14:37:26 +02:00
|
|
|
|
MSG(wriggle, "Don’t lump us great insects in with common yōkai!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(wriggle, proud);
|
|
|
|
|
MSG(wriggle, "I’m going to restore us to our rightful glory of old!");
|
|
|
|
|
|
|
|
|
|
FACE(reimu, puzzled);
|
|
|
|
|
MSG(reimu, "Giant insects? But you’re tiny.");
|
|
|
|
|
FACE(reimu, unamused);
|
2020-05-07 14:37:26 +02:00
|
|
|
|
MSG(reimu, "And I still don’t know what you mean by ‘glory of old.’");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
EVENT(music_changes);
|
|
|
|
|
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(wriggle, "You don’t seem very educated about our history.");
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(wriggle, "Allow me to be your teacher!");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_TASK(reimu, Stage3PostBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage3PostBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(wriggle);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
VARIANT(wriggle, defeated);
|
|
|
|
|
FACE(wriggle, defeated);
|
|
|
|
|
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(reimu, smug);
|
|
|
|
|
MSG(reimu, "Giant insects roaming Gensōkyō, huh?");
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "Sounds like one of Sanae’s ‘nuclear’ experiments.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(wriggle, "B-but I saw it clearly… the glorious past of insectkind…");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
FACE(reimu, unamused);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "Don’t you have a pretty sweet deal as it is, though?");
|
|
|
|
|
MSG(reimu, "You practically own Gensōkyō’s forests.");
|
|
|
|
|
|
|
|
|
|
MSG(wriggle, "But can’t we ever hope for more…?");
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
/*
|
|
|
|
|
* Stage 4
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
DIALOG_TASK(reimu, Stage4PreBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage4PreBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(kurumi);
|
|
|
|
|
|
2020-02-18 00:34:36 +01:00
|
|
|
|
HIDE(kurumi);
|
|
|
|
|
|
|
|
|
|
FACE(reimu, puzzled);
|
|
|
|
|
MSG(reimu, "Huh? There’s a mansion jutting out of this tower?");
|
|
|
|
|
FACE(reimu, sigh);
|
|
|
|
|
MSG(reimu, "This makes even less sense than usual.");
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
EVENT(boss_appears);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
WAIT_SKIPPABLE(30);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(reimu, normal);
|
|
|
|
|
MSG(reimu, "And who are you supposed to be?");
|
|
|
|
|
|
|
|
|
|
SHOW(kurumi);
|
|
|
|
|
FACE(kurumi, tsun);
|
|
|
|
|
MSG(kurumi, "Oi, that’s what I should be asking!");
|
|
|
|
|
|
|
|
|
|
FACE(reimu, puzzled);
|
2020-05-07 14:37:26 +02:00
|
|
|
|
MSG(reimu, "…?");
|
|
|
|
|
FACE(reimu, unamused);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "And what are you doing, anyways?");
|
|
|
|
|
MSG(reimu, "Are you behind all these… strange thoughts everyone’s having?");
|
|
|
|
|
|
|
|
|
|
FACE(kurumi, normal);
|
|
|
|
|
TITLE(kurumi, "Kurumi", "High-Society Phlebotomist");
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(kurumi, "I have no idea what you mean by ‘strange thoughts’, but I’ll be honest with you…");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(kurumi, "Your clothing is giving me some strange thoughts!");
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(kurumi, "Where’d you even get that outfit?! Dumpster diving?! For real!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(reimu, unamused);
|
|
|
|
|
MSG(reimu, "Ugh, another prissy mansion-dweller.");
|
|
|
|
|
FACE(reimu, sigh);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "I thought I remembered you from somewhere, but no. Absolutely not.");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, assertive);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "Just… stop whatever it is you’re doing, right now.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(kurumi, dissatisfied);
|
|
|
|
|
MSG(kurumi, "Once you get some fashion sense, maybe I will!");
|
|
|
|
|
|
|
|
|
|
FACE(reimu, unamused);
|
|
|
|
|
MSG(reimu, "… so you *are* behind this, huh?");
|
|
|
|
|
FACE(reimu, sigh);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "Besides, haven’t you ever seen a shrine maiden before?");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(kurumi, normal);
|
|
|
|
|
MSG(kurumi, "You’re a shrine maiden?");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, unamused);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(kurumi, "More like… BRINE maiden!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, assertive);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "T-this is what a shrine maiden wears. It’s a uniform.");
|
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(kurumi, "Uniform? Are you kidding me?!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(kurumi, "I’ve seen a real shrine maiden before, and she didn’t look anything like you!");
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(kurumi, "What’s with those patterns, anyways? It’s completely unorthodox! It’s not even using the right type of fabric!");
|
|
|
|
|
FACE(kurumi, tsun);
|
|
|
|
|
MSG(kurumi, "Get out of here, fake-maiden!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, irritated);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "… ARGH!");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, outraged);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "Listen!! It’s HARD to find clothes I can wear every day on the job!");
|
|
|
|
|
MSG(reimu, "It has to fit a certain style!");
|
|
|
|
|
MSG(reimu, "And only a few fabrics feel good to wear!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "I can’t stand scratchy wool or slippery silk!");
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "Everything else feels terrible against my skin—");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, irritated);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
|
|
|
|
|
MSG(kurumi, "Whoa, hey, sorry, didn’t mean to make you all—");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
EVENT(music_changes);
|
2020-05-07 14:37:26 +02:00
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "I *hate* prissy mansion dwellers!");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, outraged);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "Let’s just get this over with!");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_TASK(reimu, Stage4PostBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage4PostBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(kurumi);
|
|
|
|
|
VARIANT(kurumi, defeated);
|
|
|
|
|
FACE(kurumi, defeated);
|
|
|
|
|
|
2020-10-09 00:11:13 +02:00
|
|
|
|
FACE(reimu, irritated);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "That’s what you get for insulting my outfit like that.");
|
|
|
|
|
|
|
|
|
|
MSG(kurumi, "Ouch ouch ouch…");
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(kurumi, "W-wait, what happened?");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
MSG(reimu, "What do you mean ‘what happened’?");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(kurumi, "(M-maybe if I fake having amnesia… yeah, that’s it…!)");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(kurumi, normal);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(kurumi, "O-oof, my head! Ow! How did I even get here???");
|
|
|
|
|
MSG(kurumi, "W-wait! Aren’t you that girl from a long while back?");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2023-04-10 21:05:46 +02:00
|
|
|
|
FACE(reimu, sigh);
|
|
|
|
|
MSG(reimu, "I don’t remember you at all.");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, unsettled);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "But somehow, so familiar…");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(reimu, sigh);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "This feeling is annoying, whatever it is. Make it stop, or tell me how to make it stop.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(kurumi, defeated);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(kurumi, "Huh? I-I don’t know! I barely remember anything!");
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(kurumi, "(Ugh, her outfit really does suck though…)");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
MSG(reimu, "(Just another victim…?)");
|
|
|
|
|
FACE(reimu, normal);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(reimu, "I’ll deal with you after I figure out whatever's happening here.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
/*
|
|
|
|
|
* Stage 5
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
DIALOG_TASK(reimu, Stage5PreBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage5PreBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(iku);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
HIDE(iku);
|
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, unsettled);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "I’ve got a bad feeling about this…");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, puzzled);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "Or maybe I’m just feeling nauseous with this tower’s constant spinning.");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
EVENT(boss_appears);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
WAIT_SKIPPABLE(60);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
SHOW(iku);
|
|
|
|
|
FACE(iku, normal);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(iku, "Or perchance it a side effect of the tower’s mere presence?");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "Oh, it’s you. Why did you attack me earlier, anyway?");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
TITLE(iku, "Nagae Iku", "Fulminologist of the Heavens");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(iku, smile);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(iku, "Ah, apologies. It must have been friendly fire.");
|
|
|
|
|
FACE(iku, eyes_closed);
|
|
|
|
|
MSG(iku, "Things are quite hectic here. I beg your understanding.");
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(iku, "But it has been a while, has it not?");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(reimu, normal);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "Err, right, yes, it has been a while. Nice to see you again.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(iku, serious);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(iku, "This tower is unlike anything I have seen before.");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
MSG(iku, "Since word spread through the clouds, I’ve learned that the culprit is connected to ‘parallel universes.’");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(reimu, puzzled);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "You mean like Otherworlds? That’s not too out of the ordinary these days.");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, unsettled);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "This feels different though. It’s like the walls are sucking up faith into a void.");
|
|
|
|
|
MSG(reimu, "I’m surprised the fairies are surviving at all…");
|
|
|
|
|
FACE(reimu, normal);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "But what are you even doing here?");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(iku, eyes_closed);
|
|
|
|
|
MSG(iku, "It is not just the Netherworld and Gensōkyō being affected.");
|
|
|
|
|
FACE(iku, serious);
|
|
|
|
|
MSG(iku, "In Bhava-agra, the Eldest Daughter’s personality has experienced some changes, too.");
|
|
|
|
|
|
|
|
|
|
FACE(reimu, surprised);
|
|
|
|
|
MSG(reimu, "It’s spreading that fast?!");
|
|
|
|
|
|
|
|
|
|
FACE(iku, smile);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(iku, "Initially, I had no plans towards interfering.");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, normal);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(iku, serious);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(iku, "However, the tower’s psychological effects began to intensify, and I began to fear that nobody would take charge.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(reimu, sigh);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "(Do people have this little faith in me…?)");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(iku, eyes_closed);
|
|
|
|
|
MSG(iku, "As more minds began to fall prey, I considered a theory…");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, normal);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(iku, "Is this machine incompatible with the existence of fantasy?");
|
|
|
|
|
FACE(iku, normal);
|
|
|
|
|
MSG(iku, "That may be why you feel a sense of dread about the place.");
|
|
|
|
|
|
|
|
|
|
FACE(reimu, normal);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "Well, that settles it. Where’s the owner, then?");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
FACE(iku, smile);
|
|
|
|
|
MSG(iku, "To be frank, I am not sure whether you are up to the task.");
|
|
|
|
|
MSG(iku, "You are still relatively composed, yes, but your mental state seems to be deteriorating.");
|
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, irritated);
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(reimu, "Deteriorating? But I just got here!");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
EVENT(music_changes);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(iku, "You are still so worrisome. You ought to go home before you lose yourself.");
|
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, irritated);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "No!");
|
|
|
|
|
|
|
|
|
|
FACE(iku, serious);
|
|
|
|
|
MSG(iku, "I beg your pardon?");
|
|
|
|
|
|
|
|
|
|
MSG(reimu, "Don’t keep telling me how little you think of me. I’m sick of it!");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, assertive);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "I’m going to give everyone a reason to have faith in me!");
|
|
|
|
|
|
2020-10-09 00:11:13 +02:00
|
|
|
|
MSG(iku, "It seems your resolve is unwavering. Very well, then.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(iku, "Allow me to test your resistance to their infuriating machine!");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_TASK(reimu, Stage5PostMidBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage5PostMidBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
FACE(reimu, surprised);
|
|
|
|
|
|
|
|
|
|
// should be only one message with a fixed 120-frames timeout
|
2023-04-10 21:05:46 +02:00
|
|
|
|
// UNSKIPPABLE is required here to keep music in sync
|
|
|
|
|
MSG_UNSKIPPABLE(reimu, 120, "Thunder clouds? Are we really that high up?");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
DIALOG_TASK(reimu, Stage5PostBoss) {
|
|
|
|
|
DIALOG_BEGIN(Stage5PostBoss);
|
|
|
|
|
|
|
|
|
|
ACTOR_LEFT(reimu);
|
|
|
|
|
ACTOR_RIGHT(iku);
|
|
|
|
|
VARIANT(iku, defeated);
|
|
|
|
|
FACE(iku, defeated);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
|
|
|
|
MSG(iku, "Ah…");
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(iku, "I was wrong for doubting you, I suppose…");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, unamused);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(reimu, "Somehow I don’t feel too satisfied by that.");
|
|
|
|
|
|
|
|
|
|
FACE(iku, eyes_closed);
|
|
|
|
|
MSG(iku, "To be honest with you, I’m glad you arrived after all.");
|
|
|
|
|
MSG(iku, "I know now that I would not have been able to defeat her.");
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, normal);
|
2020-02-18 00:34:36 +01:00
|
|
|
|
MSG(iku, "Since you’re still able to think clearly, perhaps Gensōkyō will be saved after all.");
|
|
|
|
|
|
2020-05-07 14:37:26 +02:00
|
|
|
|
FACE(reimu, sigh);
|
|
|
|
|
MSG(reimu, "Finally.");
|
2020-02-18 00:34:36 +01:00
|
|
|
|
FACE(reimu, normal);
|
|
|
|
|
MSG(reimu, "But you’re right. This is bigger than Gensōkyō.");
|
|
|
|
|
MSG(reimu, "I’ll need to take this seriously.");
|
|
|
|
|
|
|
|
|
|
FACE(iku, normal);
|
2023-04-10 21:05:46 +02:00
|
|
|
|
MSG(iku, "Glad to hear it.");
|
2020-01-23 01:23:35 +01:00
|
|
|
|
|
|
|
|
|
DIALOG_END();
|
2018-04-29 20:49:43 +02:00
|
|
|
|
}
|
|
|
|
|
|
2020-01-23 01:23:35 +01:00
|
|
|
|
/*
|
|
|
|
|
* Stage 6
|
|
|