Compare commits

...

26 Commits

Author SHA1 Message Date
6377fffba0 Remove renconstruct from build
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
ci/woodpecker/pr/woodpecker Pipeline is pending
ci/woodpecker/pull_request_closed/woodpecker Pipeline is pending
2024-10-11 15:45:32 -05:00
b16bd97d33 Debloated builds and include renconstruct
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
ci/woodpecker/pr/woodpecker Pipeline is pending
An option in the options.rpy made it so renconstruct.toml wasn't shipped
with the game AND the lack of an option made the game compile with the
dist/ folder being exported, meaning that the game would ship with an
android build unnecessarily.

Fixes: #239
Fixes: #240
2024-10-11 15:03:13 -05:00
Map
6cea8fa94b add additional promo art credit 2024-10-10 14:40:02 -05:00
Map
1fad3b0b62 Update italian and spanish strings 2024-10-10 11:17:22 -05:00
Map
fc537fecc7 undo checking for conflicting properties (as it turns out enforcing cleaner code is inconvenient (especially if it's over something that doesn't show issues in the first place)) 2024-10-08 18:18:20 -05:00
Map
f3bb2caa7f put backspace functionality into the help menu 2024-10-08 13:17:03 -05:00
Map
3bf7e9e433 up the default volume slider 2024-10-07 20:59:14 -05:00
Map
d581c7884c makes the scroll toggle a little smarter 2024-10-07 20:15:57 -05:00
Map
3d51bae4a6 remove comment that no longer applies in mod menu 2024-10-07 20:14:54 -05:00
Map
5d44682f49 fix android mod buttons 2024-10-07 18:14:12 -05:00
Map
033175500c Fix mods without defined names not being assigned their folder name
Remove checks for the 'None' language as the user will never be assigned to it
Some comment typo fixes
Make reloading mods not play the splash screen
Pressing backspace will now hide the mod details pane, and shoe mod errors if there's any
Attempt at making a button for android to hide the details pane.
2024-10-07 17:10:10 -05:00
Map
2c2899e734 Turn on check conflicting properties (trolling modders one config var at a time) 2024-10-07 04:02:06 -05:00
Map
301035bad1 Fix some lint errors 2024-10-07 03:57:39 -05:00
Map
e06db742e2 Merge branch 'master' of https://git.cavemanon.xyz/Cavemanon/SnootGame 2024-10-07 03:07:10 -05:00
Map
610737fddf remove redundant imports for rounded corners 2024-10-07 03:07:03 -05:00
Map
e41d42d4e7 tweak rounded corners of mod icons 2024-10-07 03:06:54 -05:00
Map
7873a882a8 Add note about icon in mod README 2024-10-07 02:50:02 -05:00
Map
c045fcff26 nudge "no mods!" message down a bit 2024-10-07 02:49:53 -05:00
Map
81c646e81b remove unused gui images 2024-10-07 00:56:36 -05:00
Map
7612935547 turn on linear fades to prevent mixing from getting out of wack
and fucking fix those volume defaults once and for all
2024-10-07 00:51:56 -05:00
201cd61f63 Merge pull request 'Spanish Translation for new stuf' (#251) from Espaniolo into master
Reviewed-on: #251
2024-10-07 05:31:53 +00:00
Map
934a0dc72a change languaged_up to be set inside the lang_sel screen 2024-10-07 00:30:08 -05:00
Map
ca7406d0d9 Add pre-splash 2024-10-07 00:08:51 -05:00
Map
79ac93e6fd Turn on deferred languages 2024-10-06 23:23:58 -05:00
Map
019d5f4f44 Fixed language setup screen 2024-10-06 23:22:25 -05:00
Map
64b566d66b Set volume slider default 2024-10-06 23:15:57 -05:00
29 changed files with 540 additions and 225 deletions

View File

@ -105,7 +105,6 @@ define gui.main_menu_text_size = 60
## The images used for the main and game menus.
define gui.main_menu_background = "gui/main_menu.png"
define gui.game_menu_background = "gui/game_menu.png"
define gui.extras_submenu_background = "gui/overlay/extras_submenu.png"
define gui.extras_submenu_panel = "gui/overlay/extras_submenu_panel.png"
## Dialogue ####################################################################

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -66,7 +66,7 @@ Below is all the possible entries you can put in, and explanations for what they
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:
-'thumbnail.png' will appear as a banner for your mod, at the top of the mod details pane
-'icon.png' will show a small image next your mod name or take up the entire button depending on what your "Display" entry is set to.
-'icon.png' will show a small image next your mod name or take up the entire button depending on what your "Display" entry is set to. NOTE: Putting in an image too big in dimensions will crash the game.
-'screenshot(number).png' will show screenshots at the bottom of the mod details pane. The '(number)' is a placeholder for a number that represents what order your screenshots appear in. For example, you can have 'screenshot1.png', 'screenshot2.png', and 'screenshot3.png' in your mod directory, and they will all appear in the mod details pane in order. These numbers don't need to be strictly sequential, they can be any number as long as they are integers, and the order will be derived from ASCII ordering.
As the game loads the metadata, it will also collect scripts for loading. When you make your mod scripts, ALL OF THEM NEED TO HAVE .rpym EXTENSIONS. This is important for being able to control mods with the mod loader, otherwise there would be mod conflicts galore. If you use .rpy extensions to make your mod scripts, they will work, but they will not be manageable by the mod loader. This means you should only use them for development, or if you're not using the mod loader anyway - such as adding a translation to the base game.

View File

@ -133,6 +133,21 @@ default preferences.text_cps = 50
default preferences.afm_time = 15
## Disables loading all languages at once at startup, only loading a language when selecting a language
define config.defer_tl_scripts = True
## Retains linear audio fading so mixing doesn't get fucked from the update to 8.2+
define config.linear_fades = True
## The variable used for making the splashscreen not show when reloading a mod
default persistent.reloading_mods = False
## Snoot-specific config variables
define config.developer = "auto"
@ -144,21 +159,21 @@ default persistent.lewd = False
default persistent.autoup = False
default persistent.show_mod_screenshots = True
default persistent.gallery_edgescroll = True
default persistent.scroll = False
init -1000 python:
init -999 python:
if persistent.newmods_default_state == None:
persistent.newmods_default_state = True
persistent.newmods_default_state = False
init python:
# No idea what this does
# Makes going forward on the scroll wheel advance dialogue, rather than just seen dialogue
if persistent.scroll == True:
config.keymap['dismiss'].append('mousedown_4')
elif persistent.scroll == None:
persistent.scroll = False
##Default Audio is not ear rape
define config.default_music_volume = 0.48
define config.default_sfx_volume = 0.80
define config.default_music_volume = 0.61
define config.default_sfx_volume = 0.8
define config.default_voice_volume = 0.8
## Save directory ##############################################################
##
@ -221,6 +236,7 @@ init python:
build.classify('README.md', None)
build.classify('renconstruct.toml', None)
build.classify('dist/', None)
build.classify('bundle.keystore', None)
build.classify('android.keystore', None)
build.classify('bundle.keystore.original', None)

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -904,12 +904,6 @@ screen preferences():
textbutton _("Enable Debug Scores") action ToggleVariable("persistent.enable_debug_scores", True, False)
textbutton _("Enable Chapter Select") action ToggleVariable("persistent.enable_chapter_select", True, False)
vbox:
style_prefix "check"
label _("Mods")
textbutton _("Show Mod Screenshots") action [Function(onclick_audio, persistent.show_mod_screenshots), ToggleVariable("persistent.show_mod_screenshots", True, False)]
textbutton _("Enable New Mods") action [Function(onclick_audio, persistent.newmods_default_state), ToggleVariable("persistent.newmods_default_state", True, False)]
if not main_menu:
if config.developer and persistent.enable_debug_scores:
$ debug_story_variables(False)
@ -917,6 +911,12 @@ screen preferences():
else:
$ debug_story_variables(False)
vbox:
style_prefix "check"
label _("Mods")
textbutton _("Show Mod Screenshots") action [Function(onclick_audio, persistent.show_mod_screenshots), ToggleVariable("persistent.show_mod_screenshots", True, False)]
textbutton _("Enable New Mods") action [Function(onclick_audio, persistent.newmods_default_state), ToggleVariable("persistent.newmods_default_state", True, False)]
if renpy.variant(["mobile", "steam_deck"]):
vbox:
style_prefix "check"
@ -975,7 +975,7 @@ screen preferences():
hbox:
bar value Preference("music volume") yalign 0.5
textbutton _("Reset"):
action Function(preferences.set_volume, 'music', config.default_music_volume)
action Function(preferences.set_mixer, 'music', config.default_music_volume)
if config.has_sound:
@ -983,7 +983,7 @@ screen preferences():
hbox:
bar value Preference("sfx volume") yalign 0.5
textbutton _("Reset"):
action Function(preferences.set_volume, 'sfx', config.default_sfx_volume)
action Function(preferences.set_mixer, 'sfx', config.default_sfx_volume)
if config.sample_sound:
textbutton _("Test") action Play("sound", config.sample_sound)
@ -992,7 +992,7 @@ screen preferences():
bar value Preference("ui volume") yalign 0.5
textbutton _("Reset"):
yalign 0.5
action Function(preferences.set_volume, 'ui', config.default_sfx_volume)
action Function(preferences.set_mixer, 'ui', config.default_sfx_volume)
if config.has_voice:
label _("Voice Volume")
@ -1000,7 +1000,7 @@ screen preferences():
bar value Preference("voice volume") yalign 0.5
textbutton _("Reset"):
yalign 0.5
action Function(preferences.set_volume, 'voice', config.default_sfx_volume)
action Function(preferences.set_mixer, 'voice', config.default_voice_volume)
if config.sample_voice:
textbutton _("Test") action Play("voice", config.sample_voice)
@ -1301,6 +1301,10 @@ screen keyboard_help():
label _("Page Down")
text _("Rolls forward to later dialogue.")
hbox:
label _("Backspace")
text _("Hides mod details. Shows mod errors if there is any.")
hbox:
label "H"
text _("Hides the user interface.")

View File

@ -57,12 +57,14 @@ label before_main_menu:
if preferences.language == None:
$ preferences.language = 'en'
# Call initial language setup screen
if (persistent.languaged_up is None):
$ preferences.set_volume('ui', config.default_sfx_volume)
$ persistent.languaged_up = True
call screen lang_sel
# Setting this here means we're past reloading scripts, therefore we're not reloading mods
$ persistent.reloading_mods = False
# Call initial language setup screen
# languaged_up is set within lang_sel
if (persistent.languaged_up is None):
$ preferences.set_mixer("ui", config.default_sfx_volume)
call screen lang_sel
return
label start:

View File

@ -125,6 +125,9 @@ init 999 python:
_('Asset help (Italian):'): [
'Dsatta',
],
_('Promo Art (Italian):'): [
'Kaprakaz',
]
}
textlist = []
@ -233,7 +236,7 @@ label test_credits:
init python:
# Note: Measuring in pixels
panning_stop = 12700 # How far the panning will go down
panning_stop = 13290 # How far the panning will go down
panning_stop_bg = 8100 # How far the background images will pan, to create the parallax effect (I can't believe cuckedmanon didn't like this!)
panning_duration = 65 # How long in seconds
credits_img_offset = panning_stop + 550 # Distance away from panning_stop where the image will render

View File

@ -62,7 +62,7 @@
# etc...
# }
#
# Note that some keys may exist, but simple be 'None', likely as a result of improperly filled out metadata files.
# Note that some keys may exist, but end up as 'None', likely as a result of improperly filled out metadata files.
init -999 python:
@ -145,7 +145,7 @@ init -999 python:
destination_dict[key] = source_dict[key]
del source_dict[key]
# Checks to see if the key in the metadata dict exists/is correct, and tries to set a default if it isn't.
# Checks to see if the key in the metadata dict exists/is correct.
# For keys that are set to None, it will be treated as if it doesn't exist
def value_isnt_valid_string(metadata, key):
return metadata.get(key) != None and not isinstance(metadata.get(key), str)
@ -196,7 +196,7 @@ init -999 python:
mod_jsonfail_list = [] # List of languages that has an associated metadata language file that failed to load.
mod_preferred_modname = []
mod_exception = False
mod_in_root_folder = file.count("/", len(mods_dir)) is 0
mod_in_root_folder = file.count("/", len(mods_dir)) == 0
mod_folder_name = file.split("/")[-2]
# mod_name is used only to display debugging information via mod_menu_errorcodes. Contains the mod folder name and whatever translations of
# the mod's name that exist. Kind of a cursed implemnetation but with how early error reporting this is before solidifying the mod name
@ -288,7 +288,7 @@ init -999 python:
# Since lang keys will only be added to the mod data dict if their respective metadata successfully loaded, no need to check if they can.
for lang_key in mod_data_final.keys():
if lang_key is "None" or lang_key in renpy.known_languages():
if lang_key == "None" or lang_key in renpy.known_languages():
lang_data = mod_data_final[lang_key]
# The JSON object returns an actual python list, but renpy only works with it's own list object and the automation for this fails with JSON.
@ -298,7 +298,7 @@ init -999 python:
lang_data[x] = renpy.revertable.RevertableList(lang_data[x])
# Automatically give the name of the mod from the folder it's using if there's no defined name, but report an error if one is defined but not a string
if value_isnt_valid_string(lang_data, "Name"):
if not isinstance(lang_data.get("Name"), str):
if lang_data.get("Name") != None:
mod_menu_errorcodes.append([ ModError.Name_Not_String, { "mod_name": mod_name, "lang_code": lang_key }])
@ -502,7 +502,7 @@ init -999 python:
# Make a copy of the current screenshots list, then put displayable screenshots wherever the values of "Screenshot Displayables" correspond in this list
# mod_screenshots will return an empty list if there were no screenshot files to begin with, so this works fine.
for lang_key in mod_data_final.keys():
if lang_key is "None" or lang_key in renpy.known_languages():
if lang_key == "None" or lang_key in renpy.known_languages():
if mod_data_final[lang_key].get("Screenshots") == None:
mod_screenshots = []
else:
@ -575,10 +575,10 @@ init -999 python:
# Now convert our errorcodes to errorstrings
init python:
def return_translated_mod_name(mod_dict):
if _preferences.language == None and "None" in mod_dict.keys():
return "'{color=#ffbdbd}" + mod_dict["None"] + "{/color}'"
elif _preferences.language in mod_dict.keys():
if _preferences.language in mod_dict.keys():
return "'{color=#ffbdbd}" + mod_dict[_preferences.language] + "{/color}'"
elif "None" in mod_dict.keys():
return "'{color=#ffbdbd}" + mod_dict["None"] + "{/color}'"
else:
if mod_dict["Folder"] == None:
return __("the root of the mods folder")
@ -670,7 +670,7 @@ init python:
# All operations that use this function need to be able to parse "None" as a safeguard.
def return_translated_metadata(mod_metadata, key):
if _preferences.language != None and _preferences.language in mod_metadata.keys() and mod_metadata[_preferences.language].get(key) != None:
if _preferences.language in mod_metadata.keys() and mod_metadata[_preferences.language].get(key) != None:
return mod_metadata[_preferences.language][key]
elif "None" in mod_metadata.keys():
return mod_metadata["None"].get(key)
@ -711,6 +711,7 @@ screen mod_menu():
if reload_game:
python:
reload_game = False
persistent.reloading_mods = True
renpy.reload_script()
use mod_menu_top_buttons(main_menu_button_img, _("Return"), ShowMenu("extras"))
@ -842,7 +843,7 @@ screen mod_menu():
# Display mod name and/or icon
if return_translated_metadata(x, "Display") == "icon" and mod_icon != None:
add RoundedCorners(mod_icon, radius=(5, 5, 5, 5)) xsize 342 fit "scale-down" at truecenter
add RoundedCorners(mod_icon, radius=(15, 15, 15, 15)) xsize 462 yoffset -1 xoffset 1 fit "scale-down" at truecenter
elif return_translated_metadata(x, "Display") == "both" or return_translated_metadata(x, "Display") == None and mod_icon != None:
hbox:
spacing 20
@ -883,7 +884,7 @@ screen mod_menu():
else:
fixed:
ymaximum 600 # This is the stupidest fucking hack fix
ymaximum 750 # This is the stupidest fucking hack fix
text _("You have no mods! \nInstall some in:\n\"{color=#abd7ff}[mod_menu_moddir]{/color}\""):
style_prefix "navigation"
@ -892,170 +893,174 @@ screen mod_menu():
xalign 0.5 yalign 0.5
outlines [(3, "#342F6C", absolute(0), absolute(0))]
# Clears the mod details pane, consequently bringing up mod errors if there's any
key ["any_K_BACKSPACE"] action SetScreenVariable("mod_metadata", {})
# Displays the mod metadata on the left side
# This has two seperate viewports for error display because renpy is retarded
if mod_metadata != {}:
# Mod play button for android
# I'm too fuckin tired to make this not shit and just put this and the viewport into a vbox, forgive me
$ mod_has_label_android = renpy.variant(["mobile", "steam_deck"]) and mod_metadata.get("Label") != None
if mod_has_label_android:
$ mod_button_alpha = 1.0 if mod_metadata["Enabled"] == True else 0.4 # Fade mod button out if mod is disabled
button:
xpos 13
ypos 928
transform:
alpha mod_button_alpha
frame:
xsize 1190
ysize 129
if persistent.use_epilogue_menu:
background Frame("gui/button/menubuttons/template_idle_epilogue.png", 12, 12)
else:
background Frame("gui/button/menubuttons/template_full_idle.png", 12, 12)
text _("Start") xalign 0.5 yalign 0.5 size 50
action Start(mod_metadata["Label"])
activate_sound "audio/ui/snd_ui_click.wav"
$ needs_android_buttons = renpy.variant(["mobile", "steam_deck"]) and (mod_metadata.get("Label") != None or (mod_metadata != {} and len(mod_menu_errorcodes) != 0))
vbox:
style_prefix "mod_menu"
xmaximum 1190
ymaximum 1050
xpos 15
ypos 15
# Mod details pane
viewport:
xmaximum 1190
if mod_has_label_android:
if needs_android_buttons:
ymaximum 900
else:
ymaximum 1050
xpos 15
ypos 15
scrollbars "vertical"
vscrollbar_unscrollable "hide"
mousewheel True
draggable True
vbox:
style_prefix "mod_menu"
# Thumbnail
python:
if mod_metadata["Enabled"] == True and return_translated_metadata(mod_metadata, "Thumbnail Displayable") != None:
mod_thumbnail = return_translated_metadata(mod_metadata, "Thumbnail Displayable")
elif return_translated_metadata(mod_metadata, "Thumbnail") != None:
mod_thumbnail = return_translated_metadata(mod_metadata, "Thumbnail")
else:
mod_thumbnail = None
if mod_thumbnail:
frame:
background None
xpadding 30
bottom_padding 30
xalign 0.5
add mod_thumbnail fit 'scale-down'
# Mod details
# Omits checking for mod name, since we'll always have some kind of mod name.
# This will also not show anything if there's only a mod name, since we already show one in the mod button.
# Unless the display is set to "icon".
if return_translated_metadata(mod_metadata, "Version") != None or return_translated_metadata(mod_metadata, "Authors") != None or return_translated_metadata(mod_metadata, "Links") != None or mod_metadata.get("Display") == "icon":
if mod_metadata == {} and len(mod_menu_errorcodes) != 0:
frame:
background Frame("gui/mod_frame.png", 30, 30)
padding (30, 30)
xfill True
vbox:
if return_translated_metadata(mod_metadata, "Name") != None:
hbox:
text _("Name: ")
text return_translated_metadata(mod_metadata, "Name")
if return_translated_metadata(mod_metadata, "Version") != None:
hbox:
text _("Version: ")
text return_translated_metadata(mod_metadata, "Version")
if return_translated_metadata(mod_metadata, "Authors") != None:
if isinstance(return_translated_metadata(mod_metadata, "Authors"), list):
hbox:
text _("Authors: ")
text ", ".join(return_translated_metadata(mod_metadata, "Authors"))
else:
hbox:
text _("Author: ")
text return_translated_metadata(mod_metadata, "Authors")
if return_translated_metadata(mod_metadata, "Links") != None:
if isinstance(return_translated_metadata(mod_metadata, "Links"), list):
hbox:
text _("Links: ")
text ", ".join(return_translated_metadata(mod_metadata, "Links"))
else:
hbox:
text _("Link: ")
text return_translated_metadata(mod_metadata, "Links")
# Description
if return_translated_metadata(mod_metadata, "Description") != None or return_translated_metadata(mod_metadata, "Mobile Description") != None:
frame:
background Frame("gui/mod_frame.png", 30, 30)
padding (30, 30)
xfill True
# If there's no mobile description, display the regular description on Android.
if (not renpy.android or return_translated_metadata(mod_metadata, "Mobile Description") == None) and (return_translated_metadata(mod_metadata, "Description") != None):
text return_translated_metadata(mod_metadata, "Description")
elif return_translated_metadata(mod_metadata, "Mobile Description") != None:
text return_translated_metadata(mod_metadata, "Mobile Description")
# Screenshots
python:
if mod_metadata["Enabled"] == True and return_translated_metadata(mod_metadata, "Screenshot Displayables") != None:
mod_screenshot_list = return_translated_metadata(mod_metadata, "Screenshot Displayables")
elif return_translated_metadata(mod_metadata, "Screenshots") != None:
mod_screenshot_list = return_translated_metadata(mod_metadata, "Screenshots")
else:
mod_screenshot_list = None
if persistent.show_mod_screenshots and mod_screenshot_list:
frame:
background Frame("gui/mod_frame.png", 30, 30)
padding (30, 30)
xfill True
hbox:
xoffset 12
box_wrap True
box_wrap_spacing 25
spacing 25
for t in mod_menu_errorcodes:
text convert_errorcode_to_errorstring(t[0], t[1])
elif mod_metadata != {}:
# Thumbnail
python:
if mod_metadata["Enabled"] == True and return_translated_metadata(mod_metadata, "Thumbnail Displayable") != None:
mod_thumbnail = return_translated_metadata(mod_metadata, "Thumbnail Displayable")
elif return_translated_metadata(mod_metadata, "Thumbnail") != None:
mod_thumbnail = return_translated_metadata(mod_metadata, "Thumbnail")
else:
mod_thumbnail = None
for i in mod_screenshot_list:
imagebutton:
at transform:
ysize 200 subpixel True
fit "scale-down"
xalign 0.5 yalign 0.5
if mod_thumbnail:
frame:
background None
xpadding 30
bottom_padding 30
xalign 0.5
add mod_thumbnail fit 'scale-down'
idle i
hover Transform(i, matrixcolor=BrightnessMatrix(0.1))
action Show("mod_screenshot_preview", Dissolve(0.5), img=i)
# Mod details
# Omits checking for mod name, since we'll always have some kind of mod name.
# This will also not show anything if there's only a mod name, since we already show one in the mod button.
# Unless the display is set to "icon".
if return_translated_metadata(mod_metadata, "Version") != None or return_translated_metadata(mod_metadata, "Authors") != None or return_translated_metadata(mod_metadata, "Links") != None or mod_metadata.get("Display") == "icon":
frame:
background Frame("gui/mod_frame.png", 30, 30)
padding (30, 30)
xfill True
vbox:
if return_translated_metadata(mod_metadata, "Name") != None:
hbox:
text _("Name: ")
text return_translated_metadata(mod_metadata, "Name")
if return_translated_metadata(mod_metadata, "Version") != None:
hbox:
text _("Version: ")
text return_translated_metadata(mod_metadata, "Version")
if return_translated_metadata(mod_metadata, "Authors") != None:
if isinstance(return_translated_metadata(mod_metadata, "Authors"), list):
hbox:
text _("Authors: ")
text ", ".join(return_translated_metadata(mod_metadata, "Authors"))
else:
hbox:
text _("Author: ")
text return_translated_metadata(mod_metadata, "Authors")
if return_translated_metadata(mod_metadata, "Links") != None:
if isinstance(return_translated_metadata(mod_metadata, "Links"), list):
hbox:
text _("Links: ")
text ", ".join(return_translated_metadata(mod_metadata, "Links"))
else:
hbox:
text _("Link: ")
text return_translated_metadata(mod_metadata, "Links")
# Description
if return_translated_metadata(mod_metadata, "Description") != None or return_translated_metadata(mod_metadata, "Mobile Description") != None:
frame:
background Frame("gui/mod_frame.png", 30, 30)
padding (30, 30)
xfill True
# If there's no mobile description, display the regular description on Android.
if (not renpy.android or return_translated_metadata(mod_metadata, "Mobile Description") == None) and (return_translated_metadata(mod_metadata, "Description") != None):
text return_translated_metadata(mod_metadata, "Description")
elif return_translated_metadata(mod_metadata, "Mobile Description") != None:
text return_translated_metadata(mod_metadata, "Mobile Description")
# Screenshots
python:
if mod_metadata["Enabled"] == True and return_translated_metadata(mod_metadata, "Screenshot Displayables") != None:
mod_screenshot_list = return_translated_metadata(mod_metadata, "Screenshot Displayables")
elif return_translated_metadata(mod_metadata, "Screenshots") != None:
mod_screenshot_list = return_translated_metadata(mod_metadata, "Screenshots")
else:
mod_screenshot_list = None
if persistent.show_mod_screenshots and mod_screenshot_list:
frame:
background Frame("gui/mod_frame.png", 30, 30)
padding (30, 30)
xfill True
hbox:
xoffset 12
box_wrap True
box_wrap_spacing 25
spacing 25
for i in mod_screenshot_list:
imagebutton:
at transform:
ysize 200 subpixel True
fit "scale-down"
xalign 0.5 yalign 0.5
idle i
hover Transform(i, matrixcolor=BrightnessMatrix(0.1))
action Show("mod_screenshot_preview", Dissolve(0.5), img=i)
# Mod play and hide mod details pane buttons for android
if needs_android_buttons:
hbox:
box_reverse True
if len(mod_menu_errorcodes) != 0:
button:
frame:
xfill True
yfill True
if mod_metadata.get("Label") != None:
xmaximum 0.5
if persistent.use_epilogue_menu:
background Frame("gui/button/menubuttons/template_idle_epilogue.png", 12, 12)
else:
background Frame("gui/button/menubuttons/template_full_idle.png", 12, 12)
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"
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
button:
transform:
alpha mod_button_alpha
frame:
xfill True
yfill True
if persistent.use_epilogue_menu:
background Frame("gui/button/menubuttons/template_idle_epilogue.png", 12, 12)
else:
background Frame("gui/button/menubuttons/template_full_idle.png", 12, 12)
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"
elif len(mod_menu_errorcodes) != 0:
viewport:
xmaximum 1190
ymaximum 1050
xpos 15
ypos 15
scrollbars "vertical"
vscrollbar_unscrollable "hide"
mousewheel True
draggable True
vbox:
style_prefix "mod_menu"
frame:
background Frame("gui/mod_frame.png", 30, 30)
padding (30, 30)
xfill True
vbox:
spacing 25
for t in mod_menu_errorcodes:
text convert_errorcode_to_errorstring(t[0], t[1])
if not persistent.seenModWarning:
$ persistent.seenModWarning = True

View File

@ -1,7 +1,6 @@
# RoundedCorners() rounds the corners of a displayable you give it
python early:
import collections, pygame_sdl2 as pygame
def normalize_color(col):
a = col[3] / 255.0

View File

@ -1,6 +1,6 @@
label splashscreen:
if not renpy.get_autoreload():
if not renpy.get_autoreload() and not persistent.reloading_mods:
show caveintrosequence
play sound 'audio/OST/startup.ogg'
pause 11.2

View File

@ -25,9 +25,37 @@ screen OkPrompt(message, go_menu):
xalign 0.5
spacing 100
textbutton _("OK") activate_sound "audio/ui/uiClick.wav" action If(go_menu, true=MainMenu(False,False), false=Hide())
textbutton _("OK") activate_sound "audio/ui/snd_ui_click.wav" action If(go_menu, true=MainMenu(False,False), false=[Hide(),Return()])
screen hiddenOkPrompt(message, go_menu):
modal True
zorder 200
style_prefix "confirm"
add "gui/overlay/confirm.png"
frame:
vbox:
xalign .5
yalign .5
spacing 30
label _(message):
style "confirm_prompt"
xalign 0.5
hbox:
xalign 0.5
spacing 100
textbutton _("OK") activate_sound "audio/ui/snd_ui_click.wav" action If(go_menu, true=MainMenu(False,False), false=Hide())
default persistent.seenWarning = []
default persistent.languaged_up = None
init python:
@ -107,9 +135,9 @@ screen lang_sel():
idle darkie(languages[i]["image"])
hover glowie(languages[i]["image"])
action If(languages[i]["value"] in persistent.seenWarning or languages[i]["value"] == 'en',
true = [Language(languages[i]["value"]), MainMenu(False,False)],
true = [Language(languages[i]["value"]), SetVariable("persistent.languaged_up", True), Return()],
# Important to change the language before calling notice. Otherwise it will be in english.
false = [Language(languages[i]["value"]), AddToSet(set=persistent.seenWarning, value=languages[i]["value"]), Show(screen="OkPrompt", message=notice, go_menu=True)]
false = [Language(languages[i]["value"]), AddToSet(set=persistent.seenWarning, value=languages[i]["value"]), SetVariable("persistent.languaged_up", True), Show(screen="OkPrompt", message=notice, go_menu=False)]
)
at renpysdumb # Scales the imagebutton down. No, you can't just specify the zoom here. It has to be a defined transform.
else:
@ -124,7 +152,7 @@ screen lang_button(lang):
activate_sound "audio/ui/uiRollover.wav"
action If(lang["value"] in persistent.seenWarning or lang["value"] == 'en',
true = [Language(lang["value"])],
false = [Language(lang["value"]), AddToSet(set=persistent.seenWarning, value=lang["value"]), Show(screen="OkPrompt", message=notice, go_menu=False)]
false = [Language(lang["value"]), AddToSet(set=persistent.seenWarning, value=lang["value"]), Show(screen="hiddenOkPrompt", message=notice, go_menu=False)]
)
if _preferences.language == lang["value"]:
add glowie(lang["image"]) at icon

View File

@ -590,3 +590,8 @@ translate es strings:
old "Menu"
new "Menú"
old "Backspace"
new "Tecla de borrar"
old "Hides mod details. Shows mod errors if there is any."
new "Esconde los detalles de los mods. Muestra los errores relacionados a los mods"

View File

@ -182,3 +182,5 @@ translate es strings:
old "Installing mods is dangerous since you are running unknown code in your computer. Only install mods from sources that you trust.\n\nIf you have problems with installed mods, check the README.md in the root of the mods folder."
new "Instalar mods es peligroso, ya que estás ejecutando código desconocido en tu ordenador. Sólo instala mods de fuentes en las que confíes.\n\nSi tienes problemas con los mods instalados, consulta el archivo README.md (Inglés) en la raíz de la carpeta de mods."
old "Show Errors"
new "Mostrar Errores"

View File

@ -52,7 +52,7 @@ translate it strings:
# renpy/common/00accessibility.rpy:120
old "Accessibility Menu. Use up and down arrows to navigate, and enter to activate buttons and bars."
new "Menù di Accessibilità. Usa le frecce sù e giù per navigare, e premi invio per attivare pulsanti o barre."
new "Menu di Accessibilità. Usa le frecce su e giù per navigare, e premi invio per attivare pulsanti o barre."
# renpy/common/00accessibility.rpy:139
old "Font Override"
@ -72,11 +72,11 @@ translate it strings:
# renpy/common/00accessibility.rpy:157
old "Text Size Scaling"
new "Scalatura Dimensioni Testo"
new "Dimensioni Testo"
# renpy/common/00accessibility.rpy:169
old "Line Spacing Scaling"
new "Scalatura Spaziatura Righe"
new "Spaziatura Righe"
# renpy/common/00accessibility.rpy:181
old "High Contrast Text"
@ -112,7 +112,7 @@ translate it strings:
# renpy/common/00accessibility.rpy:235
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
new "Le opzioni in questo menù hanno lo svopo di migliorare l'accessbilità. Potrebbero non funzionare con tutti i giochi, ed alcune combinazioni di opzioni potrebbero rendere il gioco ingiocabile. Questo non è un problema con il gioco o l'engine. Per avere risultati migliori quando si cambiano font, prova a tenere la grandezza del testo uguale a quella originale."
new "Le opzioni in questo menu hanno lo scopo di migliorare l'accessibilità. Potrebbero non funzionare con tutti i giochi, ed alcune combinazioni di opzioni potrebbero rendere il gioco ingiocabile. Questo non è un problema con il gioco o l'engine. Per avere risultati migliori quando si cambiano font, prova a tenere la grandezza del testo uguale a quella originale."
# renpy/common/00action_file.rpy:26
old "{#weekday}Monday"
@ -464,7 +464,7 @@ translate it strings:
# renpy/common/00gui.rpy:453
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Sei sicuro di voler ritornare al menù principale?\nPerderai progresso non salvato."
new "Sei sicuro di voler ritornare al menu principale?\nPerderai progresso non salvato."
# renpy/common/00gui.rpy:454
old "Are you sure you want to continue where you left off?"
@ -488,7 +488,7 @@ translate it strings:
# renpy/common/00gui.rpy:459
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
new "Questo salvataggio è stato creato su un altro dispositivo. File di salvataggio creati con malizia possono danneggiare il tuo computer. Ti fidi del creatore di questo salataggio e di chiunque possa aver modificato il file?"
new "Questo salvataggio è stato creato su un altro dispositivo. File di salvataggio creati con malizia possono danneggiare il tuo computer. Ti fidi del creatore di questo salvataggio e di chiunque possa aver modificato il file?"
# renpy/common/00gui.rpy:460
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."
@ -672,11 +672,11 @@ translate it strings:
# renpy/common/00preferences.rpy:530
old "renderer menu"
new "menù renderer"
new "menu renderer"
# renpy/common/00preferences.rpy:533
old "accessibility menu"
new "menù accessbilità"
new "menu accessibilità"
# renpy/common/00preferences.rpy:536
old "high contrast text"
@ -696,7 +696,7 @@ translate it strings:
# renpy/common/00preferences.rpy:578
old "voice after game menu"
new "voce dopo menù di gioco"
new "voce dopo menu di gioco"
# renpy/common/00preferences.rpy:587
old "restore window position"
@ -808,7 +808,7 @@ translate it strings:
# renpy/common/00sync.rpy:538
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
new "Questo caricherà i tuoi salvataggi al {a=https://sync.renpy.org}Server di Sincronizzazioen di Ren'Py{/a}.\nVuoi continuare?"
new "Questo caricherà i tuoi salvataggi al {a=https://sync.renpy.org}Server di Sincronizzazione di Ren'Py{/a}.\nVuoi continuare?"
# renpy/common/00sync.rpy:569
old "Enter Sync ID"
@ -816,7 +816,7 @@ translate it strings:
# renpy/common/00sync.rpy:580
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
new "Questo contatterà il {a=https://sync.renpy.org}Server di Sincronizzazioen di Ren'Py{/a}."
new "Questo contatterà il {a=https://sync.renpy.org}Server di Sincronizzazione di Ren'Py{/a}."
# renpy/common/00sync.rpy:609
old "Sync Success"
@ -868,7 +868,7 @@ translate it strings:
# renpy/common/00updater.rpy:967
old "This account does not have permission to write the update log."
new "Questo account non ha il permesso di scrivere il log aggioramento."
new "Questo account non ha il permesso di scrivere il log aggiornamento."
# renpy/common/00updater.rpy:1047
old "Could not verify update signature."
@ -1016,7 +1016,7 @@ translate it strings:
# renpy/common/00gltest.rpy:136
old "Enable (No Blocklist)"
new "Abiltia (nessuna Lista di Blocco)"
new "Abilita (nessuna Lista di Blocco)"
# renpy/common/00gltest.rpy:159
old "Powersave"
@ -1052,7 +1052,7 @@ translate it strings:
# renpy/common/00gltest.rpy:242
old "Performance Warning"
new "Allarme di Prestationi"
new "Allarme di Prestazioni"
# renpy/common/00gltest.rpy:247
old "This computer is using software rendering."
@ -1186,3 +1186,23 @@ translate it strings:
old "Parsing the script failed."
new "Analisi dello script fallita."
# TODO: Translation updated at 2024-10-07 18:25
translate it strings:
# renpy/common/00accessibility.rpy:198
old "Self-voicing support is limited when using a touch screen."
new "Supporto all'auto-doppiaggio è limitato quando si usa un touch screen."
# renpy/common/00translation.rpy:63
old "Translation identifier: [identifier]"
new "Identificatore traduzione: [identifier]"
# renpy/common/00translation.rpy:84
old " translates [tl.filename]:[tl.linenumber]"
new " traduce [tl.filename]:[tl.linenumber]"
# renpy/common/00translation.rpy:101
old "\n{color=#fff}Copied to clipboard.{/color}"
new "\n{color=#fff}Copiato negli appunti.{/color}"

View File

@ -65,7 +65,7 @@ translate it strings:
# game/screens.rpy:369
old "Main Menu"
new "Menù Principale"
new "Menu Principale"
# game/screens.rpy:735
old "Version [config.version!t]\n"
@ -273,7 +273,7 @@ translate it strings:
# game/screens.rpy:1313
old "Gamepad"
new "Controller"
new "Gamepad"
# game/screens.rpy:1333
old "Enter"
@ -305,7 +305,7 @@ translate it strings:
# game/screens.rpy:1346
old "Accesses the game menu. Also escapes the Gallery."
new "Accedi al menù di gioco. Esci dalla Galleria."
new "Accedi al menu di gioco. Esci dalla Galleria."
# game/screens.rpy:1349
old "Ctrl"
@ -325,7 +325,7 @@ translate it strings:
# game/screens.rpy:1357
old "Page Up"
new "Pagina Sù"
new "Pagina Su"
# game/screens.rpy:1358
old "Rolls back to earlier dialogue."
@ -365,7 +365,7 @@ translate it strings:
# game/screens.rpy:1392
old "Mouse Wheel Up\nClick Rollback Side"
new "Rotella del Mouse Sù\nClicca Lato di Ripristino"
new "Rotella del Mouse Su\nClicca Lato di Ripristino"
# game/screens.rpy:1396
old "Mouse Wheel Down"
@ -393,11 +393,11 @@ translate it strings:
# game/screens.rpy:1421
old "Accesses the game menu."
new "Accedi al menù di gioco"
new "Accedi al menu di gioco"
# game/screens.rpy:1424
old "Y/Top Button"
new "Y/Pulsante in Sù"
new "Y/Pulsante in Su"
# game/screens.rpy:1427
old "Calibrate"
@ -431,7 +431,7 @@ translate it strings:
# game/screens.rpy:293
old "Auto"
new "Automatico"
new "Auto"
# game/screens.rpy:363
old "Chapter Select"
@ -457,3 +457,49 @@ translate it strings:
old "Menu"
new "Menu"
# TODO: Translation updated at 2024-10-07 18:25
translate it strings:
# game/screens.rpy:810
old "Upload Sync"
new "Carica Sincronizzazione"
# game/screens.rpy:814
old "Download Sync"
new "Scarica Sincronizzazione"
# game/screens.rpy:910
old "Show Mod Screenshots"
new "Mostra Screenshot Mod"
# game/screens.rpy:911
old "Enable New Mods"
new "Abilita Nuove Mod"
# game/screens.rpy:924
old "Enable Edgescrolling"
new "Abilita Scorrimento sui Bordi"
# game/screens.rpy:929
old "Menu Style"
new "Stile Menu"
# game/screens.rpy:930
old "Original"
new "Originale"
# game/screens.rpy:931
old "Epilogue"
new "Epilogo"
# game/screens.rpy:1332
old "Mouse Wheel Up"
new "Rotella del Mouse Su"
# game/screens.rpy:1359
old "Start, Guide, B/Right Button"
new "Start, Guida, B/Bottone a Destra"
old "Hides mod details. Shows mod errors if there is any."
new "Nascondi dettagli mod. Mostra errori della mod se ce ne sono."

View File

@ -68,7 +68,7 @@ translate it strings:
# game/script.rpy:156
old "Mr. Tsuki"
new "Mr. Tsuki"
new "Sig. Tsuki"
# game/script.rpy:157
old "(???)"
@ -76,7 +76,7 @@ translate it strings:
# game/script.rpy:158
old "Mr. Jingo"
new "Mr. Jingo"
new "Sig. Jingo"
# game/script.rpy:159
old "Maitre D"

View File

@ -1330,7 +1330,7 @@ translate it chapter_1_ded7df67:
translate it chapter_1_b32e2dd2:
# "Mr. Tsuki continued on, drawing what little attention there was to himself."
"Mr. Tsuki continuò, richiamando la poca attenzione della classe su di sè."
" Il Sig. Tsuki continuò, richiamando la poca attenzione della classe su di sè."
# game/script/1.first-two-days-anon-meets-fang.rpy:972
translate it chapter_1_2128295c:

View File

@ -550,7 +550,7 @@ translate it chapter_11_fc7c6fdd:
translate it chapter_11_9b304b29:
# "I have a backpack full of missed assignments, including Mr. Tsukis essay on the history of typefaces."
"Ho uno zaino pieno di compiti saltati, incluso il tema per Mr. Tsuki sulla storia dei caratteri tipografici."
"Ho uno zaino pieno di compiti saltati, incluso il tema per il Sig. Tsuki sulla storia dei caratteri tipografici."
# game/script/11.school-assignment-and-route-lock.rpy:467
translate it chapter_11_32280a97:
@ -2212,7 +2212,7 @@ translate it lSortingThings_d7a7a4fd:
translate it lSortingThings_644bef27:
# "In any other class Id have been caught up, but Mr. Tsuki is an absolute slave driver."
"Ho recuperato ogni altra materia, ma Mr. Tsuki è un vero schiavista."
"Ho recuperato ogni altra materia, ma il Sig. Tsuki è un vero schiavista."
# game/script/11.school-assignment-and-route-lock.rpy:1508
translate it lSortingThings_e2812839:

View File

@ -730,7 +730,7 @@ translate it chapter_13A_dd28b9c9:
translate it chapter_13A_1188babf:
# "We hauled ass to Mr.Jingos room, where the band had stored their gear."
"Ci siamo spinti fino alla stanza di Mr. Jingo, dove la band aveva riposto la propria attrezzatura."
"Abbiamo mosso il culo fino alla stanza del Sig. Jingo, dove la band aveva riposto la propria attrezzatura."
# game/script/13A.fang-loses-it-after-losing-prom-queen.rpy:534
translate it chapter_13A_979b978a:

View File

@ -640,7 +640,7 @@ translate it chapter_3_88099cb9:
translate it chapter_3_7b692572:
# "He gives me a thumbs up and exits as well."
"Mi da un pollice in sù ed esce anche lui."
"Mi da un pollice in su ed esce anche lui."
# game/script/3.showing-up-at-band-practice-and-giving-feedback.rpy:463
translate it chapter_3_a54cfc04:
@ -1258,7 +1258,7 @@ translate it chapter_3_f31ea95e:
translate it chapter_3_8232b8b6:
# jingo "Good timing, Mr. Mous. Just in time for free period."
jingo "Ottimo tempismo, Mr. Imo. Sei in tempo per l'ora libera."
jingo "Ottimo tempismo, Sig. Imo. Sei in tempo per l'ora libera."
# game/script/3.showing-up-at-band-practice-and-giving-feedback.rpy:896
translate it chapter_3_5c14abb0:

View File

@ -1132,7 +1132,7 @@ translate it lHeads_a42630c4:
translate it lHeads_6debb489:
# Re "Anyways{cps=*.1}...{/cps} Mr. Jingo doesnt care about if you use, like, partners and stuff{cps=*.1}...{/cps} He just wants the work done{cps=*.1}...{/cps}"
Re "Comunque{cps=*.1}...{/cps} A Mr. Jingo non importa se, tipo, si lavora con gli altri e simili{cps=*.1}...{/cps} Basta che si fanno i compiti{cps=*.1}...{/cps}"
Re "Comunque{cps=*.1}...{/cps} Al Sig. Jingo non importa se, tipo, si lavora con gli altri e simili{cps=*.1}...{/cps} Basta che si fanno i compiti{cps=*.1}...{/cps}"
# game/script/4.anon-needs-help-during-music-period.rpy:770
translate it lHeads_d762c0e4:

View File

@ -154,7 +154,7 @@ translate it chapter_8_02cfda7b:
translate it chapter_8_e3151852:
# "Mr. Carldewskii takes the stage with an electronic mic."
"Mr. Carldewskii sale sul palco e prende un microfono elettrico."
"Il Sig. Carldewskii sale sul palco e prende un microfono elettrico."
# game/script/8.anon-and-fang-study-together.rpy:149
translate it chapter_8_6bc5338d:
@ -190,7 +190,7 @@ translate it chapter_8_b6a62594:
translate it chapter_8_bc6eb086:
# "Mr. Carldewskii holds the microphone out to him but gets ignored."
"Mr. Carldewskii gli pone il microfono ma viene ignorato."
"Il Sig. Carldewskii gli pone il microfono ma viene ignorato."
# game/script/8.anon-and-fang-study-together.rpy:177
translate it chapter_8_3b3630e5:
@ -1990,7 +1990,7 @@ translate it musicalchoices_ffea9ad8:
translate it musicalchoices_b00990cc:
# "Well, maybe music I guess. Raptor Jesus, Mr. Jingo is a shit teacher compared to her."
"Beh, forse musica credo. Gesù Raptor, Mr. Jingo è un insegnante di merda in confronto a lei."
"Beh, forse musica credo. Gesù Raptor, il Sig. Jingo è un insegnante di merda in confronto a lei."
# game/script/8.anon-and-fang-study-together.rpy:1415
translate it musicalchoices_1127e8e8:
@ -3280,7 +3280,7 @@ translate it lGetStartedOnStudy_5e206d22:
translate it lGetStartedOnStudy_3c210331:
# "In the end, Mr Jingo screwed us over by making music midterm a live demonstration."
"Alla fine, Mr. Jingo ci ha rovinati rendendo gli esami di musica una dimostrazione dal vivo."
"Alla fine, il Sig. Jingo ci ha rovinati rendendo gli esami di musica una dimostrazione dal vivo."
# game/script/8.anon-and-fang-study-together.rpy:2150
translate it lGetStartedOnStudy_e5ac4cac:
@ -3292,7 +3292,7 @@ translate it lGetStartedOnStudy_e5ac4cac:
translate it lGetStartedOnStudy_799af2a8:
# "My GPA was secured at least for whatever the fuck I decide on."
"Il mio GPA è garantito per permettermi di far quasiasi cazzo di cosa decida."
"Il mio GPA è garantito per permettermi di far qualsiasi cazzo di cosa decida."
# game/script/8.anon-and-fang-study-together.rpy:2156
translate it lGetStartedOnStudy_f1638dc1_2:

View File

@ -6,3 +6,189 @@ translate it strings:
old "You have no mods! \nInstall some in:\n\"[moddir]\""
new "Non hai mod! \nInstallane un po' in:\n\"[moddir]\""
# TODO: Translation updated at 2024-10-07 18:25
translate it strings:
# game/src/mod_menu.rpy:584
old "the root of the mods folder"
new "radice della cartella mods"
# game/src/mod_menu.rpy:597
old " for '{color=#ffbdbd}"
new " per lingua '{color=#ffbdbd}"
# game/src/mod_menu.rpy:597
old "{/color}' language"
new "{/color}'"
# game/src/mod_menu.rpy:605
old "{color=#ff1e1e}Mod in "
new "{color=#ff1e1e}Mod in "
# game/src/mod_menu.rpy:605
old " failed to load: Metadata is formatted incorrectly. Check log.txt or console for more info.{/color}"
new " non è stata caricata: Metadata è formattato in modo sbagliato. Controlla log.txt o la console per ulteriori info.{/color}"
# game/src/mod_menu.rpy:607
old "{color=#ff8b1f}Metadata in "
new "{color=#ff8b1f}Metadata in "
# game/src/mod_menu.rpy:607
old " is formatted incorrectly. Check log.txt or console for more info.{/color}"
new " è formattato in modo sbagliato. Controlla log.txt o la console per ulteriori info.{/color}"
# game/src/mod_menu.rpy:609
old "{color=#ff8b1f}Mod's name in "
new "{color=#ff8b1f}Il nome della mod in "
# game/src/mod_menu.rpy:609
old " is not a string.{/color}"
new " non è una stringa.{/color}"
# game/src/mod_menu.rpy:611
old "{color=#ff8b1f}Mod's label in "
new "{color=#ff8b1f}La label della Mod in "
# game/src/mod_menu.rpy:613
old "{color=#ff8b1f}Display mode in "
new "{color=#ff8b1f}La modalità display in "
# game/src/mod_menu.rpy:615
old " is not valid. Valid options are 'both', 'icon' and 'name', not "
new " non è valida. Le opzioni valide sono 'entrambi', 'icona' e 'nome', non "
# game/src/mod_menu.rpy:615
old ".{/color}"
new ".{/color}"
# game/src/mod_menu.rpy:617
old "{color=#ff8b1f}Mod's version in "
new "{color=#ff8b1f}La versione della Mod in "
# game/src/mod_menu.rpy:619
old "{color=#ff8b1f}Mod's authors in "
new "{color=#ff8b1f}Gli autori della Mod in "
# game/src/mod_menu.rpy:619
old " is not a string or list.{/color}"
new " non è una stringa o una lista.{/color}"
# game/src/mod_menu.rpy:621
old "{color=#ff8b1f}Author "
new "{color=#ff8b1f}Autore "
# game/src/mod_menu.rpy:621
old " in "
new " in "
# game/src/mod_menu.rpy:623
old "{color=#ff8b1f}Mod's links in "
new "{color=#ff8b1f}I link della Mod in"
# game/src/mod_menu.rpy:625
old "{color=#ff8b1f}Link "
new "{color=#ff8b1f}Link "
# game/src/mod_menu.rpy:627
old "{color=#ff8b1f}Mod's description in "
new "{color=#ff8b1f}La descrizione della Mod in "
# game/src/mod_menu.rpy:629
old "{color=#ff8b1f}Mod's mobile description in "
new "{color=#ff8b1f}Descrizione mobile della Mod in "
# game/src/mod_menu.rpy:631
old "{color=#ff8b1f}Mod's screenshot displayables in "
new "{color=#ff8b1f}Displayable screenshot della Mod in "
# game/src/mod_menu.rpy:631
old " is not a list.{/color}"
new " non è una lista.{/color}"
# game/src/mod_menu.rpy:633
old "{color=#ff8b1f}Screenshot Displayable "
new "{color=#ff8b1f}Displayable screenshot "
# game/src/mod_menu.rpy:635
old "{color=#ff8b1f}Mod's icon displayable in "
new "{color=#ff8b1f}Displayable icona della Mod in "
# game/src/mod_menu.rpy:637
old "{color=#ff8b1f}Mod's thumbnail displayable in "
new "{color=#ff8b1f}Displayable miniatura della Mod in "
# game/src/mod_menu.rpy:639
old " failed to load: Does not have a mod ID.{/color}"
new " non è stato caricata: Non ha un ID mod.{/color}"
# game/src/mod_menu.rpy:641
old " failed to load: ID is not a string.{/color}"
new " non è stato caricata: ID non è una stringa.{/color}"
# game/src/mod_menu.rpy:643
old " failed to load: Another mod "
new " non è stata caricata: Un'altra mod "
# game/src/mod_menu.rpy:643
old " has the same ID.{/color}"
new " ha lo stesso ID.{/color}"
# game/src/mod_menu.rpy:645
old " is not installed correctly.\nMake sure it's structure is "
new " non è installata correttamente.\nVerifica che la struttura è "
# game/src/mod_menu.rpy:645
old " instead of "
new " invece di "
# game/src/mod_menu.rpy:647
old "{color=#ff8b1f}"
new "{color=#ff8b1f}"
# game/src/mod_menu.rpy:647
old " image for mod in "
new " immagine per la mod in "
# game/src/mod_menu.rpy:647
old " has an incompatible file extension. {a=https://www.renpy.org/doc/html/displayables.html#images}Only use images that Ren'Py supports!{/a}{/color}"
new " ha un'estensione del file incompatibile. {a=https://www.renpy.org/doc/html/displayables.html#images}Usa solo immagini che Ren'Py supporta!{/a}{/color}"
# game/src/mod_menu.rpy:708
old "Reload Mods"
new "Ricarica Mod"
# game/src/mod_menu.rpy:888
old "You have no mods! \nInstall some in:\n\"{color=#abd7ff}[mod_menu_moddir]{/color}\""
new "Non hai mod! \nInstallane un po' in:\n\"{color=#abd7ff}[mod_menu_moddir]{/color}\""
# game/src/mod_menu.rpy:969
old "Name: "
new "Nome: "
# game/src/mod_menu.rpy:973
old "Version: "
new "Versione: "
# game/src/mod_menu.rpy:978
old "Authors: "
new "Autori: "
# game/src/mod_menu.rpy:982
old "Author: "
new "Autore: "
# game/src/mod_menu.rpy:987
old "Links: "
new "Link: "
# game/src/mod_menu.rpy:991
old "Link: "
new "Link: "
# game/src/mod_menu.rpy:1062
old "Installing mods is dangerous since you are running unknown code in your computer. Only install mods from sources that you trust.\n\nIf you have problems with installed mods, check the README.md in the root of the mods folder."
new "Installare mod è pericoloso perché stai eseguendo codice sconosciuto sul tuo computer. Installa mod solamente da fonti di cui ti fidi.\n\nSe hai problemi con le mod installate, controlla il file README.md nella radice della cartella mods."
old "Show Errors"
new "Mostra Errori"