MEGABOTS

Megabots — Combat Formulas

Concrete formulas for the calculations defined in combat-flow.md.

Numbers marked [tunable] are proposals to balance later; entries marked [decision]

are interpretations of ambiguous notes — veto and they get reworked.

Model shape (locked in):

Stat Ranges (tier D → S) [tunable]

StatRangeNotes
Chassis health80–150
Chassis durability4–20air sits at the floor (4 at tier D)
Part durability (head/arms/legs)2–10resists part-disable, feeds bot durability
Part attack power10–50sits next to move atk 10–30 (tier D)
Chassis weight20–60
Part weight10–40
Chassis max weight100–200
Charges5–20from notes
Move atk10–30 (D) … up to ~80 (S)
Move CC atk2–20from notes

Derived Bot Stats

botWeight     = chassisWeight + Σ partWeights            (must be ≤ chassis maxWeight)
                — draconic resonance: if head, arms, AND legs are all draconic,
                  each draconic part's weight counts at ×0.75   [tunable]
                — avian chassis: −4                              [tunable]
botDurability = chassisDurability + mean(partDurabilities)        [decision: durability
                                                          attribute aggregates chassis + parts,
                                                          like weight does]
                + 2 if bipedal chassis
mobility      = legsMobility − waterCCStacks              (floor 0; at 0 the bot
                − SAT_MOB × saturatedElements               cannot change zones)
saturatedElements = how many elements are stacked to STACK_CAP (see [C6])

With these ranges: botWeight ≈ 50–180, botDurability ≈ 7–30.

Core resonance law (assembly legality — adopted round 29)

Every megabot must carry **at least one attached part whose element matches

its core element**. An assembly with no core-matching part is illegal (same

tier as the max-weight and cobra locks). Because commons inherit their part's

element, this guarantees every legal bot has at least one STAB move — full

damage (no ×0.88 off-element penalty) and elemental CC access. Adopting this

removed Foolsfire (fire core, all-electric parts) from the roster.

Chassis-type bonuses [tunable]

Each chassis type contributes one assembly-time identity bonus:

Chassis typeBonus
Avian−4 botWeight (lightest frames; counts for priority and max-weight checks)
Bipedal+2 botDurability (most durable stance)
Quadruped+10 elemental CC application chance (C6) on its attacks
Lizard+10 active-effect trigger chances (C7) on its attacks

The lizard bonus is why cobra locks to lizard chassis — it feeds the held/ensnare

game directly.

Mono-family set bonuses [tunable]

Requires all three part slots filled with the same family (cobra exempt — its

lock is inherent; rule tightened in sim round 5 so slot-stripped duos don't qualify):

FamilySet bonus
DraconicResonance — each part's weight counts at ×0.75 (existing rule)
FelixPredator Flow — +5 priority every turn
CanidPack Bond — +3 to all effect affinities (held/part-disable/trip)
RaptorApex Frenzy — +3 attack power on all parts
Cobra(inherent — the cobra lock IS its set: buffed breath, hex + ensnare exclusivity)

Family × chassis-type pairings [tunable]

Cross-synergies for mixed builds — each needs 2+ parts of the family on that

chassis type, and each is a niche counter-tool rather than raw power:

PairingNameBonusCounters
Felix + avianSkystalker+10 trip chanceheavy low-priority builds (trip = damage + held)
Draconic + quadrupedWyrmmountCQ breath debuff softened to ×0.85 (was "removed"; nerfed round 19, doc synced round 27)CQ brawlers who close to shut breath down
Canid + bipedalWrestler's Stance+10 held on grapple moveskiters (held cancels their zone change)
Raptor + lizardAmbusher+10 part-disable chancecombo/synergy builds (disabled part = broken chain)
Canid + quadrupedPackcallerhex moves +10 CC application chance (stacks with quadruped's inherent +10)makes the CC/hex controller viable OUTSIDE cobra

The Packcaller pairing exists so the hex syncro isn't cobra-exclusive: e.g.

Terrafang head + Terrahound legs + Boulderpaw arms on Terrahulk (all earth, all

canid, quadruped) = mono-canid set + quadruped C6 bonus + Packcaller — a legitimate

second CC-controller lineage with a completely different silhouette (tanky, slow,

grapple-backed) from the light serpent.

Mono-family sets reward commitment; pairings reward reading the matchup and mixing

against it. A build can hold at most one set bonus OR benefit from pairings — a

full mono set on its paired chassis type gets both (e.g. all-draconic on quadruped).

[C1] Move Availability (boolean, per move, at selection)

A move is enabled iff ALL of:

1. its part is not disabled
2. no active effect blocks it
     - "held" blocks any direction option requiring a zone change
3. charges ≥ estimatedCost(move)      (base cost + attacker effect modifiers, see C8)
4. at least one direction option is valid:
     - direction allowed by move type   (grapple cannot retreat;
                                          per-move restrictions e.g. Charge Headbutt)
     - hold (no zone change) is always a direction option for a move usable in
       the current zone — beam explicitly may attack without a zone change
     - mobility ≥ zones the option requires
     - zone gate satisfied for the zone the attack fires FROM (per C4 ordering):
         CQ:    grapple/cut/strike ok, breath debuffed (see C5),
                beam NOT usable (adopted round 28 — no point-blank beam; a
                cornered beam bot must retreat-fire, which fires from Mid),
                ensnare NOT usable (mid/long only — an advance landing in CQ
                is invalid, so ensnare can only advance from long range)
         Mid:   grapple/cut/strike require mobility ≥ 2; ensnare ok
         Long:  grapple/cut/strike require mobility = 3 AND only strike may
                fire from Long — cut, grapple and breath are NOT usable at
                Long (adopted round 28: weapon-envelope walls; advance
                options that fire from Mid remain legal)
         Hex:   usable from ANY zone, no mobility gate, no zone penalties
                [decision — its cost is the tempo loss, not positioning]

Glitch (electric CC) resolves here: if the attacker has electric CC, roll

GLITCH_CHANCE = 35 × electricStacks, capped 90 [tunable] after selection confirm; on success the

selected move is replaced by a random *enabled* move `[decision: glitch resolves at

selection time, not during resolution]`.

If nothing is enabled → Struggle (10 atk, no element, no CC, 0 charges).

[C2] Priority (once per turn)

priority = 100                                   [tunable base]
         − botWeight / 2                         [tunable divisor]
         + mobilityBonus                          mobility 3: +15   [tunable]
                                                  mobility 1–2: 0   (per notes, only
                                                  mobility 3 grants priority)
         + moveModifiers                          e.g. +20 Hot Scratch retreating,
                                                  +10 Charge Headbutt advancing
         + BEAM_LR_BONUS (+10) if beam fired from long range   [tunable]
         + max(0, 10 − weightGap) if attacker core holds a priority-kind matchup
              edge over defender core; weightGap = how much lighter the defender
              is (see Type Matchups)
         + activeEffectModifiers
         − SAT_PRIO (18) × saturatedElements     [tunable] saturation penalty, see [C6]

Range check: weight 50–180 → base term 10–75; move bonuses (+2/+10/+20) are meaningful

but don't dominate. Higher acts first; tie → random roll.

Saturation is the counterplay to fixed turn order (round 42). Before it, priority

was almost entirely a property of the *chassis you built*: two bots kept the same gap

for the whole fight, so whoever won the first roll won every roll, and CC bought

nothing but chip damage. A saturated element costs 18 priority — larger than most

build-vs-build gaps — and because it also costs a point of mobility it can knock a

frame off the mobility-3 tier for another 15. Saturating a light, fast opponent

therefore swings 33 points and reliably flips the order. That is deliberate: driving

a stack to the cap is expensive and slow, and it should buy the tempo, not just the

burn ticks.

[C3] Premove (per bot, immediately before resolving)

Step 1 — NOT POSSIBLE check (no rolls):

NOT POSSIBLE if: part disabled ∨ move blocked by active effect ∨ charges < cost
(re-checked here because the first mover may have changed the situation)

Combo chains (adopted round 40): combo fatigue now allows **up to 2

consecutive fired payoffs** before the lock (was 1) — e.g. Flashburn's

lance → jab ×1.5 → slash S2 ×1.75 line is legal; the third consecutive

payoff is fatigue-blocked. The no-repeat guardrail (same registry move

can't prime itself) still applies, so chains need distinct moves each

priming the next — sim impact was minimal (apex 62.8, TTK/FM unchanged)

because only deliberately-built lines can ride it.

Combo reliability (adopted round 39): a PRIMED move (its synergy keys

matched) gets +5 hit, multiplied ×1.5 for the second mover — the

counter-combo: reading the first mover's opening rewards anticipation and

deliberately trims first-mover advantage (target ~51-52%, revised from

53-55). Primed moves also punch through guards: deflect chance against

them is reduced 35%. Adopted after live duels showed primed S2 payoffs

whiffing/deflecting after the setup turn was already spent.

Pacing (retuned round 39): DMG_SCALE 0.75 → 0.58 — skilled TTK ~6,

beginner ~7-9. Per-turn DoT ticks were rescaled with it (burn 4→3, sap

self-heal halved to 50%) because fixed ticks outgrow a lower damage scale.

Step 2 — hit roll (d100 vs hitChance):

hitChance = 90                                   [tunable base — set for medium
                                                  variance, see balance-targets.md]
          − 3 × defenderMobility                 [tunable] generic dodge
          − 15 if the ATTACKER is held           ("swinging while restrained")
          − 5 per voluntary empty part slot      ("unstable frame"; cobra exempt)
          − zonePenalty:
              breath from long range:  10 × defenderMobility    (opp mobility/10 → pct points)
              beam   from long range:   5 × defenderMobility    [tunable] "slight"
              otherwise: 0
          − 12 × defenderMobility if defender is OVERCLOCKED         [tunable ×12 — adopted
                                                                 round 33, see Hex Overclock]
          − 10 if defender is FADING                             [tunable — adopted round 36:
                                                                 a landed strike on a DOUBLE
                                                                 retreat grants one round of
                                                                 hit-and-fade evasion]
          + effectHitModifiers (both bots)
clamped to [5, 100]

Step 3 — deflect roll (only if hit; d100 vs deflectChance):

deflectChance = defenderBotDurability × 1.0      [tunable] durability points as pct
clamped to [0, 40]

Outcome: fail step 2 → MISS; pass 2 + pass 3 → DEFLECTED; pass 2 + fail 3 → HIT.

[decision: two sequential rolls, not one combined table]

Synergies (combo layer)

Synergies are PART-LEVEL GRANTS (round 17): moves live in a shared registry

(part-types/moves/tier-d.yaml) as pure stat blocks — commons inherit the

carrying part's element — and a part's synergies: map binds combos onto the

moves it carries. The same common move carries different combos on different

parts ("pseudo-signatures").

Each bot tracks its own last move: {type, element, slot, family, landed?, ccApplied?}.

A move's synergy triggers iff the bot's previous turn's move matched the trigger

AND landed (HIT or DEFLECTED) — next turn only; a miss, NOT POSSIBLE, inspect, or

Struggle breaks the chain.

Trigger keys (a move's synergy names one or two — round 16 combo web):

Tiered ("perfect combo"): matching ANY key fires the base payoff; matching ALL

keys of a multi-key trigger upgrades it — damage ×1.5→×1.75 (repriced round 24:

single-move dual-match makes tier-2 near-default for lance kits), additive payoffs

+10 (e.g. +15 held→+25). [tunable]

Payoffs [tunable] — a synergy pays out in exactly one of the three resolution

currencies:

(e.g. a breath's CC application buffed after another elemental move)

(e.g. a grapple's held roll buffed after any ice move)

application, the hex's effectiveCCAtk is ×2 (C6)

Guardrails [decision]:

trigger a synergy (payoffs are a rhythm, not a steady state; added in sim round 5

to break perma-uptime mono-element chains)

move id (round 24: two parts carrying the same common count as the same move;

instance-identity keying had let same-name copies chain)

(no strike-after-strike on legs) — synergies should reward sequencing ACROSS

parts/types, not alternating two spammable moves

Type Matchups

Sixteen directed advantage edges — every element holds an edge over 2 others, suffers

2, and is neutral into 3. Each edge has a kind that determines which currency the

advantage pays in [tunable kinds]:

Attacker elementAdvantage overKind
fireplantdamage
firemetaldamage ("melts" — round 19 swap: replaced fire>ice; fire is the designated anti-tank/anti-apex tech, and ice — the weakest lineage — loses a predator. Metal now suffers 3 edges (water/air/fire), ice suffers 1 (metal): deliberate asymmetry.)
waterfiredamage
watermetalelemental CC ("rust")
plantwaterelemental CC ("absorption")
plantearthdamage
earthfiredamage
earthelectricelemental CC ("grounding")
iceplantelemental CC ("frost sticks")
iceairpriority
electricwaterdamage
electricairpriority
airearthdamage ("wind scours stone" — retyped from priority in sim round 14: priority was worthless currency against slow heavy earth; the edge never functioned)
~~air~~~~metal~~REMOVED round 20 — metal was over-preyed (water rust + air corrosion + fire melt + off-balance); metal now carries the standard 2-predator budget (water, fire)
metalicedamage
metalelectricelemental CC ("caging")

Keying + STAB:

STAB (move element == attacker core):

- with STAB: full effect

- without STAB: half the damage effect; CC edges are moot (elemental CC already

requires core match)

in C2 regardless of the move selected)

Magnitudes [tunable]:

KindAttacking with the edgeAttacking into your counter
damage×1.33 (×1.15 without STAB)×0.75 (×0.87 without STAB)
elemental CC+15 to C6 chance−15 to C6 chance
prioritymax(0, 10 − weightGap) in C2, where weightGap = how much LIGHTER the defender's botWeight is (0 if defender is heavier)— (no reverse penalty)

Priority edges represent raw speed — so they can be engineered away: a dedicated

light build closes the gap point-for-point (e.g. a min-weight air kiter evens out

an electric core's edge). Side effect to watch: ice>air is a priority edge and air

is usually lighter, so that edge mostly matters against mid-weight air builds.

[C5] Damage

rawAtk = moveAtk + partAtk + flatBuffs (move/part secondary effects)

modifiers (multiplicative, in order):
  × 0.88   if part element ≠ core element          (the 12% mismatch debuff)
  × (1 − 0.25 × iceStacks)  if attacker has ice CC [tunable] "lowers atk of all parts"
  × 1.20   if strike with no zone change this turn — keyed on INTENT (hold
           direction); attack-then-move retreats count as moving [tunable]
  × 1.50   if the move's synergy trigger matched   [tunable] (see Synergies)
  × 1.33 / × 0.75  damage-kind type matchup, full with STAB, halved without
                   (see Type Matchups)
  × 0.70   if breath fired from CQ                 [decision: the CQ 30% breath debuff
                                                    is a damage debuff, not accuracy]

damage = rawAtk × (1 − defenderBotDurability / 100)     (durability 7–30 → 7–30% mitigation)
       × 0.75 GLOBAL_SCALE  [sim-tuned round 13 for the pace mandate: expert ≤5
                             turns, regular ~5; was 0.5]
       × 1.25 if defender is HELD  ("vulnerable while restrained")
       × 0.5 if DEFLECTED
       → round, floor at 1

Ensnare moves carry low atk values by design (≈5–15 at tier D [tunable]) — their

payoff is the held roll in C7, not damage.

Hex moves skip C5 entirely (atk 0, no damage, no KO check) — their payoff is C6.

Hexes also do not roll C7 active effects (pure CC projection, no contact —

round 16 audit fix: ranged hexes were applying 2-turn binds from Long, inverting

"no artillery in a bear hug").

[C6] Elemental CC Chance

ccChance = 0  if move element ≠ attacker core element   (hard rule from notes)
           or move has no element (Struggle)
           or is beam or ensnare (no elemental CC)

otherwise:
ccChance = typeBase + 2 × effectiveCCAtk − defenderBotDurability
           ± 15 for a CC-kind type matchup edge (see Type Matchups)
           + 10 if the attacker's chassis is quadruped (chassis-type bonus)
  typeBase [tunable]:  hex 60 · breath 25 · cut 20 · grapple 12 · strike 12 · beam —
    (grapple/strike raised 5→12 in sim round 5: contact elements must transfer,
     or the wrestler element→grapple loop never comes online)
    (hex 60 targets a 75–85% net application — near-sure; counterplay is deflect,
     the stack cap, and core mismatch, not the roll)
  effectiveCCAtk = move ccAtk + direction bonuses (e.g. Squirt Gun +10 retreating)
                   + synergy cc_atk bonuses; ×2 for a hex following the bot's own
                     successful CC application (hex standard synergy)
clamped to [0, 90]
× 0.5 if DEFLECTED

Worked example: Metallic Shriek (breath, ccAtk 10, +5 advancing) vs botDurability 10,

metal core match: 25 + 2×15 − 10 = 45%.

Elemental CC magnitudes on application [tunable]

Elemental CC stacks — each successful application adds a stack, and magnitudes below

are per stack (cap 3 stacks per element [tunable]). All CC is cleared when the

battle ends (alongside charge recharge).

ElementEffect per stack
Earth+8 botWeight ("encrust" — caked in stone: priority drops, grapple weight-comparisons and priority-edge weightGap shift); crack: strikes vs the encrusted target chip +5/stack bonus damage [tunable]; stagger: +8/stack held chance against it and its OWN attacks lose 4/stack hit [tunable] — all adopted round 37 (encrust had been the weakest CC payoff; the whole earth class sat 41.7% avg)
Fire−7 botDurability ("melts armor" — this is what deletes metal cores); burn: 4 HP/stack at end of turn, pure damage, no drain [tunable] — adopted round 34; sear (round 38): fire moves vs a HELD target deal +50% from CQ (any fire move) or from LONG (fire beam only) [tunable] — grill the pinned. Rejected r38: +CC-chance vs held (inert — land-rate isn't fire's bottleneck) and heat-beam CC (declined: beams stay CC-inert)
Water−1 mobility; +1 charge cost per 2 stacks ("waterlogged actuators"); undertow: 4 dmg/stack whenever the stacked bot changes zones (drowning the runner)
Electric+35 glitch chance: random-move swap at selection (see C1); scramble (round 37b): electric CC applied from a RETREATING cast also scrambles the target's servos — its attacks lose 6 × stacks hit for one round [tunable] (cast-and-fade tech: rewards the retreat-hex/hiss game of the glass electric books)
Metal+20 to part-disable chances against this bot (C7)
Plant+10 to spontaneous-grapple chance against this bot (C7); bind: any held applied to a plant-stacked target lasts 2 turns instead of 1; sap: 2 HP/stack drained at end of each turn, healed to the opponent ([tunable] — 1 at the old slow pace, re-raised to 2 for round-13 pace); coil-sap: sap doubles while the target is held ("the coils tighten"); root-rip: a landed plant move made with an actual zone change triggers an immediate extra sap tick
Ice−25% atk on all parts (C5); −4 botDurability ("brittleness") — front-loaded per stack: at 5-turn pace, defense-per-stack is ice's value
Air+10 to trip chance against this bot (C7)

(Magnitudes raised after sim round 2 — stacks weren't converting to wins.)

Saturation (round 42) [tunable]

An element sitting at the 3-stack cap makes the bot saturated in that element.

Saturation is counted per element, so a bot burning *and* waterlogged to the cap is

saturated twice over. On top of every per-stack effect above, each saturated element

costs the afflicted frame:

zone tug, the firing-zone gates, and the mobility-3 priority tier

The reason: every effect in the table above scales *smoothly* per stack, so nothing

observable changed at the cap except that further applications were wasted. A player

could land a full BURNING stack and still be out-ordered by exactly the same margin

every turn, which made first-mover advantage feel like a property of the matchup

rather than something play could bend. Saturation is the threshold where CC stops

being attrition and starts taking tempo.

The battle UI marks it: a saturated condition on the status line is shouted and

flagged (BURN3!) where an unsaturated one is quiet (burn2).

[C7] Active Effect Trigger Chances

Every candidate effect gets a chance — including held from a landed grapple:

chance(effect) = moveEffectChance          (printed on the move, if any)
               + partTypeEffectChance      (family affinity of the PART PERFORMING the
                                            move — see family table below)
               + ccContribution            (metal +20/stack / plant +10 / air +10,
                                            if the defender has that CC)
               + activeEffectModifiers
               + 10 if the attacker's chassis is lizard (chassis-type bonus)
               − defenderBotDurability / 2  (durability as reducer)
               − 15 × disables the defender has ALREADY suffered this battle
                 (part-disable rolls only — anti-snowball, adopted round 40b:
                  repeat disables were shutting down sparse bots entirely;
                  disables last 2 of the victim's turns)
clamped to [0, 85]
× 0.5 if DEFLECTED

Roll every non-zero chance; if several succeed, apply only the highest-chance one.

Hex Overclock (adopted round 33)

A LANDED hex OVERCLOCKS its caster for one round: until the end of the next

turn, attacks against the caster take −12 × casterMobility hit chance

[tunable ×12]. "Fast frames redline harder" — the payoff scales with

the caster's mobility, so light controllers (the frames that die during

the stack ramp) get the most protection while heavy hex tanks get the

least. Duration uses the held convention (applied at 2, ticked at end of

turn, so it survives exactly one full opposing action window). Landing a

new hex refreshes it. The overclock requires only a HIT, not a CC application.

Sim history: round 32b/32c A/Bs — rush-denial wards and multi-effect hex

procs both failed to make light controllers viable (buffs compounded on

bulky casters instead); the mobility-scaled overclock (A/B'd as 'veil') was the only mechanism that

did (glass electric probe 20.9% → 41.6%). Adoption rebalanced Bramblemaw

and Verdanox in the same round (round 33).

Elemental Flow (adopted round 35)

Water and air have FLOW: consecutive landed moves of the element chain, and

the chain buffs the next same-element move's damage by **+FLOW% per chained

move, capped at 2 chained** [tunable: water 25%, air 20%]. From the 3rd

consecutive flow move on, the caster pays OVERFLOW HP per move

[tunable: 4] — the flow drags the frame.

Direction identity [decision]: water's current PRESSES — the chain builds

and pays only while holding or ADVANCING; air rides the SLIPSTREAM — holding

or RETREATING. A move in the off direction (or a miss, an off-element move,

venting, or struggling) resets the chain.

Kin elements (round 36c): ice does not break a WATER chain and fire does

not break an AIR chain — the chain SLEEPS through the kin move (no extend,

no buff), and it may sleep only ONCE: two kin moves in a row break it. Ice

is water asleep; fire feeds the updraft. This un-taxes water/ice slush kits

(Skipjack +4.2) without letting a chain idle forever. This keeps a non-flow option open:

retreat-kiting water (Undertow) and advance-diving air simply never interact

with flow or overflow.

Design history: round 35 — water's ceiling was the electric-ruled meta

(electric > water damage edge; water walked into x1.33 from the whole top

tier). Flow gives mono-element aggression a ramp to race the burst: Deluge

(heavy water hexer-brawler) and Zephyrax joined Railvolt in a 3-element

apex trio within 0.4 points.

Partial builds policy (round 38, user decision)

A voluntary empty slot is legal only if the roster carries a FILLED

COUNTERPART syncro (same chassis/other parts, the gap filled by an

existing part): Nullwing's counterpart is Zephyrax; Flashburn's is

Brandlance (round 38). Cobra-locked builds (Undertow, Verdanox) are

exempt — their armlessness is mandatory, not a choice.

Momentum riders (adopted round 36)

Striker-side riders from the round-36 striker-vs-distance pass:

clamp rule) deals +10% damage `[tunable — 15 at adoption, tuned down

in r36b: it leaks to raptor slashes]`. The blade rides the close.

the striker one round of −10 hit against it [tunable] — struck and

gone. Same duration convention as overclock/held (set 2, end-of-turn tick).

grants the grappler one round of −20% incoming damage and **+6 temp

durability** [tunable] (the durability bonus flows into deflect,

CC-resist, and disable rolls). Held-gated on purpose: an ungated version

fed Sparkfang's grip-primed S2 web to 65-69% — the guard must be earned

by landing the hold, which rewards +held affinity (the wrestlers) rather

than combo-poking.

Calibration note: both riders leak to cut/strike-heavy distance kits

(raptor slashes), so values above 15/10 feed the apex more than the striker

class — 25% advancing cut moved Railvolt +3.8 while strikers gained nothing

extra. At 15/10: striker-vs-distance 46.0 → 47.8, apex +1.4.

Hex riders and self-buffs

Hex moves may carry riders that trigger only when the move is used **with a zone

change**, in the chosen direction:

(e.g. +10 priority next turn if retreating, `−1 charge cost on next move

if advancing) [tunable]`

Distribution guardrails [decision]:

(so no part goes fully dead vs a mismatched core or capped stacks)

target ≈15–20% of the tier move pool, kept off draconic/raptor (damage identities)

no arms — 4 wheel moves instead of 6, much lighter, compensated by buffed breath

cc_atk and hex/ensnare exclusivity

saved) — but each VOLUNTARY empty slot costs −5 hit chance ("unstable frame",

C3); cobra's forced armlessness is exempt. Empty duos also no longer qualify

for mono-family set bonuses.

Part-family effect affinities [tunable]

Applied from the family of the part performing the move:

FamilyAffinity
Felix+5 trip
Canid+2 held, +2 part-disable, +2 trip (balanced)
Cobra+10 held
Draconicnone — its perk is draconic resonance (see Derived Bot Stats)
Raptor+5 part-disable

Candidate effects [tunable]

EffectTrigger sourceBaseOn success
Heldgrapple move hit50 [tunable] + 15 if attackerWeight > defenderWeight [tunable] + part grapple-chance bonuses + move grapple-chance bonuses (opponent durability applies via the generic −durability/2 reducer)held ("clinched"): defender cannot change zone, cannot use beam/breath/ensnare/hex (no artillery in a bear hug — melee and Struggle only), takes +25% damage, and suffers −15 hit on its own move while held; lasts 1 turn (2 vs a plant-stacked target — "bind"); constriction (round 20): a held bot takes 3 squeeze damage [tunable] at end of turn — EXCEPT metal cores, which are immune unless water-stacked ("you can't crush steel; rusted joints seize"); when held ends, defender charge costs +1 for one turn (C8)
Heldensnare move hit50 [tunable] + part grapple-chance bonuses + move grapple-chance bonusesno weight bonus at range (durability reducer applies as above)same as held from grapple
Part disablecut or beam hit20 − 2 × targetPartDurability (+20/stack if metal CC; +12 if the move is a metal cut — "metal bites machinery", round 21)random non-chassis part disabled 2 turns [decision: random part — no targeting in notes]
Tripany hit vs defender with air CC10 per air stackdamage = 5% of defender max HP + applies held
Spontaneous grappleany hit vs defender with plant CC10 per plant stackapplies held

[C8] Charge Cost

cost = tierBase                     D:1 · C:2 · B:3 · A:4 · S:5   [tunable]
     + 1 if a zone change was performed this move                 [tunable]
     + 1 if beam fired from long range                            ("kite tax")
     + 1 per 2 water CC stacks on the attacker                    ("waterlogged")
     + 1 if attacker is in the post-grapple debuff turn           ("charge usage
                                                                    debuffed slightly")
     + move/part secondary effect modifiers
floored at 1 (Struggle is the only 0-cost action)

Paid in full on HIT / DEFLECTED / MISS; nothing on NOT POSSIBLE.

Vent (action, adopted sim round 10): skip the turn to recover 3 charges at

a cost of 5 HP [tunable]. Denied while plant-stacked ("vines clog the

vents"). Ice cores vent at 0 HP ("cold cores run cool" — round 11 buff:

Rimewall +5, Snowghost +6). Breaks the synergy chain. Ice vent-denial was A/B'd

and rejected (no measurable effect).

Worked Turn Fragment

Bot A (metal core, botDurability 12, weight 110, mobility 2) uses Metallic Shriek

advancing from Mid → CQ vs Bot B (botDurability 10, mobility 1, HP 100):

mitigation ×(1 − 0.10) = 15.7516 damage

Decisions (confirmed)

1. ✔ Bot durability aggregates chassis + mean of part durabilities (like weight aggregates)

2. ✔ CQ breath "30% debuff" = damage debuff (×0.70), not accuracy

3. ✔ Glitch (electric) resolves at selection time, swapping to a random enabled move

4. ✱ REVISED — held from grapple is rolled (C7 candidates): base + weight-comparison

bonus + part/move grapple-chance bonuses, reduced by opponent durability

5. ✔ Cut/beam part-disable hits a random non-chassis part (no targeting)

6. ✱ REVISED — elemental CC stacks (cap 3 [tunable]); all CC cleared when the

battle ends

7. ✔ Two sequential premove rolls (hit, then deflect) rather than one combined table