March 14, 2021

Все находки Citadel

Источники

https://github.com/SteamDatabase/GameTracking-Dota2/commit/b90bdaac95b25f818b07362e06588525002ca20b

https://github.com/SteamDatabase/GameTracking-Dota2/commit/a1b5ccaf2d39bb9c51f789833faa38db2d3eeab2

https://github.com/SteamDatabase/GameTracking-Artifact-Beta/commit/9644dc8892a8fe2ce6139d7bcd4c38a7d840bb2d


Игровой мир

Сменяемость времени суток

m_fTimeOfDay

Вода

Раньше её не было на Source 2, есть возможность менять направление течения, плотность, глубину, "выталкиваемость" объектов, размен всплесков и прочее

water
waterStart
waterDepth
flWaterDepth
D_CHEAP_WATER
D_WATER_FADE
D_WRITE_WATER_FOG_TO_DEST_ALPHA
m_flFluidDensity
Multiply water drag for buoyancy
phys_buoyancy_drag_multiplier
trigger_buoyancy
CTriggerBuoyancy
Water Splash Size
m_nSplashSize
NormalWaterLayer
WaterBlendLayer
renderWater
bRenderWaterReflections
previewWaterFlow
water_flow_map_texture

Кастомизируемый тип травы

GrassObject
WorldRenderer/GrassDilateColors
WorldRenderer/GrassNoHalfTexel
WorldRenderer/GrassQuadSize

Ветер

Можно менять силу, направление, виды и зависимость от времени суток

FeNodeWindBase_t
m_DynNodeWindBases
m_flWindDrag
WindDir
WindStrengthFreq
CEnvWindShared
C_EnvWindShared
C_EnvWindShared::WindAveEvent_t
C_EnvWindShared::WindVariationEvent_t
max_wind
min_wind
wind_amount_day
wind_amount_night
wind_angle

Осадки и видимо погода

PrecipitationType_t
CPrecipitationVData
scripts/precipitation.vdata
OPRECIPITATIONBLOCKER
Precipitation
m_szParticlePrecipitationEffect

Миникарта и отметки

EMiniMapMarkerType_t

Способности и предметы

Подробнее об этом будет ниже в разделе NPC

EAbilitySlots_t
CPlayerSlot
m_hAbility

Рейтрейсинг / RTX

-rtx (параметр запуска)
MainRtx
RTX
Raytracing Shader
shaders/vfx/vrad3_rtx.ini

Сражение

Виды урона

От пуль, взрывов, огня и прочего

DamageTypes_t
dmg.bullets
dmg.club
dmg.explosive
dmg.fire

Пробитие и критический урон

m_nPenetrate
m_nOutmaneuverCrit

Множитель урона в зависимости от места попадания: руки, грудь, голова, ноги, живот и прочее

DamageOptions
GetPrimaryStatDamageMultiplier
m_flArmDamageMultiplier
m_flChestDamageMultiplier
m_flHeadDamageMultiplier
m_flLegDamageMultiplier
m_flPhysicsForceDamage
m_flStomachDamageMultiplier

Урон, когда два NPC атакуют друг друга

Damage Dealt (in the case of NPC vs NPC damage, medium skill is used)

Вторичная атака (скорее всего игроком на правую кнопку мыши)

AE_WPN_SECONDARYATTACK

Доп. броня / урон

extra_armor
extra_damage

Физический урон (когда на кого-то упадёт ящик, к примеру)

Physics Force Damage
If specified, the damage used to compute physics forces. Otherwise normal damage is used.

Виды взрывов

Может меняться радиус, тип, урон, задержка и прочее

BaseExplosionTypes_t
explosion_behavior
explosion_buildup
explosion_delay
explosion_type
explosive_damage
explosive_radius
EXPLOSION_TYPE_COUNT
EXPLOSION_TYPE_CUSTOM
EXPLOSION_TYPE_NONE
EXPLOSION_TYPE_DEFAULT
EXPLOSION_TYPE_GRENADE
EXPLOSION_TYPE_SHRAPNEL
Electrical
EXPLOSION_TYPE_ELECTRICAL
EXPLOSION_TYPE_EMP
Explosive Barrel
EXPLOSION_TYPE_EXPLOSIVEBARREL
Fireworks
EXPLOSION_TYPE_FIREWORKS
Flashbang
EXPLOSION_TYPE_FLASHBANG
Gascan
EXPLOSION_TYPE_GASCAN
Gas Cylinder
EXPLOSION_TYPE_GASCYLINDER
Ice
EXPLOSION_TYPE_ICE
Molotov
EXPLOSION_TYPE_MOLOTOV
Smoke Grenade
EXPLOSION_TYPE_SMOKEGRENADE
Tripmine
EXPLOSION_TYPE_TRIPMINE

Амуниция

Типы амуниции

CAmmoDefTypedI
AmmoIndex_t
AmmoFlags_t
AmmoTypeInfo_t
Primary Ammo Type
m_nPrimaryAmmoType
Secondary Ammo Type
m_nSecondaryAmmoType
Script_GetAmmoType
Script_SetAmmoType

Размеры обойм

Clip Size
Primary Clip Size
Primary Initial Clip (-1 means use clip size)
Secondary Clip Size
Secondary Initial Clip (-1 means use clip size)

Параметры баллистики

Bullet Mass
Bullet Speed

Сколько можно выстрелить до перезарядки

How many bullets this gun can fire before it reloads (0 if no clip)
How many secondary bullets this gun can fire before it reloads (0 if no clip)

Название оружия, которое выдаётся конкретным NPC

Weapon Entity Name
The name of the weapon entity to spawn for this NPC weapon.

Эффекты от выстрелов

Muzzle Flash Particle
Effect to actually fire into the world from this weapon
Tracer Particle
Effect when firing this weapon

Вьюмодел оружия

CBaseViewModel
CBasePlayerWeaponVData

Автовыбор оружия

This value used to determine this weapon's importance in autoselection
Whether this weapon is safe to automatically switch to (should be false for eg. explosives that can the player may accidentally hurt themselves with)

Какие-то другие штуки

FIELD_AMMO_INDEX
AMMO_FLAG_MAX
AMMO_FORCE_DROP_IF_CARRIED

Звуки

Стрельба и пустая обойма

m_aShootSounds
m_bPlayedEmptyClipSound

Типы звуков

SOUND_BULLET_IMPACT
SOUND_COMBAT
SOUND_CONTEXT_ALLIES_ONLY
SOUND_CONTEXT_COMBINE_ONLY
SOUND_CONTEXT_DANGER_APPROACH
SOUND_CONTEXT_EXCLUDE_COMBINE
SOUND_CONTEXT_EXPLOSION
SOUND_CONTEXT_GUNFIRE
SOUND_CONTEXT_PANIC_NPCS
SOUND_CONTEXT_REACT_TO_SOURCE
SOUND_DANGER
SOUND_GLASS_BREAK
SOUND_MOVE_AWAY
SOUND_NONE
SOUND_PHYSICS_DANGER
SOUND_PHYSICS_OBJECT
SOUND_PLAYER
SOUND_PLAYER_VEHICLE
SOUND_THUMPER
SOUND_WORLD

Неигровые персонажи / NPC

У ботов / NPC в игре зачем-то предусмотрена система настроений

Type of mood
Layers for this mood
Mood Type
MoodAnimationLayer_t
MoodAnimation_t
MoodType_t
eMoodType_Body
eMoodType_Head
m_nMoodType
@PointClass base(ChoreoEvent) = mood : "Mood Event" 
MoodName( string ) : "Mood"
MoodParam( string ) : "Animgraph Parameter"
Mood event on actor w/ no AnimGraph..
CMoodVData
27CSchemaUtlVectorManipulatorI10CUtlVectorI15MoodAnimation_t10CUtlMemoryIS1_iEES1_E
27CSchemaUtlVectorManipulatorI10CUtlVectorI20MoodAnimationLayer_t10CUtlMemoryIS1_iEES1_E

Эта система настроений тесно связана с анимациями и поведением, боты могут вас слушать и что-то отвечать

Слушает

Active When Listening
m_bActiveListening
Sets the mood's animation buckets to be active when the character is listening

Говорит

Active When Talking
m_bActiveTalking
Sets the mood's animation buckets to be active when the character is talking
Time from the end of the mood when an animation cannot play
Time from the start of the mood before an animation can start
Time before the next animation can start
List of animations to choose from
Multiplier of the animation duration
Name of the animation
Name of the layer
Weight of the animation, higher numbers get picked more
Model to get the animation list from
m_sModelName
Intensity of the animation
m_flIntensity
Next Animation Start
m_flNextStart
m_layerAnimations
m_animationLayers
Fade In Time
m_flFadeIn
Fade in time of the animation
Fade Out Time
m_flFadeOut
Fade out time of the animation
Duration Scale
m_flDurationScale
Duration scale as ints
m_bScaleWithInts
When scaling an animation, grab the scale value as in int. Used for gestures/postures to control number of looping sections


У ботов, которых вы можете брать под контроль есть слоты для способностей и предметов, которые вы можете включать / выключать или полностью убирать

subclass_name( vdata_choice:scripts/npc_units.vdata ) : "Unit Name" : "" : "Name of the NPC Unit."
input GiveAbility(string) : "Gives the NPC an ability of the specified name (see npc_abilities.vdata)."
input EnableAbility( string ) : "Enables an ability on the NPC"
input DisableAbility( string ) : "Disables an ability on the NPC"
input RemoveAbility( string ) : "Removes an ability to the NPC"
item_1( vdata_choice:scripts/misc.vdata&scripts/npc_abilities.vdata ) : "Item Or Ability Subclass 1" : "" : "Subclass of item or ability to attach in slot 1."
item_2( vdata_choice:scripts/misc.vdata&scripts/npc_abilities.vdata ) : "Item Or Ability Subclass 2" : "" : "Subclass of item or ability to attach in slot 2."
item_3( vdata_choice:scripts/misc.vdata&scripts/npc_abilities.vdata ) : "Item Or Ability Subclass 3" : "" : "Subclass of item or ability to attach in slot 3."
item_4( vdata_choice:scripts/misc.vdata&scripts/npc_abilities.vdata ) : "Item Or Ability Subclass 4" : "" : "Subclass of item or ability to attach in slot 4."
primary_linked_ability_1( vdata_choice:scripts/npc_abilities.vdata ) : "Primary Linked Ability 1" : "" : "(Optional) Subclass of primary ability to link to 1st ability to add."
primary_linked_ability_2( vdata_choice:scripts/npc_abilities.vdata ) : "Primary Linked Ability 2" : "" : "(Optional) Subclass of primary ability to link to 2nd ability to add."
primary_linked_ability_3( vdata_choice:scripts/npc_abilities.vdata ) : "Primary Linked Ability 3" : "" : "(Optional) Subclass of primary ability to link to 3rd ability to add."
primary_linked_ability_4( vdata_choice:scripts/npc_abilities.vdata ) : "Primary Linked Ability 4" : "" : "(Optional) Subclass of primary ability to link to 4th ability to add."
ability_remove_1( vdata_choice:scripts/npc_abilities.vdata ) : "Ability Subclass To Remove 1" : "" : "Subclass of 1st ability to remove."
ability_remove_2( vdata_choice:scripts/npc_abilities.vdata ) : "Ability Subclass To Remove 2" : "" : "Subclass of 2nd ability to remove."
ability_remove_3( vdata_choice:scripts/npc_abilities.vdata ) : "Ability Subclass To Remove 3" : "" : "Subclass of 3rd ability to remove."
ability_remove_4( vdata_choice:scripts/npc_abilities.vdata ) : "Ability Subclass To Remove 4" : "" : "Subclass of 4th ability to remove."
m_iszEntity( vdata_choice:scripts/npc_units.vdata ) : "Target NPC"
m_iszAbilityName( vdata_choice:scripts/misc.vdata&scripts/npc_abilities.vdata ) : "Ability Subclass to Perform" : "" : "Subclass of the ability that target NPC(s) should perform against the Ability Target."


Штуки связанные с передвижением / преодолением препятствий

EMantlePhase
EMantleType
ELeapState_t
ELeapPhase
EHurdleType

Огромный скрипт, отвечающий за то, как неигровые персонажи могут вести себя в различных ситуациях. Кого они могут атаковать, какие способности использовать, как передвигаться во время боя и многое другое

//-------------------------------------------------------------------------
//
// NPC Scripting Entities
//
//-------------------------------------------------------------------------
@BaseClass base(Targetname, Parentname) color(255 0 255) sphere(m_flRadius) = BaseScripted
[
	m_iszEntity(target_destination) : "Target NPC" : : "The name or class name (such as 'npc_zombie') of an NPC to use for this script."
	m_iszIdle(sequence) : "Pre Action Idle Animation" : "" : "The name of the sequence (such as 'idle01') or activity (such as 'ACT_IDLE') to play before the action animation if the NPC must wait for the script to be triggered. Use 'Start on Spawn' flag or MoveToPosition input to play this idle animation."
	m_iszEntry(sequence) : "Entry Animation" : "" : "The name of the sequence (such as 'reload02') or activity (such as 'ACT_RELOAD') to play when the sequence starts, before transitioning to play the main action sequence."
	m_iszPlay(sequence) : "Action Animation" : "" : "The name of the main sequence (such as 'reload02') or activity (such as 'ACT_RELOAD') to play."
	m_iszPostIdle(sequence) : "Post Action Idle Animation" : "" : "The name of the sequence (such as 'idle01') or activity (such as 'ACT_IDLE') to play after the action animation."
	m_iszCustomMove(sequence) : "Custom Move Animation" : "" : "Used in conjunction with the 'Custom movement' setting for the 'Move to Position' property, specifies the sequence (such as 'crouch_run01') or activity (such as 'ACT_RUN') to use while moving to the scripted position."
	sync_group(string) : "Synchronization Group" : : "If set, identifier used to match other scripted sequences to synchronze with (alternative to name-based sync)"
	m_bLoopActionSequence(boolean) : "Loop Action Animation?" : 0
	m_bSynchPostIdles(boolean) : "Synch Post Idles?" : 0
	m_bAllowCustomInterruptConditions(boolean) : "Allow custom interrupt conditions to be set." : 0
	conflict_response(choices) : "Script Conflict Response" : 0 : "What to do if this scripted sequence begins and the actor is already executing a scripted sequence." = 
	[
		0 : "Enqueue"
		1 : "Interrupt"
	] 
	m_nGroundIKPreference(choices) : "Ground IK Preference" : 0 : "If this NPC has ground IK; whether we disable it for the playthrough of the sequence or not." = 
	[
		0 : "No change"
		1 : "Disable for this sequence"
	] 

	m_flRadius(integer) : "Search Radius (0=everywhere)" : 0 : "Radius to search within for an NPC to use. 0 searches everywhere."
	m_flRepeat(integer) : "Repeat Rate ms" : 0
	m_fMoveTo(Choices) : "Move to Position" : 1 =
	[
		0 : "No"
		1 : "Walk"
		2 : "Run"
		3 : "Custom movement"
		4 : "Instantaneous"
		5 : "No - Turn to Face"
	]
	m_iszNextScript(target_destination) : "Next Script" : : "The name of the script to run immediately after this script completes. The NPC will not return to AI between the two scripts."
	m_bIgnoreGravity(boolean) : "Ignore Gravity on NPC during script" : 0 : "If this is set to 'Yes', the NPC will not be subject to gravity while playing this script."

	m_bDisableNPCCollisions(boolean) : "Disable NPC collisions during script" : 0 : "Useful for when NPCs playing scripts must interpenetrate while riding on trains, elevators, etc. This only disables collisions between the NPCs in the script and must be enabled on BOTH scripted_sequences."
	m_bKeepAnimgraphLockedPost(boolean) : "Keep Animgraph Locked after script" : 0 : "If set, the animgraph will remain locked in the Direct Playback node after this sequence finishes. This is only useful if you have a 'Next Script' set, and you don't want the animgraph to return to Idle during the transition. Note that the 'Next Script' cannot require the NPC to animate/move to it, because the NPC will be unable to move while in the Direct Playback node. In that case, or if you have no 'Next Script' set, selecting this will simply cause the NPC to freeze after it finishes the sequence."

	// Inputs
	input BeginSequence(void) : "Summons an NPC to act out the scripted sequence."
	input MoveToPosition(void) : "Summons an NPC to the script location. They will play their scripted idle (or ACT_IDLE if none is specified) until BeginSequence is triggered."
	input CancelSequence(void) : "Stops the scripted sequence. If fired after a sequence starts, this input will not take effect until the NPC finishes playing the scripted action animation."
	input SetActionSequence(string) : "Sets the name of the action sequence that will play when the action sequence plays. Can be used for branching sequences."

	// Outputs
	output OnBeginSequence(void) : "Fires when the scripted sequence begins playing."
	output OnActionStartOrLoop(void) : "Fires when the action animation begins playing and each time it loops."
	output OnEndSequence(void) : "Fires when the action animation completes."
	output OnCancelSequence(void) : "Fires when the sequence is cancelled."
	output OnCancelFailedSequence(void) : "Fires when the sequence is cancelled without ever playing (OnCancelSequence will also fire)."
	output OnScriptEvent01(void) : "Fires when an AE_SCRIPT_EVENT_FIREEVENT anim event occurs while playing the script."
	output OnScriptEvent02(void) : "Fires when an AE_SCRIPT_EVENT_FIREEVENT anim event occurs while playing the script."
	output OnScriptEvent03(void) : "Fires when an AE_SCRIPT_EVENT_FIREEVENT anim event occurs while playing the script."
	output OnScriptEvent04(void) : "Fires when an AE_SCRIPT_EVENT_FIREEVENT anim event occurs while playing the script."
	output OnScriptEvent05(void) : "Fires when an AE_SCRIPT_EVENT_FIREEVENT anim event occurs while playing the script."
	output OnScriptEvent06(void) : "Fires when an AE_SCRIPT_EVENT_FIREEVENT anim event occurs while playing the script."
	output OnScriptEvent07(void) : "Fires when an AE_SCRIPT_EVENT_FIREEVENT anim event occurs while playing the script."
	output OnScriptEvent08(void) : "Fires when an AE_SCRIPT_EVENT_FIREEVENT anim event occurs while playing the script."
]

@PointClass base(Targetname, Parentname) tags( AI ) iconsprite("editor/info_target.vmat") tags( Choreo ) = scripted_target : "Scripted Target"
[
	StartDisabled(boolean) : "Start Disabled" : 1

	m_iszEntity(npcclass) : "Target NPC"
	m_flRadius(integer) : "Search Radius (0=everywhere)" : 0 : "Radius to search within for an NPC to use. 0 searches everywhere."

	MoveSpeed(integer) : "Move Speed" : 5			// How quickly should target move between scripted targets
	PauseDuration(integer) : "Pause Duration" : 0		// How long should target pause at scripted target
	EffectDuration(integer) : "Effect Duration" : 2		// How long should any associated effect last

	target(target_destination) : "Next Target"		// Next scripted target

	// Inputs
	input Enable(void) : "Enable this entity"
	input Disable(void) : "Disable this entity"

	// Outputs
	output AtTarget(void) : "Fires when NPC reaches this target"
	output LeaveTarget(void) : "Fires when NPC leaves this target"
]

@PointClass base(BaseScripted, DXLevelChoice) editormodel("models/editor/scripted_sequence.vmdl") tags( Choreo ) sphere(m_flRadius) sequenceList( entity, "m_iszEntity" ) = scripted_sequence :
	"Grabs an NPC and makes them play a specified set of animations. The NPC can be told to move to the scripted sequence position or can "+
	"be told to play the script wherever they currently are. "+
	"Multiple scripted sequences of the same name (or sync group, if specified) will frame-synchronize in the action animation once all the actors have moved to position. "+
	"This allows tight interaction between actors (one actor grabbing another, hitting them, etc.) The flow is as follows:<br><br>"+
	"1) Move to position using the specified movement animation. If 'Move to Position' is set to NONE, skip to step 2.<br>"+
	"2) If forced to wait for another actor to move to position, play the pre-action idle animation, otherwise skip to step 3. If there is no pre-action idle specified, ACT_IDLE is used.<br>"+
	"3) Fire the OnBeginSequence output.<br>"+
	"4) Play the action animation. If no action animation is specified, skip to step 5.<br>"+
	"5) Play the post-action idle animation. If none is specified, skip to step 6. If the 'Loop in Post Idle' spawnflag is set, keep playing the post-action idle until the script is cancelled. If no post-action idle animation is specified, ACT_IDLE is used.<br>"+
	"6) Fire the OnEndSequence output.<br>"+
	"7) If a next script to play is specified, hand the NPC to the next script and repeat this process for that script.<br><br>"+
	"The MoveToPosition input runs steps 1 and 2, then waits while playing the pre-action idle animation until the BeginSequence input is received.<br><br>"+
	"If the sequence has motion extraction in it, set the 'Don't Teleport NPC On End' spawnflag."
[
	spawnflags(Flags) = 
	[
		4 : "Repeatable" : 0
		8 : "Leave Corpse (if not, fade)" : 0
		16 : "Start on Spawn" : 0
		32: "No Interruptions" : 0
		64: "Override AI" : 0
		128: "Don't Teleport NPC On End" : 0
		256: "Loop in Post Idle" : 0
		512: "Priority Script" : 0
		2048: "Hide Debug Complaints" : 0
		4096: "Allow other NPC actors to continue after this NPC actor's death" : 0
	]

	onplayerdeath(choices) : "On player death" : 0 : "What this entity should do if the player dies." =
	[
		0 : "Do Nothing"
		1 : "Cancel Script and return to AI"
	]

	onnpcdeath(choices) : "On NPC actor death" : 0 : "What the NPC performing this script should do if it dies." =
	[
		0 : "LEGACY - Use old settings"
		1 : "Ragdoll immediately"
		2 : "Perform a death animation"
	]

	prevent_update_yaw_on_finish(choices) : "Prevent Yaw Update on Finish" : 0 : "By default, when finishing the sequence, the NPC has its ideal yaw updated to maintain the current forward facing. This allows you to prevent that if you want to return to the facing prior to starting the sequence." =
	[
		0 : "No"
		1 : "Yes"
	]

	ensure_on_navmesh_on_finish(choices) : "Ensure on Nav Mesh on Finish" : 1 : "When finishing the sequence, if the NPC uses the navmesh, ensure the NPC is on a valid location on the navmesh." =
	[
		0 : "No"
		1 : "Yes"
	]
]


@PointClass base(Targetname) tags( Choreo ) color(255 0 255) iconsprite("editor/ai_scripted_moveto") = ai_scripted_moveto :
	"Forces an NPC to move to a specified destination entity."
[
	m_iszNPC(target_destination) : "Target NPC(s)" : : "The name or classname of an NPC to use. If multiple NPCs are found, all of them will be told to move to the Target Destination."
	m_iszTarget(target_destination) : "Target Destination" : "" : "The entity that marks the destination of this move-to."

	resilient(choices) : "Reacquire after break" : 1 : "If set , once the NPC returns to idling, it'll resume the move-to until reaching the destination, even if it previously broke out of the schedule due to the Interruptability choices." =
	[
		0 : "No"
		1 : "Yes"
	]

	shouldsetenemy(choices) : "Set Enemy To Target" : 0 : "If the target destination is an NPC or player, setting this to 'Yes' will also give commanded NPCs memory of the target, and cause them to set their enemy to it. Note that if there's another NPC that's a better enemy, commanded NPCs will flip to the better enemy on their next think." =
	[
		0 : "No"
		1 : "Yes"
	]

	switchidletoalert(choices) : "Switch To Alert State if Idle" : 0 : "If the commanded NPC(s) is in Idle state, switch them to Alert state." =
	[
		0 : "No"
		1 : "Yes"
	]

	interruptability(choices) : "Interruptability" : 0 : "Sets what kind of events can interrupt an NPC that's performing this move to. Note that when set to 'Everything', NPCs can be easily interrupted by small things like physics impact sounds, or distant combat sounds." =
	[
		0 : "Everything that usually interrupts AI"
		3 : "Direct Combat (Seeing enemies, taking damage, etc)"
		1 : "Only Taking Damage"
		2 : "Nothing"
	]
	
	// Inputs
	input StartMoveTo(void) : "Starts all target NPC(s) moving to the target destination."
	input StopMoveTo(void) : "Stops all target NPCs that are performing this move to."

	// Outputs
	output OnFailedToPerform(string) : "Fired when we fail to command any target NPC(s) to move to the destination. This occurs if no target NPCs could be found, or if they were found but were in a state that couldn't be broken out of to perform the movement."
]


@PointClass base(Targetname) tags( Choreo ) color(255 0 255) iconsprite("editor/aiscripted_schedule") = ai_scripted_abilityusage :
	"Forces an NPC to perform an ability at a specified target."
[
	m_iszNPC(target_destination) : "Target NPC(s)" : "" : "The name or classname of an NPC to use. If multiple NPCs are found, all of them will be told to perform the ability at the Ability Target."
	m_iszAbilityName( vdata_choice:scripts/misc.vdata&scripts/npc_abilities.vdata ) : "Ability to Perform" : "" : "Name of the ability that target NPC(s) should perform against the Ability Target."
	m_iszTarget(target_destination) : "Ability Target" : "" : "The entity that marks the target of the ability."
	m_nAbilityTargetBodyLoc(choices) : "Target Body Location" : 3 : "The body location on the Ability Target entity that the ability should target." =
	[
		0 : "Eyes"
		1 : "Muzzle"
		2 : "Abs Origin"
		3 : "Randomized around Body Center"
		4 : "Head"
	]
	m_nAbilityTargetOrigin(choices) : "Target Origin" : 0 : "The method by which we determine the origin of the entity that the Ability will target. The Target Body Location is then used as a local offset on top of this origin. Predicated Abs Origin uses the current velocity of the target to anticipate where they'll be 0.5s in the future. Last Known/Seen position only really applies to enemies that the performing NPC has lost sight of." =
	[
		0 : "Current Abs Origin"
		1 : "Predicted Abs Origin"
		2 : "Last Known Position"
		3 : "Last Seen Position"
	]

	resilient(choices) : "Force Completion" : 1 : "If set, if the NPC was unable to perform the ability when first asked, it'll attempt to run a schedule to resolve whatever issue prevented it. Once that's completed, it'll try again to perform the ability." =
	[
		0 : "No"
		1 : "Yes"
	]

	shouldsetenemy(choices) : "Set Enemy To Target" : 0 : "If the target destination is an NPC or player, setting this to 'Yes' will also give commanded NPCs memory of the target, and cause them to set their enemy to it. Note that if there's another NPC that's a better enemy, commanded NPCs will flip to the better enemy on their next think." =
	[
		0 : "No"
		1 : "Yes"
	]

	switchidletoalert(choices) : "Switch To Alert State if Idle" : 0 : "If the Target NPC(s) is in Idle state, switch them to Alert state." =
	[
		0 : "No"
		1 : "Yes"
	]

	// Inputs
	input PerformAbility(void) : "Tells all target NPC(s) to perform the ability."
	input AbortAbilityPerformance(void) : "Tells all target NPC(s) to abort performing the ability, if they're in the process of doing it."

	// Outputs
	output OnFailedToPerform(string) : "Fired when we fail to command any target NPC(s) to perform the ability. This occurs if no target NPCs could be found, or if they were found but were in a state that couldn't be broken out of to perform the ability."
]

Система демок

// citadel
DemoSimpleEncoders_t { m_Name = "EAbilitySlots_t"},
DemoSimpleEncoders_t { m_Name = "ECoatingType_t"},
DemoSimpleEncoders_t { m_Name = "ELeapState_t"},
DemoSimpleEncoders_t { m_Name = "EHurdleType"},
DemoSimpleEncoders_t { m_Name = "ELeapPhase"},
DemoSimpleEncoders_t { m_Name = "EMantlePhase"},
DemoSimpleEncoders_t { m_Name = "EMantleType"},
DemoSimpleEncoders_t { m_Name = "EGameState"},
DemoSimpleEncoders_t { m_Name = "ENextAttackDelayReason_t"},
DemoSimpleEncoders_t { m_Name = "ECameraFollowMode_t"},
DemoSimpleEncoders_t { m_Name = "EPlayerPlayState"},
DemoSimpleEncoders_t { m_Name = "ELookupType"},
DemoSimpleEncoders_t { m_Name = "Class_T"},
DemoSimpleEncoders_t { m_Name = "EMiniMapMarkerType_t"},

Прочие штуки

Add node is missing a child.  Will use t-pose by default
Anim Clip Item
Clip Data
Clip Data Manager
CStepsRemainingMetricEvaluator
Attempt to detect when the foot is on a stair and will stop it from tilting to reach the next step
Attempt to detect when the foot is partially hanging off a ledge and stop it tilting to reach the bottom
CForceFacingCondition
CForceFacingConditionUpdater
Force Facing Condition
Is Force Facing Enabled
Is Force Facing Enabled %s %s
Move:m_bForceFacing
N10Reflection6Detail11CClassInfoTI21CForceFacingConditionEE
CCitadelModifierHandleTyped<
CRangeFloat
CResourceNameTyped
I cannot be refracted through refracting objects like water
CEmbeddedSubclass
CFootstepTableHandle
FindFirstAreaInDirection (for ladders) does not yet support nav hulls.  Can be added when needed.