RBF is strong with Red Embrace characters. Thumbnail is Discord member @mnky82’s Halloween Peep.
Red Embrace (for Google Play) is back in testing. We ended up converting all the sprites to
layeredimages, which then required an update to how we manage expression changes. Previously, the same code would work for both on-screen and side portrait sprites. Now, they are invoked differently. Showing on-screen sprites with expression changes requires the
renpy.with_statement(trans=None) renpy.show(char + " brow_" + brow + " eyes_" + eyes + " mouth_" + mouth + " " + extra_args, at_list=at_list) renpy.with_statement(trans=trans)
while changing expressions for side portraits only requires changing a global variable
isaac_eyes = "neutral". Since we are still reusing our previous function for both of sprite versions, we had to add some extra conditions.
if not portrait and \ not (char.split() == "isaac" and isaac_portrait) and \ not (char.split() == "dom" and dom_portrait) and \ ... # call show char stack
$ luka_portrait = True lp '"I\'d better not get any weird calls from you…"' $ luka_brow = "angry" $ luka_eyes = "side" $ luka_mouth = "shout" lp '"I\'ll block you the second you start saying gross crap to me!"' $ luka_portrait = False
The ability to change side portrait expressions without the
show stack is due to not needing to use dissolve transitions between expression changes. We added callbacks to all our character definitions:
def _luka_callback(event, interact=True, **kwargs): if not interact: return if event == "begin": store._side_image_attributes = ("side", "luka_p", "brow_" + globals()["luka_brow"], "eyes_" + globals()["luka_eyes"], "mouth_" + globals()["luka_mouth"]) define lp = Character("Luka", ctc="ctc_pic", image="luka_p", window_left_padding=340, window_right_padding=120, color="#ddd7d7", callback=_luka_callback)
The case of massive RBF comes from forgetting to reset the
_portrait = False flag when switching from side portrait to on-screen sprite mode. If that switch is not turned off, then on-screen sprites will not have expression changes (as the game expects the expressions to update automatically).