Much love, thanks so much for the tutorial, the snippets, and even for explaining what's going on in the code! I appreciate your help! ;0; / <3
orribu
Creator of
Recent community posts
This was a wonderful little experience and I would ADORE an expansion on it!
I love the act of opening the box of lost little items, pulling them out and sorting them around the office before starting the day. Something about that little routine really pulled me into a sense of calm and excitement to the point where I found myself wanting to talk to the little items, hang the hat on the coat rack, and sort the items into little drawers and shelves around the scene.
Meeting each character was a treat, and saying hello again to familiar faces left an impression on me to the point where I was SO TEMPTED to draw some of them! I'm writing this as I'm just relaxing and playing, and I just met Clara for the second time--I know that item she lost is totally hers. >w>
And seeing someone's wallet for the second time made me do a double-take!
All in all, this was such a fun game and I'm going to play it through 'till the end. Thank you so much for the experience!
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;





