Difference between revisions of "HPL3/Amnesia: Rebirth/Scripting/Agents/Ghouls"
(WIP - Started filling in mode specifications.) |
(WIP - modes vs commands and additional mode/function info added.) |
||
Line 4: | Line 4: | ||
{{ConstructionNotice| Basic overview of agent}} | {{ConstructionNotice| Basic overview of agent}} | ||
− | = Basic | + | = Basic Overview = |
== Map Configuration == | == Map Configuration == | ||
+ | TODO | ||
== Scripting Setup == | == Scripting Setup == | ||
− | = Important Functions = | + | TODO |
+ | |||
+ | == Modes vs Commands == | ||
+ | |||
+ | Each mode contains a subset of behaviors. They define what the 'default' action for the agent should be and can be used to give different agents of the same type unique behaviors. | ||
+ | |||
+ | A command is an order issued to the agent independent of the current mode. They can be used to override the agents current action. | ||
+ | |||
+ | Unlike previous HPL titles, agents should only be commanded through modes (or commands) and NOT through changing the agent state. | ||
+ | |||
+ | == Important Functions == | ||
<syntaxhighlight lang="c++">void Ghoul_Mode_Set(const tString &in asAgentName, eGhoulMode aMode, bool abForce = false)</syntaxhighlight> | <syntaxhighlight lang="c++">void Ghoul_Mode_Set(const tString &in asAgentName, eGhoulMode aMode, bool abForce = false)</syntaxhighlight> | ||
Line 21: | Line 32: | ||
= Modes = | = Modes = | ||
+ | |||
+ | === Patrol Mode vs Patrol Command === | ||
+ | |||
+ | {{ConstructionNotice|Move this section to patrol command func section}} | ||
+ | |||
+ | A patrol set up through the Patrol Mode will be a ghouls default behavior when not reacting to the player. This differs from a patrol set up through the Patrol Command functions, which is a one time patrol. A patrol command can also be issued while the agent is in a non patrol mode. | ||
== eGhoulMode_Idle == | == eGhoulMode_Idle == | ||
− | + | This is the ghouls default mode. In this mode the ghoul will remain stationary when not reacting to the player. | |
− | + | TODO - Verify there are no idle specific functions. | |
− | |||
− | |||
== eGhoulMode_Patrol == | == eGhoulMode_Patrol == | ||
Line 54: | Line 69: | ||
'''abLoopAnim''' If the animation should loop.<br /> | '''abLoopAnim''' If the animation should loop.<br /> | ||
+ | <syntaxhighlight lang="c++">void Ghoul_ModePatrol_ClearNodes(const tString &in asAgentName)</syntaxhighlight> | ||
+ | Removes all the nodes from the patrol mode list.<br /> | ||
− | + | '''asAgentName''': Name of the agent.<br /> | |
− | == | + | <syntaxhighlight lang="c++">void Ghoul_ModePatrol_SetSpeed(const tString &in asAgentName, eGhoulSpeed aSpeed = eGhoulSpeed_Walk)</syntaxhighlight> |
+ | Sets the speed of movement for the current patrol mode.<br /> | ||
− | + | '''asAgentName''': Name of the agent.<br /> | |
+ | '''aSpeed''': The speed with which the ghoul will move.<br /> | ||
− | + | == eGhoulMode_Enthralled == | |
− | + | A ghoul in enthralled mode will move to a specified location when not reacting to the player. | |
− | == | + | === Enthralled Functions === |
− | + | <syntaxhighlight lang="c++>void Ghoul_ModeEnthralled_Setup(const tString &in asAgentName, const tString &in asLookAtEntity, const tString &in asStandPosEntity, const tString &in asIdleAnim)</syntaxhighlight> | |
+ | Puts the ghoul in the enthralled state.<br /> | ||
− | + | '''asAgentName''': Name of the agent.<br /> | |
+ | '''asLookAtEntity''': Name of the entity to be turned toward.<br /> | ||
+ | '''asStandPosEntity''': Name of the entity to stand at.<br /> | ||
+ | '''asIdleAnim''': Name of the idle animation.<br /> | ||
== eGhoulMode_RandomWanderArea == | == eGhoulMode_RandomWanderArea == | ||
− | A ghoul in the random wander area will move to random | + | A ghoul in the random wander area will move to random nodes within a specified area when not reacting to the player. |
+ | |||
+ | == eGhoulMode_Hunt == | ||
+ | |||
+ | A ghoul in hunt mode will be always hunting the player. | ||
+ | |||
+ | == eGhoulMode_StalkThroughHoles == | ||
+ | |||
+ | == eGhoulMode_Trapped == | ||
+ | |||
+ | == eGhoulMode_Guard == |
Revision as of 08:32, 10 November 2020
This article is actively undergoing a major edit. The user who added this notice will be listed in its edit history should you wish to contact them. |
Contents
Basic Overview
Map Configuration
TODO
Scripting Setup
TODO
Modes vs Commands
Each mode contains a subset of behaviors. They define what the 'default' action for the agent should be and can be used to give different agents of the same type unique behaviors.
A command is an order issued to the agent independent of the current mode. They can be used to override the agents current action.
Unlike previous HPL titles, agents should only be commanded through modes (or commands) and NOT through changing the agent state.
Important Functions
void Ghoul_Mode_Set(const tString &in asAgentName, eGhoulMode aMode, bool abForce = false)
Puts the ghoul into a mode, which determines its behavior when it's not reacting to the player's presence.
asAgentName: Name of the agent.
aMode: Which mode to put the ghoul in.
abForce: If true the ghoul will switch the behavior instantly regardless of state, otherwise it will do so more naturally on the next best opportunity.
Modes
Patrol Mode vs Patrol Command
A patrol set up through the Patrol Mode will be a ghouls default behavior when not reacting to the player. This differs from a patrol set up through the Patrol Command functions, which is a one time patrol. A patrol command can also be issued while the agent is in a non patrol mode.
eGhoulMode_Idle
This is the ghouls default mode. In this mode the ghoul will remain stationary when not reacting to the player.
TODO - Verify there are no idle specific functions.
eGhoulMode_Patrol
A ghoul in patrol mode will move to specified patrol path nodes when not reacting to the player.
Patrol Functions
void Ghoul_ModePatrol_Setup(const tString &in asAgentName, bool abRandom = false, eGhoulSpeed aSpeed = eGhoulSpeed_Walk)
Sets up the basic parameters for the ghoul's patrol mode.
asAgentName: Name of the agent.
abRandom: If nodes should be picked randomly, otherwise they will be picked in the order added.
aSpeed: The speed with which the ghoul will move.
void Ghoul_ModePatrol_AddNode(const tString &in asAgentName, const tString&in asNodeName, float afMinWaitTime = 0, float afMaxWaitTime= - 1,
const tString &in asAnimName = "", bool abLoopAnim = false)
Adds a node to the list of nodes to patrol in patrol mode.
asAgentName: Name of the agent.
asNodeName: Name of the node.
afMinWaitTime: The minimum amount of time how long the ghoul should wait at this node.
afMaxWaitTime: The maximum amount of time how long the ghoul should wait at this node.
asAnimName: Name of the animation that should play when the ghoul reaches this node.
abLoopAnim If the animation should loop.
void Ghoul_ModePatrol_ClearNodes(const tString &in asAgentName)
Removes all the nodes from the patrol mode list.
asAgentName: Name of the agent.
void Ghoul_ModePatrol_SetSpeed(const tString &in asAgentName, eGhoulSpeed aSpeed = eGhoulSpeed_Walk)
Sets the speed of movement for the current patrol mode.
asAgentName: Name of the agent.
aSpeed: The speed with which the ghoul will move.
eGhoulMode_Enthralled
A ghoul in enthralled mode will move to a specified location when not reacting to the player.
Enthralled Functions
void Ghoul_ModeEnthralled_Setup(const tString &in asAgentName, const tString &in asLookAtEntity, const tString &in asStandPosEntity, const tString &in asIdleAnim)
Puts the ghoul in the enthralled state.
asAgentName: Name of the agent.
asLookAtEntity: Name of the entity to be turned toward.
asStandPosEntity: Name of the entity to stand at.
asIdleAnim: Name of the idle animation.
eGhoulMode_RandomWanderArea
A ghoul in the random wander area will move to random nodes within a specified area when not reacting to the player.
eGhoulMode_Hunt
A ghoul in hunt mode will be always hunting the player.