Editing Event Reference

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 8: Line 8:


=== battle_is ===
=== battle_is ===
Check to see if a character has fought against another one and won, lost or draw.
Check to see if the player has fought against NPC and won, lost or draw.


'''Parameters'''  
'''Parameters'''  
* <code>fighter</code>: Npc slug name (e.g. "npc_maple").
* <code>character</code>: Npc slug name (e.g. "npc_maple").
* <code>outcome</code>: One among "won", "lost" or "draw".
* <code>result</code>: One among "won", "lost" or "draw".
* <code>opponent</code>: Npc slug name (e.g. "npc_maple").


'''Examples'''  
'''Examples'''  
* <code>is battle_is player,won,npc_maple</code> (has player won against npc_maple in the last fight?)
* <code>is battle_is npc_maple,won</code>


=== button_pressed ===
=== button_pressed ===
Line 27: Line 26:
* <code>is button_pressed K_RETURN</code>   
* <code>is button_pressed K_RETURN</code>   
* <code>is button_pressed K_ESCAPE</code>   
* <code>is button_pressed K_ESCAPE</code>   
* <code>not button_pressed K_SPACE</code>  
* <code>not button_pressed K_SPACE</code>


=== char_at ===
=== combat_started ===
Check to see if the character is at the condition position on the map.
Check to see if combat has currently started.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>None</code>


'''Examples'''  
'''Examples'''  
* <code>is char_at Maple</code>
* <code>is combat_started</code>


=== char_defeated ===
=== dialog_open ===
Check to see the character has at least one tuxemon, and all tuxemon in their party are defeated.
Check to see if a dialog window is currently open.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>None</code>


'''Examples'''  
'''Examples'''  
* <code>is char_defeated player</code>
* <code>is dialog_open</code> 
* <code>not dialog_open</code>


=== char_exists ===
=== has_bag ===
Check to see if a character object exists in the current list of NPCs.
Check to see how many items are in the bag.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>operator</code>: Numeric comparison operator. Accepted values are <code>less_than</code>, <code>less_or_equal</code>, <code>greater_than</code>, <code>greater_or_equal</code>, <code>equals</code> and <code>not_equals</code>.
* <code>value</code>: The value to compare the bag with.


'''Examples'''  
'''Examples'''  
* <code>not char_exists npc_maple</code>
* <code>is has_bag equals,5</code> (player's bag: 5 potions and 2 tuxeball (5 items), in this case is true because 5 = 5)
* <code>is has_bag equals,9</code> (player's bag: 5 potions and 2 tuxeball (5 items), in this case is false because 9 != 5)


=== char_facing ===
=== has_box ===
Check to see where a character is facing.
Check to see how many monsters are in the box.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>operator</code>: Numeric comparison operator. Accepted values are <code>less_than</code>, <code>less_or_equal</code>, <code>greater_than</code>, <code>greater_or_equal</code>, <code>equals</code> and <code>not_equals</code>.
* <code>direction</code>: One of "up", "down", "left" or "right".
* <code>value</code>: The value to compare the party with.
* <code>box</code>: The box name.


'''Examples'''  
'''Examples'''  
* <code>is char_facing npc_maple,up</code> 
* <code>is has_box Kennel,less_than,1</code>
* <code>not char_facing npc_maple,down</code>


=== char_facing_char ===
=== has_item ===
Check to see the character is next to and facing a particular character.
Check to see if a NPC inventory contains something.


'''Parameters'''  
'''Parameters'''  
* <code>character1</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>character2</code>: Either "player" or npc slug name (e.g. "npc_maple").
'''Examples'''
* <code>is char_facing_char npc_maple,player</code>
=== char_facing_tile ===
Check to see if a character is facing a tile position.
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
'''Examples'''
* <code>is char_facing_tile npc_maple</code> 
=== char_in ===
Check to see if the character is at the condition position on a specific set of tiles.
'''Parameters''' 
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>value</code>: value (eg surfable) inside the tileset.
* <code>item</code>: The item slug name (e.g. "item_cherry").
* <code>operator</code>: Numeric comparison operator. Accepted values are <code>less_than</code>, <code>less_or_equal</code>, <code>greater_than</code>, <code>greater_or_equal</code>, <code>equals</code> and <code>not_equals</code>.
* <code>quantity</code>: Quantity to compare with. (optional)


'''Examples'''  
'''Examples'''  
* <code>is char_in npc_maple,surfable</code>
* <code>is has_item player,potion</code>
* <code>is has_item player,potion,greater_than,2</code>


=== char_moved ===
=== has_monster ===
Check to see the character has just moved into this tile. Using this condition will prevent a condition like "char_at" from constantly being true every single frame.
Checks to see the player has a monster in his party.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>monster_slug</code>: The slug of the monster to check for.


'''Examples'''  
'''Examples'''  
* <code>is char_moved player</code>
* <code>is has_monster txmn_pigabyte</code>


=== char_sprite ===
=== has_party_breeder ===
Check the character's sprite
Check to see if the player has a male and female monster in the party (monster not basic, basic is the first step in the evolution stage).
 
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>sprite</code>: NPC's sprite (eg maniac, florist, etc.)


'''Examples'''  
'''Examples'''  
* <code>is char_sprite player,adventurer</code>
* <code>is has_party_breeder</code>


=== check_char_parameter ===
=== has_sprite ===
Check the parameter's value of the character against a given value.
Check to see if a NPC has a specific sprite.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>sprite</code>: Sprite slug (eg. adventurer, heroine, swimmer, etc.)
* <code>parameter</code>: Name of the parameter to check (eg. "name", "steps", etc.).
* <code>value</code>: Given value to check.


'''Examples'''  
'''Examples'''  
* <code>is check_char_parameter player,name,alpha</code>
* <code>is has_sprite swimmer</code>


=== check_evolution ===
=== has_tech ===
Check to see the character has at least one tuxemon evolving. If yes, it'll save the monster and the evolution inside a list. The list will be used by the event action <code>evolution</code>.
Check to see if the player has a technique in his party (one of the monsters).


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>technique</code>: Technique slug name (e.g. "bullet").


'''Examples'''  
'''Examples'''  
* <code>is check_evolution player</code>
* <code>is has_tech bullet</code>


=== check_max_tech ===
=== money_is ===
Check to see the player has at least one tuxemon with more than the max number of techniques in its party. If yes, then it saves automatically the monster_id and inside the dictionary event_data.
Check to see if the player has a certain amount of money (pocket).


'''Parameters'''  
'''Parameters'''  
* <code>nr</code>: Number of tech, default the constant
* <code>slug</code>: Slug name (player).
* <code>operator</code>: One of "==", "!=", ">", ">=", "<" or "<=".
* <code>amount</code>: Amount of money.


'''Examples'''  
'''Examples'''  
* <code>is check_max_tech</code>
* <code>is money_is player,>=,500</code>
* <code>is check_max_tech 2</code>


=== check_mission ===
=== monster_flair ===
Check to see the player has failed or completed a mission. Check to see if a mission is still pending.
Check to see if the given monster flair matches the expected value.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>slot</code>: Position of the monster in the player monster list.
* <code>method</code>: Mission or missions, "all" means all the existing missions.
* <code>property</code>: Category of the flair.
* <code>staths</code>: pending, completed or failed   
* <code>name</code>: Name of the flair.


'''Examples'''  
'''Examples'''  
* <code>is check_mission player,mission1,completed</code>
* <code>to be defined</code>
* <code>is check_mission player,mission1,pending</code>
* <code>is check_mission player,mission1:mission2,completed</code>
* <code>is check_mission player,all,completed</code>


=== check_party_parameter ===
=== monster_property ===
Check to see the player has failed or completed a mission. Check to see if a mission is still pending.
Check to see if a monster in the party has one of the following property.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>property</code>: Property of the monster to check (e.g. "level"). Valid values are: slug, level, level_reached, stage, shape, taste_cold, taste_warm, type, gender and tech.
* <code>attribute</code>: Name of the monster attribute to check (e.g. level).  
* <code>value</code>: Value to compare the property with.
* <code>value</code>: Value to check (related to the attribute) (e.g. 5 - level).
* <code>operator</code>: Numeric comparison operator. Accepted values are "less_than", "less_or_equal", "greater_than", "greater_or_equal", "equals" and "not_equals".
* <code>times</code>: Value to check with operator (how many times in the party?).  


'''Examples'''  
'''Examples'''  
* <code>check_party_parameter player,level,5,equals,1</code> (is there 1 monster in the party at level 5? True/False)
* <code>is monster_property level,15</code>
* <code>is monster_property gender,male</code>
* <code>is monster_property stage,standalone</code>
* <code>is monster_property shape,aquatic</code>


=== check_world ===
=== music_playing ===
Check some world's parameter against a given value.  
Check to see if the specified music file is currently playing.


'''Parameters'''  
'''Parameters'''  
* <code>parameter</code>: Name of the parameter to check (eg. "layer", etc.).
* <code>music_file</code>: The music file to check.
* <code>value</code>: Given value to check.
 
'''Supported parameters'''
* '''layer''': color value which is used to overlay the world
* '''bubble''': speech bubble of an npc


'''Examples'''  
'''Examples'''  
* <code>is check_world</code>
* <code>is music_playing 472452_8-Bit-Ambient.ogg</code>
* <code>is check_world layer,255:255:255:0</code>


=== current_state ===
=== npc_at ===
Check to see if one or multiple state/states has/have been started or not.
Check to see if the npc is inside the event's area. This event will check the event object's <code>X</code>, <code>Y</code>, <code>Width</code>, and <code>Height</code> properties and checks to see if the npc is within those bounds. That includes event areas that are greater than one tile in size. You can optionally include an <code>x,y</code> parameter to specify a single tile location.


'''Parameters'''  
'''Parameters'''  
* <code>state</code>: Either "CombatState", "DialogState", etc
* <code>name</code>: The name of the NPC.   
* <code>x</code>: X tile coordinates that the player is at (optional) 
* <code>y</code>: Y tile coordinate that the player is at (optional)


'''Examples'''  
'''Examples'''  
* <code>is current_state DialogState</code>
* <code>is npc_at Maple</code>
* <code>is current_state CombatState:DialogState</code>
* <code>is npc_at Maple,4,3</code>


=== has_bag ===
=== npc_exists ===
Check to see how many items are in the character's bag. It doesn't count invisible items.
Check to see if an NPC exists on the current map with <code>npc_name</code>.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>npc_name</code>: The name of the NPC on the current map.
* <code>operator</code>: Numeric comparison operator. Accepted values are <code>less_than</code>, <code>less_or_equal</code>, <code>greater_than</code>, <code>greater_or_equal</code>, <code>equals</code> and <code>not_equals</code>.
* <code>value</code>: The value to compare the bag with.


'''Examples'''  
'''Examples'''  
* <code>is has_bag player,equals,5</code> (player's bag: 5 potions and 2 tuxeball (5 items), in this case is true because 5 = 5)
* <code>not npc_exists Apple</code>
* <code>is has_bag player,equals,9</code> (player's bag: 5 potions and 2 tuxeball (5 items), in this case is false because 9 != 5)


=== has_box ===
=== npc_facing_tile ===
Check to see how many monsters are in the character's box.
Check to see if the npc is facing a particular tile. This event will check the event object's <code>X</code>, <code>Y</code> coordinates for the tile to check for.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>name</code>: The name of the NPC.  
* <code>operator</code>: Numeric comparison operator. Accepted values are <code>less_than</code>, <code>less_or_equal</code>, <code>greater_than</code>, <code>greater_or_equal</code>, <code>equals</code> and <code>not_equals</code>.
* <code>value</code>: The value to compare the party with.
* <code>box</code>: The box name.


'''Examples'''  
'''Examples'''  
* <code>is has_box player,Kennel,less_than,1</code>
* <code>is npc_facing_tile Maple</code>


=== has_item ===
=== npc_facing ===
Check to see if a NPC inventory contains something.
Check to see if the npc is facing: <code>up</code>, <code>down</code>, <code>left</code> or <code>right</code>.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>name</code>: The name of the NPC.  
* <code>item</code>: The item slug name (e.g. "item_cherry").
* <code>direction</code>: Direction to check for: (<code>up</code>, <code>down</code>, <code>left</code>, <code>right</code>)
* <code>operator</code>: Numeric comparison operator. Accepted values are <code>less_than</code>, <code>less_or_equal</code>, <code>greater_than</code>, <code>greater_or_equal</code>, <code>equals</code> and <code>not_equals</code>.
* <code>quantity</code>: Quantity to compare with. (optional)


'''Examples'''  
'''Examples'''  
* <code>is has_item player,potion</code>
* <code>is npc_facing Maple,up</code>
* <code>is has_item player,potion,greater_than,2</code>
* <code>not npc_facing Maple,down</code>


=== has_monster ===
=== once ===
Check to see if a character has a monster in its party.
Checks the date saved in the variables with today's date.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>timeframe</code>: nr of days the event stays "blocked" (eg. 1, 7, etc.)
* <code>monster_slug</code>: Monster slug name (e.g. "rockitten").
* <code>variable</code>: Variable where the date is stored.


'''Examples'''  
'''Examples'''  
* <code>is has_monster player,rockitten</code>
* <code>set_variable variable_name:today</code> 
* <code>is once 1,variable_name</code> (it blocks the event for 1 day)
or
* <code>is once 7,variable_name</code> (it blocks the event for 7 days - 1 week)


=== has_party_breeder ===
=== party_infected ===
Check to see if the character has a male and female monsters not basic (first evolution stage) in the party.
Check to see how many monster are infected and stores the iids.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>value</code>: all, some or none.


'''Examples'''  
'''Examples'''  
* <code>is has_party_breeder player</code>
* <code>is party_infected some</code>


=== has_tech ===
=== party_size ===
Check to see if the player has a technique in his party (one of the monsters).
Perform a check on the player's party size. The <code>check</code> parameter can be: <code>equals</code>, <code>less_than</code>, or <code>greater_than</code>.


'''Parameters'''  
'''Parameters'''  
* <code>technique</code>: Technique slug name (e.g. "bullet").
* <code>operator</code>: Numeric comparison operator. Accepted values are <code>less_than</code>, <code>less_or_equal</code>, <code>greater_than</code>, <code>greater_or_equal</code>, <code>equals</code> and <code>not_equals</code>.
* <code>party_size</code>: The size of the party to check against.


'''Examples'''  
'''Examples'''  
* <code>is has_tech bullet</code>
* <code>is party_size less_than,1</code> 
* <code>not party_size equals,0</code> 
* <code>is party_size greater_than,4</code>


=== location_inside ===
=== player_at ===
Check to see if the player is inside.
Check to see if the player is inside the event's area. This event will check the event object's <code>X</code>, <code>Y</code>, <code>Width</code>, and <code>Height</code> properties and checks to see if the player is within those bounds. That includes event areas that are greater than one tile in size. You can optionally include an <code>x,y</code> parameter to specify a single tile location.
 
'''Examples'''
* <code>is location_inside</code>
 
=== location_name ===
Check to see if the player is in a certain location name.


'''Parameters'''  
'''Parameters'''  
* <code>technique</code>: Slug name. It's the name inside the maps. eg. <code><property name="slug" value="routeb"/></code>, so slug = routeb
* <code>x</code>: X tile coordinates that the player is at (optional) 
* <code>y</code>: Y tile coordinate that the player is at (optional)


'''Examples'''  
'''Examples'''  
* <code>is location_name routeb</code>
* <code>is player_at</code>
* <code>is location_name routea:routeb</code>
* <code>is player_at 4,3</code>


=== location_type ===
=== player_defeated ===
Check to see if the player is in a certain location type.
Check to see the player has at least one tuxemon, and all tuxemon in their party are defeated.


'''Parameters'''  
'''Parameters'''  
* <code>slug</code>: Slug name. Either all, notype, town, route, clinic, shop, dungeon
* <code>None</code>


'''Examples'''  
'''Examples'''  
* <code>is location_type town</code>
* <code>is player_defeated</code>
* <code>is location_type town:shop:clinic</code>


=== money_is ===
=== player_facing_npc ===
Check to see if the player has a certain amount of money (pocket).
Check to see if the player is facing an NPC with the name <code>npc_name</code>.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>npc_name</code>: The name of the NPC on the current map.
* <code>operator</code>: Numeric comparison operator. Accepted values are "less_than", "less_or_equal", "greater_than", "greater_or_equal", "equals" and "not_equals".
* <code>amount</code>: Amount of money or value stored in variable.


'''Examples'''  
'''Examples'''  
* <code>is money_is player,>=,500</code>
* <code>is player_facing_npc Apple</code>
* <code>is money_is player,equals,name_variable</code> (name_variable:75)


=== monster_flair ===
=== player_facing_tile ===
Check to see if the given monster flair matches the expected value.
Check to see if the player is facing a particular tile. This event will check the event object's <code>X</code>, <code>Y</code> coordinates for the tile to check for.


'''Parameters'''  
'''Parameters'''  
* <code>slot</code>: Position of the monster in the player monster list.
* <code>value</code>: value (eg surfable) inside the tileset (optional)
* <code>property</code>: Category of the flair.
* <code>name</code>: Name of the flair.


'''Examples'''  
'''Examples'''  
* <code>to be defined</code>
* <code>is player_facing_tile</code>
 
* <code>is player_facing_tile surfable</code>
=== music_playing ===
Check to see if the specified music file is currently playing.


'''Parameters'''
=== player_facing ===
* <code>music_file</code>: The music file to check.
Check to see where an NPC is facing.


'''Examples'''  
'''Parameters'''   
* <code>is music_playing 472452_8-Bit-Ambient.ogg</code>  
* <code>direction</code>: One of "up", "down", "left" or "right".
 
=== once ===
Checks the date saved in the variables with today's date.
 
'''Parameters'''
* <code>timeframe</code>: nr of days the event stays "blocked" (eg. 1, 7, etc.)
* <code>variable</code>: Variable where the date is stored.


'''Examples'''  
'''Examples'''  
* <code>set_variable variable_name:today</code> 
* <code>is player_facing right</code>
* <code>is once 1,variable_name</code> (it blocks the event for 1 day)
or
* <code>is once 7,variable_name</code> (it blocks the event for 7 days - 1 week)


=== one_of ===
=== player_in ===
Check to see if at least 1 among multiple values in a variable is True. If the variable does not exist it will return ``False``.
Check to see if the player is at the condition position on a specific set of tiles.


'''Parameters'''  
'''Parameters'''
* <code>variable</code>: The variable to check.
* <code>value</code>: value (eg surfable) inside the tileset.
* <code>values</code>: Value to check for (multiple values separated by ":").


'''Examples'''  
'''Examples'''  
* <code>is one_of stage_of_day,afternoon:dusk:morning</code>
* <code>is player_in surfable</code>


=== party_infected ===
=== player_moved ===
Check to see how many monster are infected in the character's party.
Check to see the player has just moved into this tile. Using this condition will prevent a condition like "player_at" from constantly being true every single frame. Check if player destination collides with event, if it collides, wait until destination changes. It become True after collides and destination has changed. These rules ensure that the event is true once player in in the tile and is only true once.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>None</code>
* <code>value</code>: all, some or none.


'''Examples'''  
'''Examples'''  
* <code>is party_infected some</code>
* <code>is player_moved</code>


=== party_size ===
=== to_talk ===
Check the character's party size. The <code>check</code> parameter can be: <code>equals</code>, <code>less_than</code>, or <code>greater_than</code>.
Check if we are attempting interact with a map condition tile.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>character</code>: Npc slug name (e.g. "npc_maple").
* <code>operator</code>: Numeric comparison operator. Accepted values are <code>less_than</code>, <code>less_or_equal</code>, <code>greater_than</code>, <code>greater_or_equal</code>, <code>equals</code> and <code>not_equals</code>.
* <code>party_size</code>: The size of the party to check against.


'''Examples'''  
'''Examples'''  
* <code>is party_size less_than,1</code> 
* <code>is to_talk npc_maple</code>
* <code>not party_size equals,0</code> 
* <code>is party_size greater_than,4</code>


=== to_use_tile ===
=== to_use_tile ===
Line 391: Line 334:
* <code>operator</code>: Numeric comparison operator. Accepted values are "less_than", "less_or_equal", "greater_than", "greater_or_equal", "equals" and "not_equals".
* <code>operator</code>: Numeric comparison operator. Accepted values are "less_than", "less_or_equal", "greater_than", "greater_or_equal", "equals" and "not_equals".
* <code>percentage</code>: Number between 0.1 and 1.0
* <code>percentage</code>: Number between 0.1 and 1.0
* <code>total</code>: Total, by default the total number of tuxemon.


'''Examples'''  
'''Examples'''  
* <code>is tuxepedia less_than,0.2</code>
* <code>is tuxepedia less_than,0.2</code>
* <code>is tuxepedia less_than,0.2,10</code>


=== variable_is ===
=== variable_is ===
Line 402: Line 343:
'''Parameters'''  
'''Parameters'''  
* <code>value1</code>: Either a variable or a number.
* <code>value1</code>: Either a variable or a number.
* <code>operation</code>: Numeric comparison operator. Accepted values are "less_than", "less_or_equal", "greater_than", "greater_or_equal", "equals" and "not_equals".
* <code>operation</code>: One of "==", "!=", ">", ">=", "<" or "<=".
* <code>value2</code>: Either a variable or a number.
* <code>value2</code>: Either a variable or a number.


Line 448: Line 389:


'''Parameters'''  
'''Parameters'''  
* <code>item_name</code>: Monster slug to look up in the monster database or name variable where it's stored the mon_slug.
* <code>item_name</code>: The name of the item to add as defined in the monster JSON under <code>resources/db/item</code>.
* <code>quantity</code>: Quantity of the item to add or to reduce. By default it is 1. (optional)
* <code>trainer_slug</code>: Slug of the trainer that will receive the item. It defaults to the current player. (optional)


'''Examples'''  
'''Examples'''  
* <code>add_item hatchet</code>
* <code>add_item hatchet</code>
* <code>add_item hatchet,2</code>
* <code>add_item hatchet,2,npc_maple</code>


=== add_monster ===
=== add_monster ===
Line 475: Line 412:


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id.
* <code>monster_id</code>: Id of the monster (name of the variable).
* <code>technique</code>: Slug of the technique (e.g. "bullet").
* <code>technique</code>: Slug of the technique (e.g. "bullet").
* <code>power</code>: Power between 0.0 and 3.0. (optional)
* <code>power</code>: Power between 0.0 and 3.0. (optional)
* <code>potency</code>: Potency between 0.0 and 1.0. (optional)
* <code>potency</code>: Potency between 0.0 and 1.0. (optional)
* <code>accuracy</code>: Accuracy between 0.0 and 1.0. (optional)
* <code>accuracy</code>: Accuracy between 0.0 and 1.0. (optional)
* <code>npc_slug</code>: npc slug name (e.g. "npc_maple") - if absent default "player" (optional)


'''Examples'''  
'''Examples'''  
* <code>get_player_monster name_variable</code>
* <code>get_player_monster name_variable</code>
* <code>add_tech name_variable,bullet</code>
* <code>add_tech name_variable,bullet</code>
=== battles_print ===
Print the current value of battle history to the console. If no variable is specified, print out values of all battles.
'''Parameters'''
* <code>character</code>: Npc slug name (e.g. "npc_maple"). (optional)
* <code>result</code>: One among "won", "lost" or "draw". (optional)
'''Examples'''
* <code>battles_print</code>
* <code>battles_print [character,result]</code>


=== breeding ===
=== breeding ===
Line 499: Line 448:


'''Parameters'''  
'''Parameters'''  
* <code>event_name</code>: The name of the event whose actions should be executed.   
* <code>event_id</code>: The id of the event whose actions should be executed.   


'''Examples'''   
'''Examples'''   
* <code>call_event name_event</code>     
* <code>call_event 11</code>     
* <code>call_event 8</code>


=== change_bg ===
=== change_bg ===
Change the background.
Change the background. It's advisable end the bg sequence with "end"
Eg:
act1 change_bg filename
act2 change_bg end


'''Parameters'''   
'''Parameters'''   
* <code>background</code>:
* <code>background</code>: the name of the file without ".PNG". The files must be inside the folder (gfx/ui/background/). Ideal size: 240x160
* it can be the name of the file (see below note)
* it can be a RGB color separated by ":" (eg 255:0:0)
* <code>image</code>: monster_slug or template_slug or path
* if path, then "gfx/ui/background/"
* if template (eg. ceo) in "gfx/sprites/player"
* note: the background or image (if not monster or template) must be inside the folder (gfx/ui/background/)
* background size: 240x160
 


'''Examples'''  
'''Examples'''  
* <code>change_bg gradient_blue,rockitten</code>
* <code>change_bg background</code>
* <code>change_bg gradient_blue,ceo</code>
* <code>change_bg gradient_blue</code>
* <code>change_bg</code> (stop)
 
=== change_taste ===
hanges tastes monster.
 
'''Parameters''' 
* <code>variable</code>: Name of the variable where to store the monster id.
* <code>taste</code>: Warm or cold.
 
'''Examples'''
* <code>change_taste name_variable,warm</code>


=== change_state ===
=== change_state ===
Line 539: Line 471:
'''Parameters'''   
'''Parameters'''   
* <code>state_name</code>: The state name to switch to (e.g. PCState).
* <code>state_name</code>: The state name to switch to (e.g. PCState).
* <code>optional</code>: Variable related to specific states (e.g. variable with monster_id for '''MonsterInfo''', monster slug for '''JournalInfoState''' and character slug for '''CharacterState'''). (Optional)


'''Examples'''  
'''Examples'''  
* <code>change_state PCState</code>
* <code>change_state PCState</code>
* <code>change_state JournalInfoState,rockitten</code>
=== char_face ===
Make the character face a certain direction.
'''Parameters''' 
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>direction</code>: Direction to make the character's face. Can be set to: <code>left</code>, <code>right</code>, <code>up</code>, or <code>down</code>.
'''Examples'''
* <code>char_face player,down</code>
* <code>char_face npc_maple,right</code>
=== char_look ===
Make a character look around.
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>frequency</code>: Frequency of movements. 0 to stop looking. If set to a different value it will be clipped to the range [0.5, 5]. If not passed the default value is 1.   
* <code>directions</code>: the direction the npc is going to look, by default all. (optional)
'''Examples'''
* <code>char_look character</code> 
* <code>char_look character,,right:left</code>
=== char_move ===
Relative tile movement for character.
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
'''Examples'''
* <code>char_move spyder_homemakerpapertown, down 1, right 1, up 1, left 1</code> 
=== char_plague ===
Set the character as infected, inoculated or healthy.
'''Parameters'''
* <code>condition</code>: Infected, inoculated or healthy.
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple"). (optional)
'''Examples'''
* <code>char_plague infected,npc_maple</code> 
=== char_run ===
Set the character movement speed to the global run speed.
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
'''Examples'''
* <code>char_run npc_mom</code>
=== char_speed ===
Set the character movement speed to a custom value.
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>speed</code>: Speed amount.
'''Examples'''
* <code>char_speed npc_mom,0.2</code>
=== char_stop ===
Make the character stop moving.
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
'''Examples'''
* <code>char_stop npc_mom</code>
=== char_walk ===
Set the character movement speed to the global walk speed.
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
'''Examples'''
* <code>char_walk npc_mom</code>
=== char_wander ===
Make a character wander around the map.
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>frequency</code>: Frequency of movements. 0 to stop wandering. If set to a different value it will be clipped to the range [0.5, 5]. If not passed the default value is 1.
* <code>t_bound</code>: Coordinates top_bound vertex (e.g. 5,7)
* <code>b_bound</code>: Coordinates bottom_bound vertex (e.g. 7,9)
'''Examples'''
* <code>char_wander npc_maple</code>
* <code>char_wander npc_maple,,5,7,7,9</code>
=== choice_item ===
Ask the player to make a choice among items.
'''Parameters''' 
* <code>choices</code>: List of possible choices (item slugs eg: potion:tea), separated by a colon ":".
* <code>variable</code>: Variable to store the result of the choice.
'''Examples'''
* <code>choice_monster potion:tea,name_variable</code>
=== choice_monster ===
Ask the player to make a choice among monsters.
'''Parameters''' 
* <code>choices</code>: List of possible choices (monster slugs eg: rockitten:apeoro), separated by a colon ":".
* <code>variable</code>: Variable to store the result of the choice.
'''Examples'''
* <code>choice_monster apeoro:rockitten,name_variable</code>
=== choice_npc ===
Ask the player to make a choice among NPCs.
'''Parameters''' 
* <code>choices</code>: List of possible choices (npc slugs eg: maple:billie), separated by a colon ":".
* <code>variable</code>: Variable to store the result of the choice.
'''Examples'''
* <code>choice_monster billie:maple,name_variable</code>


=== clear_kennel ===
=== clear_kennel ===
Line 729: Line 537:
* <code>delayed_teleport cotton_town,10,10</code>
* <code>delayed_teleport cotton_town,10,10</code>


=== evolution ===
=== dialog_chain ===
Checks, asks and evolves. It's the action responsible for evolving monster when one or more conditions are met. It's advisable to use it with the condition <code>is/not check_evolution player</code>
Deprecated. Use [#dialog dialog]
 
=== dialog ===
Opens the dialog box with provided text. For line breaks, use the <code>\n</code> character. You may also use special variables in dialog events. If you have multiple dialog commands they will display sequentially. Using <code>$<nowiki>{{</nowiki>end<nowiki>}}</nowiki></code> does nothing as it used to denote the end of a dialog chain. Here is a list of available variables:
   
* <code>$<nowiki>{{</nowiki>name<nowiki>}}</nowiki></code> - The current player's name.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>text</code>: The text to display in a dialog window.


'''Examples'''  
'''Examples'''  
* <code>evolution player</code>
* <code>dialog Red:\n This is some dialog!</code>
* <code>dialog $<nowiki>{{</nowiki>name<nowiki>}}</nowiki>:\n Hello there! \nHow are you?</code> 


=== fadeout_music ===
=== fadeout_music ===
Line 746: Line 560:
'''Examples'''  
'''Examples'''  
* <code>fadeout_music 2</code>
* <code>fadeout_music 2</code>
=== format_variable ===
Format the value of a variable from the game (eg. float or int).
'''Parameters'''
* <code>variable</code>: The variable to format.
* <code>type_format</code>: Kind of format (float or int).
'''Examples'''
* <code>format_variable name_variable,int</code>
* <code>format_variable name_variable,float</code>
=== get_monster_tech ===
Select a tech among the monster's moves. It allows filtering: slug, element, range.
'''Parameters'''
* <code>variable_name</code>: Variable where to store the technique id.
* <code>monster_id</code>: Variable where is stored the monster id.
* <code>filter_name</code>: the name of the first filter (optional)
* <code>value_name</code>: the actual value to filter (optional)
* <code>extra</code>: used to filter more (optional)
'''Examples'''
* <code>get_monster_tech name_variable,monster_id</code>
* <code>get_monster_tech name_variable,monster_id,element,water</code>
* <code>get_monster_tech name_variable,monster_id,power,less_than,1.6</code>


=== get_party_monster ===
=== get_party_monster ===
Line 786: Line 574:
Select a monster in the player party and store its id in a variable.
Select a monster in the player party and store its id in a variable.


It allows filtering: slug, gender, evolution_stage, element, shape, taste_warm, taste_cold, level, weight, height, max_hp, current_hp, armour, dodge, melee, ranged and speed.
'''Parameters'''
* <code>variable_name</code>: Name of the variable where to store the monster id.


For the definition: level, weight, height, max_hp, current_hp, armour, dodge, melee, ranged and speed (all numeric values) is necessary to use a numeric comparison operator. Accepted values are "less_than", "less_or_equal", "greater_than", "greater_or_equal", "equals" and "not_equals".
'''Examples'''
* <code>get_player_monster name_variable</code>


Note:
=== kennel_print ===
* let's say a player doesn't has no options, then the variable will result as: name_variable:no_option
Print all the kennels or one. It returns <name, qty, visible/hidden>, where *qty = number of monsters inside.
* let's say a player has options, but clicks return, then the variable will result as: name_variable:no_choice


'''Parameters'''  
'''Parameters'''  
* <code>variable_name</code>: Name of the variable where to store the monster id.
* <code>kennel</code>: Name of the kennel. (optional)
* <code>filter_name</code>: the name of the first filter (optional)
* <code>value_name</code>: the actual value to filter (optional)
* <code>extra</code>: used to filter more (optional)


'''Examples'''  
'''Examples'''  
* <code>get_player_monster name_variable</code>
* <code>kennel_print</code>
* <code>get_player_monster name_variable,speed,more_than,50</code>
* <code>kennel_print name_kennel</code>
* <code>get_player_monster name_variable,level,less_than,15</code>
* <code>get_player_monster name_variable,shape,serpent</code>
* <code>get_player_monster name_variable,shape,serpent</code>


=== give_experience ===
=== lock_controls ===
Gives experience points to the monster.
Lock player controls.


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id.
* <code>None</code>
* <code>exp</code>: Name of the variable where to store the experience points or directly the number of points. Negative value will result in 0.


'''Examples'''  
'''Examples'''  
* <code>give_experience name_variable,steps_variable"</code>
* <code>lock_controls</code>
* <code>give_experience name_variable,420</code>


=== info ===
=== modify_npc_attribute ===
Records monster's attribute values inside a game variable. It allows to record the monster's owner attribute values too.
Modify the given attribute of the npc by modifier. By default this is achieved via addition, but prepending a '%' will cause it to be multiplied by the attribute.


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id.
* <code>npc_slug</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>attribute</code>: The attribute to check (level, speed, etc.).
* <code>attribute</code>: Name of the attribute to modify.
* <code>value</code>: Value of the attribute modifier.


'''Examples'''  
'''Examples'''  
* <code>info name_variable,level</code> -> if the monster is lv 4, then it'll create a variable called: "info_level:4"
* <code>modify_npc_attribute npc_slug,attribute,value</code>
* <code>info name_variable,owner_steps</code> -> if the owner walked 69 steps, then it'll create a variable called: "info_owner_steps:69"


=== input_variable ===
=== modify_player_attribute ===
Set a code and checks if it's correct or not. The player's output will be by default lowercase.
Modify the given attribute of the player character by modifier. By default this is achieved via addition, but prepending a '%' will cause it to be multiplied by the attribute.


'''Parameters'''  
'''Parameters'''  
* <code>question</code>: The question the player needs to reply. (eg. "access_code") then you create the msgid "access_code" inside the English PO file, as follows: msgid "access_code" and msgstr "Here the actual question?"
* <code>attribute</code>: Name of the attribute to modify.
* <code>variable</code>: Name of the variable where to store the output.
* <code>value</code>: Value of the attribute modifier.
* <code>escape</code>: Whether the input can be closed or not. Default False.


'''Examples'''  
'''Examples'''  
* <code>input_variable access_code,response_question</code>
* <code>modify_player_attribute attribute,value</code>
* <code>input_variable access_code,response_question,escape</code>


=== load_game ===
=== money_print ===
Loads the game. If the index parameter is absent, then it'll load slot4.save (index = 0 > slot 1, index = 1 > slot 2, index = 2 > slot 3)
Print the current value of money dictionary to the console. If no entity is specified, print out values of all money dictionary.


'''Parameters'''  
'''Parameters'''  
* <code>index</code>: Selected index. (optional)
* <code>slug</code>: Slug name (e.g. player or NPC, etc.). (optional)


'''Examples'''  
'''Examples'''  
* <code>load_game</code> (it's going to load slot4.save)
* <code>money_print</code>
* <code>load_game 0</code> (it's going to load slot1.save)
* <code>money_print player</code>


=== lock_controls ===
=== npc_face ===
Lock player controls.
Makes the npc face a particular direction. Parameter can be set to: <code>left</code>, <code>right</code>, <code>up</code>, or <code>down</code>.


'''Parameters'''  
'''Parameters'''  
* <code>None</code>
* <code>name</code>: The name of the npc.   
* <code>direction</code>: Direction to make the player face. Can be set to: <code>left</code>, <code>right</code>, <code>up</code>, or <code>down</code>.


'''Examples'''  
'''Examples'''  
* <code>lock_controls</code>
* <code>npc_face Maple,left</code> 
* <code>npc_face Pine,up</code>


=== menu ===
=== npc_move ===
Enable/disable one or more menu.
Determines the NPC's movement behaviour.  


'''Parameters'''  
'''Parameters'''  
* <code>act</code>: enable or disable
* <code>name</code>: The name of the npc. 
* <code>menu</code>: specific menu (menu_monster, menu_bag, menu_player, exit, menu_options, menu_save, menu_load, menu_missions) without specification, everything disabled


'''Examples'''  
'''Examples'''  
* <code>menu disable,menu_bag</code>
* <code>npc_move spyder_homemakerpapertown, down 1, right 1, up 1, left 1</code>


=== modify_char_attribute ===
=== npc_plague ===
Modify the given attribute of the character by modifier. By default this is achieved via addition, but prepending a '%' will cause it to be multiplied by the attribute.
Set the NPC as infected, inoculated or healthy.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>condition</code>: Infected, inoculated or healthy
* <code>attribute</code>: Name of the attribute to modify.
* <code>npc_slug</code>: Either "player" or npc slug name (e.g. "npc_maple"). (optional)
* <code>value</code>: Value of the attribute modifier.


'''Examples'''  
'''Examples'''  
* <code>modify_char_attribute character,attribute,value</code>
* <code>npc_plague spyder_homemakerpapertown</code>


=== modify_money ===
=== npc_run ===
Add or remove an amount of money for a wallet (slug).
Sets the NPC's speed to the universal run speed.


'''Parameters'''  
'''Parameters'''  
* <code>slug</code>: Slug name (e.g. player or NPC, etc.).
* <code>name</code>: The name of the npc.
* <code>amount</code>: Amount of money to add/remove (-/+)
* <code>variable</code>: Name of the variable where to store the amount.


'''Examples'''  
'''Examples'''  
* <code>modify_money npc_maple,100</code>
* <code>npc_run npc_mom</code>
* <code>modify_money npc_maple,-50</code>
* <code>modify_money player,,name_variable</code>


=== modify_monster_bond ===
=== npc_speed ===
Add or remove an amount of money for a wallet (slug).
Sets the NPC's walk speed.  


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id. If no variable is specified, all monsters are touched.
* <code>name</code>: The name of the npc.
* <code>amount</code>: An int or float value, if no amount, then default 1 (int).


'''Examples'''
'''Examples'''  
* <code>modify_monster_bond</code>
* <code>npc_speed npc_mom, 0.2</code>
* <code>modify_monster_bond name_variable,25</code>
* <code>modify_monster_bond name_variable,-0.5</code>


=== modify_monster_health ===
=== npc_walk ===
Modify the hp of a monster in the current player's party.
Sets the NPC's speed to the universal walk speed.  


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id. If no variable is specified, all monsters are healed.
* <code>name</code>: The name of the npc.  
* <code>health</code>: A float value between 0 and 1, which is the percent of max hp to be restored to. A int value, which is the number of HP to be restored to. If no health is specified, the hp is maxed out.


'''Examples'''  
'''Examples'''  
* <code>modify_monster_health</code>
* <code>npc_walk npc_mom</code>
* <code>modify_monster_health ,0.25</code>
 


=== modify_monster_stats ===
=== npc_wander ===
Change the stats of a monster in the current player's party.
Sets the NPC's behaviour to wander about instead of stand in place.


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id. If no variable is specified, all monsters are touched. (Optional)
* <code>name</code>: The name of the npc.
* <code>stat</code>: A stat among armour, dodge, hp, melee, speed and ranged. If no stat, then all the stats. (Optional)
* <code>amount</code>: A/an float/int value, if no amount, then default 1 (+). (Optional)


'''Examples'''  
'''Examples'''  
* <code>modify_monster_stats</code>
* <code>npc_wander npc_mom</code>  
* <code>modify_monster_stats ,,0.25</code>
* <code>modify_monster_stats name_variable,speed,25</code>
* <code>modify_monster_stats name_variable,dodge,-12</code>
* <code>modify_monster_stats name_variable,dodge,-0.4</code>


=== open_shop ===
=== open_shop ===
Line 942: Line 705:
'''Examples'''  
'''Examples'''  
* <code>open_shop npc_maple</code>  
* <code>open_shop npc_maple</code>  
=== overwrite_tech ===
Overwrite / replace a technique with another.
'''Parameters'''
* <code>removed</code>: Name of the variable where to store the tech id.
* <code>added</code>: Slug technique.
'''Examples'''
* <code>overwrite_tech name_variable,peck</code>


=== pathfind ===
=== pathfind ===
Line 976: Line 729:
* <code>pathfind_to_player spyder_route2_roddick</code>  
* <code>pathfind_to_player spyder_route2_roddick</code>  
* <code>translated_dialog spyder_route2_roddick1</code>
* <code>translated_dialog spyder_route2_roddick1</code>
* <code>start_battle player,spyder_route2_roddick</code>  
* <code>start_battle spyder_route2_roddick</code>  


=== pause_music ===
=== pause_music ===
Line 994: Line 747:
* <code>duration</code>: The amount of time in seconds between each frame.   
* <code>duration</code>: The amount of time in seconds between each frame.   
* <code>loop</code>: Whether or not to loop the animation. Can be either <code>loop</code> or <code>noloop</code> to loop the animation.   
* <code>loop</code>: Whether or not to loop the animation. Can be either <code>loop</code> or <code>noloop</code> to loop the animation.   
* <code>position</code>: The position to draw the animation. Can either be an <code>x,y</code> coordinate or <code>npc_slug</code> to draw the animation over the character.
* <code>position</code>: The position to draw the animation. Can either be an <code>x,y</code> coordinate or <code>player</code> to draw the animation over the player.


'''Examples'''  
'''Examples'''  
Line 1,001: Line 754:


=== play_music ===
=== play_music ===
Plays an audio file.
Plays an audio file located under "music/" on a loop.


'''Parameters'''  
'''Parameters'''  
* <code>filename</code>: Music file to load (slug inside the JSON in db/sound)
* <code>filename</code>: The name of the music file to play under "music/
* <code>volume</code>: Number between 0.0 and 1.0. (optional)
* <code>loop</code>: How many times loop, default forever. (optional)


'''Examples'''  
'''Examples'''  
* <code>play_music music_mystic_island</code>  
* <code>play_music 472452_8-Bit-Ambient.ogg</code>  


=== play_sound ===
=== play_sound ===
Plays a sound file.
Plays an audio file located under "sounds/".


'''Parameters'''  
'''Parameters'''  
* <code>filename</code>: Sound file to load (slug inside the JSON in db/sound)
* <code>filename</code>: The name of the sound file to play under "sounds/
* <code>volume</code>: Number between 0.0 and 1.0. (optional)


'''Examples'''  
'''Examples'''  
* <code>play_sound sound_confirm</code>   
* <code>play_sound combat/falling_Macro.ogg</code> 
 
=== player_face ===
Makes the player face a particular direction. Parameter can be set to: <code>left</code>, <code>right</code>, <code>up</code>, or <code>down</code>.
 
'''Parameters'''
* <code>direction</code>: Direction to make the player face. Can be set to: <code>left</code>, <code>right</code>, <code>up</code>, or <code>down</code>.
 
'''Examples'''
* <code>player_face left</code> 
* <code>player_face up</code>
 
=== player_sprite ===
Check the player's sprite
 
'''Parameters'''
* <code>sprite</code>: slug of the sprite
 
'''Examples'''
* <code>is player_sprite adventurer</code> 
 
=== player_stop ===
Stops the player's current movement. There is currently no way to stop a player from inputting another movement after being stopped ([https://github.com/Tuxemon/Tuxemon/issues/790 issue #790])
 
'''Parameters'''
* <code>None</code> 
 
'''Examples'''
* <code>player_stop</code>   


=== print ===
=== print ===
Line 1,032: Line 810:


=== quarantine ===
=== quarantine ===
Quarantine infected monsters. Amount works only for "out", it takes out the amount in a random way.
Quarantine infected monsters. Amount works only for "out", it takes out the amount in a random way.  


'''Parameters'''  
'''Parameters'''  
Line 1,063: Line 841:


=== random_encounter ===
=== random_encounter ===
Randomly start a battle based on the encounter group looked up via the <code>encounter_id</code>. Encounter groups contain a list of monsters that can be encountered as well as their level and encounter rate. In most circumstances you will pair this action with the <code>char_at</code> and <code>char_moved</code> conditions.
Randomly start a battle based on the encounter group looked up via the <code>encounter_id</code>. Encounter groups contain a list of monsters that can be encountered as well as their level and encounter rate. In most circumstances you will pair this action with the <code>player_at</code> and <code>player_moved</code> conditions.
 
Here is an example encounter file:


Here is an example encounter file: ''resources/db/encounter/route1.json''   
''resources/db/encounter/route1.json''   


  "slug": "route1",
    json
  "monsters": [
     {
     {
       "monster": "pairagrin",
       "monster": "aardorn",
       "encounter_rate": 3.5,
       "encounter_rate": 3.5,
       "variable": "daytime:true",
       "daytime": true,
       "exp_req_mod": 1,
       "exp_req_mod": 1,
       "level_range": [
       "level_range": [
Line 1,081: Line 860:


'''Parameters'''  
'''Parameters'''  
* <code>encounter_slug</code>: Slug of the encounter list.
* <code>encounter_id</code>: The id of the encounter JSON file to use for random battles under <code>resources/db/encounter</code>.
* <code>total_prob</code>: Total sum of the probabilities. (optional)
* <code>total_prob</code>: The probability of an encounter, with 100 = 100% probability of an encounter. If not set, then the probability of an encounter is the sum of all encounter_rates in the encounter JSON file (as a percentage).
* <code>rgb</code>: color (eg red > 255,0,0 > 255:0:0) - default rgb(255,255,255) (optional)


'''Examples'''  
'''Examples'''  
Line 1,099: Line 877:
'''Examples'''  
'''Examples'''  
* <code>random_integer name_variable,1,9</code>
* <code>random_integer name_variable,1,9</code>
=== random_item ===
Pick a random item from a list and add it to the trainer's inventory.
'''Parameters'''
* <code>item_slug</code>: Item name to look up in the item database (multiple items separated by ":").
* <code>quantity</code>: Quantity of the item to add or to reduce. By default it is 1. (optional)
* <code>trainer_slug</code>: Slug of the trainer that will receive the item. It defaults to the current player. (optional)
'''Examples'''
* <code>random_item potion:tea:revive</code> (adds 1 potion or tea or revive to the trainer's inventory).
* <code>random_item potion:tea:revive,2</code> (adds 2 potions or teas or revives to the trainer's inventory).
* <code>random_item potion:tea:revive,2,npc_maple</code> (adds 2 potions or teas or revives to the maple's inventory).
* <code>random_item potion:tea:revive,,npc_maple</code> (adds 1 potion or tea or revive to the maple's inventory).


=== random_monster ===
=== random_monster ===
Line 1,151: Line 915:


=== remove_monster ===
=== remove_monster ===
Remove a monster from the party if the monster is there.
Remove a monster from the given trainer's party if the monster is there. Monster is determined by instance_id, which must be passed in a game variable.


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id.
* <code>instance_id</code>: Id of the monster to remove.
* <code>trainer_slug</code>: Slug of the trainer. If no trainer slug is passed it defaults to the current player.


'''Examples'''  
'''Examples'''  
Line 1,169: Line 934:
* <code>remove_npc Maple</code>   
* <code>remove_npc Maple</code>   
* <code>remove_npc Pine</code>
* <code>remove_npc Pine</code>
=== remove_state ===
Change to the specified state.
'''Parameters''' 
* <code>state_name</code>: The state name to switch to (e.g. PCState).
* <code>optional</code>: Variable related to specific states (eg slug for JournalInfoState).
'''Examples'''
* <code>remove_state</code> (it removes everything, excluding the basic ones)
* <code>remove_state JournalInfoState</code> (it removes everything, excluding the basic ones)
=== remove_tech ===
Remove a specific technique from a specific monster.
'''Parameters''' 
* <code>tech_id</code>: Name of the variable where to store the tech id.
'''Examples'''
* <code>remove_tech name_variable</code>


=== rename_monster ===
=== rename_monster ===
Open the text input screen to rename the monster.
Open the monster menu and text input screens to rename a selected monster.


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id.
* <code>None</code>


'''Examples'''  
'''Examples'''  
* <code>rename_monster name_variable</code>   
* <code>rename_monster</code>   


=== rename_player ===
=== rename_player ===
Line 1,217: Line 962:
'''Examples'''  
'''Examples'''  
* <code>rumble duration,power</code>   
* <code>rumble duration,power</code>   
=== save_game ===
Saves the game. If the index parameter is absent, then it'll create slot4.save (index = 0 > slot 1, index = 1 > slot 2, index = 2 > slot 3)
'''Parameters'''
* <code>index</code>: Selected index. (optional)
'''Examples'''
* <code>save_game</code> (it's going to save slot4.save)
* <code>save_game 1</code> (it's going to save slot2.save)


=== screen_transition ===
=== screen_transition ===
Line 1,232: Line 967:


'''Parameters'''  
'''Parameters'''  
* <code>trans_time</code>: Time in seconds - default 0.3 (optional).
* <code>transition_time</code>: Time in seconds to fade the screen to black.
* <code>rgb</code>: color (eg red > 255,0,0 > 255:0:0) - default rgb(255,255,255) (optional)


'''Examples'''  
'''Examples'''  
Line 1,239: Line 973:


=== set_battle ===
=== set_battle ===
Append a new element in player.battles.
Set the key in the player.battle_history dictionary.


'''Parameters'''  
'''Parameters'''  
* <code>fighter</code>: Npc slug name (e.g. "npc_maple").
* <code>character</code>: Npc slug name (e.g. "npc_maple").
* <code>result</code>: One among "won", "lost" or "draw"
* <code>result</code>: One among "won", "lost" or "draw"
* <code>opponent</code>: Npc slug name (e.g. "npc_maple").


'''Examples'''  
'''Examples'''  
* <code>set_battle player,won,npc_maple</code> (player won against npc_maple)
* <code>set_battle npc_maple,won</code>


=== set_bubble ===
=== set_code ===
Put a bubble above player sprite.
Set a code and checks if it's correct or not. Case Sensitive: ATTENTION and AtTenTION are two different words.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>question</code>: The question the player needs to reply. (eg. "access_code") then you create the msgid "access_code" inside the English PO file, as follows: msgid "access_code" and msgstr "Here the actual question?"
* <code>bubble</code>: dots, drop, exclamation, heart, note, question, sleep, angry, confused, fireworks
* <code>answer</code>: The right answer to the question.
* <code>variable</code>: Where the result (right/wrong) is saved.


'''Examples'''  
'''Examples'''  
* <code>set_bubble spyder_shopassistant</code> (remove bubble NPC)
* <code>set_code access_code,joke,name_variable</code>
* <code>set_bubble spyder_shopassistant,note</code> (set bubble NPC)
* <code>set_bubble player,note</code> (set bubble player)
* <code>set_bubble player</code> (remove bubble player)


=== set_economy ===
=== set_economy ===
Line 1,266: Line 997:


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>npc_slug</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>economy_slug</code>: Slug of an economy.
* <code>economy_slug</code>: Slug of an economy.


Line 1,298: Line 1,029:
'''Examples'''  
'''Examples'''  
* <code>set_kennel new_kennel,true</code>
* <code>set_kennel new_kennel,true</code>
=== set_layer ===
Allows to change the color of the transparent layer.
'''Parameters'''
* <code>rgb</code>: color (eg red > 255,0,0,128 > 255:0:0:128) - default transparent
'''Examples'''
* <code>set_layer 255:0:0:128</code>
=== set_mission ===
Set mission.
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>slug</code>: slug mission
* <code>operation</code>: add, remove or change
* <code>status</code>: completed, pending, failed (default pending)
'''Examples'''
* <code>set_mission mission1</code>
* <code>set_mission mission1,change,completed</code>


=== set_money ===
=== set_money ===
Set an amount of money for a specific slug.
Set the key and value in the money dictionary. It'll reset the previous amount.


'''Parameters'''  
'''Parameters'''  
* <code>slug</code>: Slug name (e.g. player or NPC, etc.).
* <code>slug</code>: Slug name (e.g. player or NPC, etc.).
* <code>amount</code>: Amount of money (>= 0) (default 0)
* <code>amount</code>: Amount of money


'''Examples'''  
'''Examples'''  
* <code>set_money player</code>
* <code>set_money player,500</code>
* <code>set_money player,500</code>
=== set_monster_attribute ===
Set the given attribute of the monster to the given value.
'''Parameters'''
* <code>variable</code>: Name of the variable where to store the monster id.
* <code>attribute</code>: Name of the attribute.
* <code>value</code>: Value of the attribute.
'''Examples'''
* <code>set_monster_attribute name_variable,name,jimmy</code> (the monster will be named jimmy)


=== set_monster_flair ===
=== set_monster_flair ===
Line 1,347: Line 1,044:


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id. If no variable is specified, all monsters are changed.
* <code>slot</code>: Slot of the monster in the party.
* <code>category</code>: Category of the monster flair.
* <code>category</code>: Category of the monster flair.
* <code>flair</code>: Name of the monster flair.
* <code>flair</code>: Name of the monster flair.


'''Examples'''  
'''Examples'''  
* <code>get_player_monster name_variable</code>
* <code>set_monster_flair 1,category,flair</code>
* <code>set_monster_flair name_variable,category,flair</code>


=== set_monster_health ===
=== set_monster_health ===
Set the hp of a monster in the current player's party. The action parameters may contain a monster slot and the amount of health.  
Changes the hp of a monster in the current player's party. The action parameters may contain a monster slot and the amount of health.
 
'''Parameters'''
* <code>slot</code>: The slot the monster appears in. If no slot is specified, all monsters are healed.
* <code>health</code>: A float value between 0 and 1, which is the percent of max hp to be restored to. If no health is specified, the hp is maxed out.
 
'''Examples'''
* <code>set_monster_health 1,1</code>
=== set_monster_level ===
Changes the level of a monster in the current player's party.


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id. If no variable is specified, all monsters are healed. (optional)
* <code>slot</code>: The slot the monster appears in. If no slot is specified, all monsters are leveled.  
* <code>health</code>: A float value between 0 and 1, which is the percent of max hp to be restored to. A int value, which is the number of HP to be restored to. If no health is specified, the hp is maxed out. (optional)
* <code>level</code>: The amount by which to level. If no level is specified, the level is reverted to 1.


'''Examples'''  
'''Examples'''  
* <code>set_monster_health</code> (heals all the monsters in the party)
* <code>set_monster_level 1,100</code>
or
* <code>get_player_monster name_variable</code>
* <code>set_monster_health name_variable,1</code>


=== set_monster_level ===
=== set_monster_level ===
Line 1,372: Line 1,074:


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id. If no variable is specified, all monsters are changed. (optional)
* <code>level</code>: Number of levels to add. Negative numbers are allowed.
* <code>levels_added</code>: Number of levels to add. Negative numbers are allowed. Default 1. (optional)
* <code>slot</code>: Slot of the monster in the party. If no slot is specified, all monsters are leveled. (optional)


'''Examples'''  
'''Examples'''  
* <code>set_monster_level</code> (all the monsters in the party level up by 1)
* <code>set_monster_status 5,1</code>
or
* <code>get_player_monster name_variable</code>
* <code>set_monster_level name_variable,1</code>


=== set_monster_status ===
=== set_monster_plague ===
Change the status of a monster in the current player's party.
Cure or infect a monster.


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id. If no variable is specified, all monsters get/lose status.. (optional)
* <code>condition</code>: inoculated, healthy or infected
* <code>status</code>: Inoculated, healthy or infected, default healthy (optional)
* <code>slot</code>: Slot of the monster in the party. If no slot is specified, all monsters are touched by the action. (optional)


'''Examples'''  
'''Examples'''  
* <code>set_monster_status</code> (all the monsters in the party lose their status)
* <code>set_monster_plague infected</code>
or
* <code>set_monster_plague inoculated,1</code>
* <code>get_player_monster name_variable</code>
* <code>set_monster_status name_variable,status_blinded</code>


=== set_char_attribute ===
=== set_monster_status ===
Set the given attribute of the character to the given value.
Change the status of a monster in the current player's party.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>slot</code>: Slot of the monster in the party. If no slot is specified, all monsters are modified. (optional)
* <code>attribute</code>: Name of the attribute.
* <code>status</code>: Status to set. If no status is specified, the status is cleared.
* <code>value</code>: Value of the attribute.


'''Examples'''  
'''Examples'''  
* <code>set_char_attribute character,attribute,value</code>
* <code>set_monster_status 1,status_blinded</code>


=== set_party_attribute ===
=== set_npc_attribute ===
Set the given attribute of party's monsters to the given value.
Set the given attribute of the npc to the given value.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or character slug name (e.g. "npc_maple").
* <code>npc_slug</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>attribute</code>: Name of the attribute.
* <code>attribute</code>: Name of the attribute.
* <code>value</code>: Value of the attribute.
* <code>value</code>: Value of the attribute.


'''Examples'''  
'''Examples'''  
* <code>set_party_attribute player,name,jimmy</code> (all the monsters in the party will be named jimmy)
* <code>set_player_attribute npc_maple,attribute,value</code>


=== set_party_status ===
=== set_player_attribute ===
Records important information about all monsters in the party (eg average level of the party, etc.)
Set the given attribute of the player character to the given value.


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>attribute</code>: Name of the attribute.
* <code>value</code>: Value of the attribute.


'''Examples'''  
'''Examples'''  
* <code>set_party_status player</code>
* <code>set_player_attribute attribute,value</code>


=== set_player_name ===
=== set_player_name ===
Line 1,435: Line 1,132:
* <code>set_player_name jimmy:richard:linus</code> (random choice among jimmy, richard and linus)
* <code>set_player_name jimmy:richard:linus</code> (random choice among jimmy, richard and linus)


=== set_random_variable ===
=== set_player_template ===
Set the key in the player.game_variables dictionary with a random value.
 
'''Parameters'''
* <code>variable</code>: Name of the variable.
* <code>values</code>: Multiple values of the variable separated with ":".
 
'''Examples'''
* <code>set_random_variable alpha,one:two:three</code> (variable "alpha" can be "alpha:one" or "alpha:two" or "alpha:three").
 
=== set_template ===
Switch template (sprite and combat_front).
Switch template (sprite and combat_front).


Line 1,455: Line 1,142:


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>sprite</code>: must be inside mods/tuxemon/sprites, eg: adventurer_brown_back.png -> adventurer
* <code>sprite</code>: must be inside mods/tuxemon/sprites (default = original), eg: adventurer_brown_back.png -> adventurer
* <code>combat_front</code>: must be inside mods/tuxemon/gfx/sprites/player, eg: adventurer.png -> adventurer (optional)
* <code>combat_front</code>: must be inside mods/tuxemon/gfx/sprites/player, eg: adventurer.png -> adventurer (optional)


'''Examples'''  
'''Examples'''  
* <code>set_template player,adventurer,adventurer</code>
* <code>set_player_template default</code> this will set the default sprite (chosen at the beginning).
* <code>set_player_template adventurer,adventurer</code>


=== set_tuxepedia ===
=== set_tuxepedia ===
Line 1,466: Line 1,153:


'''Parameters'''  
'''Parameters'''  
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple").
* <code>monster_slug</code>: Monster slug name (e.g. "rockitten").  
* <code>monster_slug</code>: Monster slug name (e.g. "rockitten").  
* <code>label</code>: seen / caught
* <code>string</code>: seen / caught


'''Examples'''  
'''Examples'''  
* <code>set_tuxepedia player,rockitten,caught</code>
* <code>set_tuxepedia rockitten,caught</code>


=== set_variable ===
=== set_variable ===
Line 1,491: Line 1,177:


'''Parameters'''
'''Parameters'''
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple"). The one who is going to receive the new born.
* <code>npc_slug</code>: Either "player" or npc slug name (e.g. "npc_maple").


'''Examples'''  
'''Examples'''  
Line 1,497: Line 1,183:


=== start_battle ===
=== start_battle ===
Start a battle between two characters and switch to the combat module.
Start a battle with an NPC defined in <code>resources/db/npc</code>.
 
Here is an example NPC file:
 
''resources/db/npc/maple.json'' 
 
json
{
  "slug": "maple_girl",
  "template": [
    {
      "sprite_name": "girl1",
      "combat_front": "heroine",
      "slug": "heroine"
    }
  ],
  "monsters": [
    {
      "name": "Snowball",
      "slug": "bamboon",
      "level": 5,
      "money_mod": 10,
      "exp_req_mod": 27,
      "gender": "male"
    }
  ]
}


'''Parameters'''  
'''Parameters'''  
* <code>character1</code>: Either "player" or character slug name (e.g. "npc_maple").
* <code>npc_slug</code>: The NPC's slug as defined in the NPC's JSON file in <code>resources/db/npc</code>.
* <code>character2</code>: Either "player" or character slug name (e.g. "npc_maple").


'''Examples'''  
'''Examples'''  
* <code>start_battle player,npc_maple</code>
* <code>start_battle npc_maple</code>
* <code>start_battle npc_maple,npc_apple</code>


=== start_cinema_mode ===
=== start_cinema_mode ===
Line 1,529: Line 1,239:


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id.
* <code>monster_id</code>: Id of the monster to store.  
* <code>box</code>: An existing box where the monster will be stored. (optional)
* <code>box</code>: An existing box where the monster will be stored. (optional)


Line 1,543: Line 1,253:


'''Parameters'''  
'''Parameters'''  
* <code>trans_time</code>: Transition time in seconds - default 0.3. 
* <code>None</code>


'''Examples'''  
'''Examples'''  
* <code>teleport_faint</code>
* <code>teleport_faint</code>
* <code>teleport_faint 6.9</code>


=== teleport ===
=== teleport ===
Line 1,565: Line 1,274:


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id (removed).
* <code>remove_monster</code>: Slug monster.
* <code>added</code>: Slug monster or Name of the variable where to store the monster id (added).
* <code>add_monster</code>: Slug monster.


'''Examples'''  
'''Examples'''  
* <code>get_player_monster name_variable</code>
* <code>trading rockitten,nut</code> (removes Rockitten and adds Nut)
then
* <code>trading name_variable,nut</code>


=== transfer_money ===
=== transfer_money ===
Transfer money between entities. Both entities needs to have a wallet.
Performs a mathematical transaction on the player's money.


'''Parameters'''  
'''Parameters'''  
* <code>slug1</code>: Slug name (e.g. NPC, etc.)
* <code>transaction</code>: Operator symbol.
* <code>amount</code>: Amount of money.
* <code>amount</code>: Amount of money.
* <code>slug2</code>: Slug name (e.g. NPC, etc.)
* <code>slug</code>: Slug name (e.g. NPC, etc.) (optional)


'''Examples'''  
'''Examples'''  
* <code>transfer_money player,100,npc_mom</code> (player transfers 100 to mom)
* <code>transfer_money +,100,npc_mom</code> (player gets 100 from mom)
* <code>transfer_money -,100,npc_mom</code> (mom gets 100 from player)
* <code>transfer_money +,100</code> (player gets 100)


=== transition_teleport ===
=== transition_teleport ===
Line 1,591: Line 1,300:
* <code>x</code>: The X-tile coordinate to teleport the player to.   
* <code>x</code>: The X-tile coordinate to teleport the player to.   
* <code>y</code>: The Y-tile coordinate to teleport the player to.   
* <code>y</code>: The Y-tile coordinate to teleport the player to.   
* <code>trans_time</code>: The time in seconds - default 2. (optional)
* <code>transition_time</code>: The time in seconds the transition will last.
* <code>rgb</code>: color (eg red > 255,0,0 > 255:0:0) - default rgb(255,255,255) (optional)


'''Examples'''  
'''Examples'''  
* <code>teleport map2.tmx,1,6,1.5</code>   
* <code>teleport map2.tmx,1,6,1.5</code>   
* <code>teleport room1.tmx,8,1,4</code>
* <code>teleport room1.tmx,8,1,4</code>
=== translated_dialog_chain ===
Deprecated. Use [#translated_dialog translated_dialog]


=== translated_dialog_choice ===
=== translated_dialog_choice ===
Line 1,609: Line 1,320:


=== translated_dialog ===
=== translated_dialog ===
Open a dialog window with translated text according to the passed translation key. Parameters passed to the translation string will also be checked if a translation key exists.  
Opens the dialog box with translated text for a given key found in <code>resources/db/locale/<locale>.json</code>. Optional variable replacement will also be translated if the value is a key in the locale file. For line breaks, use the <code>\n</code> character. If you have multiple translated_dialog commands they will display sequentially. Using <code>$<nowiki>{{</nowiki>end<nowiki>}}</nowiki></code> does nothing as it used to denote the end of a dialog chain. You may also use special variables in dialog events. Here is a list of available variables:
   
* <code>$<nowiki>{{</nowiki>name<nowiki>}}</nowiki></code> - The current player's name.


'''Parameters'''  
'''Parameters'''  
* <code>text</code>: The msgid in the PO file.
* <code>dialog_key</code>: The translated text for a given key found in <code>resources/db/locale/<locale>.json</code> to display in a dialog window.  
* <code>avatar</code>: If it is a number, the monster is the corresponding monster slot in the player's party. If it is a string, we're referring to a monster by name.
* <code>parameters</code>: Optional comma-separated <code>var=value</code> parameters to replace variables in the translation text. The <code>value</code> can either be text or a key found in <code>resources/db/locale/<locale>.json</code>.
* <code>style</code>: a predefined style in db/dialogue/dialogue.json


'''Examples'''  
'''Examples'''  
* <code>translated_dialog msgid</code>   
* <code>translated_dialog received_x,name=a brand new car!</code> 
* <code>translated_dialog received_x,name=item_potion</code> 
* <code>translated_dialog combat_fainted,name=$<nowiki>{{</nowiki>name<nowiki>}}</nowiki></code> 
* <code>translated_dialog combat_opponent_call_tuxemon,user=$<nowiki>{{</nowiki>name<nowiki>}}</nowiki>,name=some guy</code>   


=== unlock_controls ===
=== tuxepedia_print ===
Unlock player controls
Print the current value of Tuxepedia to the console. If no monster is specified, print out values of all Tuxepedia.


'''Parameters'''  
'''Parameters'''  
* <code>None</code>
* <code>monster_slug</code>: Monster slug name (e.g. "rockitten").


'''Examples'''  
'''Examples'''  
* <code>unlock_controls</code>
* <code>tuxepedia_print</code>
* <code>tuxepedia_print rockitten</code>


=== update_tile_properties ===
=== unlock_controls ===
Update tile properties. Enable movement and/or the moverate. '''moverate 0 = not accessible'''. The surface keys supported are: '''surfable''', '''walkable''' and '''climbable'''.
Unlock player controls


'''Parameters'''  
'''Parameters'''  
* <code>label</code>: Name of the property
* <code>None</code>
* <code>moverate</code>: Value of the moverate (eg 1 equal moverate, default 1)


'''Examples'''  
'''Examples'''  
* <code>update_tile_properties surfable,0.5</code>   
* <code>unlock_controls</code>   


=== variable_math ===
=== variable_math ===
Line 1,663: Line 1,378:


'''Parameters'''  
'''Parameters'''  
* <code>monster_slug</code>: Monster slug.
* <code>monster_slug</code>: Monster slug, if missing, then random.
* <code>monster_level</code>: Level of monster.
* <code>monster_level</code>: Level of the added monster.
* <code>exp_mod</code>: Experience modifier. (optional)
* <code>exp_mod</code>: Experience modifier
* <code>mon_mod</code>: Money modifier. (optional)
* <code>mon_mod</code>: Money modifier
* <code>env</code>: Environment (grass default) -> [[Battle Terrain]] (optional)
* <code>env</code>: Environment (grass default) -> [[Battle Terrain]]
* <code>rgb</code>: color (eg red > 255,0,0 > 255:0:0) - default rgb(255,255,255) (optional)


'''Examples'''  
'''Examples'''  
Line 1,678: Line 1,392:


'''Parameters'''  
'''Parameters'''  
* <code>variable</code>: Name of the variable where to store the monster id.
* <code>monster_id</code>: The id of the monster to pull (variable).
* <code>character</code>: Either "player" or npc slug name (e.g. "npc_maple"). The one who is going to receive the monster.
* <code>trainer</code>: Slug of the trainer that will receive the monster. It defaults to the current player.
           
 
'''Examples'''  
'''Examples'''  
* <code>get_player_monster name_variable</code>
* <code>get_player_monster name_variable</code>
Line 1,696: Line 1,410:


=== Battle related ===
=== Battle related ===
* <code>battle_last_result</code>: the result can be <code>won</code>, <code>draw</code>, <code>lost</code> or <code>ran</code>.
other variables include:
* <code>battle_last_monster_name</code> name of the last monster fought.
* <code>battle_last_monster_name</code> name of the last monster fought.
* <code>battle_last_monster_level</code> level of the last monster fought.
* <code>battle_last_monster_level</code> level of the last monster fought.
Line 1,701: Line 1,418:
* <code>battle_last_monster_category</code> category of the last monster fought.
* <code>battle_last_monster_category</code> category of the last monster fought.
* <code>battle_last_monster_shape</code> shape of the last monster fought.
* <code>battle_last_monster_shape</code> shape of the last monster fought.
 
* <code>battle_last_trainer</code> slug of the last trainer fought (it applies only to trainer battles).
trainer battles:
* <code>battle_last_trainer</code> slug of the last trainer fought
battles PC vs NPC (eg player vs npc_maple or npc_maple vs player)
* <code>battle_last_result</code>: the result can be <code>won</code> or <code>draw</code>
battles NPC vs NPC (eg npc_maple vs npc_apple) or PC vs NPC (eg player vs npc_maple or npc_maple vs player)
* <code>battle_last_loser</code> slug of the last trainer fought ("player" for the player)
* <code>battle_last_winner</code> slug of the last trainer fought ("player" for the player)


=== Time related ===
=== Time related ===
* <code>weekday</code> tracks the day of the week (Monday, Tuesday, etc.)
* <code>hour</code> tracks the hour
* <code>hour</code> tracks the hour
* <code>day_of_year</code> tracks the days in a year (1 to 365/366)
* <code>day_of_year</code> tracks the days in a year (1 to 365/366)
Line 1,721: Line 1,430:


=== Campaign related ===
=== Campaign related ===
* <code>steps</code> the results shows the number of the steps.
* <code>gender_choice</code> the result can be <code>gender_male</code> or <code>gender_female</code>, depending on the player's choice at the beginning. Useful to create different events for gender.
* <code>gender_choice</code> the result can be <code>gender_male</code> or <code>gender_female</code>, depending on the player's choice at the beginning. Useful to create different events for gender.


Line 1,728: Line 1,438:
* <code>party_level_average</code> the result shows the average level in the player's party.
* <code>party_level_average</code> the result shows the average level in the player's party.


== Examples ==
=== Examples ===


==== Battle ====
==== Battle ====
Line 1,755: Line 1,465:
while if you want to grant the access only during the night:
while if you want to grant the access only during the night:
* <code>is variable_set stage_of_day:night</code>
* <code>is variable_set stage_of_day:night</code>
==== Steps Countdown ====
Let's say you want to trigger an event after 1234 steps:
* <code>set_variable steps_whatever:1234</code>
<code>steps_</code> followed by your variable <code>whatever</code>.
* <code>is variable_is steps_whatever,equals,0.0</code>: Checking for the results, separate event.
Note: you can replace <code>equals</code> with: <code>less_than</code>, <code>less_or_equal</code>, <code>greater_than</code>, <code>greater_or_equal</code>,  and <code>not_equals</code>.


==== Trading ====
==== Trading ====
Let's say you want to set up and event for trading monsters. You need 3 events after creating the NPC in map.
Let's say you want to set up and event for trading monsters. You need 3 events after creating the NPC in map.
* <code>monster1</code> (monster desired by the NPC)
* <code>monster2</code> (monster the NPC wants to trade in exchange)


1st: if the player has the monster
1st: if the player has the monster
    <property name="act10" value="translated_dialog dialog_npc1"/>
* <code>translated_dialog dialog_npc1</code>
    <property name="act20" value="translated_dialog_choice yes:no,npc_willtrade"/>
* <code>translated_dialog_choice yes:no,npc_willtrade</code>
    <property name="behav10" value="talk npc_slug"/>
* <code>talk npc_slug</code>
    <property name="cond10" value="is has_monster player,monster1"/>
* <code>is has_monster monster1</code>
    <property name="cond20" value="not variable_set npc_hastraded:yes"/>
* <code>not variable_set npc_hastraded:yes</code>
2nd: if the player hasn't the monster
2nd: if the player hasn't the monster
    <property name="act10" value="translated_dialog dialog_npc1"/>
* <code>translated_dialog dialog_npc1</code>
    <property name="act20" value="translated_dialog dialog_npc_nomonster1"/>
* <code>translated_dialog dialog_npc_nomonster1</code>
    <property name="behav10" value="talk npc_slug"/>
* <code>talk npc_slug</code>
    <property name="cond10" value="not has_monster player,monster1"/>
* <code>not has_monster monster1</code>
    <property name="cond20" value="not variable_set npc_hastraded:yes"/>
* <code>not variable_set npc_hastraded:yes</code>
3rd: trading part
3rd: trading part
    <property name="act10" value="translated_dialog dialog_npc_willtrade"/>
* <code>translated_dialog dialog_npc_willtrade</code>
    <property name="act20" value="get_player_monster name_variable"/>
* <code>trading monster1,monster2</code>
    <property name="act30" value="trading name_variable,traded_monster"/>
* <code>set_variable npc_hastraded:yes</code>
    <property name="act40" value="set_variable npc_hastraded:yes"/>
* <code>is has_monster monster1</code>
    <property name="cond10" value="is has_monster player,monster1"/>
* <code>is variable_set npc_willtrade</code>
    <property name="cond20" value="is variable_set npc_willtrade"/>
* <code>not variable_set npc_hastraded</code>
    <property name="cond30" value="not variable_set npc_hastraded"/>


==== Get Party Monster ====
==== Get Party Monster ====
Let's say you want to add a tech to a monster (NPC). Eg. the NPC [[Rockitten]] needs to know [[Canine]], but [[Rockitten]] is the 4th monster (equal to 3rd slot).
Let's say you want to add a tech to a monster (NPC). Eg. the NPC [[Rockitten]] needs to know [[Canine]], but [[Rockitten]] is the 4th monster (equal to 3rd slot).


    <property name="act10" value="add_monster rockitten,20,npc_slug,27,10"/>
* <code>add_monster rockitten,20,npc_slug,27,10</code>
    <property name="act20" value="add_monster vivipere,20,npc_slug,27,10"/>
* <code>add_monster vivipere,20,npc_slug,27,10</code>
    <property name="act30" value="add_monster budaye,20,npc_slug,27,10"/>
* <code>add_monster budaye,20,npc_slug,27,10</code>
    <property name="act40" value="add_monster rockitten,20,npc_slug,27,10"/>
* <code>add_monster rockitten,20,npc_slug,27,10</code>
    <property name="act50" value="add_monster nut,20,npc_slug,27,10"/>
* <code>add_monster nut,20,npc_slug,27,10</code>
    <property name="act60" value="get_party_monster npc_slug"/>
* <code>get_party_monster npc_slug</code>
    <property name="act70" value="add_tech iid_slot_3,canine"/> ---> iid_slot_3 followed by [[Canine]]
* <code>add_tech iid_slot_3,canine,,,,npc_slug</code> here <code>iid_slot_3</code> followed by [[Canine]]
    <property name="act80" value="start_battle player,npc_slug"/>
* <code>start_battle npc_slug</code>
 
==== Battle Among NPCs (the player watches without interacting) ====
(eg npc_maple vs npc_apple)
 
    <property name="act10" value="create_npc npc_maple,0,7,stand"/>
    <property name="act20" value="create_npc npc_apple,0,8,stand"/>
    <property name="act30" value="add_monster chloragon,3,npc_maple"/>
    <property name="act40" value="add_monster rockitten,3,npc_apple"/>
    <property name="act50" value="start_battle npc_maple,npc_apple"/>
separate event, multiple endings, if npc_maple wins
    <property name="cond1" value="is variable_set battle_last_winner:npc_maple"/>
separate event, multiple endings, if npc_apple wins
    <property name="cond1" value="not variable_set battle_last_winner:npc_maple"/>
separate event, multiple endings, if no-one wins
    <property name="cond1" value="is variable_set battle_last_result:draw"/>

Please note that all contributions to Tuxepedia are considered to be released under the Creative Commons Attribution-ShareAlike (see Tuxepedia:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)