From 0e86428eee5fb4cbc33af4ce2faa01142c166863 Mon Sep 17 00:00:00 2001 From: Jacoder23 Date: Sat, 13 Apr 2024 06:56:57 +0800 Subject: [PATCH] we ball Word count: 12,043 words --- game/achievements.rpy | 2 +- game/images/bg fixedfield.png | Bin 0 -> 39536 bytes game/options.rpy | 10 +- game/script.rpy | 690 +++++++++++++++++++++++++++------- 4 files changed, 558 insertions(+), 144 deletions(-) create mode 100644 game/images/bg fixedfield.png diff --git a/game/achievements.rpy b/game/achievements.rpy index 7006e98..6b18e5f 100644 --- a/game/achievements.rpy +++ b/game/achievements.rpy @@ -104,7 +104,7 @@ define scare_tactics = Achievement( define very_loud_quitting = Achievement( name=_("Very Loud Quitting"), id="very_loud_quitting", - description=_("You forced all the faculty into quitting."), + description=_("The faculty walked out on you."), locked_image=Transform("gui/blank.png", matrixcolor=SepiaMatrix()), unlocked_image=Transform("gui/blank.png", matrixcolor=SepiaMatrix()), hidden=True, diff --git a/game/images/bg fixedfield.png b/game/images/bg fixedfield.png new file mode 100644 index 0000000000000000000000000000000000000000..6d16fd5f1930c9544908d2bb799f97fd583cead1 GIT binary patch literal 39536 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 literal 0 HcmV?d00001 diff --git a/game/options.rpy b/game/options.rpy index 1203323..3a4d396 100644 --- a/game/options.rpy +++ b/game/options.rpy @@ -14,13 +14,13 @@ ## ## The _() surrounding the string marks it as eligible for translation. -define config.name = _("Jam13Yuuka") +define config.name = _("Dimly Dreamt Lotus Flowers") ## A short name for the game used for executables and directories in the built ## distribution. This must be ASCII-only, and must not contain spaces, colons, ## or semicolons. -define build.name = "Jam13Yuuka" +define build.name = "Dimly Dreamt Lotus Flowers" ## Save directory ############################################################## ## @@ -37,7 +37,7 @@ define build.name = "Jam13Yuuka" ## literal string, not an expression. ## Note: a typical save_directory value looks like "FreshProject-1671818013" -define config.save_directory = "Jam13Yuuka-1256128491" +define config.save_directory = "Jam13Yuuka-1258128491" ## The version of the game. @@ -49,7 +49,7 @@ define config.version = "1.0" define gui.about = _p("""A game created in 3 days for Touhou Fan Game Jam 13. -By Jacoder23, Shyraku, Nanossis, and hermit_irl. +By Jacoder23, Shyraku, Nanossis, hermit_irl, and Spear. Uses EasyRenPyGui and Achievements for Ren'Py both by Feniks Development Uses Renpy Auto Highlight and Kinetic Text Tags both by Wattson @@ -248,4 +248,4 @@ init python: ## The username and project name associated with an itch.io project, separated ## by a slash. -# define build.itch_project = "renpytom/test-project" +define build.itch_project = "jacoder23/dimly-dreamt-lotus-flowers" diff --git a/game/script.rpy b/game/script.rpy index 0dd80cc..df08ce1 100644 --- a/game/script.rpy +++ b/game/script.rpy @@ -7,7 +7,7 @@ # exam Y Y Y # side convos Y Y Y # sunflower talk Y Y Y -# present. endings N N N +# present. endings Y N N default persistent.pixelfont = True default persistent.laozi = False @@ -27,11 +27,6 @@ define yumemi = Character("Yumemi", callback = name_callback, cb_name = "yumemi" define janitor = Character("Totally Normal Janitor", callback = name_callback, cb_name = "yumemi") define narrator = Character(callback = name_callback, cb_name = None) -init python: - def truncate(n, decimals=0): - multiplier = 10 ** decimals - return int(n * multiplier) / multiplier - # Special player menus # screen time_travel_display_toggle: zorder 200 @@ -242,6 +237,16 @@ screen inventory_item_description: on "hide" action SetVariable("item_description", "") label splashscreen: + + image audi_front: + "bg auditorium front.png" + + image yuuka_look: + "yuuka looking eyes.png" + + image chills: + "chills.png" + scene black python: @@ -710,6 +715,12 @@ init python: marisaClue = False binaryClue = False + # not included in run save + did_not_visit_faculty = True + did_not_visit_classroom = True + did_not_visit_auditorium = True + finale_ready = False + class RunSave: def __init__(self, attacked_student, garden_of_the_sun_lecture, janitor_talks, revolution, exam_cancelled, investigation_progress, reimu_progress, alice_progress, marisa_progress, time_traveling, asked_office_location, did_not_submit_passcode, has_correct_passcode, chose_reimu_question, first_time_traveling_through_time, time_travel_without_choice, aliceClue, reimuClue, marisaClue, binaryClue, inventory_items): self.attacked_student = attacked_student @@ -845,15 +856,6 @@ label start: # STAGE Y # VAR Y - image audi_front: - "bg auditorium front.png" - - image yuuka_look: - "yuuka looking eyes.png" - - image chills: - "chills.png" - show audi_front zorder 150 show bg auditorium back behind audi_front @@ -862,13 +864,6 @@ label start: show yuuka neutral behind yuuka_look with fade - - python: # <- Remove - ''' - show reimu happy: - xalign 0.8 - yalign 0.99 - ''' yuuka "Good evening." @@ -1798,36 +1793,9 @@ label start: $ next_label = "classroom" jump day_transition - elif day == 1: - # TODO - # TEXT N - # STAGE N - # VAR N - window show # placeholder - return - elif day == 2: - # TODO - # TEXT N - # STAGE N - # VAR N - window show # placeholder - return - elif day == 3: - # TODO - # TEXT N - # STAGE N - # VAR N - window show # placeholder - return - elif day == 4: - # TODO - # TEXT N - # STAGE N - # VAR N - window show # placeholder - return else: "Day is currently set to [day]. This should be impossible. You've likely encountered a bug." + $ raise Exception("Impossible day " + day + " for location") return label classroom: @@ -2069,29 +2037,9 @@ label start: jump hallway return - elif day == 2: - # TODO - # TEXT N - # STAGE N - # VAR N - window show # placeholder - return - elif day == 3: - # TODO - # TEXT N - # STAGE N - # VAR N - window show # placeholder - return - elif day == 4: - # TODO - # TEXT N - # STAGE N - # VAR N - window show # placeholder - return else: "Day is currently set to [day]. This should be impossible. You've likely encountered a bug." + $ raise Exception("Impossible day " + day + " for location") return # TODO: SKIPPING THE YUUKA PART OF THE STAGE DIRECTIONS IN THIS AREA FOR NOW @@ -2383,9 +2331,11 @@ label hallway: yuuka "{i}...{/i}" (cb_name="") - yuuka "{i}And that's all I have to say on that subject.{/i}" (cb_name="") + yuuka "{i}And that's all I have to say on that subject. You could call in an expert. That's not what's important.{/i}" (cb_name="") - jump finale + yuuka "{i}With all the data gone...{/i}" (cb_name="") + + jump exam_cancel_check else: yuuka "A keycard!? You mean I've been working my ass off to just get another lock?" @@ -2672,6 +2622,8 @@ label hallway: $ renpy.notify("Clue #1 gotten.") $ inventory_items.append("Clue #1") + $ investigation_progress += 1 + show reimu sleepy reimu "I'll be seeing you around then." @@ -2800,6 +2752,8 @@ label hallway: $ alice_progress += 1 jump hallway_navigation2 + $ investigation_progress += 1 + "Wait here" if janitor_talks < 2: $ janitor_talks = 2 @@ -2921,7 +2875,7 @@ label hallway: "No, not yet.": jump hallway_navigation - elif day == 3: + elif day == 3: # exams # TODO # TEXT Y # STAGE N @@ -3020,7 +2974,14 @@ label hallway: "Faculty Member" "Well, that was the plan but you know how she can get." - "Faculty Member" "Brilliant but impulsive. She's coming back tomorrow." + "Faculty Member" "Brilliant but impulsive. She's coming back tomorrow; one of your students spotted her." + + if "Clue #2" in inventory_items: + yuuka "Marisa?" + + "Faculty Member" "I didn't get a name. Blonde?" + + yuuka "Yes. That's probably her then." yuuka "Tomorrow... that's sooner than I thought." @@ -3262,6 +3223,8 @@ label hallway: show screen inventory_display_toggle $ renpy.notify("Clue #2 gotten.") $ inventory_items.append("Clue #2") + + $ investigation_progress += 1 $ marisaClue = True @@ -3495,15 +3458,16 @@ label hallway: scene bg hallway with fade - # TODO: Have Yuuka recount what happened in these places before. - menu: "Where does Yuuka go?" "{sc}Exit school{/sc}": - "" - # TODO: Put in the binary clue if you have gathered enough other clues (at least two) - jump day_transition + # Finale ready + if finale_ready: + jump finale + else: + show text "{sc}Not... yet...{/sc}" at truecenter with damaged + jump day_transition "Go to the faculty room" if did_not_visit_faculty: scene bg faculty with fade @@ -4126,82 +4090,91 @@ label faculty: if revolution > 0: $ exam_cancelled = True + + label exam_cancel_check: - if exam_cancelled: - yuuka "{i}As you all know, the exams were to be called off the next day.{/i}" (cb_name="") - - if revolution >= 2: - yuuka "{i}Not just that, but the faculty of the school went on a walk out, in protest of what they called my \"heavy-handed approach\".{/i}" (cb_name="") + if exam_cancelled: + yuuka "{i}As you all know, the exams were to be called off the next day.{/i}" (cb_name="") + + if revolution >= 2: + yuuka "{i}Not just that, but the faculty of the school went on a walk out, in protest of what they called my \"heavy-handed approach\".{/i}" (cb_name="") - yuuka "{i}I became very popular with the students however.{/i}" (cb_name="") + yuuka "{i}A shame, really.{/i}" (cb_name="") - yuuka "{i}That's why as you're sitting in your seats, waiting for Professor Okazaki to sweep in and replace me, the menace you welcomed in,{/i}" (cb_name="") - - yuuka "{i}Just know that she won't be making it.{/i}" (cb_name="") - - yuuka "{i}I do hope I've made my distate of her clear by now?{/i}" (cb_name="") + yuuka "{i}It coincided with today and so, I'm sorry you couldn't be here today.{/i}" (cb_name="") - narrator "{i}One or two nervous nods came in response.{/i}" + yuuka "{i}...{/i}" (cb_name="") - yuuka "{i}Yes? Good.{/i}" (cb_name="") + yuuka "{i}But that didn't really happen, otherwise I wouldn't be here to talk to you all would I?{/i}" (cb_name="") - yuuka "{i}Then I'll let you imagine how I dealt with her.{/i}" (cb_name="") + yuuka "{i}And yet here I am.{/i}" (cb_name="") - yuuka "{i}I hope you intend to complete your walk out by quitting, now, dearies.{/i}" (cb_name="") + yuuka "{i}I don't understand how or why.{/i}" (cb_name="") - yuuka "{i}This is my school and my students from here on out.{/i}" (cb_name="") + yuuka "{i}I hope you can, in time.{/i}" (cb_name="") - if very_loud_quitting.has(): - "Very Loud Quitting already has been completed. Consider finding a different ending." + yuuka "{i}Best of luck.{/i}" (cb_name="") - $ very_loud_quitting.grant() + # yuuka "{i}I became very popular with the students however.{/i}" (cb_name="") + + # yuuka "{i}That's why as you're sitting in your seats, waiting for Professor Okazaki to sweep in and replace me, the menace you welcomed in,{/i}" (cb_name="") + + # yuuka "{i}Just know that she won't be making it.{/i}" (cb_name="") + + # yuuka "{i}I do hope I've made my distate of her clear by now?{/i}" (cb_name="") + + # narrator "{i}One or two nervous nods came in response.{/i}" + + # yuuka "{i}Yes? Good.{/i}" (cb_name="") + + # yuuka "{i}Then I'll let you imagine how I dealt with her.{/i}" (cb_name="") + + # yuuka "{i}I hope you intend to complete your walk out by quitting, now, dearies.{/i}" (cb_name="") + + # yuuka "{i}This is my school and my students from here on out.{/i}" (cb_name="") + + if very_loud_quitting.has(): + "Very Loud Quitting already has been completed. Consider finding a different ending." + + $ very_loud_quitting.grant() + + jump ending + else: + yuuka "{i}The students were estatic but the faculty were deeply worried.{/i}" (cb_name="") + + yuuka "{i}Worry no longer, for you now know the truth of how and why.{/i}" (cb_name="") + + yuuka "{i}Though it can never free you, at least you know.{/i}" (cb_name="") + + yuuka "{i}I ask not for sympathy. Just an understanding.{/i}" (cb_name="") + + yuuka "{i}Now there's only one last place for us, all of us, to go.{/i}" (cb_name="") + + $ day = 4 + + $ finale_ready = True + + jump hallway - jump ending else: - yuuka "{i}The students were estatic but the faculty were deeply worried.{/i}" (cb_name="") + yuuka "{i}The students took to it well.{/i}" (cb_name="") - yuuka "{i}Worry no longer, for you now know the truth.{/i}" (cb_name="") + yuuka "{i}We were correct that they had been prepared throughout the semester.{/i}" (cb_name="") - yuuka "{i}Though it can never free you, at least you know.{/i}" (cb_name="") + yuuka "{i}And by that we mean they crammed like their lives depended on it.{/i}" (cb_name="") - yuuka "{i}I ask not for sympathy. Just an understanding.{/i}" (cb_name="") + yuuka "{i}A sentiment that must be familiar to you all.{/i}" (cb_name="") - jump hallway - else: - yuuka "{i}The students took to it well.{/i}" (cb_name="") + yuuka "{i}The day fast approached and I had my own preparations to do...{/i}" (cb_name="") - yuuka "{i}We were correct that they had been prepared throughout the semester.{/i}" (cb_name="") + yuuka "{i}Seeing them work hard (with the addition of an extreme pressure) meant I felt a bit generous.{/i}" (cb_name="") - yuuka "{i}And by that we mean they crammed like their lives depended on it.{/i}" (cb_name="") + yuuka "{i}It took a little bit of convincing but let me allow the results to speak for themselves in a moment.{/i}" (cb_name="") - yuuka "{i}A sentiment that must be familiar to you all.{/i}" (cb_name="") - - yuuka "{i}The day fast approached and I had my own preparations to do...{/i}" (cb_name="") - - yuuka "{i}Seeing them work hard (with the addition of an extreme pressure) meant I felt a bit generous.{/i}" (cb_name="") - - yuuka "{i}It took a little bit of convincing but let me allow the results to speak for themselves in a moment.{/i}" (cb_name="") - - jump hallway - - # current plans: after consultations determines if there'll be a final exam at all - - elif day == 3: - # TODO - # TEXT N - # STAGE N - # VAR N - window show # placeholder - return - elif day == 4: - # TODO - # TEXT N - # STAGE N - # VAR N - window show # placeholder - return + jump hallway else: "Day is currently set to [day]. This should be impossible. You've likely encountered a bug." + $ raise Exception("Impossible day " + day + " for location") return label exam: @@ -4351,6 +4324,7 @@ label exam: jump hallway else: "Day is currently set to [day]. This should be impossible. You've likely encountered a bug." + $ raise Exception("Impossible day " + day + " for location") return label penultimate_presentation: @@ -4359,7 +4333,404 @@ label penultimate_presentation: # TEXT N # STAGE N # VAR N + + yuuka "{i}When I arrived at school I was greeted by one of the faculty members, nervous.{/i}" (cb_name = "") + + "Faculty Member" "Ah it's you. There's been a development." + + if not did_not_visit_faculty or time_traveling: + yuuka "I know, Professor Okazaki's back today right?" + + "Faculty Member" "Yes and you're giving a presentation this evening." + + yuuka "What?" + else: + yuuka "What's this about?" + + "Faculty Member" "Professor Okazaki's arriving today." + + yuuka "She's a few days early." + + "Faculty Member" "Yes and you're giving a presentation this evening." + + yuuka "What?" + "Faculty Member" "I know, I know I didn't want to be the one to break it to you but it's school policy." + + "Faculty Member" "Technically, she wrote it but still. You have to give a presentation if you subsituted for her." + + yuuka "That's absurd." + + "Faculty Member" "You can read the handbook if you want to." + + yuuka "{i}They handed me the book and I opened it in front of them.{/i}" (cb_name = "") + + yuuka "...these are chicken scratches." + + "Faculty Member" "Legally binding chicken scratches." + + yuuka "Hm." + + yuuka "Well, alright then." + + yuuka "Any requirements on what the presentation should have?" + + "Faculty Member" "Other than being about your time here? If there are any it's illegible." + + yuuka "{i}That would make things convenient.{/i}" (cb_name = "") + + scene bg black with fade + + yuuka "{i}I decided to use this opportunity to my advantage.{/i}" (cb_name = "") + + yuuka "{i}To get Reimu, Marisa, and Alice in the same meeting at the same time as Yumemi would only make her defeat all the sweeter.{/i}" (cb_name = "") + + show audi_front zorder 150 + + show bg auditorium back behind audi_front + + $ renpy.pause(2) + + show yuuka amused behind yuuka_look + with dissolve + + yuuka "Now we're back here." + + show yuuka_look + + yuuka "Did you get all of that, {bt}Professor Okazaki?{/bt}" + + show yuuka neutral at left with ease + + # TODO: Fix the transitions not working here + + hide yuuka_look + + show yumemi neutral at right with easeinright + + yumemi "Truly, a wonderful presentation Professor Kazami!" + + yumemi "I understand that the rest of the school who hadn't had the fortune of knowing her prior to her chance encounter with our school won't recognize that name." + + yumemi "This is Yuuka Kazami, a powerful youkai." + + yuuka "I think they'd understand at least that much by now after this entire presentation, no?" + + show yumemi happy + + yumemi "Try and hold your snark for the appetizers, fraulein." + + show yumemi neutral + + yumemi "I have comments after all. You did read the handbook didn't you?" + + if time_traveling: + yumemi "Don't answer that, it's just-{nw}" + + show yumemi serious + + yuuka "Rhetroic, right?" + + yumemi "{cps=1}...{/cps}{nw}clever. clever." + + show yumemi happy + + yumemi "{cps=1}...{/cps}{fast}clever. clever." + + yumemi "Let's skip the pleasantries then, shall we?" + + else: + yumemi "Don't answer that, it's just rhetoric." + + yumemi "Let's go over your track record then, shall we?" + + yumemi "You've said a lot, including things that never happened. Dreams?" + + yumemi "Firstly, I don't know anything about a field of flowers." + + yuuka "You sack of sh-{nw}" + + yumemi "I'm a woman of my word, Yuuka! It's not something I'd do. I extend my deepest of regrets to you." + + yumemi "Truly." + + yumemi "Continuing on..." + + if attacked_student: + yumemi "You attacked one of my students." + + "Excitable Student" "I'm okay!" + + if garden_of_the_sun_lecture: + yumemi "In your dreams, you scared off my entire class by antagonizing them." + + if revolution == 2: + yumemi "You also apparently caused my teachers to quit enmass, despite them being here." + # else: + # no else, since getting that means you get the finale + + if not has_correct_passcode: + if investigation_progress > 3: + yumemi "Wow, you got really far into my puzzle! And yet still stumped? How sad. Use your head, there's barely any candidates left!" + elif investigation_progress > 2: + yumemi "It seems you almost figured out my puzzle. What a shame, you fell short at the finish line." + elif investigation_progress > 1: + yumemi "You made a little progress into my puzzle. Not bad, but not good either. Should've tried a bit harder." + elif investigation_progress > 0: + yumemi "You barely even touched my puzzle! Come on, at least put some effort into the game." + elif investigation_progress <= 0 and asked_office_location: + yumemi "You didn't even get a single clue? Seriously!? Jeez, I expected better." + else: + yumemi "...you don't even know where my office is? Is this just a game to you!? Too good to try!?" + + yumemi "Hmph." + + yumemi "Now." + + yumemi "If this were yesteryear, I'd ask if you had a wish you wanted granted if you win." + + yuuka "How about you grant my wish now? It's for you to shut your face and eat a spellcard." + + yumemi "Why, my dear, it's only if you win." + + yumemi "And probability is on the side of rigorous." + + # TODO: Go for suitably dramatic endings here + + if reimu_progress >= 2 or alice_progress >= 2 or marisa_progress >= 2: + if reimu_progress >= 2: + if alice_progress >= 2: + # reimu & alice + if marisa_progress >= 2: + # everyone + "???" "I'm standing right here, you know." + + show reimu serious # at somewhere + + reimu "Your school is a madhouse wearing a thin mask. Whether from the Outside World or Gensokyo, I can't overlook all these humans here." + + show alice neutral # at somwhere + + alice "This has gone on long enough. You're teaching a mockery of magic to earnest young students." + + alice "You wear a single color. Your power is a mere fourteen-point-two percent of mine!" + + show marisa serious # at somewhere + + marisa "I'm a fan of keeping things suitably dramatic, but you're annoying more than anything else." + + marisa "Sure, make another incident but let's keep normal people out of these things, yeah?" + + yuuka "Thank you, everyone." + else: + "???" "I'm standing right here, you know." + + show reimu serious # at somewhere + + reimu "Your school is a madhouse wearing a thin mask. Whether from the Outside World or Gensokyo, I can't overlook all these humans here." + + show alice neutral # at somwhere + + alice "This has gone on long enough. You're teaching a mockery of magic to earnest young students." + + alice "You wear a single color. Your power is a mere fourteen-point-two percent of mine!" + + yuuka "Thank you, Reimu. You too, Alice." + + elif marisa_progress >= 2: + # reimu & marisa + "???" "I'm standing right here, you know." + + show reimu serious # at somewhere + + reimu "Your school is a madhouse wearing a thin mask. Whether from the Outside World or Gensokyo, I can't overlook all these humans." + + show marisa serious # at somewhere + + marisa "I'm a fan of keeping things suitably dramatic, but you're annoying more than anything else." + + marisa "Sure, make another incident but let's keep normal people out of these things, yeah?" + + yuuka "Thank you, Reimu. You too, Marisa." + else: + # just reimu + "???" "I'm standing right here, you know." + + show reimu serious # at somewhere + + reimu "Your school is a madhouse wearing a thin mask. Whether from the Outside World or Gensokyo, I can't overlook all these humans." + + yuuka "Thank you, Reimu." + elif alice_progress >= 2: + if marisa_progress >= 2: + # alice & marisa + "???" "Long time no see." + + show alice neutral # at somwhere + + alice "This has gone on long enough. You're teaching a mockery of magic to earnest young students." + + alice "You wear a single color. Your power is a mere fourteen-point-two percent of mine!" + + show marisa serious # at somewhere + + marisa "I'm a fan of keeping things suitably dramatic, but you're annoying more than anything else." + + marisa "Sure, make another incident but let's keep normal people out of these things, yeah?" + + yuuka "Thank you, Alice. You too, Marisa." + else: + # just alice + "???" "Long time no see." + + show alice neutral # at somwhere + + alice "This has gone on long enough. You're teaching a mockery of magic to earnest young students." + + alice "You wear a single color. Your power is a mere fourteen-point-two percent of mine!" + + yuuka "Thank you, Alice." + elif marisa_progress >= 2: + # just marisa + "???" "How about we gamble on them odds?" + + show marisa serious # at somewhere + + marisa "I'm a fan of keeping things suitably dramatic, but you're annoying more than anything else." + + marisa "Sure, make another incident but let's keep normal people out of these things, yeah?" + + yuuka "Thank you, Marisa." + + yuuka "Shall we then?" + + yumemi "Hah, turn their hearts if you feel the need. Nothing can compare the infinite worlds I can pick and choose! You face a challenge you can't even concieve of!" + + yuuka "..." + + show yuuka rage: + easeout_expo 1.0 xpos 2700 + yalign 0.5 + + $ renpy.pause(0.85, hard=True) + + play sound "bowling.mp3" + + show yumemi wistful at damaged, spin, thrown_offscreen: + xalign 1.0 + yalign 0.5 + + yuuka "{i}And then I hit her really hard.{/i}" (cb_name="") + + yuuka "From the earth you came, to the dirt you'll bite." + + if she_has_your_back.has(): + "She Has Your Back already has been completed. Consider finding a different ending." + elif not dontsavefutureruns: + $ persistent.officialrun = SaveChoices() + $ persistent.dontsavefutureruns = True + $ she_has_your_back.grant() + + elif (reimu_progress < 2 and alice_progress < 2 and marisa_progress < 2) and (reimu_progress + alice_progress + marisa_progress) >= 2: + + "Excitable Student" "Get away from Miss Kazami! You need to stop, Professor Okazaki!" + + "Various Students" "Don't fight!{nw=1.0}" + + "Various Students" "You'll get your ass beat, she's terrifying, don't try it Professor!{nw=1.0}" + + "Faculty Member" "Can we please all just remain calm, this is getting out of control!{nw=1.0}" + + "Various Students" "She's kind of cute, actually-{nw=0.0}" + + "Various Students" "Huh, what's happening?{nw=1.0}" + + yuuka "Thank you all. But I can fight my own battles." + + yuuka "Shall we then?" + + yumemi "Hah, prepare however you need. No power can compare the infinite worlds I can pick and choose! You face a challenge you can't even concieve of!" + + yuuka "..." + + show yuuka rage: + easeout_expo 1.0 xpos 2700 + yalign 0.5 + + $ renpy.pause(0.85, hard=True) + + play sound "bowling.mp3" + + show yumemi wistful at damaged, spin, thrown_offscreen: + xalign 1.0 + yalign 0.5 + + yuuka "{i}And then I hit her really hard.{/i}" (cb_name="") + + yuuka "From the earth you came, to the dirt you'll bite." + + if they_have_your_back.has(): + "They Have Your Back already has been completed. Consider finding a different ending." + elif not dontsavefutureruns: + $ persistent.officialrun = SaveChoices() + $ persistent.dontsavefutureruns = True + $ they_have_your_back.grant() + + elif (reimu_progress + alice_progress + marisa_progress) < 2: + + yuuka "Shall we then?" + + yumemi "Hah, prepare however you need. No power can compare the infinite worlds I can pick and choose! You face a challenge you can't even concieve of!" + + yuuka "..." + + show yuuka rage: + easeout_expo 1.0 xpos 2700 + yalign 0.5 + + $ renpy.pause(0.85, hard=True) + + play sound "bowling.mp3" + + show yumemi wistful at damaged, spin, thrown_offscreen: + xalign 1.0 + yalign 0.5 + + yuuka "{i}And then I hit her really hard.{/i}" (cb_name="") + + yuuka "From the earth you came, to the dirt you'll bite." + + if hedgehog_dilemma_solved.has(): + "Hedgehog's Dilemma Solved already has been completed. Consider finding a different ending." + elif not dontsavefutureruns: + $ persistent.officialrun = SaveChoices() + $ persistent.dontsavefutureruns = True + $ hedgehog_dilemma_solved.grant() + + #else: + # again no else, because you'd get the finale + + # attacked_student = False + # garden_of_the_sun_lecture = False + # janitor_talks = 0 + # revolution = 0 # 1 means students incited, 2 means students and teachers incited + # exam_cancelled = False + # investigation_progress = 0 + # reimu_progress = 0 + # alice_progress = 0 + # marisa_progress = 0 + # time_traveling = False + # asked_office_location = False + # did_not_submit_passcode = False + # has_correct_passcode = False + # chose_reimu_question = False + # first_time_traveling_through_time = True + # time_travel_without_choice = True + # aliceClue = False + # reimuClue = False + # marisaClue = False + # binaryClue = False + "Test ending rewards" # ---------------- # @@ -4391,6 +4762,7 @@ label penultimate_presentation: jump ending else: "Day is currently set to [day]. This should be impossible. You've likely encountered a bug." + $ raise Exception("Impossible day " + day + " for location") return label finale: @@ -4398,6 +4770,38 @@ label finale: # it should happen in the garden of the sun + # past yumemi, setting up the time machine in a place that seemed suitable for her + + # the time machine destroys the place its activated + + scene bg fixedfield with fade + + # TODO: finale + + show yumemi glasses with dissolve + + yumemi "Hmm, flux capacitor is definitely the wrong term for this and it's not exactly measurable in gigawatts but..." + + yumemi "I believe the new Probability Space Hypervessel is complete!" + + yumemi "Smaller, sleeker, though with the tradeoff of one person at a time." + + yumemi "Beginning test #1; in three, two." + + yuuka "Stop!" + + narrator "Yumemi turned to towards the voice, taking off her glasses, staring blinkingly." + + show yumemi happy + + yumemi "Ah, the flower youkai! We've not met beyond in passing have we? What a shame, considering our mutual friends." + + yuuka "You..." + + # yumemi "I don't understand." + + # TODO: complete this shit + return label day_transition: @@ -4428,6 +4832,7 @@ label day_transition: show screen inventory_display_toggle $ renpy.notify("Clue #4 gotten.") $ inventory_items.append("Clue #4") + $ investigation_progress += 1 elif("Clue #1" in inventory_items or "Clue #2" in inventory_items or "Clue #3" in inventory_items): scene bg garden at flip with fade @@ -4528,22 +4933,31 @@ label day_transition: play sound "wind1.mp3" $ renpy.pause(3.0, hard=True) - "..." + "{cps=1}...{/cps}" play sound "wind2.mp3" $ renpy.pause(3.0) - "..." + "{cps=1}...{/cps}" play sound "wind3.mp3" $ renpy.pause(3.0) - "..." + if not time_traveling: + "{cps=1}...{/cps}" # how ??? + else: + "{cps=1}Are{/cps}... {cps=1}headed{/cps}... {cps=1}direction{/cps}...{nw}" stop music + + # TODO: Test if this works in this context and still lets us time travel out + + jump pause_loop + return else: "Day is currently set to [day]. This should be impossible. You've likely encountered a bug." + $ raise Exception("Impossible day " + day + " for location") return $ renpy.jump(next_label)