Plasma Mortar zones

What this is

The Plasma Mortar legendary (lgd_arc_flame, energy+fire) lobs a slow arcing shell that, on impact, spawns a persistent damage patch in addition to its primary blast. That patch is a one-off bullet, not an entry in the shared flame-zone runtime. It is created inside the plasma_mortar_land behavior’s onDeath hook by pushing a new bullet into world.playerBullets with archetype plasma_fire_zone and a single behavior of the same name. The behavior’s update loop scans world.enemies directly each tick, applying damage in radius. Because it lives in the player-bullet pool, it counts against the same 100-bullet pool cap used elsewhere in the spawner and is independent of the shared zone runtime’s 16-zone FIFO cap.

How it differs from flame-zones

Flame-zones are a shared runtime owned by the effects system: Fire Trail, Thermite Charge, and the Carpet Bomber’s per-bomb echo all spawn into a single managed list with a global cap. The Plasma Mortar’s zone is a parallel code path. The differences are mechanical, not cosmetic.

AspectPlasma Mortar zone (plasma_fire_zone)Shared flame-zone runtime
Owning systemBulletBehaviors (bullet pool)effects runtime (managed zone list)
StorageOne bullet in world.playerBulletsEntry in the runtime’s active-zone array
Pool capShares the 100-bullet player pool cap16 simultaneous zones, oldest evicted FIFO
Tick rate4 Hz (interval = 1 / _zoneTickRate)4 Hz (fixed 0.25 s interval)
Target queryLinear scan of world.enemies each tickSpatial-grid bucket lookup
Damage inputPer-tick value, precomputed at spawnDPS contract, runtime multiplies by 0.25 s
Damage tag carrierEnergy (weapon’s primary damageTag)Source-dependent (fire for the three shared sources)
Destructible hitsDisabled (_canHitDestructibles: false)Runtime-controlled
Collision modepierce_allN/A (no bullet collision)
Final-burst VFX on expiryNoneShared runtime emits a final burst
Eviction triggerLifetime expiry onlyLifetime expiry or FIFO eviction by newer zone

The Plasma Mortar zone also carries the energy damageTag from the parent weapon, while shared-runtime zones inherit fire from their (currently all fire-tagged) spawners.

Damage model

The zone is spawned by plasma_mortar_land.onDeath using the impact bullet’s runtime fields. The per-tick damage is baked at spawn — the zone does not re-read weapon stats afterwards.

Field on zone bulletSource valueNotes
_zoneRadiusimpact bullet _aoeRad × 0.880% of the resolved blast radius at landing
dmgceil(impact_damage × 0.10), floor 1Per-tick damage, fixed for the zone’s life
_zoneTickRate4Ticks per second
_zoneTickTaccumulatorReset to 0 after each damage tick
Damage applicationdamageEnemy(e, b.dmg, ...) per enemy in radiusLinear scan of world.enemies
Hit gate`dist < _zoneRadius + (enemy.radius
Skip filterDead, _dying, _frozenForLag, or _spawnT > 0.15 enemies skippedActive spawn-protection respected
Telemetrytelemetry.recordWeaponHit(weaponId, dmg) on hitAttributed to lgd_arc_flame

Because dmg is precomputed at spawn, mid-life buffs to the weapon do not retroactively scale an already-spawned zone. A target standing in the patch the full lifetime takes ceil(impact_damage × 0.10) × 4 × 3 = ceil(impact_damage × 0.10) × 12 damage.

The zone also does not abort spawning if _aoeRad is zero — the plasma_mortar_land behavior returns early in that case, so no zone exists at all.

Lifetime

FieldValueNotes
l (lifetime remaining)3.0 sCounted down by the standard bullet lifetime decrement
maxLifetime3.0 sReference for any lifetime-based VFX
Total ticks if pool slot held124 Hz × 3.0 s
Eviction mid-lifeOnly via pool-cap pressureThe 100-bullet world.playerBullets push is gated by length < 100; an existing zone is not evicted by a later spawn
CleanupStandard bullet despawn at lifetime expiryNo final-burst VFX call from this behavior
Carry between runsNoneBullet pool cleared on run reset

If the player-bullet pool is already at 100 entries when the shell lands, the zone is silently not spawned (the impact explosion still resolves). The same gate also applies to the three Plasma Droplet echo bullets the same onDeath hook fires.


Summary: Documented the Plasma Mortar’s plasma_fire_zone bullet-behavior — a separate persistent-damage-patch path from the shared flame-zone runtime. Contrasted ownership, pool, tick path, tag, and eviction; specified spawn-time damage formula (ceil(impact_damage × 0.10)), 4 Hz tick rate, 80%-of-blast radius, and 3.0 s lifetime; noted the 100-bullet pool gate and absence of mid-life rescaling.