Game guide · source of truth
Combat & builds

Combat & controls

Console-style ARPG controls (WASD, the 8-slot Mouse1 chain, Q E Z X C skills or buffs, Shift+Mouse1 attack in place, Mouse1 click-to-walk, tactical ↔ close camera, Mouse2 movement gem), finishers, cast phases, targeting, damage model, the AAA hit-feel stack and the hit-reaction system.

Zoen plays like a console action game that happens to be an MMO. You move with WASD, hammer Mouse1 to run your chain of attack skills, fire Q E Z X C for any skill or buff, and dash/jump on Mouse2 with your movement gem. Every binding can be remapped. Phones and gamepads get first-class layouts.

Default keyboard + mouse (hover a key)
Mouse1 → primary attack combat
Mouse1 on a monster (or with a target locked) runs the chain list: up to 8 chain slots holding attack skills only. Each press performs the next ready chain skill in slot order; a basic hit fills the gap when none is ready. A finisher in the chain fires on the next step whenever its condition is true on the target and is skipped otherwise (Aion 2 / console style). Mouse1 on empty ground (no monster under the cursor) walks there; hold to keep walking toward the cursor. Auto-Hunt uses the same list.

Gamepad

Left stickmove
Right stickaim / camera
A / Crossprimary attack
B / Circlemovement skill
X / Squareslot 1
Y / Triangleslot 2
RB / R1slot 3
RT / R2slot 4
LB / L1slot 5
LT / L2 (hold)attack in place
D-pad / LT + D-padquick slots
View + Aauto hunt
Menu / Optionsmenu
View / Sharemap
R3camera view

Mobile (landscape)

Landscape. Left: floating virtual joystick (appears where the thumb lands in the left 45% of screen). Right: large Attack button (Mouse1 chain list, hold = continuous), 5 quick skill buttons on an arc (Q E Z X C; skills or buffs), movement skill button (M2), 4 quick slots (expand to 8), Auto toggle, Target-switch and Lock buttons. Top: portrait + HP/MP, buffs, target frame, minimap, quest tracker. Bottom: EXP bar.

  • Drag right half (not on a button) to orbit camera
  • Pinch to zoom
  • Tap enemy to target
  • Drag a skill button to aim (cancel by dragging back to centre)

HUD Edit: drag every button, scale 80–130%, opacity 40–100%, left-handed mirror preset.

◆1. Inputs at a glance

InputActionNotes
W A S DMove (camera-relative, 8-dir)Stops within 0.08 s; movement while casting follows the skill's free/slowed/committed/travel policy. Committed recovery unlocks at cancelableAfterS.
Mouse1Chain list (8 slots) on a monster · walk on empty groundOn a monster (or a locked target): hold or spam to run the attack skills in chain slots 1–8 in order; a basic hit fills gaps; finishers jump in when their condition holds. On empty ground: walk there (hold to keep walking toward the cursor).
Shift + Mouse1Attack in placeNo movement and no magnet step. Also works with skills (Shift + Q). The modifier is rebindable (Shift, Ctrl, Alt or Space).
Mouse2Movement gem (always)Cairn Vault, Anchor Pull, Reed Rush, Silk Roll, Mirror Exchange, Veilstride.
Q E Z X CQuick skill slotsAny learned skill or buff: tap, hold (charge/channel), aimed, or toggle (auras).
1–8, F1–F8Quick item slotsPotions, elixirs, scrolls (teleport, return, speed), food, buffs.
FInteract / loot
Tab / Shift+Tab / EscNext / previous / clear target
G / HAuto-Hunt / Auto-Quest
I U K P M J OBag, Character, Codex, Atlas, Map, Quests, Social
Wheel / Mouse3-drag / VZoom / orbit / switch viewZoom smoothly from the tactical view (pitch 38–62°) to the close over-the-shoulder view; V toggles.

Full defaults, the gamepad map and mobile layout: controls.json.

◆Camera: tactical ↔ close

The camera always follows the character like a console game, and WASD is relative to the camera. One continuous zoom (wheel or pinch; V / gamepad R3 toggles) runs between two views:

ViewFeelDistance · pitchAim
Tactical (default)Silkroad / Path of Exile-style zoomed-out overview: see the pack, telegraphs and terrain9–16 m · 38–62°at the cursor on the ground
CloseDynasty Warriors / Metal Gear-style third person behind the right shoulder, swings to your facing when you move3.6 m · 13°, 0.45 m shoulder offsetwhere you face (centre reticle); magnetism widens to 75° / 6 m

R3 toggles views only; it is not also recenter or lock-on. Optional close-view boss/elite lock-on uses a separate remappable command, supports target switching/release and never restricts a valid escape. Both views show the same telegraphs, nameplates and HUD; the server never knows which view you use. Try it in the Feel Lab (mouse wheel or the Camera slider).

◆2. The Mouse1 chain (Smart Chain)

Each weapon has a 3-hit basic chain (see weapon families). In the Codex you fill up to 8 chain slots with attack skills only (buffs, auras, summons and mobility can't go there). A build with 8 attack skills can chain all 8. While Mouse1 is held or spammed, each press:

  1. Finisher check: if a finisher in the chain is ready and its condition is true on the target (stunned, knocked down, launched, …), it fires now. If not, it is skipped silently.
  2. Otherwise the next ready slot in order fires (off cooldown, enough mana, target inside its shape). Slots on cooldown are skipped; the pointer wraps after the last slot.
  3. If no slot is ready, the next basic hit plays. Basic hits restore 2 mana each, so spamming sustains itself.
  4. Inputs pressed during recovery are buffered for 150 ms and fire on the first legal frame. Releasing Mouse1 lets the current action finish its active window; an explicit valid movement gem can interrupt any phase.
  5. After movement, resume the next eligible chain slot within the proposed 1 s memory window; after expiry restart. Fresh action or deliberate held-chain input is required; interrupted contacts are never replayed.

Settings: number of chain slots in use (0–8), and "finisher jumps the chain" (on by default). Auto-Hunt runs the same list through the same command path, so manual and auto damage feel identical. See finishers.

◆3. Cast phases and cancel windows

Every action follows windup → active → recovery from skills.json (timing).

  • Movement gem first (ADR-027): a valid gem cancels any own attack in windup, active or recovery, including signatures/finishers. Mana is required; cooldown, hard control and destination legality still apply. Stun, sleep and knockdown block movement; roots block displacement unless this gem explicitly declares an escape. Invalid requests leave the current attack running and are not buffered for later. Superarmour and local hitstop never delay a valid cancel.
  • Windup: stun/sleep/knockdown can interrupt. Movement cancel charges no attack mana before commit. Owner accepted a starting 50% attack cooldown refund; the movement gem pays its full own mana/cooldown once.
  • Active: commit costs and authoritative hits. Movement can cancel future cast-owned contacts/ticks; resolved hits stand and no attack refund occurs. Already released independent projectiles/fields continue their defined lifetime.
  • Recovery: movement gem cancels immediately. Other skills and ordinary movement cancel after cancelableAfterS; basic hits can be cancelled into skills at any time after active. Mobile casts retain their locomotion policy.
  • Superarmour skills ignore flinch/stagger from monsters during their listed window.

At a legal attack window, explicit Q/E/Z/X/C input wins over held Mouse1. WASD is sampled concurrently; it follows the per-skill locomotion policy rather than waiting behind attacks. Clear older buffered attacks on movement cancel. Sequence IDs never permit backdating or undoing resolved server hits. Full costs, tie ordering, WASD policies and C1–C18 self-tests: development guide. Policies are documentation contracts until implemented and verified; proposed tuning lives in development-standards.json. Owner-suggested movement reuse starts at Cairn Vault 1 s / Reed Rush 0.3 s. This does not delay activation or apply to every gem: author positive per-gem mana costs and travel/reuse values before coding; no overlapping movement or free fallback.

WASD/stick intent is sampled throughout animation: full movement for compatible buffs, slower aimed/charged casts, brief authored planted melee contact, and directed lunges. Assign/test each skill; no whole-clip translation lock by default. Valid movement gems always override attack commitment.

The first slice includes server-owned enemy engagement tokens by role/difficulty/visibility, active repositioning crowds, readable boss openings and optional cosmetic KO/combo feedback. No universal simultaneous-attacker cap is inferred; perfect-dodge rewards, hit-confirm cancels, hazards and destruction are deferred.

◆4. Targeting and magnetism

  • Desktop: attacks aim at the cursor. Hovering an enemy soft-targets it. Clicking locks the target (Tab cycles).
  • Gamepad/mobile: auto-targets inside a 70° forward cone, prioritised nearest / lowest HP / elite / quest (setting).
  • Magnetism: melee rotates up to 60° and slides up to 1.5 m toward the target during windup so swings connect. Server-validated (no sliding through walls). Off/Low/Medium/High setting.
  • Ground-targeted skills: hold the key to see a jade preview decal and release to cast. On mobile, drag from the button.

◆5. Damage model (proposed — tune in playtests)

hit = weaponRoll × skill% × (1 + Σ increased) × Π more × critMult(if crit) × (1 − mitigation)
increased  : weapon notables, mastery, attributes (+0.5%/pt pure, +0.3%/pt hybrid), buffs
conditional: combo payoffs (vs stun/sleep/knockdown/burn/chill/shock…) share ONE bucket capped at +60%
crit       : base 5% + weapon + AGI (+0.05%/pt); crit damage 150% base
armour     : mitigation = armour / (armour + 10 × rawPhysical)   (big hits pierce armour)
resist     : monsters have fire/cold/lightning resist 0–40% by family
evasion    : chance to evade a monster attack = evasion / (evasion + 4 × monsterAccuracy), max 60%
ailments   : chance = skill/gem base × (1 + INT bonus); one roll per target per cast per ailment family

Values marked proposed in the data must be confirmed by playtest before the economy launches (OPEN-6).

◆6. The AAA hit-feel stack

Everything below is local presentation. It runs on the attacker's and target's clients and never changes the server outcome.

LayerSpec
Anticipationheavy skills ≥ 0.25 s windup with a readable pose and a glint/charge VFX cue
Contact hitstopfreeze attacker + target poses 35 / 55 / 80 / 110 ms (light/medium/heavy/massive). Others keep moving. No global time scale.
Cameratrauma model (shake = trauma²), impact adds 0.05 / 0.12 / 0.25 / 0.45, decays at 1.6/s; massive hits add a 3° FOV punch. Setting 0–100%.
Hit flashtarget rim-light flash, white, 60 ms (with a reduced-flash option)
Impact VFXspark/dust/debris chosen by target hitMaterial (fur, carapace, scale, shell, feather, cloth)
Sound4 layers: swish (weapon), impact (weight), material (target), sweetener (crit/element). ±6% pitch randomisation, never on telegraphs
Damage numberswhite normal, gold crit (1.4×, pop), element tints. Rapid small hits merge into one rolling number
Reactionschosen by impact vs weight (below). Directional flinches, knockback slides, launches
Deathdeath style by killing blow: collapse, blown back, launched, ash, shatter, charred, sliced
Hapticsphone vibration / gamepad dual-rumble scaled by impact (feel-quality.json patterns, Haptics setting 0–100%)
TiersLow → Ultra add debris, scorch decals, dust rings, camera kick, FOV punch, screen shockwave, colour-split pulse and a short screen vibrate (VFX tiers). Outcomes never change.
Trailsweapon ribbons per family (weapons.json trail), stretched by swing speed

◆7. Hit reactions — different for every skill

The server picks the reaction for each hit with this rule (full contract in combat-states.json):

delta = impact(skill hit) − weight(target)        light 1 · medium 2 · heavy 3 · massive 4
                                                   small 1 · medium 2 · large 3 · boss 4
≤ −1 → flash only     0 → flinch_light     1 → flinch_heavy     ≥ 2 → stagger
poise reaches 0 → forced stagger · specials (knockback/knockdown/launch/pull/stun/sleep/root) if the class allows
Reaction matrix — pick any skill and any target
impact ↓ / weight →smallmediumlargeboss
light 35 msflinch lightflash onlyflash onlybreak pressure
medium 55 msflinch heavyflinch lightflash onlybreak pressure
heavy 80 msstaggerflinch heavyflinch lightbreak pressure
massive 110 msstaggerstaggerflinch heavybreak pressure
Earthsplitter → Marsh Wolf (L11)
launch(base rule: stagger)
impact − weight
4 − 2 = 2
special
launch
hitstop
110 ms (local)
shake
+0.45 trauma
poise dmg
50
killing blow
launched
reaction set
medium quadruped
Launch on small/medium; stagger large; boss break pressure 35.
Clips: flinch_light×4, flinch_heavy×2, stagger, knockback, knockdown(roll), launch, pull, stun, sleep, death×4

So a dagger stab (light) only twitches a medium wolf, a greatsword cleave (medium→heavy) staggers it, and Earthsplitter (massive + launch) throws it into the air. Elites are one weight class heavier. Bosses only show hit flashes and fill break pressure. Each monster family has a reaction set (small quadruped, insectoid, reptile, bird, humanoid…) with directional clips, so the same skill reads differently on a beetle (flips on its back) and on a wolf (rolls on its side).

◆8. Monster combat language

  • Telegraphs: red-orange fill-up decals (circle, cone, line, ring with a safe centre). Aim locks at telegraph start. Never culled. Same shape on every tier.
  • Nature: neutral monsters fight back only when attacked; hostile ones aggro inside their radius and leash back.
  • Elites (★): same two abilities, 3× HP, a bigger silhouette aura, never faster or unreadable.
  • Bosses: immune to hard control, use break pressure, and have phase rules from bestiary.json.

◆9. Manual, Assist and Auto

ModeWho movesWho attacksUse
Manualyouyou (Smart Chain + skills)default on desktop
AssistyouSmart Chain auto-targets while Mouse1 / Attack is heldmobile default
Auto-Huntautomationautomation using your Smart Chain + buffs + potionsfarming, offline (Automation)

Every mode sends the same validated commands. Auto never gets extra speed or accuracy.

◆10. Accessibility

Camera shake slider, hitstop toggle, reduced flashes, colour-blind palettes (telegraphs also use pattern fills), hold-to-chain vs tap-to-chain, left-handed mobile layout, UI scale 80–130%, subtitles for voiced lines, and full remapping.

Source: zoen/docs/design/COMBAT.md · 2,059 words · edit the Markdown, not this page.