Unit

A unit object may be created in script to represent a logical unit of soldiers taking part in the battle. The unit object interface permits querying of the state of the unit - to issue orders to the unit a battle_unitcontroller object must be created to which the unit object may then be associated.

Loaded in Campaign Loaded in Campaign
Loaded in Battle Loaded in Battle
Loaded in Frontend Loaded in Frontend
Back to top

Creation

Unit objects are created from the battle_hierarchy. They appear at the bottom of this hierarchy - see the battle_hierarchy page for more information on how unit objects relate to (and are created from) armies and alliances. Alternatively, and preferably, see the section on scriptunits below for a shorthand method of unit object creation.

Back to top

Usage

Once a handle to a sound effect object is obtained, functions may be called on it to query or modify its state in the following form.

Example - Specification:

<object_name>:<function_name>(<args>)

Example - Creation and Usage:

local sfx_01 = battle_sound_effect:new()
sfx_01:load("test_sound_event")        -- calling a function on the object once created
Back to top

Scriptunits and Generated Battles

It is highly recommended for client scripts to work with script_unit objects through the interface provided by the script libraries rather than attempting to manage unit objects individually. By creating a script_unit object, a unit object is automatically created and can be accessed at <script_unit>.unit. See the script_unit documentation for more information.

Alternatively the generated_battle script framework can be used. This automatically creates script_unit objects (with associated unit objects) and negates the need to set up references to anything more granular than an army.

Back to top

Identification

unit:name()

Returns the script name for the unit, if any has been set. A script name for the unit may be set in the battle setup, either in the battle xml or on the appropriate record in the battle_set_piece_armies_units_junctions table if setting up a set-piece/quest battle. It is valid for multiple units in a given army to have the same script name.

Returns:

  1. string script name

unit:unique_ui_id()

Returns the unique ui id for the unit, which should match the name of the corresponding unit card.

Returns:

  1. number ui ud

unit:type()

Returns the unit type of the unit, from the land_units table.

Returns:

  1. string unit type

unit:army()

Returns the army object to which the unit currently belongs.

Returns:

  1. battle_army parent army

unit:alliance_index()

Returns the index number of the alliance the unit belongs to, allowing its battle_alliance to be determined or looked up from a battle_alliances object.

Returns:

  1. number alliance index

unit:army_index()

Returns the index number of the army the unit belongs to, allowing its battle_army to be determined or looked up from a battle_armies object (which itself can be determined from the value returned by unit:alliance_index).

Returns:

  1. number army index

unit:unit_class()

Returns the class of the unit, from the land_units table.

Returns:

  1. string unit class

unit:is_commanding_unit()

Returns whether this is the commanding unit of the army.

Returns:

  1. boolean is commanding

unit:is_infantry()

Returns whether this is a unit of infantry.

Returns:

  1. boolean is infantry

unit:is_pikemen()

Returns whether this is a unit of pikemen.

Returns:

  1. boolean is pikemen

unit:is_anti_cavalry_infantry()

Returns whether this is a unit of anti-cavalry infantry.

Returns:

  1. boolean is anti-cavalry infantry

unit:is_cavalry()

Returns whether the unit is cavalry.

Returns:

  1. boolean is cavalry

unit:is_lancers()

Returns whether this is a unit of lancers.

Returns:

  1. boolean is lancers

unit:is_dismounted_cavalry()

Returns whether this is a dismounted cavalry unit.

Returns:

  1. boolean is dismounted cavalry

unit:is_chariot()

Returns whether this is a chariot unit.

Returns:

  1. boolean is chariot

unit:is_camels()

Returns whether this unit fights on camels.

Returns:

  1. boolean is camels

unit:is_elephants()

Returns whether this is a unit of elephants.

Returns:

  1. boolean is elephants

unit:is_war_beasts()

Returns whether this is a unit of war beasts.

Returns:

  1. boolean is war beasts

unit:is_artillery()

Returns whether the unit is artillery.

Returns:

  1. boolean is artillery

unit:is_unlimbered_artillery()

Returns whether the unit is artillery in an unlimbered state (it can fire, but not move).

Returns:

  1. boolean is unlimbered artillery

unit:is_limbered_artillery()

Returns whether the unit is artillery in a limbered state (i.e. it can move but not fire).

Returns:

  1. boolean is limbered artillery

unit:is_fixed_artillery()

Returns whether the unit is fixed artillery. Fixed artillery can never move.

Returns:

  1. boolean is fixed artillery

unit:is_war_machine()

Returns whether the unit is a war machine.

Returns:

  1. boolean is war machine

unit:can_fly()

Returns whether the unit can fly.

Returns:

  1. boolean can fly

unit:is_currently_flying()

Returns whether the unit can fly and is currently flying.

Returns:

  1. boolean is flying

unit:has_ships()

Returns whether the unit is currently on a ship.

Returns:

  1. boolean is on a ship

unit:is_dismounted_ships()

Returns whether the unit has a ship but is not currently on it.

Returns:

  1. boolean dismounted from ship
Back to top

Location and Movement

unit:position()

Returns the centre position of the main squad of the unit.

Returns:

  1. battle_vector position

unit:ordered_position()

Returns the position to which the unit has been ordered to move to. Note that if the unit is attacking, as opposed to moving, then this will return the current position of the unit.

Returns:

  1. battle_vector ordered position

unit:can_reach_position(battle_vector position)

Returns whether the unit can reach the supplied position.

Parameters:

1

battle_vector

position

Returns:

  1. boolean can reach

unit:bearing()

Returns the current orientation of the main squad of the unit in degrees.

Returns:

  1. number orientation

unit:ordered_bearing()

Returns the orientation of the position to which the unit has been ordered in degrees.

Returns:

  1. number orientation

unit:ordered_width()

Returns the width of the position to which the unit has been ordered in metres.

Returns:

  1. number width

unit:position_of_officer()

Returns the position of the commanding officer of the unit.

Returns:

  1. battle_vector officer position

unit:is_ai_controlled()

Returns whether the supplied unit is currently under AI control.

Returns:

  1. boolean controlled by AI

unit:is_script_controlled()

Returns whether the supplied unit is currently under script control.

Returns:

  1. boolean controlled by script

unit:is_player_controlled()

Returns whether the supplied unit is currently under script control.

Returns:

  1. boolean controlled by script

unit:unit_in_range(battle_unit target unit)

Returns whether the supplied unit is in missile range of this unit.

Parameters:

1

battle_unit

target unit

Returns:

  1. boolean is in range

unit:unit_distance(battle_unit target unit)

Returns the shortest distance in metres between this unit and a supplied unit, taking into account their bounding box rather than just working out the centre-to-centre distance.

Parameters:

1

battle_unit

target unit

Returns:

  1. number shortest distance

unit:strategic_value()

Returns an arbitrary numeric indicator of this unit's current strength. Better units, or units in a better current condition, will return higher values that less capable units.

Returns:

  1. number strategic value

unit:is_moving()

Returns whether the unit is moving.

Returns:

  1. boolean is moving

unit:is_moving_fast()

Returns whether the unit is moving fast (running/charging).

Returns:

  1. boolean is moving fast

unit:slow_speed()

Returns the unit's slow/walking movement speed in m/s.

Returns:

  1. number movement speed

unit:fast_speed()

Returns the unit's fast/running movement speed in m/s.

Returns:

  1. number movement speed

unit:is_idle()

Returns whether the unit is currently idle.

Returns:

  1. boolean is idle

unit:is_leaving_battle()

Returns whether the unit is currently leaving the battlefield.

Returns:

  1. boolean is leaving battle

unit:is_valid_for_deployment()

Returns whether this unit is currently valid for deployment, that means if the unit is not in a playable state or if its being deployed by the reinforcement system

Returns:

  1. boolean is valid for deployment

unit:is_valid_target()

Returns whether this unit is currently a valid target for enemies to attack. A unit might be invalid if they are entering or leaving the battlefield, hidden, or dead.

Returns:

  1. boolean is valid target

unit:is_currently_garrisoned()

Returns whether the unit is currently garrisoned in a building.

Returns:

  1. boolean is garrisoned
Back to top

Visibility

unit:is_hidden()

Returns whether the unit is currently hidden in tall grass/trees. Note that this is a separate test from the unit being obscured from the enemy behind hills or other terrain features.

Returns:

  1. boolean is hidden

unit:is_visible_to_alliance(battle_alliance alliance)

Returns whether the unit is visible to a supplied alliance. This returns the last calculated result of the line-of-sight test that determines whether a unit is obscured from its enemy by terrain features.

Parameters:

1

battle_alliance

alliance

Returns:

  1. boolean is visible to alliance
Back to top

Combat

unit:is_under_missile_attack()

Returns whether the unit is currently taking fire.

Returns:

  1. boolean taking fire

unit:is_in_melee()

Returns whether the unit is currently in melee combat.

Returns:

  1. boolean in melee

unit:number_of_enemies_killed()

Returns the number of enemy combatants this unit has killed in this battle.

Returns:

  1. number number killed
Back to top

Unit Strength

unit:initial_number_of_men()

Returns the number of soldiers the unit started the battle with.

Returns:

  1. number initial unit size

unit:number_of_men_alive()

Returns the number of soldiers currently alive in the unit.

Returns:

  1. number current unit size

unit:unary_of_men_alive()

Returns the number of soldiers currently alive in the unit, expressed as a unary fraction of the the initial size of the unit. A returned value of 0.75 would indicate that 25% of the soldiers in the unit that started the battle have died.

Returns:

  1. number unary proportion

unit:kill_number_of_men(number soldiers to kill, [boolean hide bodies])

Kills a specified number of soldiers in the unit. The optional second argument allows their bodies to be hidden - this is useful if it's desired that the unit 'disappear'.

Parameters:

1

number

soldiers to kill

2

boolean

optional, default value=false

hide bodies

Returns:

  1. nil

unit:reduce_hitpoints_unary(number unary hitpoints, [boolean hide bodies])

Reduces hitpoints of the unit. The optional second argument allows their bodies to be hidden - this is useful if it's desired that the unit 'disappear'.

Parameters:

1

number

percentage of full hit points of unit to reduce

2

boolean

optional, default value=false

hide bodies

Returns:

  1. nil

unit:heal_hitpoints_unary(number unary hitpoints, [boolean allow resurrection])

Heals the unit to the specified unary proportion of full strength i.e. 1.0 = full strength. If the allow-resurrection flag is set then dead entities may be resurrected, otherwise the function heals where it can. The function does not work in all circumstances, healing animals + handlers are not currently supported.

Parameters:

1

number

percentage of full hit points to heal to.

2

boolean

optional, default value=true

Allow resurrection of dead entities.

Returns:

  1. nil

unit:respawn()

Respawns the unit in a supplied position on the battlefield.

Returns:

  1. nil

unit:unary_hitpoints()

Returns the hitpoint strength of all soldiers in the unit, expressed as a unary fraction of the the initial hitpoint strength of the unit. A returned value of 0.75 would indicate that the unit has lost 25% of the hitpoints it started the battle with.

Returns:

  1. number unary proportion
Back to top

Morale and Fatigue

unit:is_wavering()

Returns whether the morale of the unit is currently wavering.

Returns:

  1. boolean is wavering

unit:is_routing()

Returns whether the unit is currently routing.

Returns:

  1. boolean is routing

unit:is_invulnerable()

Returns whether the unit is currently invulnerable.

Returns:

  1. boolean is invulnerable

unit:is_rampaging()

Returns whether the unit is currently rampaging.

Returns:

  1. boolean is rampaging

unit:is_shattered()

Returns whether the unit is currently shattered (routing without possibility of return).

Returns:

  1. boolean is shattered

unit:is_crumbling()

Returns whether the unit is currently crumbling (undead's equivalent of routing).

Returns:

  1. boolean is crumbling

unit:is_unstable()

Returns whether the unit is currently daemonically unstable (daemonic equivalent of routing).

Returns:

  1. boolean is unstable

unit:is_left_flank_threatened()

Returns whether the left flank of the unit is currently threatened by the enemy.

Returns:

  1. boolean left flank threatened

unit:is_right_flank_threatened()

Returns whether the right flank of the unit is currently threatened by the enemy.

Returns:

  1. boolean left right threatened

unit:is_rear_flank_threatened()

Returns whether the rear of the unit is currently threatened by the enemy.

Returns:

  1. boolean rear threatened

unit:left_flank_threat()

Returns the battle_unit threatening this unit's left flank. If no such unit is threatening then no value is returned.

Returns:

  1. battle_unit threatening unit

unit:right_flank_threat()

Returns the battle_unit threatening this unit's right flank. If no such unit is threatening then no value is returned.

Returns:

  1. battle_unit threatening unit

unit:rear_threat()

Returns the battle_unit threatening this unit's rear. If no such unit is threatening then no value is returned.

Returns:

  1. battle_unit threatening unit

unit:current_target()

Returns the battle_unit this unit is targeting. If no unit is being targeted then no value is returned.

Returns:

  1. battle_unit target unit

unit:is_on_top_of_platform()

Returns whether the unit is currently on the top of a platform, such as a wall.

Returns:

  1. boolean is on platform

unit:is_controllable()

Returns whether the unit is currently controllable.

Returns:

  1. boolean is controllable

unit:is_deploying()

Returns whether the unit is deploying or waiting to be

Returns:

  1. boolean is deployed.

unit:is_deployed()

Returns whether the unit has been deployed

Returns:

  1. boolean is deployed.

unit:fatigue_state()

Returns the fatigue state of the unit as a string. Possible values are threshold_fresh, threshold_active, threshold_winded, threshold_tired, threshold_very_tired and threshold_exhausted.

Returns:

  1. string fatigue state
Back to top

Ammunition and Range

unit:ammo_left()

Returns the remaining ammunition count of this unit.

Returns:

  1. number current ammunition

unit:starting_ammo()

Returns the amount of ammunition the unit started the battle with.

Returns:

  1. number starting ammunition

unit:set_current_ammo_unary(number unary ammunition level)

Sets the current ammunition level of the unit to the supplied unary value. Setting a value of 0 would mean the unit would have no ammunition, whereas setting a value of 1 would mean the unit would have the amount of ammunition they started the battle with. It is permitted to set a value greater than 1, but the unit will appear to have full ammunition on the UI until its ammunition level drops back below 100%.

Parameters:

1

number

unary ammunition level

Returns:

  1. nil

unit:missile_range()

Returns the missile range of this unit in metres.

Returns:

  1. number missile range
Back to top

Special Abilities

unit:can_perform_special_ability(string special ability key )

Returns whether the unit can perform the specified special ability. Valid special abilities are defined in the unit_special_abilities database table.

Parameters:

1

string

special ability key

Returns:

  1. boolean can perform ability

unit:disable_passive_special_abilities([boolean disable])

Disables or re-enables all passive special abilities of this unit. It only affects abilities owned by the unit. Abilities specify if they are passive in the unit_special_abilities database table. Passive abilities are mostly buffs or infinite effects. This function works independently from unit:disable_special_ability so it will not re-enable abilities affected by it.

Parameters:

1

boolean

optional, default value=true

Disables or re-enables the ability (true for disabling it)

Returns:

  1. nil

unit:disable_non_passive_special_abilities([boolean disable])

Disables or re-enables all non_passive special abilities of this unit. It only affects abilities owned by the unit. Abilities specify if they are passive in the unit_special_abilitiesunit_special_abilities database table. Non-passive abilities are mostly direct damage spells or abilities. This function works independently from unit:disable_special_ability so it will not re-enable abilities affected by it.

Parameters:

1

boolean

optional, default value=true

Disables or re-enables the ability (true for disabling it)

Returns:

  1. nil

unit:disable_special_ability(string ability_key, [boolean disable])

Disables the specified special ability from this unit. It only affects the ability instance currently owned by the unit. This function works independently from unit:disable_passive_special_abilities and unit:disable_non_passive_special_abilities so it will not re-enable abilities affected by it.

Parameters:

1

string

ability_key

2

boolean

optional, default value=true

Disables or re-enables the ability (true for disabling it)

Returns:

  1. nil

unit:owned_passive_special_abilities()

Returns a lua table of passive special abilities owned by this unit. Abilities specify if they are passive in the table unit_special_abilities. Passive abilities are mostly buffs or infinite effects - they are abilities activated automatically, not by the player.

Returns:

  1. table owned abilities, Table of strings containing the key of the corresponding special abilities

unit:owned_non_passive_special_abilities()

Returns a lua table of non-passive special abilities owned by this unit. Abilities specify if they are passive in the table unit_special_abilities. Non-passive abilities are abilities activated by the player, mostly direct damage abilities and spells.

Returns:

  1. table owned abilities, Table of strings containing the key of the corresponding special abilities

unit:owned_special_abilities()

Returns all special abilities owned by an unit. Valid special abilities are defined in the special_abilities table.

Returns:

  1. table owned abilities, Table of strings containing the key of the corresponding special abilities

unit:num_special_abilities()

Returns the number of special abilities this unit has.

Returns:

  1. number number of special abilities

unit:can_use_magic()

Returns whether the unit can use any special abilities that cost magic.

Returns:

  1. boolean can use magic
Back to top

Special Ability Flags

Special Abilities are associated with special ability flags, and are activated and deactivated depending upon what special ability flags are currently active, either globally or on a particular unit. Supported special ability flags on a given unit are found in the special_ability_invalid_usage_flags table and are also listed below. Special ability flags may be activated or deactivated per-unit with unit:set_special_abilities_flags and also globally with battle:set_special_abilities_flags.

  • army_is_full
  • other_abilities_none_on_wind_up
  • other_abilities_at_least_one_on_wind_up
  • other_abilities_just_activated_after_wind_up
  • cannot_perform_missile_attack
  • cannot_find_enemies_in_intercept_range
  • enemies_in_intercept_range
  • enemies_in_intercept_range_commander_class
  • no_enemies_in_intercept_range_commander_class
  • enemies_in_intercept_range_large
  • no_enemies_in_intercept_range_large
  • climbing
  • climbing_manning_eq_on_platform
  • not_climbing_manning_eq_on_platform
  • disembarked_from_a_ship
  • embarked_on_a_ship
  • defending_a_zone
  • dismounted
  • enraged
  • engaged_in_melee
  • engaged_in_melee_anything
  • flying_currently
  • flying_unit
  • ground_unit
  • grounded
  • has_casting_ability
  • hasnt_casting_ability
  • health_above_10%
  • health_above_20%
  • health_above_25%
  • health_above_50%
  • health_above_75%
  • health_below_25%
  • health_below_50%
  • health_below_75%
  • health_above_50%_base
  • health_below_50%_base
  • mana_above_50%
  • mana_below_50%
  • mana_equal_or_above_value_15
  • mana_below_value_15
  • winning_melee_combat
  • losing_melee_combat
  • manning_equipment
  • morale_is_higher_than_broken
  • morale_is_higher_than_shattered
  • morale_is_higher_than_wavering
  • morale_is_broken_or_lower
  • morale_is_wavering_or_lower
  • morale_is_higher_than_half_of_base_morale
  • morale_is_lower_than_half_of_base_morale
  • fatigue_is_below_active
  • fatigue_is_below_winded
  • fatigue_is_below_tired
  • fatigue_is_below_very_tired
  • fatigue_is_below_exhausted
  • moving
  • not_yet_enraged
  • officer_dead
  • on_a_platform
  • not_on_a_platform
  • docked
  • not_docked
  • out_of_melee
  • out_of_melee_anything
  • phase_is_deployment
  • phase_is_the_end_phase
  • have_ammo_left
  • have_max_ammo
  • have_ammo_below_threshold
  • hp_replenish_cap_reached
  • unit_alive
  • unit_dead
  • unit_is_commander_class
  • unit_is_not_commander_class
  • ground_type_is_not_forest
  • unit_in_forest
  • unit_is_not_in_forest
  • unit_has_murderous_prowess
  • unit_is_not_pre_murderous_prowess
  • unit_does_not_have_murderous_prowess
  • unit_is_in_fort
  • unit_is_out_fort
  • unit_is_in_withdraw
  • unit_is_not_in_withdraw
  • unit_is_in_melee_breakoff
  • unit_is_not_in_melee_breakoff
  • unit_is_attacking_rear_or_flank
  • unit_is_not_attacking_rear_or_flank
  • unit_is_fearless
  • unit_is_not_fearless
  • has_realm_of_souls_tier_1
  • has_realm_of_souls_tier_2
  • has_realm_of_souls_tier_3
  • hasnt_realm_of_souls_tier_1
  • hasnt_realm_of_souls_tier_2
  • hasnt_realm_of_souls_tier_3
  • unit_is_not_construct
  • unit_is_not_single_entity
  • is_not_missile_unit
  • unit_is_not_shielded
  • unit_tier1_kills
  • unit_tier2_kills
  • unit_tier3_kills
  • cannot_find_allies_in_intercept_range
  • allies_in_intercept_range
  • commander_died_within_range
  • enemy_unit_died_within_range
  • no_enemy_unit_died_within_range
  • contempt_allies_in_intercept_range
  • no_contempt_allies_in_intercept_range
  • knight_allies_in_intercept_range
  • no_knight_allies_in_intercept_range
  • peasant_allies_in_intercept_range
  • no_peasant_allies_in_intercept_range
  • flying_over_platform
  • flying_over_invalid_location
  • unit_is_not_charging
  • unit_is_not_large
  • unit_is_large
  • friendly_battle_leader_killed_or_routed
  • friendly_battle_leader_not_killed_or_routed
  • no_harmony_yin_in_proximity
  • no_harmony_yang_in_proximity
  • unit_broken_within_range
  • enemy_unit_routing_or_broken_within_range
  • no_enemy_unit_routing_or_broken_within_range
  • is_rampaging
  • is_not_rampaging
  • living_unit
  • undead_unit
  • unit_is_not_a_lizard_unit
  • unit_is_skaven
  • unit_is_not_skaven
  • unit_is_gorger
  • unit_is_not_gorger
  • unit_is_hellforged
  • unit_is_not_hellforged
  • daemonic_unit
  • not_daemonic_unit
  • unit_is_bound_fire_daemon
  • unit_is_not_bound_fire_daemon
  • unit_is_moulder_monster
  • unit_is_nurgling
  • unit_is_not_nurgling
  • has_khorne_mark
  • hasnt_khorne_mark
  • has_nurgle_mark
  • hasnt_nurgle_mark
  • has_slaanesh_mark
  • hasnt_slaanesh_mark
  • has_tzeentch_mark
  • hasnt_tzeentch_mark

  • unit_is_expendable
  • unit_is_not_expendable
  • unit_has_contempt
  • unit_does_not_have_contempt
  • unit_in_water
  • unit_is_not_in_water
  • Not all flags will be supported by each game.

    unit:set_special_abilities_flags(string flag key, boolean enable/disable)

    Activates or deactivates a special ability usage flag on the unit. Valid flags are listed at the top of this section.

    Parameters:

    1

    string

    flag key

    2

    boolean

    enable/disable

    Returns:

    1. nil
    Back to top

    Unit Behaviours

    unit:can_use_behaviour(string behaviour)

    Returns whether the unit can use a particular behaviour this battle. Valid behaviours are currently as follows: defend, drop_siege_equipment, abandon_artillery_engines, change_formation_spacing, dismantle_artillery_piece, dismount, fire_at_will, skirmish, release_animals, unlimber, board_ship, and formed_attack.

    Parameters:

    1

    string

    behaviour

    Returns:

    1. boolean behaviour can be used

    unit:is_behaviour_active(string behaviour)

    Returns whether a particular behaviour is currently active. Valid behaviours are currently as follows: defend, drop_siege_equipment, abandon_artillery_engines, change_formation_spacing, dismantle_artillery_piece, dismount, fire_at_will, skirmish, release_animals, unlimber, board_ship, and formed_attack.

    Parameters:

    1

    string

    behaviour

    Returns:

    1. boolean behaviour is active
    Back to top

    Unit Attributes

    Unit attributes define certain intrinsic properties of a unit in battle. Attributes are generally assigned to a unit type in the game database, but may be enabled or disabled per-unit in script using the unit:set_stat_attribute function. Valid attribute keys are shown in the following list:        

    Attribute KeyDescription
    all_ranks_fireAll ranks can fire if using a weapon that only allows one rank.
    berserkThis unit will occasionally go berserk.
    cant_runThis unit cannot run - generally for limbered artillery.
    campaign_stealthThis unit is able to move around the campaign map without being seen.
    causes_fearThis unit frightens all enemy units, reducing their morale when nearby. It is also immune to fear.
    causes_terrorThe unit can cause terror, making enemies rout for a short time but without morale penalties. It is also immune to terror and fear.
    charge_defenseDefense bonus agains charges by all units.
    charge_defense_vs_largeDefense bonus agains charges by large units.
    commander_hunterThis unit is changed in various ways to make them better at killing commanders.
    disciplinedThis unit doesn't suffer morale penalty from general's death.
    encouragesThis unit provides a morale bonus to nearby allies.
    fatigue_resFatigue doesn't have as much of an effect.
    fatigue_immuneFatigue doesn't affect this unit.
    fire_while_movingThis infantry unit can fire while moving.
    formed_attackThis unit will try to stay in formation when in melee.
    guerrilla_deployCan deploy outside deployment zone (vanguard deployment).
    hide_forestCan hide in forest.
    hide_grassCan hide in grass.
    hide_scrub_and_forestCan hide in scrubland.
    hide_buildingCan hide in buildings.
    ignore_ground_move_modDoesn't get slowed down by terrain.
    striderStrider attribute.
    immune_to_psychologyThe unit is immune to psychological attacks (fear and terror).
    impetuousThe unit gains an extra morale bonus when eager.
    invincibleThe unit cannot be damaged.
    mounted_fireThe unit can fire while on a mount.
    mounted_fire_moveThe unit can fire while on a moving mount.
    mounted_fire_parthianThe unit can fire while on a moving mount in a Parthian fashion.
    rampageThis unit may rampage if put under pressure.
    resist_coldThis unit doesn't take extra casualties from cold climates in campaign.
    resist_heatThis unit doesn't take extra casualties from hot climates in campaign.
    run_amokThis unit may run amok if put under pressure.
    scare_horseThis unit scares horses.
    scare_immuneThis unit is immune to fear effects.
    snipeThe unit remains hidden while firing.
    stalkThis unit can remain hidden while moving.
    unbreakableThis unit's morale cannot be broken.
    undeadThe unit is undead (does not rout, immune to terror, receives crumble damage when morale is low).
    unspottableIf this unit is able to hide in its current location, it will not be spotted by enemies until they are very close.
    expendableA normal (non-expendable) unit's morale does not suffer from witnessing an expendable unit routing.
    constructThe unit is a statue.
    gorgerThe unit is a statue.
    hellforgedThe unit is a hellforged.
    wallbreakerThe unit can attack walls physically.
    devastating_flankerThe unit can attack walls physically.
    daemonicThe unit is daemonic.
    bound_fire_daemonThe unit is a fire bound daemon.
    flyingThe unit is flying.
    always_flyingThe unit is always flying.
    ignore_treesThe unit ignores trees.
    moulder_monsterThe unit is a moulder monster that can be targeted by Throt's abilities.
    yinCathay unit is affiliated with yin.
    yangCathay unit is affiliated with yang.
    spell_masteryThe unit has spell mastery (mastery of elemental winds).
    charge_reflectionUnit can reflect charges.
    ogre_chargeThe unit has ogre charge.
    shoot_disabledMissile attacks disabled.
    melee_disabledMelee attacks disabled.
    mark_khorneUnit has the mark of Khorne. Used for ability targeting.
    mark_nurgleUnit has the mark of Nurgle. Used for ability targeting.
    mark_slaaneshUnit has the mark of Slaanesh. Used for ability targeting.
    mark_tzeentchUnit has the mark of Tzeentch. Used for ability targeting.
    invulnerable_to_effects_allyInvulnerable to damage from an allied effect.
    invulnerable_to_effects_enemyInvulnerable to damage from allied effects.
    contemptA unit with contempt does not suffer morale penalties from witnissing nearby allies rout, unless they also have contempt.

    Not all attributes will be supported by each game.

    unit:set_stat_attribute(string attribute key, boolean enable/disable)

    Enables or disables a global attribute on the unit. Attribute keys are listed above, in the Unit Attributes section description.

    Parameters:

    1

    string

    attribute key

    2

    boolean

    enable/disable

    Returns:

    1. nil

    unit:has_attribute(string attribute key)

    Returns whether a unit currently has an attribute. Attribute keys are listed above, in the Unit Attributes section description.

    Parameters:

    1

    string

    attribute key

    Returns:

    1. boolean has attribute
    Back to top

    Sounds

    unit:trigger_sound_charge()

    Compels the unit to make a charge sound effect.

    Returns:

    1. nil

    unit:trigger_sound_taunt()

    Compels the unit to make a taunt sound effect.

    Returns:

    1. nil
    Back to top

    Miscellaneous

    unit:play_anim_for_captain(string animation key, boolean loop animation)

    Compels the unit leader to play an animation.

    Parameters:

    1

    string

    animation key

    2

    boolean

    loop animation

    Returns:

    1. nil

    unit:deploy_reinforcement(boolean enable, [number spawn zone index])

    Prevents or allows the unit to deploy as a reinforcement from a specific spawn zone if provided. If set to false, and the unit has not yet entered the battlefield, then the unit will not be able to deploy until the function is called again with an argument of true.
    Calling this command has no effect if the unit is not part of a reinforcement army.

    Parameters:

    1

    boolean

    Enable reinforcement.

    2

    number

    optional, default value=nil

    Index of spawn zone to use, if coming on as a reinforcement.

    Returns:

    1. nil

    unit:select_in_ui()

    Selects the unit in the user interface.

    Returns:

    1. nil

    unit:highlight([boolean highlight])

    Activates or deactivates a highlight on the unit.

    Parameters:

    1

    boolean

    optional, default value=true

    highlight

    Returns:

    1. nil

    unit:mark_as_ally(boolean mark as ally)

    Makes a player unit look like it is allied, rather than part of the controlled army. This is useful for specific scripted situations where it's intended to grant allied units to player control.
    Call this function with true as a single argument to mark the controlled unit as an ally, and then again supplying false to mark the unit as part of the player's army again.

    Parameters:

    1

    boolean

    mark as ally

    Returns:

    1. nil
    Last updated 7/9/2024 11:45:05 AM