Skip to content

EMP pulse

Immobilizes objects inside a warhead-sized radius for a weapon-defined number of frames.

Features & systemsCombat & weaponsWeapons, warheads & projectiles

A projectile whose warhead carries EMEffect=yes creates a pulse at its detonation cell instead of applying blast damage. Its radius in cells is the warhead’s Spread, and its duration in game frames is the strength the projectile carries — the firing weapon’s Damage, scaled by the firer’s firepower modifiers when the shot comes from ordinary combat.

A superweapon declared Type=EMPulse needs a launch site, and it takes the one nearest the target among the buildings that satisfy all of:

That building takes the missile mission and the target becomes the house’s only pulse destination, so a second launch retargets a sequence in flight. With no eligible building the launch does nothing and the superweapon still discharges. The cursor reports the shot in range only while the player owns a powered cannon and the target lies inside that weapon’s Range.

The cannon creates the hard-coded PULSBALL animation at its firing coordinate, waits 32 frames, then fires its primary weapon; the pulse comes from that weapon’s own warhead, and EMPulseWarhead and EMPulseProjectile in [SpecialWeapons] are read into the rules and never consulted.

A UnitType with IsMobileEMP=yes gains one charge point per frame while it is not immobilized, from StartCharge up to MaxCharge; the deploy cursor is refused below full charge. Deploying detonates a projectile of the hard-coded weapon MobileEMPulseWeapon at the vehicle’s own position and resets the charge to zero.

The Do Explosion At trigger action applies its weapon’s ordinary blast damage, then creates a pulse from that warhead’s Spread and that weapon’s Damage when the weapon’s ID matches the hard-coded name empulseweapon in any letter case. No source is recorded.

The pulse applies itself once, at creation; it never grows and never re-scans, so an object entering the circle afterwards is unaffected.

Aircraft are handled first, in a pass of their own. That pass takes an aircraft under all of:

  • it is placed down on the map and out of limbo;
  • its strength is above zero;
  • it is less than one height level above the ground;
  • the distance from its center to the center of the pulse’s cell is under Spread cells.

Such an aircraft springs the Paralyzed event on its tag and is then put through the crash path, which acts only above zero height. The two heights are a window rather than a contradiction. An aircraft between the ground and one height level — one taking off, or settling onto a pad — springs the event and then crashes, which zeroes its strength, credits the kill to the firer, and kills its cargo. An aircraft at exactly zero height springs the event and the crash path returns having done nothing, but it is standing in its cell like any ground object, so the cell sweep below reaches it a second time and stuns it there.

An aircraft a full height level or more above the ground is reached by nothing at all. The aircraft pass has already excluded it, and the cell sweep below cannot see it either: an aircraft off the deck is drawn in the top layer and is entered in no cell’s occupancy. A pulse under a flight of aircraft leaves them flying.

Anything actually tunneling inside the radius — a tunnel-locomotor object is only underground while it is burrowing, and stands in its cell like anything else at either end of the trip — is stunned next. The pulse’s three range tests are not one test: the aircraft pass above measures a distance, while this pass and the cell sweep after it compare whole-cell offsets, and those two part at the boundary. The underground pass takes a cell strictly inside the radius; the cell sweep takes one at exactly Spread cells as well, so it reaches a ring the underground pass leaves alone. That sweep covers every valid cell it takes:

  • Buildings register only on the cell holding their center. An InvisibleInGame=yes building is skipped, a limpet mine is destroyed outright with the firer credited, and a building whose type is IsCoreDefender=yes springs its trigger without being stunned. Every other building is powered off, stunned, and — when its type is one of the deployed-vehicle kinds, the eight marks that make a structure the deployed form of a vehicle — given an EMPulseSparkles animation.
  • Ground objects in a cell that holds no building are stunned while all of:
    • Any of:
      • All of: it is a vehicle or an aircraft, it carries a locomotor, its type is not IsCoreDefender=yes — a term the engine reaches through a vehicle alone, so an aircraft never consults it — and it is not the object that fired the pulse;
      • it is an infantryman whose type is a cyborg;
    • it is not a large or small visceroid.

A core-defender vehicle still springs the paralyzed event, which is the one thing it is given in place of the stun. A visceroid, and the vehicle or aircraft that fired the pulse, are passed over without one.

A stunned object cannot move, and cannot fire unless it is a visceroid; it uncloaks and cannot recloak without the cloak ability or cloaking cover, and deploy orders are refused except for a building that may always undeploy. A stunned building reports itself unpowered, refuses to be switched back on, drops radar coverage for the player’s house, and cannot serve as a launch site. House power output and drain are read from each building’s player-set on/off state, which a pulse never changes, so a stunned power plant keeps feeding the grid at its normal output.

The pulse is removed once its duration elapses, and its removal touches no object. Each caught object counts its own stun down and recovers on the frame it reaches zero: a building powers back on and refreshes radar coverage, a vehicle, infantryman or aircraft powers its locomotor back on, and a harvester that is not unloading returns to harvesting.

8 of 8

KeyDescriptionValueWhen omitted
DamageAnimType, ParticleType, VoxelAnimType, WeaponTypeA weapon's damage per shot, or the damage an animation, particle or voxel animation delivers through its own warhead.floating pointVaries by type
EMEffectWarheadTypeMakes the warhead's detonation create an EM pulse instead of applying blast damage.booleanno
EMPulseCannonBuildingTypeLets a BuildingType serve as the launch site of an EMPulse superweapon.booleanno
EMPulseSparklesglobal rulesThe animation attached to an object an EM pulse stuns.classnone
IsMobileEMPUnitTypeMakes a vehicle build up an EM pulse charge and discharge it where it stands when it is deployed.booleanno
MaxChargeUnitTypeThe charge a mobile EMP vehicle must reach before it may discharge.integer0
SpreadWarheadType, TiberiumA warhead's blast radius, or the frames a Tiberium type waits between spread passes.integerVaries by type
StartChargeUnitTypeThe charge a vehicle is created with, which only a mobile EMP vehicle spends.integer0