Thank you so much for playing! :D
v— slight spoilers below —v
.
.
.
(you have been warned)
.
.
.
There is technically no singular true canon route, but I’d say Bea & Ricky are the strongest contenders for that, yeah!
Hey, just to let you know it's possible to run into a rare crash if the audio is muted and there is "No song playing", and you then hit the "previous song" button.
I fixed it by adding the same code from the next() function to the previous() function, right before "pos = renpy.music.get_pos(channel=self.channel)":
filename = renpy.music.get_playing(channel=self.channel) if filename is None: return self.play(None, 0)
Back with a new bug report! This time around it's related to self-voicing (normally activated with "v"). The game throws the following error when I hover over a choice menu making use of truncate_text.
(The same also happens in NVL mode and in the history screen, where i shorten the character names with truncate_text.)
I'm sorry, but an uncaught exception occurred. While running game code: File "game/script/routes/loye_3.rpy", line 1359, in script menu: TypeError: TruncateText._tts() got an unexpected keyword argument 'raw' -- Full Traceback ------------------------------------------------------------ Traceback (most recent call last): File "game/script/routes/loye_3.rpy", line 1359, in script menu: File "renpy/ast.py", line 1816, in execute choice = renpy.exports.menu(choices, self.set, args, kwargs, item_arguments) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/exports/menuexports.py", line 135, in menu rv = renpy.store.menu(new_items) ~~~~~~~~~~~~~~~~^^^^^^^^^^^ File "renpy/exports/menuexports.py", line 418, in display_menu rv = renpy.ui.interact(mouse="menu", type=type, roll_forward=roll_forward) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/ui.py", line 306, in interact rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/display/core.py", line 2164, in interact repeat, rv = self.interact_core( ~~~~~~~~~~~~~~~~~~^ preloads=preloads, ^^^^^^^^^^^^^^^^^^ ...<4 lines>... **kwargs, ^^^^^^^^^ ) ^ File "renpy/display/core.py", line 3259, in interact_core rv = renpy.display.focus.mouse_handler(ev, x, y) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ File "renpy/display/focus.py", line 641, in mouse_handler return change_focus(new_focus, default=default) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/display/focus.py", line 568, in change_focus set_focused(current, newfocus.arg, newfocus.screen) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/display/focus.py", line 217, in set_focused renpy.display.tts.displayable(widget) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ File "renpy/display/tts.py", line 428, in displayable s = d._tts_all(raw=False) ~~~~~~~~~~^^^^^^^^^^^ File "renpy/display/behavior.py", line 1204, in _tts_all rv = self._tts_common(alt(self.action), raw=raw) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/display/displayable.py", line 625, in _tts_common speech = i._tts(raw=raw) ~~~~~~^^^^^^^^^ File "renpy/display/displayable.py", line 663, in _tts return self._tts_common(raw=raw) ~~~~~~~~~~~~~~~~^^^^^^^^^ File "renpy/display/displayable.py", line 625, in _tts_common speech = i._tts(raw=raw) ~~~~~~^^^^^^^^^ File "renpy/display/layout.py", line 1300, in _tts return self._tts_common(raw=raw) ~~~~~~~~~~~~~~~~^^^^^^^^^ File "renpy/display/displayable.py", line 625, in _tts_common speech = i._tts(raw=raw) ~~~~~~^^^^^^^^^ File "renpy/display/layout.py", line 1300, in _tts return self._tts_common(raw=raw) ~~~~~~~~~~~~~~~~^^^^^^^^^ File "renpy/display/displayable.py", line 625, in _tts_common speech = i._tts(raw=raw) ~~~~~~^^^^^^^^^ TypeError: TruncateText._tts() got an unexpected keyword argument 'raw' Windows-11-10.0.22631-SP0 AMD64 Ren'Py 8.5.3.26042304+nightly
Hey! So I finally gave this a shot by swapping out my existing flowchart viewport with zoom_viewport.
While zooming out immediately worked as expected, I ran into the following issues:
I'm sorry, but an uncaught exception occurred. While running game code: File "renpy/display/render.pyx", line 494, in renpy.display.render.render_screen File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/accelerator.pyx", line 1020, in renpy.display.accelerator.RenderTransform.render File "renpy/display/accelerator.pyx", line 439, in renpy.display.accelerator.RenderTransform.render_child File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/accelerator.pyx", line 1020, in renpy.display.accelerator.RenderTransform.render File "renpy/display/accelerator.pyx", line 439, in renpy.display.accelerator.RenderTransform.render_child File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "game/script/system/plugins/zoom_viewport/01_zoom_viewport.rpy", line 383, in render File "game/script/system/plugins/zoom_viewport/01_zoom_viewport.rpy", line 319, in redraw_adjustments File "game/script/system/plugins/zoom_viewport/01_zoom_viewport.rpy", line 343, in adjust_pos_for_zoom IndexError: list index out of range
The error appears while the zoom-in animation is already happening, if that helps.
I'd also be happy to send a game build to figure this out in more detail in DMs! (My Discord username is kigyodev.)
That’s very kind of you, thank you! A link to my website (https://kigyodev.com/) should be fine for Steam. Glad my tool has been helpful! :D
I'm really sorry I missed your last comment!
I've personally been using Ren'Py 8 ever since the launch of this tool, but I downloaded 7.8.7 to test this, and I got it to work just fine in a fresh test project.
To make absolutely sure, is your wordcounter file inside of your project's game/ folder? (A screenshot of how your folder structure is set up might also help.)
I'll also admit Ren'Py not respecting your "character counts by speaking character" setting is very strange. Does it only do that if the wordcounter is there, or in general?
Thank you again for this awesome plugin!
Unfortunately, I can't seem to get it working with LayeredImageProxy. It always gives me one of two errors:
When using outline_transform() directly:
File "game/outline_shader.rpy", line 244, in <module> u_width float(width) ~~~~~^^^^^^^ TypeError: float() argument must be a string or a real number, not 'MultiBox'
When using a transform that makes use of outline_transform():
File "game/outline_shader.rpy", line 247, in <module> u_line_color Color(color).rgba ~~~~~^^^^^^^ TypeError: 'MultiBox' object is not iterable
I got these in a sample project simply by doing:
layeredimage eileen base:
always "eileen.png"
image eileen = LayeredImageProxy("eileen base", [outline_transform()])
I'm happy to provide more detail in case there's a specific part of the error message that would help!
Ohhh, please note that wordcounter_hidden_files only hides those specific file statistics from your view - their word counts will still be included in the character-specific and overall totals.
To exclude unused labels entirely, you'd want to look at script_ignore_path instead. Unlike wordcounter_hidden_files, this one makes sure the words won't be counted at all. (Otherwise, they work exactly the same when it comes to file name matching.)
Likewise, I have no idea if this would fully resolve your problem, but maybe simply adding ".rpyc" to script_ignore_path would do the trick for the second issue? I've personally never run into this issue, so I'm unfortunately not sure how to validate it.
Thank you so much for your interest! I'm so glad you enjoyed the stream and had a good time with SpookY2K!
Regarding your question, the two endings that are already in the Demo will more or less stay as they are. We might decide to add more CGs or do minor edits, but no major story changes/additions are planned at the moment.
I'm not sure what's going on with my Ren'Py right now, but since trying 8.4.1 and going back to 8.3.7 due to various errors, all my save files either jump back to the very start of a label, or immediately crash upon being loaded. One of the errors I get when loading a save is:
File "game/script/system/plugins/inline_conditions.rpy", line 544, in check_for_seen_conditional if store.just_seen_conditional: AttributeError: 'StoreModule' object has no attribute 'just_seen_conditional'
It's the type of crash that doesn't just display an error screen, but fully shuts down the game and opens traceback.txt
just_seen_conditional is defaulted correctly, and I've (so far) used inline conditions only in one single line of my game, so I have no idea what's going wrong here. When I remove inline conditions, other variables of mine cause issues as well, but they don't fully shut down the game, so this seems to be the most "severe" one. I'd appreciate any help!
NVM: I did manage to restore my old .rpyc files and all the crash problems have been resolved. While I still don't get why this would affect defaulted variables, this is no longer really problem.
Alright, now I've successfully caused a new problem:

So far, truncate_text runs fine until it actually has to cut something off. Whenever I set ysize or a surrounding fixed to a value smaller than what could contain the full text, it throws the error above. For example:
truncate_text last_phrase text_size 20 ysize 30
Here, last_phrase gets information attached to each save file and is defined on the save screen:
$ last_phrase = FileJson(slot, "last_line", empty="", missing=" ")
While "last_line" is obtained like this:
def the_lastline(d):
mylast_line = getattr(store, '_last_raw_what', '',)
if not mylast_line:
mylast_line = getattr(store, '_last_choice_what', '',)
if mylast_line == "ending":
line_take = str(len(true_endings))+ _("/14 Rehabilitated")
else:
line_take = renpy.substitute(renpy.filter_text_tags(mylast_line, allow=[]))
line_take = line_take.replace("\n", "")
line_take = line_take.replace("\\", "")
line_take = "\"" + line_take + "\""
if line_take == "\"\"":
line_take = ""
d["last_line"] = line_take I don't really know what's going on here, but I could imagine "_last_raw_what" is the issue (getting dialogue text instead of "normal" text).
Any idea for a workaround to make it compatible with truncate_text?
Thank you for reporting this! Unfortunately, I won't be able to resolve this without a major rewrite of the plugin's code, I'm sorry...
The code pays attention to blank spaces after each period or comma, so as long as you avoid those within the shader tag, it should always be fine - not just temporarily.
Wow, thank you so much for all your kind words! I’m glad to hear you’ve enjoyed everything so far and that the love and care I put into this game is noticed and appreciated. :D
I’ll keep working hard and hope you’ll enjoy the coming routes as well. Every character is important to me, so I’m definitely hoping to give Absen and Sed some chances to shine soon. Thank you again!!
This should be doable if you add
or renpy.get_statement_name() == "say-nvl"
to the bigger conditional inside the "add_speech_pauses" function. So it should look like:
def add_speech_pauses(text_input): if prev_filter: text_input = prev_filter(text_input) if persistent.speech_pauses is not True or preferences.text_cps == 0 or renpy.get_statement_name() == "say-nvl": return text_input return speech_pause_adder(text_input)