Entity Additions

From SigMod
Revision as of 11:47, 16 June 2022 by Tomboyfan52 (talk | contribs) (targeting in array netprop/datamap)
Jump to navigation Jump to search

Targeting

  • You can target parent of specified entity by adding @p@. @p@!activator would target parent of the activator entity
  • You can target children of specified entity by adding @c@ prefix. @c@!activator would target children of the activator entity
  • Target all entities in a box by adding @bbxmin ymin zmin xmax ymax zmax@ prefix. @bb-100 -100 -100 100 100 100@prop_dynamic would target prop_dynamic entities inside -100 -100 -100 100 100 100 box
  • Target entities matching the filter by adding @f@ prefix. @f@filtername@entityname would target all entityname that pass the filtername filter
  • Target entity from datamap/sendprop by adding @e@ prefix. @e@m_hOwnerEntity@!activator would target the owner entity of !activator. You can also target in array with $. @e@m_hMyWeapons$1@!activator would target secondary weapon of !activator.

Various

  • You can execute an input immediately rather than with at least 1 tick delay by setting input delay to -1. This allows you to access !activator of $OnKilled entity

Expressions

Expressions can be used to calculate input parameters without the need of extra logic entities

point_viewcontrol

Inputs

  • $EnableAll
    • Enable the camera for all players on the map. Spawnflag [512] may not work properly. (Start At Player, Interruptable by Player)
  • $DisableAll
    • Disable the camera for all players on the map
  • $SetTarget <entity>
    • Set current target to entity

Sentry Gun (obj_sentrygun)

Spawnflags

  • [64] - Spawn as mini-sentry

Weapon Mimic (tf_point_weapon_mimic)

  • Fired projectiles can have their team assigned with teamnum keyvalue (2 for RED and 3 for BLU). Previously all fired projectiles always belonged to the BLU team
  • If the player owner is set with $SetOwner or $InheritOwner, fired projectiles are assigned to the owner
  • Fired stickybombs are automatically removed if the mimic is removed
  • Added projectile type 4 - Bullet. SpeedMax keyvalue determines max distance (infinite if not specified). SplashRadius determines knockback force

Keyvalues

  • $preventshootparent <1/0>
    • If set, bullets fired from the mimic cannot hit the parent entity
  • $dmgtype <int>
    • Set custom damage type
  • $killicon <string>
    • Set custom kill icon

Outputs

  • $OnFire
    • Called when the projectile is being fired, with the projectile as !activator

Spawnflags

  • [4] - Fire "OnUser4" output when projectile is fired, with the projectile as !activator.

Tank (tank_boss)

  • When tank starts deploying, and there is at least one PointTemplate assigned to it, "OnUser4" output is activated

Outputs

  • $OnStartDeploy
    • Fired when the tank is deploying the bomb

Medic shield (entity_medigun_shield)

Spawnflags

  • [1] - Don't expire and don't block LOS
  • [2] - Use the LV2 Shield model

logic_case

Text formatter

With the use of the added inputs, logic_case can be transformed into a text formatter, replacing % in the format string into format parameters.

Example point template usage:

Formatter
{
	OnSpawnOutput
	{
		Target "formattest"
		Action "$Format"
		Delay 1
	}
	logic_case
	{
		"targetname" "formattest"
		"case16" "You have % out of % coins left. % %% done" // Formatter string
		"case01" "6" //First argument
		"case02" "12" //Second argument
		"case03" "50" //Third argument
		"ondefault" "player,$DisplayTextCenter,,0,-1"
	}
}

This would display "You have 6 out of 12 coins left. 50 % done" to all players

Menu

You can use $DisplayMenu input to display a menu for the player, up to 15 entries

Menu
{
	OnSpawnOutput
	{
		Target "menutest"
		Action "$DisplayMenu"
		Delay 1
		Param "player"
	}
	logic_case
	{
		"targetname" "menutest"
		"case16" "Menu title|30|Cancel" // Title, menu duration (0 for infinite), display optional cancel button
		"case01" "option1" //First argument
		"case02" "!disabled option" //Second argument, disabled
		"case03" "suicide" //Third argument
		"oncase03" "!activator,sethealth,0,0,-1" // Selected 3rd option
		"ondefault" "player,$DisplayTextCenter,he,0,-1" // No option selected
	}
}

Inputs

  • $FormatString <string>
    • Sets formatting string, then fires OnDefault output, with formatted string as parameter
  • $FormatStringNoFire <string>
    • Sets formatting string
  • $FormatInput1 <string>
    • Sets formatting input argument 1, then fires OnDefault output, with formatted string as parameter
  • $FormatInput2-15 <string>
    • Sets formatting input argument 2-15, then fires OnDefault output, with formatted string as parameter
  • $FormatInputNoFire1 <string>
    • Sets formatting input argument 1
  • $Format
    • Fires OnDefault output, with formatted string as parameter
  • $TestSigsegv
    • Fires OnUser1 output. Can be used to test if sigsegv extension is active
  • $ToInt <any>
    • Fires OnDefault output, converts parameter value from string/float to integer
  • $ToFloat <any>
    • Fires OnDefault output, converts value from string/int to real number
  • $CallerToActivator <any>
    • Fires OnDefault output, but the !caller entity is converted to !activator
  • $GetKeyValueFromActivator <string>
    • Fires OnDefault output, the key value from the !activator entity is the parameter
  • $GetConVar <string>
    • Fires OnDefault output, the convar (console variable) number value is the parameter
  • $GetConVarString <string>
    • Fires OnDefault output, the convar (console variable) string value is the parameter
  • $DisplayMenu <entity>
    • Display menu at player
  • $HideMenu <entity>
    • Hide menu at player

tf_gamerules

Inputs

  • $StopVO <string>
    • Stops sound that was started with PlayVO input
  • $StopVORed <string>
    • Stops sound that was started with PlayVORed input
  • $StopVOBlue <string>
    • Stops sound that was started with PlayVOBlue input
  • $SetBossHealthPercentage <float>
    • Set Halloween boss bar percentage to a value between 0 and 1. 0 hides the health bar, any other value makes the bar appear
  • $SetBossState <int>
    • If set to 1, makes the health bar green, like if Merasmus is hiding. If set to 0, the bar goes back to normal
  • $AddCurrencyGlobal <int>
    • Add currency to all players

player

Inputs

  • $AllowClassAnimations <0|1>
    • Allow class animations instead of using refpose when UseCustomModel input is fired to change player model
  • $SwitchClass <string>
    • Switch player class. The parameter can be either a class name (heavyweapons for example), or class index
  • $SwitchClassInPlace <string>
    • Switch player class in current position. The parameter can be either a class name (heavyweapons for example), or class index
  • $ForceRespawn
    • The player instantly respawns
  • $ForceRespawnDead
    • The player instantly respawns, but only if they are dead
  • $DisplayTextCenter <string>
    • Display text in the middle of the screen
  • $DisplayTextChat <string>
    • Display text to the player's chat
  • $DisplayTextHint <string>
    • Display yellow text in the bottom part of the screen and play a sound cue
  • $Suicide
    • Kill the player
  • $ChangeAttributes <string>
    • If the player is a bot, this can be used to change active EventChangeAttributes
  • $RollCommonSpell
    • Roll common spell
  • $SetSpell <string>
    • Set player current spell to one of the following:
      • Fireball
      • Ball O' Bats
      • Healing Aura
      • Pumpkin MIRV
      • Superjump
      • Invisibility
      • Teleport
      • Tesla Bolt
      • Minify
      • Meteor Shower
      • Summon Monoculus
      • Summon Skeletons
  • $AddSpell <string>
    • Adds spell to the number of spells. If the spell is different than the current one, it replaces the spell. The parameter is the same as in $SetSpell
  • $AddCond <int> [int]
    • Add condition to player. If a second argument is present, the condition will only run for a specified duration
  • $RemoveCond <int>
    • Remove condition from player
  • $AddPlayerAttribute <string>
    • Add attribute to player, the parameter should be passed in this way: attribute|value. Example: "move speed bonus|1.2"
  • $RemovePlayerAttribute <string>
    • Remove attribute from player. Example: "move speed bonus"
  • $GetPlayerAttribute <string>
    • Sends attribute from player as the parameter.
    • parameter format: attribute|entity|input|default value
    • example: fire rate bonus|!activator|$DisplayTextChat|0
  • $AddItemAttribute <string>
    • Add attribute to item in slot, the parameter should be passed in this way: attribute|value|slot or item name. Example "damage bonus|2|0" adds 100% damage bonus to primary weapon, "damage penalty|0.5" adds 50% damage penalty to active weapon
  • $RemoveItemAttribute <string>
    • Remove attribute from item in slot, the parameter should be passed in this way: attribute|slot or item name. Example "damage bonus" removes damage bonus from primary weapon, "damage penalty" removes damage penalty from active weapon
  • $GetItemAttribute <string>
    • Sends item attribute value as the parameter.
    • parameter format: slot or item name|attribute|entity|input|default value
    • example to grab primary slot item's fire rate bonus value: 0|fire rate bonus|!activator|$DisplayTextChat|0
    • You can also type -1 for active weapon or the item name.
  • $PlaySoundToSelf <string>
    • Play sound to the player
  • $IgnitePlayerDuration <float>
    • Ignite the player for a specified duration in seconds
  • $WeaponSwitchSlot <int>
    • Forcibly switches to weapon in slot
  • $WeaponStripSlot <int>
    • Removes weapon from a slot (-1 = current slot)
  • $GiveItem <string>
    • Gives an item to the player
  • $AddCurrency <int>
    • Add currency to the player
  • $RemoveCurrency <int>
    • Remove currency from the player
  • $SetCurrency <int>
    • Set currency to specified value
  • $CurrencyOutputX <string>
    • Fires input if player currency is above specified value (the X in input name), the attribute should be passed in this way: target,input,parameter.
  • $CurrencyInvertOutputX<string>
    • Fires input if player currency is below specified value(the X in input name), the attribute should be passed in this way: target,input,parameter
  • $DropItem <int>
    • Drop item in slot (-1 = current slot)
  • $RemoveItem <string>
    • Remove item with a name
  • $Regenerate
    • Regenerate the player, as if touching resupply cabinet
  • $RefillAmmo
    • Restore player ammo
  • $PlaySequence <string>
    • Play animation sequence with specified name
  • $ResetInventory
    • Reset loadout items, as if touching the resupply cabinet
  • $BotCommand <string>
    • Forces the bot to perform an action. Examples:
      • interrupt_action -posent targetmove -lookposent targetlook -duration 10 -waituntildone -ondoneattributes AfterDone
        • Move to entity targetmove, while looking at entity targetlook. Wait 10 seconds after moving to the target entity, then ChangeAttributes to AfterDone
      • interrupt_action -posent targetkill -lookposent targetkill -killlook
        • Move to entity targetkill and try to destroy it
      • interrupt_action -pos 0 0 0 -lookpos 100 100 100
        • Move to position 0 0 0 while looking at position 100 100 100
      • despawn
        • Forces to bot to despawn
      • taunt
        • Forces the bot to taunt
      • cloak
        • Forces the spy bot to cloak
      • uncloak
        • Forces the spy bot to uncloak
      • disguise
        • Forces the spy bot to disguise as something
      • build sentry at nearest sentry hint

trigger_hurt

If entity owner is set with $SetOwner or $InheritOwner, the owner will become the damage inflictor

Filter entities

The server will no longer crash if the activator entity got removed the time TestActivator is called

Inputs

  • $TestEntity <entity>
    • Test any entity, rather than only the !activator

Trigger entities

The server will no longer crash if the caller entity got removed the time StartTouch or EndTouch is called

Inputs

  • $StartTouchEntity <entity>
    • StartTouch any entity, rather than only the !caller
  • $EndTouchEntity <entity>
    • EndTouch any entity, rather than only the !caller

game_ui

The server will no longer crash if the player using the entity disconnected from the server

All entities

Keyvalues

  • $modules <string>
    • Comma separated list of modules to attach to the entity

Inputs

  • $FireUserAsActivator1-4 <string>
    • Acts like FireUser1-4, but the entity becomes the !activator, and the parameter is passed in OnUser1-4 output
  • $FireUser5-8 <string>
    • Fires custom $onuser5-8 output
  • $TakeDamage <int>
    • Take specified amount of damage. Does not support negative values.
  • $TakeDamageFromActivator <int>
    • Take specified amount of damage, the !activator is the damage inflictor
  • $SetModel <string>
    • Set custom model
  • $SetModelOverride <string>
    • Set custom model for all vision modes at once. Doesn't change the original model.
  • $SetModelSpecial <string>
    • Set custom model, in a special way, it does less additional changes to the entity
  • $SetOwner <entity>
    • Set entity owner
  • $InheritOwner <entity>
    • Set entity owner to the passed entity owner
  • $InheritParent <entity>
    • Set entity parent to the passed entity parent
  • $GetKeyValue <string>
    • Fire OnUser1 output, with key value as a parameter
  • $MoveType <int>,<int>
    • Set move type
  • $PlaySound <string>
    • Play sound from this entity
  • $StopSound <string>
    • Stop playing sound from this entity
  • $SetLocalOrigin <vector>
    • Set origin relative to parent
  • $SetLocalAngles <vector>
    • Set angles relative to parent
  • $SetLocalVelocity <vector>
    • Set velocity relative to parent
  • $TeleportToEntity <entity>
    • Teleport to specified entity
  • $MoveRelative <vector>
    • Move relative to parent (world)
  • $RotateRelative <vector>
    • Rotate relative to parent (world)
  • $GetEntIndex <string>
    • parameter format: entity|input
    • example: !activator|$DisplayTextCenter
    • Triggers the input of an entity, with entity index as parameter
  • $RemoveOutput <string>
    • remove outputs with given name
  • $CancelPending
    • Remove all pending inputs this entity is going to fire
  • $SetForwardVelocity <float>
    • Set forward velocity of an entity, does not work on every entity
  • $FaceEntity <entity>
    • Rotate the entity so that it faces the target entity
  • $SetKey$(keyvalue name) <string>
    • Set keyvalue to specified value
  • $GetKey$(keyvalue name) <string>
    • parameter format: entity|input|default value
    • example: !activator|$DisplayTextCenter|def
    • Trigger the input of an entity, with keyvalue as a paramer (default value if not found)
  • $SetVar$(variable name) <string>
    • Set custom entity variable
  • $GetVar$(variable name) <string>
    • parameter format: entity|input|default value
    • example: !activator|$DisplayTextCenter|def
    • Trigger the input of an entity, with variable as a paramer (default value if not found)
  • $SetData$(datamap prop name) <string>
    • Set datamap property to specified value
  • $GetData$(datamap prop name) <string>
    • parameter format: entity|input|default value
    • example: !activator|$DisplayTextCenter|def
    • Trigger the input of an entity, with datamap prop as a paramer (default value if not found)
  • $SetProp$(send prop name)[$(array)] <string>
    • Set send property to specified value. Can also set arrays.
    • example without array: $SetProp$m_bInUpgradeZone
      • sets player state if player is visiting an upgrade station
    • example with array: $SetProp$m_iAmmo$3
      • sets player ammo type array to 3, which is metal carried
  • $GetProp$(send prop name)[$(array)] <string>
    • parameter format: entity|input|default value
    • example: !activator|$DisplayTextCenter|def
    • Trigger the input of an entity, with send prop as a paramer (default value if not found)
  • $SetClientProp$(send prop name)[$(array)] <string>
    • Set fake send prop value only seen by players. Can also set arrays. Useful for setting fake mission name or wave number, as $SetProp would trigger unwanted behavior
    • example without array: $SetClientProp$m_bInUpgradeZone
      • sets player state if player is visiting an upgrade station
    • example with array: $SetClientProp$m_iAmmo$3
      • sets player ammo type array to 3, which is metal carried
  • $ResetClientProp$(send prop name)[$(array)]
    • Reset fake prop value set by $SetClientProp
  • $AddModule <string>
  • $RemoveModule <string>
  • $SetCollisionFilter <entity>
    • Sets custom collision filter entity. If the filter passes, the entity collides as usual, otherwise the colliding entities pass through
  • $HideTo <player>
    • Hides this entity to specific player
  • $ShowTo <player>
    • Shows previously hidden entity to specific player
  • $HideToAll
    • Hides this entity to all players by default
  • $ShowToAll
    • Shows previously hidden entity to all players

Outputs

  • $OnUser5-8 <string>
    • Called when $FireUser5-8 input is used
  • $OnKilled
    • Fired when the entity is killed (removed from the world). The calling entity no longer exist and cannot be accessed unless input delay is set to -1
  • $OnDamageReceived <int>
    • Fired when the entity is damaged. Parameter is the damage received by the entity. !activator is the damage inflictor
  • $OnDamageBlocked <int>
    • Fired when damage was blocked by the entity. Parameter is the amount of damage blocked by the entity. !activator is the damage inflictor
  • $OnDeath <int>
    • Fired when the entity died. Parameter is the damage of the fatal blow. !activator is the damage inflictor