Electromagnetic Pulse (EMP)


EMP disables susceptible units and buildings along with their special functions
and makes them vulnerable to attacks. EMP can affect units and buildings in
various ways:

+ Primary effect: units will not respond to any commands. They will stop moving
  and will not attack anything.
+ Hovering units (such as the Robot Tank) will land.
+ Units display an optional sparkles animation
+ Voxel-based units are darkened (SHP-based units are not).
+ Buildings that can undeploy into vehicles (e.g. MCVs) still can, but the
  resulting vehicle will remain deactivated until the effect wears off.
+ Aircraft will immediately crash.
+ Power plants cease to produce power.
+ Factories will stop working.
+ Base defenses will not be able to fire their weapon.
+ Gap Generators will stop emitting radar gap.
+ Laser Fence Posts will stop emitting laser fences.
+ Robot Control Centers will stop working.
+ Super weapon buildings will shut down and the super weapons themselves will
  stop charging, if they have [SuperWeapon]►IsPowered=yes set.
+ Radar buildings will stop providing radar.
+ SpySat buildings will stop to reveal the map.
+ Units that spawn other units will cease to do so. If the spawner unit has
  launched any aircraft then the aircraft will immediately crash.
+ Slave Miner slaves will stop working.
+ Units that are in their unloading state (such as ore harvesters depositing ore
  or Siege Choppers transforming) will only become deactivated once they have
  finished unloading.
+ Harvesters that were in the middle of harvesting when hit by EMP will resume
  harvesting after EMP wears off.

 0.1


Defining EMP Weapons


Tiberian Sun used the weapon's Damage tag to determine how long
the EMP effect should last. Ares, however, uses two new tags to provide
greater control. The weapon's Damage will be delivered independently from
EMP, so a weapon can both damage and deactivate its target. Tiberian Sun
also used the tag EMEffect=yes, which is not used in Ares.

The following two tags are used together to determine how long (in frames) the
affected units will be affected by EMP for.

[Warhead]EMP.Duration=integer - frames
  Defaults to 0.
[Warhead]EMP.Cap=integer - frames
  Defaults to -1.

The game keeps track of how much longer each unit will remain deactivated. Each
unit essentially has a hidden EMP counter that counts down frame by frame until
it reaches zero, at which point the unit will re-activate. This counter is what
gets modified by EMP warheads.

A unit does not get affected by EMP if Verses is equal to 0%,
otherwise the target is endowed with the full effect.

 If you want a warhead to EMP a target for ten seconds, set
    EMP.Duration=150 on the warhead.


Damaging EMP


With a positive EMP.Duration the targets are going to be deactivated.

+ EMP.Cap is greater than zero.
    Makes this EMP effect stackable, but capped. The target's EMP counter is
    increased by EMP.Duration up to but not exceeding EMP.Cap. If
    the target's EMP counter is already greater than EMP.Cap (e.g. caused
    by some other EMP weapon) then it will not be reduced.

    Examples:

    + EMP counter is 0, EMP.Duration=10, EMP.Cap=20. Result: EMP
      counter will be set to 10, because the cap is not reached yet.
    + EMP counter is 15, EMP.Duration=10, EMP.Cap=20. Result: EMP
      counter will be set to 20. This weapon will not go beyond the cap.
    + EMP counter is 60, EMP.Duration=10, EMP.Cap=20. EMP counter
      will remain at 60, because it was higher than the cap already.

+ EMP.Cap=0
  Makes this EMP effect stackable, but uncapped. The target's EMP counter is
  incremented by EMP.Duration, without limit. This is Ares legacy
  behavior (before the EMP.Cap tag was added).

  Example:

  + EMP counter is 25, EMP.Duration=10. Result: EMP counter will be set
    to 35. Because there is no cap, firing this warhead will always add 10.

+ EMP.Cap=-1
  The target's EMP counter is set to this absolute number of frames specified by
  EMP.Duration, unless the target's EMP counter is already greater than
  this.

  Examples:

  + EMP counter is 5, EMP.Duration=10. Result: EMP counter will be set to
    the absolute value of 10.
  + EMP counter is 20, EMP.Duration=10. EMP counter will remain at 20,
    because it was already higher.


Healing EMP


This can be used for re-activating deactivated allied units. With a negative
EMP.Duration, the EMP counter is reduced by this number of frames.

+ EMP.Cap=-1
  The target's EMP counter is reduced by the number of frames specified by
  EMP.Duration.

  Examples:

  + EMP counter is 50, EMP.Duration=-10. Result: EMP counter will be set
    to 40.
  + EMP counter is 7, `EMP.Duration=-10`. Result: EMP counter will be set to
    zero and the unit will re-activate, because EMP effect was removed
    completely.

+ EMP.Cap is greater than zero.
  The target's EMP counter is reduced by the number of frames specified by
  EMP.Duration. If this value is still greater than EMP.Cap then
  the EMP counter is reduced further to equal EMP.Cap.

  Examples:

  + EMP counter is 50, EMP.Duration=-10, EMP.Cap=70. Result: EMP
    counter will be set to 40.
  + EMP counter is 50, EMP.Duration=-10, EMP.Cap=20. Result: EMP
    counter will be set to 20. It is reduced to the value of the cap.
  + EMP counter is 7, `EMP.Duration=-10`. Result: EMP counter will be set to
    zero and the unit will re-activate. Even without the cap the unit would
    reactivate.

+ EMP.Cap=0
  EMP.Duration does not matter because the EMP counter will be set to
  zero by the cap and the unit will re-activate immediately. This is a special
  case of the description above.


.. _empulse-immunity:

EMP Immunity


There are several ways to create units that are not affected by EMP weapons.

[TechnoType]ImmuneToEMP=boolean
  The above tag specifies whether or not the TechnoType is immune to the
  effects of EMP. The default immunity status is determined based on the
  following rules:

  + BuildingTypes: Defaults to no if Powered=yes and
    Power is negative. Defaults to no if providing one or more
    of the following special functions:

    + Radar
    + Super weapons (SuperWeapon and SuperWeapon2 only)
    + Undeploy into a vehicle (e.g. Construction Yards)
    + Powers vehicles (e.g. Robot Control Centre)
    + Gap Generator
    + Sensors
    + Laser Fence Posts

    Defaults to yes otherwise.
  + InfantryTypes: Defaults to no if Cyborg=yes, to
    yes otherwise.
  + VehicleTypes and AircraftTypes: Defaults to yes if
    Organic=yes, to no otherwise.

EMP immunity can also be granted using the new veteran/elite ability
EMPIMMUNE. Set VeteranAbilities or EliteAbilities on the
TechnoType.

EMP immunity also respects TypeImmune on the TechnoType, as well
as AffectsAllies and AffectsEnemies on the warhead.


Modifying the Effect Duration


Instead of either affecting an object fully or not at all, Ares allows
to also reduce or increase the duration of EMP for each type. A high tech tank
could thus stay deactivated longer than a normal tank, while a low tech jeep
could reactivate sooner than the tank.

[TechnoType]EMP.Modifier=float - multiplier
  If the EMP effect duration is positive it will be multiplied by this factor.
  You can create units that are more or less prone to the Electromagnetic Pulse.
  Defaults to 100%.


Destructive EMP


This setting allows objects to be destroyed by EMP rather than just being
deactivated temporarily. This is to bridge a difference between flying aircraft,
which is destroyed by EMP instantaneously, and other flying objects
like the Siege Chopper, Kirov and Yuri's Disk, which are not because they are
no AircraftTypes.

You can create units that only take a certain amount of EMP before failing
completely, as well as BalloonHover=yes or JumpJet=yes units that
either crash just like aircraft when in air, or get deactivated like ground
units and just stay alive.

[TechnoType]EMP.Threshold=enumeration - one of yes|no|inair *or* integer - frames
  Specifies whether or not an object of this type will be destroyed by EMP
  weapons. Use an integer to set the exact EMP duration this unit has to exceed
  to get destroyed.

  + Positive values will destroy the unit if the number of EMP frames exceeds
    this value. yes equals 1, meaning immediately.
  + Negative values will destroy the unit only if is currently in-air.
    inair equals -1, meaning immediately if in air.
  + A value of zero will disable this feature. no equals 0.

  Defaults to inair, destroying all units if they are in the air the
  instant the EMP hits.

   Parachuting units and units being lifted or lowered by a Magnetron
    do not count as being in air. Only exceeding their positive threshold (if
    set) will kill them.

For example, using inair causes a deployed Siege Chopper not to be
destroyed. Using -100 will crash the Siege Chopper only if it is in-air
and it accumulates an EMP duration of more than 100 frames.

 EMP; EMP weapons can destroy units.

 0.2


Sparkles Animation 


When a unit or building is under the effect of EMP, it can display an optional
animation.

[TechnoType]EMP.Sparkles=animation
  The animation played over an object of this type disabled by EMP as long as
  the effect lasts. When the effect subsides, the animation will finish playing
  and then disappear. Use none to disable the animation. Defaults to
  [General]►EMPulseSparkles.

This animation can be overridden by the warhead that initiates the EMP effect.

[Warhead]EMP.Sparkles=animation
  If set, overrides the default animation to be played on the unit or structure
  under EMP. This only applies if the object does not already have an EMP
  animation.

 The file emp_fx01.shp that comes with Yuri's Revenge
  and which is referenced by default by [General]►EMPulseSparkles is
  still in the Tiberian Sun palette and needs to be converted.

 0.A


Global Settings


[CombatDamage]EMPAIRecoverMission=mission
  The mission units controlled by the AI will go onto when an EMP effect
  expires. Defaults to Hunt.

 2.0
