diff --git a/.gitignore b/.gitignore index 692c457..7d85155 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,9 @@ -# IToddler files +# macOS-related files .DS_Store .AppleDouble .LSOverride -# Windows cancer +# Windows-related files Thumbs.db Thumbs.db:encryptable ehthumbs.db @@ -15,16 +15,36 @@ ehthumbs_vista.db /traceback.txt /errors.txt /log.txt +log.txt +errors.txt +traceback.txt + + +#Vim swap files +.sw? +*~ +*.bak + +#save files & cache files +/game/saves/ +/game/saves/* +/game/cache/* +/game/cache +saves +tmp +cache +env + +#binary files +*.rpyc +*.rpyb +*.rpymc +*.pyc +*.pyo #Vim (best text editor) swap files .sw? -#cache files -/game/cache/* - -#save files -/game/saves/* - #binary files *.rpyc *.rpymc diff --git a/game/audio/OST/Amberlight Brilliance D ending.ogg b/game/audio/OST/Amberlight Brilliance D ending.ogg new file mode 100644 index 0000000..7f210dd Binary files /dev/null and b/game/audio/OST/Amberlight Brilliance D ending.ogg differ diff --git a/game/audio/effects/tinnitus.ogg b/game/audio/effects/tinnitus.ogg new file mode 100644 index 0000000..3277a6f Binary files /dev/null and b/game/audio/effects/tinnitus.ogg differ diff --git a/game/audio/ui/uiBack.wav b/game/audio/ui/uiBack.wav new file mode 100644 index 0000000..df8d06c Binary files /dev/null and b/game/audio/ui/uiBack.wav differ diff --git a/game/audio/ui/uiClick.wav b/game/audio/ui/uiClick.wav new file mode 100644 index 0000000..1bdd804 Binary files /dev/null and b/game/audio/ui/uiClick.wav differ diff --git a/game/audio/ui/uiFail.wav b/game/audio/ui/uiFail.wav new file mode 100644 index 0000000..4ab6982 Binary files /dev/null and b/game/audio/ui/uiFail.wav differ diff --git a/game/audio/ui/uiNotification.wav b/game/audio/ui/uiNotification.wav new file mode 100644 index 0000000..4853a85 Binary files /dev/null and b/game/audio/ui/uiNotification.wav differ diff --git a/game/audio/ui/uiOptionOff.wav b/game/audio/ui/uiOptionOff.wav new file mode 100644 index 0000000..f862a62 Binary files /dev/null and b/game/audio/ui/uiOptionOff.wav differ diff --git a/game/audio/ui/uiOptionOn.wav b/game/audio/ui/uiOptionOn.wav new file mode 100644 index 0000000..67ad18a Binary files /dev/null and b/game/audio/ui/uiOptionOn.wav differ diff --git a/game/audio/ui/uiRollover.wav b/game/audio/ui/uiRollover.wav new file mode 100644 index 0000000..5e69126 Binary files /dev/null and b/game/audio/ui/uiRollover.wav differ diff --git a/game/gui.rpy b/game/gui.rpy index d8a3daf..78fcfe1 100644 --- a/game/gui.rpy +++ b/game/gui.rpy @@ -78,7 +78,8 @@ define gui.text_size = 42 ## The size of character names. define gui.name_text_size = 45 -define gui.name_text_outlines = [ (absolute(1.5), gui.name_outline, 0, 0) ] +define gui.name_text_thickness = absolute(2.0) +define gui.name_text_outlines = [ (gui.name_text_thickness, gui.name_outline, 0, 0) ] ## The size of text in the game's user interface. define gui.interface_text_size = 33 diff --git a/game/images/insultlayers/text0.png b/game/images/insultlayers/text0.png deleted file mode 100644 index a4fd43f..0000000 Binary files a/game/images/insultlayers/text0.png and /dev/null differ diff --git a/game/mods_example/template/chapter2_redo.rpy b/game/mods_example/template/chapter2_redo.rpy index a5a1b71..f3fa127 100644 --- a/game/mods_example/template/chapter2_redo.rpy +++ b/game/mods_example/template/chapter2_redo.rpy @@ -8,4 +8,29 @@ label chapter_2_new: play music 'audio/OST/Those Other Two Weirdos.ogg' show anon neutral flip at aright with dissolve A "Sample Text" + F "Sample Text" + Lucy "Sample Text" + Ro "Sample Text" + St "Sample Text" + N "Sample Text" + Nas "Sample Text" + T "Sample Text" + Attendant "Sample Text" + Sp "Sample Text" + Re "Sample Text" + D "Sample Text" + FM "Sample Text" + FD "Sample Text" + Tsuki "Sample Text" + unknown "Sample Text" + jingo "Sample Text" + MaitD "Sample Text" + Moe "Sample Text" + Vince "Sample Text" + Waitress "Sample Text" + AnonAndFang "Sample Text" + SV "Sample Text" + carl "Sample Text" + Drf "Sample Text" + FRT "Sample Text" return diff --git a/game/options.rpy b/game/options.rpy index 91c0e82..4427632 100644 --- a/game/options.rpy +++ b/game/options.rpy @@ -47,7 +47,13 @@ define build.name = "SnootGame" define config.has_sound = True define config.has_music = True -define config.has_voice = False +define config.has_voice = True + +define config.play_channel = "uisounds" + +##Custom Channels? +init -1 python: + renpy.music.register_channel("uisounds", "ui", loop=False, stop_on_mute=True) ## To allow the user to play a test sound on the sound or voice channel, diff --git a/game/screens.rpy b/game/screens.rpy index b9d4bce..1c95a46 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -1,24 +1,44 @@ ###Updater Python stuff### init python: - if renpy.variant("pc"): #Don't run this on mobile, not supported - if persistent.updateresult is None: - persistent.updateresult = "No new version is available" - if persistent.autoup is None: - persistent.autoup = False - if persistent.updateWebServer is None: - persistent.updateWebServer = "http://updates.snootgame.xyz/updates.json" + if renpy.variant("pc"): #Don't run this on mobile, not supported + if persistent.updateresult is None: + persistent.updateresult = "No new version is available" + if persistent.autoup is None: + persistent.autoup = False + if persistent.updateWebServer is None: + persistent.updateWebServer = "http://updates.snootgame.xyz/updates.json" - def UpdateCheck(): - # WHY YES I ONLY ALLOW PEOPLE USING MY FRAMEWORK TO CHECK FOR AN UPDATE EVERY SIX FUCKING HOURS HOW DID YOU KNOW - # NOPE check_interval=5 (5 SECONDS) FUCK YOU - pendingVersion = updater.UpdateVersion(persistent.updateWebServer, check_interval=5) - if pendingVersion == None or pendingVersion == config.version or "TEST" in pendingVersion: - persistent.updateresult = "No new version is available" - else: - persistent.updateresult = pendingVersion + def UpdateCheck(): +# WHY YES I ONLY ALLOW PEOPLE USING MY FRAMEWORK TO CHECK FOR AN UPDATE EVERY SIX FUCKING HOURS HOW DID YOU KNOW +# NOPE check_interval=5 (5 SECONDS) FUCK YOU + pendingVersion = updater.UpdateVersion(persistent.updateWebServer, check_interval=5) + if pendingVersion == None or pendingVersion == config.version or "TEST" in pendingVersion: + persistent.updateresult = "No new version is available" + else: + persistent.updateresult = pendingVersion + +#idk non-functional dummies for uisounds hackery +#coming soon + + def onclick_audio(flag, audio_filename=["audio/ui/uiOptionOff.wav", "audio/ui/uiOptionOff.wav", "audio/ui/uiOptionOff.wav"]): + renpy.play(audio_filename[int(flag)]) + + def ToggleAutoUpdate(): + onclick_audio(persistent.autoup) + preferences.autoup = not preferences.autoup + + def ToggleAutoForwardMove(): + onclick_audio(persistent.afm_enable) + preferences.afm_enable = not preferences.afm_enable + + +# def ToggleMuteAll(): +# if preferences.all_mute == True: +# renpy.play("audio/ui/uiOptionOff.wav") +# else: +# renpy.play("audio/ui/uiOptionOn.wav") +# preferences.all_mute = not preferences.all_mute - def ToggleAutoUpdate(): - persistent.autoup = not persistent.autoup ################################################################################ ## Initialization @@ -48,6 +68,7 @@ style gui_text: style button: properties gui.button_properties("button") + # activate_sound "audio/ui/uiClick.wav" style button_text is gui_text: properties gui.text_properties("button") @@ -250,6 +271,7 @@ style choice_vbox: style choice_button is default: properties gui.button_properties("choice_button") + activate_sound "audio/ui/uiRollover.wav" style choice_button_text is default: properties gui.button_text_properties("choice_button") @@ -265,6 +287,10 @@ screen quick_button(filename, label, function): xmaximum 80 ymaximum 72 action function + if 'Return' in label or 'Back' in label or 'Menu' in label: + activate_sound "audio/ui/uiBack.wav" + else: + activate_sound "audio/ui/uiClick.wav" fixed: add filename xalign 0.5 yalign 0.5 zoom 1 text label xalign 0.5 yalign 0.5 xanchor 0.5 size 22 style "quick_button_text" @@ -350,22 +376,22 @@ screen navigation(): spacing gui.navigation_spacing - textbutton _("History") action ShowMenu("history") - textbutton _("Save") action ShowMenu("save") - textbutton _("Load") action ShowMenu("load") - textbutton _("Delete") action ShowMenu("delete") - textbutton _("Options") action ShowMenu("preferences") + textbutton _("History") activate_sound "audio/ui/uiClick.wav" action ShowMenu("history") + textbutton _("Save") activate_sound "audio/ui/uiClick.wav" action ShowMenu("save") + textbutton _("Load") activate_sound "audio/ui/uiClick.wav" action ShowMenu("load") + textbutton _("Delete") activate_sound "audio/ui/uiClick.wav" action ShowMenu("delete") + textbutton _("Options") activate_sound "audio/ui/uiClick.wav" action ShowMenu("preferences") #textbutton _("Extras") action ShowMenu("extras") - textbutton _("Return") action Return() + textbutton _("Return") activate_sound "audio/ui/uiBack.wav" action Return() if _in_replay: - textbutton _("End Replay") action EndReplay(confirm=True) + textbutton _("End Replay") activate_sound "audio/ui/uiBack.wav" action EndReplay(confirm=True) elif not main_menu: - textbutton _("Main Menu") action MainMenu() + textbutton _("Main Menu") activate_sound "audio/ui/uiBack.wav" action MainMenu() #textbutton _("Debug Score Card") action ShowMenu("score_menu") #if renpy.variant("pc"): @@ -398,6 +424,10 @@ screen main_menu_button(filename, label, function): xmaximum 500 ymaximum 129 action function + if 'Back' in label or 'Return' in label or 'Quit' in label or 'Main Menu' in label: + activate_sound "audio/ui/uiBack.wav" + else: + activate_sound "audio/ui/uiClick.wav" fixed: add filename xalign 0.5 yalign 0.5 zoom 1 xanchor 0 xcenter 0.5 ycenter 0.5 text label xalign 0.5 yalign 0.5 xanchor 0.5 @@ -438,7 +468,7 @@ screen main_menu(): use main_menu_buttons("gui/button/menubuttons/template_idle.png", [ [ "Start", Start() ], - [ "Mods", ShowMenu("mod_menu") ], + [ "Bonus Chapters", ShowMenu("ex_ch_menu") ], [ "Load", ShowMenu("load") ], [ "Options", ShowMenu("preferences") ], [ "Extras", ShowMenu("extras") ], \ @@ -677,10 +707,12 @@ screen updates(): label _("Update Checker:") label _("{color=#FFFFFF}{size=32}[persistent.updateresult!t]{/size}{/color}") - textbutton _("{size=36}Check for Update\n{/size}") action [Notify("Checking for update..."), Function(UpdateCheck)] + + textbutton _("{size=36}Check for Update\n{/size}") activate_sound "audio/ui/uiClick.wav" action [Notify("Checking for update..."), Function(UpdateCheck)] label _("Updater:") label _("{color=#FFFFFF}{size=32}Server URL (click to edit):{/size}{/color}") + default input_on = False button: key_events True @@ -695,10 +727,9 @@ screen updates(): action ToggleScreenVariable('input_on') style_prefix "quick" if persistent.updateresult != "No new version is available": - textbutton _("{size=36}Update Now!\n{/size}") action updater.Update(persistent.updateWebServer, force=False) + textbutton _("{size=36}Update Now!\n{/size}") activate_sound "audio/ui/uiNotification.wav" action [updater.Update(persistent.updateWebServer, force=False)] else: - textbutton _("{size=36}Update Now!\n{/size}") action Notify("Nothing to update to!") - + textbutton _("{size=36}Update Now!\n{/size}") activate_sound "audio/ui/uiFail.wav" action [Notify("Nothing to update to!")] use extrasnavigation ## Load and Save screens ####################################################### @@ -793,19 +824,19 @@ screen file_slots(title, flag=False): spacing gui.page_spacing - textbutton _("<") action FilePagePrevious() + textbutton _("<") activate_sound "audio/ui/uiRollover.wav" action FilePagePrevious() if config.has_autosave: - textbutton _("{#auto_page}A") action FilePage("auto") + textbutton _("{#auto_page}A") activate_sound "audio/ui/uiClick.wav" action FilePage("auto") if config.has_quicksave: - textbutton _("{#quick_page}Q") action FilePage("quick") + textbutton _("{#quick_page}Q") activate_sound "audio/ui/uiClick.wav" action FilePage("quick") ## range(1, 10) gives the numbers from 1 to 9. for page in range(1, 10): - textbutton "[page]" action FilePage(page) + textbutton "[page]" activate_sound "audio/ui/uiClick.wav" action FilePage(page) - textbutton _(">") action FilePageNext() + textbutton _(">") activate_sound "audio/ui/uiRollover.wav" action FilePageNext() style page_label is gui_label @@ -863,32 +894,31 @@ screen preferences(): vbox: style_prefix "radio" label _("Display") - textbutton _("Window") action Preference("display", "any window") - textbutton _("Fullscreen") action Preference("display", "fullscreen") + textbutton _("Window") activate_sound "audio/ui/uiOptionOn.wav" action Preference("display", "any window") + textbutton _("Fullscreen") activate_sound "audio/ui/uiOptionOn.wav" action Preference("display", "fullscreen") vbox: style_prefix "radio" label _("Rollback Side") - textbutton _("Disable") action Preference("rollback side", "disable") - textbutton _("Left") action Preference("rollback side", "left") - textbutton _("Right") action Preference("rollback side", "right") + textbutton _("Disable") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "disable") + textbutton _("Left") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "left") + textbutton _("Right") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "right") vbox: style_prefix "check" label _("Naughty Stuff") - textbutton _("Enable Lewd Images") action ToggleVariable("persistent.lewd", True, False) + textbutton _("Enable Lewd Images") action [Function(onclick_audio, persistent.lewd), ToggleVariable("persistent.lewd", True, False)] vbox: style_prefix "check" label _("Requires Restart") - textbutton _("Enable Forward-Scroll Movement") action ToggleVariable("persistent.scroll", True, False) - + textbutton _("Enable Forward-Scroll Movement") action [Function(onclick_audio, persistent.scroll), ToggleVariable("persistent.scroll", True, False)] vbox: style_prefix "check" label _("Skip") - textbutton _("Unseen Text") action Preference("skip", "toggle") - textbutton _("After Choices") action Preference("after choices", "toggle") - textbutton _("Transitions") action InvertSelected(Preference("transitions", "toggle")) + textbutton _("Unseen Text") action [Function(onclick_audio, preferences.skip_unseen), ToggleVariable("preferences.skip_unseen", True, False)] + textbutton _("After Choices") action [Function(onclick_audio, preferences.skip_after_choices), ToggleVariable("preferences.skip_after_choices", True, False)] + textbutton _("Transitions") action [Function(onclick_audio, preferences.transitions), ToggleVariable("preferences.transitions", 0, 2)] ## Additional vboxes of type "radio_pref" or "check_pref" can be ## added here, to add additional creator-defined preferences. @@ -917,6 +947,12 @@ screen preferences(): hbox: bar value Preference("music volume") + if config.has_music: + label _("UI Sounds Volume") + + hbox: + bar value Preference("ui volume") + if config.has_sound: label _("Sound Volume") @@ -937,7 +973,7 @@ screen preferences(): if config.sample_voice: textbutton _("Test") action Play("voice", config.sample_voice) - if config.has_music or config.has_sound or config.has_voice: + if config.has_music or config.has_sound or config.has_voice or config.has_ui: null height gui.pref_spacing textbutton _("Mute All"): @@ -1135,16 +1171,17 @@ screen extrasnavigation(): else: add "gui/snootgame.png" vbox: - spacing 25 + spacing 10 xpos 1885 - yalign 0.9 + ypos 1130 use main_menu_buttons("gui/button/menubuttons/template_idle.png", [ [ "Help", ShowMenu("help") ], - [ "About", ShowMenu("about") ], - [ "Updates", ShowMenu("updates") ], + [ "About", ShowMenu("about") ], + [ "Updates", ShowMenu("updates") ], [ "Gallery", ShowMenu("cg_gallery_0") ], - [ "Return", ShowMenu("main_menu") ] + [ "Mods", ShowMenu("mod_menu") ], + [ "Return", ShowMenu("main_menu") ] ] ) ## Help screen ################################################################# @@ -1215,7 +1252,7 @@ screen keyboard_help(): hbox: label _("Escape") - text _("Accesses the game menu.") + text _("Accesses the game menu. Also escapes the Gallery.") hbox: label _("Ctrl") @@ -1258,7 +1295,7 @@ screen mouse_help(): hbox: label _("Right Click") - text _("Accesses the game menu.") + text _("Accesses the game menu. Also escapes the Gallery.") hbox: label _("Mouse Wheel Up\nClick Rollback Side") @@ -1359,8 +1396,8 @@ screen confirm(message, yes_action, no_action): xalign 0.5 spacing 150 - textbutton _("Yes") action yes_action - textbutton _("No") action no_action + textbutton _("Yes") activate_sound "audio/ui/uiClick.wav" action yes_action + textbutton _("No") activate_sound "audio/ui/uiBack.wav" action no_action ## Right-click and escape answer "no". key "game_menu" action no_action @@ -1659,9 +1696,9 @@ screen extrasnavigation(): #Updates are removed (not even supported by Ren'Py) use main_menu_buttons("gui/button/menubuttons/template_idle.png", [ [ "Help", ShowMenu("help") ], - [ "About", ShowMenu("about") ], + [ "About", ShowMenu("about") ], [ "Gallery", ShowMenu("cg_gallery_0") ], - [ "Return", ShowMenu("main_menu") ] + [ "Return", ShowMenu("main_menu") ] ] ) style radio_button: diff --git a/game/script.rpy b/game/script.rpy index faa603f..3e4c13a 100644 --- a/game/script.rpy +++ b/game/script.rpy @@ -24,7 +24,7 @@ init python: import webbrowser #function for insult layers def showCG(): - files = ["text0", "text1", "text2", "text3", "text4", "text5", "text6", "text7", "text8", "text9"] + files = ["text1", "text2", "text3", "text4", "text5", "text6", "text7", "text8", "text9"] length = len(files) picked = random.randint(0,length - 1) fileName = files[picked] @@ -117,37 +117,36 @@ define long_textbox = { "window_background": long_textbox_img, 'namebox_style': #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=[(1, '#0C300A')]) # Light Green -define F = Character ('Fang', base, color="#B4D4CE", who_outlines=[(1, '#112D27')]) # Light Cyan -define Lucy = Character ('Lucy', base, color="#B4D4CE", who_outlines=[(1, '#112D27')]) # Light Cyan -define Ro = Character ('Rosa', base, color="#FE712B", who_outlines=[(1, '#3D1809')]) # Red-Orange -define St = Character ('Stella', base, color="#D2FFAA", who_outlines=[(1, '#203011')]) # Light Green -define N = Character ('Naomi', base, color="#F8B9A0", who_outlines=[(1, '#291A1B')]) # Peach -define Nas = Character ('Naser', base, color="#F89E38", who_outlines=[(1, '#2D2D2D')]) # Orange -define T = Character ('Trish', base, color="#B675E6", who_outlines=[(1, '#1F0632')]) # Purple -define Attendant = Character ('Attendant', base, color="#8A0036", who_outlines=[(1, '#FFFFFF')]) # Maroon -define Sp = Character ('Spears', base, color="#C4C3C3", who_outlines=[(1, '#272727')]) # Light Grey -define Re = Character ('Reed', base, color="#ED4C5B", who_outlines=[(1, '#361013')]) # Bright Red -define D = Character ('Driver', base, color="#FFC63A", who_outlines=[(1, '#4D280A')]) # Yellow-Orange -define FM = Character ('Fangs Mom', base, color="#FFD8F6", who_outlines=[(1, '#361730')]) # Bright Pink -define FD = Character ('Fangs Dad', base, color="#D8A09A", who_outlines=[(1, '#190E0F')]) # Desaturated Orange -define Tsuki = Character ('Mr. Tsuki', base, color="#A7F2A2", who_outlines=[(1, '#320E3B')]) # Pear Green -define unknown = Character ('(???)', base, color="#000000", who_outlines=[(1, '#FFFFFF')]) # Black -define jingo = Character ('Mr. Jingo', base, color="#CD8283", who_outlines=[(1, '#0F0D49')]) # Desaturated Red -define MaitD = Character ('Maitre D', base, color="#241630", who_outlines=[(1, '#241630')]) # Cobalt Blue -define Moe = Character('Moe', base, color="#A5BEED", who_outlines=[(1, '#342210')]) # Desaturated Blue -define Vince = Character ('Vince', base, color="#FFC63A", who_outlines=[(1, '#4D280A')]) # Yellow-Orange -define Waitress = Character ('Waitress', base, color="#F691C8", who_outlines=[(1, '#402E3A')]) # Pink -define Riley = Character ('Riley', base, color="#B675E6", who_outlines=[(1, '#1F0632')]) # TODO -define Tana = Character ('Tana', base, color="#B675E6", who_outlines=[(1, '#1F0632')]) # TODO -define Trevor = Character ('Trevor', base, color="#B675E6", who_outlines=[(1, '#1F0632')]) # TODO +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 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=[(1, '#113623')]) -define SV = Character ('Street Vendor', base, color="#F8E120", who_outlines=[(1, '#361504')]) -define carl = Character ('Mr. Carldewskii', base, color="#E19E40", who_outlines=[(1, '#03223B')]) -define Drf = Character ('Dr. Fernsworth', base, color="#253354", who_outlines=[(1, '#334573')]) -define FRT = Character ('Fang Reed & Trish', base, color="#4963A5", who_outlines=[(1, '#FFFFFF')]) -define TT = Character ('Tana & Trevor', base, color="#B675E6", who_outlines=[(1, '#1F0632')]) # TODO +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 #Extra image translations #siloettes @@ -353,7 +352,7 @@ image naser handout flip = im.Flip("naser/naser handout.png", horizontal=True) image naomi keikaku flip = im.Flip("naomi/naomi keikaku.png", horizontal=True) image anon shrug flip = im.Flip("anon/emotive set/anon shrug.png", horizontal=True) image fang hug flip = im.Flip("fang/emotive set/fang hug.png", horizontal=True) -image naser brooding flip = im.Flip("naser/naser brooding.png", horizontal=True) +image naser brooding flip = im.Flip("naser/naser brooding.png", horizontal=True) image anon concerned flip = im.Flip("anon/base set/anon concerned.png", horizontal=True) image rosa excited flip = im.Flip("rosa/rosa excited.png", horizontal=True) image fang anguish flip = im.Flip("fang/emotive set/fang anguish.png", horizontal=True) diff --git a/game/script/0._extra_stubs.rpy b/game/script/0._extra_stubs.rpy new file mode 100644 index 0000000..d0814ca --- /dev/null +++ b/game/script/0._extra_stubs.rpy @@ -0,0 +1,31 @@ + +label chapter_x1: + "1" + return +label chapter_x2: + "2" + return +label chapter_x3: + "3" + return +label chapter_x4: + "4" + return +label chapter_x5: + "5" + return +label chapter_x6: + "6" + return +label chapter_x7: + "7" + return +label chapter_x8: + "8" + return +label chapter_x9: + "9" + return +label chapter_x10: + "10" + return diff --git a/game/script/14D.gold-ending.rpy b/game/script/14D.gold-ending.rpy index 555fdd2..57dafd1 100644 --- a/game/script/14D.gold-ending.rpy +++ b/game/script/14D.gold-ending.rpy @@ -520,7 +520,7 @@ label chapter_14D: show fang d happy with dissolve "We chuckle together." - play music "audio/OST/Amberlight Brilliance.ogg" fadein 1.0 + play music "audio/OST/Amberlight Brilliance D ending.ogg" fadein 1.0 A "Hey, Lucy…" "I keep my eyes on the stars, even when Lucy turns to look at me." diff --git a/game/src/cg_gallery.rpy b/game/src/cg_gallery.rpy index aec52ca..9d00f6c 100644 --- a/game/src/cg_gallery.rpy +++ b/game/src/cg_gallery.rpy @@ -158,17 +158,17 @@ screen cg_gallery(flag, __yoffset = 0, origin = 'CG'): textbutton _(cp['name']) text_color gui.selected_color text_xalign 0.5 else: if cp['eval'] is None: - textbutton _(cp['name']) action ShowMenu('cg_gallery_'+flag, 0, cp['name']) text_xalign 0.5 + textbutton _(cp['name']) activate_sound "audio/ui/uiClick.wav" action ShowMenu('cg_gallery_'+flag, 0, cp['name']) text_xalign 0.5 elif eval(cp['eval']): - textbutton _(cp['name']) action ShowMenu('cg_gallery_'+flag, 0, cp['name']) text_xalign 0.5 + textbutton _(cp['name']) activate_sound "audio/ui/uiClick.wav" action ShowMenu('cg_gallery_'+flag, 0, cp['name']) text_xalign 0.5 else: textbutton _(cp['name']) text_xalign 0.5 - textbutton _("Return") action ShowMenu('main_menu') text_xalign 0.5 + textbutton _("Return") activate_sound "audio/ui/uiBack.wav" action ShowMenu('main_menu') text_xalign 0.5 if _in_replay: - textbutton _("End Replay") action EndReplay(confirm=True) + textbutton _("End Replay") activate_sound "audio/ui/uiBack.wav" action EndReplay(confirm=True) elif not main_menu: - textbutton _("Main Menu") action MainMenu() + textbutton _("Main Menu") activate_sound "audio/ui/uiBack.wav" action MainMenu() transform: zoom 0.95 @@ -248,6 +248,7 @@ screen view_image(item, _origin, zoom = zoom_arr.index(1.0), flag='a'): tag menu key "game_menu" action _origin + key "button_alternate" action _origin # mousewheel & insert+delete if (ALLOW_ZOOM): @@ -284,7 +285,7 @@ screen view_image(item, _origin, zoom = zoom_arr.index(1.0), flag='a'): [ "-", zoom_b_f ], [ "Return", zoom_b_f ] ] ) - else: + elif renpy.variant("small"): use quick_buttons("gui/button/uioptionbuttons/template_idle.png", [ [ "Return", _origin ] diff --git a/game/src/extra_chapters_menu.rpy b/game/src/extra_chapters_menu.rpy new file mode 100644 index 0000000..55e5529 --- /dev/null +++ b/game/src/extra_chapters_menu.rpy @@ -0,0 +1,102 @@ + +init python: + ex_chapters = [ + [ "Chicxulub Gutterlanea", "chapter_x1" ], + [ "The Mous Pad", "chapter_x2" ], + [ "PTA Meeting", "chapter_x3" ], + [ "Passion of the Trigga I", "chapter_x4" ], + [ "Passion of the Trigga II", "chapter_x5" ], + [ "Passion of the Trigga III", "chapter_x6" ], + [ "Naomi's Tribulations I", "chapter_x7" ], + [ "Naomi's Tribulations II", "chapter_x8" ], + [ "Naomi's Tribulations III", "chapter_x9" ], + [ "RAYmba's Observations", "chapter_x10" ] + ] + ex_chapters_menu = ex_chapters.copy() + + if persistent.endings is None: + ending_image() + + pass + +#similar to quick_button funcs +screen ex_ch_button(filename, label, function): + button: + xmaximum 600 + ymaximum 129 + action function + if 'Back' in label or 'Return' in label or 'Quit' in label or 'Main Menu' in label: + activate_sound "audio/ui/uiBack.wav" + else: + activate_sound "audio/ui/uiClick.wav" + fixed: + add filename xalign 0.5 yalign 0.5 zoom 0.9 + text label xalign 0.5 yalign 0.5 xanchor 0.5 size 34 + +# label_functions is [ [ "label", function() ], [ "foobar", foobar() ], .. ] +# Reuse the same image string and keep things 'neat'. +screen ex_ch_buttons(filename, label_functions): + for l_f in label_functions: + use ex_ch_button(filename, l_f[0], Start(l_f[1]) ) + +screen ex_ch_menu(): + + python: + global ex_chapters_menu + ex_chapters_menu = ex_chapters.copy() + e = persistent.endings #ending seen + if (e ^ 0b0000 == 0): + ex_chapters_menu.clear() + elif not (e & 0b1111 == 0b1111): + w = 4 + for i in range(0, 4): + w -= persistent.endings >> i & 0b1 == 0b1 + + #trish + for i in range(5, 5-w, -1): + ex_chapters_menu.remove(ex_chapters[i]) + #naomi + for i in range(8, 8-w, -1): + ex_chapters_menu.remove(ex_chapters[i]) + ex_chapters_menu.pop() + + tag menu + style_prefix "main_menu" + add gui.main_menu_background + + frame: + xsize 420 + yfill True + background "gui/overlay/main_menu.png" + +#side_yfill True + vbox: + xpos 1940 + yalign 0.03 + if persistent.splashtype == 1: + add "gui/sneedgame.png" + else: + add "gui/snootgame.png" + + viewport: + # this could be better but its ok for now + xpos 1885-540 + xmaximum 540 + ymaximum 0.8 + ypos 200 + yinitial 0 + scrollbars "vertical" + mousewheel True + draggable True + pagekeys True + vbox: + #xpos 1885 + spacing 12 +#yalign 0.98 + + use ex_ch_button("gui/button/menubuttons/template_idle.png", "Return", ShowMenu("main_menu")) +#use ex_ch_button("gui/button/menubuttons/template_idle.png", str(e), ShowMenu("main_menu")) + if len(ex_chapters_menu): + use ex_ch_buttons("gui/button/menubuttons/template_idle.png", ex_chapters_menu ) + for x in range(0, len(ex_chapters) - len(ex_chapters_menu)): + use ex_ch_button("gui/button/menubuttons/template_idle.png", "???", None) diff --git a/game/src/mod_menu.rpy b/game/src/mod_menu.rpy index a068e04..3180fbc 100644 --- a/game/src/mod_menu.rpy +++ b/game/src/mod_menu.rpy @@ -10,6 +10,10 @@ screen mod_menu_button(filename, label, function): xmaximum 600 ymaximum 129 action function + if 'Back' in label or 'Return' in label or 'Quit' in label or 'Main Menu' in label: + activate_sound "audio/ui/uiBack.wav" + else: + activate_sound "audio/ui/uiClick.wav" fixed: add filename xalign 0.5 yalign 0.5 zoom 0.9 text label xalign 0.5 yalign 0.5 xanchor 0.5 size 34 @@ -21,7 +25,7 @@ screen mod_menu_button(filename, label, function): # Reuse the same image string and keep things 'neat'. screen mod_menu_buttons(filename, arr): for x in arr: - use mod_menu_button(filename, x['Name'], Start(x['Label'])) + use mod_menu_button(filename, x['Name'], Start(x['Label']) ) screen mod_menu(): diff --git a/game/storyline.rpy b/game/storyline.rpy index 5f5f90e..19134ab 100644 --- a/game/storyline.rpy +++ b/game/storyline.rpy @@ -1,3 +1,14 @@ +init -1 python: + def ending_image(): + #0b0000, ABCD, flash the bits with |=, check with & + endings = 0b0000 + _e = 0b1 + for i in range(1, 5): + fn = str(i)+"of4" + endings |= (_e * renpy.seen_image(fn)) + _e = _e << 0b1 + persistent.endings = endings + label storyline: call chapter_1 call chapter_2 @@ -33,6 +44,7 @@ label storyline: call chapter_12A call chapter_13A call chapter_14A + $ ending_image() $ renpy.quit() else: # this block is redundant since we should never hit it #>>ERROR HANDLING OH SWEET BABY JESUS SHIT HIT THE FAN @@ -47,6 +59,7 @@ label storyline: St "Yes, but you have to have something wrong with you to speedrun a visual novel beta" "/dev/non" "well shit. Please do report this bug and all the choices you made that lead to this point. Something fucked up real bad" #just liek maek gaem + $ ending_image() call .ending return