Skip to content

Event handler reference ​

Every event handler the game ships, the methods you override to write your own, and the conditions, value providers and filters that plug into them. Generated from the game assembly, so it tracks the current build. See Write a custom template type for the C# path and Patch and clone templates for wiring handlers from KDL.

An event handler is the unit of skill, perk, and status behaviour. Each entry in a SkillTemplate or PerkTemplate's EventHandlers list is one handler the game ticks through its lifecycle. There are two ways to author one:

  • From data (KDL). Add, edit, or remove any built-in handler on a skill or perk and set its fields, naming the subtype with type="<Name>". A handler's condition, value provider or filter is set the same way. No C# needed.
  • From code (C#). Subclass SkillEventHandlerTemplate and SkillEventHandler and override the lifecycle methods when no built-in does what you want.

Lifecycle methods ​

When you write a handler in C#, these are the methods you override. The template is the factory the data holds, and its Create() returns the handler the game ticks. Override only the ones you need. The rest keep the base's empty default. None of these carry doc comments in the game assembly, so this lists the signature you implement against.

SkillEventHandler ​

The runtime behaviour. The game ticks this through a mission. Override the events you care about.

Events

Method
void OnAdded()
void OnAfterBeingAttacked(Entity attacker, Skill skill)
void OnAfterUse()
void OnAnimationEvent(Element element, AnimationEvent event)
void OnAnySkillAdded(Skill skill)
void OnAnySkillAppliedByElement(Skill skill, Element element, SkillApplyEvent event)
void OnAnySkillUsed(Skill skill)
void OnApply(Actor user, Tile userTile, Tile targetTile, Tile centerTargetTile, Element element, bool isHit)
void OnBeforeAnySkillUsed(Skill skill, Tile fromTile, Tile targetTile, EntityProperties properties, Entity overrideTargetEntity)
void OnBeforeApply(Actor user, Tile userTile, Tile targetTile, Element element, ref float additionalDelayBeforeAnimationTrigger)
void OnBeforeDamageReceived(Skill skill, Entity attacker, DamageInfo damageInfo, EntityProperties properties)
void OnBeforeMissionStarted()
void OnBeforeTargetHit(Skill skill, Entity targetEntity, DamageInfo damageInfo)
bool OnBeforeUse(Actor user, Tile targetTile)
void OnBeingAttacked(Skill skill, Actor attacker, Tile from, Tile at, EntityProperties properties)
void OnBeingTargetedByAttack(Entity attacker, Skill skill)
void OnCancel()
void OnDamageReceived(Entity attacker, Skill skill, DamageInfo damageInfo)
void OnDeath()
void OnDefectCaused(Actor target, DefectTemplate defect, Skill skill)
void OnDetermineActualTargetTile(ref Tile target)
void OnDetermineFinalUserTile(Tile originTile, Tile targetTile, ref Tile finalTile)
void OnEffectApplied()
void OnElementDeath(Element element)
void OnEnabledChanged(bool enabled)
void OnMissed(Skill skill, Entity attacker)
void OnMissionFinished()
void OnMissionStarted()
void OnModifyTargetProperties(EntityProperties targetProperties, Skill skill)
void OnMoraleEvent(MoraleEvent event, float change)
void OnMovement()
void OnMovementFinished(Tile tile)
void OnOperationFinished()
void OnRefresh()
void OnRemoved()
void OnRoundEnd()
void OnRoundStart()
bool OnShouldCancelImpact(Actor attacker, Skill skill)
void OnTargetHit(Skill skill, Entity targetEntity, DamageInfo damageInfo)
void OnTargetKilled(Skill skill, Entity targetEntity)
void OnTargetMissed(Skill skill, Entity targetEntity)
void OnTileChanged(Tile tile)
void OnTileHit(Skill skill, Tile tile, Tile aoeCenterTile, Vector3 impactPoint)
void OnTurnEnd()
void OnTurnStart()
void OnUpdate(EntityProperties properties)
void OnUse(Actor user, Tile targetTile, UsageParameter usageParams, ref bool applyToTile)
bool OnVerifyTarget(Tile originTile, Tile targetTile)
bool OnWouldDie(Entity attacker, Skill skill, DamageInfo damageInfo)

Predicates

Method
bool CanHitEntityMoreThanOnce()
bool HasStackCountDisplayed()
bool IsApplicableTo(Tile targetTile, Entity overrideTargetEntity)
bool IsCustomBusy()
bool IsEnabled()
bool IsHidden()
bool IsPreventingActorUpdate()
bool IsUsable()

Other

Method
void AppendTooltipData(TooltipData tooltip)
void GetAoETiles(Tile origin, Tile target, List<Tile> tiles)

SkillEventHandlerTemplate ​

The factory the template data holds. Create() returns a fresh handler with the authored fields copied in.

Predicates

Method
bool IsUsable()

Other

Method
void AppendTooltipData(TooltipData tooltip, SkillTemplate parentSkillTemplate, EntityProperties entityProperties, int elementCount)
void ApplyToEntityProperties(EntityProperties properties)
SkillEventHandler Create()

Built-in handlers ​

The 169 handlers the game ships. Name one in type="<Name>" to add it, and set the fields listed. Every field you do not set takes its type default. Enum fields list their allowed values. A field typed with an interface (ITacticalCondition, IValueProvider, …) is a polymorphic slot: fill it with set "<Field>" type="<Subtype>" { ... }, or append for an array of them, picking the subtype from the family section the row links to.

kdl
append "EventHandlers" type="AddSkill" {
    set "Event" enum="AddEvent" "OnAttack"
    set "SkillToAdd" ref="SkillTemplate" "effect.bleeding"
}

AddItemSlot ​

FieldTypeValues / notes
Amountint
SlotTypeItemSlotAll, COUNT, InfantryAccessory, InfantryArmor, InfantrySpecial, InfantryWeapon, ModularVehicleHeavy, ModularVehicleLight, ModularVehicleMedium, None, Vehicle, VehicleAccessory, VehicleHeavyTurret, VehicleLightTurret

AddSkill ​

FieldTypeValues / notes
ConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "Condition" type="<Subtype>" { ... }.
EventAddEventOnAdded, OnAttack, OnElementDeath, OnMissionStart, OnRemoved, OnRoundStart, OnTargetElementDestroyed, OnUse
OnlyApplyOnHitbool
OnlyApplyOnHitpointDamagebool
OnlyApplyWhenNoElementWasDestroyedbool
OnlyUsableOnTargetsWithoutSkillbool
OnlyWhenSkillNotPresentbool
ShowHUDTextbool
SkillToAddSkillTemplate
TagsCanPreventSkillUsebool
TargetCannotHaveOneOfTheseTagsList<TagTemplate>
TargetRequiresOneOfTheseTagsList<TagTemplate>

AddSkillAfterMovement ​

FieldTypeValues / notes
EffectSkillTemplate

AddSkillRescuedUnit ​

FieldTypeValues / notes
EffectSkillTemplate

AmmoPouch ​

FieldTypeValues / notes
ApplyToTypeItemTypeAccessory, Armor, None, Weapon
BonusPercentagefloat
MinimumBonusint
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

ApplyAuthorityDisciplineMod ​

FieldTypeValues / notes
DisciplineModMultfloat

ApplyEmotionalState ​

FieldTypeValues / notes
EmotionalStateEmotionalStateTypeAnimosityTowards, Bruised, Determined, Disheartened, Eager, Euphoric, Exhausted, Frustrated, GoodwillTowards, Hesitant, Injured, KubraHangover, Miserable, None, Overconfident, Weary
EmotionalTriggerEmotionalTriggerCheat, DeployedInTheXMissionsBeforeCurrent, DeployedXTimesWithOther, Event, FailedOnFavPlanet, Fled, GameEffect, KilledXCivElements, KilledXEnemyEntities, KilledXEnemyMiniBosses, Last, LostAllSquaddies, LostOverXPercentHitpoints, NearDeathExperience, NotDeployedInTheXMissionsBeforeCurrent, OtherLeaderKilledCivElementOnFavPlanet, ReceivedFriendlyFireFrom, SkillUse, StabilizedBy, StabilizedOthers, SuccessOnFavPlanet, Unused2, Unused3, Unused4

ApplySkillByGaze ​

FieldTypeValues / notes
ConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "Condition" type="<Subtype>" { ... }.
SkillToApplySkillTemplate

ApplySkillToSelf ​

FieldTypeValues / notes
ChanceToApplyint
EventApplyOnEventOnAdded, OnRoundEnd, OnRoundStart, OnSkillWithTagsUsed, OnTurnEnd, OnTurnStart
RequiredLogicLogicTypeAnd, Or
RequiredTagsList<TagTemplate>
SkillToApplySkillTemplate

Arcing ​

FieldTypeValues / notes
ArcingSkillSkillTemplate
MaxBouncesint
Radiusint

AttachObject ​

FieldTypeValues / notes
AttachAtAttachmentPointCenter, Damage, Damage2, Spine
AttachAtInfantryAttachmentPointCenter, Damage, Damage2, Spine
ObjectToAttachGameObject

AttachObjectWhileActive ​

FieldTypeValues / notes
OnlyForElement0bool
PrefabGameObject

AttachTemporaryPrefab ​

FieldTypeValues / notes
AttachmentSlotVisualAlterationSlotAnimation, Back, Back_Special, EntireModel, Hand_L, Hand_L_Special, Hand_R, Hand_R_Special, Last, Mount01, Mount02, Mount03, None, Pistol_Holster, Torso, Turret
CancelDelayfloat
LocalOffsetVector3
LocalRotationVector3
LocalScaleVector3
PrefabGameObject

Attack ​

FieldTypeValues / notes
AccuracyBonusfloat
AccuracyDropofffloat
AccuracyDropoffMultfloat
AccuracyMultfloat
ApplyModeApplicationModeAutomatic, Manual
ArmorPenetrationfloat
ArmorPenetrationDropofffloat
ArmorPenetrationDropoffAOEfloat
ArmorPenetrationDropoffMultfloat
ArmorPenetrationMultfloat
Damagefloat
DamageDropofffloat
DamageDropoffAOEfloat
DamageDropoffMultfloat
DamageMultfloat
DamagePctCurrentHitpointsfloat
DamagePctCurrentHitpointsMinfloat
DamagePctMaxHitpointsfloat
DamagePctMaxHitpointsMinfloat
DamageToArmorDurabilityfloat
DamageToArmorDurabilityDropofffloat
DamageToArmorDurabilityDropoffAOEfloat
DamageToArmorDurabilityDropoffMultfloat
DamageToArmorDurabilityMultfloat
DamageVisualizationTypeDamageVisualizationTypeBullet, Burn, COUNT
DestroyHalfCoverHalfCoverClassHeavy, Light, Medium, None
DismemberAreaRagdollHitAreaAntennas, Any, Arms, Heads, Legs, Tails, Torso
DismemberChanceint
ElementsHitint
ElementsHitPercentagefloat
EntityFlagsRequiredEntityFlagsCantEnterContainers, Confused, DesignatedTarget, HeavyWeaponsAllowed, IgnoreDeploymentRequirements, IgnoreSuppressedAPLoss, ImmuneDesignatedTarget, ImmuneToDamage, ImmuneToEncumbrance, ImmuneToIndirectSuppression, ImmuneToLightEffect, ImmuneToMorale, ImmuneToSuppression, ImmuneToSuppressionFromElementLost, IrrelevantToMorale, None, Rooted, RootedByStance, Stunned
FatalityTypeFatalityTypeBurning, Default, Explosion, Laser, Plasma
IsHalfCoverDestroyedOnAOECenterTileOnlybool
Suppressionfloat
SuppressionDealtMultfloat
SuppressionDropoffAOEfloat
TargetCannotHaveOneOfTheseTagsList<TagTemplate>
TargetRequiresOneOfTheseTagsList<TagTemplate>

AttackMorale ​

FieldTypeValues / notes
MoraleDamageint
MoraleStateReductionint

AttackOrder ​

FieldTypeValues / notes
ActionPointsint
EffectSkillTemplate

AttackProc ​

FieldTypeValues / notes
CanBeTriggeredByAnySkillbool
Chanceint
ConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "Condition" type="<Subtype>" { ... }.
OnlyApplyOnHitpointDamagebool
OnlyApplyWhenNoElementWasDestroyedbool
ShowHUDTextbool
SkillToAddSkillTemplate

AutoAttackOnFleeing ​

FieldTypeValues / notes
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

Berserk ​

FieldTypeValues / notes
ActionPointsint
ConsumedOnTriggerbool

Buyout ​

FieldTypeValues / notes
EntityToSpawnEntityTemplate
FactionFactionTypeAlliedLocalForces, Civilian, Constructs, EnemyLocalForces, Neutral, Pirates, Player, PlayerAI, RogueArmy, Wildlife
OverlayIconSprite
WhitelistEntityTemplate[]

CameraShake ​

FieldTypeValues / notes
CameraEffectCameraEffectTypeHeavyQuake, LightQuake, MoveXZ, MoveY, None
Durationfloat
Intensityfloat
RecoverTimefloat

CauseDefect ​

FieldTypeValues / notes
SeverityDefectSeverityHeavy, Light, Medium

ChangeAPBasedOnHP ​

FieldTypeValues / notes
ThresholdsHpThreshold[]

ChangeActionPointCost ​

FieldTypeValues / notes
CostDeltaint
CostMinint
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

ChangeActionPoints ​

FieldTypeValues / notes
ActionPointsint
ForceTurnToEndbool

ChangeAttackCost ​

FieldTypeValues / notes
CostPerAttackint
CostPerAttackMultfloat

ChangeDropChance ​

FieldTypeValues / notes
AdditionalDropChanceint

ChangeFaction ​

FieldTypeValues / notes
FactionFactionTypeAlliedLocalForces, Civilian, Constructs, EnemyLocalForces, Neutral, Pirates, Player, PlayerAI, RogueArmy, Wildlife

ChangeGrowthPotential ​

FieldTypeValues / notes
Deltaint

ChangeHeatCapacity ​

FieldTypeValues / notes
HeatDissipationPerTurnint
MaxHeatMultiplierfloat

ChangeMalfunctionChance ​

FieldTypeValues / notes
ApplyOnlyToSkillSkillTemplate
ApplyToApplyTypeAllAttacks, AllSkills, SpecificSkill, ThisSkill
BaseMalfunctionChanceint
MalfunctionChancePerUseint
ResetMalfunctionChancebool

ChangeMorale ​

FieldTypeValues / notes
ChangeIfChangeConditionAlways, CurrentMoraleIsHigher, CurrentMoraleIsLower
ChangeMoraleToMoraleStateFleeing, Neutral, Wavering
EventEventTypeOnAdded, OnApply

ChangeMovementCost ​

FieldTypeValues / notes
CostForTurningint
CostPerSurfaceInt32[]
CostPerTileint
IsRootedbool

ChangeProperty ​

FieldTypeValues / notes
Amountint
AmountMultfloat
IncludePlusSignbool
PropertyTypeEntityPropertyTypeAIPriorityMult, APEnterCost, APLeaveCost, Accuracy, AccuracyDropoff, AccuracyDropoffMult, AccuracyMult, ActionPoints, ActionPointsMult, AdditionalMovementCost, AdditionalTurningCost, Armor, ArmorDamageSustainedMult, ArmorDurabilityPerElement, ArmorMult, ArmorPenetration, ArmorPenetrationDropoff, ArmorPenetrationDropoffMult, ArmorPenetrationMult, BackwardsMovementMult, Concealment, ConcealmentMult, CoverEffectivenessMult, CoverGainedByVehicleOffset, CoverTypeOffset, CriticalChance, CriticalDamageMult, Damage, DamageDropoff, DamageDropoffMult, DamageMult, DamageSustainedMult, DamageSustainedSquadLeaderMult, DamageToArmorDurability, DamageToArmorDurabilityDropoff, DamageToArmorDurabilityDropoffMult, DamageToArmorDurabilityMult, DamageToMoraleMult, DefectThresholdOffset, DefenseMult, DeployCostMult, DeploymentZoneMinExtend, DeploymentZoneMult, Detection, DetectionMult, Discipline, DisciplineMult, DismemberChance, ElementsHit, ElementsHitPct, GetDismemberedChanceBonus, GetDismemberedChanceMult, GetDismemberedMaxParts, GetDismemberedMinParts, HitchanceMin, HitpointsPerElement, HitpointsPerElementMult, IgnoreCoverMult, MaxElements, MoraleBonus, MoraleImpactMult, MoraleMult, MoraleRecoveryMult, MoraleStateOffset, PromotionCostMult, ProvidedCoverBonus, ReduceElementsHit, SuppressionDealt, SuppressionDealtMult, SuppressionImpactMult, TotalDamageMult, Vision, VisionMult
TooltipPlaceholderIndexint
TriggerUpdateEventOnBeforeAnySkillUsed, OnBeingAttacked, OnUpdate
ValueProviderIValueProviderPolymorphic: pick a subtype from Value providers with set "ValueProvider" type="<Subtype>" { ... }.

ChangePropertyAura ​

FieldTypeValues / notes
PropertiesPropertyChange[]
Radiusint
ReducesWithDistancebool

ChangePropertyConditional ​

FieldTypeValues / notes
ConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "Condition" type="<Subtype>" { ... }.
DefaultTextstring
EventEventTypeOnBeforeAnySkillUsed, OnBeingAttacked, OnThisSkillUsed, OnUpdate
HideIfNotActivebool
PropertiesPropertyChange[]
ShowInTooltipWhenActivebool
ValueProviderIValueProviderPolymorphic: pick a subtype from Value providers with set "ValueProvider" type="<Subtype>" { ... }.

ChangePropertyConsecutive ​

FieldTypeValues / notes
Amountint
AmountMultfloat
MaxStacksint
PropertyTypeEntityPropertyTypeAIPriorityMult, APEnterCost, APLeaveCost, Accuracy, AccuracyDropoff, AccuracyDropoffMult, AccuracyMult, ActionPoints, ActionPointsMult, AdditionalMovementCost, AdditionalTurningCost, Armor, ArmorDamageSustainedMult, ArmorDurabilityPerElement, ArmorMult, ArmorPenetration, ArmorPenetrationDropoff, ArmorPenetrationDropoffMult, ArmorPenetrationMult, BackwardsMovementMult, Concealment, ConcealmentMult, CoverEffectivenessMult, CoverGainedByVehicleOffset, CoverTypeOffset, CriticalChance, CriticalDamageMult, Damage, DamageDropoff, DamageDropoffMult, DamageMult, DamageSustainedMult, DamageSustainedSquadLeaderMult, DamageToArmorDurability, DamageToArmorDurabilityDropoff, DamageToArmorDurabilityDropoffMult, DamageToArmorDurabilityMult, DamageToMoraleMult, DefectThresholdOffset, DefenseMult, DeployCostMult, DeploymentZoneMinExtend, DeploymentZoneMult, Detection, DetectionMult, Discipline, DisciplineMult, DismemberChance, ElementsHit, ElementsHitPct, GetDismemberedChanceBonus, GetDismemberedChanceMult, GetDismemberedMaxParts, GetDismemberedMinParts, HitchanceMin, HitpointsPerElement, HitpointsPerElementMult, IgnoreCoverMult, MaxElements, MoraleBonus, MoraleImpactMult, MoraleMult, MoraleRecoveryMult, MoraleStateOffset, PromotionCostMult, ProvidedCoverBonus, ReduceElementsHit, SuppressionDealt, SuppressionDealtMult, SuppressionImpactMult, TotalDamageMult, Vision, VisionMult

ChangePropertyTarget ​

FieldTypeValues / notes
OnlyForThisSkillbool
PropertiesPropertyChange[]

ChangeRangesOfSkillsWithTags ​

FieldTypeValues / notes
IdealRangeChangeint
IdealRangeMultfloat
MaxRangeChangeint
MaxRangeMultfloat
MaxRangeProviderIValueProviderPolymorphic: pick a subtype from Value providers with set "MaxRangeProvider" type="<Subtype>" { ... }.
MinRangeChangeint
MinRangeMultfloat
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

ChangeSkillUseAmount ​

FieldTypeValues / notes
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.
UsesAmountint

ChangeSkillsWithTags ​

FieldTypeValues / notes
Amountint
AmountMultfloat
PropertyTypeEntityPropertyTypeAIPriorityMult, APEnterCost, APLeaveCost, Accuracy, AccuracyDropoff, AccuracyDropoffMult, AccuracyMult, ActionPoints, ActionPointsMult, AdditionalMovementCost, AdditionalTurningCost, Armor, ArmorDamageSustainedMult, ArmorDurabilityPerElement, ArmorMult, ArmorPenetration, ArmorPenetrationDropoff, ArmorPenetrationDropoffMult, ArmorPenetrationMult, BackwardsMovementMult, Concealment, ConcealmentMult, CoverEffectivenessMult, CoverGainedByVehicleOffset, CoverTypeOffset, CriticalChance, CriticalDamageMult, Damage, DamageDropoff, DamageDropoffMult, DamageMult, DamageSustainedMult, DamageSustainedSquadLeaderMult, DamageToArmorDurability, DamageToArmorDurabilityDropoff, DamageToArmorDurabilityDropoffMult, DamageToArmorDurabilityMult, DamageToMoraleMult, DefectThresholdOffset, DefenseMult, DeployCostMult, DeploymentZoneMinExtend, DeploymentZoneMult, Detection, DetectionMult, Discipline, DisciplineMult, DismemberChance, ElementsHit, ElementsHitPct, GetDismemberedChanceBonus, GetDismemberedChanceMult, GetDismemberedMaxParts, GetDismemberedMinParts, HitchanceMin, HitpointsPerElement, HitpointsPerElementMult, IgnoreCoverMult, MaxElements, MoraleBonus, MoraleImpactMult, MoraleMult, MoraleRecoveryMult, MoraleStateOffset, PromotionCostMult, ProvidedCoverBonus, ReduceElementsHit, SuppressionDealt, SuppressionDealtMult, SuppressionImpactMult, TotalDamageMult, Vision, VisionMult
RequiredTagsTagType[]ACCESSORY, ACCURATE, AIRPOWER, ANTI_INFANTRY, ANTI_STRUCTURE, ANTI_VEHICLE, AREA_OF_EFFECT, ARMOR_DAMAGING, ARMOR_PIERCING, ASSAULT_RIFLE, BATTLE_RIFLE, CAMOUFLAGE, COMMODITY, CRAFTING_MATERIAL, DEMORALIZING, DEPLOY, DEPLOYABLE, DESTRUCTIBLE, DISABLING, DRONE, DRUG, EMP, ENERGY, FLEXIBLE, GRENADE, HAZARDOUS, HEAVY_ARMOR, HIGH_RATE_OF_FIRE, HORDE, HOVERING, IGNORES_COVER, INACCURATE, INCENDIARY, INDIRECT_FIRE, INFANTRY, JAM, JETPACK, LARGE, LIGHT_ARMOR, LIMITED_AMMO, LONG_RANGE, LOW_PENETRATION, LOW_QUALITY, Last, MACHINE, MANY_ACCESSORIES, MASSIVE_EXPLOSION, MEDIUM_ARMOR, MINE, MINIMUM_RANGE, MINI_BOSS, MOBILE, MOTORIZED_INFANTRY, ORBITAL, PROJECTILE, ROCKET, SCANNER, SCATTER, SHORT_RANGE, SHOTGUN, SMG, SMOKE, SNIPER, SPECIAL_WEAPON, SQUAD_WEAPON, STANCE, STEALTH, STRUCTURE, SUPPRESSIVE, TANK, UNIQUE, UNUSED_MUST_DEPLOY, UTILITY, VEHICLE, VEHICLE_WEAPON, VIP, WALKER, WEAPON, WEAPONS_TEAM, XENO

ChangeStance ​

FieldTypeValues / notes
ChangeStanceToActorStanceDefault, Deployed, PinnedDown
IsStanceRequiredToUsebool
RequiredStanceActorStanceDefault, Deployed, PinnedDown

ChangeSupplyCosts ​

FieldTypeValues / notes
CostMultfloat
FilterIItemFilterPolymorphic: pick a subtype from Item filters with set "Filter" type="<Subtype>" { ... }.

ChangeSuppression ​

FieldTypeValues / notes
EventEventTypeOnAdded, OnUse
SuppressionChangefloat

ChangeUsesPerSquaddie ​

FieldTypeValues / notes
AmountPerElementint
MaxIncreasePctint
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

Charge ​

FieldTypeValues / notes
HideIfNotUsablebool

ChargeInfantry ​

FieldTypeValues / notes
EffectToApplySkillTemplate
HideIfNotUsablebool
TriggerAttackbool

ClearTileEffect ​

FieldTypeValues / notes
ChanceAtCenterint
ChanceDropoffWithDistanceint
EffectToClearTileEffectTemplate

ClearTileEffectGroup ​

FieldTypeValues / notes
EffectsToClearTileEffectGroup
TriggerEffectbool

CommandMove ​

FieldTypeValues / notes
MinionMinionTypeAttackDrone, None, ReconDrone, SuicideDrone

CommandUseSkill ​

FieldTypeValues / notes
MinionMinionTypeAttackDrone, None, ReconDrone, SuicideDrone
SkillToUseSkillTemplate

CompleteSecondaries ​

FieldTypeValues / notes
Amountint

ConsumeOnSkillUse ​

FieldTypeValues / notes
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

Cooldown ​

FieldTypeValues / notes
AIOnlybool
RoundsToCoolDownint

CounterAttack ​

FieldTypeValues / notes
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

Crawl ​

No settable fields. It carries behaviour only.

CutFence ​

FieldTypeValues / notes
AffectedHalfCoversHalfCoverTemplate[]

Damage ​

FieldTypeValues / notes
ArmorPenetrationfloat
DamageFlatAmountfloat
DamagePctCurrentHitpointsfloat
DamagePctCurrentHitpointsMinfloat
DamagePctMaxHitpointsfloat
DamagePctMaxHitpointsMinfloat
DamageToArmorDurabilityfloat
DamageVisualizationTypeDamageVisualizationTypeBullet, Burn, COUNT
DismemberAreaRagdollHitAreaAntennas, Any, Arms, Heads, Legs, Tails, Torso
DismemberChanceint
ElementsHitint
ElementsHitPercentagefloat
FatalityTypeFatalityTypeBurning, Default, Explosion, Laser, Plasma
InflictDefectsbool
IsAppliedOnlyToPassengersbool

DamageArmorDurability ​

FieldTypeValues / notes
DamageFlatAmountfloat
DamagePercentageOfCurrentDurabilityfloat
DamagePercentageOfMaxDurabilityfloat

DamageConditional ​

FieldTypeValues / notes
DamageFilterConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "DamageFilterCondition" type="<Subtype>" { ... }.

DamageOverTime ​

FieldTypeValues / notes
ArmorPenetrationfloat
DamageArmorFlatAmountfloat
DamageArmorPctOfCurrentfloat
DamageArmorPctOfMaxfloat
DamagePctCurrentHitpointsfloat
DamagePctCurrentHitpointsMinfloat
DamagePctMaxHitpointsfloat
DamagePctMaxHitpointsMinfloat
DamagePerTurnfloat
DamageToArmorDurabilityfloat
DamageVisualizationTypeDamageVisualizationTypeBullet, Burn, COUNT
DamagesArmorFirstbool
ElementsHitint
ElementsHitPercentagefloat
FatalityTypeFatalityTypeBurning, Default, Explosion, Laser, Plasma
InflictDefectsbool

DaughtersFury ​

FieldTypeValues / notes
EffectSkillTemplate

Deathrattle ​

FieldTypeValues / notes
Chanceint
SkillSkillTemplate
TriggerForEachElementbool

DelayTurn ​

No settable fields. It carries behaviour only.

DeployHeavyWeapon ​

No settable fields. It carries behaviour only.

DestroyEnvironmentFeatures ​

No settable fields. It carries behaviour only.

DestroyProps ​

FieldTypeValues / notes
ModeTileModeAllTiles, CenterTileOnly
Radiusfloat

DestroyWreckage ​

FieldTypeValues / notes
SpawnDecoPrefabGameObject

DirectHpChange ​

FieldTypeValues / notes
HpPercentagefloat

DisableByFlag ​

FieldTypeValues / notes
FlagEntityFlagsCantEnterContainers, Confused, DesignatedTarget, HeavyWeaponsAllowed, IgnoreDeploymentRequirements, IgnoreSuppressedAPLoss, ImmuneDesignatedTarget, ImmuneToDamage, ImmuneToEncumbrance, ImmuneToIndirectSuppression, ImmuneToLightEffect, ImmuneToMorale, ImmuneToSuppression, ImmuneToSuppressionFromElementLost, IrrelevantToMorale, None, Rooted, RootedByStance, Stunned

DisableItem ​

FieldTypeValues / notes
ForbiddenLogicLogicTypeAnd, Or
ForbiddenTagsList<TagTemplate>
RequiredLogicLogicTypeAnd, Or
RequiredTagsList<TagTemplate>

DisableSkills ​

FieldTypeValues / notes
HideDisabledSkillsbool
MarkAsDestroyedbool
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

DisallowInvisible ​

No settable fields. It carries behaviour only.

DisplayText ​

FieldTypeValues / notes
DefaultTextstring
EventDisplayEventOnAdded, OnApply, OnUse, Triggered
IconSprite
LocaKeystring

DivineIntervention ​

No settable fields. It carries behaviour only.

DropRecoverableObject ​

FieldTypeValues / notes
ObjectTileEffectRecoverableObjectTileEffect
ObjectUnitHUDIconSprite

EjectEntity ​

FieldTypeValues / notes
ConferSkillToEjectedEntitySkillTemplate
IsSpecialAIVersionbool

EmitAura ​

FieldTypeValues / notes
ExcludeSelfbool
SkillToAddSkillTemplate

EnemiesDropPickupOnDeath ​

FieldTypeValues / notes
PickupTileEffectTemplate
SpawnDelayfloat

EvacuateLeader ​

No settable fields. It carries behaviour only.

ExtraTickets ​

FieldTypeValues / notes
ExtraTicketAmountint

FilterByCondition ​

FieldTypeValues / notes
ConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "Condition" type="<Subtype>" { ... }.

FilterByMorale ​

FieldTypeValues / notes
AppliesOnlyToStateMoraleStateFleeing, Neutral, Wavering

FilterByStance ​

FieldTypeValues / notes
AppliesOnlyToStanceActorStanceDefault, Deployed, PinnedDown

GainAPBasedOnEnemies ​

FieldTypeValues / notes
APPerEnemyint
Radiusint

GainActionPoints ​

FieldTypeValues / notes
ActionPointsint
AlwaysIncreaseMaxActionPointsbool
TooltipPlaceholderIndexint
ValueProviderIValueProviderPolymorphic: pick a subtype from Value providers with set "ValueProvider" type="<Subtype>" { ... }.

GainEffectOnSkillUse ​

FieldTypeValues / notes
EffectSkillTemplate
RemoveOnUsebool
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

GrantBonusTurn ​

FieldTypeValues / notes
ActionPointsAvailablefloat

HandleLeaderAttributes ​

No settable fields. It carries behaviour only.

HeatCapacity ​

FieldTypeValues / notes
HeatDissipationPerTurnint
HeatPerUseint
IsSynchronizedWithOtherSkillsOfTheSameItembool
MaxHeatint
OverheatingSoundID

HideByCondition ​

FieldTypeValues / notes
ConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "Condition" type="<Subtype>" { ... }.

Hitchance ​

FieldTypeValues / notes
AccuracyBonusfloat
AccuracyDropofffloat
AccuracyDropoffMultfloat
AccuracyMultfloat

IgnoreDamage ​

FieldTypeValues / notes
AbsorbDamagePctint
ChanceToApplyint
RequiredTagsTagType[]ACCESSORY, ACCURATE, AIRPOWER, ANTI_INFANTRY, ANTI_STRUCTURE, ANTI_VEHICLE, AREA_OF_EFFECT, ARMOR_DAMAGING, ARMOR_PIERCING, ASSAULT_RIFLE, BATTLE_RIFLE, CAMOUFLAGE, COMMODITY, CRAFTING_MATERIAL, DEMORALIZING, DEPLOY, DEPLOYABLE, DESTRUCTIBLE, DISABLING, DRONE, DRUG, EMP, ENERGY, FLEXIBLE, GRENADE, HAZARDOUS, HEAVY_ARMOR, HIGH_RATE_OF_FIRE, HORDE, HOVERING, IGNORES_COVER, INACCURATE, INCENDIARY, INDIRECT_FIRE, INFANTRY, JAM, JETPACK, LARGE, LIGHT_ARMOR, LIMITED_AMMO, LONG_RANGE, LOW_PENETRATION, LOW_QUALITY, Last, MACHINE, MANY_ACCESSORIES, MASSIVE_EXPLOSION, MEDIUM_ARMOR, MINE, MINIMUM_RANGE, MINI_BOSS, MOBILE, MOTORIZED_INFANTRY, ORBITAL, PROJECTILE, ROCKET, SCANNER, SCATTER, SHORT_RANGE, SHOTGUN, SMG, SMOKE, SNIPER, SPECIAL_WEAPON, SQUAD_WEAPON, STANCE, STEALTH, STRUCTURE, SUPPRESSIVE, TANK, UNIQUE, UNUSED_MUST_DEPLOY, UTILITY, VEHICLE, VEHICLE_WEAPON, VIP, WALKER, WEAPON, WEAPONS_TEAM, XENO

InterceptAPChange ​

FieldTypeValues / notes
ActionPointPercentageint
AppliesToSkillTemplate
TriggerOnlyOncePerRoundbool

InterceptDeath ​

FieldTypeValues / notes
EffectSkillTemplate

Jamming ​

FieldTypeValues / notes
BaseChanceint
ChancePerUseint
JammingSoundID

JetPack ​

FieldTypeValues / notes
DelayBeforeJumpfloat
Durationfloat
ForwardCurveAnimationCurve
HeightCurveAnimationCurve
HeightPerUnitOfDistancefloat
MaxHeightfloat
StartTriggerAnimatorParameterNameTemplate

JumpIntoMelee ​

FieldTypeValues / notes
AnimationAnimationTypeAttack, Jump, None, ShootBurst, ShootSingle, SpecialAttack1, SpecialAttack2, SpecialAttack3, SpecialAttack4, ThrowGrenade, UNUSED_ThrowClose
CameraEffectOnTakeoffCameraEffectTypeHeavyQuake, LightQuake, MoveXZ, MoveY, None
DelayBeforeJumpfloat
DistanceFromTargetfloat
DurationPerUnitOfDistancefloat
ForwardCurveAnimationCurve
HeightCurveAnimationCurve
HeightPerUnitOfDistancefloat
MaxDurationfloat
MaxHeightfloat

LifetimeLimit ​

FieldTypeValues / notes
EventLifetimeTypeOnAdded, OnAfterUse, OnEffectApplied, OnRoundStart, OnTurnEnd, OnTurnStart
Lifetimeint
ResetLifetimeOnRefreshbool

LimitMaxHpLoss ​

FieldTypeValues / notes
MaxHpPctfloat

LimitUsability ​

FieldTypeValues / notes
HiddenIfActorHasSkillList<SkillTemplate>
NotHiddenIfActorHasSkillList<SkillTemplate>
NotUsableIfActorHasSkillList<SkillTemplate>
OnlyUsableIfActorHasSkillList<SkillTemplate>

LimitedPassiveUses ​

FieldTypeValues / notes
MaxUsesint

ModifyNamedValue ​

FieldTypeValues / notes
Deltaint
TriggerEventTriggerOnAdded, OnRemoved, OnTurnEnd, OnTurnStart
ValueNamestring

ModularVehicleSkill ​

FieldTypeValues / notes
RequiredWeaponCountWeaponCountSingle, Twinfire

MoraleOverMaxEffect ​

FieldTypeValues / notes
EffectSkillTemplate

MoveAndSelfDestroy ​

FieldTypeValues / notes
AdditionalDelayfloat
AfterMoveTriggerAnimatorParameterNameTemplate
StartMoveTriggerAnimatorParameterNameTemplate

MovedNextToEnemy ​

FieldTypeValues / notes
EffectSkillTemplate

NamedValue ​

FieldTypeValues / notes
Namestring

NothingPersonal ​

FieldTypeValues / notes
EffectSkillTemplate
Rangeint

OnElementKilled ​

FieldTypeValues / notes
Amountint
ApplyEffectEffectReduceSuppression
DisplayTextbool

OverrideVolumeProfile ​

FieldTypeValues / notes
DesertProfileVolumeProfile
FallbackProfileVolumeProfile
SnowProfileVolumeProfile
TemperateProfileVolumeProfile

Overtime ​

FieldTypeValues / notes
HpThresholdfloat

Overwatch ​

FieldTypeValues / notes
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

PlayAnimationSequence ​

FieldTypeValues / notes
AnimationAnimationSequenceTemplate

PlaySound ​

FieldTypeValues / notes
EventPlaySoundEventTypeOnAdded, OnEffectApplied, OnRoundStart, OnTurnEnd, OnTurnStart
SoundToPlayID
Volumefloat

PlaySoundOnEnabled ​

FieldTypeValues / notes
SoundToPlayID
Volumefloat

ProvideSkill ​

FieldTypeValues / notes
ConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "Condition" type="<Subtype>" { ... }.
SkillToAddSkillTemplate

PurgeSkill ​

FieldTypeValues / notes
SkillSkillTemplate

QuickFlick ​

FieldTypeValues / notes
RequiredSkillSkillTemplate
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

Rally ​

No settable fields. It carries behaviour only.

RecallTarget ​

FieldTypeValues / notes
UseLastTargetOfSkillSkillTemplate

ReduceArmor ​

FieldTypeValues / notes
MaxReductionfloat
ReductionPerStackfloat

ReduceMoraleOnAttacked ​

No settable fields. It carries behaviour only.

RefillActionPoints ​

No settable fields. It carries behaviour only.

RefillAmmo ​

FieldTypeValues / notes
RestoreMinimumint
RestorePctfloat
SkillFilterISkillFilterPolymorphic: pick a subtype from Skill filters with set "SkillFilter" type="<Subtype>" { ... }.

RefillSquaddies ​

FieldTypeValues / notes
AnimationAnimationSequenceTemplate

Regeneration ​

FieldTypeValues / notes
EffectGameObject
EventApplyOnEventOnApply, OnTurnEnd, OnTurnStart
HitpointsHealedPctMaxfloat
SoundID

RemoveDefect ​

FieldTypeValues / notes
RequiredTypeSkillTypeActive, Alert, Background, DamageEffect, Item, LightConditionEffect, MoraleEffect, None, Oci, Offmap, OperationEffect, Perk, PlanetaryEffect, Racial, Special, StatusEffect, Terrain, Trait, WeatherEffect, WorldEvent

RemoveSkill ​

FieldTypeValues / notes
EventRemoveTriggerOnAdded, OnApply, OnRemoved, OnUse
SkillsToRemoveSkillTemplate[]

RepeatInAoE ​

FieldTypeValues / notes
MaxTargetsint
TargetConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "TargetCondition" type="<Subtype>" { ... }.

ReportAmmoToAnimator ​

FieldTypeValues / notes
ParameterAnimatorParameterNameTemplate

RequireKillPerTurn ​

No settable fields. It carries behaviour only.

Rescue ​

No settable fields. It carries behaviour only.

RestoreArmorDurability ​

FieldTypeValues / notes
RestorePercentint

RetaliateWithSkill ​

FieldTypeValues / notes
ConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "Condition" type="<Subtype>" { ... }.
SkillSkillTemplate

ReturnOfServe ​

FieldTypeValues / notes
ConsumedOnTriggerbool

Scanner ​

FieldTypeValues / notes
AIEffectToEnemiesSkillTemplate
BlipGameObject
DetectsInfantrybool
DetectsVehiclesbool
Rangeint
ScanSpeedfloat
ScanlineGameObject

SetAnimatorBool ​

FieldTypeValues / notes
ParameterAnimatorParameterNameTemplate

SetAnimatorTrigger ​

FieldTypeValues / notes
Delayfloat
ParameterAnimatorParameterNameTemplate

SetEntityFlag ​

FieldTypeValues / notes
FlagEntityFlagsCantEnterContainers, Confused, DesignatedTarget, HeavyWeaponsAllowed, IgnoreDeploymentRequirements, IgnoreSuppressedAPLoss, ImmuneDesignatedTarget, ImmuneToDamage, ImmuneToEncumbrance, ImmuneToIndirectSuppression, ImmuneToLightEffect, ImmuneToMorale, ImmuneToSuppression, ImmuneToSuppressionFromElementLost, IrrelevantToMorale, None, Rooted, RootedByStance, Stunned

SetNamedValue ​

FieldTypeValues / notes
TriggerEventTriggerOnAdded, OnRemoved
Valueint
ValueNamestring

SetUsesPerElement ​

FieldTypeValues / notes
UsesPerElementint

ShowHUDIcon ​

FieldTypeValues / notes
IconToShowIconNone, TargetDesignated

ShowIsolatedIcon ​

FieldTypeValues / notes
Radiusint

ShowUnitHUDIcon ​

FieldTypeValues / notes
ConditionsITacticalCondition[]Polymorphic list: add subtypes from Conditions with append "Conditions" type="<Subtype>" { ... }.
IconSprite
TargetTargetUnitAllEnemies, Self

SpawnEntity ​

FieldTypeValues / notes
AlignSpawnDirectionbool
EntityToSpawnEntityTemplate
FactionTypeFactionTypeAlliedLocalForces, Civilian, Constructs, EnemyLocalForces, Neutral, Pirates, Player, PlayerAI, RogueArmy, Wildlife
HideIfSpawnLimitReachedbool
OverrideFactionbool
SetParameterOnSpawnAnimatorParameterNameTemplate
SkipFirstTurnForSpawnedEntitybool
SpawnAsMinionMinionTypeAttackDrone, None, ReconDrone, SuicideDrone
SpawnLimitint
TriggerSpawnTriggerOnTileHit, OnUse

SpawnGore ​

FieldTypeValues / notes
Amountint
Distancefloat
MinMaxScaleVector2
PrefabsPrefabListTemplate

SpawnHalfCover ​

FieldTypeValues / notes
CoverConfigCoverConfig

SpawnPrefab ​

FieldTypeValues / notes
PrefabGameObject

SpawnTileEffect ​

FieldTypeValues / notes
CanHitStructuresbool
ChanceAtCenterint
ChancePerTileFromCenterint
DelayWithDistancefloat
EffectToSpawnTileEffectTemplate
EventApplyOnEventOnDeath, OnTileChanged, OnUse

StanceDeployed ​

FieldTypeValues / notes
PropertiesPropertyChange[]

StopBleedout ​

No settable fields. It carries behaviour only.

SuicideDrone ​

No settable fields. It carries behaviour only.

Suppression ​

FieldTypeValues / notes
PinnedDownEffectSkillTemplate
SoundWhenPinnedDownID
SoundWhenSuppressedID

SuppressionConstruct ​

FieldTypeValues / notes
PinnedDownEffectSkillTemplate
PinnedDownTextstring
SoundWhenPinnedDownID

SwitchBetweenSkills ​

FieldTypeValues / notes
DisplayAOEAreaOfAlternateSkillbool
IsVisibleAtStartbool
ModeDeactivateModeDisable, Hide
SwitchToAlternativeItemIconbool
SwitchWithSkillSkillTemplate

SynchronizeItemUses ​

No settable fields. It carries behaviour only.

TerrorOfTahishek ​

FieldTypeValues / notes
APLossint
EffectSkillTemplate
Radiusint

ThrivingUnderPressure ​

FieldTypeValues / notes
RequiredStacksForUseint

ToggleSkills ​

FieldTypeValues / notes
ActiveSkillsSkillTemplate[]

TrackAdjacentKills ​

No settable fields. It carries behaviour only.

TriggerSkillOnHpLost ​

FieldTypeValues / notes
CanOnlyTriggerOncePerRoundbool
HpThresholdint
SkillToTriggerSkillTemplate

UseSkill ​

FieldTypeValues / notes
EventApplyOnEventOnAdded
SkillToUseSkillTemplate

VaultModeOverride ​

FieldTypeValues / notes
VaultModeVaultModeDestroy, None, OnlyTrigger, RootMotion

VehicleMovement ​

FieldTypeValues / notes
Concealmentint

VehicleRotation ​

No settable fields. It carries behaviour only.

VentHeat ​

FieldTypeValues / notes
VentForSkillSkillTemplate

VerifyByCondition ​

FieldTypeValues / notes
ConditionITacticalConditionPolymorphic: pick a subtype from Conditions with set "Condition" type="<Subtype>" { ... }.

VisualForceField ​

FieldTypeValues / notes
PrefabGameObject

Conditions ​

A condition gates a handler: the handler only acts when the condition holds. A handler field typed ITacticalCondition takes one of these subtypes, and a field typed ITacticalCondition[] takes a list of them. Name the subtype with type="<Name>" and set its fields, the same way as a handler:

kdl
set "EventHandlers" index=0 {
    set "Condition" type="EntityWithTagsCondition" {
        set "CheckEntity" "Target"
        append "RequiredTags" "LARGE"
    }
}

Every subtype below except AndCondition, CoverInAttackDirCondition, IsAlliedCondition, LastAttackedByCondition, OrCondition and PincerCondition also takes these fields:

FieldTypeValues / notes
CheckEntityCheckTargetTarget, User
Negatedbool

ActorTypeCondition ​

FieldTypeValues / notes
RequiredTypeActorTypeInfantry, Turret, Vehicle

AndCondition ​

FieldTypeValues / notes
ConditionsITacticalCondition[]Polymorphic list: add subtypes from Conditions with append "Conditions" type="<Subtype>" { ... }.

CoverCondition ​

FieldTypeValues / notes
MinCoverCoverTypeHeavy, Light, Medium, None

CoverInAttackDirCondition ​

FieldTypeValues / notes
Negatedbool

DisabledOrStunnedCondition ​

No fields of its own. It takes only the shared fields above.

DistanceCondition ​

FieldTypeValues / notes
MaxDistanceint

ElementCountCondition ​

FieldTypeValues / notes
TargetCountint

ElementsHitCondition ​

FieldTypeValues / notes
MinElementsHitint

EntityTypeCondition ​

FieldTypeValues / notes
RequiredTypeEntityTypeActor, None, Structure

EntityWithOneOfTheTagsCondition ​

FieldTypeValues / notes
RequiredTagsTagType[]ACCESSORY, ACCURATE, AIRPOWER, ANTI_INFANTRY, ANTI_STRUCTURE, ANTI_VEHICLE, AREA_OF_EFFECT, ARMOR_DAMAGING, ARMOR_PIERCING, ASSAULT_RIFLE, BATTLE_RIFLE, CAMOUFLAGE, COMMODITY, CRAFTING_MATERIAL, DEMORALIZING, DEPLOY, DEPLOYABLE, DESTRUCTIBLE, DISABLING, DRONE, DRUG, EMP, ENERGY, FLEXIBLE, GRENADE, HAZARDOUS, HEAVY_ARMOR, HIGH_RATE_OF_FIRE, HORDE, HOVERING, IGNORES_COVER, INACCURATE, INCENDIARY, INDIRECT_FIRE, INFANTRY, JAM, JETPACK, LARGE, LIGHT_ARMOR, LIMITED_AMMO, LONG_RANGE, LOW_PENETRATION, LOW_QUALITY, Last, MACHINE, MANY_ACCESSORIES, MASSIVE_EXPLOSION, MEDIUM_ARMOR, MINE, MINIMUM_RANGE, MINI_BOSS, MOBILE, MOTORIZED_INFANTRY, ORBITAL, PROJECTILE, ROCKET, SCANNER, SCATTER, SHORT_RANGE, SHOTGUN, SMG, SMOKE, SNIPER, SPECIAL_WEAPON, SQUAD_WEAPON, STANCE, STEALTH, STRUCTURE, SUPPRESSIVE, TANK, UNIQUE, UNUSED_MUST_DEPLOY, UTILITY, VEHICLE, VEHICLE_WEAPON, VIP, WALKER, WEAPON, WEAPONS_TEAM, XENO

EntityWithTagsCondition ​

FieldTypeValues / notes
RequiredTagsTagType[]ACCESSORY, ACCURATE, AIRPOWER, ANTI_INFANTRY, ANTI_STRUCTURE, ANTI_VEHICLE, AREA_OF_EFFECT, ARMOR_DAMAGING, ARMOR_PIERCING, ASSAULT_RIFLE, BATTLE_RIFLE, CAMOUFLAGE, COMMODITY, CRAFTING_MATERIAL, DEMORALIZING, DEPLOY, DEPLOYABLE, DESTRUCTIBLE, DISABLING, DRONE, DRUG, EMP, ENERGY, FLEXIBLE, GRENADE, HAZARDOUS, HEAVY_ARMOR, HIGH_RATE_OF_FIRE, HORDE, HOVERING, IGNORES_COVER, INACCURATE, INCENDIARY, INDIRECT_FIRE, INFANTRY, JAM, JETPACK, LARGE, LIGHT_ARMOR, LIMITED_AMMO, LONG_RANGE, LOW_PENETRATION, LOW_QUALITY, Last, MACHINE, MANY_ACCESSORIES, MASSIVE_EXPLOSION, MEDIUM_ARMOR, MINE, MINIMUM_RANGE, MINI_BOSS, MOBILE, MOTORIZED_INFANTRY, ORBITAL, PROJECTILE, ROCKET, SCANNER, SCATTER, SHORT_RANGE, SHOTGUN, SMG, SMOKE, SNIPER, SPECIAL_WEAPON, SQUAD_WEAPON, STANCE, STEALTH, STRUCTURE, SUPPRESSIVE, TANK, UNIQUE, UNUSED_MUST_DEPLOY, UTILITY, VEHICLE, VEHICLE_WEAPON, VIP, WALKER, WEAPON, WEAPONS_TEAM, XENO

FactionCondition ​

FieldTypeValues / notes
RequiredFactionFactionTypeAlliedLocalForces, Civilian, Constructs, EnemyLocalForces, Neutral, Pirates, Player, PlayerAI, RogueArmy, Wildlife

HasAnySkillCondition ​

FieldTypeValues / notes
SkillsToCheckSkillTemplate[]

HasBeenAttackedThisRoundCondition ​

No fields of its own. It takes only the shared fields above.

HasDefectCondition ​

No fields of its own. It takes only the shared fields above.

HasFlagCondition ​

FieldTypeValues / notes
RequiredFlagEntityFlagsCantEnterContainers, Confused, DesignatedTarget, HeavyWeaponsAllowed, IgnoreDeploymentRequirements, IgnoreSuppressedAPLoss, ImmuneDesignatedTarget, ImmuneToDamage, ImmuneToEncumbrance, ImmuneToIndirectSuppression, ImmuneToLightEffect, ImmuneToMorale, ImmuneToSuppression, ImmuneToSuppressionFromElementLost, IrrelevantToMorale, None, Rooted, RootedByStance, Stunned

HasItemInSlotCondition ​

FieldTypeValues / notes
SlotsItemSlot[]All, COUNT, InfantryAccessory, InfantryArmor, InfantrySpecial, InfantryWeapon, ModularVehicleHeavy, ModularVehicleLight, ModularVehicleMedium, None, Vehicle, VehicleAccessory, VehicleHeavyTurret, VehicleLightTurret

HasItemWithSlotCondition ​

FieldTypeValues / notes
SlotsItemSlot[]All, COUNT, InfantryAccessory, InfantryArmor, InfantrySpecial, InfantryWeapon, ModularVehicleHeavy, ModularVehicleLight, ModularVehicleMedium, None, Vehicle, VehicleAccessory, VehicleHeavyTurret, VehicleLightTurret

HasItemWithTagsCondition ​

FieldTypeValues / notes
RequiredTagsTagTemplate[]

HasSpecificVehicleCondition ​

FieldTypeValues / notes
AllowedVehiclesVehicleItemTemplate[]

HitpointsPercentageCondition ​

FieldTypeValues / notes
CheckOperationCheckConditionGreaterOrEqual, LowerOrEqual
Percentageint

ImmuneToMoraleCondition ​

No fields of its own. It takes only the shared fields above.

IsAlliedCondition ​

No settable fields. It carries behaviour only.

IsContainingEntityCondition ​

No fields of its own. It takes only the shared fields above.

IsDeployedCondition ​

No fields of its own. It takes only the shared fields above.

IsHiddenCondition ​

No fields of its own. It takes only the shared fields above.

IsObjectiveTargetCondition ​

No fields of its own. It takes only the shared fields above.

IsUsingSkillInSlotCondition ​

FieldTypeValues / notes
SlotsItemSlot[]All, COUNT, InfantryAccessory, InfantryArmor, InfantrySpecial, InfantryWeapon, ModularVehicleHeavy, ModularVehicleLight, ModularVehicleMedium, None, Vehicle, VehicleAccessory, VehicleHeavyTurret, VehicleLightTurret

IsVehicleCondition ​

No fields of its own. It takes only the shared fields above.

IsolatedCondition ​

FieldTypeValues / notes
Radiusint

LastAttackedByCondition ​

No settable fields. It carries behaviour only.

LightCondition ​

FieldTypeValues / notes
RequiredLightConditionLightConditionTypeDawn, Day, Dusk, Last, Night, Random

MoralePercentCondition ​

FieldTypeValues / notes
CheckOperationCheckConditionHigherOrEqual, LowerOrEqual
MoralePercentint

MoraleStateCondition ​

FieldTypeValues / notes
CheckOperationCheckConditionEqual, HigherOrEqual, LowerOrEqual
MoraleStateMoraleStateFleeing, Neutral, Wavering

OrCondition ​

FieldTypeValues / notes
ConditionsITacticalCondition[]Polymorphic list: add subtypes from Conditions with append "Conditions" type="<Subtype>" { ... }.

PincerCondition ​

FieldTypeValues / notes
MaxDistanceint

SkillWithOneOfTheTagsCondition ​

FieldTypeValues / notes
RequiredTagsTagType[]ACCESSORY, ACCURATE, AIRPOWER, ANTI_INFANTRY, ANTI_STRUCTURE, ANTI_VEHICLE, AREA_OF_EFFECT, ARMOR_DAMAGING, ARMOR_PIERCING, ASSAULT_RIFLE, BATTLE_RIFLE, CAMOUFLAGE, COMMODITY, CRAFTING_MATERIAL, DEMORALIZING, DEPLOY, DEPLOYABLE, DESTRUCTIBLE, DISABLING, DRONE, DRUG, EMP, ENERGY, FLEXIBLE, GRENADE, HAZARDOUS, HEAVY_ARMOR, HIGH_RATE_OF_FIRE, HORDE, HOVERING, IGNORES_COVER, INACCURATE, INCENDIARY, INDIRECT_FIRE, INFANTRY, JAM, JETPACK, LARGE, LIGHT_ARMOR, LIMITED_AMMO, LONG_RANGE, LOW_PENETRATION, LOW_QUALITY, Last, MACHINE, MANY_ACCESSORIES, MASSIVE_EXPLOSION, MEDIUM_ARMOR, MINE, MINIMUM_RANGE, MINI_BOSS, MOBILE, MOTORIZED_INFANTRY, ORBITAL, PROJECTILE, ROCKET, SCANNER, SCATTER, SHORT_RANGE, SHOTGUN, SMG, SMOKE, SNIPER, SPECIAL_WEAPON, SQUAD_WEAPON, STANCE, STEALTH, STRUCTURE, SUPPRESSIVE, TANK, UNIQUE, UNUSED_MUST_DEPLOY, UTILITY, VEHICLE, VEHICLE_WEAPON, VIP, WALKER, WEAPON, WEAPONS_TEAM, XENO

SkillWithTagsCondition ​

FieldTypeValues / notes
ForbiddenTagsTagType[]ACCESSORY, ACCURATE, AIRPOWER, ANTI_INFANTRY, ANTI_STRUCTURE, ANTI_VEHICLE, AREA_OF_EFFECT, ARMOR_DAMAGING, ARMOR_PIERCING, ASSAULT_RIFLE, BATTLE_RIFLE, CAMOUFLAGE, COMMODITY, CRAFTING_MATERIAL, DEMORALIZING, DEPLOY, DEPLOYABLE, DESTRUCTIBLE, DISABLING, DRONE, DRUG, EMP, ENERGY, FLEXIBLE, GRENADE, HAZARDOUS, HEAVY_ARMOR, HIGH_RATE_OF_FIRE, HORDE, HOVERING, IGNORES_COVER, INACCURATE, INCENDIARY, INDIRECT_FIRE, INFANTRY, JAM, JETPACK, LARGE, LIGHT_ARMOR, LIMITED_AMMO, LONG_RANGE, LOW_PENETRATION, LOW_QUALITY, Last, MACHINE, MANY_ACCESSORIES, MASSIVE_EXPLOSION, MEDIUM_ARMOR, MINE, MINIMUM_RANGE, MINI_BOSS, MOBILE, MOTORIZED_INFANTRY, ORBITAL, PROJECTILE, ROCKET, SCANNER, SCATTER, SHORT_RANGE, SHOTGUN, SMG, SMOKE, SNIPER, SPECIAL_WEAPON, SQUAD_WEAPON, STANCE, STEALTH, STRUCTURE, SUPPRESSIVE, TANK, UNIQUE, UNUSED_MUST_DEPLOY, UTILITY, VEHICLE, VEHICLE_WEAPON, VIP, WALKER, WEAPON, WEAPONS_TEAM, XENO
RequiredTagsTagType[]ACCESSORY, ACCURATE, AIRPOWER, ANTI_INFANTRY, ANTI_STRUCTURE, ANTI_VEHICLE, AREA_OF_EFFECT, ARMOR_DAMAGING, ARMOR_PIERCING, ASSAULT_RIFLE, BATTLE_RIFLE, CAMOUFLAGE, COMMODITY, CRAFTING_MATERIAL, DEMORALIZING, DEPLOY, DEPLOYABLE, DESTRUCTIBLE, DISABLING, DRONE, DRUG, EMP, ENERGY, FLEXIBLE, GRENADE, HAZARDOUS, HEAVY_ARMOR, HIGH_RATE_OF_FIRE, HORDE, HOVERING, IGNORES_COVER, INACCURATE, INCENDIARY, INDIRECT_FIRE, INFANTRY, JAM, JETPACK, LARGE, LIGHT_ARMOR, LIMITED_AMMO, LONG_RANGE, LOW_PENETRATION, LOW_QUALITY, Last, MACHINE, MANY_ACCESSORIES, MASSIVE_EXPLOSION, MEDIUM_ARMOR, MINE, MINIMUM_RANGE, MINI_BOSS, MOBILE, MOTORIZED_INFANTRY, ORBITAL, PROJECTILE, ROCKET, SCANNER, SCATTER, SHORT_RANGE, SHOTGUN, SMG, SMOKE, SNIPER, SPECIAL_WEAPON, SQUAD_WEAPON, STANCE, STEALTH, STRUCTURE, SUPPRESSIVE, TANK, UNIQUE, UNUSED_MUST_DEPLOY, UTILITY, VEHICLE, VEHICLE_WEAPON, VIP, WALKER, WEAPON, WEAPONS_TEAM, XENO

SpecificSkillCondition ​

FieldTypeValues / notes
RequiredSkillSkillTemplate

StationaryCondition ​

No fields of its own. It takes only the shared fields above.

StructureTypeCondition ​

FieldTypeValues / notes
RequiredTypeStructureTypeBuilding, Vegetation

SuppressionCondition ​

FieldTypeValues / notes
SuppressionStateSuppressionStateNone, PinnedDown, Suppressed

Value providers ​

A value provider computes a number for a handler field typed IValueProvider (for example ChangeProperty.ValueProvider). Name the subtype with type="<Name>" and set its fields:

kdl
set "EventHandlers" index=0 {
    set "ValueProvider" type="CoverValueProvider" {
        set "HeavyCoverValue" 3
    }
}

ActionPointProvider ​

No settable fields. It carries behaviour only.

AdjacentEnemiesKilledByPlayerProvider ​

No settable fields. It carries behaviour only.

AdjacentInfantryProvider ​

FieldTypeValues / notes
MaxAmountint

AttackedThisRoundValueProvider ​

No settable fields. It carries behaviour only.

ClampedValueProvider ​

FieldTypeValues / notes
Maxint
Minint
ValueProviderIValueProviderPolymorphic: pick a subtype from Value providers with set "ValueProvider" type="<Subtype>" { ... }.

CoverValueProvider ​

FieldTypeValues / notes
HeavyCoverValueint
LightCoverValueint
MediumCoverValueint

DistanceValueProvider ​

No settable fields. It carries behaviour only.

EnemiesKilledProvider ​

FieldTypeValues / notes
Maximumint
Minimumint

EnemyVehiclesDestroyedByPlayerProvider ​

No settable fields. It carries behaviour only.

EntityPropertyProvider ​

FieldTypeValues / notes
MaxValueint
MinValueint
PropertyTypeEntityPropertyTypeAIPriorityMult, APEnterCost, APLeaveCost, Accuracy, AccuracyDropoff, AccuracyDropoffMult, AccuracyMult, ActionPoints, ActionPointsMult, AdditionalMovementCost, AdditionalTurningCost, Armor, ArmorDamageSustainedMult, ArmorDurabilityPerElement, ArmorMult, ArmorPenetration, ArmorPenetrationDropoff, ArmorPenetrationDropoffMult, ArmorPenetrationMult, BackwardsMovementMult, Concealment, ConcealmentMult, CoverEffectivenessMult, CoverGainedByVehicleOffset, CoverTypeOffset, CriticalChance, CriticalDamageMult, Damage, DamageDropoff, DamageDropoffMult, DamageMult, DamageSustainedMult, DamageSustainedSquadLeaderMult, DamageToArmorDurability, DamageToArmorDurabilityDropoff, DamageToArmorDurabilityDropoffMult, DamageToArmorDurabilityMult, DamageToMoraleMult, DefectThresholdOffset, DefenseMult, DeployCostMult, DeploymentZoneMinExtend, DeploymentZoneMult, Detection, DetectionMult, Discipline, DisciplineMult, DismemberChance, ElementsHit, ElementsHitPct, GetDismemberedChanceBonus, GetDismemberedChanceMult, GetDismemberedMaxParts, GetDismemberedMinParts, HitchanceMin, HitpointsPerElement, HitpointsPerElementMult, IgnoreCoverMult, MaxElements, MoraleBonus, MoraleImpactMult, MoraleMult, MoraleRecoveryMult, MoraleStateOffset, PromotionCostMult, ProvidedCoverBonus, ReduceElementsHit, SuppressionDealt, SuppressionDealtMult, SuppressionImpactMult, TotalDamageMult, Vision, VisionMult

MissingHealthProvider ​

FieldTypeValues / notes
CheckEntityCheckTargetTarget, User
StacksAt0HPint

NamedValueProvider ​

FieldTypeValues / notes
ValueNamestring

PerkCountProvider ​

FieldTypeValues / notes
Maximumint

ProximityValueProvider ​

FieldTypeValues / notes
MaximumDistanceint

RoundValueProvider ​

FieldTypeValues / notes
MaxValueint
Offsetint

SquadSizeProvider ​

FieldTypeValues / notes
NeutralSizeint

SquaddiesLostProvider ​

FieldTypeValues / notes
Multiplierint

StrategyVarProvider ​

FieldTypeValues / notes
Multiplierfloat
StrategyValueStrategyVarsAuthority, DemoteRefundPercentage, Intelligence, Last, OciComponents, OciComponentsEarned, OciRefundPercentage, OperationsPlayed, OperationsTimeoutBonus, OperationsWon, PromotionPoints, PromotionPointsEarned, StoryCheckpoints, Unused1, Unused2, Unused3, Unused4, Unused5, Unused6

SumProvider ​

FieldTypeValues / notes
MaxValueint
MinValueint
ProvidersIValueProvider[]Polymorphic list: add subtypes from Value providers with append "Providers" type="<Subtype>" { ... }.

SuppressedCountProvider ​

FieldTypeValues / notes
MaxStacksint

TilesMovedProvider ​

No settable fields. It carries behaviour only.

WrecksDestroyedProvider ​

No settable fields. It carries behaviour only.

Skill filters ​

A skill filter narrows which skills a handler applies to. A handler field typed ISkillFilter takes one of these subtypes. Name it with type="<Name>" and set its fields.

AllSkillsExcept ​

FieldTypeValues / notes
ExcludedSkillsSkillTemplate[]

AndSkillFilter ​

FieldTypeValues / notes
FiltersISkillFilter[]Polymorphic list: add subtypes from Skill filters with append "Filters" type="<Subtype>" { ... }.

IsAttackFilter ​

No settable fields. It carries behaviour only.

IsItemSkillFilter ​

No settable fields. It carries behaviour only.

IsObjectiveSkillFilter ​

No settable fields. It carries behaviour only.

IsStanceChange ​

No settable fields. It carries behaviour only.

IsTargetedFilter ​

No settable fields. It carries behaviour only.

IsWeaponSkillFilter ​

No settable fields. It carries behaviour only.

ItemSlotFilter (skill filters) ​

FieldTypeValues / notes
ItemSlotsItemSlot[]All, COUNT, InfantryAccessory, InfantryArmor, InfantrySpecial, InfantryWeapon, ModularVehicleHeavy, ModularVehicleLight, ModularVehicleMedium, None, Vehicle, VehicleAccessory, VehicleHeavyTurret, VehicleLightTurret

SpecificSkillsFilter ​

FieldTypeValues / notes
TargetSkillsSkillTemplate[]

TagFilter ​

FieldTypeValues / notes
ForbiddenTagsTagType[]ACCESSORY, ACCURATE, AIRPOWER, ANTI_INFANTRY, ANTI_STRUCTURE, ANTI_VEHICLE, AREA_OF_EFFECT, ARMOR_DAMAGING, ARMOR_PIERCING, ASSAULT_RIFLE, BATTLE_RIFLE, CAMOUFLAGE, COMMODITY, CRAFTING_MATERIAL, DEMORALIZING, DEPLOY, DEPLOYABLE, DESTRUCTIBLE, DISABLING, DRONE, DRUG, EMP, ENERGY, FLEXIBLE, GRENADE, HAZARDOUS, HEAVY_ARMOR, HIGH_RATE_OF_FIRE, HORDE, HOVERING, IGNORES_COVER, INACCURATE, INCENDIARY, INDIRECT_FIRE, INFANTRY, JAM, JETPACK, LARGE, LIGHT_ARMOR, LIMITED_AMMO, LONG_RANGE, LOW_PENETRATION, LOW_QUALITY, Last, MACHINE, MANY_ACCESSORIES, MASSIVE_EXPLOSION, MEDIUM_ARMOR, MINE, MINIMUM_RANGE, MINI_BOSS, MOBILE, MOTORIZED_INFANTRY, ORBITAL, PROJECTILE, ROCKET, SCANNER, SCATTER, SHORT_RANGE, SHOTGUN, SMG, SMOKE, SNIPER, SPECIAL_WEAPON, SQUAD_WEAPON, STANCE, STEALTH, STRUCTURE, SUPPRESSIVE, TANK, UNIQUE, UNUSED_MUST_DEPLOY, UTILITY, VEHICLE, VEHICLE_WEAPON, VIP, WALKER, WEAPON, WEAPONS_TEAM, XENO
ModeTagFilterModeAllTags, OneOfTheTags
RequiredTagsTagType[]ACCESSORY, ACCURATE, AIRPOWER, ANTI_INFANTRY, ANTI_STRUCTURE, ANTI_VEHICLE, AREA_OF_EFFECT, ARMOR_DAMAGING, ARMOR_PIERCING, ASSAULT_RIFLE, BATTLE_RIFLE, CAMOUFLAGE, COMMODITY, CRAFTING_MATERIAL, DEMORALIZING, DEPLOY, DEPLOYABLE, DESTRUCTIBLE, DISABLING, DRONE, DRUG, EMP, ENERGY, FLEXIBLE, GRENADE, HAZARDOUS, HEAVY_ARMOR, HIGH_RATE_OF_FIRE, HORDE, HOVERING, IGNORES_COVER, INACCURATE, INCENDIARY, INDIRECT_FIRE, INFANTRY, JAM, JETPACK, LARGE, LIGHT_ARMOR, LIMITED_AMMO, LONG_RANGE, LOW_PENETRATION, LOW_QUALITY, Last, MACHINE, MANY_ACCESSORIES, MASSIVE_EXPLOSION, MEDIUM_ARMOR, MINE, MINIMUM_RANGE, MINI_BOSS, MOBILE, MOTORIZED_INFANTRY, ORBITAL, PROJECTILE, ROCKET, SCANNER, SCATTER, SHORT_RANGE, SHOTGUN, SMG, SMOKE, SNIPER, SPECIAL_WEAPON, SQUAD_WEAPON, STANCE, STEALTH, STRUCTURE, SUPPRESSIVE, TANK, UNIQUE, UNUSED_MUST_DEPLOY, UTILITY, VEHICLE, VEHICLE_WEAPON, VIP, WALKER, WEAPON, WEAPONS_TEAM, XENO

Item filters ​

An item filter narrows which items a handler applies to. A handler field typed IItemFilter takes one of these subtypes. Name it with type="<Name>" and set its fields.

ItemSlotFilter (item filters) ​

FieldTypeValues / notes
ValidSlotsItemSlot[]All, COUNT, InfantryAccessory, InfantryArmor, InfantrySpecial, InfantryWeapon, ModularVehicleHeavy, ModularVehicleLight, ModularVehicleMedium, None, Vehicle, VehicleAccessory, VehicleHeavyTurret, VehicleLightTurret