taisei/src/dialog/reimu.c
2024-05-17 04:58:47 +02:00

651 lines
20 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* This software is licensed under the terms of the MIT License.
* See COPYING for further information.
* ---
* Copyright (c) 2011-2024, Lukas Weber <laochailan@web.de>.
* Copyright (c) 2012-2024, Andrei Alexeyev <akari@taisei-project.org>.
*/
#include "dialog_macros.h"
/*
* Stage 1
*/
DIALOG_TASK(reimu, Stage1PreBoss) {
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).
DIALOG_BEGIN(Stage1PreBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(cirno);
// Hide cirno for now, to be revealed later.
HIDE(cirno);
// Lets wait a bit, then change Reimus expression.
// All timings are in frames (60 = 1 sec).
WAIT_SKIPPABLE(60);
// "normal" is the default face.
FACE(reimu, sigh);
// 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
MSG(reimu, "Snow during summer? This is certainly familiar…");
// 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);
MSG(cirno, "Nobody can stop me now!");
// Reveal Cirnos portrait
SHOW(cirno);
FACE(cirno, normal);
MSG(cirno, "Mwahahaha!");
FACE(reimu, puzzled);
MSG(reimu, "Whats gotten into you all of a sudden?");
// Titles are not yet implemented, but this should work once they are.
// Right now this does nothing.
TITLE(cirno, "Cirno", "Thermodynamic Ice Fairy");
MSG(cirno, "Gah! Y-you again?! Are you here to get in the way of my plans?!");
MSG(reimu, "What plans'? Freezing frogs?");
FACE(reimu, sigh);
MSG(reimu, "Anyway, I dont really care. So if you could just—");
EVENT(music_changes);
FACE(reimu, annoyed);
MSG(cirno, "Ill never tell you! Prepare to be chilled to the bone!");
// Teardown, must be at the very bottom.
DIALOG_END();
}
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.
// Ellys is called "beaten" and is slightly subdued.
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.
// Its best to set the face to "defeated" in the beginning of a post-battle dialogue, and change it later if needed.
FACE(cirno, defeated);
MSG(cirno, "Chill out! I didnt mean it like that!");
FACE(reimu, smug);
MSG(reimu, "You could have just let me through, you know.");
MSG(cirno, "Not fair! You broke the rules! I wasnt ready yet…");
DIALOG_END();
}
/*
* Stage 2
*/
DIALOG_TASK(reimu, Stage2PreBoss) {
DIALOG_BEGIN(Stage2PreBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(hina);
HIDE(hina);
WAIT_SKIPPABLE(60);
FACE(reimu, normal);
MSG(reimu, "With those loudmouthed kappa gone, the mountain feels practically deserted.");
FACE(reimu, sigh);
MSG(reimu, "I almost miss them.");
EVENT(boss_appears);
MSG(hina, "Ah, its Ms. Hakurei.");
SHOW(hina);
FACE(reimu, normal);
FACE(hina, normal);
MSG(hina, "I thought you might come.");
FACE(hina, concerned);
MSG(hina, "But once again, youre trying to go places you shouldnt.");
MSG(hina, "What a troubled girl…");
FACE(reimu, sigh);
MSG(reimu, "So much for deserted");
FACE(reimu, normal);
MSG(reimu, "Do you even know what youre protecting me from this time?");
TITLE(hina, "Kagiyama Hina", "Gyroscopic Pestilence God");
FACE(hina, normal);
MSG(hina, "A bright girl like you should know that Yōkai Mountain is especially dangerous today.");
FACE(hina, concerned);
MSG(hina, "You ought to turn back now, my dear.");
FACE(reimu, sigh);
MSG(reimu, "(She… she completely ignored my question.)");
FACE(reimu, puzzled);
MSG(reimu, "Does it matter that the Gods asked me to come this time?");
EVENT(music_changes);
MSG(hina, "I know better than the mountain Gods this time.");
MSG(hina, "If you do not turn back immediately, Ill have to repel you by force.");
FACE(reimu, sigh);
MSG(reimu, "So annoying…");
DIALOG_END();
}
DIALOG_TASK(reimu, Stage2PostBoss) {
DIALOG_BEGIN(Stage2PostBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(hina);
WAIT_SKIPPABLE(30);
VARIANT(hina, defeated);
FACE(hina, defeated);
FACE(reimu, normal);
MSG(hina, "So I lost… you can keep going then, I suppose.");
FACE(reimu, puzzled);
MSG(reimu, "You should know by now that I can handle it. Why are you being so overbearing?");
MSG(hina, "Just dont say I didnt warn you, when you inevitably get mauled by whatevers out there…");
FACE(reimu, unamused);
MSG(reimu, "(Ignored again…)");
DIALOG_END();
}
/*
* Stage 3
*/
DIALOG_TASK(reimu, Stage3PreBoss) {
DIALOG_BEGIN(Stage3PreBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(wriggle);
HIDE(wriggle);
FACE(reimu, normal);
MSG(reimu, "Aside from everyone being whipped up into a frenzy, I cant see anything abnormal yet.");
EVENT(boss_appears);
MSG(wriggle, "Well, to your human eyes, insects may seem normal");
SHOW(wriggle);
FACE(wriggle, proud);
MSG(wriggle, "… but there was a time when we reigned supreme!");
FACE(reimu, puzzled);
MSG(reimu, "Eh? You? Arent you a bit far from home?");
MSG(reimu, "Besides, reigned supreme? Ive never heard of insects ruling over Gensōkyō.");
TITLE(wriggle, "Wriggle Nightbug", "Insect Rights Activist");
FACE(wriggle, outraged);
MSG(wriggle, "'Far from home'? But youve intruded on my secret lair!");
FACE(wriggle, proud);
MSG(wriggle, "Havent you heard of the Car—…");
MSG(wriggle, "Carb—…");
FACE(reimu, puzzled);
MSG(wriggle, "That period of history?");
MSG(wriggle, "It was the greatest time, everyone shouldve heard of it by now!");
MSG(reimu, "Seems pretty far-fetched to me, honestly. But you yōkai are always coming up with the craziest theories…");
FACE(wriggle, outraged);
MSG(wriggle, "Dont lump us great insects in with common yōkai!");
FACE(wriggle, proud);
MSG(wriggle, "Im going to restore us to our rightful glory of old!");
FACE(reimu, puzzled);
MSG(reimu, "Giant insects? But youre tiny.");
FACE(reimu, unamused);
MSG(reimu, "And I still dont know what you mean by glory of old.");
EVENT(music_changes);
MSG(wriggle, "You dont seem very educated about our history.");
MSG(wriggle, "Allow me to be your teacher!");
DIALOG_END();
}
DIALOG_TASK(reimu, Stage3PostBoss) {
DIALOG_BEGIN(Stage3PostBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(wriggle);
VARIANT(wriggle, defeated);
FACE(wriggle, defeated);
FACE(reimu, smug);
MSG(reimu, "Giant insects roaming Gensōkyō, huh?");
MSG(reimu, "Sounds like one of Sanaes nuclear experiments.");
MSG(wriggle, "B-but I saw it clearly… the glorious past of insectkind…");
FACE(reimu, unamused);
MSG(reimu, "Dont you have a pretty sweet deal as it is, though?");
MSG(reimu, "You practically own Gensōkyōs forests.");
MSG(wriggle, "But cant we ever hope for more…?");
DIALOG_END();
}
/*
* Stage 4
*/
DIALOG_TASK(reimu, Stage4PreBoss) {
DIALOG_BEGIN(Stage4PreBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(kurumi);
HIDE(kurumi);
FACE(reimu, puzzled);
MSG(reimu, "Huh? Theres a mansion jutting out of this tower?");
FACE(reimu, sigh);
MSG(reimu, "This makes even less sense than usual.");
EVENT(boss_appears);
WAIT_SKIPPABLE(30);
FACE(reimu, normal);
MSG(reimu, "And who are you supposed to be?");
SHOW(kurumi);
FACE(kurumi, tsun);
MSG(kurumi, "Oi, thats what I should be asking!");
FACE(reimu, puzzled);
MSG(reimu, "…?");
FACE(reimu, unamused);
MSG(reimu, "And what are you doing, anyways?");
MSG(reimu, "Are you behind all these… strange thoughts everyones having?");
FACE(kurumi, normal);
TITLE(kurumi, "Kurumi", "High-Society Phlebotomist");
MSG(kurumi, "I have no idea what you mean by strange thoughts, but Ill be honest with you…");
MSG(kurumi, "Your clothing is giving me some strange thoughts!");
MSG(kurumi, "Whered you even get that outfit?! Dumpster diving?! For real!");
FACE(reimu, unamused);
MSG(reimu, "Ugh, another prissy mansion-dweller.");
FACE(reimu, sigh);
MSG(reimu, "I thought I remembered you from somewhere, but no. Absolutely not.");
FACE(reimu, assertive);
MSG(reimu, "Just… stop whatever it is youre doing, right now.");
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);
MSG(reimu, "Besides, havent you ever seen a shrine maiden before?");
FACE(kurumi, normal);
MSG(kurumi, "Youre a shrine maiden?");
FACE(reimu, unamused);
MSG(kurumi, "More like… BRINE maiden!");
FACE(reimu, assertive);
MSG(reimu, "T-this is what a shrine maiden wears. Its a uniform.");
MSG(kurumi, "Uniform? Are you kidding me?!");
MSG(kurumi, "Ive seen a real shrine maiden before, and she didnt look anything like you!");
MSG(kurumi, "Whats with those patterns, anyways? Its completely unorthodox! Its not even using the right type of fabric!");
FACE(kurumi, tsun);
MSG(kurumi, "Get out of here, fake-maiden!");
FACE(reimu, irritated);
MSG(reimu, "… ARGH!");
FACE(reimu, outraged);
MSG(reimu, "Listen!! Its 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!");
MSG(reimu, "I cant stand scratchy wool or slippery silk!");
MSG(reimu, "Everything else feels terrible against my skin—");
FACE(reimu, irritated);
MSG(kurumi, "Whoa, hey, sorry, didnt mean to make you all—");
EVENT(music_changes);
MSG(reimu, "I *hate* prissy mansion dwellers!");
FACE(reimu, outraged);
MSG(reimu, "Lets just get this over with!");
DIALOG_END();
}
DIALOG_TASK(reimu, Stage4PostBoss) {
DIALOG_BEGIN(Stage4PostBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(kurumi);
VARIANT(kurumi, defeated);
FACE(kurumi, defeated);
FACE(reimu, irritated);
MSG(reimu, "Thats what you get for insulting my outfit like that.");
MSG(kurumi, "Ouch ouch ouch…");
MSG(kurumi, "W-wait, what happened?");
MSG(reimu, "What do you mean what happened?");
MSG(kurumi, "(M-maybe if I fake having amnesia… yeah, thats it…!)");
FACE(kurumi, normal);
MSG(kurumi, "O-oof, my head! Ow! How did I even get here???");
MSG(kurumi, "W-wait! Arent you that girl from a long while back?");
FACE(reimu, sigh);
MSG(reimu, "I dont remember you at all.");
FACE(reimu, unsettled);
MSG(reimu, "But somehow, so familiar…");
FACE(reimu, sigh);
MSG(reimu, "This feeling is annoying, whatever it is. Make it stop, or tell me how to make it stop.");
FACE(kurumi, defeated);
MSG(kurumi, "Huh? I-I dont know! I barely remember anything!");
MSG(kurumi, "(Ugh, her outfit really does suck though…)");
MSG(reimu, "(Just another victim…?)");
FACE(reimu, normal);
MSG(reimu, "Ill deal with you after I figure out whatever's happening here.");
DIALOG_END();
}
/*
* Stage 5
*/
DIALOG_TASK(reimu, Stage5PreBoss) {
DIALOG_BEGIN(Stage5PreBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(iku);
HIDE(iku);
FACE(reimu, unsettled);
MSG(reimu, "Ive got a bad feeling about this…");
FACE(reimu, puzzled);
MSG(reimu, "Or maybe Im just feeling nauseous with this towers constant spinning.");
EVENT(boss_appears);
WAIT_SKIPPABLE(60);
SHOW(iku);
FACE(iku, normal);
MSG(iku, "Or perchance it a side effect of the towers mere presence?");
MSG(reimu, "Oh, its you. Why did you attack me earlier, anyway?");
TITLE(iku, "Nagae Iku", "Fulminologist of the Heavens");
FACE(iku, smile);
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.");
MSG(iku, "But it has been a while, has it not?");
FACE(reimu, normal);
MSG(reimu, "Err, right, yes, it has been a while. Nice to see you again.");
FACE(iku, serious);
MSG(iku, "This tower is unlike anything I have seen before.");
MSG(iku, "Since word spread through the clouds, Ive learned that the culprit is connected to parallel universes.");
FACE(reimu, puzzled);
MSG(reimu, "You mean like Otherworlds? Thats not too out of the ordinary these days.");
FACE(reimu, unsettled);
MSG(reimu, "This feels different though. Its like the walls are sucking up faith into a void.");
MSG(reimu, "Im surprised the fairies are surviving at all…");
FACE(reimu, normal);
MSG(reimu, "But what are you even doing here?");
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 Daughters personality has experienced some changes, too.");
FACE(reimu, surprised);
MSG(reimu, "Its spreading that fast?!");
FACE(iku, smile);
MSG(iku, "Initially, I had no plans towards interfering.");
FACE(reimu, normal);
FACE(iku, serious);
MSG(iku, "However, the towers psychological effects began to intensify, and I began to fear that nobody would take charge.");
FACE(reimu, sigh);
MSG(reimu, "(Do people have this little faith in me…?)");
FACE(iku, eyes_closed);
MSG(iku, "As more minds began to fall prey, I considered a theory…");
FACE(reimu, normal);
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);
MSG(reimu, "Well, that settles it. Wheres the owner, then?");
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.");
FACE(reimu, irritated);
MSG(reimu, "Deteriorating? But I just got here!");
EVENT(music_changes);
MSG(iku, "You are still so worrisome. You ought to go home before you lose yourself.");
FACE(reimu, irritated);
MSG(reimu, "No!");
FACE(iku, serious);
MSG(iku, "I beg your pardon?");
MSG(reimu, "Dont keep telling me how little you think of me. Im sick of it!");
FACE(reimu, assertive);
MSG(reimu, "Im going to give everyone a reason to have faith in me!");
MSG(iku, "It seems your resolve is unwavering. Very well, then.");
MSG(iku, "Allow me to test your resistance to their infuriating machine!");
DIALOG_END();
}
DIALOG_TASK(reimu, Stage5PostMidBoss) {
DIALOG_BEGIN(Stage5PostMidBoss);
ACTOR_LEFT(reimu);
FACE(reimu, surprised);
// should be only one message with a fixed 120-frames timeout
// UNSKIPPABLE is required here to keep music in sync
MSG_UNSKIPPABLE(reimu, 120, "Thunder clouds? Are we really that high up?");
DIALOG_END();
}
DIALOG_TASK(reimu, Stage5PostBoss) {
DIALOG_BEGIN(Stage5PostBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(iku);
VARIANT(iku, defeated);
FACE(iku, defeated);
MSG(iku, "Ah…");
MSG(iku, "I was wrong for doubting you, I suppose…");
FACE(reimu, unamused);
MSG(reimu, "Somehow I dont feel too satisfied by that.");
FACE(iku, eyes_closed);
MSG(iku, "To be honest with you, Im glad you arrived after all.");
MSG(iku, "I know now that I would not have been able to defeat her.");
FACE(reimu, normal);
MSG(iku, "Since youre still able to think clearly, perhaps Gensōkyō will be saved after all.");
FACE(reimu, sigh);
MSG(reimu, "Finally.");
FACE(reimu, normal);
MSG(reimu, "But youre right. This is bigger than Gensōkyō.");
MSG(reimu, "Ill need to take this seriously.");
FACE(iku, normal);
MSG(iku, "Glad to hear it.");
DIALOG_END();
}
/*
* Stage 6
*/
DIALOG_TASK(reimu, Stage6PreBoss) {
DIALOG_BEGIN(Stage6PreBoss);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(elly);
HIDE(elly);
EVENT(boss_appears);
MSG(elly, "Well, well, well. It seems a faithful rat trespassed on our domain.");
SHOW(elly);
FACE(elly, smug);
MSG(elly, "How strange. You shouldve lost your mind by now.");
FACE(reimu, unsettled);
MSG(reimu, "Just turn it off already.");
MSG(reimu, "Im not in the mood to argue, so dont push me!");
TITLE(elly, "Elly", "The Theoretical Reaper");
FACE(elly, angry);
MSG(elly, "Bold of you to barge into MY tower and give ME orders!");
MSG(elly, "I still remember what you did to Lady Kazami and I back then!");
FACE(reimu, sigh);
MSG(reimu, "And what was that, again?");
MSG(reimu, "Im getting a familiar feeling just looking at you, but…");
FACE(elly, shouting);
MSG(elly, "Is this a joke?! Are you trying to mock me?!");
FACE(reimu, assertive);
MSG(reimu, "I think I wouldve remembered a giant tower that makes people go mad with power!");
MSG(reimu, "The least you can do when accusing someone is to tell them what theyve supposedly done!");
FACE(elly, smug);
MSG(elly, "Ah. I see.");
FACE(elly, normal);
MSG(elly, "Fine. I will.");
FACE(reimu, unamused);
MSG(elly, "This tower is a recent invention. Its mere existence is revolutionary in several scientific fields.");
MSG(elly, "The denizens of this Gensōkyō ought to have been thankful for its vast scientific knowledge…");
MSG(elly, "But alas, we have other plans.");
FACE(reimu, unsettled);
MSG(reimu, "This Gensōkyō…?");
FACE(reimu, unamused);
MSG(reimu, "Somehow, it feels like more of a punishment.");
MSG(reimu, "Ever heard of ignorance is bliss?");
MSG(reimu, "There wont be anyone to rule over, or whatever, if you make them all lose it.");
MSG(elly, "The Tower of Babel is capable of enlightening those fortunate to be around it.");
FACE(elly, smug);
MSG(elly, "Anyone unable to comprehend its brilliance will be driven to madness.");
FACE(elly, shouting);
MSG(elly, "But this is simply retribution for the crimes that have been committed against us!");
FACE(reimu, unsettled);
MSG(reimu, "Parallel universes, is that it?");
FACE(elly, normal);
MSG(elly, "Hmm? Is that what you think this Gensōkyō is?");
FACE(reimu, irritated);
MSG(reimu, "You tell me! Youre the megalomaniac!");
FACE(reimu, assertive);
MSG(reimu, "Do you hate me because some other Reimu did something? Is that it?");
MSG(reimu, "But then what does that have to do with any of us?!");
FACE(reimu, irritated);
MSG(reimu, "For a scientist, youre not making a whole lot of sense!");
FACE(elly, angry);
MSG(elly, "Perhaps youve simply forgotten, like you have of the rest of us!");
FACE(reimu, unamused);
MSG(elly, "Only the privileged, such as Lady Kazami, made it out! The rest of us were lost!");
FACE(reimu, unsettled);
MSG(reimu, "You mean Kazami Yūka? And I suppose… Alice, too?");
MSG(reimu, "I remember when I first met Alice, and she said some weird things too, just like you are now.");
FACE(reimu, unamused);
MSG(reimu, "But she didnt go around threatening everyone!");
FACE(elly, angry);
MSG(elly, "We werent as lucky! And as reparation, we will take control of this Gensōkyō!");
MSG(elly, "We will make it so we will NEVER be forgotten!");
FACE(reimu, sigh);
MSG(reimu, "Even in Gensōkyō, you can be forgotten, huh?");
MSG(reimu, "What a miserable thought. No wonder I felt terrible just seeing this place!");
FACE(reimu, assertive);
MSG(reimu, "Turn it off, or being forgotten will be the least of your worries!");
EVENT(music_changes);
FACE(elly, shouting);
MSG(elly, "Its too late for that! Soon, all of Gensōkyō will become enlightened!");
FACE(reimu, unsettled);
MSG(elly, "Dont you understand, pitiful shrine maiden? Science is an unfathomable power, surpassed by nothing!");
MSG(elly, "We wont be forgotten again!");
DIALOG_END();
}
DIALOG_TASK(reimu, Stage6PreFinal) {
DIALOG_BEGIN(Stage6PreFinal);
ACTOR_LEFT(reimu);
ACTOR_RIGHT(elly);
VARIANT(elly, beaten);
FACE(elly, shouting);
FACE(reimu, assertive);
MSG(reimu, "Is that it? Are you finally done?");
MSG(elly, "Y-you think this is over?! The time of reckoning is upon you!");
MSG(elly, "Gaze upon the ultimate truth of the universe, and tremble!");
DIALOG_END();
}
/*
* Register the tasks
*/
#define EXPORT_DIALOG_TASKS_CHARACTER reimu
#include "export_dialog_tasks.inc.h"