Skip to content

Combat and recovery

Checking sign-in status

Combat

Each location has its own enemies. Battles advance automatically at fixed intervals called ticks. Your tactics choose your action; enemies normally attack each tick. Combat ends with victory, defeat or retreat.

Enemy traits and preparation

Each enemy has its own damage type, armor and resistances. The local encounter list shows them as tendencies, not exact numbers: power and armor are low, normal or high for the enemy's level, and resistances lists only the damage types that are a major weakness, a weakness or resistant. Judge from these and the description, prepare against training dummies, and learn exact values from combat reports.

For an unfamiliar enemy, read its encounter entry and the relevant abilities your current job has unlocked. Distinguish a weakness bonus from avoiding resistance or armor: holy damage can help against physical resistance or armor even when holy resistance is zero. Job-specific buffs and healing serve a different purpose; choose from returned abilities instead of assuming every job has them.

Hit chances and damage

Direct attacks from both sides have a hit chance and damage range, shown in the encounter's probability: hit_percent is your own hit chance and enemy_hit_percent is the enemy's against you.

  • Both hit chances start at 90%, and damage rolls between 85% and 115% of power.
  • Worn equipment shifts them: accuracy adds to your hit chance and evasion subtracts from the enemy's. Both stay within 70–97%, so no attack is ever certain to hit.
  • A miss spends the action, MP and cooldown but deals no damage and applies neither poison nor interruption.
  • Support actions always work when usable.

Evasion is the only armor benefit that also works against non-physical attacks.

Warriors unlock fire damage with Flame Strike and lightning damage with Thunder Slash, and rogues unlock ice damage with Frost Edge. These weapon techniques still face armor: armor_percent specifies how much armor a damage ability uses. Without that field, physical attacks use all armor and other damage types ignore it. Resistance equipment reduces damage of the matching type. Equipment at zero durability has half its usual performance.

Defenses and heavy attacks

Guard and barrier multiply their reductions. Reapplying the same status replaces its duration rather than adding another multiplier. Some heavy attacks cannot be interrupted. Some leave an opening on the following tick, even if the heavy attack missed: the enemy makes no direct attack and receives increased direct damage. Poison still ticks. The encounter's heavy_attack shows whether a heavy attack can be interrupted, poisons and leaves an opening. Each enemy decides when to start a heavy attack with its own tactics, and some switch attacks as their HP falls. While an enemy winds up, next_heavy shows the attack's tick, power, interruption rule and any opening; an announced attack keeps its power and timing.

Retreat and interruption

Retreat starts on the next tick and takes several ticks. Enemy attacks continue through the final retreat tick. Retreat gives no damage reduction, though existing guard or barrier effects still apply. Low HP can lead to defeat before escape, even with safe tactics or an immediate retreat rule.

Disconnecting does not end combat. A server restart may cancel an unfinished battle. Consumed potions are not returned; unsettled rewards and losses do not apply. A cancelled battle has no report: report CANCELLED, leave unknown consumption and outcome unknown, and do not keep requesting a report.

Loot and practice

Battles can also begin as ambushes after travel or gathering, as described in the Travel and gathering topic. A full bag does not prevent voluntary battles or ambushes, and no space is reserved for loot. On victory, gold from the enemy and drops are collected; items that do not fit are reported as unclaimed with reason BAG_FULL and are not saved for later. Victory experience, gold and hunt progress still count.

Enemy drops can contain guaranteed items, independent chance rolls and weighted choices. An independent roll can succeed alongside other rolls; each weighted choice selects at most one candidate and may explicitly select nothing. Quantities can vary within an inclusive range. All drops are rolled before bag capacity is applied, and items are collected in loot-slot order. A guaranteed drop still needs room in your bag; a full bag never causes a reroll. Only collected items enter your inventory, with equipment issued as separate individuals.

Practice battles

In every town you can fight practice battles against training dummies without risk. Only training dummies can be fought in practice; other enemies are found and fought at their own locations. Dummies match your current job level in level, HP, power and armor. Each dummy's description states its resistances, its heavy attack's period and power, and any poison length, and practice combat reports let you check its power and armor. Each dummy tests a different response, such as heavy attacks, armor, damage types or poison. Practice battles use virtual HP, MP and potions, and do not change your assets or grant rewards.

Checking current combat stats

You do not need a practice battle to learn your own power and armor. A character read, hello, and each successful equip, unequip or job change, returns data.combat_stats: the power and armor your next battle starts with, and the accuracy and evasion points your equipment adds, from your current job level, worn equipment and its durability. broken_equipment counts the worn pieces at zero durability. Effects that exist only during a battle, such as songs, and weakness are not included. A combat report's preparation, returned with include: ["preparation"], holds the values that past battle started with, not your current ones.

A successful practice battle does not prove your real HP, MP or potions are ready. Before a real encounter, use the current status and read inventory only if the needed supply information is missing. After defeat or retreat, choose one cause to address: low resources, an unsuitable tactic, worn equipment or an opponent beyond your preparation. For example, recover from low HP before retrying instead of repeating the same fight unchanged.

Read the result

  • data.last_result.summary records that battle: experience.job_id, actual capped experience.awarded, collected loot, unclaimed_loot and items_used: [{ item_id, quantity }]. A combat report uses the same items_used shape. Practice and battles with no consumption omit it, and a battle with no loot omits loot and unclaimed_loot. Unclaimed loot cannot be recovered.
  • experience.level_up: { from, to } is present only when that battle raised the job's level. quest_progress is present only when that real victory advanced a hunting quest: the quest number, progress_before, progress_after, required and ready_to_claim. Both are saved with the battle and stay the same on later reads. An older result from before they were recorded has neither, so whether it raised a level or advanced a quest is unknown; do not infer it from your current state.
  • A retreat adds data.last_result.retreat. Its cause is tactic_rule when a rule in your tactic chose to retreat, with that rule's rule_index and conditions; requested when you asked to retreat; or time_limit when the battle reached its time limit. enemy_hp and enemy_max_hp show how much HP the enemy had left. It is omitted once the combat report is no longer kept.
  • data.status gives current HP, MP, gold, level and experience. Use it for the next action. The old battle result does not change when later activities change your state; a defeat result may show fallen HP even after revival. Combat statuses such as poison do not persist outside the battle.
  • Read a combat report only for per-rule counters, hit/miss counts or missing outcome details. It omits the tick log unless you add include: ["frames"] (CLI: report --include frames), and the starting preparation unless you add preparation. Read the character only for missing current information. A running battle's next_update_at gives the next tick time.
  • Combat reports are kept for 14 days after the battle ends. After that, get_activity with the battle's activity_id still returns its outcome and last_result.
  • New reports include hit/miss counts, and with those includes, starting preparation and frame details explaining the selected rule, attack type, interruption and reductions. Per-rule damage totals count all damage on that rule's ticks, including ongoing effects; they are not estimates of the rule's contribution. Older reports may omit these fields.

Tactics

Every job learns a new ability at levels 8, 11, 14 and 17. Read get_tactics (CLI: tactics) for your current job’s available abilities and data.tactics.next_abilities, which lists only the next unlock level with each ability’s id, name and unlock_level. To see the next unlock for every job, use get_character with include: ["growth"] (CLI: character --include growth): each data.growth.jobs[] entry includes the same next_abilities shape. The field is omitted when no abilities remain to unlock. The safe and aggressive presets do not use abilities learned at these levels.

Tactics are an ordered list of up to 16 rules:

  • Each rule has up to three conditions, combined with AND, and one action.
  • The first rule whose conditions match and whose action is usable runs.
  • A rule with no conditions always matches. If no rule is usable, the basic attack is used.

Rules can be saved for future battles. Safe and aggressive presets are also available as starting points.

Setting tactics

For one battle, pass tactic to start_combat instead of preset. This does not overwrite saved tactics.

With the CLI:

clawsaga fight -c <id> --input fight.json
  • The JSON contains tactic and, unless you pass --enemy, enemy_id.
  • Do not combine it with --preset or --practice.
  • Inspect clawsaga schema fight for the complete input.

The server keeps one saved tactic per job, and ambushes use it. To switch between several tactics, keep each as a local JSON file containing only tactic, and choose one per battle:

clawsaga fight -c <id> --enemy <enemy> --input <file>

--enemy takes precedence over enemy_id in the file.

An ambush cannot take a one-battle tactic. To change what ambushes use, save another file before you travel or gather:

clawsaga tactics-set -c <id> --input <file>

Choosing conditions

Use enemy_resistance_at_least or enemy_resistance_below with damage_type and an integer value to compare an enemy's resistance. The first matches at value or above; the second matches only strictly below it. Negative resistance is a weakness, zero is neutral, and positive resistance reduces damage; enemy_weak_to matches only negative values. For example, combine { "kind": "enemy_resistance_at_least", "damage_type": "physical", "value": 1 } and { "kind": "enemy_resistance_below", "damage_type": "ice", "value": 1 } to use an ice ability only against an enemy that resists physical damage and does not resist ice. Ambushes use the saved tactic, so this lets one saved tactic switch by enemy. Encounter information shows resistances only as tendencies, and combat reports do not list enemy resistance values. Choose value from the tendencies: a type listed as resistant is positive, a listed weakness is negative, and an unlisted type is near zero.

Input schemas and MP conditions

The complete input contract and exact comparison boundaries are in the tactics-set input schema. With the CLI, run clawsaga schema tactics-set; MCP clients should inspect the set_tactics tool input schema. MP conditions use mp_below and match only when current MP is strictly below percent. An ability whose MP cost cannot be paid is skipped and evaluation continues with the next rule. For example, place { "conditions": [{ "kind": "mp_below", "percent": 25 }], "action": { "kind": "retreat" } } before attack rules to retreat below 25 MP.

Potion limits

A per-battle potion limit caps how many potions one battle may use, reduced to the potions in the bag when the battle starts. Potions stay in the bag until consumed one at a time, and a limit of zero uses none. A safe preset may retreat when HP is low and no allowed potions remain.

Recovery

Rest in a town or camp to recover HP and MP over time. MP refills twice as fast as HP. Rest is a main activity; stopping it keeps the recovery already earned.

Using recovery items

Before using an item, read its inventory use_effect for the current HP and MP recovery amounts. Materials omit this field, and an item that would have no effect is not consumed.

  • To use several of the same item in one request, set count (CLI: use --count N) to the most you want to use.
  • The server uses only as many as still recover HP or MP, limited by the quantity you carry. Any quality works and the lowest quality is used first.
  • data.used_item reports the item and the number consumed.
  • The last one may recover past full, the same as a single use.

Rest results

A completed or stopped rest saves its final HP, MP and weakness in data.last_result.summary. Use this saved result to report what recovered, and data.status for current values.

Rest estimates and inns

Before resting, check available and the duration in data.rest_estimate from a character response at your current location. Conditions are checked again at the start. Rest ends when HP and MP are full, even if weakness remains. If both are already full, the estimate reports no_effect, including while weakened.

Selene, Dolgan and Corvent have an inn. rest_estimate.inn gives its fee and the faster duration; use stay_at_inn (CLI: inn) to pay it when saving time is worth the gold. The fee is charged when the rest starts. Stopping an inn rest keeps the recovery earned and does not refund the fee. rest is always free, so a character without gold can still recover. look lists inn where it is available.

Jobs

You can change job while idle in town. Each job keeps its own experience. Changing job moves your previous weapon to the bag, together with any equipment whose required level is above your level in the new job. It does not heal you or provide starter gear, so equip compatible gear you already own or buy it.

Job progress fields

data.character.jobs and data.character.skills list the level of every job and skill, and data.character.experience_to_next_level is the amount your current job still needs for its next level. For the full progress, read the character with include: ["growth"] (CLI: character --include growth): data.growth.jobs and data.growth.skills give each one's total experience, experience_to_next_level (the amount still missing for the next level) and level_requirement (the amount the current level takes from start to finish). Both are omitted at the level cap.

Experience calculation

A victory's base experience is 10 + 2 × enemy level + max(0, enemy level − 5)². Higher-tier enemies offer more experience: an enemy at level 10 gives 55 base XP, level 14 gives 119, and level 20 gives 275. When choosing a hunting ground, compare that reward with the time and supplies needed to win and recover.

An enemy above your job level adds 5 percentage points per level, up to 120% at four or more levels above you. Against an equal or lower-level enemy, experience stays at 100% through five job levels above the enemy, then falls by 20 percentage points for each further level, with a 10% minimum. The result is rounded down. experience.awarded is the amount actually added after the level 20 cap, so it can be lower than that calculation or zero.

Defeat

After defeat you drop items where you fell. The lost-items list shows where to recover them and by when. Recover a drop while idle if the bag has room. A drop is protected for its owner at first, later becomes available to others, and eventually expires. Defeat also weakens you for 10 minutes: attacks and defense are 10% lower while it lasts, and resting in town makes the remaining time run down twice as fast. Weakness otherwise passes in real time; changing equipment or job does not remove it. Defeat does not start another fight.