Context: I have a little animation play out, and while it's playing out, I want the player character's side portrait to be visible, going through a few different emotions in response to the animation, even though the player character isn't speaking at that moment. For the most part, I can use "show" to create this effect. There's one instance where "show" doesn't work the way I want to it, and it's failing in bizarre ways. Here's the closest I've gotten:
Code: Select all
show neon worried at lowerright onlayer overlay
show jbar at offscreen onlayer screens
show jbar at descend
$ renpy.pause(1.50, hard='True')
# THIS PORTRAIT FAILS TO APPEAR
show neon eyesshut at lowerright onlayer overlay
$ target_justice = 400.0 * 0.7
play audio "audio/voice/objectionthwackonly.ogg"
# COMMENTING OUT THIS hpunch LINE ELIMINATES THE PROBLEM OF THE PORTRAIT NOT APPEARING:
show jbar with hpunch
$ renpy.pause(1.50, hard='True')
show neon vexed at lowerright onlayer overlay
This almost works, but the middle "show" statement fails to render the portrait: nothing appears instead. The side portrait area ends up blank until the third "show" statement. Bizarrely, if I change that "show" statement from "onlayer overlay" to "onlayer screens", the portrait appears, but behind the shaded text area of the UI. Also bizarrely, if I comment out the "show jbar with hpunch" line, the portrait appears normally. Finally, if I add a copy of that "show" statement below the "show jbar with hpunch" statement, the portrait DOES appear, but only after the hpunch animation finishes.
I have no idea what's going on. Why do two of the three show statement works normally? Why does the problem show statement only fail on the overlay layer? Why does the problem show statement start succeeding when I stop applying a transform to a different image? I'm baffled. Any ideas or advice?