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
- 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.
- Adventurers do not freely wander away from assigned formation anchors. Movement, displacement, and slot changes are discrete and explainable.
- The authoritative simulation advances at fixed 0.1-second ticks. Display speed and frame rate do not alter outcomes.
- Normal attacks never miss through hidden random evasion. Avoidance is an explicit status, charge, block, range, or line rule.
- Every enemy major action is declared in preview and telegraphed in battle. Immunity and targeting exceptions are visible before commitment.
- The player prepares two tactical directives and may spend at most two Command charges in one encounter.
- The same start state, content revision, seed, and tick-stamped player commands produce the same authoritative result.
- Every rejected or unexecuted action has exactly one machine-readable reason.
- Combat power cannot grant more than 95% total damage reduction, 60% generic critical chance, 50% max-HP barrier, or permanent hard control.
- 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:
- standard melee cannot target the protected rear unit;
- standard ranged attacks against that rear unit receive
-120Target Score; interceptableattacks 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:
- lifecycle commands (pause/resume/retreat) and accepted player directives;
- status expiry, periodic effects, and resource drains;
- cast/channel completions;
- ready automatic actions;
- movement and displacement;
- simultaneous damage/heal/barrier application within each priority batch;
- Downed, objective, phase-transition, and Command-gain checks;
- 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:
- one in which branch A is rationally superior;
- 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
Adeptat 100 Mastery andMasterat 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:
- the player's pre-battle predicted first target and exposed lane;
- actual first target, first major telegraph, and first plan divergence;
- earliest lane protection loss with cause;
- first preventable major hit, control, or failed command;
- every Downed event and its preceding five seconds of causal events;
- effective damage, prevention, healing, control, setup, and resource value;
- wasted overheal/barrier, unreachable casts, fizzles, and dormant unique effects;
- the top three counterfactual categories, framed as evidence rather than an auto-equip recommendation;
- 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 |