diff --git a/.android.json b/.android.json deleted file mode 100644 index fba1690..0000000 --- a/.android.json +++ /dev/null @@ -1 +0,0 @@ -{"expansion": false, "heap_size": "3", "icon_name": "Snoot Game", "include_pil": false, "include_sqlite": false, "layout": null, "name": "Snoot Game", "numeric_version": 1, "orientation": "sensorLandscape", "package": "cavemanon.snootgame", "permissions": ["VIBRATE", "INTERNET"], "source": false, "store": "none", "update_always": true, "update_icons": true, "update_keystores": true, "version": "INTERNAL-BUILD"} diff --git a/.woodpecker.yml b/.woodpecker.yml index 98bd613..194d8be 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,3 +1,9 @@ +clone: + git: + image: woodpeckerci/plugin-git + settings: + depth: 1 + steps: changelog: image: debian @@ -11,7 +17,7 @@ steps: image: debian commands: - sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_TAG}/g" game/options.rpy #Change the internal build name to the tagged version - - sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_TAG}/g" .android.json + - sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_TAG}/g" android.json when: - event: tag @@ -19,20 +25,21 @@ steps: image: debian commands: - sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_SHA}/g" game/options.rpy #if no tag, make it the commit num - - sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_TAG}/g" .android.json - + - sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_SHA}/g" android.json when: - event: cron build: - image: openjdk:8 + image: openjdk:21-jdk-bookworm commands: - apt update - - apt install libgl1 -y + - apt install libgl1 patch -y - sed -i -e "s/VERSION/${RenpyVersion}/g" game/options.rpy #Change the renpy version to the woodpecker reuqested one. #Get Renkit - - wget -qO- "https://github.com/kobaltcore/renkit/releases/download/v${RenkitVersion}/renkit-linux-amd64.tar.gz" | tar xz --directory=/tmp/ - - /tmp/renconstruct build -i "." -c "renconstruct.toml" -o dist/ + - wget -qO- "https://github.com/kobaltcore/renkit/releases/download/v${RenkitVersion}/renkit-x86_64-unknown-linux-gnu.tar.xz" | tar -Jax --directory=/tmp/ + - /tmp/renkit-x86_64-unknown-linux-gnu/renconstruct build "." dist/ + - mkdir "dist/android" + - mv dist/*.apk "dist/android" - cd /tmp/ archival-sha: @@ -76,6 +83,6 @@ steps: matrix: RenpyVersion: - - "8.0.3" + - "8.3.0" RenkitVersion: - - "3.3.1" + - "4.4.0" diff --git a/android.json b/android.json new file mode 100644 index 0000000..5167cf5 --- /dev/null +++ b/android.json @@ -0,0 +1,24 @@ +{ + "expansion": false, + "google_play_key": null, + "google_play_salt": null, + "heap_size": "3", + "icon_name": "Snoot Game", + "include_pil": false, + "include_sqlite": false, + "layout": null, + "name": "Snoot Game", + "numeric_version": 1, + "orientation": "sensorLandscape", + "package": "cavemanon.snootgame", + "permissions": [ + "VIBRATE", + "INTERNET" + ], + "source": false, + "store": "none", + "update_always": true, + "update_icons": true, + "update_keystores": true, + "version": "INTERNAL-BUILD" +} \ No newline at end of file diff --git a/android.keystore b/android.keystore new file mode 100644 index 0000000..ab39a45 Binary files /dev/null and b/android.keystore differ diff --git a/bundle.keystore b/bundle.keystore new file mode 100644 index 0000000..c14bc91 Binary files /dev/null and b/bundle.keystore differ diff --git a/game/chapter_variables.rpy b/game/chapter_variables.rpy new file mode 100644 index 0000000..cf19dcc --- /dev/null +++ b/game/chapter_variables.rpy @@ -0,0 +1,26 @@ +# Store the general chapters inside an array for easy manipulation +default chapter_list = [ + "chapter_1", "chapter_2", "chapter_3", "chapter_4", "chapter_5", + "chapter_6", "chapter_7", "chapter_8", "chapter_9", "chapter_10", "chapter_11" +] + +define ending_routes = { + 4: ["chapter_11D", "chapter_12D", "chapter_12_5D", "chapter_13D", "chapter_14D"], + 3: ["chapter_11C", "chapter_12C", "chapter_12_5C", "chapter_13C", "chapter_14C"], + 2: ["chapter_11B", "chapter_12B", "chapter_13B", "chapter_14B"], + 1: ["chapter_11A", "chapter_12A", "chapter_12_5D", "chapter_13A", "chapter_14A"] +} + +# Anon/Fang +default anonscore = 0 +default fangscore = 0 +default wingStory = False + +# Chapter variables +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 current_chapter = chapter_list[chapter_list_index] # Store the name of the label as a string + +# Ending variables +default ending_route_number = None +default is_end_reached = False diff --git a/game/gui/FallingSky.otf b/game/gui/FallingSky.otf index 3405a8e..0fa43fc 100644 Binary files a/game/gui/FallingSky.otf and b/game/gui/FallingSky.otf differ diff --git a/game/options.rpy b/game/options.rpy index 36fe2ea..e549fe1 100644 --- a/game/options.rpy +++ b/game/options.rpy @@ -24,7 +24,7 @@ define gui.show_name = True ## The version of the game. -define config.version = _("INTERNAL-BUILD") +define config.version = "INTERNAL-BUILD" ## Text that is placed on the game's about screen. Place the text between the ## triple-quotes, and leave a blank line between paragraphs. @@ -133,6 +133,11 @@ default preferences.text_cps = 50 default preferences.afm_time = 15 +define config.developer = "auto" + +default persistent.enable_debug_scores = config.developer +default persistent.enable_chapter_select = config.developer + ##Default Audio is not ear rape define config.default_music_volume = 0.48 define config.default_sfx_volume = 0.80 @@ -196,6 +201,15 @@ init python: build.classify('game/mods_example/**', None) build.classify('game/mods_example/.**', None) + build.classify('README.md', None) + build.classify('renconstruct.toml', None) + build.classify('bundle.keystore', None) + build.classify('android.keystore', None) + build.classify('bundle.keystore.original', None) + + build.classify('game/dev/.**', None) + build.classify('build_patch/*', None) + ## To archive files, classify them as 'archive'. @@ -220,6 +234,3 @@ init python: ## by a slash. # define build.itch_project = "renpytom/test-project" - -#RenPy updating from snootgame.xyz -define build.include_update = True diff --git a/game/screens.rpy b/game/screens.rpy index fd0019d..2ebb355 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -319,6 +319,8 @@ init python: config.overlay_screens.append("quick_menu") default quick_menu = True +default persistent.old_endings = None +default persistent.endings = None style quick_button is default style quick_button_text is button_text @@ -356,6 +358,10 @@ screen navigation(): 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") + + if config.developer and persistent.enable_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 _("Extras") action ShowMenu("extras") textbutton _("Return") activate_sound "audio/ui/uiBack.wav" action Return() @@ -992,6 +998,20 @@ screen preferences(): 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, True), ToggleVariable("preferences.transitions", 0, 2)] + if config.developer: + vbox: + style_prefix "check" + label _("Developer Tools") + textbutton _("Enable Debug Scores") action ToggleVariable("persistent.enable_debug_scores", True, False) + textbutton _("Enable Chapter Select") action ToggleVariable("persistent.enable_chapter_select", True, False) + + if not main_menu: + if config.developer and persistent.enable_debug_scores: + $ debug_story_variables(False) + $ debug_story_variables(True) + else: + $ debug_story_variables(False) + vbox: xsize 676 style_prefix "check" @@ -1265,12 +1285,13 @@ screen extrasnavigation(): vbox: spacing 10 xpos 1885 - ypos 1130 + ypos (1269 if config.developer and persistent.enable_chapter_select else 1130) use main_menu_buttons("gui/button/menubuttons/template_idle.png", [ [ _("Help"), ShowMenu("help") ], [ _("About"), ShowMenu("about") ], [ _("Gallery"), ShowMenu("cg_gallery") ], + *([(_("Chapter Select"), Start("chapter_select"))] if persistent.enable_chapter_select else []), [ _("Mods"), ShowMenu("mod_menu") ], [ _("Return"), ShowMenu("main_menu") ] ] ) diff --git a/game/script.rpy b/game/script.rpy index 94c48f7..641af18 100644 --- a/game/script.rpy +++ b/game/script.rpy @@ -322,8 +322,9 @@ transform scloserleft: label start: - $ fangscore = 0 - $ anonscore = 0 - $ wingStory = False + + $ toggle_debug() + pause 1.0 - call storyline from _call_storyline + + $ renpy.call(chapter_list[chapter_list_index]) # Call first element of the chapter_list array diff --git a/game/script/1.first-two-days-anon-meets-fang.rpy b/game/script/1.first-two-days-anon-meets-fang.rpy index 2d29243..e544229 100644 --- a/game/script/1.first-two-days-anon-meets-fang.rpy +++ b/game/script/1.first-two-days-anon-meets-fang.rpy @@ -3663,4 +3663,4 @@ label chapter_1: window auto pause 1.5 - return + $ next_story_chapter() diff --git a/game/script/10.an-excellent-reason-to-start-abusing-mod-powers.rpy b/game/script/10.an-excellent-reason-to-start-abusing-mod-powers.rpy index eed95dc..e525e4e 100644 --- a/game/script/10.an-excellent-reason-to-start-abusing-mod-powers.rpy +++ b/game/script/10.an-excellent-reason-to-start-abusing-mod-powers.rpy @@ -550,4 +550,4 @@ label chapter_10: window auto pause 1 - return + $ next_story_chapter() diff --git a/game/script/11.school-assignment-and-route-lock.rpy b/game/script/11.school-assignment-and-route-lock.rpy index eb2262c..2b47b73 100644 --- a/game/script/11.school-assignment-and-route-lock.rpy +++ b/game/script/11.school-assignment-and-route-lock.rpy @@ -448,8 +448,9 @@ label chapter_11: #THIS SECTION IS SCORE DEPENDENT # Doomer ending skips this segment - call get_ending from _call_get_ending - if _return == 2: + $ ending_score = get_ending() + + if ending_score == 2: stop music fadeout 3 pause 2 jump lPromAnnouncement @@ -585,10 +586,9 @@ label chapter_11: Nas "Don’t take it the wrong way, but my mind just screamed at me ‘worst case scenario’." pause .5 - call get_ending from _call_get_ending_1 - if _return == 4: # Golden + if ending_score == 4: # Golden jump lSortingThings - elif _return == 3: # tradwife + elif ending_score == 3: # tradwife jump lMendingThings else: jump lBreakingThings # All else fails, go to shooter. @@ -5211,8 +5211,8 @@ label chapter_11: "Fang and I have been together for a month now." pause .5 - call get_ending from _call_get_ending_2 - if _return == 3: # tradwife + + if ending_score == 3: # tradwife "Things are going pretty well. When we discount Trish’s weekly attempt to talk with Fang." @@ -5467,9 +5467,8 @@ label chapter_11: "{cps=*.1}...{/cps}" # skip this segment if we're doing ending 1 - call get_ending from _call_get_ending_3 - if _return == 1: #shooter - return + if ending_score == 1: #shooter + $ next_story_chapter() # the following segment makes sense in the context of 11B+11C+11D window hide @@ -5565,4 +5564,4 @@ label chapter_11: A "Anyways, where were we?" - return + $ next_story_chapter() diff --git a/game/script/11A.fang-desperately-wants-to-win-prom-night.rpy b/game/script/11A.fang-desperately-wants-to-win-prom-night.rpy index 8f0f0f2..a71f117 100644 --- a/game/script/11A.fang-desperately-wants-to-win-prom-night.rpy +++ b/game/script/11A.fang-desperately-wants-to-win-prom-night.rpy @@ -158,4 +158,4 @@ label chapter_11A: window auto pause .5 - return \ No newline at end of file + $ next_story_chapter() \ No newline at end of file diff --git a/game/script/11B.anon-gets-fangs'-pronouns-right,-and-she's-smug-about-it.rpy b/game/script/11B.anon-gets-fangs'-pronouns-right,-and-she's-smug-about-it.rpy index 52fb41d..f701a78 100644 --- a/game/script/11B.anon-gets-fangs'-pronouns-right,-and-she's-smug-about-it.rpy +++ b/game/script/11B.anon-gets-fangs'-pronouns-right,-and-she's-smug-about-it.rpy @@ -173,4 +173,4 @@ label chapter_11B: window auto pause 1 - return \ No newline at end of file + $ next_story_chapter() \ No newline at end of file diff --git a/game/script/11C.anon-gets-fangs'-pronouns-right,-but-she-tells-him-she's-okay-with-being-called-a-girl.rpy b/game/script/11C.anon-gets-fangs'-pronouns-right,-but-she-tells-him-she's-okay-with-being-called-a-girl.rpy index 12ecc7a..3cb63f0 100644 --- a/game/script/11C.anon-gets-fangs'-pronouns-right,-but-she-tells-him-she's-okay-with-being-called-a-girl.rpy +++ b/game/script/11C.anon-gets-fangs'-pronouns-right,-but-she-tells-him-she's-okay-with-being-called-a-girl.rpy @@ -302,4 +302,4 @@ label chapter_11C: "{cps=*.1}...{/cps}" pause .5 - return \ No newline at end of file + $ next_story_chapter() \ No newline at end of file diff --git a/game/script/11D.anon-gets-fangs'-pronouns-right-and-she-teases-him-while-carrying-herself-with-more-confidence.rpy b/game/script/11D.anon-gets-fangs'-pronouns-right-and-she-teases-him-while-carrying-herself-with-more-confidence.rpy index d0ab3a3..ec1a1c7 100644 --- a/game/script/11D.anon-gets-fangs'-pronouns-right-and-she-teases-him-while-carrying-herself-with-more-confidence.rpy +++ b/game/script/11D.anon-gets-fangs'-pronouns-right-and-she-teases-him-while-carrying-herself-with-more-confidence.rpy @@ -392,4 +392,4 @@ label chapter_11D: "{cps=*.1}...{/cps}" pause .5 - return + $ next_story_chapter() diff --git a/game/script/12.5C.prom-night-intro.rpy b/game/script/12.5C.prom-night-intro.rpy index 8757fac..0fd96b8 100644 --- a/game/script/12.5C.prom-night-intro.rpy +++ b/game/script/12.5C.prom-night-intro.rpy @@ -445,4 +445,4 @@ label chapter_12_5C: window hide window auto - return + $ next_story_chapter() diff --git a/game/script/12.5D.prom-night-intro.rpy b/game/script/12.5D.prom-night-intro.rpy index 1206149..3783289 100644 --- a/game/script/12.5D.prom-night-intro.rpy +++ b/game/script/12.5D.prom-night-intro.rpy @@ -443,4 +443,4 @@ label chapter_12_5D: F "Oh, Anon, you’re already here!" - return + $ next_story_chapter() diff --git a/game/script/12A.music-museum-date.rpy b/game/script/12A.music-museum-date.rpy index 765d6f1..72c1587 100644 --- a/game/script/12A.music-museum-date.rpy +++ b/game/script/12A.music-museum-date.rpy @@ -1034,4 +1034,4 @@ label chapter_12A: window hide window auto - return + $ next_story_chapter() diff --git a/game/script/12B.band-fang-likes-concert.rpy b/game/script/12B.band-fang-likes-concert.rpy index 2c78e29..cfbb6b1 100644 --- a/game/script/12B.band-fang-likes-concert.rpy +++ b/game/script/12B.band-fang-likes-concert.rpy @@ -591,4 +591,4 @@ label chapter_12B: window auto pause 1 - return + $ next_story_chapter() diff --git a/game/script/12C.anon-fang-lovey-dovey.rpy b/game/script/12C.anon-fang-lovey-dovey.rpy index 5f6b649..7d7f994 100644 --- a/game/script/12C.anon-fang-lovey-dovey.rpy +++ b/game/script/12C.anon-fang-lovey-dovey.rpy @@ -901,4 +901,4 @@ label chapter_12C: window auto pause 1 - return + $ next_story_chapter() diff --git a/game/script/12D.aquarium.rpy b/game/script/12D.aquarium.rpy index 910333b..94fe2b9 100644 --- a/game/script/12D.aquarium.rpy +++ b/game/script/12D.aquarium.rpy @@ -781,4 +781,4 @@ label chapter_12D: "{cps=*0.1}...{/cps}" - return + $ next_story_chapter() diff --git a/game/script/13A.fang-loses-it-after-losing-prom-queen.rpy b/game/script/13A.fang-loses-it-after-losing-prom-queen.rpy index 13b957f..50d96ab 100644 --- a/game/script/13A.fang-loses-it-after-losing-prom-queen.rpy +++ b/game/script/13A.fang-loses-it-after-losing-prom-queen.rpy @@ -1797,4 +1797,4 @@ label chapter_13A: window auto pause 1 - return + $ next_story_chapter() diff --git a/game/script/13B.fang-breaks-up-with-anon.rpy b/game/script/13B.fang-breaks-up-with-anon.rpy index 25dc559..17f7bcf 100644 --- a/game/script/13B.fang-breaks-up-with-anon.rpy +++ b/game/script/13B.fang-breaks-up-with-anon.rpy @@ -1048,4 +1048,4 @@ label chapter_13B: window auto pause 1 - return + $ next_story_chapter() diff --git a/game/script/13C.fang-and-anon-go-to-beach-and-prom.rpy b/game/script/13C.fang-and-anon-go-to-beach-and-prom.rpy index a650d2f..4b1afd6 100644 --- a/game/script/13C.fang-and-anon-go-to-beach-and-prom.rpy +++ b/game/script/13C.fang-and-anon-go-to-beach-and-prom.rpy @@ -4604,4 +4604,4 @@ label chapter_13C: #end of new stuff - return \ No newline at end of file + $ next_story_chapter() \ No newline at end of file diff --git a/game/script/13D.fang-plays-well,-naomi-jealous,-fang-talks-to-anon-to-break-up-while-she-thinks-about-her-life.rpy b/game/script/13D.fang-plays-well,-naomi-jealous,-fang-talks-to-anon-to-break-up-while-she-thinks-about-her-life.rpy index 077017c..f4349e6 100644 --- a/game/script/13D.fang-plays-well,-naomi-jealous,-fang-talks-to-anon-to-break-up-while-she-thinks-about-her-life.rpy +++ b/game/script/13D.fang-plays-well,-naomi-jealous,-fang-talks-to-anon-to-break-up-while-she-thinks-about-her-life.rpy @@ -4053,4 +4053,4 @@ label chapter_13D: "{cps=*.1}...{/cps}" pause 0.5 - return + $ next_story_chapter() diff --git a/game/script/14A.KO_OP-ending.rpy b/game/script/14A.KO_OP-ending.rpy index 529280c..d39362f 100644 --- a/game/script/14A.KO_OP-ending.rpy +++ b/game/script/14A.KO_OP-ending.rpy @@ -1442,4 +1442,5 @@ label chapter_14A: pause 5 $ renpy.music.set_volume(1, 0, 'ambient') - return + + $ next_story_chapter() diff --git a/game/script/14B.bad-ending.rpy b/game/script/14B.bad-ending.rpy index 512c844..d292f69 100644 --- a/game/script/14B.bad-ending.rpy +++ b/game/script/14B.bad-ending.rpy @@ -350,4 +350,4 @@ label chapter_14B: scene black with Dissolve(3) pause 2 - return + $ next_story_chapter() diff --git a/game/script/14C.good-ending.rpy b/game/script/14C.good-ending.rpy index bbfeb24..fc4469d 100644 --- a/game/script/14C.good-ending.rpy +++ b/game/script/14C.good-ending.rpy @@ -1014,4 +1014,5 @@ label chapter_14C: pause 1.0 stop music $ renpy.music.set_volume(1, 0, 'music') - return + + $ next_story_chapter() diff --git a/game/script/14D.gold-ending.rpy b/game/script/14D.gold-ending.rpy index 320f93e..54b0127 100644 --- a/game/script/14D.gold-ending.rpy +++ b/game/script/14D.gold-ending.rpy @@ -898,4 +898,5 @@ label chapter_14D: pause 16 scene black with Dissolve(1.0) pause 1 - return + + $ next_story_chapter() diff --git a/game/script/2.fourth-day-of-school.rpy b/game/script/2.fourth-day-of-school.rpy index e5294d1..a3b192f 100644 --- a/game/script/2.fourth-day-of-school.rpy +++ b/game/script/2.fourth-day-of-school.rpy @@ -2604,4 +2604,4 @@ label chapter_2: "{cps=*.05}...{/cps}" pause .5 - return + $ next_story_chapter() diff --git a/game/script/3.showing-up-at-band-practice-and-giving-feedback.rpy b/game/script/3.showing-up-at-band-practice-and-giving-feedback.rpy index 51a28d8..695f311 100644 --- a/game/script/3.showing-up-at-band-practice-and-giving-feedback.rpy +++ b/game/script/3.showing-up-at-band-practice-and-giving-feedback.rpy @@ -2291,4 +2291,4 @@ label chapter_3: "{cps=*.1}...{/cps}" - return + $ next_story_chapter() diff --git a/game/script/4.anon-needs-help-during-music-period.rpy b/game/script/4.anon-needs-help-during-music-period.rpy index cf2c459..a6533a1 100644 --- a/game/script/4.anon-needs-help-during-music-period.rpy +++ b/game/script/4.anon-needs-help-during-music-period.rpy @@ -1422,4 +1422,4 @@ label chapter_4: window auto pause .5 - return + $ next_story_chapter() diff --git a/game/script/5.fang-and-anon-cut-class-to-talk-on-the-roof.rpy b/game/script/5.fang-and-anon-cut-class-to-talk-on-the-roof.rpy index 3345a24..6e55222 100644 --- a/game/script/5.fang-and-anon-cut-class-to-talk-on-the-roof.rpy +++ b/game/script/5.fang-and-anon-cut-class-to-talk-on-the-roof.rpy @@ -7,6 +7,8 @@ init python: renpy.play('audio/effects/carKick2.ogg', channel='audio') # renpy.play('audio/effects/carSuspension1.ogg', channel='audio') +image fang_tail_movie = Movie(channel="movie_dp", loop=True, play="images/animations/fang tail.webm") # New way of playing movies as of Renpy 8.1 + label chapter_5: # Gardening Club @@ -551,7 +553,7 @@ label chapter_5: show anon: easein_back 0.5 xalign 0.2 - label movie: + # label movie: play sound 'audio/effects/slapstickPunch.ogg' A "FANG!" with vpunch @@ -559,7 +561,8 @@ label chapter_5: play ambient 'audio/effects/clipLoop.ogg' fadein 1 play ambient1 'audio/effects/outdoorNatureLoop.ogg' fadein 1 - scene fang tail with Dissolve(1) + # scene fang tail with Dissolve(1) + show fang_tail_movie with Dissolve(1) # change how the movie is played "Through my blurred vision I can make out Fang’s tail, slowly shifting side to side." @@ -4665,9 +4668,9 @@ label chapter_5: window auto pause 1 - return + $ next_story_chapter() # I'm guessing this is for the gallery? -label fang_movie: - scene fang tail with fade - "" +# label fang_movie: +# scene fang tail with fade +# "" diff --git a/game/script/6.anon-helps-fang-find-a-venue-for-band.rpy b/game/script/6.anon-helps-fang-find-a-venue-for-band.rpy index 74e31a7..87ccb2f 100644 --- a/game/script/6.anon-helps-fang-find-a-venue-for-band.rpy +++ b/game/script/6.anon-helps-fang-find-a-venue-for-band.rpy @@ -4677,4 +4677,4 @@ label chapter_6: window auto pause 1 - return + $ next_story_chapter() diff --git a/game/script/7.concert-day.rpy b/game/script/7.concert-day.rpy index 5d65fae..a974a75 100644 --- a/game/script/7.concert-day.rpy +++ b/game/script/7.concert-day.rpy @@ -1736,4 +1736,4 @@ label chapter_7: "{cps=*.1}...{/cps}" pause 0.5 - return + $ next_story_chapter() diff --git a/game/script/8.anon-and-fang-study-together.rpy b/game/script/8.anon-and-fang-study-together.rpy index 75c26ae..95695f0 100644 --- a/game/script/8.anon-and-fang-study-together.rpy +++ b/game/script/8.anon-and-fang-study-together.rpy @@ -622,8 +622,10 @@ label chapter_8: pause .5 python: - choices = [(_('Play The Guitar'), 'lLetFangPlayGuit'), - (_('Get to Studying'), 'lGetStartedOnStudy')] + choices = [ + (_('Play The Guitar'), 'lLetFangPlayGuit'), + (_('Get to Studying'), 'lGetStartedOnStudy')] + renpy.jump(renpy.display_menu(randomize_choices(choices))) @@ -1567,7 +1569,7 @@ label chapter_8: window hide window auto - return + $ next_story_chapter() label lGetStartedOnStudy: pause 0.5 @@ -2156,4 +2158,5 @@ label chapter_8: "{cps=*.1}...{/cps}" window hide window auto - return + + $ next_story_chapter() diff --git a/game/script/9.anons'-dirty-laundry-gets-put-up-to-air.rpy b/game/script/9.anons'-dirty-laundry-gets-put-up-to-air.rpy index 1a88615..50ba21b 100644 --- a/game/script/9.anons'-dirty-laundry-gets-put-up-to-air.rpy +++ b/game/script/9.anons'-dirty-laundry-gets-put-up-to-air.rpy @@ -1297,7 +1297,7 @@ label chapter_9: jump lGoHomeEarly label lWaitForTrishToExit: - $ anonscore += 1 + $ anonscore += 1 #play music 'audio/OST/fighter.ogg' fadein 1.0 A "You worried about her, too?" @@ -2171,4 +2171,4 @@ label chapter_9: window auto pause .5 - return + $ next_story_chapter() diff --git a/game/src/chapter_select.rpy b/game/src/chapter_select.rpy new file mode 100644 index 0000000..b1558f6 --- /dev/null +++ b/game/src/chapter_select.rpy @@ -0,0 +1,172 @@ +define chapter_tuple_1 = [ + ("1. Anon meets Fang.", "chapter_1"), + ("2. Fourth day of school.", "chapter_2"), + ("3. Showing up at band practice.", "chapter_3"), + ("4. Anon needs help during music period.", "chapter_4"), + ("5. Fang and Anon cut class to talk on the roof.", "chapter_5"), + ("6. Anon helps Fang find a venue for the band.", "chapter_6") +] + +define chapter_tuple_2 = [ + ("7. Concert day.", "chapter_7"), + ("8. Anon and Fang study together.", "chapter_8"), + ("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 = [ + ("11A. ", "chapter_11A"), + ("12A. ", "chapter_12A"), + ("12_5D. ", "chapter_12_5D"), + ("13A. ", "chapter_13A"), + ("14A. ", "chapter_14A") +] + +define ending_2_tuple = [ + ("11B. ", "chapter_11B"), + ("12B. ", "chapter_12B"), + ("13B. ", "chapter_13B"), + ("14B. ", "chapter_14B") +] + +define ending_3_tuple = [ + ("11C. ", "chapter_11C"), + ("12C. ", "chapter_12C"), + ("12_5C. ", "chapter_12_5C"), + ("13C. ", "chapter_13C"), + ("14C. ", "chapter_14C") +] + +define ending_4_tuple = [ + ("11D. ", "chapter_11D"), + ("12D. ", "chapter_12D"), + ("12_5D. ", "chapter_12_5D"), + ("13D. ", "chapter_13D"), + ("14D. ", "chapter_14D") +] + +default tuples_index = [ + ("Chapters 1 to 6", chapter_tuple_1), + ("Chapters 7 to 11", chapter_tuple_2) +] + + +init python: + + def select_chapter(): + global current_chapter, quick_menu + + 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 = { + 1: ending_1_tuple, + 2: ending_2_tuple, + 3: ending_3_tuple, + 4: ending_4_tuple + } + + if ending_number in ending_tuples: + description = f"Ending {ending_number} chapters" + tuples_index.append((description, ending_tuples[ending_number])) + + + def display_tuple_menu(options): + return renpy.display_menu(options + [("Go Back", "go_back")]) + + + def set_scores(anon_score, fang_score): + global anonscore, fangscore + + anonscore = anon_score + fangscore = fang_score + + + def find_chapter_in_array(chapter): + global chapter_list_index + + try: + chapter_list_index = chapter_list.index(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) + $ add_ending_tuple(ending_route_number) + + $ update_ending_variables() # Updates variables for newly extended 'chapter_list' with ending chapters + + window hide + + $ select_chapter() + + diff --git a/game/src/credits.rpy b/game/src/credits.rpy index c1a1825..5b897e3 100644 --- a/game/src/credits.rpy +++ b/game/src/credits.rpy @@ -241,8 +241,7 @@ image d_credits_text = Composite( label lending: - call get_ending from _call_get_ending_4 - $ cached_ending = _return + $ cached_ending = get_ending() if cached_ending == 4: pause 0.5 show snootgame_big with dissolve: # Renpy not allowing you to grab images from the gui folder is serious bullshit @@ -315,4 +314,5 @@ label lending: pause 20 scene black with Dissolve(2) pause 1 - return + + $ MainMenu(confirm=False) () # Exits to the main menu diff --git a/game/storyline.rpy b/game/storyline.rpy index e5139a7..a204465 100644 --- a/game/storyline.rpy +++ b/game/storyline.rpy @@ -10,45 +10,57 @@ init -1 python: persistent.old_endings = persistent.endings persistent.endings = endings -label storyline: - call chapter_1 from _call_chapter_1 - call chapter_2 from _call_chapter_2 - call chapter_3 from _call_chapter_3 - call chapter_4 from _call_chapter_4 - call chapter_5 from _call_chapter_5 - call chapter_6 from _call_chapter_6 - call chapter_7 from _call_chapter_7 - call chapter_8 from _call_chapter_8 - call chapter_9 from _call_chapter_9 - 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: - 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: - 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: - 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: # 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 - call chapter_13A from _call_chapter_13A - call chapter_14A from _call_chapter_14A - $ ending_image() - $ renpy.quit() - $ ending_image() - call lending from _call_lending - return \ No newline at end of file + +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") + + diff --git a/game/utility.rpy b/game/utility.rpy index 591f274..67ad7be 100644 --- a/game/utility.rpy +++ b/game/utility.rpy @@ -1,22 +1,38 @@ ## Utility functions for game setup, debugging etc. -label initstats(anon=0, fang=0): - # Sets various game-related global variables - # :param int anon: Anon's score - # :param int fang: Fang's score - # :param bool trad: Tradwife ending flag - $ anonscore = anon - $ fangscore = fang - return +init python: + def get_ending(): + if anonscore >= 4 and fangscore >= 4 and wingStory: + return 4 # Golden + elif anonscore >= 3 and fangscore <= 4: + return 3 # Tradwife + elif anonscore <= 3 and fangscore >= 3: + return 2 # Doomer + else: + return 1 # Shooter + + + def debug_story_variables(toggle=True): + var_list = [ + "anonscore", + "fangscore", + "current_chapter", + "chapter_list_length", + "chapter_list_index", + "ending_route_number", + "is_end_reached" + ] + + for item in var_list: + if toggle: + renpy.watch(item) + else: + renpy.unwatch(item) + + + def toggle_debug(): + if persistent.enable_debug_scores: + debug_story_variables(False) + debug_story_variables(True) + -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 - elif anonscore >= 3 and fangscore <=4: - return(3) # Tradwife - elif anonscore <= 3 and fangscore >=3: - return(2) # Doomer - else: - return(1) # Shooter diff --git a/renconstruct.toml b/renconstruct.toml index eefa3e7..96106cc 100644 --- a/renconstruct.toml +++ b/renconstruct.toml @@ -1,51 +1,26 @@ -[tasks.clean] - enabled = false - priorities = { post_build = 0 } # the priority that determines the orders tasks will run in, defaults to 0 - on_builds = ["pc", "win", "linux", "mac", "web", "steam", "market", "android_apk", "android_aab"] # builds this task should run for, defaults to all available builds - -[tasks.notarize] # required if matching task is enabled - enabled = false - priorities = { post_build = 10 } # the priority that determines the orders tasks will run in, defaults to 10 - on_builds = ["mac"] # builds this task should run for, defaults to "mac" - bundle_identifier = "com.my-game" # the bundle ID of your came, typically in reverse domain notation - key_file = "certificates/private-key.pem" # the path to the private key file generated during the provisioning process - cert_file = "certificates/developerID_application.cer" # the path to the Apple-generated certificate file generated during the provisioning process - app_store_key_file = "certificates/app-store-key.json" # the path to the combined App Store key file generated during the provisioning process - json_bundle_file = "certificates/renotize.json" # the path to the combined certificate file. replaces the key, cert and app store files above - [tasks.keystore] # required if matching task is enabled - enabled = false + type="keystore" + enabled = true priorities = { pre_build = 0 } # the priority that determines the orders tasks will run in, defaults to 0 on_builds = ["android_apk", "android_aab"] # builds this task should run for, defaults to all android builds - keystore_apk = "" # the base-64 encoded binary keystore file for the APK bundles - keystore_aab = "" # the base-64 encoded binary keystore file for the AAB bundles + keystore_apk = "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" # the base-64 encoded binary keystore file for the APK bundles + keystore_aab = "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" # the base-64 encoded binary keystore file for the AAB bundles -[tasks.convert_images] - enabled = false - format = "webp" # webp or avif - priorities = { pre_build = 10 } # the priority that determines the orders tasks will run in, defaults to 10 - on_builds = ["pc", "win", "linux", "mac", "web", "steam", "market", "android_apk", "android_aab"] # builds this task should run for, defaults to all available builds - # extensions: a list of file extensions to convert - # recursive: scans directories recursively if enabled, otherwise only scans the immediate directory - # lossless: converts to lossless WebP if enabled, otherwise converts to lossy WebP - "game/images/cg" = { extensions = ["png", "jpg"], recursive = true, lossless = true } # default values - "game/images/bg" = { lossless = false } - "game/images" = { } # all parameters are optional [build] # required, at least one item must be 'true' - #pc = true # windows + linux + # pc = true # windows + linux win = true # windows linux = true # linux mac = true # macos - #web = false # web - #steam = true # steam - #market = true # multiple markets (i.e. itch.io) + # web = false # web + # steam = false # steam + # market = false # multiple markets (i.e. itch.io) android_apk = true # Android Universal APK - #android_aab = false # Android Play Store Bundle + # android_aab = false # Android Play Store Bundle [options] clear_output_dir = false # whether to clear the output directory on startup [renutil] - version = "8.0.3" # the Ren'Py version to use (required) - registry = "tmp/cache" # the directory to store installation files in + version = "8.3.0" # the Ren'Py version to use (required) + registry = "/tmp/cache" # the directory to store installation files in