Abilities reference
The component that casts abilities, the ability and effect assets, input and ground targeting, and the API for writing your own effects and executors. For how to use it, see Abilities.
VtUnitAbilities
Component. Add it with Add Component → Vantage → Abilities → VtUnitAbilities. Adds VtUnitStats, VtCombatEngagement automatically.
Casts a unit’s abilities: keeps the granted abilities, runs cast bars, channels, cooldowns, the global cooldown and the auto-attack slot, and raises an event for each step. Every unit gets it with VtUnit; cast with TryCast or through VtAbilityHotkeys.
Scripting API
| Member |
Description |
IReadOnlyList<VtAbilityScheduler.AbilityInstance> Granted { get; } |
Read-only snapshot of granted abilities. |
float GCDRemaining { get; } |
Seconds remaining on the global cooldown. 0 = off GCD. |
VtAbilityDefinition CurrentCast { get; } |
Definition of the ability currently being cast, or null if idle. |
float CurrentCastRemaining { get; } |
Seconds remaining on the current cast bar. 0 if not casting. |
float CurrentCastTotal { get; } |
Full cast-time of the current cast. 0 if not casting. |
VtAbilityDefinition AutoCastDefinition { get; } |
Ability in the auto-fire slot, or null. |
IVtAttackable AutoCastTarget { get; } |
Target in the auto-fire slot, or null. |
VtAbilityScheduler Scheduler { get; } |
The scheduler behind this component, for advanced integrations such as driving abilities on a headless server. Prefer the other members of this component. |
event Action<VtAbilityDefinition> OnAbilityCastStarted |
Fires when a non-zero-cast-time cast begins. |
event Action<VtAbilityDefinition> OnAbilityCast |
Fires after the ability’s effects run. |
event Action<VtAbilityDefinition> OnAbilityCastInterrupted |
Fires when an in-progress cast was cancelled. |
event Action<VtAbilityDefinition, float> OnAbilityCastPushedBack |
Fires when a hit pushed back the cast or channel in progress. The float is the seconds now left. |
event Action OnGCDStarted |
Fires when the GCD starts. |
event Action<VtAbilityDefinition> OnAbilityChannelTick |
Fires every channel tick during an active channel. |
event Action<VtAbilityDefinition> OnAbilityChannelEnded |
Fires when a channel completes its full duration. Interrupts emit OnAbilityCastInterrupted instead. |
bool HasAbility(VtAbilityDefinition def) |
True if the ability is in the granted list. |
float GetCooldown(VtAbilityDefinition def) |
Seconds remaining on the given ability’s cooldown. |
float GetCooldownFraction(VtAbilityDefinition def) |
Current cooldown fraction for UI swirls. |
void ApplyCastStartedFromNet(VtAbilityDefinition def) |
Raise OnAbilityCastStarted for a cast that started on another copy of this unit, so cast animations and cues play here. Runs nothing, charges nothing and starts no cast bar. Used by replication; never call it for a cast this copy started. |
void ApplyCastFromNet(VtAbilityDefinition def) |
Raise OnAbilityCast for a cast another copy of this unit resolved. Runs no effects and starts no cooldown. Used by replication; never call it for a cast this copy resolved. |
void ApplyCastInterruptedFromNet(VtAbilityDefinition def) |
Raise OnAbilityCastInterrupted for a cast another copy of this unit lost. Refunds nothing. Used by replication; never call it for a cast this copy lost. |
void ApplyCastPushedBackFromNet(VtAbilityDefinition def, float secondsLeft) |
Raise OnAbilityCastPushedBack for a cast or channel another copy of this unit had pushed back, with the seconds it has left. Changes nothing here. Used by replication; never call it for a pushback on this copy. |
void GrantAbility(VtAbilityDefinition def) |
Grant an ability to this unit. Idempotent. |
void RevokeAbility(VtAbilityDefinition def) |
Revoke an ability — also clears auto-fire / interrupts if affected. |
VtAbilityCastFailReason TryCast(VtAbilityDefinition def, VtAbilityTargetData targetData) |
Try to cast def at targetData. Returns Success when the cast started or resolved, otherwise why it was refused. |
VtAbilityCastFailReason TryCastNow(VtAbilityDefinition def, VtAbilityTargetData targetData) |
Validate and resolve a cast this frame, without the cast bar. For an authoritative side replaying a cast a client already waited for. |
void InterruptCast() |
Cancel the current cast (refund + drop queue). |
void SetAutoCast(VtAbilityDefinition def, IVtAttackable target) |
Install a (def, target) pair in the auto-fire slot. Keeps VtCombatEngagement.Target in sync so range / chase queries agree. |
void ClearAutoCast() |
Clear the auto-fire slot. Does not touch engagement or cast state. |
void Tick(float deltaTime) |
Advance casts, channels and cooldowns by deltaTime seconds. Runs every frame on its own, or from VtTickManager when it drives the simulation. |
VtAbilityHotkeys
Component. Add it with Add Component → Vantage → Movement → VtAbilityHotkeys. Adds VtUnitAbilities automatically.
Casts abilities from input actions. Put it on the player prefab, fill the slots with abilities, and each press casts at what makes sense for the ability’s targeting mode: self-cast abilities on the caster, single-target abilities on the unit under the cursor or else the current target, ground-point abilities at the point under the cursor. Failures surface through OnCastFailed for “out of range” feedback. A hotbar draws the slots from Slots and the cooldowns from VtUnitAbilities.
Inspector fields
| Field |
Type |
Default |
Range |
Description |
Slots (slots) |
VtAbilityHotkeys.Slot[] |
5 entries |
|
Abilities in slot order. Slot 1 casts on Ability 1, key 1 by default. |
Ground Mask (groundMask) |
LayerMask |
Everything |
|
Layers that count as ground for ground-point abilities. |
Unit Mask (unitMask) |
LayerMask |
Everything |
|
Layers the hover check considers when looking for a unit under the cursor. |
Ray Distance (rayDistance) |
float |
500 |
≥ 1 |
Maximum cursor raycast distance in world units. |
Ground Targeting (groundTargeting) |
VtGroundTargeting |
CastAtCursor |
|
Cast At Cursor casts ground abilities the moment the key is pressed. Aim And Confirm shows where the ability will land and casts on Confirm Target or a second press; Command or Cancel aborts. |
Cancel Aim Action (cancelAimAction) |
InputActionReference |
None |
|
Aborts aiming a ground ability. Empty uses Cancel from the Vantage input actions, Esc by default. |
Confirm Target Action (confirmTargetAction) |
InputActionReference |
None |
|
Casts the ground ability being aimed. Empty uses Confirm Target, the left mouse button by default. When it shares a button with Command, confirming wins. |
Command Action (commandAction) |
InputActionReference |
None |
|
Also aborts aiming. Empty uses Command, the right mouse button by default. |
Scripting API
| Member |
Description |
IReadOnlyList<VtAbilityHotkeys.Slot> Slots { get; } |
The slots in order, for drawing a hotbar. |
VtAbilityHotkeys.CursorRayProvider CursorRay { get; set; } |
Where the cursor ray comes from. Defaults to the main camera through the mouse; replace it for gamepad cursors or a custom camera. |
VtGroundTargeting GroundTargeting { get; set; } |
How ground abilities are cast. Switching to Cast At Cursor cancels aiming. |
bool IsAiming { get; } |
True while a ground ability waits for its confirm click. |
VtAbilityDefinition AimAbility { get; } |
The ability being aimed, or null. |
Vector3 AimPoint { get; } |
The ground point under the cursor while aiming. |
bool HasAimPoint { get; } |
True while the cursor is over ground. |
bool IsAimInRange { get; } |
True while the aim point is within the ability’s range. |
float AimRadius { get; } |
The area radius of the ability being aimed, or 0. |
bool BlocksPointerThisFrame { get; } |
True while aiming and on the frame aiming ended. Click input and selection ignore pointer presses then, so a confirm or cancel click does not also walk or select. |
event Action<int, VtAbilityDefinition> OnSlotPressed |
Fires when a slot with an ability is pressed, before the cast is attempted. |
event Action<VtAbilityDefinition, VtAbilityCastFailReason> OnCastFailed |
Fires when a press did not result in a cast, with the reason. |
event Action<VtAbilityDefinition> OnAimStarted |
Fires when aiming a ground ability starts. |
event Action<VtAbilityDefinition, bool> OnAimEnded |
Fires when aiming ends: true when the ability was cast, false when aiming was cancelled or the cast was refused. |
void Assign(int slotIndex, VtAbilityDefinition ability) |
Put ability in slot slotIndex, growing the list if needed. Null clears the slot. |
void Bind(int slotIndex, InputActionReference action) |
Cast slot slotIndex from action, growing the list if needed. Null goes back to the slot’s default Ability action. |
InputAction GetAction(int slotIndex) |
The action slot slotIndex casts on, for key labels. Null when the slot has none. |
VtAbilityCastFailReason Press(int slotIndex) |
Cast the ability in slotIndex as if its key was pressed. UI buttons call this. With Aim And Confirm, a ground ability starts aiming and returns Success; pressing the same slot again casts it at the cursor. |
VtAbilityCastFailReason PressAbility(VtAbilityDefinition ability) |
Cast ability the way a slot press would, whether or not it sits in a slot: at the hovered or selected unit, at the cursor, or by starting to aim. A VtHotbar casts its abilities through this. Pressing it again while it is being aimed casts it. |
VtAbilityCastFailReason ConfirmAim() |
Cast the ability being aimed at the ground under the cursor. Returns why it was refused, or NotGranted when nothing is being aimed. |
void CancelAim() |
Stop aiming without casting. |
bool TryResolveTarget(VtAbilityDefinition ability, out VtAbilityTargetData targetData) |
The target a press of ability would use right now: the caster for a self-cast, the hovered, selected or engaged unit for a single-target ability, the ground under the cursor for a ground ability. False when there is none. |
VtGroundTargetIndicator
Component. Add it with Add Component → Vantage → Visuals → VtGroundTargetIndicator. Adds VtAbilityHotkeys automatically.
Draws a ring on the ground where a ground ability will land while VtAbilityHotkeys is aiming it. The ring has the ability’s VtAbilityDefinition.AreaRadius, or reticleRadius for an ability without an area, and turns outOfRangeColor when the point is beyond range. Put it next to the hotkeys on the player. Replace it with your own component that reads VtAbilityHotkeys.IsAiming, VtAbilityHotkeys.AimPoint and VtAbilityHotkeys.AimRadius for a different look.
Inspector fields
| Field |
Type |
Default |
Range |
Description |
In Range Color (inRangeColor) |
Color |
#FFFFFFD9 |
|
Ring colour while the point is in range. |
Out Of Range Color (outOfRangeColor) |
Color |
#F75959D9 |
|
Ring colour while the point is out of range. |
Thickness (thickness) |
float |
0.12 |
≥ 0.01 |
Width of the ring in world units. |
Reticle Radius (reticleRadius) |
float |
0.5 |
≥ 0.1 |
Ring radius for ground abilities without an area. |
VtLocalAbilityExecutor
Component. Add it with Add Component → Vantage → Abilities → VtLocalAbilityExecutor.
The default ability executor: runs each of the ability’s effects in order on this machine. Right for single-player and for the host in co-op. Added automatically when a unit has no other IVtAbilityExecutor.
Scripting API
| Member |
Description |
void Execute(in VtAbilityContext ctx) |
Run every effect of the cast ability in order, skipping empty slots. |
VtProjectileMover
Component. Add it with Add Component → Vantage → Combat → VtProjectileMover.
Runtime component that flies a spawned projectile prefab from a caster toward a target, then resolves damage on arrival. Attached automatically at launch time by Launch; consumers only author the visual prefab (mesh, trail VFX, sound) — the flight + impact behavior ships with Vantage.
Scripting API
| Member |
Description |
static VtProjectileMover Launch(GameObject prefab, Vector3 spawnPosition, IVtAttackable target, float speed, float arcHeight, bool homing, VtDamageInfo damageInfo, Action onImpact = null) |
Spawn a projectile prefab at spawnPosition, attach a mover, and launch toward target. Returns the mover for advanced callers; most just fire-and-forget. |
void Tick(float deltaTime) |
Advance the projectile by deltaTime seconds: lifetime, homing, arc, and impact resolution. The only time input this component consumes; Update forwards Time.deltaTime. |
VtGroundAoeAnchor
Component. Add it with Add Component → Vantage → Combat → VtGroundAoeAnchor.
Runtime “ground anchor” that lingers at a world position and fires AoE damage pulses at a fixed cadence until its duration expires. Spawned by VtPersistentAoeDamageEffect — the cast that creates it is a fire-and-forget instant; the anchor handles the persistence.
Scripting API
| Member |
Description |
void Configure(VtSplashSpec splash, float duration, float tickInterval, int minDamage, int maxDamage, VtDamageType damageType, VtAttackType attackType, VtDamageChannel channel, bool ignoreArmor, VtUnitId attackerId, VtStatDefinition damageBonusStat, bool fireFirstTickImmediately = true) |
Configure and start ticking. Call once after instantiation. fireFirstTickImmediately controls whether the AoE fires at t=0 (cast moment) or only after the first tickInterval has elapsed — typical fire-and-forget feel is “first tick at t=0”. |
void SetPulseCue(VtPresentationCue cue) |
Cue played at the anchor on every damage pulse. Set by the effect that spawns the anchor. |
void Tick(float dt) |
Advance the area by dt seconds, firing any pulses that are due and removing the area once its duration is over. Runs every frame on its own, or from VtTickManager when it drives the simulation. |
VtAbilityDefinition
Asset. Create it with Create → Vantage → Abilities → Ability Definition.
Designer-authored description of a single ability — identity, targeting, cost, timing (cast + cooldown + GCD), auto-fire behavior, and the effects that run on resolution. Granted to a unit at spawn (via VtUnitDefinition.basicAttack / VtUnitDefinition.grantedAbilities) or at runtime via VtUnitAbilities.GrantAbility.
Inspector fields
Identity
| Field |
Type |
Default |
Range |
Description |
Id (id) |
string |
Empty |
|
Stable string identifier used in saves and network messages. Lowercase dotted, e.g. ‘ability.basic_attack’, ‘ability.fireball’, ‘ability.charge’. Unique across all ability definitions. Changing it breaks saved data and anything that still refers to the old id. |
Display Name (displayName) |
string |
Empty |
|
UI display name (hotbar tooltip, cast bar label). |
Description (description) |
string |
Empty |
|
Tooltip / codex description. |
Icon (icon) |
Sprite |
None |
|
Hotbar / cast-bar icon. |
Icon Id (iconId) |
string |
Empty |
|
An icon from the Vantage icon set by name, such as flame or sword, drawn when Icon is empty, so an ability has art on the action bar before its own sprite exists. |
Targeting
| Field |
Type |
Default |
Range |
Description |
Targeting Mode (targetingMode) |
VtTargetingMode |
SingleTarget |
|
How this ability picks its target. Self = no target needed. SingleTarget = requires IVtAttackable. GroundPoint = requires a world-space point. |
Range (range) |
float |
2 |
≥ 0 |
Maximum distance (world units) between caster and target at cast time. Auto-fire abilities also use this to decide chase-into-range behavior. |
Cost
| Field |
Type |
Default |
Range |
Description |
Resource Kind (resourceKind) |
VtResourceKind |
MP |
|
Resource pool drained by a successful cast. Ignored when resourceCost = 0. |
Resource Cost (resourceCost) |
int |
0 |
≥ 0 |
Amount of the resource drained at cast-start. 0 = free. Refunded if the cast is interrupted before resolution. |
Timing
| Field |
Type |
Default |
Range |
Description |
Cast Time (castTime) |
float |
0 |
≥ 0 |
Seconds of cast bar before the ability resolves. 0 = instant (resolves the same frame as TryCast). Non-zero casts can be interrupted by deliberate movement or stun, and by damage as Damage Reaction says. |
Damage Reaction (damageReaction) |
VtCastDamageReaction |
Interrupt |
|
What damage taken while casting or channeling does. Interrupt stops the cast and refunds the cost. Pushback adds time to a cast bar or shortens a channel, by the amounts on the tuning asset. Ignore does nothing. |
Cooldown (cooldown) |
float |
0 |
≥ 0 |
Seconds the ability is unavailable after resolution. 0 = governed only by the GCD (or not at all if ignoresGcd = true). |
GCD (Global Cooldown)
| Field |
Type |
Default |
Range |
Description |
Triggers Gcd (triggersGcd) |
bool |
On |
|
If true, a successful cast starts the global cooldown, whose length is set on the tuning asset. Default true. The basic-attack ability ships with this set to false so auto-attacks never start the global cooldown. |
Ignores Gcd (ignoresGcd) |
bool |
Off |
|
If true, this ability can be cast even while the GCD is active. Default false. The basic-attack ability ships with this set to true. Useful for instant defensives, movement dashes, and auto-attacks. |
Auto-Fire
| Field |
Type |
Default |
Range |
Description |
Can Auto Cast (canAutoCast) |
bool |
Off |
|
If true, VtUnitAbilities.SetAutoCast will repeatedly re-cast this ability whenever its target is valid, in range, and the ability is off cooldown. Used for the basic attack. Active abilities (player-triggered) should leave this off. |
Scales With Attack Speed (scalesWithAttackSpeed) |
bool |
Off |
|
If true, stat.attack_speed modifies this ability’s effective cooldown: effectiveCooldown = cooldown / (1 + attackSpeedSum). Used by the basic attack so Haste / Attack Speed items work without special-casing. Ignored on manual-cast abilities. |
Scales With Range Bonus (scalesWithRangeBonus) |
bool |
Off |
|
If true, stat.attack_range_bonus (flat) is added to this ability’s range at cast time: effectiveRange = range + bonus. Used by the basic attack so ‘Reach’ / ‘Long Arms’ items extend swing range. Applies to the ValidateTargeting range check, auto-fire in-range check, and chase-into-range request. Ignored on self-targeted abilities (they have no meaningful range). |
Source Cooldown From Unit Attack Interval (sourceCooldownFromUnitAttackInterval) |
bool |
Off |
|
If true, the ability’s base cooldown comes from the caster’s VtUnitDefinition.attackInterval instead of this asset’s ‘cooldown’ field. Used by the shared basic-attack ability so every mob can have its own attack cadence via a single ability asset (each mob tunes the number on its own def). ‘scalesWithAttackSpeed’ still applies on top. |
Source Range From Unit Attack Range (sourceRangeFromUnitAttackRange) |
bool |
Off |
|
If true, the ability’s base range comes from the caster’s VtUnitDefinition.attackRange instead of this asset’s ‘range’ field. Used by the shared basic-attack ability so per-mob reach lives on the def. ‘scalesWithRangeBonus’ still applies on top. |
Presentation
| Field |
Type |
Default |
Range |
Description |
Cast Start Cue (castStartCue) |
VtPresentationCue |
— |
|
Animator trigger, sound and effect played on the caster when the cast bar starts. |
Cast Cue (castCue) |
VtPresentationCue |
— |
|
Played on the caster when the ability resolves. |
Impact Cue (impactCue) |
VtPresentationCue |
— |
|
Played on each target the ability damages. |
Effects
| Field |
Type |
Default |
Range |
Description |
Effects (effects) |
VtAbilityEffect[] |
Empty |
|
Pluggable VtAbilityEffect SO children that run in order when the ability resolves. For non-channeled abilities: fires once at instant cast or end-of-cast. For channeled abilities: fires once at channel START — useful for one-shot setup (spawn VFX, place ground anchor). Per-tick effects during a channel go in tickEffects below. |
Channeling
| Field |
Type |
Default |
Range |
Description |
Is Channeled (isChanneled) |
bool |
Off |
|
If true, the ability enters a channel state after cast time elapses. The channel fires tickEffects every channelTickInterval seconds for channelDuration seconds. Interrupt rules are identical to cast interrupts (damage / movement / stun / manual). Cooldown begins after channel ends — natural completion or interrupt. |
Channel Duration (channelDuration) |
float |
5 |
≥ 0.1 |
How long the channel lasts after cast time elapses. Only meaningful when isChanneled = true. |
Channel Tick Interval (channelTickInterval) |
float |
1 |
≥ 0.05 |
Seconds between per-tick effect firings during the channel. Only meaningful when isChanneled = true. |
Fire First Channel Tick Immediately (fireFirstChannelTickImmediately) |
bool |
On |
|
If true, the first channel tick fires the moment the channel starts (recommended for instant-feeling channels such as a life drain). If false, the first tick fires after one tickInterval has elapsed. |
Tick Effects (tickEffects) |
VtAbilityEffect[] |
Empty |
|
Per-tick effects fired during a channel. Empty for non-channeled abilities. Each tick re-runs every effect in this array — VtDamageEffect / VtAoeDamageEffect / VtHealEffect all work as channel ticks. |
Scripting API
| Member |
Description |
float AreaRadius { get; } |
The largest radius among this ability’s area effects, or 0 when it has none. Ground targeting previews and tooltips read it. |
VtDamageEffect
Asset. Create it with Create → Vantage → Abilities → Effects → Damage. Inherits VtAbilityEffect.
Ability effect: roll a damage value in [minDamage, maxDamage] and apply it to the ability’s target. Optional projectile — if a VtProjectileSpec.prefab is assigned, the effect launches the prefab toward the target via VtProjectileMover and damage resolves on impact; otherwise damage is hitscan (applied inline at cast).
Inspector fields
Damage
| Field |
Type |
Default |
Range |
Description |
Min Damage (minDamage) |
int |
1 |
≥ 0 |
Inclusive minimum damage rolled at cast time. |
Max Damage (maxDamage) |
int |
1 |
≥ 0 |
Inclusive maximum damage. Must be >= minDamage; the roll uses VtCombatRng. |
Damage Type (damageType) |
VtDamageType |
Physical |
|
Element of the hit — routes through the target’s per-element resistance. |
Attack Type (attackType) |
VtAttackType |
Normal |
|
Matrix axis. Default flat matrix → no damage-math impact; keep at Normal unless your game extends VtAttackType for unit-counter mechanics. |
Channel (channel) |
VtDamageChannel |
Magic |
|
RPG class channel — Magic for spells (default), Melee or Ranged for weapon-class abilities. Drives power-stat scaling: Magic → spellPower, Melee/Ranged → physicalPower. |
Ignore Armor (ignoreArmor) |
bool |
Off |
|
If true, the hit bypasses armor reduction (pure-magic abilities). Element resistance + damage matrix still apply. |
Damage Bonus Stat (damageBonusStat) |
VtStatDefinition |
None |
|
Optional: stat whose flat + percent totals scale this effect’s rolled damage. Null = no scaling. Typical choices: stat.damage_bonus (generic), stat.spell_damage_bonus / stat.elemental_damage_bonus (per-school). An attribute formula feeds the relevant stat via VtAttributeDerivedStatsBinding. |
Projectile (optional)
| Field |
Type |
Default |
Range |
Description |
Projectile (projectile) |
VtProjectileSpec |
— |
|
Leave prefab empty for hitscan (damage applies instantly). Assign a prefab to launch a projectile that flies to the target and applies damage on impact. The ability’s visual — fire-orb, ice-shard, arrow. Spec also controls speed, arc, and homing. Only applies in SingleTarget mode. |
Splash (optional)
| Field |
Type |
Default |
Range |
Description |
Splash (splash) |
VtSplashSpec |
— |
|
Leave radius=0 for single-target. Radius > 0 applies secondary damage to every IVtAttackable within the radius (excluding the primary target). Damage is scaled by the falloff curve (default linear 1→0 at the edge) and inherits the primary hit’s type / attackType / ignoreArmor. Secondary hits carry source=VtDamageSource.Splash so procs / resistance systems can discriminate. Fires only when the primary hit landed. |
On-Hit Chained Effects
| Field |
Type |
Default |
Range |
Description |
On Hit Effects (onHitEffects) |
VtAbilityEffect[] |
Empty |
|
Additional VtAbilityEffect SOs run on the target AFTER damage lands. Use for on-hit stuns (VtApplyBuffEffect → stun buff), debuffs, secondary damage rolls. On projectile hits, these fire at impact time — synchronized with the damage — not at cast time. On hitscan hits, they fire immediately after damage applies. Skipped when the target becomes invalid mid-flight or the damage is cancelled. |
Scripting API
| Member |
Description |
override void Execute(in VtAbilityContext ctx) |
Roll the damage and hit the target, or launch the projectile that hits it on arrival. |
VtUnitBasicAttackDamageEffect
Asset. Create it with Create → Vantage → Abilities → Effects → Basic Attack Damage. Inherits VtAbilityEffect.
Ability effect: roll a basic-attack damage value using the caster’s VtUnitDefinition.minDamage / VtUnitDefinition.maxDamage / VtUnitDefinition.damageType / VtUnitDefinition.attackType fields, then apply it to the target through the full damage pipeline.
Inspector fields
| Field |
Type |
Default |
Description |
Damage Bonus Stat (damageBonusStat) |
VtStatDefinition |
None |
Optional: stat whose flat + percent totals scale basic-attack damage. Null = no scaling. Assign stat.damage_bonus for generic scaling, or a per-school stat (e.g. stat.physical_damage_bonus) for builds where different weapon types scale off different attributes. Same asset can be shared across Warrior / Archer / Dragon basic attacks, or each archetype can reference a school-specific stat via a different basic-attack effect asset. |
Scripting API
| Member |
Description |
override void Execute(in VtAbilityContext ctx) |
Roll the caster’s basic-attack damage and hit the target, or launch the caster’s projectile. |
VtHealEffect
Asset. Create it with Create → Vantage → Abilities → Effects → Heal. Inherits VtAbilityEffect.
Ability effect: directly restore HP on the target (or caster, for VtTargetingMode.Self). The heal can crit and shows as floating heal text.
Inspector fields
| Field |
Type |
Default |
Range |
Description |
Min Amount (minAmount) |
int |
1 |
≥ 0 |
Inclusive minimum HP restored. Rolled via VtCombatRng. |
Max Amount (maxAmount) |
int |
1 |
≥ 0 |
Inclusive maximum HP restored. Must be >= minAmount. |
Scripting API
| Member |
Description |
override void Execute(in VtAbilityContext ctx) |
Roll the heal and restore it on the target, or on the caster for self-cast abilities. |
VtApplyBuffEffect
Asset. Create it with Create → Vantage → Abilities → Effects → Apply Buff. Inherits VtAbilityEffect.
Ability effect: apply a VtBuffDefinition to the ability’s target (or caster, for VtTargetingMode.Self). Delegates to VtUnitBuffs.ApplyBuff so the buff’s stacking policy, tick effect, and modifier grants all flow through the existing system.
Inspector fields
| Field |
Type |
Default |
Range |
Description |
Buff (buff) |
VtBuffDefinition |
None |
|
The buff definition to apply. Required — effect no-ops if null. |
Duration Override (durationOverride) |
float |
0 |
≥ 0 |
Override duration in seconds. 0 = use the buff’s own defaultDuration field. Negative values are clamped to 0. |
Scripting API
| Member |
Description |
override void Execute(in VtAbilityContext ctx) |
Apply the buff to the target, or to the caster for self-cast abilities. |
VtAoeDamageEffect
Asset. Create it with Create → Vantage → Abilities → Effects → AoE Damage. Inherits VtAbilityEffect.
Ability effect: resolve an AoE center based on the ability’s targeting mode (VtTargetingMode.Self / VtTargetingMode.SingleTarget / VtTargetingMode.GroundPoint) and apply rolled damage to every IVtAttackable in splash’s radius via VtSplashResolver.
Inspector fields
Damage
| Field |
Type |
Default |
Range |
Description |
Min Damage (minDamage) |
int |
1 |
≥ 0 |
Inclusive minimum damage rolled at cast time, before falloff. |
Max Damage (maxDamage) |
int |
1 |
≥ 0 |
Inclusive maximum damage. Must be >= minDamage; rolled via VtCombatRng. |
Damage Type (damageType) |
VtDamageType |
Fire |
|
Element of the hit — routes through each victim’s per-element resistance. |
Attack Type (attackType) |
VtAttackType |
Normal |
|
Matrix axis. Default flat matrix → no damage-math impact; keep at Normal unless your game extends VtAttackType for unit-counter mechanics. |
Channel (channel) |
VtDamageChannel |
Magic |
|
RPG class channel — Magic for AoE spells (default), Melee or Ranged for weapon-class AoE (e.g. whirlwind = Melee). Drives power-stat scaling. |
Ignore Armor (ignoreArmor) |
bool |
Off |
|
If true, armor reduction is skipped on every hit. Element resist + matrix still apply. |
Damage Bonus Stat (damageBonusStat) |
VtStatDefinition |
None |
|
Optional: stat that scales the rolled damage (flat + percent). Null = no scaling. stat.spell_damage_bonus / stat.elemental_damage_bonus / stat.damage_bonus all valid candidates. |
Area
| Field |
Type |
Default |
Range |
Description |
Splash (splash) |
VtSplashSpec |
— |
|
Radius / falloff / faction filter / target mask / cone angle. radius = 0 → no-op (use VtDamageEffect for single-target instead). |
Area Cue (areaCue) |
VtPresentationCue |
— |
|
Played at the centre of the area when the effect resolves. Tick Scale To Area on the cue to size the effect to the splash radius. |
On-Hit Chained Effects
| Field |
Type |
Default |
Range |
Description |
On Hit Effects (onHitEffects) |
VtAbilityEffect[] |
Empty |
|
Effects run on each unit in the AoE after damage lands. Skipped on any individual hit that absorbed / evaded to zero. Useful for applying a ‘Burn’ DoT to everyone caught in the blast. |
Scripting API
| Member |
Description |
float AreaRadius { get; } |
Radius of the damaged area in world units, from splash. |
override void Execute(in VtAbilityContext ctx) |
Roll the damage once and hit every valid unit in the area around the resolved centre. |
VtAoeHealEffect
Asset. Create it with Create → Vantage → Abilities → Effects → AoE Heal. Inherits VtAbilityEffect.
Ability effect: heal every VtUnit in the AoE radius around the resolved center (VtTargetingMode.Self → caster, VtTargetingMode.SingleTarget → target, VtTargetingMode.GroundPoint → ground point).
Inspector fields
Heal
| Field |
Type |
Default |
Range |
Description |
Min Heal (minHeal) |
int |
1 |
≥ 0 |
Inclusive minimum heal rolled at cast time, before falloff scaling. |
Max Heal (maxHeal) |
int |
1 |
≥ 0 |
Inclusive maximum heal. Must be >= minHeal; rolled via VtCombatRng. |
Can Crit (canCrit) |
bool |
On |
|
If true, heal can roll a crit on the caster’s stat.crit_chance — doubled (or stat.crit_multiplier-scaled) like direct damage. False = flat. |
Area
| Field |
Type |
Default |
Range |
Description |
Splash (splash) |
VtSplashSpec |
— |
|
Radius / falloff / target mask / cone angle. friendlyFire is ignored — see healAnyFaction below for ally-only vs all-faction control. |
Area Cue (areaCue) |
VtPresentationCue |
— |
|
Played at the centre of the area when the effect resolves. Tick Scale To Area on the cue to size the effect to the splash radius. |
Heal Any Faction (healAnyFaction) |
bool |
Off |
|
If false (default), only same-faction units as the caster get healed. If true, every unit in radius is healed regardless of faction. |
Party Only (partyOnly) |
bool |
Off |
|
Heal only the caster and members of the caster’s party. Overrides Heal Any Faction. |
Scripting API
| Member |
Description |
float AreaRadius { get; } |
Radius of the healed area in world units, from splash. |
override void Execute(in VtAbilityContext ctx) |
Roll the heal once and heal every eligible unit in the area, scaled by distance from the centre. |
VtAoeBuffEffect
Asset. Create it with Create → Vantage → Abilities → Effects → AoE Buff. Inherits VtAbilityEffect.
Ability effect: apply a VtBuffDefinition to every VtUnit in the AoE radius around the resolved center (VtTargetingMode.Self → caster, VtTargetingMode.SingleTarget → target, VtTargetingMode.GroundPoint → ground point).
Inspector fields
Buff
| Field |
Type |
Default |
Range |
Description |
Buff (buff) |
VtBuffDefinition |
None |
|
Buff applied to every unit in the AoE radius. Required. |
Override Duration (overrideDuration) |
float |
0 |
≥ 0 |
Optional override duration. <= 0 falls back to the buff definition’s authored duration. |
Area
| Field |
Type |
Default |
Range |
Description |
Splash (splash) |
VtSplashSpec |
— |
|
Radius / falloff / faction filter / cone angle. friendlyFire = false skips same-faction units (default — enemy-only debuff). friendlyFire = true hits everyone in range; pair with ignoreFactionFilter to make an ally-only buff. |
Area Cue (areaCue) |
VtPresentationCue |
— |
|
Played at the centre of the area when the effect resolves. Tick Scale To Area on the cue to size the effect to the splash radius. |
Ignore Faction Filter (ignoreFactionFilter) |
bool |
Off |
|
If true, the faction filter is bypassed entirely — every unit in radius gets the buff regardless of allegiance. Pair it with a buff that does nothing on enemies, or use Party Only to buff just the caster’s party. |
Party Only (partyOnly) |
bool |
Off |
|
Buff only the caster and members of the caster’s party. Bypasses the faction filter. |
Scripting API
| Member |
Description |
float AreaRadius { get; } |
Radius of the buffed area in world units, from splash. |
override void Execute(in VtAbilityContext ctx) |
Apply the buff to every eligible unit in the area around the resolved centre. |
VtPersistentAoeDamageEffect
Asset. Create it with Create → Vantage → Abilities → Effects → Persistent AoE Damage. Inherits VtAbilityEffect.
Ability effect: spawn a VtGroundAoeAnchor at the resolved AoE center that pulses periodic AoE damage at a fixed cadence until its authored duration expires. Cast → fire-and-forget anchor → caster is free to do other things (move, cast more spells, die — the anchor outlives them).
Inspector fields
Damage per pulse
| Field |
Type |
Default |
Range |
Description |
Min Damage (minDamage) |
int |
5 |
≥ 0 |
Inclusive minimum damage rolled for each pulse. |
Max Damage (maxDamage) |
int |
10 |
≥ 0 |
Inclusive maximum damage. Must be >= minDamage; rolled per pulse via VtCombatRng. |
Damage Type (damageType) |
VtDamageType |
Fire |
|
Element of each pulse — routes through victim’s per-element resistance. |
Attack Type (attackType) |
VtAttackType |
Normal |
|
Matrix axis. Default flat matrix → no damage-math impact; keep at Normal unless your game extends VtAttackType for unit-counter mechanics. |
Channel (channel) |
VtDamageChannel |
Magic |
|
RPG class channel — Magic for spell-class persistent AoE (default), Melee/Ranged for weapon-class lingering effects. Drives power-stat scaling of every pulse: Magic → spellPower, else physicalPower. |
Ignore Armor (ignoreArmor) |
bool |
Off |
|
If true, every pulse skips armor reduction. Element resist + matrix still apply. |
Damage Bonus Stat (damageBonusStat) |
VtStatDefinition |
None |
|
Optional: stat that scales the rolled per-pulse damage (flat + percent). |
Timing
| Field |
Type |
Default |
Range |
Description |
Duration (duration) |
float |
5 |
≥ 0.1 |
Total seconds the AoE area persists. |
Tick Interval (tickInterval) |
float |
1 |
≥ 0.05 |
Seconds between pulses. Lower = faster ticking. |
Fire First Tick Immediately (fireFirstTickImmediately) |
bool |
On |
|
If true, fire the first pulse the moment the AoE spawns. If false, wait one tickInterval before the first pulse. |
Area
| Field |
Type |
Default |
Range |
Description |
Splash (splash) |
VtSplashSpec |
— |
|
Radius / falloff / faction filter / cone angle. Same VtSplashSpec every other AoE effect uses. |
Presentation
| Field |
Type |
Default |
Range |
Description |
Area Cue (areaCue) |
VtPresentationCue |
— |
|
Played at the centre when the area appears. |
Pulse Cue (pulseCue) |
VtPresentationCue |
— |
|
Played at the centre on every damage pulse. |
Loop Cue (loopCue) |
VtPresentationCue |
— |
|
Effect that stays on the area while it lasts and is removed with it. Tick Scale To Area to size it to the splash radius. |
Scripting API
| Member |
Description |
float AreaRadius { get; } |
Radius of the lingering area in world units, from splash. |
override void Execute(in VtAbilityContext ctx) |
Place a VtGroundAoeAnchor at the resolved centre that pulses damage until the duration ends. |
VtTauntEffect
Asset. Create it with Create → Vantage → Abilities → Effects → Taunt. Inherits VtAbilityEffect.
Ability effect: force the caster to the top of the target’s threat table. Pair it with a single-target ability for a classic MMO taunt.
Inspector fields
| Field |
Type |
Default |
Range |
Description |
Baseline Threat If Empty (baselineThreatIfEmpty) |
float |
1 |
≥ 0 |
Baseline threat applied if the target’s table is currently empty (idle mob being pulled). Set to 1 or higher so the caster shows up as top after the taunt. |
Scripting API
| Member |
Description |
override void Execute(in VtAbilityContext ctx) |
Taunt the ability’s target. Does nothing for abilities that are not single-target. |
static void ApplyTauntTo(VtUnit target, VtUnit caster, float baselineThreatIfEmpty = 1f) |
Put caster at the top of target’s threat table, exactly as the taunt effects do. Call it from your own effects or scripted encounter mechanics. Shows Immune text when the target resists taunts. |
VtAoeTauntEffect
Asset. Create it with Create → Vantage → Abilities → Effects → Aoe Taunt. Inherits VtAbilityEffect.
Ability effect: force the caster to the top of every hostile threat table inside a radius, so a tank can pull a whole group of monsters at once.
Inspector fields
| Field |
Type |
Default |
Range |
Description |
Radius (radius) |
float |
8 |
≥ 0 |
Effect radius in world units. |
Target Mask (targetMask) |
LayerMask |
Everything |
|
Layer mask for the OverlapSphere — restrict to your unit-collider layer for performance. |
Baseline Threat If Empty (baselineThreatIfEmpty) |
float |
1 |
≥ 0 |
Baseline threat applied if a target’s table is currently empty. |
Overlap Buffer Size (overlapBufferSize) |
int |
32 |
≥ 4 |
Pre-allocated overlap buffer size. Increase for crowded boss arenas. |
Scripting API
| Member |
Description |
override void Execute(in VtAbilityContext ctx) |
Taunt every hostile unit with a threat table around the caster, or around the ground point. |
VtThreatOnApplyEffect
Asset. Create it with Create → Vantage → Abilities → Effects → Threat On Apply. Inherits VtAbilityEffect.
Ability effect: add an explicit threat amount on the target’s threat table for the caster. Use as a chained effect on buffs / debuffs / utility abilities that should generate threat without dealing damage.
Inspector fields
| Field |
Type |
Default |
Description |
Amount (amount) |
float |
50 |
Threat amount to add (positive) or subtract (negative). Pre-multiplier; the caster’s stat.threat_multiplier is applied on top. |
Apply To Caster On Self Targeted (applyToCasterOnSelfTargeted) |
bool |
Off |
Self-targeted abilities apply to the caster’s own table (rare — self-threat doesn’t make gameplay sense). Otherwise the ability’s TargetUnit gets the row. |
Scripting API
| Member |
Description |
override void Execute(in VtAbilityContext ctx) |
Add the scaled threat amount for the caster to the target’s threat table. |
VtThreatShedEffect
Asset. Create it with Create → Vantage → Abilities → Effects → Threat Shed. Inherits VtAbilityEffect.
Ability effect: clear the caster’s row from every nearby hostile threat table, for vanish and feign-death abilities. Monsters forget the caster and turn to the next-highest entry on their table.
Inspector fields
| Field |
Type |
Default |
Range |
Description |
Radius (radius) |
float |
30 |
≥ 0 |
Effect radius in world units — only hostiles within this sphere forget the caster. Bigger = more reliable shed; smaller = a ‘vanish but mobs at the edge of the room still remember you’ design choice. |
Target Mask (targetMask) |
LayerMask |
Everything |
|
Layer mask for the OverlapSphere — restrict to your unit-collider layer. |
Overlap Buffer Size (overlapBufferSize) |
int |
32 |
≥ 4 |
Pre-allocated overlap buffer size. |
Scripting API
| Member |
Description |
override void Execute(in VtAbilityContext ctx) |
Remove the caster from the threat table of every hostile unit within the radius. |
VtAbilityEffect
Abstract asset base. Shipped subclasses: VtAoeBuffEffect, VtAoeDamageEffect, VtAoeHealEffect, VtAoeTauntEffect, VtApplyBuffEffect, VtDamageEffect, VtHealEffect, VtLearnRecipeEffect, VtPersistentAoeDamageEffect, VtSummonEffect, VtTauntEffect, VtThreatOnApplyEffect, VtThreatShedEffect, VtUnitBasicAttackDamageEffect.
Abstract base for a pluggable ability effect. A VtAbilityDefinition carries an array of these; when the ability resolves, each effect’s Execute runs in order against the shared VtAbilityContext.
Scripting API
| Member |
Description |
abstract void Execute(in VtAbilityContext ctx) |
Run this effect for one cast. Called once each time the ability resolves, only on the side that owns the game state, so it may change units freely. |
IVtAreaEffect
Interface. Implemented by VtAoeBuffEffect, VtAoeDamageEffect, VtAoeHealEffect, VtPersistentAoeDamageEffect.
An ability effect that covers an area. VtAbilityDefinition.AreaRadius reads it, so ground targeting previews and tooltips know how big the ability is. Implement it on your own area effects.
Scripting API
| Member |
Description |
float AreaRadius { get; } |
Radius of the covered area in world units. |
IVtAbilityExecutor
Interface. Implemented by VtLocalAbilityExecutor.
Decides where a finished cast runs its effects. The default VtLocalAbilityExecutor runs them on this machine; implement this interface on a component to send casts to a server instead, and put it on the unit prefab.
Scripting API
| Member |
Description |
void Execute(in VtAbilityContext ctx) |
Resolve an ability cast. Called exactly once per cast, after the resource cost has been charged and (for non-instant casts) the cast bar has completed. Run each effect in ctx.Definition.effects, or forward the cast to the side that runs them. |
VtAbilityContext
Struct.
The payload passed to each VtAbilityEffect.Execute when an ability resolves. Carries the caster, target data, and the ability definition itself so effects can read their own SO’s fields (damage ranges, buff refs, …) without a separate lookup.
Scripting API
| Member |
Description |
readonly VtUnit Caster |
Unit that cast the ability. Always non-null when an effect executes. |
readonly IVtAttackable Target |
Single-target attackable (null for Self / GroundPoint modes). |
readonly VtUnit TargetUnit |
Convenience cast of Target to VtUnit, or null if the target is not a unit (destructible, training dummy). Effects that need the typed damage pipeline should check this before building a VtDamageInfo. |
readonly Vector3 TargetPoint |
World-space point for VtTargetingMode.GroundPoint abilities. Zero for other modes. |
readonly VtAbilityDefinition Definition |
The ability being resolved. Effects read their own numbers from here (damage ranges, splash spec, buff ref, …) via Definition + the effect’s own inspector-authored fields. |
VtAbilityTargetData
Struct.
The target payload passed to VtUnitAbilities.TryCast and carried through to each VtAbilityEffect. Immutable; build one of the three shapes via the static factories below.
Scripting API
| Member |
Description |
readonly IVtAttackable Target |
Single-target variants: the IVtAttackable picked by player click / AI targeting. Null for VtTargetingMode.Self and VtTargetingMode.GroundPoint. |
readonly Vector3 Point |
Ground-point variants: the world-space click / AoE center. Zero for VtTargetingMode.Self and VtTargetingMode.SingleTarget. |
readonly VtTargetingMode Mode |
Which variant this data represents. Must match the ability’s VtAbilityDefinition.targetingMode or the cast is refused with VtAbilityCastFailReason.InvalidTarget. |
static VtAbilityTargetData Self() |
Self-targeted cast (buffs, heal-self, burst defensives). |
static VtAbilityTargetData SingleTarget(IVtAttackable target) |
Target an IVtAttackable (most attacks, heals on allies). Null targets are permitted and produce VtAbilityCastFailReason.InvalidTarget at cast time — callers can still build this struct when the target may not exist. |
static VtAbilityTargetData GroundPoint(Vector3 point) |
Target a world-space point (ground AoE, summons, teleports). |
VtAbilityRequest
Serializable struct.
What a client sends when it asks the authoritative side to cast for it.
Inspector fields
| Field |
Type |
Default |
Description |
Ability Id (abilityId) |
string |
Empty |
Id of the ability to cast, looked up in the definition catalog. |
Mode (mode) |
VtTargetingMode |
Self |
Which kind of target the cast uses: self, one unit or a ground point. |
Point (point) |
Vector3 |
(0, 0, 0) |
World position for ground-point casts. Ignored otherwise. |
VtAbilityRelay
Static class.
The two halves of a remote cast. A client-side IVtAbilityExecutor calls Pack when its scheduler resolves a cast and sends the request over the network with the target however its framework references objects; the server calls Apply to validate and run the cast on its own copy of the caster. The co-op sample shows both halves on Netcode for GameObjects.
Scripting API
| Member |
Description |
static VtAbilityRequest Pack(in VtAbilityContext ctx) |
Build the request for a resolved cast. |
static VtAbilityCastFailReason Apply(VtUnit caster, in VtAbilityRequest request, IVtAttackable target, VtDefinitionCatalog catalog = null) |
Resolve the request against catalog (the shared instance when null) and cast it right away on caster through VtUnitAbilities.TryCastNow. Returns why it was refused otherwise. |
VtAbilityHotkeys.Slot
Serializable struct.
One input bound to one ability. An empty ability leaves the input unused.
Inspector fields
| Field |
Type |
Default |
Description |
Action (action) |
InputActionReference |
None |
Action that casts this slot. Empty uses Ability 1 to 10 from the Vantage input actions by slot number; slots past 10 have no input until you set one. |
Ability (ability) |
VtAbilityDefinition |
None |
Ability to cast. It must be granted to the unit. |
Enums
VtAbilityCastFailReason
Result of VtUnitAbilities.TryCast. Success means the cast started (instant abilities resolve the same frame; casts with non-zero castTime begin their cast bar). All other values are soft failures — callers can surface them to UI as feedback (“not enough mana”, “out of range”, …) without exceptions.
| Value |
Description |
Success |
Cast accepted. Either resolved this frame (instant) or cast bar started. |
NotGranted |
Ability is not in the caster’s granted list. |
InvalidTarget |
Target does not match the ability’s VtTargetingMode (e.g. single-target ability cast with no target). |
OutOfRange |
Target is out of the ability’s range. |
NotEnoughResource |
Caster’s resource pool cannot cover the ability’s resourceCost. |
OnCooldown |
Per-ability cooldown is still ticking. |
OnGCD |
Global cooldown is active and this ability does not ignore it. |
AlreadyCasting |
Caster is mid-cast of another ability (and the queue is full / disabled). |
Incapacitated |
Caster’s traits forbid casting right now (silenced / stunned / CanCast=false). |
CasterDead |
Caster is dead. |
VtGroundTargeting
How VtAbilityHotkeys casts ground-point abilities.
| Value |
Description |
CastAtCursor |
Cast at the ground under the cursor the moment the key is pressed. |
AimAndConfirm |
Show where the ability will land, then cast on a left-click or a second press of the key. |
VtDamageType
The element of an attack — routed through the corresponding resistX stat on VtCoreStats in VtUnitStats.TakeDamage.
| Value |
Description |
Physical |
Weapons, claws and falling rocks. Reduced by armor; resisted by stat.resist_physical. |
Fire |
Fire and burning. Resisted by stat.resist_fire. |
Cold |
Frost and ice. Resisted by stat.resist_cold. |
Poison |
Poison and venom, often dealt over time. Resisted by stat.resist_poison. |
True |
Bypasses all mitigation (resistance, armor, matrix). Use sparingly. |
Lightning |
Electricity / chain-lightning / EMP-flavor. Resisted by stat.resist_lightning. |
Holy |
Paladin / priest school. Strong vs undead in many genres. Resisted by stat.resist_holy. |
Shadow |
Warlock / necromancer school — corruption, agony, void. Resisted by stat.resist_shadow. Often paired oppositionally with Holy. |
Arcane |
Mage’s “raw magic” school — distinct from elemental. Magic missile, polymorph. Resisted by stat.resist_arcane. Conventionally hardest to resist. |
Nature |
Druid / shaman school — earth, plant, weather, wildlife. Resisted by stat.resist_nature. |
VtAttackType
The matrix / unit-counter axis of a hit — paired with the defender’s VtArmorType in VtDamageMatrix to produce a multiplier. Pure RTS-flavor mechanic; default matrix is flat (every cell 1.0) for MMO/ARPG scope.
| Value |
Description |
Normal |
Default attack type. The matrix lookup against any armor type returns 1.0 (no multiplier) when the matrix is flat. Use as the catch-all when your game doesn’t care about unit-counter mechanics. |
VtDamageChannel
The class / source channel of a hit — i.e. how it was delivered from the character-fantasy point of view. Hardwired and stable: the pipeline, gear procs, tooltips, and animation systems all key off these three values.
| Value |
Description |
Melee |
Touch-range weapon strikes — swords, daggers, fists, staves, hammers. |
Ranged |
Projectile / thrown weapons — bows, guns, throwing knives, javelins. |
Magic |
Casted spells — bolts, novas, missiles, channels, curses. |
VtTargetingMode
How an VtAbilityDefinition picks its target.
| Value |
Description |
Self |
No target — the ability affects the caster directly. |
SingleTarget |
A single IVtAttackable. Most melee / single-shot ranged abilities. |
GroundPoint |
A world-space point. Ground-targeted AoE (meteor strike, blizzard, healing circle). |
VtResourceKind
The kind of a resource pool on a unit, such as health, mana, stamina or rage. A unit definition lists the pools it has; read one with VtUnitStats.GetPool.
| Value |
Description |
HP |
Health. The unit dies when it reaches 0. |
MP |
Mana, spent by spells. |
Stamina |
Stamina, spent by physical actions such as sprinting or dodging. |
Rage |
Rage, built by dealing and taking damage rather than regenerating. |
Focus |
Focus, a small fast-refilling pool for ranged or precise actions. |
Energy |
Energy, a fixed-size pool that refills quickly. |
ComboPoints |
Combo points, built by some abilities and spent by finishers. |
Charges |
Charges, discrete uses that refill one at a time. |
Hunger |
Food pool: decreases over time, damages HP when empty. |
Thirst |
Water pool: decreases over time, damages HP when empty. |
Shield |
Secondary HP layer — sci-fi / mage-barrier style. Regenerates out of combat (per the configured VtRegenMode); takes damage before HP only when consumer code wires that interception (typically via an VtUnitStats.OnPreTakeDamage hook). Pair with stat.max_shield / stat.shield_regen. |
VtCastDamageReaction
What damage taken by the caster does to an ability while it is being cast or channeled. Set per ability on VtAbilityDefinition.damageReaction. Stuns, silences, move orders and VtUnitAbilities.InterruptCast always interrupt, whatever this says.
| Value |
Description |
Interrupt |
The cast or channel stops and its resource cost is refunded. |
Pushback |
A hit adds VtCombatConstants.CastPushbackSeconds to the cast bar, never past the full cast time, or removes VtCombatConstants.ChannelPushbackFraction of the full channel duration. At most VtCombatConstants.MaxPushbacks hits push back one cast or one channel. A channel pushed to zero ends as if it had completed. |
Ignore |
Damage does not affect the cast or channel. |