FolioTier 2
@flash
Punctuate a moment with a full-stage color flash that fades back to the scene.
@flash slams the stage (or a single sprite) to a solid color and lets it fade back, giving you a hard visual punctuation mark for a single frame in time. Reach for it on impacts, camera-flash bulbs, magic bursts, lightning, screen-clearing transitions, or anywhere you want the eye to register a jolt before the scene resumes underneath.
Because it defaults to white at full alpha over a third of a second, the out-of-the-box call reads as a classic photo-flash or explosion beat. Swap color and alpha for softer or thematic hits - a dim red flash for a gunshot, a pale blue flash for a spell - and keep duration short; anything past half a second starts to feel like a fade rather than a flash.
Leave target empty for whole-frame flashes tied to big story beats. Set target to a sprite tag when you want the hit to read as belonging to one character or object - a portrait flashing white on a slap, for instance - without blowing out the rest of the scene.
wait true is the common case, since a flash usually anchors a beat you want the player to sit with before dialogue continues, as in the canonical example. Set wait false when you're layering @flash with other effects, such as a @shake at the same moment, so the two overlap instead of running back to back.
Alpha below 1 tints rather than replaces the scene, which is useful for a lighter gut-punch than a full whiteout. Very low alpha values paired with a long duration can end up looking like a color grade shift instead of a flash, so keep the two parameters in tension with each other.
Demo
@flash
Hello.
A full-stage white pulse. The overlay sits above the stage layer but below the textbox so dialogue remains legible through the flash.
Parameters
| Parameter | Kind | Required | Default | Notes |
|---|---|---|---|---|
| duration | number | no | 0.3 | 0.05-2 seconds. Default 0.3. |
| color | string | no | #ffffff | Hex color (#rgb or #rrggbb) or white/black. Default #ffffff. |
| alpha | number | no | 1 | 0.1-1 (0-1). Default 1. |
| target | string | no | "" | Optional sprite tag; empty targets the whole frame. |
| wait | boolean | no | true | Block for the effect's duration when true; false fires and continues so effects can overlap. |
Canonical example
sprite show explosion-frame
@flash
say "Narrator": "And then everything went white."show explosion frame
with Flash(0.3, "#ffffff")
"And then everything went white."@flash paints a solid color over the entire stage, peaks at the
midpoint of the duration, then fades back to the underlying scene.
The next line advances once the flash has fully cleared.
Notes
Common parameter combinations:
@flash # short white flash, full opacity
@flash(0.6, color=#000000) # slow black drop
@flash(0.15, color=#ff0066, alpha=0.5) # soft magenta pulse
The color is a #rrggbb or #rgb hex literal only - non-hex values
reject at parse time. The importer's deterministic pass lowers Ren'Py
with Flash(...) to this verb; projects that defined custom flash
transforms fall through to the pattern or AI pass.
@flash is cross-target: with no target (the default) the overlay
covers the whole frame, above the sprites; target=backdrop flashes
only the background layer, below the sprites, so the characters stay
clear. In Forge this is the scope - a flash added from the Global
effect event hits the whole frame, one from Background hits the
backdrop.
@flash is a punctuation effect - it doesn't change scene state.
For a longer color-wash transition between scenes, prefer
@fade, which holds the color through a scene
swap.