Combat and deployables

Follow into
Save into

The universe is dangerous now. The combat and deployables epic is merged: a trader can drop fighters and set them to a disposition, seed a sector with mines, fire a photon missile or a mine disruptor at a neighbouring sector, attack another ship, lose that ship, and wake up in an escape pod several jumps from whoever killed them. Two identities flew all of it against the live dev server. The previous milestone made the world persist without anyone tending it. This one makes it worth being careful in.
The arithmetic
Combat in TradeWars is not diced. Two numbers decide an exchange: the count of fighters committed, and each hull's odds rating. The recovered rule, now the engine's:
- A defender is destroyed outright when the attacker commits at least its safety rating, the sum of its fighters and shields multiplied by its odds.
- A commitment short of that spends every fighter thrown and inflicts damage scaled by the ratio of the two hulls' odds, absorbed down the stack: shields first, then fighters, then the hull.
- No single attack commits more than the hull's maximum per attack, so a large assault is a sequence of waves rather than one blow.
The odds and per-attack columns were an unrecovered gap at the spec epoch, marked [U] and carried that way for four epics. They are now [C], recovered from the per-ship blocks in the gypsy documentation and corroborated value for value against the twclone SQL seed, two independent witnesses agreeing on every row. Odds are stored as fixed-point tenths so the arithmetic stays in integers and a replay cannot drift.
| Ship | Odds | Fighters | Shields | Max per attack | Strength |
|---|---|---|---|---|---|
| Scout Marauder | 2.0 | 250 | 100 | 250 | 700 |
| Corellian BattleShip | 1.6 | 10,000 | 750 | 3,000 | 17,200 |
| Imperial StarShip | 1.5 | 50,000 | 2,000 | 10,000 | 78,000 |
| StarMaster | 1.4 | 5,000 | 2,000 | 1,000 | 9,800 |
| Constellation | 1.4 | 5,000 | 750 | 2,000 | 8,050 |
| Missile Frigate | 1.3 | 5,000 | 400 | 2,000 | 7,020 |
| Corporate FlagShip | 1.2 | 20,000 | 1,500 | 6,000 | 25,800 |
| Havoc GunStar | 1.2 | 10,000 | 3,000 | 1,000 | 15,600 |
| Interdictor Cruiser | 1.2 | 100,000 | 4,000 | 15,000 | 124,800 |
| T'Khasi Orion | 1.1 | 750 | 750 | 250 | 1,650 |
| Merchant Cruiser | 1.0 | 2,500 | 400 | 750 | 2,900 |
| Tholian Sentinel | 1.0 | 2,500 | 4,000 | 800 | 6,500 |
| CargoTran | 0.8 | 400 | 1,000 | 125 | 1,120 |
| Merchant Freighter | 0.8 | 300 | 500 | 100 | 640 |
| Colonial Transport | 0.6 | 200 | 500 | 100 | 420 |
| Taurean Mule | 0.5 | 300 | 600 | 150 | 450 |
The Scout Marauder's 2.0 is the reason a cheap 250-fighter hull is worth flying: it needs half as many fighters to break a given target as a Merchant Cruiser does, and it dies to half as many. The Taurean Mule carries 150 holds at 0.5 and is a truck that should not be in the room when shooting starts. Three Ferrengi hulls and the Escape Pod also carry full rows now (the Pod rates 0.7 and commits ten fighters at a time), because the catalog has to describe every hull the world can put in front of a trader, not only the sixteen the Shipyards sell.
The sector entry sequence
Arriving somewhere is no longer free. Every warp now runs a fixed sequence at the destination, in one deterministic pass:
- Suppression check. If a photon missile detonated here recently, nothing in the sector can act, and the arrival is clean.
- Limpet attach. One foreign limpet mine attaches to the hull, silently. It is a tracking device, not a weapon.
- Armid rolls. Every foreign armid mine rolls one in two to detonate, each detonation dealing 20 points down the stack. Mines that fire are consumed. A hull that comes apart mid-sequence ends the sequence, and the remaining mines are never rolled.
- The fighter step. The sector's fighter groups resolve by disposition.
Fighters carry exactly one of three dispositions, set when they are dropped, and each behaves differently toward an arrival:
| Disposition | Behaviour on entry |
|---|---|
| Offensive | Engages at once, without asking |
| Defensive | Holds the sector, engaged only if attacked |
| Toll | Suspends the arrival and demands credits |
A toll group demands 5 credits per fighter. The mover is suspended in place under a pending challenge and cannot warp again until it is answered: attack the group, retreat to the sector just departed, or pay. Paying transfers the credits to the fighters' owner, which is the first mechanism in twarp where one trader's ledger is fed by another's routing decision. A challenge whose group has vanished in the meantime dissolves rather than stranding the ship.
Every roll in this sequence is drawn from the engine's own journaled generator, after validation, never from the operating system. That is what keeps the standing invariant true: the same journal replays to the same bytes, mine detonations and all.

Deployables
Fighters, mines and beacons are dropped and collected through four new verbs, under the recovered limits:
- FedSpace is off limits. Nothing deploys in sectors 1 through 10.
- Fighters are limited by what is aboard on the way down and by the hull's maximum on the way back up. One group per owner per sector; redeploying merges the count and adopts the new disposition.
- Armid mines are capped at 99 per sector across all owners, and armids and limpets share one carry pool.
- Beacons are furniture with a message, and cost 100 credits.
All of it shows up on a density scan before it shows up on anything else, which is what makes scanning worth a hold. The per-unit weights are the recovered ones:
| Object | Density weight |
|---|---|
| Mine (armid or limpet) | 10 |
| Fighter | 5 |
| Limpet attached to a hull | 2, plus the anomaly flag |
| Marker beacon | 1 |
A cloaked ship reads as the anomaly flag and nothing more, which closes a placeholder that has been returning false since the knowledge epic.
The Ferrengi now hold ground of their own: Ferrengal is seeded at genesis with 50 armid mines under a faction owner rather than a trader npub, so the sector renders a minefield with a name attached and no ownership line. It is the first thing in the world that shoots at people without being anybody's account.
Devices
The Stellar Hardware Emporium's shelf is no longer decorative. Prices are the ones recovered literally from the decoded v3 string table:
| Device | Price | Effect |
|---|---|---|
| Armid mine | 1,000 | Rolls to detonate on entry, 20 damage |
| Limpet mine | 10,000 | Attaches silently, marks the hull |
| Marker beacon | 100 | Leaves a message in the sector |
| Corbomite device | 1,000 | Retaliates from beyond the ship's death |
| Mine disruptor | 6,000 | Clears up to 12 armids from an adjacent sector |
| Photon missile | 40,000 | Suppresses an adjacent sector for 30 seconds |
| Cloaking device | 25,000 | Hides the ship as a density anomaly |
The disruptor clears armids only, never limpets, and never more than twelve in one firing.
The photon missile is the epic's most interesting piece of timing. It stamps a suppression window on the target sector, and for its duration the sector's mines and fighters are inert: a ship can warp straight through a defended sector and out again untouched. The window is 30 seconds of real time, which sits awkwardly beside an engine that refuses to read a clock. The resolution is the same one the maintenance anchor uses: the window is stamped from the timestamp the command carried when it was accepted, so it is data in the journal rather than a wall-clock read inside the reducer, and a replay reconstructs the same window a year later. Firing on a sector holding offensive fighters detonates the missile early, and the firer's day ends on the spot.
The corbomite device is paid for on the way out. A destroyed ship carrying corbomite deals 20 fighters of damage per unit back at the fleet that killed it, and that blowback can claim the killer, which means a kill can turn into two deaths.
The cloaking device is consumed when the cloak is engaged and nothing is refunded when it is dropped, so a cloak is a single use of a 25,000-credit item rather than a switch. A cloaked ship is untargetable and reads only as an anomaly.
One shelf item is bought and stored and still does nothing: the atomic detonator has no target until there is a planet to point it at. It waits for the next epic rather than shipping half-built.
Death and the pod
Losing a ship no longer ends anything except the ship. The pilot pods, and where the pod lands depends on who did the killing. A death by mine, or by a sector's fighters, drops the pod back in the sector the ship came from. A death at another player's hands runs a safe-path walk: the engine builds the full route tree from the site of the kill and walks outward between three and twenty hops, advancing only through sectors that are empty or hold the victim's own fighters, and drops the pod at the farthest point it can reach. The rule reads as mercy and is actually logistics, since it puts the survivor out of the killer's immediate reach without teleporting them somewhere arbitrary.

The day's allowance is two pods. A third death, or a death while flying a Scout or the pod itself, ends the trader's day: no further action until the next Extern. The experience penalties are the recovered ones, 10% for an ordinary podding and 50% for a day-ending death.
Kills move the ledger as well. A killer takes 10% of the victim's experience if the victim had at least 25 to give, and half of the victim's alignment magnitude, so killing a saint costs what killing a pirate pays. Killing Ferrengi sector fighters pays 15 experience and a point of alignment each. Razing a port pays 50 experience and costs 50 alignment, and is refused outright inside FedSpace, at Class 0 ports, and at StarDock.
The Extern takes its combat seats
The previous entry published the maintenance pass's duty roster with three rows marked "awaits combat and deployables". They are filled, and they run in a fixed order before the turn reset:
| Extern duty | Now |
|---|---|
| Major Space Lane sweep | Clears player fighters, mines and attached limpets from the lanes |
| FedSpace tow | Ships carrying 99 or more fighters inside FedSpace are towed out |
| Cloak failure rolls | 3% per engaged cloak, per night |
The sweep spares beacons and spares the faction owners, so the Ferrengi minefield survives the night even though Ferrengal sits on a lane endpoint. It also scrapes limpets off any hull that spent the night parked in a lane, which reconciles the sweep with the devices table: lanes are patrolled space, and patrolled space is cleaned.
The tow reads as comedy and works as policy. Sitting in protected space with a warfleet aboard is the oldest way to be safe while being a threat, and the Federation's answer was always to have the ship moved, not to argue about it. A towed ship is undocked, has any open negotiation cleared, and is dropped somewhere outside FedSpace with a notice on the event stream.
The sweep
The gate for a milestone here is not the suite. It is two identities flying the thing against the live dev server. The acceptance sweep, in the order it was flown:
- Deployment refused verbatim at Sol, then 10 toll fighters dropped at Ferrengal beside the Ferrengi minefield. The sector read density 1,050: 500 for the planet, 500 for the 50 mines, 50 for the 10 fighters. The weights are exact on the wire.
- A fresh trader routed around Ferrengal, entered the tolled sector, was challenged for 50 credits, tried to warp out and was refused, and paid. Both ledgers moved by exactly 50.
- Entering a mined sector twice: the first entry rolled no detonation and the mine stayed on the display, the second detonated for 20 points, taking the ship's fighters from 30 to 10 and removing the mine.
- A duel in an empty sector. One ship committed 30 fighters, the exchange read "you lose 30, the enemy loses 30. The ship is destroyed!", and the loser appeared in an Escape Pod several jumps away by the safe-path walk, with the kill notice on the event stream naming both traders and the sector. The killer's experience did not move, correctly: the victim was below the 25-point threshold, so there was nothing to take.
- A photon fired at a tolled sector, followed by a warp into it inside the window. The entry was clean, the toll group intact but suppressed. Re-entering after the window expired drew the challenge, 250 credits for 50 fighters, and paying credited the owner exactly 250.
- The cloak, watched from outside: with the cloak engaged, a scan from an adjacent sector read the target as density 100 with an anomaly flag; disengaged, the same scan read density 100 with no flag. The density value is identical either way, and the flag is the only tell. Re-engaging was refused, the single device having been consumed.
The protocol surface
The wire delta is entirely additive and the frozen v1 baseline never
moved. New journal payloads cover deployment, collection, challenge
answers, five attack and device verbs, and the cloak. One new action
verb, beacon deployment, joined the service. The reference CLI gained
deploy, collect, answer, attack, disruptor, photon, and
cloak, and the sector display now lists fighter groups, minefields
and beacons by owner. Kill notices, fighter contacts, photon launches
and tow notices render on the event stream rather than as raw payloads.
Two things are worth stating plainly rather than leaving to be discovered. The trader-listing query is still a stub, the last one on the surface. And fighter contact reports currently reach every connected client rather than only the fighters' owner, because the event hub addresses subscribers by event type and has no notion of a recipient. That is filed as a debt against the addressed-delivery machinery that corporate mail needs, and it will be paid there rather than patched here.
Next
Planets and citadels: Genesis Torpedoes, colonists and the production curve, the six citadel levels, planetary defenses, and the atomic detonator finally getting something to point at. The maintenance pass takes on three more chores, and the universe gains its first surfaces a trader can stand on.