If you encounter any bugs, please let me know here by replying to this comment. Thanks a ton! ;-; <3
orribu
Creator of
Recent community posts
This project has been such an incredible save for me, as I am of course ✨extra✨ and want to take my game pages to the next level. TwT
On that note, I wanted to reach out to you to commission you if that's okay? I've got most of the framework done, but I need help with a few little things! ;A;
I can't thank you enough for this tool and for all your help!
Hey Fen, is there an example of implementing the "short_forms" functionality from the image tools? I have my attributes ready to go,
show luke auto_mouth_scared brows_scared eyes_scared
and I want to shorten it to
show luke scared_e
As of now, I've set up my layeredimage like so, separating each major part of the character's sprite in order to allow for different combinations of eyes/mouths/eyebrows:
layeredimage luke:
at sprite_highlight('luke')
yoffset 10
format_function EasyBlinkFormat(
no_blink_attrs=["closed_e"], which_group=["eyes"],
numbered=False, reverse=True,
mid_eye_frames=["easy_blink/Lucas/Act1/eyes/eyes neutral_mid@2.png",
"easy_blink/Lucas/Act1/eyes/eyes neutral_closed@2.png"],
blink_framerate=0.05)
group base: ## The Body/pose.
attribute coat_and_bag "easy_blink/Lucas/Act1/bases/Luke_Base withcoat@2.png" default
group mouth:
## MOUTH Neutral
attribute auto_mouth_neutral ConditionSwitch(
"speaking_char == 'luke'", "easy_blink/Lucas/Act1/mouth/mouth neutral_open@2.png",
"True", "easy_blink/Lucas/Act1/mouth/mouth neutral_closed@2.png"
) default
attribute mouth_neutral_closed "easy_blink/Lucas/Act1/mouth/mouth neutral_closed@2.png"
## MOUTH Scared/Startled
attribute auto_mouth_scared ConditionSwitch(
"speaking_char == 'luke'", "easy_blink/Lucas/Act1/mouth/mouth scared_open@2.png",
"True", "easy_blink/Lucas/Act1/mouth/mouth scared_closed@2.png"
)
attribute mouth_scared_closed "easy_blink/Lucas/Act1/mouth/mouth scared_closed@2.png"
group eyebrows:
## EYEBROWS Neutral
attribute brows_neutral "easy_blink/Lucas/Act1/eyebrows/eyebrows neutral@2.png" default
## EYEBROWS Scared
attribute brows_scared "easy_blink/Lucas/Act1/eyebrows/eyebrows scared@2.png"
group eyes:
## EYES Neutral
attribute eyes_neutral "easy_blink/Lucas/Act1/eyes/eyes neutral_open@2.png" default
# attribute closed_e "easy_blink/Lucas/Act1/Lucas-Act1 eyes_closed.png"
## EYES Scared
attribute eyes_scared dict(path="easy_blink/Lucas/Act1/eyes/eyes scared_open@2.png",
mid_eye_frames=["easy_blink/Lucas/Act1/eyes/eyes scared_mid@2.png", "easy_blink/Lucas/Act1/eyes/eyes scared_closed@2.png"])
How would I go about achieving that? ;-;
Oop Hey there Wattson! Turns out that was user syntax error on my part--I used this as part of a custom text tag (I can't quite wrap my head around omegatags just yet) and opened the "i" renpy.TEXT_TAG with a curly bracket instead of an open parenthesis.
I did want to follow up--i'm having trouble getting the custom tags to combine the kinetic tags with custom fonts. Is there something I can do about that?
Thank you again for making such a fun tool! :D
Hey there, Fen! I've run into the following error:
```
I'm sorry, but an uncaught exception occurred.
Executing ATL code at game/image_tools/outline_shader.rpy:274
File "game/image_tools/outline_shader.rpy", line 67, in script
TypeError: 'bool' object is not iterable
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/image_tools/outline_shader.rpy", line 67, in script
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\ast.py", line 1124, in execute
show_imspec(self.imspec, atl=getattr(self, "atl", None))
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\ast.py", line 1087, in show_imspec
renpy.config.show(name,
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\exports\displayexports.py", line 503, in show
sls.add(layer, img, key, zorder, behind, at_list=at_list, name=name, atl=atl, default_transform=default_transform, transient=transient)
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\display\scenelists.py", line 444, in add
if not self.hide_or_replace(layer, remove_index, "replaced"):
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\display\scenelists.py", line 508, in hide_or_replace
d = oldsle.displayable._in_current_store()._hide(now - st, now - at, prefix)
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\display\transform.py", line 945, in _hide
self.update_state()
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\display\transform.py", line 1235, in update_state
fr = self.execute(self, fst, fat)
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\atl.py", line 798, in execute
action, arg, pause = block.execute(trans, timebase, self.atl_state, events)
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\atl.py", line 1043, in execute
action, arg, pause = stmt.execute(trans, target - start, child_state, events)
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\atl.py", line 1660, in execute
value = interpolate(complete, old, new, PROPERTIES[k])
File "C:\Users\olive\Desktop\renpy-8.3.7-sdk\renpy\atl.py", line 249, in interpolate
return tuple(interpolate(t, i, j, ty) for i, j, ty in zip(a, b, typ))
TypeError: 'bool' object is not iterable
Windows-10-10.0.22631 AMD64
Ren'Py 8.3.7.25031702
introLUCAS 0.1.7
Sun May 18 01:28:29 2025
```
Please advise! ; -; / <3
Hey there! I've encountered an issue using the bounce tag while testing my current build and I was wondering if I could get your help with it:
```
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/MVNSB.rpy", line 45, in SB_say
return who(what, *args, **kwargs)
File "game/kinetic_text_tags.rpy", line 3708, in bounce_tag
File "game/kinetic_text_tags.rpy", line 3708, in add_tags
KeyError: 'i'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "//game/script.rpyc", line 751, in script
File "/renpy/ast.py", line 2586, in execute
Say.execute(self)
File "/renpy/ast.py", line 623, in execute
renpy.exports.say(who, what, *args, **kwargs)
File "game/MVNSB.rpy", line 45, in SB_say
return who(what, *args, **kwargs)
File "/renpy/character.py", line 1471, in __call__
self.do_display(who, what, cb_args=self.cb_args, dtt=dtt, **display_args)
File "/renpy/character.py", line 1117, in do_display
display_say(who,
File "/renpy/character.py", line 796, in display_say
what_text.update()
File "/renpy/text/text.py", line 2321, in update
tokens = self.apply_custom_tags(tokens)
File "/renpy/text/text.py", line 2933, in apply_custom_tags
new_contents = func(tag, value, contents)
File "game/kinetic_text_tags.rpy", line 3708, in bounce_tag
File "game/kinetic_text_tags.rpy", line 3708, in add_tags
File "/renpy/revertable.py", line 90, in do_mutation
return method(self, *args, **kwargs)
KeyError: 'i'
Emscripten-3.1.24-wasm32-32bit wasm32
Ren'Py 8.3.7.25031702
introLUCAS 0.1
Thu May 8 21:09:16 2025
```
Hey Feniks! Thank you so, so much for your incredible contributions to the Ren'Py community! ;_; <3
Is there a step-by-step guide to using this tool, or a setup similar to the layered image visualizer tool where I can see the layered images as I work with them? I'm sorry if this question isn't clear! ;-; <3
Hallo Naoimh! Thanks a ton for getting back to me! ;v;
I have edited line 4 and I think I have the four arguments (key, compare words, title, and description) filled out .
I am kind of using a custom UI as well, but I'm still using the built-in tags just styled differently--I have no idea if that affects anything! ;v;





