CAI BaseNPC: Difference between revisions
Jump to navigation
Jump to search
Important:Following Keyvalues / Inputs / Outputs are available for all entities that inherit this class, but may be overridden by entity game code
SirYodaJedi (talk | contribs) No edit summary |
Gameplayer (talk | contribs) No edit summary |
||
Line 5: | Line 5: | ||
==Keyvalues== | ==Keyvalues== | ||
{{KV | {{KV|additionalequipment|intn=0|string|Sets what equipment NPC must carry. Only few NPCs support this.}} | ||
{{KV|squadname|intn=0|string|NPCs that are in the same [[squads|squad]] (i.e., have matching squad names) will share information about enemies and will take turns attacking and covering each other.}} | |||
{{KV|hintgroup|intn=0|string|[[Hint Nodes#Hint Group|Hint groups]] are used by NPCs to restrict their hint-node searching to a subset of the map's hint nodes. Only hint nodes with matching hint group names will be considered by this NPC.}} | |||
{{KV|hintlimiting|intn=0|bool|Limits NPC to using specified hint group for navigation requests. Does not limit local navigation.}} | |||
{{KV|sleepstate|intn=0|choices|Holds the NPC in stasis until specified condition. See also <tt>Wake Radius</tt> and <tt>Wake Squad</tt>. | |||
:* 0: None | |||
:* 1: Waiting for threat | |||
:* 2: Waiting for PVS | |||
:* 3: Waiting for input, ignore PVS | |||
:* 4: Auto PVS | |||
:* 5: Auto PVS after PVS}} | |||
{{KV|wakeradius|intn=0|float|Auto-wake if player comes within this distance.}} | |||
{{KV|wakesquad|intn=0|bool|Wake all of the NPCs squadmates if the NPC is woken.}} | |||
{{KV|enemyfilter|intn=0|targetname|[[Filter]] entity to test targets against.}} | |||
{{KV|ignoreunseenenemies|intn=0|bool|Prefers visible enemies, regardless of distance or relationship priority.}} | |||
==Inputs== | ==Inputs== | ||
{{ | {{IO|ActivateSpeedModifier}} | ||
{{IO|DisableSpeedModifier}} | |||
{{IO|Break|Smash into pieces. If this is not possible, disappear.}} | |||
{{IO|BeginRappel|Start rappelling now.}} | |||
{{IO|ForceInteractionWithNPC <[[string]]> <[[string]]>|Force the NPC to use a dynamic interaction with another NPC. Syntax is <tt><[[targetname]]> <dynamic interaction></tt>.|since=EP1}} | |||
{{IO|ForgetEntity|Clears out the NPC's knowledge of a named entity.|param=targetname}} | |||
{{IO|UpdateEnemyMemory|Update (or create) this NPC's memory of of the given entity.|since=EP1}} | |||
{{IO|GagEnable}} | |||
{{IO|GagDisable|Gagged NPCs won't speak (or moan, caw, etc.) unless made to be a choreographed scene.}} | |||
{{IO|HolsterWeapon|since=EP1}} | |||
{{IO|UnholsterWeapon|Force the NPC to holster or unholster their weapon. Ignored if the NPC is scripting or if the NPC doesn't use weapons.|since=EP1}} | |||
{{IO|HolsterAndDestroyWeapon|Same as <code>HolsterWeapon</code>, except the weapon is destroyed once it has been concealed.|since=EP1}} | |||
{{IO|IgnoreDangerSounds|Ignore danger sounds for the specified number of seconds.|param=float}} | |||
{{IO|InsideTransition}} | |||
{{IO|OutsideTransition}} | |||
{{IO|SetEnemyFilter|param=string}} | |||
{{IO|SetHealth|Set the NPC's health.|param=int}} | |||
{{IO|SetMaxLookDistance|Sets the maximum look distance for the NPC. Defaults are 2048 and 6000 for long range NPCs.|param=float|only=GMOD}} | |||
{{IO|SetRelationship <[[string]]{{!}}[[targetname]] or [[classname]]> <[[string]]{{!}}disposition> <[[int]]{{!}}rank>|Changes whether this NPC likes or dislikes certain others. Used like the {{ent|ai_relationship}} entity, with this NPC as the subject. | |||
: Values for <code>disposition</code> are: | |||
:* <code>D_HT</code>: Hate | |||
:* <code>D_FR</code>: Fear | |||
:* <code>D_LI</code>: Like | |||
:* <code>D_NU</code>: Neutral}} | |||
{{IO|SetSpeedModRadius|param=int}} | |||
{{IO|SetSpeedModSpeed|param=int}} | |||
{{IO|SetSquad|Change the name of this NPC's [[Squads|squad]]. Leaving the parameter blank will remove the NPC from any existing squad.|param=string}} | |||
{{IO|StartScripting}} | |||
{{IO|StopScripting|Enter/exit scripting state, where NPCs ignore a variety of stimulus that would make them break out of their scripts. They ignore danger sounds, ignore {{ent|use|alt=+Use}}, don't idle speak or respond to other NPCs' idle speech, and so on.}} | |||
{{IO|Wake|Wakes up the NPC if it is sleeping.}} | |||
==Flags== | ==Flags== | ||
Line 14: | Line 57: | ||
==Outputs== | ==Outputs== | ||
{{ | {{IO|OnDamaged|Fired when this NPC takes damage {{activator|damage inflictor}}.}} | ||
{{IO|OnDamagedByPlayer|Fired when this NPC is hurt by a player {{activator|attacker or vehicle driver [if friendly fire]}}.}} | |||
{{IO|OnDamagedByPlayerSquad|Fired when this NPC is hurt by a player OR by one of the player's squadmates {{activator|attacker or vehicle driver [if friendly fire]}}.}} | |||
{{IO|OnDeath|Fired when this NPC is killed {{activator|killer}}.}} | |||
{{IO|OnDenyCommanderUse|Fired when this NPC has refused to join the player's squad.}} | |||
{{IO|OnForcedInteractionAborted|Fired when the NPC aborts a forced interaction for some reason (target NPC died, couldn't be pathed to, etc.).}} | |||
{{IO|OnForcedInteractionStarted|Fired when the NPC starts a forced interaction.}} | |||
{{IO|OnForcedInteractionFinished|"NPCs in actbusies can no longer perform dynamic interactions." {{todo|What does this mean?}}}} | |||
{{IO|OnHalfHealth|Fired when this NPC reaches half of its maximum health.}} | |||
{{IO|OnHearCombat|Fired when this NPC hears combat sounds.}} | |||
{{IO|OnHearPlayer|Fired when this NPC hears the player.}} | |||
{{IO|OnHearWorld|Fired when this NPC hears a sound (other than combat or the player).}} | |||
{{IO|OnFoundEnemy|Fired when this NPC establishes line of sight to its enemy.|param=targetname}} | |||
{{IO|OnLostEnemy|Fired when this NPC loses its enemy. Usually due to the enemy being killed/removed, or because this NPC has selected a newer, more dangerous enemy.}} | |||
{{IO|OnLostEnemyLOS|Fired when this NPC loses line of sight to its enemy.}} | |||
{{IO|OnFoundPlayer|Fired when this NPC establishes line of sight to its enemy, and that enemy is a player.|param=targetname}} | |||
{{IO|OnLostPlayer|Fired when this NPC loses its enemy, and that enemy was a player. Usually due to the enemy being killed/removed, or because this NPC has selected a newer, more dangerous enemy.}} | |||
{{IO|OnLostPlayerLOS|Fired when this NPC loses line of sight to its enemy, and that enemy is a player.}} | |||
{{IO|OnSleep|Fired when this NPC enters a sleep state.}} | |||
{{IO|OnWake|Fired when this NPC comes out of a sleep state.}} | |||
{{IO|OnRappelTouchdown|Fires when done rappelling.}} |
Revision as of 13:37, 25 September 2024
![]() |
---|
CAI_BaseNPC |
![]() |

Keyvalues
- additionalequipment <string>
- Sets what equipment NPC must carry. Only few NPCs support this.
- squadname <string>
- NPCs that are in the same squad (i.e., have matching squad names) will share information about enemies and will take turns attacking and covering each other.
- hintgroup <string>
- Hint groups are used by NPCs to restrict their hint-node searching to a subset of the map's hint nodes. Only hint nodes with matching hint group names will be considered by this NPC.
- hintlimiting <boolean>
- Limits NPC to using specified hint group for navigation requests. Does not limit local navigation.
- sleepstate <choices>
- Holds the NPC in stasis until specified condition. See also Wake Radius and Wake Squad.
- 0: None
- 1: Waiting for threat
- 2: Waiting for PVS
- 3: Waiting for input, ignore PVS
- 4: Auto PVS
- 5: Auto PVS after PVS
- wakeradius <float>
- Auto-wake if player comes within this distance.
- wakesquad <boolean>
- Wake all of the NPCs squadmates if the NPC is woken.
- enemyfilter <targetname>
- Filter entity to test targets against.
- ignoreunseenenemies <boolean>
- Prefers visible enemies, regardless of distance or relationship priority.
Inputs
- ActivateSpeedModifier
- DisableSpeedModifier
- Break
- Smash into pieces. If this is not possible, disappear.
- BeginRappel
- Start rappelling now.
- ForceInteractionWithNPC <string> <string> (in all games since
)
- Force the NPC to use a dynamic interaction with another NPC. Syntax is <targetname> <dynamic interaction>.
- ForgetEntity <targetname >
- Clears out the NPC's knowledge of a named entity.
- UpdateEnemyMemory (in all games since
)
- Update (or create) this NPC's memory of of the given entity.
- GagEnable
- GagDisable
- Gagged NPCs won't speak (or moan, caw, etc.) unless made to be a choreographed scene.
- HolsterWeapon (in all games since
)
- UnholsterWeapon (in all games since
)
- Force the NPC to holster or unholster their weapon. Ignored if the NPC is scripting or if the NPC doesn't use weapons.
- HolsterAndDestroyWeapon (in all games since
)
- Same as
HolsterWeapon
, except the weapon is destroyed once it has been concealed.
- IgnoreDangerSounds <float >
- Ignore danger sounds for the specified number of seconds.
- InsideTransition
- OutsideTransition
- SetEnemyFilter <string >
- SetHealth <integer >
- Set the NPC's health.
- SetMaxLookDistance <float > (only in
)
- Sets the maximum look distance for the NPC. Defaults are 2048 and 6000 for long range NPCs.
- SetRelationship <string|targetname or classname> <string|disposition> <int|rank>
- Changes whether this NPC likes or dislikes certain others. Used like the ai_relationship entity, with this NPC as the subject.
- Values for
disposition
are:D_HT
: HateD_FR
: FearD_LI
: LikeD_NU
: Neutral
- SetSpeedModRadius <integer >
- SetSpeedModSpeed <integer >
- SetSquad <string >
- Change the name of this NPC's squad. Leaving the parameter blank will remove the NPC from any existing squad.
- StartScripting
- StopScripting
- Enter/exit scripting state, where NPCs ignore a variety of stimulus that would make them break out of their scripts. They ignore danger sounds, ignore +Use, don't idle speak or respond to other NPCs' idle speech, and so on.
- Wake
- Wakes up the NPC if it is sleeping.
Flags
BaseNPC flags
- Wait Till Seen : [1]
- Prevents this NPC from seeing (or being seen) until it enters a player's viewcone.
- Gag : [2]
- Won't make IDLE sounds until it's angry.
- Fall to ground (unchecked means teleport to ground) : [4]
- Drop Healthkit : [8]
- Causes this NPC to drop an item_healthvial upon dying.
- Efficient : [16]
- Don't acquire enemies or avoid obstacles
- Wait For Script : [128]
- Forces this NPC to "wait" in an idle state until it finishes playing a scripted_sequence.
- Long Visibility/Shoot : [256]
- By default, increases a NPC's sight range to
6,000
units and allows it to attack from anywhere within that distance.
- Fade Corpse : [512]
- Think outside PVS : [1024]
- Allows this NPC to run its regular AI outside of any player's PVS.
- Template NPC : [2048]
- Marks this NPC as a template for entities like npc_template_maker. The NPC will not spawn on its own. This is not needed for point_template.
- Do Alternate collision for this NPC (player avoidance) : [4096]
- Don't drop weapons : [8192]
- Ignore player push : [16384] (in all games since
)
- Entity won't give way to player.
Outputs
- OnDamaged
- Fired when this NPC takes damage (!activator is the damage inflictor).
- OnDamagedByPlayer
- Fired when this NPC is hurt by a player (!activator is the attacker or vehicle driver [if friendly fire]).
- OnDamagedByPlayerSquad
- Fired when this NPC is hurt by a player OR by one of the player's squadmates (!activator is the attacker or vehicle driver [if friendly fire]).
- OnDeath
- Fired when this NPC is killed (!activator is the killer).
- OnDenyCommanderUse
- Fired when this NPC has refused to join the player's squad.
- OnForcedInteractionAborted
- Fired when the NPC aborts a forced interaction for some reason (target NPC died, couldn't be pathed to, etc.).
- OnForcedInteractionStarted
- Fired when the NPC starts a forced interaction.
- OnForcedInteractionFinished
- "NPCs in actbusies can no longer perform dynamic interactions." Todo: What does this mean?
- OnHalfHealth
- Fired when this NPC reaches half of its maximum health.
- OnHearCombat
- Fired when this NPC hears combat sounds.
- OnHearPlayer
- Fired when this NPC hears the player.
- OnHearWorld
- Fired when this NPC hears a sound (other than combat or the player).
- OnFoundEnemy <targetname >
- Fired when this NPC establishes line of sight to its enemy.
- OnLostEnemy
- Fired when this NPC loses its enemy. Usually due to the enemy being killed/removed, or because this NPC has selected a newer, more dangerous enemy.
- OnLostEnemyLOS
- Fired when this NPC loses line of sight to its enemy.
- OnFoundPlayer <targetname >
- Fired when this NPC establishes line of sight to its enemy, and that enemy is a player.
- OnLostPlayer
- Fired when this NPC loses its enemy, and that enemy was a player. Usually due to the enemy being killed/removed, or because this NPC has selected a newer, more dangerous enemy.
- OnLostPlayerLOS
- Fired when this NPC loses line of sight to its enemy, and that enemy is a player.
- OnSleep
- Fired when this NPC enters a sleep state.
- OnWake
- Fired when this NPC comes out of a sleep state.
- OnRappelTouchdown
- Fires when done rappelling.