Statement Equivalents link
To allow Ren'Py to be scripted in Python, each Ren'Py statement has a Python equivalent. This usually consists of a Python function, but may also consist of a pattern of Python calls that perform an action equivalent to the statement.
Note that using statement equivalents in lieu of the original statements usually removes any possible Lint checks and prediction optimizations, making your game less easily checkable and possibly less fluid.
Dialogue link
The Ren'Py Say Statement is equivalent to calling the character object as a function. The following displays the same line twice:
e "Hello, world."
$ e("Hello, world.")
Displaying narration can be done the same way, by using the
narrator
character. When calling a character, it's possible to
supply the keyword argument interact
. When interact
is False,
Ren'Py will display the character dialogue box, and will then
return before performing an interaction.
This equivalence of characters and function objects works in the other direction as well. It is possible to declare a Python function, and then use that function in the place of a character object. For example, the following function uses a variable to choose between two characters.
define lucy_normal = Character("Lucy")
define lucy_evil = Character("Evil Lucy")
init python:
def l(what, **kwargs):
if lucy_is_evil:
lucy_evil(what, **kwargs)
else:
lucy_normal(what, **kwargs)
label start:
$ lucy_is_evil = False
l "Usually, I feel quite normal."
$ lucy_is_evil = True
l "But sometimes, I get really mad!"
A function used in this way should either ignore unknown keyword arguments, or pass them to a character function. Doing this will allow the game to continue working if Ren'Py adds additional keyword arguments to character calls.
Displaying Images link
The image, scene, show, and hide statements each have an equivalent Python function (see Displaying Images for the original statements).
Transitions link
The equivalent of the With Statement is the renpy.with_statement()
function.
Jump link
The equivalent of the Jump Statement is the renpy.jump()
function.
Call link
The equivalent of the Call Statement is the renpy.call()
function.
Pause link
The equivalent of the Pause Statement is the renpy.pause()
function.