Files
aetherbound-guild/docs/product/SYSTEMS_AND_BATTLE.md
T

41 KiB

Aetherbound Guild: Systems And Battle Authority

Authority: canonical gameplay state, expedition flow, formation, auto-battle, professions, skills, equipment hooks, tactical intervention, and diagnostic behavior.

Revision: design-batch-01 / 2026-08-10

Product intent is defined in GAME_PRODUCT_CONTRACT.md. Numeric economy and pacing are defined in ECONOMY_AND_BALANCE.md. Commit, interruption, defeat, and recovery semantics are defined in SAVE_AND_FAILURE_CONTRACT.md.

1. Non-Negotiable System Invariants

  1. The active company contains zero to six deployed adventurers on a fixed three-lane by two-rank Weave Grid. An expedition may carry up to two reserves.
  2. Adventurers do not freely wander away from assigned formation anchors. Movement, displacement, and slot changes are discrete and explainable.
  3. The authoritative simulation advances at fixed 0.1-second ticks. Display speed and frame rate do not alter outcomes.
  4. Normal attacks never miss through hidden random evasion. Avoidance is an explicit status, charge, block, range, or line rule.
  5. Every enemy major action is declared in preview and telegraphed in battle. Immunity and targeting exceptions are visible before commitment.
  6. The player prepares two tactical directives and may spend at most two Command charges in one encounter.
  7. The same start state, content revision, seed, and tick-stamped player commands produce the same authoritative result.
  8. Every rejected or unexecuted action has exactly one machine-readable reason.
  9. Combat power cannot grant more than 95% total damage reduction, 60% generic critical chance, 50% max-HP barrier, or permanent hard control.
  10. A normal campaign character can be Downed and gain Strain but is not permanently deleted.

2. Authoritative State Model

profile
  settings, accessibility, language, input mappings
  entitlements and platform-service cache (never gameplay authority)

campaign slot
  campaign_id, ruleset_version, difficulty
  chapter/anchor/world transformations
  guild rank, roster, learned professions, mastery
  inventory, currencies, catalog, achievements
  deterministic generation root seed

expedition
  expedition_id, chapter, route seed and revealed graph
  deployed company and reserves
  supplies, strain snapshot, unsecured cache
  current anchor, committed node, standing order

encounter transaction
  encounter_instance_id, phase, combat seed
  Weave Grid, units, stats, cooldowns, statuses, threat
  event queue, tick, directives, Command state
  outcome and idempotent reward operation IDs

presentation only
  camera, animation interpolation, particles, selected panel,
  expanded tooltip, pointer position, non-authoritative sound state

Presentation may interpolate but may never author damage, movement, targeting, reward, timing, or save state. All numeric combat calculations use integer fixed-point values at 1/100 precision and round only at the boundaries stated below.

3. Weave Grid Geometry

3.1 Slots

All standard encounters use six allied and six enemy anchors:

ALLIED                         ENEMY

R1 ---- F1   <lane 1>   EF1 ---- ER1
R2 ---- F2   <lane 2>   EF2 ---- ER2
R3 ---- F3   <lane 3>   EF3 ---- ER3

R = rear rank, F = front rank

The screen may render depth and hand-drawn motion, but these slot IDs remain authoritative. Slot adjacency is orthogonal:

  • same-rank neighboring lanes: F1-F2, F2-F3, R1-R2, R2-R3;
  • same-lane front/rear links: F1-R1, F2-R2, F3-R3;
  • diagonals are not adjacent unless a skill explicitly declares diagonal reach;
  • lane distance is abs(source_lane - target_lane);
  • rank distance is zero within a rank and one across ranks.

Large enemies may occupy two declared adjacent enemy slots. They have one unit ID, one health pool, and a primary slot for tie-breaking. A large unit must declare which occupied lanes it threatens. No content may visually occupy multiple slots while mechanically using only an undisclosed one.

3.2 Front Protection

A living, non-Downed front unit protects the rear unit in the same lane unless the protector has Broken, is displaced out of the link, or the incoming skill has bypass_front. Protection has three effects:

  1. standard melee cannot target the protected rear unit;
  2. standard ranged attacks against that rear unit receive -120 Target Score;
  3. interceptable attacks transfer 50% of post-mitigation damage to the front protector before barrier absorption; the attack preview shows this split.

The transfer percentage can be modified only by an explicit skill or item and is clamped to 0%-80%. Transfer cannot recursively trigger another intercept. If no rear unit exists, the front unit still holds the lane but gains no hidden bonus.

3.3 Displacement And Slot Changes

Movement is a transaction between slots, not free pathfinding:

  • shift: move to an empty orthogonally adjacent allied slot;
  • swap: exchange two living allied units in adjacent slots;
  • push: move target one rank away from source, then one lane away according to the skill's declared direction if rank movement is impossible;
  • pull: reverse of push;
  • invade: an enemy-only declared move into an empty allied front slot;
  • return: move an invader to its stored enemy anchor when the effect ends.

If a forced destination is occupied or outside the grid, movement fails and the target takes Stagger = 10 + 0.10 * source Physical Power before defense. Forced movement cannot chain more than once per tick. Anchored rejects forced movement but not voluntary swap. Every rejection logs ANCHORED, OCCUPIED, OUT_OF_GRID, DOWNED, ROOTED, or CAST_LOCK.

4. Encounter Lifecycle

Phase Legal player/system actions Commit boundary
Preview Inspect threats, rewards, objective, Fracture Clock, enemy slots No cost; generated preview is stable
Prepare Deploy, equip, set skills/AI priorities, select two directives Confirm creates immutable pre-battle snapshot
Countdown Three simulation seconds; inspect and pause allowed Formation changes locked
Resolve Auto actions and up to two directives Tick-stamped events journaled
Outcome locked Victory, defeat, retreat, or scripted objective result Combat state cannot be changed
Diagnose Compare predicted/actual targets, causes, contribution No reward applied by viewing/skipping
Reward review Choose reward and cache disposition Choice has one operation ID
Finalized Apply result once and return to route/recovery Encounter transaction archived

Leaving the preview never rerolls it. Leaving preparation after confirmation returns to the same immutable snapshot and requires explicit cancel to abandon the committed node. Save rules for each phase are in the save authority.

5. Unit Statistics

5.1 Primary Attributes

Every adventurer has five nonnegative integer attributes. Enemy data may define equivalent derived values directly.

Attribute Primary role Does not do
Might Physical Power, physical Guard contribution Determine profession or hidden carry weight
Finesse Tempo, critical precision, initiative Grant passive random dodge
Insight Arcane Power, status Potency Bypass visible Ward rules
Vigor Max HP, Guard, stagger resistance Create automatic regeneration
Resolve Ward, healing contribution, status Tenacity Make a unit silently control-immune

Character bases, level growth, profession modifiers, and equipment bonuses are summed before derived calculations. A primary attribute is clamped to 0-250 in the first campaign and 0-400 in Reweave. Values outside the cap are shown as overflow and do not affect combat.

5.2 Derived Statistics

For level L (1-50 first campaign; postgame cap 70), use:

PhysicalPower = WeaponPower + 2.00*Might + 0.60*Finesse
ArcanePower   = FocusPower  + 2.00*Insight + 0.60*Resolve
HealingPower  = FocusPower  + 1.30*Insight + 1.30*Resolve
MaxHP         = JobBaseHP + 12*L + 10*Vigor
Guard         = ArmorGuard + 1.25*Vigor + 0.75*Might
Ward          = ArmorWard  + 1.25*Resolve + 0.75*Insight
Potency       = Insight + 0.50*Finesse + flat_potency
Tenacity      = Resolve + 0.50*Vigor + flat_tenacity
Tempo         = clamp(JobBaseTempo * (1 + Finesse/(Finesse+250))
                      + flat_tempo, 20, 100)
Initiative    = clamp(JobBaseInitiative + 0.25*Finesse
                      + flat_initiative, 0, 95)

WeaponPower, FocusPower, ArmorGuard, and ArmorWard are generic budget terms; an item may supply more than one. Jobs define JobBaseHP in 180-420, JobBaseTempo in 25-50, and JobBaseInitiative in 0-50. Content outside these ranges needs a documented system exception and a fixed validation encounter.

Derived values are calculated at battle start and on explicit stat changes. Max HP changes preserve current HP percentage, rounded down, unless an effect states that it heals. No equipment swap is legal during Resolve.

6. Deterministic Time, Events, And Randomness

6.1 Fixed Tick

The simulation tick is exactly 100 milliseconds. Display frames sample the latest completed state. At each tick, event priorities are:

  1. lifecycle commands (pause/resume/retreat) and accepted player directives;
  2. status expiry, periodic effects, and resource drains;
  3. cast/channel completions;
  4. ready automatic actions;
  5. movement and displacement;
  6. simultaneous damage/heal/barrier application within each priority batch;
  7. Downed, objective, phase-transition, and Command-gain checks;
  8. readiness, cooldown, duration, and telegraph clocks advance.

Events at the same priority read the same pre-batch state and apply their numeric outputs together. A unit alive at the start of a simultaneous batch completes its already-scheduled event even if that batch Downs it. Ties use stable unit ID only for nonnumeric presentation order and conflicting movement; combat totals do not gain an ID-order advantage.

6.2 Seeded Random Streams

Each encounter stores a 128-bit root seed and separate labeled streams:

target_tie, critical, status_apply, reward, route_event

Adding a reward draw must not shift combat draws. Draws include stream name, event sequence, and content stable ID in the journal. There is no damage variance. Random outcomes are limited to declared critical checks, declared status application below 100%, equal-score target ties, and generated content choices. Preview shows the bounded chance or deterministic outcome.

7. Readiness, Skills, And Action Timing

Each unit has Readiness from 0-99.99. At battle start it equals Initiative. Each tick:

Readiness += Tempo * 0.1

At Readiness >= 100, AI selects one legal action. The selected action reserves its target, subtracts 100 Readiness, and begins its wind-up/cast. Any overflow is retained, capped at 50. If no action is legal, the unit waits one tick and does not spend Readiness.

Timing field Boundary
Wind-up 0.1-1.5 s; interruptible only if tagged
Cast/channel 0.5-4.0 s; major casts require telegraph contract
Recovery 0-2.0 s during which Readiness can fill but no action starts
Cooldown 0-30 s, advanced every simulation tick
Global lock At most 0.3 s and only for preventing duplicate starts

Auto AI evaluates actions in the player-authored four-row priority list, then uses the fixed basic action. Each priority row contains skill, condition, and target policy. Conditions may read only currently visible authoritative state: HP bands, barrier, status, lane, protected/exposed, ally count, enemy count, cast tag, phase, Aether, and cooldown. They may not inspect future RNG.

8. Targeting, Threat, And Aggro

8.1 Candidate Filter

An action first constructs legal candidates from its row data:

  • side: ally, enemy, self, slot, or all;
  • reach: same lane, adjacent lane, any lane, front, rear, or occupied slots;
  • protection: obey front, ranged penalty, bypass front, or interceptable;
  • state: living, Downed, damaged, cast-active, status-present, and exclusions;
  • maximum targets and deterministic area shape.

If the reserved target becomes illegal before completion, the skill follows its declared retarget, fizzle, or ground_resolve policy. This policy appears in the tooltip. A fizzle refunds 50% of cooldown and all unspent profession resource unless content explicitly declares a visible nonrefundable wager.

8.2 Threat Meter

Each unit has Threat T, initialized to the profession's BaseThreat in 0-100. It changes after effective outcomes:

damage threat  = 40 * effective_damage / target_MaxHP
support threat = 25 * (effective_heal + effective_barrier) / ally_MaxHP
control threat = 12 * effective_control_seconds

Threat gains are summed per tick, capped at +60 per tick, and decay 5 per simulation second toward BaseThreat. Overkill, overheal, and wasted barrier add zero. An effect may add taunt threat explicitly, capped at +300.

8.3 Target Score

For each legal candidate, standard hostile AI computes:

TargetScore = T
            + lane_affinity
            + state_priority
            + vulnerability_priority
            + focus_priority
            - protection_penalty

Default terms:

Term Score
Same lane +120
Adjacent lane +40
Other lane +0
Target below 30% HP, if action has finish +100
Target currently casting, if action has disrupt +120
Target has required setup tag +160
Focus Order mark +1000
Protected rear against ranged -120
Explicit untargetable/invalid removed, not a large negative

The highest score wins; exact ties use the target_tie stream. A forced target must still be legal and reachable. If a Focus target cannot be selected, the log names the filter that rejected it rather than silently choosing another.

Player-facing prediction shows the first expected target before battle and updates after formation/loadout changes.

9. Damage, Healing, Barrier, And Criticals

9.1 Damage

Skills declare Base, Coefficient, PowerSource, damage type, pierce, and tags. Calculate:

Raw = Base + Coefficient * selected_power
EffectiveDefense = clamp(relevant_defense - pierce, -75, 500)

if EffectiveDefense >= 0:
    DefenseMultiplier = 100 / (100 + EffectiveDefense)
else:
    DefenseMultiplier = 2 - 100 / (100 - EffectiveDefense)

CritChance = clamp(skill_base_crit
                   + 0.002*(source_Finesse - 0.5*target_Resolve)
                   + explicit_crit_bonus,
                   0, 0.60)

crit_roll = next_fixed_random("critical")
crit_applies = can_crit and crit_roll < CritChance
ResolvedCritMultiplier = CritMultiplier if crit_applies else 1.00

GroupProduct = clamp(outgoing_group * incoming_group * encounter_group,
                     0.10, 5.00)
MitigatedDamage = Raw * DefenseMultiplier * ResolvedCritMultiplier
                  * GroupProduct
DamageFloor = ceil(0.05 * Raw)
FinalDamage = 0 if visible_block_or_immunity else
              max(1, DamageFloor, floor(MitigatedDamage))
HPDamage = max(0, FinalDamage - barrier_absorbed)

relevant_defense is Guard for physical, Ward for arcane, and zero for true damage. True damage cannot crit and may not exceed 20% of target Max HP from a single non-boss event. Base CritMultiplier is 1.50 and is clamped to 1.00-2.25.

can_crit is false for true damage and any skill explicitly marked noncritical. The critical stream is consumed exactly once only when can_crit is true; a failed roll uses 1.00, never the configured CritMultiplier. Within each modifier group, bonuses add before the group is multiplied. Each group is clamped to 0.25-3.00, then their product is clamped to 0.10-5.00. The five-percent floor is applied after defense, critical resolution, group clamps, and rounding. A visible barrier may absorb the floored damage after it is calculated; a visible block or immunity sets FinalDamage to zero. No other reduction bypasses it.

Boundary fixture: Raw=120, EffectiveDefense=500, all three modifier groups at their 0.25 minimum, and a failed critical roll gives raw mitigation 120*(100/600)*0.10 = 2, formerly 1.67% of Raw. DamageFloor=ceil(6)=6, so FinalDamage=6 before barrier. With a successful 1.50 critical the mitigated value is 3, and the same floor still yields 6. A visible block yields zero.

9.2 Healing

RawHeal = Base + Coefficient * HealingPower
FinalHeal = floor(max(0,
    RawHeal * outgoing_heal_group * received_heal_group
            * encounter_heal_group))
EffectiveHeal = min(FinalHeal, MaxHP - current_HP)

Healing cannot crit unless a skill declares healing_crit; its chance uses the same cap and must be visible. Overheal is discarded unless an explicit effect converts it. Conversion is capped at 50% of overheal and respects the barrier cap.

9.3 Barrier And Block

Barrier absorbs damage after interception and mitigation. Generic barrier on a unit is capped at 50% Max HP. New barrier adds to the existing amount up to the cap; oldest timed barrier expires first. Barrier does not increase Threat from wasted amount.

Block is an explicit charge that negates one eligible hit after interception but before barrier. Area, true, or unblockable damage is ineligible and shown as such. A unit may hold at most three generic Block charges.

10. Status Effects And Control

10.1 Common Status Schema

Every status row declares:

stable_id, category, source_id, target_id
base_apply_chance, potency_source, resist_stat
duration, tick_interval, max_stacks
stack_rule (add/refresh/replace/independent)
dispel_tags, immunity_tags, control_group
on_apply, on_tick, on_expire, presentation events

Apply chance for a resistible status is:

ApplyChance = clamp(BaseChance + 0.005*(Potency - Tenacity), 0.10, 0.95)

guaranteed effects bypass the probability roll but not declared immunity. unresistable is reserved for encounter rules, never ordinary item procs. Stack count, duration, next tick, source, and immunity are inspectable.

10.2 Categories

Category Contract
Affliction Periodic damage or healing reduction; snapshots declared stats at application unless tagged dynamic
Impairment Non-hard debuff to Tempo, power, defense, targeting, or movement
Control Interrupt, Root, Silence, Stun, Sleep, or Fear; subject to control resistance and immunity windows
Mark Enables targeting, setup, or resource interaction; no hidden numeric payload
Boon Positive stat/rule modifier with visible duration
Barrier/Block Damage prevention governed by Section 9.3
Injury Expedition-persistent Strain only; never dispelled in battle

10.3 Hard-Control Boundary

For Stun, Sleep, and Fear:

EffectiveDuration = clamp(BaseDuration * 100/(100 + Tenacity), 0.25, 4.0)

Boss/elite data may further cap one application to 1.5/2.5 seconds, but must show that cap in preview. After hard control ends, the target gains Control Guard for 2 + EffectiveDuration seconds. During Control Guard, new hard control duration is reduced 70%; a second consecutive application grants immunity for four seconds. No unit can be unable to act for more than 50% of any rolling ten-second window.

Interrupt is not hard control: it cancels an interruptible cast and applies the cast's declared recovery. Silence blocks tagged spells but not movement, basic action, directives, or passive effects.

11. Profession Resources And Skill Loadout

Every profession uses the shared Aether meter from 0-100 for its Signature. Basic actions gain 8 Aether, techniques gain or spend their declared amount in -40 to +30, taking effective damage gains at most 10 per tick, and passive gain is capped at 5 per second. A Signature requires 100 and spends all 100 unless its row declares a partial-cost advanced rule. No Signature fires automatically without a player-visible AI condition.

An active loadout contains exactly:

  • one fixed profession trait;
  • one fixed basic action;
  • two selected techniques;
  • two selected passives;
  • one selected Signature;
  • a four-row automatic priority list plus basic fallback.

Each base profession provides one trait, one basic, three techniques, three passives, and one Signature. Each advanced profession is a branch of exactly one base and adds one trait transformation, two techniques, two passives, and one alternate Signature. Advanced loadouts choose from the combined base and branch pool; they do not gain additional slots.

This cap prevents advanced professions from being pure action-count upgrades. Every branch must exchange at least one target, timing, formation, resource, or risk rule for another; a branch consisting only of larger coefficients fails.

12. The 12 Base And 24 Advanced Profession Contract

Content names the professions. The system requires this exact topology:

12 base professions
  each base -> branch A + branch B
  total advanced professions = 24

12.1 Required Base Distribution

Across the 12 bases, primary functions must be distributed exactly:

Primary function Count Required distinct question
Hold/protect 3 Which lane or damage window deserves protection?
Pressure/finish 3 Which target or timing converts setup into defeat?
Restore/enable 3 Which ally/resource/timing preserves the plan?
Control/reposition 3 Which enemy action or slot relation must change?

Each base also declares one secondary function from a different row. No two bases may share all of: preferred rank, target policy, Aether loop, damage type, primary counter tag, and timing profile.

12.2 Branch Pair Rule

The two branches of one base must answer opposed planning goals. Allowed axes include single-lane versus cross-lane, prevention versus recovery, burst versus sustain, setup versus payoff, self-risk versus ally-risk, or fixed formation versus repositioning. Both must retain the base's recognizable trait.

For every branch pair, content supplies two fixed counterfactual encounters:

  1. one in which branch A is rationally superior;
  2. one in which branch B is rationally superior.

The losing branch must remain capable of winning with a different company; the test proves state dependence, not a hard key/lock gate.

12.3 Character Access And Advancement

  • Every recruit begins with one authored base profession.
  • Every recruit declares two additional learnable base professions; the three must include at least two primary-function groups.
  • A recruit can learn all three eventually, but has one active profession.
  • A base reaches Adept at 100 Mastery and Master at 300 Mastery.
  • Its advanced branches become learnable only after Adept, the branch's chapter transformation, and one authored mastery trial.
  • Both branches can be learned by the same recruit. Only one is active.
  • Advanced mastery is tracked per branch; it does not erase base mastery.
  • Level is character-wide. Profession mastery unlocks options, not mandatory permanent stat percentages.

The content package must distribute access so all 12 bases are available in the roster by the end of Chapter 3 and all 24 branches by the end of Chapter 8.

12.4 Respec And Switching

At the Guild, all learned profession switches, skill selections, AI priorities, and attribute-growth choices are free and reversible. Equipment is never destroyed by unequipping.

During an expedition:

  • formation, equipment, skills, and priority rows can change during Prepare;
  • active profession/advanced branch can change only at an Anchor;
  • the first one-character profession change at each Anchor is free;
  • each additional changed character before leaving that Anchor costs one Supply, disclosed before commit;
  • no respec or item swap is legal after battle confirmation.

Refunding an unlocked skill returns all spendable skill points atomically. Mastery and story unlocks cannot be refunded because they are non-spend progress records.

The economy authority Section 5.1 owns level caps, earned/spendable skill-point formulas, skill costs, growth-point awards, and one-for-one primary-attribute allocation. This document owns the resulting combat-stat calculations only; profession content cannot invent another point curve or conversion rate.

13. Equipment And Item System Hooks

Each adventurer has four equipment slots:

Slot Baseline role Boundary
Focus Primary attack/cast expression and Power budget Does not determine profession
Garb HP, Guard, Ward, and protection behavior Cannot grant more than 25% generic reduction alone
Relic Status, resource, timing, or rule interaction Must expose trigger and cooldown
Tool Route utility or narrow battle action modifier Cannot silently consume persistent resources in battle

Items may be legal in multiple slots only if the catalog row declares each budget profile. A unit cannot equip duplicate stable item IDs. Company-wide unique effects use unique_group; a second copy may be equipped for its local stats but its unique effect is visibly dormant.

The economy authority Section 4.1 owns item_budget, behavior-hook reservation, and the conversion cost from budget points to each generic stat. This document owns caps and runtime derived-stat calculation. An item row that cannot be priced by that table is invalid content rather than an implicit exception.

13.1 Behavior Hook Vocabulary

Content can change only named hooks unless this authority is revised:

before_target, after_target
before_cast, on_cast_complete, on_interrupt
before_damage, after_damage, on_critical
before_heal, after_heal, on_overheal
on_barrier_break, on_block
on_status_apply, on_status_expire
on_shift, on_forced_move, on_lane_exposed
on_aether_gain, on_signature
on_down, on_rescue
route_preview, reward_draft, secure_cache, recover, reroute

Every proc declares its condition, cooldown (minimum 0.5 s unless a fixed test proves no loop), maximum triggers per action, and whether derived effects can retrigger it. Default is derived effects cannot retrigger.

13.2 Item Comparison

Comparison shows:

  • primary and derived stat deltas;
  • changed skill timing, target candidates, status chance, and resource flow;
  • lost and gained interaction tags;
  • effect on predicted first target and lane protection;
  • chapter item-band difference, without labeling one item universally better.

The 320-row catalog, acquisition, tiers, upgrades, salvage, and the at-least-120 behavior-changing test are owned by the economy authority and content catalog.

14. Tactical Directives

14.1 Command Charges

The company starts each standard encounter with one Command charge, holds at most two, and can spend at most two total. The second is earned when the Command meter reaches 100. It starts at zero and gains from nonrepeatable tactical events:

Event Gain Per-encounter cap
Interrupt a declared major cast 20 40
Break an enemy Barrier or Block sequence 15 30
Exploit a previewed weakness/setup tag 10 30
First allied Downed event 20 20
Boss phase transition 25 50

Repeated hits from one action count once. Meter gain beyond 100 is discarded after awarding the second charge. Items may redistribute gains but cannot grant a third use.

14.2 Core Directives

The onboarding unlocks three universal directives. The player prepares exactly two before an expedition and may change them at an Anchor.

Directive Target/effect Illegal reason examples
Focus Order Mark one reachable enemy for 6 s; +1000 Target Score for actions that can legally target it; exposes its next action in event log Target dead, untargetable, no legal allied action
Brace Order One allied lane gains barrier equal to 12% of each unit's Max HP and Anchored for 4 s Lane empty, both units Downed
Shift Order Swap two orthogonally adjacent living allies; each gains 50% damage reduction for the 0.5 s transition Not adjacent, Rooted, Downed, uninterruptible cast, destination reserved

Using a directive pauses simulation during legal target selection by default. Confirm stamps it to the next tick and spends the charge atomically. Cancel spends nothing. Repeating confirm with the same action ID cannot spend twice.

Content may add directives only by exchanging targeting, timing, or risk. It may not add raw damage/healing directives that are optimal whenever charged.

14.3 Standing Orders: Bounded Automation

After the player earns Mastery for an encounter mechanic, they may configure one standing order:

visible condition -> one prepared directive -> legal target policy

Examples of legal conditions are major cast with tag begins, front lane becomes exposed, or two allies below 40% HP. The order consumes a real Command charge and produces the same log as manual use. It is active only in encounters whose relevant threat tags are mastered. First-seen enemy identities, elites, bosses, and new chapter rupture rules require manual confirmation.

The player can disable or override the order. If its condition occurs but the directive is illegal, no charge is spent and the exact reason is logged. This automates solved timing labor without choosing route, build, risk, or novel counterplay.

15. Enemy AI And Telegraph Contract

Every enemy row declares:

preferred slots and legal displacement
target candidate filter and score modifiers
basic action and major action(s)
first-major-action horizon
telegraph duration and interrupt/control response
counter tags and at least two rational responses
phase triggers and changed rules
failure contribution shown in report

15.1 Preview

Before commitment, the encounter shows:

  • exact enemy slot occupancy and any hidden arrival slots as silhouettes;
  • damage/pressure families, target rules, and bypass/intercept tags;
  • earliest possible major action in a bounded window;
  • hard-control, displacement, summon, heal, barrier, or execution capability;
  • resistances and immunities as rules, not unexplained percentages;
  • objective, retreat rule, 180-second Fracture Clock, and rewards;
  • a comparison against the current company identifying exposure, not a guaranteed win percentage.

Unknown story identity may hide name/art, but never a mechanic needed to make a fair preparation decision.

15.2 In-Battle Telegraph

  • A directive-relevant major action has at least 2.0 simulation seconds of telegraph; bosses have at least 3.0 on first use.
  • Telegraph shows caster, legal targets or area, completion tick, effect tags, and interrupt/control response.
  • At 2x/4x, the first occurrence of an unmastered major action invokes a Decision Hold: slow to 1x and maintain at least two real seconds before completion. The player may disable automatic hold only after passing its tutorial; pause and event-log inspection remain available.
  • A changed target updates the line and reason. A hidden retarget is forbidden.
  • Fake telegraphs are allowed only when the encounter preview explicitly names deception as the mechanic and supplies a readable tell.

16. Battle Speed, Pause, And Fracture Clock

Available speeds are pause, 1x, 2x, and 4x. Speed multiplies how quickly fixed ticks are presented, not cooldowns, chances, command timestamps, or rewards. The player may pause during all single-player battles, target directives while paused, inspect status/event history, and change future AI priorities only after the encounter, never while paused.

Standard battles target 35-120 simulation seconds. At 150 seconds, visible Fracture Pressure begins:

  • all damage dealt increases 25% per ten seconds;
  • all healing and new barrier strength decrease 20% per ten seconds;
  • damage increase caps at +100%; healing/barrier reduction caps at -80%.

At 180 seconds the route rupture completes and the encounter is a defeat unless its declared objective was already satisfied. The preview and battle clock state this. Content must still pass simulation without relying on the final collapse as its normal resolution.

17. Downed, Rescue, Retreat, And Victory

At zero HP, a normal adventurer becomes Downed:

  • leaves target candidacy except for rescue/execution actions;
  • no longer protects a rear slot or contributes passive company effects unless the passive explicitly declares a Downed behavior;
  • retains statuses whose rows declare persistence;
  • starts an eight-second Rescue Window.

A legal rescue returns the unit at 25% Max HP, clears hard control, grants one second untargetable recovery, and can occur once per adventurer per encounter. After the window expires the unit is Lost for encounter, not deleted. Winning with a Lost unit adds one Strain after battle.

Retreat becomes legal ten seconds after battle start unless the preview declares a shorter/longer objective-specific boundary in 5-30 seconds. It channels for three seconds, can be interrupted by a declared effect, and returns through the failure transaction appropriate to difficulty. The UI previews exact cache, Supply, and Strain consequences before channeling.

Victory occurs only when the declared objective predicate is true, such as all required enemies Downed, a channel protected, or a rescue completed. Killing unrequired summons does not silently satisfy an objective. Outcome is checked after simultaneous event application.

18. Battle Diagnosis

The result report is an explanation system, not a damage leaderboard. It stores and presents:

  1. the player's pre-battle predicted first target and exposed lane;
  2. actual first target, first major telegraph, and first plan divergence;
  3. earliest lane protection loss with cause;
  4. first preventable major hit, control, or failed command;
  5. every Downed event and its preceding five seconds of causal events;
  6. effective damage, prevention, healing, control, setup, and resource value;
  7. wasted overheal/barrier, unreachable casts, fizzles, and dormant unique effects;
  8. the top three counterfactual categories, framed as evidence rather than an auto-equip recommendation;
  9. reward and failure transaction IDs for support/debug views.

Contribution score is never used for rewards and is not collapsed into one rank. The player can compare two attempts on the same encounter seed. A training replay may apply one changed loadout/slot without rewards to validate the counterfactual.

19. Expedition Route System

19.1 Route Graph

An expedition contains four to seven nodes from these mechanical categories:

Node Decision purpose
Conflict Test formation/build against visible enemy pressure
Hazard Trade Supplies, Strain, or a loadout tag against route risk
Opportunity Choose one of multiple reward/acquisition directions
Camp Recover, reconfigure, or secure at opportunity cost
Story Authored character/world choice with declared mechanical consequence
Elite Combine at least two pressures for a higher-value secured reward
Anchor Bank cache, save route progress, transform/reveal network

At each decision, two or three reachable nodes are visible. At least one route must be viable without the newest random item. Scouting can reveal one extra node or hidden parameter but cannot be mandatory to avoid an untelegraphed counter.

19.2 Supplies

Supplies are expedition capacity and cap at nine. The economy authority Section 7 owns the exact starting amount for each difficulty. Baseline actions:

Action Supply cost Result
Recover 1 Clear one Strain from one adventurer or heal company to full at Camp/Anchor
Secure early 2 Bank current Unsecured Cache without ending expedition
Deep scout 1 Reveal one extra branch and exact reward family
Reroute 1 Return to prior fork without rerolling revealed nodes
Extra profession change 1 Change one additional active profession at an Anchor

Chapter content cannot silently change the starting amount. A visible route node, Anchor bonus, or Reweave rule may grant or consume Supplies only through its declared operation after expedition start. Supplies are never sold for premium currency and do not regenerate with real time. Unused Supplies convert to a modest end-expedition Crown bonus defined in the economy authority, so preserving them is valuable but not always dominant.

19.3 Unsecured Cache And Anchors

Encounter rewards enter the Unsecured Cache unless marked immediately secured. An Anchor atomically:

  • banks the cache into persistent inventory/currencies;
  • updates chapter route and transformation state;
  • clears the encounter journal and creates a recovery checkpoint;
  • grants the anchor's one free profession change;
  • exposes the next route choice and exact withdrawal result.

The player may voluntarily withdraw at any noncombat node. Withdrawal banks or forfeits cache according to difficulty, shown before confirm. Failure behavior is specified in the save/failure authority.

20. Guild Systems

The Guild provides persistent functions without timers:

  • roster and company assembly;
  • profession learning, mastery trials, and free respec;
  • equipment inventory, deterministic crafting, upgrades, and salvage;
  • chapter/route selection and threat archive;
  • training replays with no rewards;
  • catalog, achievements, accessibility, localization, and settings;
  • postgame Reweave laws and completion records.

Facilities unlock new actions or acquisition paths. Facility levels may not be pure percentage multipliers or require waiting in real time. A solved repetitive action may become a batch operation only after the single-item result and costs are understood.

21. Content Schemas

21.1 Profession Row

profession_id, base_or_advanced, parent_base_id
primary_function, secondary_function, preferred_rank
base_stats and growth vector
trait, basic, techniques[], passives[], signature
default priority rows and legal target policies
aether loop, counter tags, vulnerability
branch opposition statement
unlock/mastery trial and chapter placement
two counterfactual validation encounters
presentation and accessibility events

21.2 Skill Row

skill_id, owner_profession, tags
candidate filter, target score modifiers, retarget policy
Base, Coefficient, PowerSource, damage/heal/control type
windup, cast, recovery, cooldown, aether delta
status rows and proc hooks
AI condition vocabulary and telegraph
illegal/fizzle reasons
animation, VFX, SFX, caption, reduced-motion alternative
fixed validation input and expected event outputs

21.3 Enemy Row

Uses the telegraph contract in Section 15 and must add progression placement, reward family, distinct mechanic statement, two counter-responses, interaction with at least two older mechanics, and failure-report language. A palette/stat variant without a new preview-to-counter question is not an identity.

21.4 Encounter Row

encounter_id, chapter, route tags, objective
enemy identities/slots/levels, seed rules
preview fields and hidden-but-nonstrategic story fields
Fracture Clock, retreat rule, reward budget
expected battle duration and decision timestamps
normal/active/efficient/adversarial/returning profile assertions
victory, defeat, recovery, and training-replay result

22. Static Balance And Validation Gates

Before a systems implementation may claim automated verification:

  • all 12 base professions have exactly two branches;
  • all loadouts satisfy fixed slot counts;
  • all skills use declared hooks, target filters, and timing bounds;
  • all enemy major actions have preview and telegraph records;
  • no content exceeds defense, critical, barrier, control, or directive caps;
  • every item proc has a cooldown/trigger cap and recursion declaration;
  • target prediction matches first simulated target for deterministic fixtures;
  • replay hash matches for identical seed and command timeline;
  • each branch pair passes both opposed counterfactual fixtures;
  • every encounter has at least two rational response tags and one no-random- acquisition completion path;
  • standard battles resolve before 180 seconds in all five pacing profiles;
  • invalid commands return one enumerated reason and spend no resource;
  • no report recommends a specific item as a universal answer.

23. Required Fixed Test Vectors

Vector Setup Expected boundary
Front protection F2 and R2 versus standard melee R2 is not a candidate until F2 is Downed/Broken
Ranged protection Same setup versus ranged R2 remains legal with -120 score; preview shows it
Focus legality Focus marked protected rear against melee-only party No illegal forced target; reason logged
Simultaneous down Two units complete lethal actions same tick Both actions apply; both units Downed
Barrier cap Repeated barrier grants over 50% Max HP Excess discarded and reported as waste
Control chain Three stuns inside ten seconds duration reduction then immunity; action window preserved
Directive duplicate Same confirm action ID submitted twice one charge spent, one event applied
Speed parity Same commands at 1x and 4x ticks identical outcome hash
Save parity Suspend during cast and resume same next event and final hash
Proc recursion Derived damage owns same hook as source no retrigger unless row explicitly permits within cap
Long battle Objective incomplete at 150/180 s pressure escalates, then declared defeat at 180
Branch counterfactual Fixed base with branch A/B encounters each branch leads one fixture without universal dominance