get_ending to not be numerically based, but instead enum-based. (#219)

Co-authored-by: san7890 <the@san7890.com>
Reviewed-on: https://git.cavemanon.xyz/Cavemanon/SnootGame/pulls/219
Co-authored-by: san7890 <san7890@noreply.git.cavemanon.xyz>
Co-committed-by: san7890 <san7890@noreply.git.cavemanon.xyz>
This commit is contained in:
san7890 2023-05-07 00:44:59 +00:00 committed by Michael Yick
parent 66b289146f
commit ef4764b322
4 changed files with 96 additions and 83 deletions

View file

@ -449,7 +449,7 @@ label chapter_11:
# Doomer ending skips this segment
call get_ending from _call_get_ending
if _return == 2:
if _return == Endings.Doomer:
stop music fadeout 3
pause 2
jump lPromAnnouncement
@ -586,12 +586,12 @@ label chapter_11:
pause .5
call get_ending from _call_get_ending_1
if _return == 4:
jump lSortingThings # Golden
elif _return == 3:
jump lMendingThings # Tradwife
if _return == Endings.Golden:
jump lSortingThings
elif _return == Endings.Tradwife:
jump lMendingThings
else:
jump lBreakingThings # Shooter
jump lBreakingThings # All else fails, go to shooter.
label lSortingThings:
@ -5212,7 +5212,7 @@ label chapter_11:
pause .5
call get_ending from _call_get_ending_2
if _return == 3: #tradwife
if _return == Endings.Tradwife:
"Things are going pretty well. When we discount Trishs weekly attempt to talk with Fang."
@ -5467,8 +5467,10 @@ label chapter_11:
"{cps=*.1}...{/cps}"
call get_ending from _call_get_ending_3
if _return != 1: # any route except Shooter
# duplicated segment from 11B, 11C and 11D transplanted here
if _return == Endings.Shooter:
return
# the following segment makes sense in the context of 11B+11C+11D
window hide
window auto
pause .5

View file

@ -218,7 +218,8 @@ image d_credits_text = Composite(
label lending:
call get_ending from _call_get_ending_4
if _return == 4:
$ cached_ending = _return # un-necessary to call this so many times
if cached_ending == Endings.Golden:
pause 0.5
show snootgame_big with dissolve: # Renpy not allowing you to grab images from the gui folder is serious bullshit
subpixel True
@ -248,7 +249,7 @@ label lending:
pause 50
queue music 'audio/OST/amberlight brillance live end.ogg'
queue music "<silence 1.0>" loop
elif _return == 3:
elif cached_ending == Endings.Tradwife:
play music "audio/OST/Dino Destiny Reader.ogg"
pause 0.5
show c_credits_text:
@ -280,12 +281,12 @@ label lending:
stop music fadeout 5
scene black with Dissolve(3)
pause 2
if tradwife:
if cached_ending == Endings.Tradwife:
scene c10 with Dissolve(1.5)
pause 20
scene black with Dissolve(2)
pause 1
elif anonscore >= 4 and fangscore >= 4:
elif cached_ending == Endings.Golden:
scene golden ending with Dissolve(1.5)
pause 20
scene black with Dissolve(2)

View file

@ -23,26 +23,26 @@ label storyline:
call chapter_10 from _call_chapter_10
call chapter_11 from _call_chapter_11
call get_ending from _call_get_ending_5
if _return == 4:
if _return == Endings.Golden:
call chapter_11D from _call_chapter_11D
call chapter_12D from _call_chapter_12D
call chapter_12_5D from _call_chapter_12_5D
call chapter_13D from _call_chapter_13D
call chapter_14D from _call_chapter_14D
elif _return == 3:
elif _return == Endings.Tradwife:
$ tradwife = True
call chapter_11C from _call_chapter_11C
call chapter_12C from _call_chapter_12C
call chapter_12_5C from _call_chapter_12_5C
call chapter_13C from _call_chapter_13C
call chapter_14C from _call_chapter_14C
elif _return == 2:
elif _return == Endings.Doomer:
call chapter_11B from _call_chapter_11B
call chapter_12B from _call_chapter_12B
# no chapter_13 here since the scene is different enough to the other routes for everything to go into 13C
call chapter_13B from _call_chapter_13B
call chapter_14B from _call_chapter_14B
else:
else: # if all else fails, we just assume that we got Endings.Shooter
call chapter_11A from _call_chapter_11A
call chapter_12A from _call_chapter_12A
call chapter_12_5D from _call_chapter_12_5D_1

View file

@ -1,5 +1,15 @@
## Utility functions for game setup, debugging etc.
init python:
from enum import Enum
# Create compile-time macros to more easily track what ending goes to what without the need for magic numbers or strings that can be mistyped
class Endings(Enum):
Shooter = 0
Doomer = 1
Tradwife = 2
Golden = 3
label initstats(anon=0, fang=0, trad=False):
# Sets various game-related global variables
# :param int anon: Anon's score
@ -14,10 +24,10 @@ label get_ending:
# To check what ending we're getting, call this label and then check the value of _return
# Sensible to have this logic defined in only one place for consistency
if anonscore >= 4 and fangscore >= 4 and wingStory:
return(4) # Golden
return(Endings.Golden)
elif anonscore >= 3 and fangscore <=4:
return(3) # Tradwife
return(Endings.Tradwife)
elif anonscore <= 3 and fangscore >=3:
return(2) # Doomer
return(Endings.Doomer)
else:
return(1) # Shooter
return(Endings.Shooter)