taisei/src/dialog/reimu.c

654 lines
20 KiB
C
Raw Normal View History

/*
* This software is licensed under the terms of the MIT License.
* See COPYING for further information.
* ---
* Copyright (c) 2011-2019, Lukas Weber <laochailan@web.de>.
2019-07-03 20:00:56 +02:00
* Copyright (c) 2012-2019, Andrei Alexeyev <akari@taisei-project.org>.
*/
#include "taisei.h"
#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"