Compare commits
15 Commits
pt_br
...
Patch12.1-
| Author | SHA1 | Date | |
|---|---|---|---|
| 37dcffc4cb | |||
| adc196f59b | |||
| b5727e6efd | |||
| 29f32fec37 | |||
| 7a82219d88 | |||
| 67e8afb8fe | |||
| 16a3adf0a8 | |||
| 41a894b846 | |||
| b2ad694517 | |||
| e3263a868e | |||
| 26f82c3819 | |||
| 1ffc8a9168 | |||
| 8e9d5c3166 | |||
| 6c92aea438 | |||
| 2a275c2468 |
@@ -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 |
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 let’s go of my sweaty hands. She doesn’t 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 Fang’s eyes."
|
||||
window hide
|
||||
window auto
|
||||
|
||||
$ renpy.music.set_volume(1.0, 0.5, 'sound')
|
||||
pause .5
|
||||
|
||||
label musicalchoices:
|
||||
|
||||
@@ -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?"
|
||||
|
||||
|
||||
@@ -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()
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user