Real-time, server-validated combat with AoE and crowd control.
Combat System
ED5 uses real-time action combat where every attack, heal, and ability is validated by the server. Players can't cheat — the server checks everything.

Tuning the damage formula#
Where: Database → Combat → Damage & Defense tab.
| Field | What it does |
|---|---|
| Armor Softcap | Physical hits are reduced by defense / (defense + softcap). Raise it to make armor weaker; lower it to make armor stronger. Default 100 |
| Magic Resist Softcap | The same curve for magic hits, using magic resist. Default 100 |
| Minimum Damage | The smallest hit that can land after every reduction. Default 1; 0 lets heavy armor shrug a hit off entirely |
| Weapon Tier Scaling | Damage per weapon tier: 1 + (tier − 1) × this. Default 0.25 |
Changes apply to every ability hit, projectile and basic attack once your saved settings reach the game server (publish, for a hosted world). True damage ignores both softcaps.
Every field here changes the game. If a field ever ships before the game reads it, it carries an amber Informational — not used by the game yet note so you are never tuning a number that does nothing. (Older versions showed four material-influence rates and a Speed Tolerance field; they were removed because no item carries material properties and movement is fully server-controlled.)
Player combat, XP and item tuning#
Where: Database → Combat → Player Combat, Skill & XP and Itemization tabs. Every field falls back to the default shown when left alone, so an untouched world plays exactly as before. Changes apply on Save & Apply (publish, for a hosted world) — players already online pick up the new values without relogging.
| Field | What it does |
|---|---|
| Downed Re-aggro Grace (ms) | After a downed player gets back up, mobs leave them alone for this long. Default 5000; 0 = mobs can re-engage immediately |
| Drop-to-Trash Chance | Chance each death-dropped item turns into trash. Death Rules → Item Trash Chance overrides it once that panel has been saved. Default 50% |
| Range Tolerance (tiles) | Extra reach a targeted ability gets so a target drifting a hair out of range isn't refused. The range ring players see includes it. Default 0.5, capped at 3 |
| Projectile Hit Radius | How close a projectile must pass to hit, for projectiles with no AoE radius of their own. Default 1.2 |
| AoE Line Width / Cross AoE Tolerance | Half-width of a line AoE / of each cross arm, for abilities that set no width of their own (1 = a 2-tile band). Default 1 |
| Ring AoE Inner Ratio | Size of a ring AoE's safe hole as a fraction of its radius, for rings that set none. Default 0.5 |
| Party Proximity Range / Party Damage Bonus | Each party member within this many tiles adds this much outgoing damage (0.05 = +5%). Defaults 20 / 0.05; a bonus of 0 turns it off |
| Party Loot Range (tiles) | How near a party or raid member must be to share a kill's loot and XP. Default 30 |
| Base Movement Speed (tiles/s) | How fast players run before walk pace, mounts, buffs and penalties. Default 4, kept between 0.5 and 20 |
| Combat XP / Damage Ratio | Combat skill XP earned per point of damage dealt. Default 0.5 |
| Crafting XP Fallback | Crafting XP when neither the recipe nor the world's craft XP reward sets one. Default 15 |
| Max Enchant Level | The most runes one item can hold — caps how many of its sockets can be filled. Default 3; 0 disables enchanting |
| Rune Break on Removal % / Equip Break on Rune Removal % | Chance the rune is destroyed, and chance the item itself breaks, when a rune is removed. Defaults 100% / 0% |
| Knockdown Durability Loss % | Share of max durability every equipped item loses when its owner is knocked down or killed. Default 5%; 0 turns it off |
| Broken Durability % | At or below this share of durability an item counts as broken: it gives no stats and is unequipped. Default 10%, capped at 95% |
The Timing tab's Base GCD, Min GCD Floor, Min Cast Time and Lunge Duration are described under Responsiveness below.
Gotchas
- An ability's own values always win: its GCD (ms) beats Base GCD, and a line/ring/cross ability that sets its own width or hole ignores the world defaults.
- Range Tolerance is capped at 3 tiles and Base Movement Speed at 0.5–20 tiles/s, whatever you type — both are enforced by the server, so a larger number is clamped rather than refused.
- Death Rules and Drop-to-Trash Chance set the same thing. Use Death Rules; the Player Combat field only matters for a world that never saved its Death Rules.
Item power#
Item power turns everything that makes a piece of gear better — its tier, its quality, its enchantment level and how well the wearer has mastered it — into one number, and every spell hits (and heals) with the multiplier of the item that grants it. A spell from your weapon uses the weapon's power; a spell from your helmet uses the helmet's; your chest and boots spells use theirs. Upgrading your helmet makes your helmet spell stronger, not your sword swings.
Where: Database → Combat → Itemization tab → the Item Power block under the itemization fields. It shows a live preview of the power and multiplier for each tier, and any warnings about your curve.
Every world starts in Legacy mode. In Legacy mode spells scale only with the equipped weapon's tier (Damage & Defense → Weapon Tier Scaling) and heals do not scale at all — exactly how combat worked before item power existed. Nothing changes until you switch the mode.
Setting it up#
- Check World → Feature Flags → Item Power is on (it is by default).
- Open Database → Combat → Itemization and scroll to Item Power.
- Set Item Power Mode to Item power.
- Tune the power terms (base, per tier, per quality, per enchant, per mastery level) and pick the Mastery Skill.
- Pick the Power Curve and Multiplier per Point. Watch the preview row: a plain tier-1 item should read ×1.00.
- Fix anything the warning box lists, then Save & Apply (publish, for a hosted world). Players see the new numbers after they reconnect.
Fields#
| Field | What it does |
|---|---|
| Item Power Mode | Legacy tier multiplier (default) or Item power. Legacy ignores every field below |
| Base Power | Power of a tier-1, lowest-quality, unenchanted item with no mastery. Default 100 |
| Power per Tier | Power added for each tier above 1. Default 100 |
| Power per Quality Step | Power added for each quality above your lowest one, in the order you set under Items → Rarities & Quality. Default 20 |
| Power per Enchant Level | Power added per enchantment level on the item. Default 50 |
| Power per Mastery Level | Power added per level of the mastery skill. Default 1 |
| Mastery Skill | Which skill counts as mastery: Item's linked skills (the highest skill the item, or its weapon or armor type, trains), Spell's linked skills (the cast spell's own Linked Skills, falling back to the item's), or None |
| Power Curve | Linear: ×(1 + (power − reference) × per point). Exponential: every point compounds, ×(1 + per point)^(power − reference) |
| Reference Power | The power that multiplies by exactly ×1. Keep it at a plain tier-1 item's power (Base Power) so starter gear hits for what you authored. Default 100 |
| Multiplier per Point | How much each point of power above the reference adds. The default 0.0025 is +25% per 100 power — with the other defaults, a plain item's tier scales exactly like the legacy multiplier |
| Minimum Multiplier | Floor, so weak gear never zeroes a spell. Default 0.1 |
| Maximum Multiplier | Ceiling. 0 = no ceiling (default) |
| Spells No Item Grants | What learned hotbar spells, the unarmed attack and triggered follow-ups use: Average of worn gear (default) or Flat ×1 |
Example. With the defaults, a tier-4, Outstanding (third quality), +1, mastery-30 helmet has power 100 + 300 + 40 + 50 + 30 = 520, so its spell hits ×2.05 — while the tier-1 sword in your hand still swings at ×1.00.
Where players see it#
With item power on, the item tooltip and the item window show each piece's Item Power and its spell multiplier, and the character sheet's Combat section shows the average of your worn gear. In Legacy mode none of these appear. Rename the label in Studio → Localization → Vocabulary (character.item_power).
Gotchas#
- Switching the mode rebalances your whole world. Every player's spells change at once — heals start scaling too. Playtest on a copy first; switching back to Legacy restores the old numbers exactly.
- Heals scale only in Item power mode. In Legacy mode heals never used the weapon tier and still do not.
- Mobs and NPCs are unaffected. They keep the legacy weapon-tier multiplier; item power is for players' gear.
- Ground areas scale by the spell that placed them, so a field left by your helmet spell pulses with the helmet's power. Damage-over-time statuses keep their authored numbers.
- The same spell on two items takes the stronger one.
- The tooltip's mastery counts the item's own Linked Skills. If only the weapon or armor type links the skill, the tooltip can read a little lower than the real hit.
- A mode or curve the server cannot understand is refused on save with a message; suspicious-but-valid curves (a multiplier per point of 0, a negative bonus, a best-in-world item over ×50, fields tuned while the mode is still Legacy) are listed in the warning box and on Project Health.
- Feature flag: Item Power (on by default). Off forces Legacy whatever the mode says.
Guild rewards#
Where: Database → Combat → Guild Rewards tab. Applies on Save & Apply (publish, for a hosted world).
| Field | What it does |
|---|---|
| PvP Kill Guild XP / Mob Kill Guild XP / Craft Guild XP | Guild XP the player's guild earns for each. Defaults 25 / 10 / 5 |
| Skill Level-Up XP Mult | Guild XP for a skill level-up = the new level × this. Default 5 |
| Quest Guild XP Divisor / Fallback | A turned-in quest gives ceil(quest XP ÷ divisor) guild XP, or the fallback when the quest gives no XP. Defaults 10 / 20 |
| PvP Kill Season Points | Season points for a PvP kill. The active season's own Point Config wins when it sets PvP kill — this is the fallback. Default 15 |
| Mob Kill Season Points | Season points for an ordinary (non-boss) kill during an active season. Default 0 — only bosses score (at the season's Boss kill rate) |
| Guild XP Base / Growth / Max Guild Level | The guild level curve. Guilds → Level Config wins for any of these it changes from the default; otherwise these apply. Defaults 1000 / 1.5 / 50 |
Season points only accrue while a season is active.
Pet battle caps, taming and breeding#
Where: Database → Combat → Pet Battle tab. Every field falls back to its default when left alone, and changes apply to the next battle, tame, level-up or breed.
| Field | What it does |
|---|---|
| Max Battle Team Size | Pets each side brings to a player-vs-player pet battle; extra pets are left out. 1–6, default 3 |
| Max Pet Abilities | Abilities a pet takes into battle and starts with equipped. Default 4 |
| Max IV per Stat | Highest IV a tamed, hatched or bred pet can roll. Default 31 |
| Max EV per Stat / Max Total EVs | Caps on a pet's EVs. Default 252 / 510 |
| Max Pet Level | Pets stop levelling here. Default 100 |
| STAB Multiplier | Damage bonus when an ability's element matches the pet's. Default 1.5 |
| Taming Skill Cap / Taming HP Bonus / Max Catch Chance | Catch chance = the spawn rule's Capture Chance + taming level × 0.5% (up to the cap) + (1 − target HP%) × HP bonus + taming item, capped at Max Catch Chance. Defaults 0.5 / 0.3 / 95% |
| Tame Cooldown (ms) / Tame Range (tiles) | Wait between attempts and how close you must stand. Defaults 5000 / 3 |
| Breeding Base Duration / Duration/Level | Egg time = base + average parent level × per-level seconds. Defaults 60 / 6 |
| Inherited Stats Count / Breeding IV Bonus Cap | How many of the six IVs copy a parent, and the most IV the parents' level can add. Defaults 3 / 10 |
A wild-pet spawn rule's Capture Chance and an egg's Min IV Total stay per-species; these fields only bound them. Max Battle Team Size covers player-vs-player battles only; trainer (NPC) battles are unchanged.
How Combat Works#
- Player activates an ability (click or hotkey)
- The server checks: is the ability off cooldown? Does the player have enough MP/stamina? Is the target in range?
- If valid, the server calculates damage using the ability's stats, the attacker's stats, and the target's defenses
- Status effects are rolled (e.g., 25% chance to apply Burn)
- Results are sent to all nearby players so everyone sees the action
A cast that fails any of those checks costs the player nothing — no mana, no cooldown, no global cooldown, no weapon durability. The action simply doesn't happen, so a mistimed or slightly-too-far click never eats a rotation.
Auto-attack#
Players pick a target once and keep swinging at it until it dies, they pick another, or they stop. The server decides when each swing lands, walks the player into range if the target runs, and drops the target the moment it stops being a legal one.
That last part matters more than it sounds. The swing rate is your character's, not your connection's: two players with identical gear attack at exactly the same speed whether they're next to the server or on the other side of the world. There is nothing to tune for it and nothing that can drift.
How players use it
| Action | Default input |
|---|---|
| Start attacking the target under the cursor | Double-click |
| Stop attacking, walking and casting | Z |
Both are rebindable under World → Player Controls, where Stop appears as its own action in the Combat category.
What sets the swing rate: the equipped weapon's basic-attack ability. Its GCD (ms) is the interval between swings, scaled by the attacker's Attack Speed and by World → Gameplay → Combat Speed Multiplier. Author the weapon's basic attack, and you've authored its attack rate — there is no separate auto-attack speed field.
Which ability swings: the equipped weapon type's Normal Attack Ability, exactly what shows in the player's first ability slot. With no weapon (or a broken one) it falls back to the built-in unarmed attack, so a player is never left unable to fight.
Gotchas
- Auto-attack stops on its own when the target dies, leaves the instance, enters
a safe zone, or otherwise stops being something the player may damage. The player is told, and the target highlight clears — it never silently switches to someone else.
- A weapon type with no Normal Attack Ability set falls back to the unarmed
punch. If a weapon "attacks like fists", that field is empty.
- Attacking is refused entirely while mounted. Players dismount first.
Responsiveness#
Three behaviours make combat forgiving without giving anything away. All are server-side, so they work identically for every player regardless of connection.
Input buffer#
Pressing an ability while you're still on cooldown used to do nothing. Now, if you press within the buffer window of being ready, the press is **held and fired the instant the cooldown clears** — you no longer have to release and re-press with perfect timing.
Set the window under Combat → Tuning → Timing:
| Field | What it does |
|---|---|
| Input Buffer (ms) | How early a press is accepted before a cooldown ends. Default 300. Set 0 to turn buffering off entirely. |
| Base GCD (ms) | The global cooldown for any ability that doesn't set its own GCD. Default 1000. |
| Min GCD Floor (ms) | The floor the GCD can never go below, however much attack speed a player stacks. Default 50. |
| Min Cast Time (ms) | The floor a cast time can be reduced to. Default 100. |
| Lunge Duration (ms) | How long the melee step-in animation runs. Default 200. |
Only the last press is held — mashing two abilities before your cooldown ends fires the one you pressed last, not both. A held press is re-checked when it fires, so if you died, were silenced, unsheathed a different weapon, or changed zone while it waited, it's discarded rather than going off against stale state.
Gotcha: a large buffer makes combat feel loose rather than responsive, since presses land noticeably after you make them. Values much above ~400 ms are usually worse, not better. Presses made earlier than the window are still rejected outright — the buffer is a grace period, not a queue.
Walk into range#
Using a targeted ability on something slightly too far away no longer fails. Your character walks into range and casts on arrival, and keeps following if the target moves. The order is abandoned if the target dies, you die, you change zone, or five seconds pass without getting there.
Nothing is spent until the ability actually lands, and it's re-checked on arrival — so if the target became untargetable during the walk, you simply don't cast.
Hits land with weight#
Every hit briefly freezes both sprites at the moment of contact — a few frames, scaled by the damage, longer on a crit. Without it two characters just pass through each other's animations; the hitch is what makes a blow read as a collision. It applies to the sprites, not the camera, so a crowded fight doesn't stutter, and it's disabled entirely for players who have Reduced Motion on.
The victim's sprite also recoils a few pixels away from the attacker and settles back — bigger for heavier hits and crits, purely visual (the unit's real position never moves). When you take a hit or land a crit, the camera gives a short shake; players choose its strength in **Settings → Accessibility → Screen shake** (off, low, normal, strong), and Reduced Motion turns shakes and recoils off entirely. The camera also has a small dead-zone, so a one-tile step doesn't drag the whole world with it.
Nothing to configure. It reads the damage the server already sent.
Failed actions don't spam the chat log#
Out of range, not enough mana, silenced, still recovering — these happen constantly in a normal fight, and they used to go into the chat log, burying actual messages. They now appear as a brief cue above the action bar, play the Action refused sound, and are announced to screen readers. Real errors still go to the log.
Bind your own audio to Action refused on the Sounds page like any other slot.
Aim indicators#
Hovering (or keyboard-focusing) an ability previews it on the ground, so "out of range" and "who does this hit" are things players see before they act rather than learn by being refused. There are two indicators, because they answer different questions:
- the reach ring — how far the ability can be used from, drawn around your feet.
- the area footprint — the shape it actually covers, drawn at the point you're
aiming at. A cone shows as a cone, a ring shows its safe centre, a cross shows as a cross.
The footprint follows your target if you have one and your cursor otherwise, and is clamped to the ability's reach — so it never shows you an area the server would refuse to place. It's coloured by intent: harmful areas one colour, heals and buffs another, decided from the ability's damage and target mode.
Style both under World → UI Customization → Layout → Ability range indicator, next to the selection indicator:
| Field | What it does |
|---|---|
| Enabled | Off removes both previews entirely. |
| Style | Reach ring only: Ring (outline with a faint wash), Filled (solid wash), or Dashed (outline only). |
| Color | Reach-ring colour. Default amber. |
| Outline opacity | How strong the reach ring's edge reads. |
| Fill opacity | The reach ring's interior wash. 0 = outline only. |
| Thickness | Outline width for both indicators, 1-6px. |
| Also show while casting | Keeps the reach ring up during the cast, not just on hover — useful in telegraph-heavy worlds where an incoming spell's reach is information the target should have. |
| Show area footprint | Off leaves only the reach ring. |
| Harmful color | Footprint colour for anything that damages or debuffs. Default red. |
| Helpful color | Footprint colour for heals and ally-only abilities. Default green. |
| Footprint outline / Footprint fill | Edge and interior strength for the footprint. |
Gotchas
- Both are drawn in the isometric projection, so they read as distances on the floor
rather than shapes on the screen. A large circle becomes a wide, flat ellipse and a cross becomes a rotated X — that is correct, and it is exactly the ground the server tests against.
- The reach ring uses the ability's authored Range; an ability with no range set
draws none. The footprint needs an AoE Shape other than none and an **AoE Radius** above 0.
- A self-buff draws no reach ring (a circle round your own feet is noise) but still
draws its footprint if it has an area — that's how a nova centred on the caster previews.
- Leave the whole block untouched and you get the engine defaults. Reset clears
every field back to them.
AoE shapes and their proportions#
Abilities → (pick one) → Targeting & AoE picks the shape; the fields beside it give the shape its proportions. Only the ones the chosen shape reads are shown, and a live diagram beside them draws exactly what the server will hit.
| Shape | What it covers |
|---|---|
| None | Just the target. |
| Circle | A disc where the ability lands. |
| Ring | A doughnut where it lands — the centre is safe. |
| Nova | A disc centred on the caster. |
| Cone | A wedge opening out from the caster toward the aim point. |
| Wave | The same, but a broad frontal sweep by default. |
| Line | A fixed-length band forward from the caster. |
| Rectangle | A band from the caster that stretches to the aim point. |
| Cross | Two bands crossing where it lands. |
| Field | Applies to | What it does |
|---|---|---|
| AoE Radius | all areas | How far the area extends, in tiles. Circles and rings measure from the impact point; cones, lines and novas measure out from the caster. |
| Cone Angle | Cone, Wave | How wide the wedge opens, in degrees. 90 is a typical cone, 360 a full circle. Blank inherits 90 (Cone) or 180 (Wave). |
| Band Width | Line, Rectangle | Total width in tiles — 2 means one tile either side of the centre line. Blank inherits 2 for a Line, and the AoE Radius for a Rectangle. |
| Hole Size | Ring | Safe centre as a fraction of the radius. 0.5 leaves the inner half safe. Blank inherits 0.5. |
| Arm Width | Cross | Total width of each crossing band, in tiles. Blank inherits 2. |
Gotchas
- Blank means inherit, not zero. Clearing a box uses the engine default; typing
0 is a real 0. The placeholder tells you what you'd inherit.
- Cone Angle is not Spread Angle. Spread Angle (on the same tab) fans *multiple
projectiles*; Cone Angle is the width of the area. An ability can use either or both.
- Existing cones and novas changed. A cone previously had no angle at all — it
tested a 180° half-plane measured from the impact point, which collapsed into a plain circle whenever you aimed further away than the radius. It is now a real wedge from the caster, defaulting to 90°. A nova was anchored at the impact point, making it identical to a circle; it is now centred on the caster. If you were relying on either of the old behaviours, set Cone Angle to 360 or switch the shape to Circle.
- Line, Ring and Cross keep the dimensions they always had, so those abilities hit
exactly who they hit before.
- Shape changes are content, so they need a publish; they do not need a
server roll.
Casting while moving#
A cast-time ability stops the caster. That is what most online action games do — mobility during a cast is an explicit per-spell property in each of them, never the default — and it is what Movement during wind-up on the ability's Timing & Feel tab controls:
| Setting | What happens |
|---|---|
| None (default) | The caster halts to cast. Deliberately issuing a move order cancels the cast and refunds the mana. |
| Slowed | The caster keeps walking at Slowed move speed and the cast continues. |
| Full speed | The caster keeps moving normally and the cast continues. |
Gotcha: before this, a player who cast while already walking broke their own cast almost immediately — the server cancelled on movement but never stopped them, so they drifted out of position within a couple of ticks. If you have an ability that is supposed to be castable on the move, set Movement during wind-up rather than relying on the old behaviour.
Cast interruptions#
Moving or being stunned during a cast cancels it and refunds the mana. Switching to a different cast mid-wind-up refunds the abandoned one too.
Interruptions no longer write to the chat log. Instead the cast bar ends and a Cast interrupted sound plays — bind your own audio to that slot on the Sounds page, like any other sound. Screen readers are notified separately, so the feedback isn't purely visual.
Attack Timing & Weight#
Every action runs in three phases: wind-up → impact → recovery. Wind-up is the swing before the hit, impact is the moment damage lands, recovery is the pause afterwards before the attacker is free again. Setting those three numbers per ability is how a hammer feels different from a dagger even at the same damage.
Before this, every melee ability in every world landed damage at exactly the same moment and recovered instantly, whatever the artwork showed. **Nothing you have already authored changes** — an ability that sets none of the fields below behaves exactly as it did.
Where to author it#
Two places, and they layer:
- Combat → Tuning → Timing — the world defaults every ability inherits.
- Ability editor → Timing & Feel — the per-ability overrides, with a live
timeline showing wind-up, the impact marker and recovery on one ruler.
- Sprite/Avatar editor → an attack animation → Contact Frame — where the
blade actually connects in the art.
Start with the contact frame. It is the one that pays for itself: set it once on the animation and every ability using that art lands its damage on the right frame, with no millisecond values typed anywhere. Contact belongs to the artwork — a hammer connects on frame 5 of 8 whichever skill swings it — so the person who drew the animation is the one who sets it.
Setting up a heavy weapon#
- Open the weapon's attack animation in the sprite editor and set **Contact
Frame** to the frame where the blade connects.
- Open the ability in Abilities → your ability → Timing & Feel.
- Raise Wind-up (ms) until the swing reads as slow and deliberate. The
animation is fitted to this, so the art slows down with it.
- Set Recovery (ms) to something like 250–400. This is the field that
creates weight: the player is committed after the swing.
- Optionally turn Recovery cancelable off, so they cannot walk out of the
follow-through. Use sparingly — it punishes hard.
- Watch the timeline at the top of the tab. The red line is the hit; the
hatched band at the end of the wind-up is where cancelling stops working.
Wind-ups are audible: bind the Attack wind-up sound on the Sounds page and players hear an attack start, not just land. A telegraph nobody can perceive is only a delay — the sound is what makes a long wind-up a chance to react rather than a mystery.
Your own swing starts on the press. With Client Prediction on (Feature Flags), a player's character starts swinging, and plays the wind-up sound, the moment they press an ability. It doesn't wait a round trip for the server. The server still decides everything: the game replays the swing the server last played for that ability, takes the server's own swing as confirmation, and stops the predicted one if the press is refused. Damage numbers, shake and hitstop land on that early swing's contact frame, so they line up with the blade the player is watching. Only an instant ability with its target already in reach starts early, and never the first use of an ability after logging in. A cast bar, an out-of-range target and the very first swing all play when the server says so.
Fields#
Ability editor → Timing & Feel. Every field is optional; blank inherits the world default shown in the placeholder.
| Field | What it does |
|---|---|
| Wind-up (ms) | How long the swing takes before recovery starts. Blank uses the ability's cast time if it has one, otherwise the world default. The attack animation is fitted to this. |
| Impact point (0-1) | How far through the wind-up damage lands. Blank derives it from the animation's contact frame — the setting you usually want to leave alone. |
| Recovery (ms) | Pause after the hit before the attacker can act. 0 = none. This is the weight knob. |
| Cancel lockout (ms) | Final stretch of the wind-up that can no longer be cancelled, so a swing the target already reacted to can't be taken back at the last instant. |
| Recovery cancelable | On: moving or acting cuts recovery short. Off: committed for its whole duration. |
| Resets auto-attack | On: using this restarts the auto-attack swing timer. Off: the swing clock keeps running underneath, so players can weave this between hits. |
| Movement during wind-up | None (rooted), Slowed, or Full speed. |
| Slowed move speed | Move-speed multiplier while the above is Slowed. |
Combat → Tuning → Timing. The world defaults.
| Field | What it does |
|---|---|
| Default Wind-up (ms) | Swing length for abilities with no cast time and no wind-up of their own. Default 400. |
| Default Impact Point | Fallback impact fraction when neither the ability nor the animation says. Default 0.5 — the middle of the swing. A world saved before 2026-10-22 keeps the value it saved (0.3 then); set 0.5 here to match. |
| Default Recovery (ms) | Default 0 — no recovery, matching how the engine behaved before. |
| Recovery Cancelable | Default on. |
| Cancel Lockout (ms) | Default 50. |
| Abilities Reset Auto-Attack | Default on. |
| Attack Speed Cap | Ceiling on how far Attack Speed can compress wind-ups and recoveries. Default 3. |
Sprite editor → attack animation.
| Field | What it does |
|---|---|
| Contact Frame | 0-indexed frame where the blade connects. Shown on striking animations only — anything with "attack", "shoot" or "thrust" in the name, plus a staff's "cast". Blank = not authored, and impact falls back to the world default. |
Gotchas#
- **Attack Speed now shortens wind-ups and recoveries, not just the global
cooldown.** A fast build feels fast rather than merely acting more often — but it does mean a high-Attack-Speed character's swings are visibly shorter. The Attack Speed Cap exists so they cannot shrink to the point where nobody can see or react to them.
- Blank is not zero. An empty field means "inherit"; a typed 0 means an
instant wind-up or no recovery. The placeholder always shows what is inherited.
- Contact Frame only appears on striking animations. Idle and walk cycles have
no contact point, so the field is hidden rather than asking a question that has no answer. Your weapon swings are usually named like 1h-attack-1 or bow-attack-1; those all qualify.
- Attack Speed is capped everywhere, not just on wind-ups. The cap bounds the
wind-up, the recovery, the cast time, the global cooldown and the auto-attack interval together, so raising Attack Speed past it stops helping rather than quietly continuing to shorten one of them.
- A long wind-up is a long animation. Raising Wind-up slows the art to match
rather than delaying an already-finished swing, which is what you want — but a 4-frame animation stretched over 900 ms will look choppy. Add frames, or keep the wind-up nearer the animation's natural length.
- The impact marker moves with attack speed. The timeline previews the base
values at 1× speed; in-game both the phases and the animation compress together, so contact stays on the same frame.
Damage Calculation#
The damage formula considers:
- Base damage from the ability
- Attacker stat (Attack for physical, Magic Power for spells) × the ability's scaling ratio
- Weapon tier multiplier (linear +0.25 per tier — T1 = 1.0× through T8 = 2.75×)
- Buff multipliers from food, potions, and passive effects
- Critical hits — 5% base chance, dealing 1.5× damage
Defense reduces damage using a ratio formula:
- Physical defense reduces physical damage
- Magic resist reduces magical damage
- True damage ignores all defense entirely
The formula has diminishing returns — stacking more defense helps less each time, so there's no way to become invincible.
AoE Shapes#
Abilities can hit multiple targets using 9 area-of-effect shapes:
| Shape | Description |
|---|---|
| None | Single target |
| Circle | All targets within radius |
| Cone | Fan-shaped area |
| Line | Narrow beam |
| Rectangle | Rectangular area |
| Ring | Donut shape |
| Cross | Plus (+) pattern |
| Nova | Expanding ring from caster |
| Wave | Expanding arc |
Telegraphed AoEs#
Area abilities can broadcast a telegraph — a ground indicator matching the AoE shape — while the ability winds up, giving players a window to step out before it resolves. Telegraph visuals are authorable per ability (see Visual Effects); mob and boss encounters use the same system for their big hits.
PvP Zone Rules#
Each zone has a PvP rule setting:
| Rule | Behavior |
|---|---|
| Safe | No player vs player combat |
| PvP | Open player-vs-player combat |
| Full Loot | Open PvP; players drop equipped gear on death |
| Full Loot All | Open PvP; players drop their entire inventory on death |
| Arena | Structured PvP arena rules |
Duels#
Duels are a separate opt-in system, independent of the zone PvP rule. Players can request 1v1 duels with optional gold wagers. Duels are contained — both players must stay in range, and the loser's HP stops at 1 (no death).
Death & Respawn#
When a player dies:
- All active status effects are cleared
- A respawn screen appears
- The player respawns at the nearest safe zone
- Penalties are configurable (XP loss, gold drop, etc.)