This article relates to the game "Team Fortress 2". Click here for more information.

obj_sentrygun

From Valve Developer Community
Jump to navigation Jump to search

English (en)Translate (Translate)
C++ Class hierarchy
CObjectSentrygun
CBaseObject
CBaseCombatCharacter
CBaseFlex
CBaseAnimatingOverlay
CBaseAnimating
CBaseEntity
C++ tf_obj_sentrygun.cpp

obj_sentrygun is a model entity available in Team Fortress 2 Team Fortress 2.

Sentry Guns in TF2 at levels 1, 2 and 3.

Entity Description

Used to place a Sentry Gun in your map. The Sentry Gun is a defensive building that puts heavy fire on any enemies that come into range. The Sentry Gun has a range of 1100 Hammer Units from its origin.

Tip.pngTip: Mini-sentries can be created by copying the following VScript code to a .nut file and assigning it under the Entity Scripts
function Precache()
{
	NetProps.SetPropBool(self, "m_bMiniBuilding", true);
}

function OnPostSpawn()
{
	self.SetModelScale(0.75, 0.0);
	self.SetSkin(self.GetSkin() + 2);
}

Keyvalues

Name (targetname) <string>
The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentname or target).
Also displayed in Hammer's 2D views and Entity Report.
See also: Generic Keyvalues, Inputs and Outputs available to all entities
TFObject:
Team (TeamNum) <choices>
Team
  • 2 : Red
  • 3 : Blue
Starting Upgrade Level (defaultupgrade) <choices>
Object spawns in the selected level.
  • 0 : Level 1
  • 1 : Level 2
  • 2 : Level 3
Note.pngNote: Values higher than 2 are accepted (need to be typed in with SmartEdit off), with the limit being 90. With higher levels, the objects gain more health/damage/recharge speed.
SolidToPlayer (SolidToPlayer) <choices>
Object is solid or non-solid to players.
!FGD
  • 1 : Solid
  • 0 : Non-solid

Flags

BaseObject:
Invulnerable : [2]
Icon-Bug.pngBug:Invulnerable buildings can still be stunned with the Sapper or completely destroyed with the Red-Tape Recorder.
Note.pngNote: The sapper can be killed through VScript to stop the object from being affected by the sapper by listening to the player_builtobject game event.
const OBJ_ATTACHMENT_SAPPER = 3
const DAMAGE_NO = 0
function OnGameEvent_player_builtobject(params){
    if(params.object == OBJ_ATTACHMENT_SAPPER){
        local sapper = EntIndexToHScript(params.index)
        local building = sapper.GetMoveParent()
		// Invulnerable buildings only
		if(NetProps.GetPropInt(building, "m_takedamage") == DAMAGE_NO){
			// A delayed kill is necessary to stop the sapper from having a lingering looped sound effect, -1 is delayed enough.
			EntFireByHandle(sapper, "Kill", "", -1, null, null)
		}
    }
}
Upgradable : [4]
Infinite Ammo : [8]

Inputs

TFObject:
SetHealth <integerRedirectInput/integer>
Sets the current and maximum health. If the object is upgraded, the health will scale according to the new value.
Icon-Bug.pngBug:Crashes if set to 0.  [todo tested in ?]
AddHealth <integerRedirectInput/integer>
Increase the current health of the object. Does not surpass maximum health. Does not destroy the building if set at 0.
RemoveHealth <integerRedirectInput/integer>
Decrease current health of the object. Destroys the object if the health hits 0.
SetSolidToPlayer <booleanRedirectInput/boolean>
Sets the object to be solid or non-solid to players. 0 - non-solid, 1 - solid.
!FGD
Note.pngNote: The builder of the building will always be solid to the object.
SetTeam <integerRedirectInput/integer>
Ses the team the object is allied to. Does not change skin.
Skin <integerRedirectInput/integer>
Sets the skin the object uses. Useful in conjunction with SetTeam.
SetBuilder
Sets the builder of the object to the !activator.
Show
Makes the building visible and re-enables it.
Hide
Makes the building invisible and disables it.
Icon-Bug.pngBug:Does not hide the obj_dispenser screen. A workaround is to fire the SetInactive (or SetActive) on the vgui_screen entity, although it will apply to all buildings.  [todo tested in ?]
Enable
Enable the object.
Note.pngNote: Using Enable after using the Hide input will enable the building and keep it invisible.
Icon-Bug.pngBug:Enable will reset the upgrade level on the object. Use the Show input instead, which properly re-enables the object.  [todo tested in ?]
Disable
Disable the object.

Outputs

TFObject:
OnDestroyed
Sent when object dies.
OnDamaged
Sent when hurt. Works with !activator.
OnRepaired  '!FGD'
Sent when repaired.
Icon-Bug.pngBug:Does not function.  [todo tested in ?]
OnDisabled  '!FGD'
Sent when disabled.
Icon-Bug.pngBug:Does not function.  [todo tested in ?]
OnReenabled  '!FGD'
Sent when enabled.
Icon-Bug.pngBug:Does not function.  [todo tested in ?]
OnObjectHealthChanged <integerRedirectOutput/integer> '!FGD'
Sends current health as a parameter whenever a change occurs.