Compare commits

...

15 Commits

Author SHA1 Message Date
Map
37dcffc4cb update renpy to 8.3.4 2024-12-30 19:18:19 -06:00
Map
adc196f59b backport wani fixes relating to the mod loader:
-Fix mods sometimes having a None variable as their state
-Fix mods already in load order not updating to reflect if there's no loadable scripts
-Fix mods without scripts being turned off when using DISABLEALLMODS file flag
2024-12-18 20:14:08 -06:00
Map
b5727e6efd Revert "remove credits for unused promo art (confirmation that our team member is GAY)" because we're epic like that
This reverts commit 29f32fec37.
2024-12-04 20:09:44 -06:00
Map
29f32fec37 remove credits for unused promo art (confirmation that our team member is GAY)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-04 19:35:47 -06:00
Map
7a82219d88 fix the rest of the mod menu not having button sounds
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
ci/woodpecker/release/woodpecker Pipeline was successful
2024-12-03 19:55:52 -06:00
Map
67e8afb8fe update to renpy 8.3.3 (tested somewhat, it's just a bugfixing update)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-03 19:09:51 -06:00
Map
16a3adf0a8 fix mod return button not playing a sound 2024-12-03 19:00:36 -06:00
Map
41a894b846 Merge branch 'ch8_guitar_improvement'
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-03 17:11:04 -06:00
Map
b2ad694517 reset audio levels on chapter select 2024-12-03 17:10:36 -06:00
Map
e3263a868e tweak guitar sounds to be more pleasant 2024-12-03 17:06:22 -06:00
Map
26f82c3819 Merge branch 'pt_br'
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-12-03 13:40:31 -06:00
Map
1ffc8a9168 Merge branch 'master' of https://git.cavemanon.xyz/Cavemanon/SnootGame
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
2024-12-01 16:25:20 -06:00
Map
8e9d5c3166 fix fang's bedroom base image having the text still on 2024-12-01 16:25:16 -06:00
6c92aea438 Merge pull request 'Fix reload mods button' (#257) from ModsButton into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #257
Reviewed-by: Mappening <mapanon@noreply.git.cavemanon.xyz>
2024-11-02 00:37:53 +00:00
2a275c2468 Fix reload mods button
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-10-31 20:36:31 -03:00
8 changed files with 81 additions and 42 deletions

View File

@@ -83,6 +83,6 @@ steps:
matrix:
RenpyVersion:
- "8.3.2"
- "8.3.4"
RenkitVersion:
- "4.4.0"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 307 KiB

After

Width:  |  Height:  |  Size: 298 KiB

View File

@@ -1,12 +1,12 @@
--- MOD LOADER USAGE ---
If there's problems with installed mods - like if an enabled mod makes the game crash on startup - there's 3 file flags you can apply to work around it, checked only in the root of the mods folder:
- Any file starting with "DISABLEALLMODS". This will force disable all currently installed mods, but will still load all their metadata. Removing this flag will return the mod states to how it was previously.
- Any file starting with "NOLOADORDER". This will erase the load order/states and always load mods in folder alphabetical order, with mod states depending on the "Enable New Mods" option in the preferences menu.
- Any file starting with "NOMODS". This turns off mod loading entirely by making the game not find any metadata files to load.
If there's problems with installed mods - like if an enabled mod makes the game crash on startup - there's 3 file flags you can apply to work around it, checked only in the root of the mods folder. They will be any file starting with:
- "DISABLEALLMODS". This will force disable all currently installed mods, but will still load all their metadata. This doesn't change the saved states of your mods, so you can still enable/disable them while this flag is active.
- "NOLOADORDER". This will erase the load order/states and always load mods in folder alphabetical order, with mod states depending on the "Enable New Mods" option in the preferences menu.
- "NOMODS". This turns off mod loading entirely by making the game not find any metadata files to load.
These file flags already exist in the mods folder, but renamed to not trigger in-game. Enable them by renaming the file to take off the first hyphen.
When ordering the mods in the mod menu, know that not all mod code will be loaded according to the order. Ren'Py has a feature called 'init' that will run code at certain mod-defined stages (priorities) of the engine starting up, so if one mod's init block is set to run at an earlier priority than another mod's, it doesn't what order it is in the mod loader, it will always load that init first. The only time when the order comes into effect is if 2 mod's init blocks run at the same priority, or aren't running in an init block.
When ordering the mods in the mod menu, know that not all mod code will be loaded according to the order. Ren'Py has a feature called 'init' that will run code at certain mod-defined stages (priorities) of the engine starting up, so if one mod's init block is set to run at an earlier priority than another mod's, it doesn't matter what order it is in the mod loader, it will always load that init first. The only time when the order comes into effect is if two mod's init blocks run at the same priority, or aren't running in an init block.
--- MOD CREATION PRE-REQUSITES ---
@@ -57,11 +57,11 @@ Below is all the possible entries you can put in, and explanations for what they
"Display" : How your mod button appears if there's an icon image detected. This can be set to "name" - which only displays the mod name - "icon" - which only displays the icon, taking up the entire button - or "both" - which displays the name and icon together, with the icon miniaturized and to the side of the name. This defaults to "both" if it doesn't exist, and if an icon image is not present, it will fall back to "name" mode.
"Thumbnail Displayable" : What displayable to use for the thumbnail when the mod has loaded scripts. If this doesn't exist, the game will use the thumbnail image found alongside your metadata file
"Thumbnail Displayable" : What displayable to use for the thumbnail when the mod is enabled. If this doesn't exist, the game will use the thumbnail image found alongside your metadata file
"Icon Displayable" : What displayable to use for the icon when the mod has loaded scripts. If this doesn't exist, the game will use the icon image found alongside your metadata file
"Icon Displayable" : What displayable to use for the icon when the mod is enabled. If this doesn't exist, the game will use the icon image found alongside your metadata file
"Screenshot Displayables" : What displayables to use for screenshots when the mod has loaded scripts. This should be a list of strings. The game will choose each displayable in the list over images found alongside the metadata file sequentially, so if there's 5 screenshot images and 3 screenshot displayables, the last 2 will still display the screenshot images, and the first 3 will display the screenshot displayables. If there's more displayables than images, then the mod will appear to gain screenshots in the mod details pane when the mod is enabled. If you enter empty strings in the list ( "" ), the game will interpret that as a deliberate skipping over to load screenshot images instead of displayables, so if your list consists of '[ "", "my_displayable" ]' and there's any number of screenshot images found, the first screenshot will still show a screenshot image, and only the next one will show a displayable. If this entry doesn't exist, it will just use the screenshot images found alongside your metadata file.
"Screenshot Displayables" : What displayables to use for screenshots when the mod is enabled. This should be a list of strings. The game will choose each displayable in the list over images found alongside the metadata file sequentially, so if there's 5 screenshot images and 3 screenshot displayables, the last 2 will still display the screenshot images, and the first 3 will display the screenshot displayables. If there's more displayables than images, then the mod will appear to gain screenshots in the mod details pane when the mod is enabled. If you enter empty strings in the list ( "" ), the game will interpret that as a deliberate skipping over to load screenshot images instead of displayables, so if your list consists of '[ "", "my_displayable" ]' and there's any number of screenshot images found, the first screenshot will still show a screenshot image, and only the next one will show a displayable. If this entry doesn't exist, it will just use the screenshot images found alongside your metadata file.
In the same directory as your metadata file, there's image files you can put in the to make your mod more appealing. These can be any of Ren'Py's supported image file types, so the file extension here is just for demonstration:

View File

@@ -161,7 +161,7 @@ default persistent.show_mod_screenshots = True
default persistent.gallery_edgescroll = True
default persistent.scroll = False
init -999 python:
init -1000 python:
if persistent.newmods_default_state == None:
persistent.newmods_default_state = False

View File

@@ -718,7 +718,7 @@ label chapter_8:
pause .5
"{cps=*0.5}AAAAAAAAAAAAAAAA{/cps}"
play music 'audio/OST/Dragging on and on....ogg' fadein 1.0
play music 'audio/OST/Dragging on and on....ogg' fadein 1.0 volume 0.5
pause .5
F "Anon, are you paying attention?"
@@ -732,15 +732,31 @@ label chapter_8:
pause .5
F "Alright, try these chords."
play sound 'audio/effects/goodA.ogg' fadein 0.5
# Renpy's audio is rarted, do this workaround instead
$ renpy.music.set_volume(1.0, 0.0, 'sound')
play sound 'audio/effects/goodA.ogg'
$ renpy.music.set_volume(0.0, 1.5, 'sound')
pause 0.25
"Her fingers press mine down, holding down the strings in an awkward position."
F "Then this."
play sound 'audio/effects/goodB.ogg' fadein 0.5
$ renpy.music.set_volume(1.0, 0.0, 'sound')
play sound 'audio/effects/goodB.ogg'
$ renpy.music.set_volume(0.0, 1.5, 'sound')
pause 0.25
"My hands are slid down closer to the base of the neck and too close to my crotch."
F "And then finally this."
play sound 'audio/effects/goodC.ogg' fadein 0.5
$ renpy.music.set_volume(1.0, 0.0, 'sound')
play sound 'audio/effects/goodC.ogg'
$ renpy.music.set_volume(0.0, 1.5, 'sound')
pause 0.25
"My fingers are shifted back up to the middle of the fretboard."
F "Try that out, Anon."
@@ -749,14 +765,25 @@ label chapter_8:
"Fang lets go of my sweaty hands. She doesnt move from behind me though."
"I try and replicate the movements."
pause .5
play sound 'audio/effects/goodA.ogg' fadein 0.5
$ renpy.music.set_volume(1.0, 0.0, 'sound')
play sound 'audio/effects/goodA.ogg'
$ renpy.music.set_volume(0.0, 1.5, 'sound')
pause 0.25
"The first strum sounds… not bad…"
play sound 'audio/effects/badA.ogg' fadein 0.5
$ renpy.music.set_volume(1.0, 0.0, 'sound')
play sound 'audio/effects/badA.ogg'
$ renpy.music.set_volume(0.0, 1.5, 'sound')
pause 0.25
"The second note is horrendous. I blame my pants."
play sound 'audio/effects/goodC.ogg' fadein 0.5
$ renpy.music.set_volume(1.0, 0.0, 'sound')
play sound 'audio/effects/goodC.ogg'
$ renpy.music.set_volume(0.0, 1.5, 'sound')
pause 0.25
"And the last chord comes out alrightish."
pause .5
@@ -792,6 +819,8 @@ label chapter_8:
"My pinky slides off the fretboard and when I strum again a strange look appears in Fangs eyes."
window hide
window auto
$ renpy.music.set_volume(1.0, 0.5, 'sound')
pause .5
label musicalchoices:

View File

@@ -77,6 +77,15 @@ label chapter_select_go_back:
ending_chapters_determined = False
current_chapter = chapter_list[chapter_list_index]
renpy.music.set_volume(1.0, 0.0, 'sound')
renpy.music.set_volume(1.0, 0.0, 'music')
renpy.music.set_volume(1.0, 0.0, 'music1')
renpy.music.set_volume(1.0, 0.0, 'music2')
renpy.music.set_volume(1.0, 0.0, 'ambient')
renpy.music.set_volume(1.0, 0.0, 'ambient1')
renpy.music.set_volume(1.0, 0.0, 'ambient2')
renpy.music.set_volume(1.0, 0.0, 'ambient3')
menu:
"What ending do you want to lock to?"

View File

@@ -538,7 +538,11 @@ init -999 python:
for saved_mod_id, saved_mod_state in persistent.enabled_mods:
for mod in mod_menu_metadata:
if mod["ID"] == saved_mod_id:
mod["Enabled"] = saved_mod_state
# If this mod doesn't have any loadable scripts, treat it as on (Say, if a mod changed something in the base game and the label points there)
if not mod["Scripts"]:
mod["Enabled"] = True
else:
mod["Enabled"] = saved_mod_state
temp_list.append(mod)
break
@@ -549,7 +553,7 @@ init -999 python:
if mod["ID"] == saved_mod_id[0]:
mod_not_found = False
if mod_not_found:
# If this mod doesn't have any loadable scripts, treat it as on (Say, if a mod changed something in the base game and the label points there)
# Treat the mod as on if there's no scripts here too
if not mod["Scripts"]:
mod["Enabled"] = True
# Otherwise set mods to the default state
@@ -559,17 +563,17 @@ init -999 python:
mod_menu_metadata = temp_list
# Rewrite enabled_mods to reflect the new mod order, and load all the mods
# Rewrite enabled_mods to reflect the new mod order, and load all the mod scripts
persistent.enabled_mods.clear()
for mod in mod_menu_metadata:
persistent.enabled_mods.append( [ mod["ID"], mod["Enabled"] ] )
# Making the load_mods check here makes it so the NOLOAD flag doesn't overwrite the previously saved load order
# Making the load_mods check here makes it so the DISABLEALLMODS flag doesn't overwrite the previously saved load order
if load_mods and mod["Enabled"]:
for script in mod["Scripts"]:
renpy.include_module(script)
else:
elif mod["Scripts"]:
mod["Enabled"] = False
# Now convert our errorcodes to errorstrings
@@ -690,7 +694,6 @@ screen mod_menu():
$ main_menu_button_img = "gui/button/menubuttons/template_idle_epilogue.png" if persistent.use_epilogue_menu else "gui/button/menubuttons/template_idle.png"
default mod_metadata = {}
default reload_game = False
default mod_button_enabled = True
default mod_button_alpha = 1.0
default mod_screenshot_list = None
@@ -705,14 +708,7 @@ screen mod_menu():
spacing 8
use mod_menu_top_buttons(main_menu_button_img, _("Reload Mods"), SetScreenVariable("reload_game", True)):
# For some reason, Function() will instantly reload the game upon entering the mod menu, and put it in an infinite loop, so doing this python jank
# is the only way
if reload_game:
python:
reload_game = False
persistent.reloading_mods = True
renpy.reload_script()
use mod_menu_top_buttons(main_menu_button_img, _("Reload Mods"), Function(reload_game))
use mod_menu_top_buttons(main_menu_button_img, _("Return"), ShowMenu("extras"))
viewport:
@@ -752,7 +748,7 @@ screen mod_menu():
style_prefix "main_menu"
add Null(30,30)
activate_sound "audio/ui/snd_ui_click.wav"
activate_sound "audio/ui/uiClick.wav"
if persistent.use_epilogue_menu:
idle_foreground Transform("gui/button/menubuttons/up.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#000000"))
@@ -779,7 +775,7 @@ screen mod_menu():
if x["Scripts"]:
action Function(toggle_persistent_mods, i)
activate_sound "audio/ui/snd_ui_click.wav"
activate_sound "audio/ui/uiClick.wav"
if persistent.enabled_mods[i][1]:
idle_foreground Transform("gui/button/menubuttons/check.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#00ff40"))
hover_foreground Transform("gui/button/menubuttons/check.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#ffffff"))
@@ -795,7 +791,7 @@ screen mod_menu():
style_prefix "main_menu"
add Null(30,30)
action Function(swapMods, i, i+1)
activate_sound "audio/ui/snd_ui_click.wav"
activate_sound "audio/ui/uiClick.wav"
if persistent.use_epilogue_menu:
idle_foreground Transform("gui/button/menubuttons/down.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#000000"))
@@ -822,7 +818,7 @@ screen mod_menu():
at transform:
truecenter
alpha mod_button_alpha
activate_sound "audio/ui/snd_ui_click.wav"
activate_sound "audio/ui/uiClick.wav"
hovered SetScreenVariable("mod_metadata", x)
# Clicking the mod button starts the mod on PC, but we have to click a seperate button to start on Android.
@@ -872,7 +868,7 @@ screen mod_menu():
ysize 160
button:
at truecenter
activate_sound "audio/ui/snd_ui_click.wav"
activate_sound "audio/ui/uiClick.wav"
action Start(x["Label"])
frame:
@@ -1041,7 +1037,7 @@ screen mod_menu():
text _("Show Errors") xalign 0.5 yalign 0.5 size 50 outlines [ (absolute(1), "#000", absolute(0), absolute(0)) ]
action SetScreenVariable("mod_metadata", {})
activate_sound "audio/ui/snd_ui_click.wav"
activate_sound "audio/ui/uiClick.wav"
if mod_metadata.get("Label") != None:
$ mod_button_alpha = 1.0 if mod_metadata["Enabled"] == True else 0.4 # Fade mod button out if mod is disabled
@@ -1059,7 +1055,7 @@ screen mod_menu():
text _("Start") xalign 0.5 yalign 0.5 size 50 outlines [ (absolute(1), "#000", absolute(0), absolute(0)) ]
action Start(mod_metadata["Label"])
activate_sound "audio/ui/snd_ui_click.wav"
activate_sound "audio/ui/uiClick.wav"
if not persistent.seenModWarning:
@@ -1090,6 +1086,11 @@ screen mod_menu_top_buttons(image, text, action):
text text xalign 0.5 yalign 0.5 size 34
action action
activate_sound "audio/ui/snd_ui_click.wav"
activate_sound "audio/ui/uiClick.wav"
transclude
transclude
init python:
def reload_game():
persistent.reloading_mods = True
renpy.reload_script()

View File

@@ -22,5 +22,5 @@
clear_output_dir = false # whether to clear the output directory on startup
[renutil]
version = "8.3.2" # the Ren'Py version to use (required)
version = "8.3.4" # the Ren'Py version to use (required)
registry = "/tmp/cache" # the directory to store installation files in