User Tools

Site Tools


npc_behavior

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
npc_behavior [2020/05/11 09:51] justinnpc_behavior [2023/05/06 21:13] justin
Line 10: Line 10:
 ^Icon^Setting^Description^ ^Icon^Setting^Description^
 |{{:wiki:properties.png?nolink|}}|Preset|Unique name for the set of behavior rules. To store the current settings to a named preset, click the "Save" button to the right of the dropdown box. The "No Behavior" option indicates that this [[NPC]] will be immobile and cannot be interacted with in any way.| |{{:wiki:properties.png?nolink|}}|Preset|Unique name for the set of behavior rules. To store the current settings to a named preset, click the "Save" button to the right of the dropdown box. The "No Behavior" option indicates that this [[NPC]] will be immobile and cannot be interacted with in any way.|
-|{{:wiki:hand.png?nolink|}}|When Player Interacts|Determines what will happen when the [[player character]] interacts with this [[NPC]]. If the "Start Dialogue" or "Start Battle" option is selected, an additional dropdown will allow you to choose which [[dialogue]] or [[battle]] to start.|+|{{:interact.png?nolink|}}|When Player Interacts|Determines what will happen when the [[player character]] interacts with this [[NPC]]. If the "Start Dialogue" or "Start Battle" option is selected, an additional dropdown will allow you to choose which [[dialogue]] or [[battle]] to start.|
 |{{:wiki:navigation_adjacent.png?nolink|}}|When Next to Player|Determines what will happen when this [[NPC]] is on a [[tile]] adjacent to the [[player character]]. If the "Start Dialogue" or "Start Battle" option is selected, an additional dropdown will allow you to choose which [[dialogue]] or [[battle]] to start.| |{{:wiki:navigation_adjacent.png?nolink|}}|When Next to Player|Determines what will happen when this [[NPC]] is on a [[tile]] adjacent to the [[player character]]. If the "Start Dialogue" or "Start Battle" option is selected, an additional dropdown will allow you to choose which [[dialogue]] or [[battle]] to start.|
 +|{{:wiki:skull.png?nolink|}}|On Death|Determines what will happen when this [[NPC]] is defeated. If the "Run Script" option is selected, an additional dropdown will allow you to choose which [[script]] to run.|
 |{{:wiki:script_start.png?nolink|}}|Can Trigger Scripts|When enabled, this [[NPC]] is able to trigger [[script|scripts]] on [[tile|tiles]], for example when stepping onto a trap or a hazardous [[tile]]. The "Triggerable by NPCs" option (see [[Entity Properties]]) must also be enabled for a [[tile|tile's]] [[script]] in order for the [[NPC]] to trigger it.| |{{:wiki:script_start.png?nolink|}}|Can Trigger Scripts|When enabled, this [[NPC]] is able to trigger [[script|scripts]] on [[tile|tiles]], for example when stepping onto a trap or a hazardous [[tile]]. The "Triggerable by NPCs" option (see [[Entity Properties]]) must also be enabled for a [[tile|tile's]] [[script]] in order for the [[NPC]] to trigger it.|
 |{{:wiki:sword.png?nolink|}}|Attackable in Real-Time|When enabled, this [[NPC]] can be attacked in the game world in real-time. Their loot drop and experience points that will be given to the attacking [[character]] when defeated can be set if this option is toggled on. Their stats, like health and attack strength, are configured from the [[Model Properties]] panel of the [[Voxel Editor]].| |{{:wiki:sword.png?nolink|}}|Attackable in Real-Time|When enabled, this [[NPC]] can be attacked in the game world in real-time. Their loot drop and experience points that will be given to the attacking [[character]] when defeated can be set if this option is toggled on. Their stats, like health and attack strength, are configured from the [[Model Properties]] panel of the [[Voxel Editor]].|
Line 24: Line 25:
  
 {{:wiki:npc_behavior_example.gif?nolink|}} {{:wiki:npc_behavior_example.gif?nolink|}}
 +
 +=====Scripting=====
 +Refer to the table below for a list of behavior settings that can be accessed from a [[script]]. The behavior data is stored as a [[codex]], and each setting can be modified or retrieved using its corresponding key.
 +^Key^Possible Values^Data Type^
 +|"interaction_by_player"|"none", "start_dialogue", "start_battle", "run_script"|[[String]]|
 +|"interaction_by_player_dialogue"|[[Dialogue]] name when "interaction_by_player" is "start_dialogue"|[[String]]|
 +|"interaction_by_player_battle"|[[Battle]] name when "interaction_by_player" is "start_battle"|[[String]]|
 +|"interaction_by_player_script"|[[Script]] name when "interaction_by_player" is "run_script"|[[String]]|
 +|"next_to_player"|"none", "start_dialogue", "start_battle", "run_script"|[[String]]|
 +|"next_to_player_dialogue"|[[Dialogue]] name when "next_to_player" is "start_dialogue"|[[String]]|
 +|"next_to_player_battle"|[[Battle]] name when "next_to_player" is "start_battle"|[[String]]|
 +|"next_to_player_script"|[[Script]] name when "next_to_player" is "run_script"|[[String]]|
 +|"collide_with_player"|"none", "run_script"|[[String]]|
 +|"collide_with_player_script"|[[Script]] name when "collide_with_player" is "run_script"|[[String]]|
 +|"on_death"|"none", "run_script"|[[String]]|
 +|"on_death_script"|[[Script]] name when "on_death" is "run_script"|[[String]]|
 +|"can_trigger_scripts"|true, false|[[Boolean]]|
 +|"attackable_in_realtime"|true, false|[[Boolean]]|
 +|"hostility"|Hostility when "attackable_in_realtime" is true. Value can be "always", "attacked", or "never".|[[String]]|
 +|"loot_drop"|Loot drop name when "attackable_in_realtime" is true|[[String]]|
 +|"xp_value"|Experience points when "attackable_in_realtime" is true|[[Number]]|
 +|"move_area"|"all", "none", "group"|[[String]]|
 +|"move_area_group"|[[groups|Group]] name when "move_area" is "group"|[[String]]|
 +|"move_interval"|"fixed", "random_range"|[[String]]|
 +|"move_interval_value"|Interval in seconds ([[number]] for "fixed" interval, [[array]] for "random_range" interval)|[[Number]], [[Array]]|
 +|"move_direction"|"none", "random", "random_forced", "forward", "backward", "opposite", "left", "right", "north", "south", "west", "east"|[[String]]|
 +|"obstacle_reaction"|"none", "turn_left", "turn_right", "reverse_direction", "stop", "run_script"|[[String]]|
 +|"obstacle_reaction_script"|[[Script]] name when "obstacle_reaction" is "run_script"|[[String]]|
 +|"player_interest"|"none", "seek_player", "avoid_player"|[[String]]|
 +|"player_interest_range"|Interest range in [[tile|tiles]] when "player_interest" is "seek_player" or "avoid_player"|[[Number]]|
 +
 +**Examples:**
 +<code bauxite>
 +entity["some_npc"].behavior["move_interval"] = 1;
 +</code>
 +Changes the movement interval so the character moves every 1 second.
 +<code bauxite>
 +entity["some_npc"].behavior["attackable_in_realtime"] = true;
 +</code>
 +Changes the character to be attackable in real-time.
 +<code bauxite>
 +entity["some_npc"].behavior = "Other Behavior";
 +</code>
 +Changes the character's behavior to the "Other Behavior" preset.
  
 ~~NOTOC~~ ~~NOTOC~~
npc_behavior.txt · Last modified: 2023/05/06 21:14 by justin