This entity is
not in the
FGD by default.
See below for instructions on making it available.
npc_hover_turret
is a point entity available in Portal 2. It is a turret variant cut from Portal 2 which would have hung from the ceiling and fired a laser at the player. It remains in the final game, but is somewhat buggy.
It is hardcoded to use the model models/npcs/hover_turret.mdl
, which is missing in the final game. According to early screenshots, it originally used a model based on prop_glados_core from the first game. Attempts have been made to restore this model, but currently have issues, such as the turret not being able to aim vertically.
Bug:The turret's laser will only render when it is in its neutral or searching modes, meaning it will not render when firing at the player. This is fixed in [todo tested in?]
Bug:The hover turret will attempt to fire at the player through portals, but is unable to actually do so. [todo tested in?]
Bug:The hover turret's tether snaps easily, and may do so randomly at the start of the map. [todo tested in?]
Workaround:Increasing the cvar hover_turret_break_dist
makes this less likely to happen, but also makes it harder for the player to deliberately pull the turret off the tether.
Bug:Crashes the game when picked up in Co-op. [todo tested in?]
Bug:The game may crash if a hover turret is firing upon a tethered hover turret. [todo tested in?]
FGD Code
@PointClass base(BaseNPC)
studioprop("models/npcs/hover_turret.mdl")
line(255 255 255, targetname, attachtarget)
= npc_hover_turret: "The cut Hover Turret, which hangs from the ceiling and fires a laser at the player. Missing its model by default, and somewhat buggy."
[
canPushPlayer(boolean) : "Laser Pushes Player" : 0 : "Should the hover turret's laser deal knockback? Usually only works while the player is in the air."
sentryRotateSpeed(float) : "Idle Rotation Speed" : "10" : "While idle, the hover turret will rotate at this speed."
attachTarget(target_destination) : "Tether Attach Target" : : "An entity (usually info_target) which the hover turret should hang from."
]
Keyvalues
- Laser Pushes Player
(canPushPlayer)
<boolean>
- Should the hover turret's laser deal knockback? Usually only works while the player is in the air.
- Idle Rotation Speed
(sentryRotateSpeed)
<float>
- While idle, the hover turret will rotate at this speed.
- Tether Attach Target
(attachTarget)
<targetname>
- An entity (usually info_target) which the hover turret should hang from.
BaseNPC keyvalues
CBaseCombatCharacter:
- Relationship
(Relationship) <string> !FGD
- <string|targetname or classname> <string|disposition> <int|rank>
- Changes whether this entity likes or dislikes certain other things. Used like the
ai_relationship entity, with this entity as the subject.
- Values for
disposition are:
D_HT : Hate
D_FR : Fear
D_LI : Like
D_NU : Neutral
- Physics Impact Damage Scale
(physdamagescale) <float>
- Multiplier for damage amount when this entity is hit by a physics object. With a value of 0 the entity will take no damage from physics.
CAI_BaseNPC:
- Target Path Corner
(target) <targetname>
- The
path_corner that this NPC will move to after spawning.
- Squad Name
(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.
- Hint Group
(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.
- Hint Limit Nav
(hintlimiting) <boolean>
- Limits NPC to using specified hint group for navigation requests. Does not limit local navigation.
- Sleep State
(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
- Wake Radius
(wakeradius) <float>
- Auto-wake if player comes within this distance.
- Wake Squad
(wakesquad) <boolean>
- Wake all of the NPCs squadmates if the NPC is woken.
- Enemy Filter
(enemyfilter) <targetname>
- Filter entity to test targets against.
- Ignore unseen enemies
(ignoreunseenenemies) <boolean>
- Prefers visible enemies, regardless of distance or relationship priority.
DamageFilter:
- Damage Filter
(damagefilter) <targetname>
- Name of the
filter_damage_type entity that controls which entities can damage us.
|
Inputs
BaseNPC inputs
CAI_BaseNPC:
ActivateSpeedModifier !FGD
DisableSpeedModifier !FGD
Break
- Smash into pieces. If this is not possible, disappear.
BecomeRagdoll (in all games since )
- Remove itself and instantly become a ragdoll with zero force (just go limp). OnDeath, etc. outputs will NOT be fired.
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 !FGD
OutsideTransition !FGD
SetBodyGroup <integer>
- HACK: Sets this NPC's body group (from 0–n).
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 : Hate
D_FR : Fear
D_LI : Like
D_NU : Neutral
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.
CBaseCombatCharacter:
KilledNPC !FGD
- Tells the entity it killed something. Despite the name, this can include a player. This input will be automatically sent by the victim when they die.
physdamagescale <float>
- Scales damage energy when this character is hit by a physics object. With a value of 0 the NPC will take no damage from physics.
DamageFilter:
SetDamageFilter <string>
- Sets the entity to use as damage filter. Pass in an empty string (no parameter) to clear the damage filter.
|
Outputs
BaseNPC 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.
|
See also