diff --git a/game/screens.rpy b/game/screens.rpy index a725a2c..d0d8dbd 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -298,20 +298,6 @@ screen quick_menu(): [ _("Load"), ShowMenu('load') ] ] ) -screen debug_menu(): - zorder 100 - window: - background "gui/debug.webp" - xalign -1.0 - yalign 0.0 - grid 1 3: - style_prefix "score" - xalign 0.0 - yalign 0.0 - text "incos: " + str(score_inco) - text "olivias: " + str(score_olivia) - text "DEBUG SCORE CARD" - ## This code ensures that the quick_menu screen is displayed in-game, whenever ## the player has not explicitly hidden the interface. @@ -374,8 +360,8 @@ screen navigation(): textbutton _("Main Menu") activate_sound "audio/ui/snd_ui_back.wav" action MainMenu() - if config.developer: - textbutton _("Debug Menu") activate_sound "audio/ui/snd_ui_click.wav" action ShowMenu("debug_menu") + #if config.developer and not main_menu: + # textbutton _("Chapter Select") activate_sound "audio/ui/snd_ui_click.wav" action Start("chapter_select") #if renpy.variant("pc"): @@ -522,6 +508,8 @@ screen main_menu(): # ] ) #else: use main_menu_button("gui/button/menubuttons/title_button.png", "Start", Start()) + #if config.developer: + # use main_menu_button("gui/button/menubuttons/title_button.png", "Start from...", Start("chapter_select")) # use bonus_chapter_button() use main_menu_buttons("gui/button/menubuttons/title_button.png", [ diff --git a/game/script/4-Crocodile-Sunny-D.rpy b/game/script/4-Crocodile-Sunny-D.rpy index c3fdae8..ec4f865 100644 --- a/game/script/4-Crocodile-Sunny-D.rpy +++ b/game/script/4-Crocodile-Sunny-D.rpy @@ -3865,9 +3865,11 @@ label PartyEnd: pause 0.5 stop music fadeout 3 - scene black with Dissolve(1) + scene black with Dissolve(3) pause 0.5 "{cps=5}...{/cps}" + jump end_of_demo + return diff --git a/game/src/definitions/characters.rpy b/game/src/definitions/characters.rpy index f838981..0939529 100644 --- a/game/src/definitions/characters.rpy +++ b/game/src/definitions/characters.rpy @@ -49,13 +49,13 @@ layeredimage inco: # body sweat group sweat: if_not "gym" - attribute sweat: + attribute sweat: blend 'multiply' "spr_inco_body_normal_sweat" attribute nosweat "spr_null" group sweat: if_any "gym" - attribute sweat: + attribute sweat: blend 'multiply' "spr_inco_body_gym_sweat" @@ -195,96 +195,104 @@ image inco falling right = LayeredImageProxy("inco falling", Transform(xzoom=1.0 # OLIVIA # +# TIER 1 layeredimage olivia: xanchor 0.5 yoffset -150 - group expressions: - # Tier 1 - attribute neutral default: - "spr_olivia_neutral" - attribute happy: - "spr_olivia_happy" - attribute cheerful: - "spr_olivia_cheerful" - attribute annoyed: - "spr_olivia_annoyed" - attribute considering: - "spr_olivia_considering" - attribute surprised: - "spr_olivia_surprised" - attribute sad: - "spr_olivia_sad" - attribute shocked: - "spr_olivia_shocked" - attribute angry: - "spr_olivia_angry" - attribute skeptical: - "spr_olivia_skeptical" - attribute somberdown: - "spr_olivia_somberdown" - attribute somber: - "spr_olivia_somber" - attribute grin: - "spr_olivia_grin" - attribute neutraldown: - "spr_olivia_neutraldown" - attribute shockeddown: - "spr_olivia_shockeddown" - attribute grindown: - "spr_olivia_grindown" - # Tier 2 - attribute attentive: - "spr_olivia_attentive" - attribute embarassed: - "spr_olivia_embarassed" - attribute excited: - "spr_olivia_excited" - attribute grumpy: - "spr_olivia_grumpy" - attribute hmph: - "spr_olivia_hmph" - attribute furious: - "spr_olivia_furious" - attribute ugh: - "spr_olivia_ugh" - attribute canteen: - "spr_olivia_canteen" - attribute canteeneyes: - "spr_olivia_canteeneyes" - attribute hoodie: - "spr_olivia_hoodie" - attribute hoodieflipoff: - "spr_olivia_hoodieflipoff" + mesh True + + group tails_manual: + attribute t_neutral default "spr_olivia_tail_normal_neutral" + attribute t_attentive "spr_olivia_tail_normal_attentive" + attribute t_embarassed "spr_olivia_tail_normal_embarassed" + attribute t_excited "spr_olivia_tail_normal_excited" + attribute t_furious "spr_olivia_tail_normal_furious" + attribute t_grumpy "spr_olivia_tail_normal_grumpy" + attribute t_hmph"spr_olivia_tail_normal_hmph" + attribute t_hoodie "spr_olivia_tail_normal_hoodie" + attribute t_ugh "spr_olivia_tail_normal_ugh" + attribute t_none "spr_null" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + # Outfits + group bodies: + attribute normal default "spr_olivia_body_normal_neutral" + + group faces: + if_any "normal" + attribute neutral default "spr_olivia_face_normal_neutral" + attribute angry "spr_olivia_face_normal_angry" + attribute annoyed "spr_olivia_face_normal_annoyed" + attribute cheerful "spr_olivia_face_normal_cheerful" + attribute considering "spr_olivia_face_normal_considering" + attribute grin "spr_olivia_face_normal_grin" + attribute grinconsidering "spr_olivia_face_normal_grinconsidering" + attribute grindown "spr_olivia_face_normal_grindown" + attribute happy "spr_olivia_face_normal_happy" + attribute neutraldown "spr_olivia_face_normal_neutraldown" + attribute sad "spr_olivia_face_normal_sad" + attribute shocked "spr_olivia_face_normal_shocked" + attribute shockeddown "spr_olivia_face_normal_shockeddown" + attribute skeptical "spr_olivia_face_normal_skeptical" + attribute somber "spr_olivia_face_normal_somber" + attribute somberdown "spr_olivia_face_normal_somberdown" + attribute surprised "spr_olivia_face_normal_surprised" + + group headshadow: + attribute normal default: + blend 'multiply' + "spr_olivia_face_normal_shadow" + + # Outfits + group hair: + attribute normal default "spr_olivia_hair_normal_neutral" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + + # Outfits + group arm: + attribute normal default "spr_olivia_arm_normal_neutral" image olivia left = LayeredImageProxy("olivia", Transform(xzoom=-1.0)) image olivia right = LayeredImageProxy("olivia", Transform(xzoom=1.0)) - layeredimage olivia pool: xanchor 0.5 yoffset -150 - group expressions: - # Tier 1 - attribute neutral default: - "spr_olivia_pool_neutral" - attribute happy: - "spr_olivia_pool_happy" - attribute annoyed: - "spr_olivia_pool_annoyed" - attribute considering: - "spr_olivia_pool_considering" - attribute consideringsmile: - "spr_olivia_pool_consideringgrin" - attribute surprised: - "spr_olivia_pool_surprised" - attribute angry: - "spr_olivia_pool_angry" - attribute somberdown: - "spr_olivia_pool_somberdown" - attribute somber: - "spr_olivia_pool_somber" - attribute shocked: - "spr_olivia_pool_shocked" + mesh True + + always "spr_olivia_body_pool" + + group faces: + attribute neutral default "spr_olivia_face_normal_neutral" + attribute angry "spr_olivia_face_normal_angry" + attribute annoyed "spr_olivia_face_normal_annoyed" + attribute cheerful "spr_olivia_face_normal_cheerful" + attribute considering "spr_olivia_face_normal_considering" + attribute grin "spr_olivia_face_normal_grin" + attribute grinconsidering "spr_olivia_face_normal_grinconsidering" + attribute grindown "spr_olivia_face_normal_grindown" + attribute happy "spr_olivia_face_normal_happy" + attribute neutraldown "spr_olivia_face_normal_neutraldown" + attribute sad "spr_olivia_face_normal_sad" + attribute shocked "spr_olivia_face_normal_shocked" + attribute shockeddown "spr_olivia_face_normal_shockeddown" + attribute skeptical "spr_olivia_face_normal_skeptical" + attribute somber "spr_olivia_face_normal_somber" + attribute somberdown "spr_olivia_face_normal_somberdown" + attribute surprised "spr_olivia_face_normal_surprised" + + always "spr_olivia_hair_pool" + + # TODO: See about having a transform applied to the droplets so when she's shown it'll move in and fade out over time. + group droplets: + attribute droplets default "spr_olivia_droplets_pool" + attribute nodroplets "spr_null" image olivia pool left = LayeredImageProxy("olivia pool", Transform(xzoom=-1.0)) image olivia pool right = LayeredImageProxy("olivia pool", Transform(xzoom=1.0)) @@ -292,12 +300,224 @@ image olivia pool right = LayeredImageProxy("olivia pool", Transform(xzoom=1.0)) layeredimage oliviatail: xanchor 0.5 yoffset -150 - always "spr_olivia_pool_tail" + always "spr_olivia_tail_pool" image oliviatail right = Transform("oliviatail", xzoom=-1.0) image oliviatail left = Transform("oliviatail", xzoom=-1.0) +# TIER 2 +# DEAR GOD THE BLOAT + +layeredimage olivia attentive: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_attentive" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_attentive" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + + always "spr_olivia_arm_normal_attentive" + +image olivia attentive left = LayeredImageProxy("olivia attentive", Transform(xzoom=-1.0)) +image olivia attentive right = LayeredImageProxy("olivia attentive", Transform(xzoom=1.0)) + +layeredimage olivia canteen: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_neutral" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_canteen" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + + always "spr_olivia_arm_normal_canteen" + +image olivia canteen left = LayeredImageProxy("olivia canteen", Transform(xzoom=-1.0)) +image olivia canteen right = LayeredImageProxy("olivia canteen", Transform(xzoom=1.0)) + +layeredimage olivia canteeneyes: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_neutral" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_canteeneyes" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + + always "spr_olivia_arm_normal_canteen" + +image olivia canteeneyes left = LayeredImageProxy("olivia canteeneyes", Transform(xzoom=-1.0)) +image olivia canteeneyes right = LayeredImageProxy("olivia canteeneyes", Transform(xzoom=1.0)) + +layeredimage olivia embarassed: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_embarassed" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_embarassed" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + +image olivia embarassed left = LayeredImageProxy("olivia embarassed", Transform(xzoom=-1.0)) +image olivia embarassed right = LayeredImageProxy("olivia embarassed", Transform(xzoom=1.0)) + +layeredimage olivia excited: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_excited" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_excited" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + + always "spr_olivia_arm_normal_excited" + +image olivia excited left = LayeredImageProxy("olivia excited", Transform(xzoom=-1.0)) +image olivia excited right = LayeredImageProxy("olivia excited", Transform(xzoom=1.0)) + +layeredimage olivia furious: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_furious" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_furious" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + + always "spr_olivia_arm_normal_furious" + +image olivia furious left = LayeredImageProxy("olivia furious", Transform(xzoom=-1.0)) +image olivia furious right = LayeredImageProxy("olivia furious", Transform(xzoom=1.0)) + +layeredimage olivia grumpy: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_grumpy" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_grumpy" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + +image olivia grumpy left = LayeredImageProxy("olivia grumpy", Transform(xzoom=-1.0)) +image olivia grumpy right = LayeredImageProxy("olivia grumpy", Transform(xzoom=1.0)) + +layeredimage olivia hmph: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_hmph" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_hmph" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + +image olivia hmph left = LayeredImageProxy("olivia hmph", Transform(xzoom=-1.0)) +image olivia hmph right = LayeredImageProxy("olivia hmph", Transform(xzoom=1.0)) + +layeredimage olivia hoodie: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_hoodie" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_hoodie" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + +image olivia hoodie left = LayeredImageProxy("olivia hoodie", Transform(xzoom=-1.0)) +image olivia hoodie right = LayeredImageProxy("olivia hoodie", Transform(xzoom=1.0)) + +layeredimage olivia hoodieflipoff: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_hoodie" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_hoodieflipoff" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + +image olivia hoodieflipoff left = LayeredImageProxy("olivia hoodieflipoff", Transform(xzoom=-1.0)) +image olivia hoodieflipoff right = LayeredImageProxy("olivia hoodieflipoff", Transform(xzoom=1.0)) + +layeredimage olivia ugh: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_tail_normal_ugh" + + group wheelchair_back: + attribute wheelchair default "spr_olivia_wheelchair_back" + attribute nowheelchair "spr_null" + + always "spr_olivia_body_normal_ugh" + + group wheelchair_front: + attribute wheelchair default "spr_olivia_wheelchair_front" + attribute nowheelchair "spr_null" + + always "spr_olivia_arm_normal_ugh" + +image olivia ugh left = LayeredImageProxy("olivia ugh", Transform(xzoom=-1.0)) +image olivia ugh right = LayeredImageProxy("olivia ugh", Transform(xzoom=1.0)) # @@ -309,8 +529,9 @@ layeredimage ben: xanchor 0.5 mesh True - group outfit: + group outfit: attribute normal default "spr_ben_body_normal" + attribute prom "spr_ben_body_prom" group face: attribute neutral default "spr_ben_face_neutral" @@ -323,13 +544,15 @@ layeredimage ben: attribute unimpressed "spr_ben_face_unimpressed" attribute skeptical "spr_ben_face_skeptical" attribute surprised "spr_ben_face_surprised" + attribute cheerfulface "spr_ben_face_cheerful" - group outfit: + group outfit: attribute normal default "spr_ben_hair_normal" + attribute prom "spr_ben_hair_prom" group glasses: attribute glasses default "spr_ben_glasses" - attribute no_glasses "spr_null" + attribute noglasses "spr_null" image ben left = LayeredImageProxy("ben", Transform(xzoom=-1.0)) image ben right = LayeredImageProxy("ben", Transform(xzoom=1.0)) @@ -394,7 +617,7 @@ layeredimage ben cheerful: group glasses: attribute glasses default "spr_ben_glasses" - attribute no_glasses "spr_null" + attribute noglasses "spr_null" always "spr_ben_body_normal_cheerfularm" @@ -419,6 +642,7 @@ layeredimage damien: group outfit: attribute normal default "spr_damien_body_normal" attribute gym "spr_damien_body_gym" + attribute prom "spr_damien_body_prom" group face: attribute neutral default "spr_damien_face_neutral" @@ -438,6 +662,12 @@ layeredimage damien: group outfit: attribute normal default "spr_damien_hair_normal" attribute gym "spr_damien_hair_normal" + attribute prom "spr_damien_hair_prom" + + group glasses: + if_any "prom" + attribute glasses default "spr_damien_glasses" + attribute noglasses "spr_null" image damien left = LayeredImageProxy("damien", Transform(xzoom=-1.0)) image damien right = LayeredImageProxy("damien", Transform(xzoom=1.0)) @@ -577,10 +807,14 @@ layeredimage lizbody: attribute terrified "spr_liz_body_terrified" attribute thinking "spr_liz_body_thinking" attribute furious "spr_liz_body_furious" + group outfit: + if_any "prom" + attribute neutral default "spr_liz_body_prom_neutral" # Dummy group to toggle between the above groups group outfit_toggler: attribute normal default "spr_null" + attribute prom "spr_null" image lizbody left = LayeredImageProxy("lizbody", Transform(xzoom=-1.0)) image lizbody right = LayeredImageProxy("lizbody", Transform(xzoom=1.0)) @@ -596,6 +830,7 @@ layeredimage lizhead: # back hair group outfit: attribute normal default "spr_liz_normal_backhair" + attribute prom "spr_liz_prom_backhair" group neck: attribute n_down default "spr_liz_neck_neutral" @@ -610,10 +845,23 @@ layeredimage lizhead: attribute sad "spr_liz_face_normal_sad" attribute shocked "spr_liz_face_normal_shocked" attribute unimpressed "spr_liz_face_normal_unimpressed" + attribute sadsmile "spr_liz_face_normal_sadsmile" + group face: + if_any "prom" + attribute neutral default "spr_liz_face_prom_neutral" + attribute angry "spr_liz_face_prom_angry" + attribute considering "spr_liz_face_prom_considering" + attribute explaining "spr_liz_face_prom_explaining" + attribute happy "spr_liz_face_prom_happy" + attribute sad "spr_liz_face_prom_sad" + attribute shocked "spr_liz_face_prom_shocked" + attribute unimpressed "spr_liz_face_prom_unimpressed" + attribute sadsmile "spr_liz_face_prom_sadsmile" # front hair group outfit: attribute normal default "spr_liz_normal_fronthair" + attribute prom "spr_liz_prom_fronthair" # hat shadow group hat: @@ -650,7 +898,7 @@ layeredimage lizhead excited: group neck: attribute n_down default "spr_liz_neck_excited" - + always "spr_liz_face_excited" image lizhead excited left = LayeredImageProxy("lizhead excited", Transform(xzoom=-1.0)) @@ -692,7 +940,7 @@ layeredimage lizhead thinking: group neck: attribute n_down default "spr_liz_neck_thinking" - + always "spr_liz_face_thinking" # hat shadow @@ -721,7 +969,7 @@ layeredimage lizhead furious: group neck: attribute n_down default "spr_liz_neck_furious" - + always "spr_liz_face_furious" image lizhead furious left = LayeredImageProxy("lizhead furious", Transform(xzoom=-1.0)) @@ -744,25 +992,41 @@ layeredimage mia: group outfit: attribute normal default "spr_mia_body_normal" attribute gym "spr_mia_body_gym" + attribute prom "spr_mia_body_prom" # face group head: + if_not "prom" attribute neutral default "spr_mia_face_neutral" attribute angry "spr_mia_face_angry" attribute considering "spr_mia_face_considering" attribute cringe "spr_mia_face_cringe" attribute smug "spr_mia_face_smug" attribute shocked "spr_mia_face_shocked" + attribute smile "spr_mia_face_smile" + + group head: + if_any "prom" + attribute neutral default "spr_mia_face_prom_neutral" + attribute angry "spr_mia_face_prom_angry" + attribute considering "spr_mia_face_prom_considering" + attribute cringe "spr_mia_face_prom_cringe" + attribute smug "spr_mia_face_prom_smug" + attribute shocked "spr_mia_face_prom_shocked" + attribute smile "spr_mia_face_prom_smile" + # hair group head: - if_not "gym" + if_any "normal" attribute neutral default "spr_mia_hair_neutral" attribute angry "spr_mia_hair_angry" attribute considering "spr_mia_hair_neutral" attribute cringe "spr_mia_hair_cringe" attribute smug "spr_mia_hair_cringe" attribute shocked "spr_mia_hair_neutral" + attribute smile "spr_mia_hair_neutral" + group head: if_any "gym" attribute neutral default "spr_mia_hair_gym" @@ -771,6 +1035,17 @@ layeredimage mia: attribute cringe "spr_mia_hair_gym" attribute smug "spr_mia_hair_gym" attribute shocked "spr_mia_hair_gym" + attribute smile "spr_mia_hair_gym" + + group head: + if_any "prom" + attribute neutral default "spr_mia_hair_prom" + attribute angry "spr_mia_hair_prom" + attribute considering "spr_mia_hair_prom" + attribute cringe "spr_mia_hair_prom" + attribute smug "spr_mia_hair_prom" + attribute shocked "spr_mia_hair_prom" + attribute smile "spr_mia_hair_prom" image mia left = LayeredImageProxy("mia", Transform(xzoom=-1.0)) image mia right = LayeredImageProxy("mia", Transform(xzoom=1.0)) @@ -878,19 +1153,23 @@ layeredimage scaler: # body group outfit: attribute normal default "spr_scaler_body_normal" + attribute prom "spr_scaler_body_prom" group face: if_any "normal" attribute neutral default "spr_scaler_face_neutral" attribute shocked "spr_scaler_face_shocked" attribute happy "spr_scaler_face_happy" - - group outfit_toggler: - attribute normal default "spr_null" + group face: + if_any "prom" + attribute neutral default "spr_scaler_face_prom_neutral" + attribute shocked "spr_scaler_face_prom_shocked" + attribute happy "spr_scaler_face_prom_happy" # hair group outfit: attribute normal default "spr_scaler_hair_normal" + attribute prom "spr_scaler_hair_prom" image scaler left = LayeredImageProxy("scaler", Transform(xzoom=-1.0)) image scaler right = LayeredImageProxy("scaler", Transform(xzoom=1.0)) @@ -963,9 +1242,12 @@ layeredimage vinny: yoffset -100 group expressions: - attribute neutral default "spr_vinny_neutral" + attribute neutral "spr_vinny_neutral" attribute sad "spr_vinny_sad" - + attribute happy default "spr_vinny_happy" + attribute annoyed "spr_vinny_annoyed" + attribute deadpan "spr_vinny_deadpan" + group swag: attribute swag "spr_vinny_chain" attribute unswag "spr_null" @@ -1057,9 +1339,6 @@ layeredimage metroferris: - - - # # LUNARA # @@ -1086,7 +1365,11 @@ image lunara right = LayeredImageProxy("lunara", Transform(xzoom=1.0)) layeredimage kiara: xanchor 0.5 - always "spr_kiara_neutral" + group expressions: + attribute neutral default "spr_kiara_neutral" + attribute happy "spr_kiara_happy" + attribute cheerful "spr_kiara_cheerful" + attribute shocked "spr_kiara_shocked" image kiara left = LayeredImageProxy("kiara", Transform(xzoom=-1.0)) image kiara right = LayeredImageProxy("kiara", Transform(xzoom=1.0)) \ No newline at end of file diff --git a/game/src/definitions/images.rpy b/game/src/definitions/images.rpy index b11af8f..afed7b2 100644 --- a/game/src/definitions/images.rpy +++ b/game/src/definitions/images.rpy @@ -20,6 +20,8 @@ image spr_null = Null() image white = "#ffffff" image black = "#000000" image paper_color = "#ede6e6" +image blue = "#6495ed" +image maroon = "#440112FF" image anim_caveintro: @@ -43,7 +45,7 @@ image ctc_end_marker: # xalign 0.925 yalign 0.98 alpha 0 linear 0.25 alpha 1 - + image ctc_mid_marker: "pickicon_smaller" # xalign 0.925 yalign 0.98 @@ -86,8 +88,18 @@ layeredimage spr_easel: xanchor 0.5 group easel: - attribute front "spr_easel_front" attribute back default "spr_easel_back" + attribute front "spr_easel_front" + +layeredimage wheelchair: + xanchor 0.5 yoffset -150 mesh True + + always "spr_olivia_wheelchair_back" + always "spr_olivia_wheelchair_front" + +image wheelchair left = LayeredImageProxy("wheelchair", Transform(xzoom=-1.0)) +image wheelchair right = LayeredImageProxy("wheelchair", Transform(xzoom=1.0)) + #simple flash define flash = Fade(.25, 0, .75, color="#fff") @@ -281,8 +293,8 @@ image anim_benintro2 = Composite( (0, 0), "anim_benintro_background", (0, 0), "anim_benintro_ben2" ) -image anim_benintro3 = Movie(play="animations/ben/anim_benintro_standup" + DEFAULT_VIDEO_EXTENSION, - start_image="animations/ben/anim_benintro_ben2" + DEFAULT_IMAGE_EXTENSION, +image anim_benintro3 = Movie(play="animations/ben/anim_benintro_standup" + DEFAULT_VIDEO_EXTENSION, + start_image="animations/ben/anim_benintro_ben2" + DEFAULT_IMAGE_EXTENSION, loop=False) # Olivia's intro @@ -352,6 +364,7 @@ image anim_pooldunk5: "anim_pooldunk_f12" + # # METRO RANDY ANIMATIONS # @@ -991,4 +1004,4 @@ image spr_metroferris_face_skeptical_to_smirk: "spr_metroferris_blink_neutral" pause 3.5 "spr_metroferris_blink_neutral" - repeat \ No newline at end of file + repeat diff --git a/game/src/definitions/other.rpy b/game/src/definitions/other.rpy index 0b5dcd3..c004edb 100644 --- a/game/src/definitions/other.rpy +++ b/game/src/definitions/other.rpy @@ -4,31 +4,39 @@ define base = Character(ctc="ctc_end_marker", ctc_pause="ctc_mid_marker", ctc_timedpause=Null(), ctc_position="nestled") #imagine having to tell your users they need to interact with the video game define narrator = Character(kind=base) define unknown = Character('???', base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) # Grey -define I = Character('Inco', base, color="#dbe0ff", who_outlines=[(gui.name_text_thickness, '#0e0841')]) # Navy blue -define O = Character('Olivia', base, color="#73fdb1", who_outlines=[(gui.name_text_thickness, '#03200c')]) -define B = Character('Ben', base, color="#9aceff", who_outlines=[(gui.name_text_thickness, '#0b0d22')]) -define Scal = Character ('Scaler', base, color="#ffd9a8", who_outlines=[(gui.name_text_thickness, '#200505')]) # Bright fuckin' yellow -define Proc = Character ('Prockling', base, color="#ffeaf2", who_outlines=[(gui.name_text_thickness, '#4e024a')]) +define I = Character(_('Inco'), base, color="#dbe0ff", who_outlines=[(gui.name_text_thickness, '#0e0841')]) # Navy blue +define O = Character(_('Olivia'), base, color="#73fdb1", who_outlines=[(gui.name_text_thickness, '#03200c')]) +define B = Character(_('Ben'), base, color="#9aceff", who_outlines=[(gui.name_text_thickness, '#0b0d22')]) +define Scal = Character (_('Scaler'), base, color="#ffd9a8", who_outlines=[(gui.name_text_thickness, '#200505')]) # Bright fuckin' yellow +define Proc = Character (_('Prockling'), base, color="#ffeaf2", who_outlines=[(gui.name_text_thickness, '#4e024a')]) define Coach = Character(_('Coach'), base, color="#ffa494", who_outlines=[(gui.name_text_thickness, '#350404')]) -define D = Character('Damien', base, color="#fdddd4", who_outlines=[(gui.name_text_thickness, '#2c0e03')]) # Some kinda pastel velvet? -define L = Character('Liz', base, color="#faeeca", who_outlines=[(gui.name_text_thickness, '#032449')]) # Some kinda pastel velvet? -define Iad = Character('Iadakan', base, color="#fff8e6", who_outlines=[(gui.name_text_thickness, '#272b09')]) -define Mia = Character('Mia', base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#8a0e0e')]) -define Lu = Character('Lunara', base, color="#effdff", who_outlines=[(gui.name_text_thickness, '#082b30')]) +define D = Character(_('Damien'), base, color="#fdddd4", who_outlines=[(gui.name_text_thickness, '#2c0e03')]) # Some kinda pastel velvet? +define L = Character(_('Liz'), base, color="#faeeca", who_outlines=[(gui.name_text_thickness, '#032449')]) # Some kinda pastel velvet? +define Iad = Character(_('Iadakan'), base, color="#fff8e6", who_outlines=[(gui.name_text_thickness, '#272b09')]) +define Mia = Character(_('Mia'), base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#8a0e0e')]) +define Lu = Character(_('Lunara'), base, color="#effdff", who_outlines=[(gui.name_text_thickness, '#082b30')]) +define K = Character(_('Kiara'), base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) # Grey define Fe = Character(_('Mr. Ferris'), base, color="#b7abf8", who_outlines=[(gui.name_text_thickness, '#000000')]) -define Ra = Character('Randy', base, color="#ec738d", who_outlines=[(gui.name_text_thickness, '#220a05')]) -define Sp = Character('Sophia', base, color="#d3e6ff", who_outlines=[(gui.name_text_thickness, '#0b1431')]) -define Vi = Character('Vinny', base, color="#fff3b0", who_outlines=[(gui.name_text_thickness, '#311c04')]) -define So = Character('Solly', base, color="#ffd4cc", who_outlines=[(gui.name_text_thickness, '#350404')]) +define Ra = Character(_('Randy'), base, color="#ec738d", who_outlines=[(gui.name_text_thickness, '#220a05')]) +define Sp = Character(_('Sophia'), base, color="#d3e6ff", who_outlines=[(gui.name_text_thickness, '#0b1431')]) +define Vi = Character(_('Vinny'), base, color="#fff3b0", who_outlines=[(gui.name_text_thickness, '#311c04')]) +define So = Character(_('Solly'), base, color="#ffd4cc", who_outlines=[(gui.name_text_thickness, '#350404')]) + +define InDa = Character('{image=DamText} & {image=InText}', base, color = "#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) +define MiOl = Character('{image=MiaText} & {image=OlText}', base, color = "#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) +define OlInc = Character('{image=OlText} & {image=IncText}', base, color = "#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) +define BInco = Character('{image=BenText} & {image=OlText}', base, color = "#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) define Grill = Character(_('Grill'), base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) define Everyone = Character(_('Everyone'), base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) # Grey define Teacher = Character(_('Teacher'), base, color="#fff8e6", who_outlines=[(gui.name_text_thickness, '#272b09')]) # Grey - define Phone = Character(_('Phone'), base, color="#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) -define InDa = Character(_('Damien & Inco'), base, color = "#ffffff", who_outlines=[(gui.name_text_thickness, '#000000')]) - +# Text displayables to show the individual color and outlines in the dual character textboxes +image MiaText = Text(_("Mia"), color="#ffffff", outlines=[(gui.name_text_thickness, '#8a0e0e')]) +image OlText = Text(_("Olivia"), color="#73fdb1", outlines=[(gui.name_text_thickness, '#03200c')]) +image DamText = Text(_("Damien"), color="#fdddd4", outlines=[(gui.name_text_thickness, '#2c0e03')]) +image BenText = Text(_("Ben"), color="#9aceff", outlines=[(gui.name_text_thickness, '#0b0d22')]) @@ -36,6 +44,19 @@ define InDa = Character(_('Damien & Inco'), base, color = "#ffffff", who_outline init python: + # Shows two lines of dialogue at the same time, spoken by 'speaker' + # Speaker: Character definiton, Line_1: Line of dialogue of the top, Line_2: Line of dialogue of the bottom + def sim_text(speaker,line_1,line_2): + strings = [] + if not config.skipping: + for i in range(max(len(line_1),len(line_2))): + char_1 = min(i, len(line_1)) + char_2 = min(i, len(line_2)) + strings.append(f"{line_1[0:char_1]}\n{line_2[0:char_2]}{{fast}}{{nw}}{{done}}") + strings.append(f"{line_1}\n{line_2}{{fast}}") + for string in strings: + speaker(string) + # Get the position properties of a tag within the master layer def tag_get_placement(tag, layer="master"): return renpy.get_placement(renpy.game.context().scene_lists.get_displayable_by_tag(layer, tag)) @@ -126,6 +147,7 @@ init python: renpy.show("spr_crowdperson_watching2", at_list=[tf_crowdperson_scroll(1.33, -1, "#481818")], layer="effects") renpy.show("spr_crowdperson_chilling3", at_list=[tf_crowdperson_scroll(0.6, 1, "#370B0D")], layer="effects") + # Transforms for the crowd transitions above transform tf_crowdperson_hide(t): @@ -155,7 +177,8 @@ transform tf_crowdperson_scroll_instant(x=0.0, flip=1, color="#ffffff", _offset= # # METRO STUFF # - +init -300: + define animation_controller = 1 init python: # some stupid bullshit you have to do to get sounds playing in an ATL block def play_metro_bump_sound(a,b,c): @@ -168,6 +191,22 @@ init python: renpy.play("audio/sounds/snd_metro_announcer3" + DEFAULT_SOUND_EXTENSION, channel='audio') def play_metro_beep_sound(a,b,c): renpy.play("audio/sounds/snd_metro_beep" + DEFAULT_SOUND_EXTENSION, channel='audio') + def bump(a,b,c): + renpy.invoke_in_thread(fn=animate_hair) + return + def animate_hair(): + import time + time.sleep(0.1) + store.animation_controller = 2 + time.sleep(0.0832) + store.animation_controller = 3 + time.sleep(0.0832) + store.animation_controller = 4 + time.sleep(0.0832) + store.animation_controller = 1 + return + def hair_controller(st, at, name): + return f"{name}{store.animation_controller}",0.03 transform tf_metro_cameramove: @@ -240,6 +279,7 @@ init python: # Positions for the camera to pan up/down METRO_CAMERA_FERRISVIEW = 600 + METRO_CAMERA_OLIVIAVIEW = -400 # Aligns the metro to it's default view to the camera without needing to adjust the camera to the correct position transform tf_metro_defaultalign: @@ -430,4 +470,105 @@ label l_metro_dusk: matrixcolor BrightnessMatrix(0.1)*TintMatrix("#FFA976")*ContrastMatrix(value=1.2) tf_metro_cameramove - return \ No newline at end of file + return + +# +# DEMO STUFF +# + +label end_of_demo: + $ quick_menu = False + window auto hide + pause 0.5 + + + transform tf_endofdemo_delayshow(p): + alpha 0.0 + pause p + linear 0.5 alpha 1.1 + + screen endofdemo_1: + text _("You've reached the end of the demo!") yalign 0.7 xalign 0.5 size 50 text_align 0.5 at tf_endofdemo_delayshow(1) + screen endofdemo_2: + style_prefix "main_menu" + vbox: + xalign 0.5 + yanchor 0.7 + ypos 0.885 + spacing 40 + text _("You can follow our twitter for updates on the full game, and other games in development.") yalign 0.7 xalign 0.5 size 50 xmaximum 1400 text_align 0.5 + button at tf_draw_moveindown(0.0): + xalign 0.5 + xmaximum 450 + ymaximum 100 + action OpenURL("https://twitter.com/Cavemanon") + activate_sound "audio/ui/snd_ui_click.wav" + fixed: + add "gui/button/menubuttons/menu_button.png" zoom 1.2 yalign 0.5 xalign 0.5 + text _("Visit our Twitter") size 35 yalign 0.5 xalign 0.5 + screen endofdemo_3: + text _("Thanks for playing!") yalign 0.7 xalign 0.5 size 50 text_align 0.5 + + + play music mus_rock noloop + pause 1.3 + + show spr_ui_logo_title: + subpixel True + xalign 0.5 yalign 0.5 zoom 0.65 + parallel: + easein_quad 8: + zoom 0.5 + parallel: + pause 8 + ease_cubic 2 yoffset -200 + + show spr_ui_logo_stickynote: + subpixel True + xanchor 0.5 yanchor 0.5 ypos 0.32 xpos 1.08 rotate -45 zoom 0.65 + parallel: + easein_quad 8: + zoom 0.5 + parallel: + pause 4.5 + parallel: + linear 1.5 xpos 0.5 + parallel: + easein_cubic 0.75 ypos 0.62 + easeout_cubic 0.75 ypos 0.5 + parallel: + linear 1.5 rotate 0 + parallel: + pause 8 + ease_cubic 2 yoffset -200 + + pause 8 + + show spr_ui_logo_title: + subpixel True + zoom 0.5 + ease_cubic 2 yoffset -200 + + show spr_ui_logo_stickynote: + subpixel True + zoom 0.5 xpos 0.5 ypos 0.5 rotate 0.0 + ease_cubic 2 yoffset -200 + + show screen endofdemo_1 + pause 3.5 + hide screen endofdemo_1 with Dissolve(0.5) + pause 0.25 + show screen endofdemo_2 with Dissolve(0.5) + pause + hide screen endofdemo_2 with Dissolve(0.5) + pause 0.25 + show screen endofdemo_3 with Dissolve(0.5) + pause 3 + + stop music fadeout 3 + + hide spr_ui_logo_title + hide spr_ui_logo_stickynote + hide screen endofdemo_3 + with Dissolve(2) + pause 1.25 diff --git a/game/src/definitions/transforms.rpy b/game/src/definitions/transforms.rpy index fecfe9f..f9ab976 100644 --- a/game/src/definitions/transforms.rpy +++ b/game/src/definitions/transforms.rpy @@ -880,4 +880,21 @@ transform sh: # transform tint(tintcolor): - matrixcolor TintMatrix(tintcolor) \ No newline at end of file + matrixcolor TintMatrix(tintcolor) + +transform nagt_hueshifter: + matrixcolor HueMatrix(0.0) + linear 1.0 matrixcolor HueMatrix(0.0) + linear 1.0 matrixcolor HueMatrix(-50.0) + linear 1.0 matrixcolor HueMatrix(0.0) + linear 1.0 matrixcolor HueMatrix(50.0) + linear 1.0 matrixcolor HueMatrix(0.0) + linear 1.0 matrixcolor HueMatrix(-50.0) + linear 1.0 matrixcolor HueMatrix(0.0) + repeat + +transform nagt_transition: + mesh True + shader "doom.melt" + u_custom_time -1.0 + linear 60.0 u_custom_time 100.0 \ No newline at end of file