diff --git a/game/audio/bowling.mp3 b/game/audio/bowling.mp3 new file mode 100644 index 0000000..9cc24f0 Binary files /dev/null and b/game/audio/bowling.mp3 differ diff --git a/game/audio/auditorium.mp3 b/game/audio/silly.mp3 similarity index 100% rename from game/audio/auditorium.mp3 rename to game/audio/silly.mp3 diff --git a/game/gui/button/choice_hover_background.png b/game/gui/button/choice_hover_background.png index 2c76ede..2690844 100644 Binary files a/game/gui/button/choice_hover_background.png and b/game/gui/button/choice_hover_background.png differ diff --git a/game/gui/button/choice_idle_background.png b/game/gui/button/choice_idle_background.png index 1ab6ca6..d011169 100644 Binary files a/game/gui/button/choice_idle_background.png and b/game/gui/button/choice_idle_background.png differ diff --git a/game/gui/button/choicebox.png b/game/gui/button/choicebox.png new file mode 100644 index 0000000..14dd7ba Binary files /dev/null and b/game/gui/button/choicebox.png differ diff --git a/game/optional files/special_labels.rpy b/game/optional files/special_labels.rpy index bd76b2e..65774d0 100644 --- a/game/optional files/special_labels.rpy +++ b/game/optional files/special_labels.rpy @@ -9,13 +9,13 @@ ## ## Put the splash screen code here. It runs when the game is launched. ## -label splashscreen(): - return +# label splashscreen(): +# return ## After Load ################################################################## ## ## Adjust any variables etc in the after_load label ## Also consider: define config.after_load_callbacks = [ ... ] ## -label after_load(): - return +# label after_load(): +# return diff --git a/game/screens/choice_screen.rpy b/game/screens/choice_screen.rpy index aee41e4..8967cc4 100644 --- a/game/screens/choice_screen.rpy +++ b/game/screens/choice_screen.rpy @@ -10,23 +10,24 @@ screen choice(items): style_prefix "choice" - vbox: + grid 2 6: for i in items: - textbutton i.caption action i.action + textbutton i.caption action i.action: + xalign 0.5 -style choice_vbox: +style choice_grid: xalign 0.5 ypos 405 - yanchor 0.5 + yanchor 0.0 spacing 33 style choice_button: is default # This means it doesn't use the usual button styling - xysize (926, None) + xysize (None, 144) background Frame("gui/button/choice_[prefix_]background.png", 150, 25, 150, 25, tile=False) - padding (12, 12) + padding (100, 12) style choice_button_text: is default # This means it doesn't use the usual button text styling diff --git a/game/script.rpy b/game/script.rpy index eafdc25..14be0ff 100644 --- a/game/script.rpy +++ b/game/script.rpy @@ -1,6 +1,6 @@ # What is left? # TEXT STAGE VAR -# introduction Y N Y +# introduction Y Y Y # icebreakers Y N Y # hands-on lecture Y N Y # consultation Y N Y @@ -10,6 +10,7 @@ default persistent.pixelfont = True default persistent.laozi = False +default persistent.playeranswer = "" # just a random string, not just empty otherwise people could submit empty ones but not have that saved for next time define yuuka = Character("Yuuka", callback = name_callback, cb_name = "yuuka") define reimu = Character("Reimu", callback = name_callback, cb_name = "reimu") @@ -19,6 +20,44 @@ 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) +define longfade = Fade(0, 0.5, 3) +# Camera flash - quickly fades to white, then back to the scene. +define flash = Fade(0.1, 0.0, 0.5, color="#fff") +define longflash = Fade(0.1, 1, 1, color="#fff") + +init python: + def truncate(n, decimals=0): + multiplier = 10 ** decimals + return int(n * multiplier) / multiplier + +label splashscreen: + scene movie1 + scene black + + python: + import time + + if persistent.secretKey is None: + persistent.secretKey = truncate(time.time() * 666, 12) + + renpy.save_persistent() + + show text "Hit Shift-A to replace the font and change text scaling." + with Pause(7) + + hide text with fade + $ renpy.pause(1.0) + + show text "This is a fan-made video game not affiliated\nwith or endorsed by the original creators.\n\n{color=e63d3c}Touhou Project{/color} original concept, characters, and elements are property of {color=e63d3c}ZUN{/color} and {color=e63d3c}Team Shanghai Alice{/color}. Please support the official series." + with Pause(7) + + hide text with fade + $ renpy.pause(1.0) + + nvl clear + + return + transform damaged: yalign 0.5 xalign 0.5 @@ -469,6 +508,7 @@ label start: jump presentation_begins $ persistent.laozi = True + $ renpy.save_persistent() # show text " {font=m3x6.ttf}For this reason the great man dwells in the thick, and does not rest with the thin.{/font}\n{font=m6x11.ttf}He dwells in the {color=#cc2222}fruit{/color}, and does not rest with the {color=#ffff00}flower{/font}{/color}.\n {font=m3x6.ttf}- Laozi, Tao Te Ching{/font}" at truecenter show text "{alpha=0.2}For this reason the great man dwells in the thick, and does not rest with the thin.{/alpha}\nHe dwells in the {color=#cc2222}fruit{/color}, and does not rest with the {color=#ffff00}flower{/color}.\n {alpha=0.6}- Laozi, Tao Te Ching{/alpha}" at truecenter with dissolve @@ -769,6 +809,8 @@ label start: "No, obviously.": + stop music + show yuuka neutral: xalign 0.0 yalign 0.5 @@ -789,20 +831,18 @@ label start: $ renpy.pause(0.85, hard=True) - show marisa surprise at spin, thrown_offscreen: + play sound "bowling.mp3" + + show marisa surprise at damaged, spin, thrown_offscreen: xalign 1.0 yalign 0.5 yuuka "{i}Then I hit her really hard.{/i}" (cb_name="") - # TODO: marisa spinning studio trigger style - marisa ":O" yuuka "From the earth you came, to the dirt you'll bite." - # TODO: kamehameha - show bg black with fade yuuka "{i}Then she was gone, just like that.{nw=2.5}{/i}" (cb_name="") @@ -872,6 +912,9 @@ label start: jump ending "...yes. Marisa can be trusted.": + + stop music fadeout 2.0 + yuuka "..." marisa "..." @@ -917,18 +960,34 @@ label start: jump icebreakers label icebreakers: + + show yuuka amused: + xalign 0.0 + yalign 0.5 + with easeinleft + yuuka "Yes, that would be very helpful." narrator "{i}Led by the student, Yuuka entered the building.{/i}" scene bg hallway with fade + show yuuka amused: + xalign 0.0 + yalign 0.5 + with easeinleft + yuuka "It's very..." "Student" "Modern, isn't it?" scene bg classroom with fade + show yuuka amused: + xalign -0.2 + yalign 0.5 + with easeinleft + narrator "{i}The student, leading Yuuka to her class, held the door open for her, letting her get a peek inside.{/i}" if not attacked_student: @@ -947,6 +1006,15 @@ label start: if not attacked_student: yuuka "{sc}Amusing{/sc} as a misunderstanding this is, I really should be..." + show yuuka irritated: + xalign -0.2 + yalign 0.5 + + show marisa happy: + xalign 0.8 + yalign 0.5 + with easeinright + marisa "Hey teach, how about we get a move on before lunch's on!" if attacked_student: @@ -954,12 +1022,27 @@ label start: else: yuuka "{i}It was at this moment that I took the time actually pick out individual faces from the crowd.{/i}" (cb_name="") + show yuuka neutral: + xalign 0.0 + yalign 0.5 + with ease + if attacked_student: yuuka "{i}There was Marisa Kirisame, cooled down from our earlier encounter.{/i}" (cb_name="") else: yuuka "{i}There was Marisa Kirisame, irritance, thief, and perpetual child as per usual.{/i}" (cb_name="") - yuuka "{i}Sitting next to her was Alice Margatroid, hatchling spawn of Makai, and the relatively coolheaded one of the three.{/i}" (cb_name="") + show alice neutral: + xalign 1.0 + yalign 0.5 + with easeinright + + yuuka "{i}Sitting next to her was Alice Margatroid, hatchling spawn from Makai, and the relatively reasonable one of the three.{/i}" (cb_name="") + + show reimu angry: + xalign 1.2 + yalign 0.5 + with easeinright yuuka "{i}Last was Reimu Hakurei, sitting in the back, with a glint in her eye staring back at me.{/i}" (cb_name="") @@ -970,6 +1053,10 @@ label start: yuuka "{i}While I was and forever will be confident in my ability to subdue our militant shrine maiden,{/i}" (cb_name="") + show yuuka happy: + xalign 0.0 + yalign 0.5 + yuuka "{i}I am a person who can play along. It makes encounters more interesting. I put on my most polite smile and...{/i}" (cb_name="") if not attacked_student: @@ -1187,10 +1274,12 @@ label start: yuuka "The only question is if I'm actually going along with this or... if I should at least get some fun out of this?" - menu: - "What will Yuuka do?" + yuuka "And after all, I should get something in return for what I give them." - "Be an actual teacher": + menu: + "What does Yuuka give them?" + + "Sunflowers {i}(matter-of-fact){/i}": yuuka "Oh fine then. Alice is so insistent on me interacting with humans? Sure, no problems here." yuuka "But what am I even teaching?" @@ -1199,7 +1288,7 @@ label start: jump lecture - "Give them an {size=50}✨{/size}unforgettable{size=50}✨{/size} experience": + "Sunflowers {i}(scheming){/}": yuuka "Oh fine then. Alice is so insistent on me interacting with weaklings? Sure, no problems here." yuuka "Especially, if I get a chance to shut them up." @@ -2129,6 +2218,13 @@ label faculty: "Day is currently set to [day]. This should be impossible. You've likely encountered a bug." return +screen mangainput: + viewport: + xalign 0.5 + yalign 0.5 + xysize (400,300) + input length 100 pos (0,0) color "#081820" xmaximum 400 ymaximum 300 + label exam: if day == 3: # TODO @@ -2143,7 +2239,51 @@ label exam: label garden_of_the_sun_intro: scene bg garden with fade - yuuka "lets make this exam" + + $ renpy.pause(2.0) + + yuuka "I'm sorry I haven't attended to you as much this past week." + + $ renpy.pause(1.0) + + yuuka "There's just one more thing I have to do. I hope you'll understand." + + $ renpy.pause(1.0) + + yuuka "...I really do hope you'll understand." + + # exam minigame thingy not really but based on the koakuma kiss comic making + # keep it simple, draw a form + + # ----------------------------------- # + # Student's perspective + + "Student" "Hey, Reimu!" + + reimu "Huh, uh, yeah?" + + "Student" "Did you review Professor Okazaki's research into the soul? I'm still confused by it, I was hoping you understood it better than I did." + + reimu "Oh, you could explain what you know then, to make sure we're on the same page." + + "Student" "Sure!" + + "Student" "So the force of a magical attack is its mass measured in the weight of a soul times acceleration." + + "Student" "That means we can derive the weight of a soul if we divide the force of a magical attack by its acceleration." + + "Student" "Now, we need a way to measure the force of a-" + + yuuka "Take your seats and put away anything other than a pen." + + # F = m × a or m = F/a + + $ msg = renpy.input("Answer?", screen=u'exam_input') + + $ persistent.playeranswer = msg + $ renpy.save_persistent() + + $ examQuestionResponse(msg) elif day == 4: # TODO # TEXT N @@ -2226,4 +2366,4 @@ label pause_loop: window hide $ renpy.pause() - jump pause_loopRR \ No newline at end of file + jump pause_loop \ No newline at end of file