mirror of
https://git.cavemanon.xyz/Cavemanon/SnootGame.git
synced 2025-02-08 18:28:49 +01:00
Merge pull request 'Redo chapter select and minor clean up of code base' (#247) from chapter_select_and_misc_fixes into master
Reviewed-on: https://git.cavemanon.xyz/Cavemanon/SnootGame/pulls/247 Reviewed-by: Nutbuster <nutbuster@cock.li> Reviewed-by: Legalo <legalo@noreply.git.cavemanon.xyz>
This commit is contained in:
commit
267634783d
11 changed files with 414 additions and 489 deletions
|
@ -359,7 +359,7 @@ screen navigation():
|
||||||
textbutton _("Load") activate_sound "audio/ui/uiClick.wav" action ShowMenu("load")
|
textbutton _("Load") activate_sound "audio/ui/uiClick.wav" action ShowMenu("load")
|
||||||
textbutton _("Delete") activate_sound "audio/ui/uiClick.wav" action ShowMenu("delete")
|
textbutton _("Delete") activate_sound "audio/ui/uiClick.wav" action ShowMenu("delete")
|
||||||
|
|
||||||
if config.developer and persistent.enable_chapter_select:
|
if config.developer or persistent.enable_chapter_select:
|
||||||
textbutton _("Chapter Select") activate_sound "audio/ui/uiClick.wav" action Start("chapter_select")
|
textbutton _("Chapter Select") activate_sound "audio/ui/uiClick.wav" action Start("chapter_select")
|
||||||
|
|
||||||
textbutton _("Options") activate_sound "audio/ui/uiClick.wav" action ShowMenu("preferences")
|
textbutton _("Options") activate_sound "audio/ui/uiClick.wav" action ShowMenu("preferences")
|
||||||
|
|
277
game/script.rpy
277
game/script.rpy
|
@ -21,36 +21,26 @@ init -1 python:
|
||||||
mod_menu_access = []
|
mod_menu_access = []
|
||||||
|
|
||||||
init python:
|
init python:
|
||||||
|
import webbrowser # This is for the ch2 "look the link up" choice
|
||||||
import random
|
import random
|
||||||
import webbrowser
|
|
||||||
#function for insult layers
|
|
||||||
def showCG():
|
|
||||||
files = ["text1", "text2", "text3", "text4", "text5", "text6", "text7", "text8", "text9"]
|
|
||||||
length = len(files)
|
|
||||||
picked = random.randint(0,length - 1)
|
|
||||||
fileName = files[picked]
|
|
||||||
renpy.show(fileName, at_list=[randPosition])
|
|
||||||
# extra music channel so we can do crossfade instead of fadeout followed by fadein
|
# extra music channel so we can do crossfade instead of fadeout followed by fadein
|
||||||
# TODO: function for stopping both channels with optional fadeout so we don't have to keep track of which channel is playing
|
|
||||||
renpy.music.register_channel("music1","music",True,tight=True)
|
renpy.music.register_channel("music1","music",True,tight=True)
|
||||||
renpy.music.register_channel("music2","music",True,tight=True)
|
renpy.music.register_channel("music2","music",True,tight=True)
|
||||||
|
|
||||||
# allows playing looped ambience alongside music
|
# allows playing looped ambience alongside music
|
||||||
renpy.music.register_channel("ambient","sfx",True,tight=True)
|
renpy.music.register_channel("ambient","sfx",True,tight=True)
|
||||||
renpy.music.register_channel("ambient1","sfx",True,tight=True)
|
renpy.music.register_channel("ambient1","sfx",True,tight=True)
|
||||||
renpy.music.register_channel("ambient2","sfx",True,tight=True)
|
renpy.music.register_channel("ambient2","sfx",True,tight=True)
|
||||||
renpy.music.register_channel("ambient3","sfx",True,tight=True)
|
renpy.music.register_channel("ambient3","sfx",True,tight=True)
|
||||||
|
|
||||||
|
# No idea what this does
|
||||||
if persistent.scroll == True:
|
if persistent.scroll == True:
|
||||||
config.keymap['dismiss'].append('mousedown_4')
|
config.keymap['dismiss'].append('mousedown_4')
|
||||||
elif persistent.scroll == None:
|
elif persistent.scroll == None:
|
||||||
persistent.scroll = False
|
persistent.scroll = False
|
||||||
|
|
||||||
if persistent.lewd == None:
|
# Set vars for bonus chapter completion
|
||||||
persistent.lewd = False
|
|
||||||
|
|
||||||
if persistent.autoup == None:
|
|
||||||
persistent.autoup = False
|
|
||||||
|
|
||||||
if persistent.bonus_chapters == None:
|
if persistent.bonus_chapters == None:
|
||||||
if renpy.seen_image("big ending"): #for returning players
|
if renpy.seen_image("big ending"): #for returning players
|
||||||
persistent.bonus_chapters = 0b111111111
|
persistent.bonus_chapters = 0b111111111
|
||||||
|
@ -59,6 +49,7 @@ init python:
|
||||||
persistent.bonus_chapters = 0b0
|
persistent.bonus_chapters = 0b0
|
||||||
persistent.old_bonus_chapters = 0b0
|
persistent.old_bonus_chapters = 0b0
|
||||||
|
|
||||||
|
# Randomizes the placement of choice boxes when a choice menu appears
|
||||||
def randomize_choices(choices):
|
def randomize_choices(choices):
|
||||||
# fine for size of 2
|
# fine for size of 2
|
||||||
if (renpy.random.randint(0, 1)):
|
if (renpy.random.randint(0, 1)):
|
||||||
|
@ -67,258 +58,8 @@ init python:
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
transform randPosition:
|
default persistent.lewd = False
|
||||||
alpha 0.0
|
default persistent.autoup = False
|
||||||
xalign random.uniform(0.2,0.8)
|
|
||||||
yalign random.uniform(0.2,0.8)
|
|
||||||
linear 0.6 alpha 1.0
|
|
||||||
linear 1.0 alpha 0.0
|
|
||||||
|
|
||||||
|
|
||||||
#python:
|
|
||||||
# def Walking( name ):
|
|
||||||
# show name:
|
|
||||||
# xalign 0.2 yalign 0.25
|
|
||||||
# ease 1.0 yalign 0.0
|
|
||||||
# ease 1.0 yalign 0.25
|
|
||||||
# repeat
|
|
||||||
|
|
||||||
|
|
||||||
#layeredimage aquariumexhibit:
|
|
||||||
#group animals:
|
|
||||||
# attribute babyTurtle:
|
|
||||||
# attribute octo:
|
|
||||||
# attribute
|
|
||||||
# attribute
|
|
||||||
# attribute
|
|
||||||
# attribute
|
|
||||||
|
|
||||||
#layeredimage aquarium
|
|
||||||
#group kids:
|
|
||||||
# attribute wkids:
|
|
||||||
# "smolpatrol.webp"
|
|
||||||
|
|
||||||
#layeredimage anon:
|
|
||||||
# group face:
|
|
||||||
# attribute neutralFace default:
|
|
||||||
# "anonb1f1.webp"
|
|
||||||
# attribute happyFace:
|
|
||||||
# "anonhappyface.webp"
|
|
||||||
# attribute flipNeutralFace:
|
|
||||||
# "flipanonb1f1.webp"
|
|
||||||
# attribute flipHappyFace:
|
|
||||||
# "flipanonhappyface.webp"
|
|
||||||
# group body:
|
|
||||||
# attribute neutralBody default:
|
|
||||||
# "anonspriteneutral.webp"
|
|
||||||
# attribute thumbsUp:
|
|
||||||
# "anonspritethumbsup.webp"
|
|
||||||
# attribute flipThumbsUp:
|
|
||||||
# "flipanonspritethumbsup.webp"
|
|
||||||
# attribute:
|
|
||||||
# "flipanonspriteneutral.webp"
|
|
||||||
# attribute monkey:
|
|
||||||
# "monkeyanon.webp"
|
|
||||||
# group holding:
|
|
||||||
# attribute guitar:
|
|
||||||
# "guitar.webp"
|
|
||||||
|
|
||||||
# Click-to-continue icons / animations
|
|
||||||
# TODO: settle on a position/animation that people like
|
|
||||||
|
|
||||||
|
|
||||||
#Raw Image & kwargs for long textboxes
|
|
||||||
define long_textbox_img = Image("gui/textbox_long.png", xalign=0.5, yalign=1.0)
|
|
||||||
define long_textbox = { "window_background": long_textbox_img, 'namebox_style': "namebox_large" }
|
|
||||||
|
|
||||||
#Characters
|
|
||||||
define base = Character (ctc="ctc_end_marker", ctc_pause="ctc_mid_marker", ctc_timedpause=Null(), ctc_position="nestled") # try to remember some of the basics of CTC
|
|
||||||
define narrator = Character(kind=base)
|
|
||||||
define A = Character (_('Anon'), base, color="#36E12D", who_outlines=[(gui.name_text_thickness, '#0C300A')]) # Light Green
|
|
||||||
define F = Character (_('Fang'), base, color="#B4D4CE", who_outlines=[(gui.name_text_thickness, '#0F3930')]) # Light Cyan
|
|
||||||
define Lucy = Character (_('Lucy'), base, color="#B4D4CE", who_outlines=[(gui.name_text_thickness, '#0F3930')]) # Light Cyan
|
|
||||||
define Ro = Character (_('Rosa'), base, color="#FE712B", who_outlines=[(gui.name_text_thickness, '#54230F')]) # Red-Orange
|
|
||||||
define St = Character (_('Stella'), base, color="#D5FFAE", who_outlines=[(gui.name_text_thickness, '#294211')]) # Light Green
|
|
||||||
define N = Character (_('Naomi'), base, color="#FDD2C1", who_outlines=[(gui.name_text_thickness, '#462628')]) # Peach
|
|
||||||
define Nas = Character (_('Naser'), base, color="#FFB561", who_outlines=[(gui.name_text_thickness, '#512322')]) # Orange
|
|
||||||
define T = Character (_('Trish'), base, color="#B675E6", who_outlines=[(gui.name_text_thickness, '#3A0C5D')]) # Purple
|
|
||||||
define Attendant = Character (_('Attendant'), base, color="#5BF0F8", who_outlines=[(gui.name_text_thickness, '#121C68')]) # Aqua
|
|
||||||
define Sp = Character (_('Spears'), base, color="#C7C7C7", who_outlines=[(gui.name_text_thickness, '#272727')]) # Light Grey
|
|
||||||
define Re = Character (_('Reed'), base, color="#ED4C5B", who_outlines=[(gui.name_text_thickness, '#421014')]) # Bright Red
|
|
||||||
define D = Character (_('Driver'), base, color="#FFECBC", who_outlines=[(gui.name_text_thickness, '#563010')]) # Yellow-Orange
|
|
||||||
|
|
||||||
define FM = Character (_("Fang's Mom"), base, color="#FFD8F6", who_outlines=[(gui.name_text_thickness, '#521947')]) # Bright Pink
|
|
||||||
define FD = Character (_("Fang's Dad"), base, color="#D8A09A", who_outlines=[(gui.name_text_thickness, '#461B1F')]) # Desaturated Orange
|
|
||||||
|
|
||||||
define LM = Character (_("Lucy's Mom"), base, color="#FFD8F6", who_outlines=[(gui.name_text_thickness, '#521947')]) # Bright Pink
|
|
||||||
define LD = Character (_("Lucy's Dad"), base, color="#D8A09A", who_outlines=[(gui.name_text_thickness, '#461B1F')]) # Desaturated Orange
|
|
||||||
|
|
||||||
define Tsuki = Character (_('Mr. Tsuki'), base, color="#A7F2A2", who_outlines=[(gui.name_text_thickness, '#471054')]) # Pear Green
|
|
||||||
define unknown = Character (_('(???)'), base, color="#FFF", who_outlines=[(gui.name_text_thickness, '#000')]) # White
|
|
||||||
define jingo = Character (_('Mr. Jingo'), base, color="#CD8283", who_outlines=[(gui.name_text_thickness, '#0F0D49')]) # Desaturated Red
|
|
||||||
define MaitD = Character (_('Maitre D'), base, color="#AF9EFF", who_outlines=[(gui.name_text_thickness, '#241630')]) # Cobalt Blue
|
|
||||||
define Moe = Character(_('Moe'), base, color="#A5BEED", who_outlines=[(gui.name_text_thickness, '#1F253B')]) # Desaturated Blue
|
|
||||||
define Vince = Character (_('Vince'), base, color="#FFECBC", who_outlines=[(gui.name_text_thickness, '#563010')]) # Yellow-Orange
|
|
||||||
define Waitress = Character (_('Waitress'), base, color="#F691C8", who_outlines=[(gui.name_text_thickness, '#512040')]) # Pink
|
|
||||||
define Riley = Character (_('Riley'), base, color="#B675E6", who_outlines=[(gui.name_text_thickness, '#1F0632')]) # TODO
|
|
||||||
define Tana = Character (_('Tana'), base, color="#B675E6", who_outlines=[(gui.name_text_thickness, '#1F0632')]) # TODO
|
|
||||||
define Trevor = Character (_('Trevor'), base, color="#B675E6", who_outlines=[(gui.name_text_thickness, '#1F0632')]) # TODO
|
|
||||||
#long TB chars
|
|
||||||
define AnonAndFang = Character(_('Anon and Fang'), base, color="72DFA8", who_outlines=[(gui.name_text_thickness, '#113623')]) # Cyan
|
|
||||||
define SV = Character (_('Street Vendor'), base, color="#F8E120", who_outlines=[(gui.name_text_thickness, '#58260C')]) # Yellow
|
|
||||||
define carl = Character ('Mr. Carldewskii', base, color="#EECB99", who_outlines=[(gui.name_text_thickness, '#082337')]) #Puke Orange
|
|
||||||
define Drf = Character ('Dr. Fernsworth', base, color="#DCEEF5", who_outlines=[(gui.name_text_thickness, '#253354')]) #Yellow-Orange
|
|
||||||
define FRT = Character (_('Fang Reed & Trish'), base, color="#DCBBF7", who_outlines=[(gui.name_text_thickness, '#191C78')]) #Light Purple
|
|
||||||
define FangAndTrish = Character(_('Fang and Trish'), base, color="#42DFA8", who_outlines=[(gui.name_text_thickness, '#183623')])
|
|
||||||
define NaserAndNaomi = Character(_('Naser and Naomi'), base, color="#22DFA8", who_outlines=[(gui.name_text_thickness, '#2036B3')])
|
|
||||||
define TeamMember = Character(_('Team member'), base, color="#D32552", who_outlines=[(gui.name_text_thickness, '#445F42')])
|
|
||||||
define Everyone = Character(_('Everyone'), base, color="#A45489", who_outline=[(gui.name_text_thickness, '#4F5F81')])
|
|
||||||
define Chet = Character(_('Chet'), base, color="#B45411", who_outline=[(gui.name_text_thickness, '#BF5F81')])
|
|
||||||
|
|
||||||
|
|
||||||
#Custom Vars for positions
|
|
||||||
transform scenter:
|
|
||||||
xalign 0.5 yalign 0.0
|
|
||||||
transform sleft:
|
|
||||||
xalign 0.0 yalign 0.0
|
|
||||||
transform sright:
|
|
||||||
xalign 1.0 yalign 0.0
|
|
||||||
|
|
||||||
#Stella
|
|
||||||
transform stcenter:
|
|
||||||
xalign 0.5 yalign 0.1
|
|
||||||
transform stleft:
|
|
||||||
xalign 0.0 yalign 0.1
|
|
||||||
transform stright:
|
|
||||||
xalign 1.0 yalign 0.1
|
|
||||||
|
|
||||||
#Anon
|
|
||||||
transform acenter:
|
|
||||||
xalign 0.5 yalign 0.1
|
|
||||||
transform aleft:
|
|
||||||
xalign 0.0 yalign 0.1
|
|
||||||
transform aright:
|
|
||||||
xalign 1.0 yalign 0.1
|
|
||||||
|
|
||||||
#Naser
|
|
||||||
transform ncenter:
|
|
||||||
xalign 0.6 yalign 0.1
|
|
||||||
transform nleft:
|
|
||||||
xalign -0.2 yalign 0.1
|
|
||||||
transform nright:
|
|
||||||
xalign 1.9 yalign 0.1
|
|
||||||
|
|
||||||
#Fangs mom
|
|
||||||
transform fmcenter:
|
|
||||||
xalign 0.5 yalign 0.1
|
|
||||||
transform fmleft:
|
|
||||||
xalign 0.0 yalign 0.1
|
|
||||||
transform fmright:
|
|
||||||
xalign 1.0 yalign 0.1
|
|
||||||
|
|
||||||
#Trish
|
|
||||||
transform tcenter:
|
|
||||||
xalign 0.5 yalign 0.1
|
|
||||||
transform tleft:
|
|
||||||
xalign 0.0 yalign 0.1
|
|
||||||
transform tright:
|
|
||||||
xalign 1.0 yalign 0.1
|
|
||||||
|
|
||||||
#Reed and other long tailed dinos
|
|
||||||
transform rcenter:
|
|
||||||
xalign 1.2 yalign 0.1
|
|
||||||
transform rleft:
|
|
||||||
xalign -0.2 yalign 0.1
|
|
||||||
transform rright:
|
|
||||||
xalign 1.7 yalign 0.1
|
|
||||||
|
|
||||||
#misc transforms
|
|
||||||
transform shudder:
|
|
||||||
subpixel True
|
|
||||||
around (.5, .5) alignaround (.5, .5) xalign .5 yalign .5
|
|
||||||
rotate 0
|
|
||||||
linear 0.0 rotate -0.75
|
|
||||||
block:
|
|
||||||
linear 0.04 rotate 0.75
|
|
||||||
linear 0.05 rotate -0.75
|
|
||||||
linear 0.07 rotate 0
|
|
||||||
|
|
||||||
transform turnaround:
|
|
||||||
linear 0.1 xzoom -1.0
|
|
||||||
|
|
||||||
transform wiggle:
|
|
||||||
subpixel True
|
|
||||||
block:
|
|
||||||
xpos 0.5 ypos 1.0 xanchor 0.5 yanchor 1.0 zoom 1.02
|
|
||||||
alignaround (.5, .5)
|
|
||||||
linear 10.0 yalign 1.0 clockwise circles 1
|
|
||||||
repeat
|
|
||||||
|
|
||||||
|
|
||||||
transform raymbatransform:
|
|
||||||
xcenter 0.6 ycenter 0.385 zoom 0.5
|
|
||||||
|
|
||||||
# PHONE SCROLLING
|
|
||||||
|
|
||||||
|
|
||||||
transform cursortransform:
|
|
||||||
block:
|
|
||||||
yalign 0.2 xalign 0.60
|
|
||||||
pause .25
|
|
||||||
easein_cubic 1 yalign 0.75 xalign 0.54
|
|
||||||
pause .5
|
|
||||||
repeat
|
|
||||||
|
|
||||||
screen prompt():
|
|
||||||
fixed:
|
|
||||||
add "cursor"
|
|
||||||
|
|
||||||
screen mousedetect():
|
|
||||||
transform: # thanks based nutbuster
|
|
||||||
zoom 0.8
|
|
||||||
rotate 12.5
|
|
||||||
mousearea:
|
|
||||||
ypos -75
|
|
||||||
area(432, 0, 795, 1100)
|
|
||||||
# xalign 0.5 yanchor 0 ypos 0
|
|
||||||
hovered Hide("prompt" )
|
|
||||||
unhovered Show("prompt")
|
|
||||||
|
|
||||||
screen textscroll():
|
|
||||||
timer 2.0 action(Show("mousedetect"), Show("prompt"))
|
|
||||||
|
|
||||||
add Solid("FFF")
|
|
||||||
|
|
||||||
transform:
|
|
||||||
zoom 0.8
|
|
||||||
rotate 12.5
|
|
||||||
viewport:
|
|
||||||
xalign 0.51 yanchor 0 ypos -75 xysize(795, 1150)
|
|
||||||
child_size(795, 7650)
|
|
||||||
draggable True
|
|
||||||
arrowkeys True
|
|
||||||
# edgescroll(400, 800)
|
|
||||||
|
|
||||||
yinitial 1.0
|
|
||||||
|
|
||||||
imagebutton auto "fangbutton%s" xalign 0.53 yalign 0.5:
|
|
||||||
ypos 65+(int(107/2))
|
|
||||||
xsize 284
|
|
||||||
ysize 107
|
|
||||||
action (Hide("mousedetect"), Hide("prompt"), Hide("textscroll", transition=Dissolve(1.0)), Return())
|
|
||||||
add "texts"
|
|
||||||
|
|
||||||
add "fang phone"
|
|
||||||
|
|
||||||
|
|
||||||
# Naser's position when helping Anon get up
|
|
||||||
transform nmidright:
|
|
||||||
xalign 1.5 yalign 0.08
|
|
||||||
|
|
||||||
# Naomi's position when handing the brochure to Anon
|
|
||||||
transform scloserleft:
|
|
||||||
xalign 0.1 yalign 0.0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
label start:
|
label start:
|
||||||
|
|
|
@ -447,10 +447,11 @@ label chapter_11:
|
||||||
#Naser Drama
|
#Naser Drama
|
||||||
#THIS SECTION IS SCORE DEPENDENT
|
#THIS SECTION IS SCORE DEPENDENT
|
||||||
|
|
||||||
|
# Determine ending and set up ending chapters
|
||||||
|
$ setup_ending(get_ending())
|
||||||
|
|
||||||
# Doomer ending skips this segment
|
# Doomer ending skips this segment
|
||||||
$ ending_score = get_ending()
|
if ending_route_number == 2:
|
||||||
|
|
||||||
if ending_score == 2:
|
|
||||||
stop music fadeout 3
|
stop music fadeout 3
|
||||||
pause 2
|
pause 2
|
||||||
jump lPromAnnouncement
|
jump lPromAnnouncement
|
||||||
|
@ -586,9 +587,9 @@ label chapter_11:
|
||||||
Nas "Don’t take it the wrong way, but my mind just screamed at me ‘worst case scenario’."
|
Nas "Don’t take it the wrong way, but my mind just screamed at me ‘worst case scenario’."
|
||||||
pause .5
|
pause .5
|
||||||
|
|
||||||
if ending_score == 4: # Golden
|
if ending_route_number == 4: # Golden
|
||||||
jump lSortingThings
|
jump lSortingThings
|
||||||
elif ending_score == 3: # tradwife
|
elif ending_route_number == 3: # tradwife
|
||||||
jump lMendingThings
|
jump lMendingThings
|
||||||
else:
|
else:
|
||||||
jump lBreakingThings # All else fails, go to shooter.
|
jump lBreakingThings # All else fails, go to shooter.
|
||||||
|
@ -5212,7 +5213,7 @@ label chapter_11:
|
||||||
pause .5
|
pause .5
|
||||||
|
|
||||||
|
|
||||||
if ending_score == 3: # tradwife
|
if ending_route_number == 3: # tradwife
|
||||||
|
|
||||||
"Things are going pretty well. When we discount Trish’s weekly attempt to talk with Fang."
|
"Things are going pretty well. When we discount Trish’s weekly attempt to talk with Fang."
|
||||||
|
|
||||||
|
@ -5467,7 +5468,7 @@ label chapter_11:
|
||||||
"{cps=*.1}...{/cps}"
|
"{cps=*.1}...{/cps}"
|
||||||
|
|
||||||
# skip this segment if we're doing ending 1
|
# skip this segment if we're doing ending 1
|
||||||
if ending_score == 1: #shooter
|
if ending_route_number == 1: #shooter
|
||||||
$ next_story_chapter()
|
$ next_story_chapter()
|
||||||
|
|
||||||
# the following segment makes sense in the context of 11B+11C+11D
|
# the following segment makes sense in the context of 11B+11C+11D
|
||||||
|
|
|
@ -1,85 +1,94 @@
|
||||||
define chapter_tuple_1 = [
|
define chapter_tuple = [
|
||||||
("1. Anon meets Fang.", "chapter_1"),
|
("1. First Day of School", "chapter_1"),
|
||||||
("2. Fourth day of school.", "chapter_2"),
|
("2. Meeting the Band", "chapter_2"),
|
||||||
("3. Showing up at band practice.", "chapter_3"),
|
("3. Band Practice", "chapter_3"),
|
||||||
("4. Anon needs help during music period.", "chapter_4"),
|
("4. Music Class", "chapter_4"),
|
||||||
("5. Fang and Anon cut class to talk on the roof.", "chapter_5"),
|
("5. Gardening Club / Heart to Heart", "chapter_5"), # This is supposed to be split in 2 chapters, but maybe making tons of save files stop working would be too much to ask
|
||||||
("6. Anon helps Fang find a venue for the band.", "chapter_6")
|
("6. Not a Date", "chapter_6"),
|
||||||
]
|
("7. Concert Day", "chapter_7"),
|
||||||
|
("8. Study Session", "chapter_8"),
|
||||||
define chapter_tuple_2 = [
|
("9. VVURM DRAMA", "chapter_9"),
|
||||||
("7. Concert day.", "chapter_7"),
|
("10. Confession", "chapter_10"),
|
||||||
("8. Anon and Fang study together.", "chapter_8"),
|
("11. Naser drama", "chapter_11")
|
||||||
("9. Trish ridicules Anon in front of the school.", "chapter_9"),
|
|
||||||
("10. Fang goes to Anon's apartment.", "chapter_10"),
|
|
||||||
("11. School assignment and route lock.", "chapter_11")
|
|
||||||
]
|
]
|
||||||
|
|
||||||
define ending_1_tuple = [
|
define ending_1_tuple = [
|
||||||
("11A. ", "chapter_11A"),
|
("11.5. Announcing a Plan", "lPromAnnouncement"), # this is supposed to be ch 12 (13, accounting for ch 5), but it somehow got counted as part of 11 internally
|
||||||
("12A. ", "chapter_12A"),
|
("12. Let's all go to the Museum", "chapter_12A"),
|
||||||
("12_5D. ", "chapter_12_5D"),
|
("13. Prom is Complicated", "chapter_12_5D"),
|
||||||
("13A. ", "chapter_13A"),
|
("14. Bowling for Volcano High", "chapter_14A")
|
||||||
("14A. ", "chapter_14A")
|
|
||||||
]
|
]
|
||||||
|
|
||||||
define ending_2_tuple = [
|
define ending_2_tuple = [
|
||||||
("11B. ", "chapter_11B"),
|
("11.5. Announcing Nothing Important", "lPromAnnouncement"),
|
||||||
("12B. ", "chapter_12B"),
|
("12. Let's all go to a Concert", "chapter_12B"),
|
||||||
("13B. ", "chapter_13B"),
|
("13. Prom is For Suckers", "chapter_13B"),
|
||||||
("14B. ", "chapter_14B")
|
("14. Anon and the Infinite Sadness", "chapter_14B")
|
||||||
]
|
]
|
||||||
|
|
||||||
define ending_3_tuple = [
|
define ending_3_tuple = [
|
||||||
("11C. ", "chapter_11C"),
|
("11.5. Announcing a Date", "lPromAnnouncement"),
|
||||||
("12C. ", "chapter_12C"),
|
("12. Let's all go Camping", "chapter_12C"),
|
||||||
("12_5C. ", "chapter_12_5C"),
|
("13. Prom is Suprising", "chapter_12_5C"),
|
||||||
("13C. ", "chapter_13C"),
|
("14. Volcano Highschool Musical", "chapter_14C")
|
||||||
("14C. ", "chapter_14C")
|
|
||||||
]
|
]
|
||||||
|
|
||||||
define ending_4_tuple = [
|
define ending_4_tuple = [
|
||||||
("11D. ", "chapter_11D"),
|
("11.5. Announcing a Show.", "lPromAnnouncement"),
|
||||||
("12D. ", "chapter_12D"),
|
("12. Let's all go to the Aquarium", "chapter_12D"),
|
||||||
("12_5D. ", "chapter_12_5D"),
|
("13. Prom is Memorable", "chapter_12_5D"),
|
||||||
("13D. ", "chapter_13D"),
|
("14. Fast Times at Volcano High", "chapter_14D")
|
||||||
("14D. ", "chapter_14D")
|
|
||||||
]
|
]
|
||||||
|
|
||||||
default tuples_index = [
|
|
||||||
("Chapters 1 to 6", chapter_tuple_1),
|
label chapter_select:
|
||||||
("Chapters 7 to 11", chapter_tuple_2)
|
$ quick_menu = False # Hides bottom quick menu UI
|
||||||
]
|
|
||||||
|
$ anonscore = 0
|
||||||
|
$ fangscore = 0
|
||||||
|
|
||||||
|
camera:
|
||||||
|
yanchor 0.0 xanchor 0.0 rotate None zoom 1.0
|
||||||
|
matrixcolor None
|
||||||
|
|
||||||
|
stop ambient
|
||||||
|
stop ambient1
|
||||||
|
stop ambient2
|
||||||
|
stop ambient3
|
||||||
|
stop sound
|
||||||
|
stop music
|
||||||
|
stop music1
|
||||||
|
stop music2
|
||||||
|
scene black
|
||||||
|
with Dissolve(0.25)
|
||||||
|
|
||||||
|
jump chapter_select_go_back # Technically we don't need to explicitly jump to the label just below here, but doing so anyway for clarity
|
||||||
|
|
||||||
|
label chapter_select_go_back:
|
||||||
|
|
||||||
|
menu:
|
||||||
|
"What ending do you want to lock to?"
|
||||||
|
|
||||||
|
"Ending 1":
|
||||||
|
$ ending_route_number = 1
|
||||||
|
"Ending 2":
|
||||||
|
$ ending_route_number = 2
|
||||||
|
"Ending 3":
|
||||||
|
$ ending_route_number = 3
|
||||||
|
"Ending 4":
|
||||||
|
$ ending_route_number = 4
|
||||||
|
"Exit to main menu":
|
||||||
|
scene black with Dissolve(0.25)
|
||||||
|
return
|
||||||
|
|
||||||
|
window hide
|
||||||
|
|
||||||
|
$ select_chapter()
|
||||||
|
|
||||||
|
|
||||||
init python:
|
init python:
|
||||||
|
|
||||||
def select_chapter():
|
def select_chapter():
|
||||||
global current_chapter, quick_menu
|
global current_chapter, quick_menu, ending_route_number, chapter_list_index, chapter_list, ending_chapters_determined, chapter_list_length
|
||||||
|
|
||||||
selected_tuple = ()
|
|
||||||
|
|
||||||
while True:
|
|
||||||
selected_tuple = display_tuple_menu(tuples_index)
|
|
||||||
if selected_tuple == "go_back":
|
|
||||||
renpy.jump("chapter_select")
|
|
||||||
|
|
||||||
current_chapter = display_tuple_menu(selected_tuple)
|
|
||||||
|
|
||||||
if current_chapter == "go_back":
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
find_chapter_in_array(current_chapter)
|
|
||||||
break
|
|
||||||
|
|
||||||
toggle_debug()
|
|
||||||
quick_menu = True # Restores the bottom quick menu UI
|
|
||||||
|
|
||||||
renpy.call(current_chapter)
|
|
||||||
|
|
||||||
|
|
||||||
def add_ending_tuple(ending_number):
|
|
||||||
global tuples_index
|
|
||||||
|
|
||||||
ending_tuples = {
|
ending_tuples = {
|
||||||
1: ending_1_tuple,
|
1: ending_1_tuple,
|
||||||
|
@ -88,85 +97,62 @@ init python:
|
||||||
4: ending_4_tuple
|
4: ending_4_tuple
|
||||||
}
|
}
|
||||||
|
|
||||||
if ending_number in ending_tuples:
|
# Chapter list to select from
|
||||||
description = f"Ending {ending_number} chapters"
|
chapter_tuples = chapter_tuple + ending_tuples[ending_route_number]
|
||||||
tuples_index.append((description, ending_tuples[ending_number]))
|
|
||||||
|
|
||||||
|
# Vars for displaying the choices
|
||||||
|
chapters_per_page = 6
|
||||||
|
current_page = 0
|
||||||
|
|
||||||
def display_tuple_menu(options):
|
start_index = 0
|
||||||
return renpy.display_menu(options + [("Go Back", "go_back")])
|
end_index = chapters_per_page
|
||||||
|
|
||||||
|
# The loop that displays the chapter choices
|
||||||
|
while True:
|
||||||
|
# Displays the choices
|
||||||
|
selected_tuple = renpy.display_menu(chapter_tuples[start_index:end_index] + [("Next Page", "chapter_select_next_page"), ("Go Back", "chapter_select_go_back")])
|
||||||
|
|
||||||
def set_scores(anon_score, fang_score):
|
if selected_tuple == "chapter_select_next_page":
|
||||||
global anonscore, fangscore
|
# If we're at the last page, wrap around to the first
|
||||||
|
current_page = 0 if end_index == len(chapter_tuples) else (current_page + 1)
|
||||||
|
|
||||||
|
start_index = chapters_per_page * current_page
|
||||||
|
end_index = min(start_index + chapters_per_page, len(chapter_tuples))
|
||||||
|
|
||||||
anonscore = anon_score
|
elif selected_tuple == "chapter_select_go_back":
|
||||||
fangscore = fang_score
|
renpy.jump("chapter_select_go_back")
|
||||||
|
|
||||||
|
else:
|
||||||
|
break # We've selected a chapter
|
||||||
|
|
||||||
|
setup_ending(ending_route_number)
|
||||||
|
|
||||||
def find_chapter_in_array(chapter):
|
store._window_auto = True
|
||||||
global chapter_list_index
|
|
||||||
|
|
||||||
|
# Find the index position of the selected chapter
|
||||||
try:
|
try:
|
||||||
chapter_list_index = chapter_list.index(chapter)
|
chapter_list_index = chapter_list.index(selected_tuple)
|
||||||
except ValueError: # This crashes the game otherwise since it wouldn't find the correct chapter
|
except ValueError: # This crashes the game otherwise since it wouldn't find the correct chapter
|
||||||
MainMenu(confirm=False) () # Exits to the main menu
|
|
||||||
|
|
||||||
|
|
||||||
label reset_chapter_list:
|
|
||||||
$ chapter_list = [
|
|
||||||
"chapter_1", "chapter_2", "chapter_3", "chapter_4", "chapter_5",
|
|
||||||
"chapter_6", "chapter_7", "chapter_8", "chapter_9", "chapter_10", "chapter_11"
|
|
||||||
]
|
|
||||||
|
|
||||||
$ tuples_index = [
|
|
||||||
("Chapters 1 to 6", chapter_tuple_1),
|
|
||||||
("Chapters 7 to 11", chapter_tuple_2)
|
|
||||||
]
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
label chapter_select:
|
|
||||||
$ quick_menu = False # Hides bottom quick menu UI
|
|
||||||
call reset_chapter_list from _call_reset_chapter_list # Reset every time the tool is called
|
|
||||||
|
|
||||||
$ anon_points = 0
|
|
||||||
$ fang_points = 0
|
|
||||||
|
|
||||||
stop sound
|
|
||||||
stop music fadeout 2
|
|
||||||
scene black with dissolve
|
|
||||||
|
|
||||||
menu:
|
|
||||||
"Initialize scores:"
|
|
||||||
|
|
||||||
"Ending 1":
|
|
||||||
pass # Since points are already initialized at 0
|
|
||||||
"Ending 2":
|
|
||||||
# anon 0
|
|
||||||
$ fang_points = 4
|
|
||||||
"Ending 3":
|
|
||||||
$ anon_points = 4
|
|
||||||
# fang 0
|
|
||||||
"Ending 4":
|
|
||||||
$ anon_points = 4
|
|
||||||
$ fang_points = 4
|
|
||||||
$ wingStory = True
|
|
||||||
"Exit to main menu":
|
|
||||||
scene black with dissolve
|
|
||||||
return
|
|
||||||
|
|
||||||
$ set_scores(anon_points, fang_points)
|
|
||||||
$ ending_route_number = get_ending()
|
|
||||||
|
|
||||||
$ add_ending_chapters(ending_route_number)
|
# Make an exception for the 11A/B/C/D chapters, since we're technically supposed to start at the PromAnnouncement label
|
||||||
$ add_ending_tuple(ending_route_number)
|
# Stank as fuck
|
||||||
|
if selected_tuple == "lPromAnnouncement":
|
||||||
|
chapter_list_index = 10
|
||||||
|
current_chapter = "chapter_11"
|
||||||
|
|
||||||
$ update_ending_variables() # Updates variables for newly extended 'chapter_list' with ending chapters
|
toggle_debug()
|
||||||
|
quick_menu = True
|
||||||
window hide
|
renpy._window_auto = True
|
||||||
|
|
||||||
$ select_chapter()
|
renpy.jump("lPromAnnouncement")
|
||||||
|
else:
|
||||||
|
print("No such chapter exists!")
|
||||||
|
MainMenu(confirm=False) () # Exits to the main menu
|
||||||
|
|
||||||
|
current_chapter = selected_tuple
|
||||||
|
|
||||||
|
# Start playing the game
|
||||||
|
toggle_debug()
|
||||||
|
quick_menu = True # Restores the bottom quick menu UI
|
||||||
|
|
||||||
|
renpy.call(current_chapter)
|
|
@ -11,6 +11,8 @@ define ending_routes = {
|
||||||
1: ["chapter_11A", "chapter_12A", "chapter_12_5D", "chapter_13A", "chapter_14A"]
|
1: ["chapter_11A", "chapter_12A", "chapter_12_5D", "chapter_13A", "chapter_14A"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Default vars reset when a new game starts, so no biggie.
|
||||||
|
|
||||||
# Anon/Fang
|
# Anon/Fang
|
||||||
default anonscore = 0
|
default anonscore = 0
|
||||||
default fangscore = 0
|
default fangscore = 0
|
||||||
|
@ -21,6 +23,6 @@ default chapter_list_length = get_chapter_list_length()
|
||||||
default chapter_list_index = 0 # Index number for the current position of the chapter_list array
|
default chapter_list_index = 0 # Index number for the current position of the chapter_list array
|
||||||
default current_chapter = chapter_list[chapter_list_index] # Store the name of the label as a string
|
default current_chapter = chapter_list[chapter_list_index] # Store the name of the label as a string
|
||||||
|
|
||||||
# Ending variables
|
# What ending we're on
|
||||||
default ending_route_number = None
|
default ending_route_number = None # A value of None signals to get_ending() to determine the value based off anon/fang scores when it is called
|
||||||
default is_end_reached = False
|
default ending_chapters_determined = False
|
|
@ -241,8 +241,7 @@ image d_credits_text = Composite(
|
||||||
|
|
||||||
|
|
||||||
label lending:
|
label lending:
|
||||||
$ cached_ending = get_ending()
|
if ending_route_number == 4:
|
||||||
if cached_ending == 4:
|
|
||||||
pause 0.5
|
pause 0.5
|
||||||
show snootgame_big with dissolve: # Renpy not allowing you to grab images from the gui folder is serious bullshit
|
show snootgame_big with dissolve: # Renpy not allowing you to grab images from the gui folder is serious bullshit
|
||||||
subpixel True
|
subpixel True
|
||||||
|
@ -272,7 +271,7 @@ label lending:
|
||||||
pause 50
|
pause 50
|
||||||
queue music 'audio/OST/amberlight brillance live end.ogg'
|
queue music 'audio/OST/amberlight brillance live end.ogg'
|
||||||
queue music "<silence 1.0>" loop
|
queue music "<silence 1.0>" loop
|
||||||
elif cached_ending == 3:
|
elif ending_route_number == 3:
|
||||||
play music "audio/OST/Dino Destiny Reader.ogg"
|
play music "audio/OST/Dino Destiny Reader.ogg"
|
||||||
pause 0.5
|
pause 0.5
|
||||||
show c_credits_text:
|
show c_credits_text:
|
||||||
|
@ -304,12 +303,12 @@ label lending:
|
||||||
stop music fadeout 5
|
stop music fadeout 5
|
||||||
scene black with Dissolve(3)
|
scene black with Dissolve(3)
|
||||||
pause 2
|
pause 2
|
||||||
if cached_ending == 3:
|
if ending_route_number == 3:
|
||||||
scene c10 with Dissolve(1.5)
|
scene c10 with Dissolve(1.5)
|
||||||
pause 20
|
pause 20
|
||||||
scene black with Dissolve(2)
|
scene black with Dissolve(2)
|
||||||
pause 1
|
pause 1
|
||||||
elif cached_ending == 4:
|
elif ending_route_number == 4:
|
||||||
scene golden ending with Dissolve(1.5)
|
scene golden ending with Dissolve(1.5)
|
||||||
pause 20
|
pause 20
|
||||||
scene black with Dissolve(2)
|
scene black with Dissolve(2)
|
||||||
|
|
209
game/src/misc_definitions.rpy
Normal file
209
game/src/misc_definitions.rpy
Normal file
|
@ -0,0 +1,209 @@
|
||||||
|
init python:
|
||||||
|
# function for insult layers
|
||||||
|
import random
|
||||||
|
def showCG():
|
||||||
|
files = ["text1", "text2", "text3", "text4", "text5", "text6", "text7", "text8", "text9"]
|
||||||
|
length = len(files)
|
||||||
|
picked = random.randint(0,length - 1)
|
||||||
|
fileName = files[picked]
|
||||||
|
renpy.show(fileName, at_list=[randPosition])
|
||||||
|
|
||||||
|
|
||||||
|
transform randPosition:
|
||||||
|
alpha 0.0
|
||||||
|
xalign random.uniform(0.2,0.8)
|
||||||
|
yalign random.uniform(0.2,0.8)
|
||||||
|
linear 0.6 alpha 1.0
|
||||||
|
linear 1.0 alpha 0.0
|
||||||
|
|
||||||
|
#Raw Image & kwargs for long textboxes
|
||||||
|
define long_textbox_img = Image("gui/textbox_long.png", xalign=0.5, yalign=1.0)
|
||||||
|
define long_textbox = { "window_background": long_textbox_img, 'namebox_style': "namebox_large" }
|
||||||
|
|
||||||
|
#Characters
|
||||||
|
define base = Character (ctc="ctc_end_marker", ctc_pause="ctc_mid_marker", ctc_timedpause=Null(), ctc_position="nestled") # try to remember some of the basics of CTC
|
||||||
|
define narrator = Character(kind=base)
|
||||||
|
define A = Character (_('Anon'), base, color="#36E12D", who_outlines=[(gui.name_text_thickness, '#0C300A')]) # Light Green
|
||||||
|
define F = Character (_('Fang'), base, color="#B4D4CE", who_outlines=[(gui.name_text_thickness, '#0F3930')]) # Light Cyan
|
||||||
|
define Lucy = Character (_('Lucy'), base, color="#B4D4CE", who_outlines=[(gui.name_text_thickness, '#0F3930')]) # Light Cyan
|
||||||
|
define Ro = Character (_('Rosa'), base, color="#FE712B", who_outlines=[(gui.name_text_thickness, '#54230F')]) # Red-Orange
|
||||||
|
define St = Character (_('Stella'), base, color="#D5FFAE", who_outlines=[(gui.name_text_thickness, '#294211')]) # Light Green
|
||||||
|
define N = Character (_('Naomi'), base, color="#FDD2C1", who_outlines=[(gui.name_text_thickness, '#462628')]) # Peach
|
||||||
|
define Nas = Character (_('Naser'), base, color="#FFB561", who_outlines=[(gui.name_text_thickness, '#512322')]) # Orange
|
||||||
|
define T = Character (_('Trish'), base, color="#B675E6", who_outlines=[(gui.name_text_thickness, '#3A0C5D')]) # Purple
|
||||||
|
define Attendant = Character (_('Attendant'), base, color="#5BF0F8", who_outlines=[(gui.name_text_thickness, '#121C68')]) # Aqua
|
||||||
|
define Sp = Character (_('Spears'), base, color="#C7C7C7", who_outlines=[(gui.name_text_thickness, '#272727')]) # Light Grey
|
||||||
|
define Re = Character (_('Reed'), base, color="#ED4C5B", who_outlines=[(gui.name_text_thickness, '#421014')]) # Bright Red
|
||||||
|
define D = Character (_('Driver'), base, color="#FFECBC", who_outlines=[(gui.name_text_thickness, '#563010')]) # Yellow-Orange
|
||||||
|
|
||||||
|
define FM = Character (_("Fang's Mom"), base, color="#FFD8F6", who_outlines=[(gui.name_text_thickness, '#521947')]) # Bright Pink
|
||||||
|
define FD = Character (_("Fang's Dad"), base, color="#D8A09A", who_outlines=[(gui.name_text_thickness, '#461B1F')]) # Desaturated Orange
|
||||||
|
|
||||||
|
define LM = Character (_("Lucy's Mom"), base, color="#FFD8F6", who_outlines=[(gui.name_text_thickness, '#521947')]) # Bright Pink
|
||||||
|
define LD = Character (_("Lucy's Dad"), base, color="#D8A09A", who_outlines=[(gui.name_text_thickness, '#461B1F')]) # Desaturated Orange
|
||||||
|
|
||||||
|
define Tsuki = Character (_('Mr. Tsuki'), base, color="#A7F2A2", who_outlines=[(gui.name_text_thickness, '#471054')]) # Pear Green
|
||||||
|
define unknown = Character (_('(???)'), base, color="#FFF", who_outlines=[(gui.name_text_thickness, '#000')]) # White
|
||||||
|
define jingo = Character (_('Mr. Jingo'), base, color="#CD8283", who_outlines=[(gui.name_text_thickness, '#0F0D49')]) # Desaturated Red
|
||||||
|
define MaitD = Character (_('Maitre D'), base, color="#AF9EFF", who_outlines=[(gui.name_text_thickness, '#241630')]) # Cobalt Blue
|
||||||
|
define Moe = Character(_('Moe'), base, color="#A5BEED", who_outlines=[(gui.name_text_thickness, '#1F253B')]) # Desaturated Blue
|
||||||
|
define Vince = Character (_('Vince'), base, color="#FFECBC", who_outlines=[(gui.name_text_thickness, '#563010')]) # Yellow-Orange
|
||||||
|
define Waitress = Character (_('Waitress'), base, color="#F691C8", who_outlines=[(gui.name_text_thickness, '#512040')]) # Pink
|
||||||
|
define Riley = Character (_('Riley'), base, color="#B675E6", who_outlines=[(gui.name_text_thickness, '#1F0632')]) # TODO
|
||||||
|
define Tana = Character (_('Tana'), base, color="#B675E6", who_outlines=[(gui.name_text_thickness, '#1F0632')]) # TODO
|
||||||
|
define Trevor = Character (_('Trevor'), base, color="#B675E6", who_outlines=[(gui.name_text_thickness, '#1F0632')]) # TODO
|
||||||
|
#long TB chars
|
||||||
|
define AnonAndFang = Character(_('Anon and Fang'), base, color="72DFA8", who_outlines=[(gui.name_text_thickness, '#113623')]) # Cyan
|
||||||
|
define SV = Character (_('Street Vendor'), base, color="#F8E120", who_outlines=[(gui.name_text_thickness, '#58260C')]) # Yellow
|
||||||
|
define carl = Character ('Mr. Carldewskii', base, color="#EECB99", who_outlines=[(gui.name_text_thickness, '#082337')]) #Puke Orange
|
||||||
|
define Drf = Character ('Dr. Fernsworth', base, color="#DCEEF5", who_outlines=[(gui.name_text_thickness, '#253354')]) #Yellow-Orange
|
||||||
|
define FRT = Character (_('Fang Reed & Trish'), base, color="#DCBBF7", who_outlines=[(gui.name_text_thickness, '#191C78')]) #Light Purple
|
||||||
|
define FangAndTrish = Character(_('Fang and Trish'), base, color="#42DFA8", who_outlines=[(gui.name_text_thickness, '#183623')])
|
||||||
|
define NaserAndNaomi = Character(_('Naser and Naomi'), base, color="#22DFA8", who_outlines=[(gui.name_text_thickness, '#2036B3')])
|
||||||
|
define TeamMember = Character(_('Team member'), base, color="#D32552", who_outlines=[(gui.name_text_thickness, '#445F42')])
|
||||||
|
define Everyone = Character(_('Everyone'), base, color="#A45489", who_outline=[(gui.name_text_thickness, '#4F5F81')])
|
||||||
|
define Chet = Character(_('Chet'), base, color="#B45411", who_outline=[(gui.name_text_thickness, '#BF5F81')])
|
||||||
|
|
||||||
|
|
||||||
|
#Custom Vars for positions
|
||||||
|
transform scenter:
|
||||||
|
xalign 0.5 yalign 0.0
|
||||||
|
transform sleft:
|
||||||
|
xalign 0.0 yalign 0.0
|
||||||
|
transform sright:
|
||||||
|
xalign 1.0 yalign 0.0
|
||||||
|
|
||||||
|
#Stella
|
||||||
|
transform stcenter:
|
||||||
|
xalign 0.5 yalign 0.1
|
||||||
|
transform stleft:
|
||||||
|
xalign 0.0 yalign 0.1
|
||||||
|
transform stright:
|
||||||
|
xalign 1.0 yalign 0.1
|
||||||
|
|
||||||
|
#Anon
|
||||||
|
transform acenter:
|
||||||
|
xalign 0.5 yalign 0.1
|
||||||
|
transform aleft:
|
||||||
|
xalign 0.0 yalign 0.1
|
||||||
|
transform aright:
|
||||||
|
xalign 1.0 yalign 0.1
|
||||||
|
|
||||||
|
#Naser
|
||||||
|
transform ncenter:
|
||||||
|
xalign 0.6 yalign 0.1
|
||||||
|
transform nleft:
|
||||||
|
xalign -0.2 yalign 0.1
|
||||||
|
transform nright:
|
||||||
|
xalign 1.9 yalign 0.1
|
||||||
|
|
||||||
|
#Fangs mom
|
||||||
|
transform fmcenter:
|
||||||
|
xalign 0.5 yalign 0.1
|
||||||
|
transform fmleft:
|
||||||
|
xalign 0.0 yalign 0.1
|
||||||
|
transform fmright:
|
||||||
|
xalign 1.0 yalign 0.1
|
||||||
|
|
||||||
|
#Trish
|
||||||
|
transform tcenter:
|
||||||
|
xalign 0.5 yalign 0.1
|
||||||
|
transform tleft:
|
||||||
|
xalign 0.0 yalign 0.1
|
||||||
|
transform tright:
|
||||||
|
xalign 1.0 yalign 0.1
|
||||||
|
|
||||||
|
#Reed and other long tailed dinos
|
||||||
|
transform rcenter:
|
||||||
|
xalign 1.2 yalign 0.1
|
||||||
|
transform rleft:
|
||||||
|
xalign -0.2 yalign 0.1
|
||||||
|
transform rright:
|
||||||
|
xalign 1.7 yalign 0.1
|
||||||
|
|
||||||
|
#misc transforms
|
||||||
|
transform shudder:
|
||||||
|
subpixel True
|
||||||
|
around (.5, .5) alignaround (.5, .5) xalign .5 yalign .5
|
||||||
|
rotate 0
|
||||||
|
linear 0.0 rotate -0.75
|
||||||
|
block:
|
||||||
|
linear 0.04 rotate 0.75
|
||||||
|
linear 0.05 rotate -0.75
|
||||||
|
linear 0.07 rotate 0
|
||||||
|
|
||||||
|
transform turnaround:
|
||||||
|
linear 0.1 xzoom -1.0
|
||||||
|
|
||||||
|
transform wiggle:
|
||||||
|
subpixel True
|
||||||
|
block:
|
||||||
|
xpos 0.5 ypos 1.0 xanchor 0.5 yanchor 1.0 zoom 1.02
|
||||||
|
alignaround (.5, .5)
|
||||||
|
linear 10.0 yalign 1.0 clockwise circles 1
|
||||||
|
repeat
|
||||||
|
|
||||||
|
|
||||||
|
transform raymbatransform:
|
||||||
|
xcenter 0.6 ycenter 0.385 zoom 0.5
|
||||||
|
|
||||||
|
# PHONE SCROLLING
|
||||||
|
|
||||||
|
|
||||||
|
transform cursortransform:
|
||||||
|
block:
|
||||||
|
yalign 0.2 xalign 0.60
|
||||||
|
pause .25
|
||||||
|
easein_cubic 1 yalign 0.75 xalign 0.54
|
||||||
|
pause .5
|
||||||
|
repeat
|
||||||
|
|
||||||
|
screen prompt():
|
||||||
|
fixed:
|
||||||
|
add "cursor"
|
||||||
|
|
||||||
|
screen mousedetect():
|
||||||
|
transform: # thanks based nutbuster
|
||||||
|
zoom 0.8
|
||||||
|
rotate 12.5
|
||||||
|
mousearea:
|
||||||
|
ypos -75
|
||||||
|
area(432, 0, 795, 1100)
|
||||||
|
# xalign 0.5 yanchor 0 ypos 0
|
||||||
|
hovered Hide("prompt" )
|
||||||
|
unhovered Show("prompt")
|
||||||
|
|
||||||
|
screen textscroll():
|
||||||
|
timer 2.0 action(Show("mousedetect"), Show("prompt"))
|
||||||
|
|
||||||
|
add Solid("FFF")
|
||||||
|
|
||||||
|
transform:
|
||||||
|
zoom 0.8
|
||||||
|
rotate 12.5
|
||||||
|
viewport:
|
||||||
|
xalign 0.51 yanchor 0 ypos -75 xysize(795, 1150)
|
||||||
|
child_size(795, 7650)
|
||||||
|
draggable True
|
||||||
|
arrowkeys True
|
||||||
|
# edgescroll(400, 800)
|
||||||
|
|
||||||
|
yinitial 1.0
|
||||||
|
|
||||||
|
imagebutton auto "fangbutton%s" xalign 0.53 yalign 0.5:
|
||||||
|
ypos 65+(int(107/2))
|
||||||
|
xsize 284
|
||||||
|
ysize 107
|
||||||
|
action (Hide("mousedetect"), Hide("prompt"), Hide("textscroll", transition=Dissolve(1.0)), Return())
|
||||||
|
add "texts"
|
||||||
|
|
||||||
|
add "fang phone"
|
||||||
|
|
||||||
|
|
||||||
|
# Naser's position when helping Anon get up
|
||||||
|
transform nmidright:
|
||||||
|
xalign 1.5 yalign 0.08
|
||||||
|
|
||||||
|
# Naomi's position when handing the brochure to Anon
|
||||||
|
transform scloserleft:
|
||||||
|
xalign 0.1 yalign 0.0
|
50
game/src/storyline.rpy
Normal file
50
game/src/storyline.rpy
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
init -1 python:
|
||||||
|
def ending_image():
|
||||||
|
#0b0000, DCBA, flash the bits with |=, check with &
|
||||||
|
endings = 0b0000
|
||||||
|
_e = 0b1
|
||||||
|
for i in range(1, 5):
|
||||||
|
fn = "e"+str(i)+"of4"
|
||||||
|
endings |= (_e * renpy.seen_image(fn))
|
||||||
|
_e = _e << 0b1
|
||||||
|
persistent.old_endings = persistent.endings
|
||||||
|
persistent.endings = endings
|
||||||
|
|
||||||
|
|
||||||
|
init python:
|
||||||
|
def next_story_chapter():
|
||||||
|
global chapter_list_index, current_chapter, chapter_list, ending_route_number, chapter_list_length, ending_chapters_determined
|
||||||
|
|
||||||
|
if chapter_list_index < chapter_list_length:
|
||||||
|
chapter_list_index += 1
|
||||||
|
current_chapter = chapter_list[chapter_list_index]
|
||||||
|
renpy.call(current_chapter)
|
||||||
|
|
||||||
|
# Safeguard if setup_ending wasn't called somehow
|
||||||
|
elif not ending_chapters_determined:
|
||||||
|
setup_ending(get_ending())
|
||||||
|
|
||||||
|
# We're at an ending
|
||||||
|
else:
|
||||||
|
ending_image()
|
||||||
|
|
||||||
|
if ending_route_number == 1:
|
||||||
|
renpy.quit()
|
||||||
|
else:
|
||||||
|
renpy.call("lending")
|
||||||
|
|
||||||
|
def setup_ending(ending):
|
||||||
|
global ending_route_number, chapter_list, chapter_list_length, ending_chapters_determined
|
||||||
|
|
||||||
|
if not ending_chapters_determined:
|
||||||
|
ending_route_number = ending
|
||||||
|
|
||||||
|
# Add ending chapters
|
||||||
|
chapter_list.extend(ending_routes[ending_route_number])
|
||||||
|
chapter_list_length = get_chapter_list_length() # chapter_list_length is updated to reflect the addition to the chapter_list array
|
||||||
|
|
||||||
|
ending_chapters_determined = True
|
||||||
|
|
||||||
|
def get_chapter_list_length():
|
||||||
|
global chapter_list
|
||||||
|
return len(chapter_list) - 1
|
|
@ -2,14 +2,17 @@
|
||||||
|
|
||||||
init python:
|
init python:
|
||||||
def get_ending():
|
def get_ending():
|
||||||
if anonscore >= 4 and fangscore >= 4 and wingStory:
|
if ending_route_number == None:
|
||||||
return 4 # Golden
|
if anonscore >= 4 and fangscore >= 4 and wingStory:
|
||||||
elif anonscore >= 3 and fangscore <= 4:
|
return 4 # Golden
|
||||||
return 3 # Tradwife
|
elif anonscore >= 3 and fangscore <= 4:
|
||||||
elif anonscore <= 3 and fangscore >= 3:
|
return 3 # Tradwife
|
||||||
return 2 # Doomer
|
elif anonscore <= 3 and fangscore >= 3:
|
||||||
|
return 2 # Doomer
|
||||||
|
else:
|
||||||
|
return 1 # Shooter
|
||||||
else:
|
else:
|
||||||
return 1 # Shooter
|
return ending_route_number
|
||||||
|
|
||||||
|
|
||||||
def debug_story_variables(toggle=True):
|
def debug_story_variables(toggle=True):
|
||||||
|
@ -20,7 +23,7 @@ init python:
|
||||||
"chapter_list_length",
|
"chapter_list_length",
|
||||||
"chapter_list_index",
|
"chapter_list_index",
|
||||||
"ending_route_number",
|
"ending_route_number",
|
||||||
"is_end_reached"
|
"ending_chapters_determined"
|
||||||
]
|
]
|
||||||
|
|
||||||
for item in var_list:
|
for item in var_list:
|
|
@ -1,66 +0,0 @@
|
||||||
init -1 python:
|
|
||||||
def ending_image():
|
|
||||||
#0b0000, DCBA, flash the bits with |=, check with &
|
|
||||||
endings = 0b0000
|
|
||||||
_e = 0b1
|
|
||||||
for i in range(1, 5):
|
|
||||||
fn = "e"+str(i)+"of4"
|
|
||||||
endings |= (_e * renpy.seen_image(fn))
|
|
||||||
_e = _e << 0b1
|
|
||||||
persistent.old_endings = persistent.endings
|
|
||||||
persistent.endings = endings
|
|
||||||
|
|
||||||
|
|
||||||
init python:
|
|
||||||
def next_story_chapter():
|
|
||||||
global chapter_list_index, current_chapter
|
|
||||||
|
|
||||||
# Add check "is_end_reached" to have this if statement be executed only once when finishing the general chapters
|
|
||||||
if not is_end_reached and chapter_list_index >= chapter_list_length:
|
|
||||||
process_ending()
|
|
||||||
|
|
||||||
if chapter_list_index < chapter_list_length:
|
|
||||||
chapter_list_index += 1
|
|
||||||
current_chapter = chapter_list[chapter_list_index]
|
|
||||||
renpy.call(current_chapter)
|
|
||||||
else:
|
|
||||||
end_story()
|
|
||||||
|
|
||||||
|
|
||||||
def process_ending():
|
|
||||||
global ending_route_number
|
|
||||||
|
|
||||||
ending_route_number = get_ending()
|
|
||||||
add_ending_chapters(ending_route_number)
|
|
||||||
update_ending_variables() # Updates variables for newly extended 'chapter_list' with ending chapters
|
|
||||||
|
|
||||||
|
|
||||||
def add_ending_chapters(route_number):
|
|
||||||
global chapter_list
|
|
||||||
|
|
||||||
if route_number in ending_routes:
|
|
||||||
chapter_list.extend(ending_routes[route_number])
|
|
||||||
|
|
||||||
|
|
||||||
def update_ending_variables():
|
|
||||||
global chapter_list_length
|
|
||||||
global is_end_reached
|
|
||||||
|
|
||||||
# chapter_list_length is updated to reflect the addition to the chapter_list array
|
|
||||||
chapter_list_length = get_chapter_list_length()
|
|
||||||
is_end_reached = True
|
|
||||||
|
|
||||||
|
|
||||||
def get_chapter_list_length():
|
|
||||||
return len(chapter_list) - 1
|
|
||||||
|
|
||||||
|
|
||||||
def end_story():
|
|
||||||
ending_image()
|
|
||||||
|
|
||||||
if ending_route_number == 1:
|
|
||||||
renpy.quit()
|
|
||||||
else:
|
|
||||||
renpy.call("lending")
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue