API¶
The modding library.
This file contains all the functions needed to modify and extend AwSW.
This file is free software under the GPLv3 license.
-
class
modloader.modgame.AWSWEndingHooks(base_)[source]¶ The ending hooks for the game
Get Chapter 5’s menu on who to go to the fireworks.
Get an instance of
AWSWMenuHooksfor use of making new choices on who to go to the festival with.Returns: An instance of AWSWMenuHooks
-
get_post_izumi_node()[source]¶ Get the post-true Izumi’s tear scene
Returns: A renpy.ast.Saynode object.
-
class
modloader.modgame.AWSWHomeHook(base_)[source]¶ Hook the menu found in the player’s apartment.
-
base¶ AWSWModBase – An instance of the mod base
-
addAnswerMachineCheckHook(dest_node)[source]¶ Check if the answering machine’s output.
Return true if the dialog should pop up and return false if it shouldn’t.
Parameters: dest_node – Can be either a renpy.ast.Nodeor a function.
-
addAnswerMachineScene(dest_node)[source]¶ Add a hook before the answering machine plays
Parameters: dest_node – Can be either a renpy.ast.Nodeor a function. Called after the machine check returns true
-
add_route(title, route_hook, condition='True')[source]¶ Add a route to the chapter menu
The route will only appear if the condition evaluate to true.
Parameters:
-
-
class
modloader.modgame.AWSWModBase[source]¶ The modding framework base.
This class contains all the base functions needed to edit the AST, screens, and screen language.
-
ending_hooks¶ AWSWEndingHooks – An instance of the
AWSWEndingHooks.
-
home_hook¶ AWSWHomeHook – An instance of the
AWSWHOmeHook
-
get_ending_hooks()[source]¶ Get the ending hook class
Returns: An instance of AWSWEndingHooks
-
get_home_hook()[source]¶ Get the home hook class
Returns: The AWSWHomeHookobject
Get the equivalent
AWSWMenuHookobjectReturns: The equivalent AWSWMenuHookobject
-
search_peak_if(node, type_, max_depth=200, skip=0)[source]¶ Search recursively for a node type.
This enters if statement blocks in order to find your specified node type
Parameters: - node (Node) – The starting node
- type (Node) – A subclass, not an instance, of a
renpy.ast.Nodeobject - maxBeforeFailure (int) – How many nodes to iterate through before giving up
Returns: A
renpy.ast.Nodeobject or None if not found
-
-
modloader.modgame.sprnt(str_)[source]¶ Print an encoded string to stdout
Encode the string in UTF-8 before printing it out to stdout This helps avoid Unicode errors
Parameters: string (str) – The string to be printed
Get and modify nodes in the AST tree
This file is free software under the GPLv3 license
-
class
modloader.modast.ASTHook(loc, hook_func_=None, from_op_=None)[source]¶ - A custom
renpy.ast.Nodethat acts as a hook between - other node objects.
Note
Don’t instantiate this class directly. Ren’Py uses an internal serial for the call stack and other uses. This class emulates that at the base class.
-
hook_func¶ A function that’s called when the node is executed. If the function returns a non-None value, the next node will be skipped.
-
from_op¶ The original node before hooking
-
old_next¶ The original next node before hooking was done
- A custom
-
class
modloader.modast.MenuHook(menu_, base_)[source]¶ A hook class for editing a specific menu
-
add_item(label, hook, condition='True')[source]¶ Add a new choice to the menu
Parameters: Returns: None if
hookis arenpy.ast.Nodeor aASTHookifhookis a function
-
delete_item(label)[source]¶ Delete a choice from the menu
Parameters: label (str) – The label to search for
-
get_item(label)[source]¶ Get a choice from the menu
Parameters: label (str) – The label to search for
-
get_items()[source]¶ Get all the items in the menu
Returns: A list of three-element tuples where the format is (label, condition, block), where label is the visible label given to the user, condition is a Python statement that determines whether or not to show the choice, and block is SL code
-
Add a dialog option to a given menu
Parameters: - menu (Menu) – The menu to modify
- option (str) – The option’s text
- node (Node) – The node to execute if the node is selected
-
modloader.modast.call_hook(node, dest_node, func=None, return_node=None)[source]¶ - Hook
functonodeand once executed, redirect execution to dest_node
Parameters: - node (Node) – The node to hook
- dest_node (Node) – the node to go after
nodeis executed - func (function) – The function to call
Returns: An
ASTHookobject- Hook
-
modloader.modast.find_all_hide(hide_name)[source]¶ Find a list of
renpy.ast.Hidenodes based on a stringThis searches the entire AST tree for the all the instances of the specified statement.
Parameters: hide_name (str) – The string to search in Hide nodes Returns: A list of renpy.ast.Nodenodes
-
modloader.modast.find_all_show(show_name)[source]¶ Find a list of
renpy.ast.Shownodes based on a stringThis searches the entire AST tree for the all the instances of the specified statement.
Parameters: show_name (str) – The string to search in Show nodes Returns: A list of renpy.ast.Nodenodes
-
modloader.modast.find_in_source_code(line_number, file_name)[source]¶ Find a node by line number and file name
Note
Line numbers and file names can change between versions. Use the function as a last resort only.
Parameters: Returns: The node or None if it doesn’t meet the criteria provided
-
modloader.modast.find_label(label)[source]¶ Find a label based off of its name
Parameters: label (str) – The label’s name Returns: A renpy.ast.Labelobject
Find menus based off a single menu choice
This searches the entire AST tree to find the menu choice.
Parameters: needle – The menu choice to look for. If needle is a string, search for the string. If needle is a list of strings, the program automatically enters multisearch mode Returns: A list of matching menus
-
modloader.modast.find_python_statement(statement)[source]¶ Find a specific Python node in the entire AST
Parameters: statement (str) – The Python statement to look for Returns: The Python node if found, None if not
-
modloader.modast.find_say(needle)[source]¶ Find a
renpy.ast.Saynode based on what is saidThis searches the entire AST tree for the specified statement.
Parameters: needle (str) – The statement to search for Returns: A renpy.ast.Nodenode
-
modloader.modast.get_node_after_nodes(node, location)[source]¶ Get the
location``th node after ``nodeNote
This skips
ASTHooknodesParameters: - node (Node) – The starting search node
- location (int) – The number of nodes to skip
Returns: A
renpy.ast.Nodeobject
-
modloader.modast.get_renpy_global(key)[source]¶ Get a Ren’Py global
Parameters: key (str) – The dictionary key Returns: The value put into the key or None if it doesn’t exist
-
modloader.modast.get_screen(scr, nodes=None)[source]¶ Get a screen based off of its name
Parameters: - scr (str) – The screen’s name
- nodes (list) – A list of screen variants. If None, default to all screens
Returns: A
renpy.display.screen.Screenobject
-
modloader.modast.get_slscreen(scr, nodes=None)[source]¶ Get a screen’s executable based off of its name
Parameters: - scr (str) – The screen’s name
- nodes (list) – A list of screen variants. If None, default to all screens
Returns: A
renpy.display.screen.Screenobject
-
modloader.modast.hook_label(label, func)[source]¶ Hook a function to a label
Parameters: - label (renpy.ast.Label) – The label
- func (function) – The function to be hooked
Returns: An
ASTHookobject
-
modloader.modast.hook_opcode(node, func)[source]¶ Hook
functonodeParameters: - node (Node) – The node object for the function to hook
- func (function) – The function to be executed when the node is executed
Todo
Check if a hook already exists and make the code more cohesive
Returns: An ASTHookobject
-
modloader.modast.jump_ret(node, dest_node, return_node, func=None)[source]¶ - Hook
functonodeand once executed, redirect execution to dest_nodeand allowreturn_nodeto be executed afterdest_nodereturns
Parameters: - node (Node) – The node to hook
- dest_node (Node) – The node to go after
nodeis executed - return_node (Node) – The node that is executed after
dest_nodereturns - func (function) – The function hook
Returns: An
ASTHookobject- Hook
-
modloader.modast.remove_slif(scr, comparison)[source]¶ Remove a block (equivalent to a Node) from a
renpy.sl2.slast.SLIfobjectParameters: - scr (SLScreen) – The SLScreen node to start the search
- comparison (str) – The comparison string for the expression
Returns: True if removed, False if not
-
modloader.modast.search_for_node_type(node, type_, max_depth=200)[source]¶ Search for a specific type of node
Parameters: - node (Node) – The node to start the search
- type (class) – The node class, not an instance of the class, to search for
- max_depth (int) – The number of nodes to search before giving up Defaults to 200. The higher the number, the slower the process
Returns: A
renpy.ast.Nodeobject if a match occurs or None if no match occurs
-
modloader.modast.search_for_node_with_criteria(node, func, max_depth=200)[source]¶ Search for a node and check with
funcIf
funcreturns a truthy value, return the node. Else, skip itParameters: - node (Node) – The node to start the search
- func (function) – Function to check for the given node. Given one argument,
node (of type
renpy.ast.Node), which is the node that is at the current depth. Do not make the functions complex or it will slow down the game significantly. - max_depth (int) – The number of nodes to search before giving up Defaults to 200. The higher the number, the slower the process
Returns: A
renpy.ast.Nodeobject if a match occurs or None if no match occurs