Compare commits
26 Commits
Espaniolo
...
fix-snootg
Author | SHA1 | Date | |
---|---|---|---|
6377fffba0 | |||
b16bd97d33 | |||
6cea8fa94b | |||
1fad3b0b62 | |||
fc537fecc7 | |||
f3bb2caa7f | |||
3bf7e9e433 | |||
d581c7884c | |||
3d51bae4a6 | |||
5d44682f49 | |||
033175500c | |||
2c2899e734 | |||
301035bad1 | |||
e06db742e2 | |||
610737fddf | |||
e41d42d4e7 | |||
7873a882a8 | |||
c045fcff26 | |||
81c646e81b | |||
7612935547 | |||
201cd61f63 | |||
934a0dc72a | |||
ca7406d0d9 | |||
79ac93e6fd | |||
019d5f4f44 | |||
64b566d66b |
@ -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 ####################################################################
|
||||
|
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 193 KiB |
Before Width: | Height: | Size: 2.2 KiB |
@ -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.
|
||||
|
@ -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)
|
||||
|
BIN
game/presplash_background.png
Normal file
After Width: | Height: | Size: 147 KiB |
BIN
game/presplash_foreground.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
@ -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.")
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
@ -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"
|
@ -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}"
|
||||
|
||||
|
@ -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."
|
@ -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"
|
||||
|
@ -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:
|
||||
|
@ -550,7 +550,7 @@ translate it chapter_11_fc7c6fdd:
|
||||
translate it chapter_11_9b304b29:
|
||||
|
||||
# "I have a backpack full of missed assignments, including Mr. Tsuki’s 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 I’d 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:
|
||||
|
@ -730,7 +730,7 @@ translate it chapter_13A_dd28b9c9:
|
||||
translate it chapter_13A_1188babf:
|
||||
|
||||
# "We hauled ass to Mr.Jingo’s 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:
|
||||
|
@ -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:
|
||||
|
@ -1132,7 +1132,7 @@ translate it lHeads_a42630c4:
|
||||
translate it lHeads_6debb489:
|
||||
|
||||
# Re "Anyways{cps=*.1}...{/cps} Mr. Jingo doesn’t 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:
|
||||
|
@ -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:
|
||||
|
@ -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"
|