Skip to content

Compatibility and supported scope

Each function section lists its arguments, return value, capabilities, and timing. A field that appears in recovered game XML is not automatically available in Lua. Unknown definition fields and unsupported callback names can fail mod loading.

The current API supports typed content definitions, combat behavior callbacks and ticks, saved mod state, branching/generated local modes and raids, owned UI, achievement counters, and explicit asset replacement. Story subscriptions support procedural logic at documented lifecycle boundaries. Programmable tactics choose among native eligible actions. Framework services let dependent mods share typed Lua functionality. Declared round controllers can request offline round wins/losses with native result precedence. Each system retains its documented authority and timing limits; arbitrary engine objects and unrestricted fight-result authority remain outside the current contract.

Combine mods documents additive rule composition, dependency order and the Focus/objective pack. Different mods can append compatible rules to one fight. Rule-list replacements remain exclusive; overlapping controllers and duplicate handles still reject registration.

A successful registration confirms that the supplied definitions passed validation. It cannot prove that a sprite looks right, an opponent behaves well, a reward is balanced, or an update preserves every intended player experience. Test your mod in Eclipse, including restart, failure, and existing-save cases relevant to your feature.

Use working examples as starting points. Keep version numbers and saved IDs deliberate, and follow save compatibility when retiring content or changing state schemas.

Write fractional XML values with a decimal point, such as 0.25, and no thousands separators. Scientific notation such as 1e-5 is supported. This applies to model coordinates, node weights, cloth damping, and other numeric XML attributes. Eclipse reads these values independently of the player’s Windows regional format, including languages that normally use a decimal comma.

Local and online versus use equal combat ratings for both fighters. Their JSON balance presets configure damage multipliers and recoverable blocked damage. Defaults multiply native unblocked strikes by 0.5 and blocked strikes by 0.25, after native block/critical modifiers. All actual blocked damage is recoverable by default; blocked strikes leave a positive amount of health and cannot knock out. Landing an attack or making the opponent block restores existing grey health according to the preset’s recovery rates. Training uses these same rules. Campaign and title-screen sparring retain their own rules.

See Tune PvP balance for the editor, JSON fields, inheritance, recovery calculations and sharing presets. The native strike multiplier is applied before the lethal damage cap and does not change hit reactions, knockback or block detection. Separate scripted health changes do not receive this multiplier.

Online peers must match the combat engine identifier, enabled mods, equipment roster and the selected gameplay rules hash. Changing the host’s rules clears guest readiness. New replays store their immutable JSON rules; changing your selected preset does not change playback. Older recordings without the balance snapshot remain browsable but cannot play in this combat version. Use netplay protocol 4 and room protocol 5 clients with an updated room server.

When testing mods with Unity Multiplayer Play Mode, Eclipse’s tagged editor clients use separate saves, control bindings, mod selections and user-installed mod directories under MultiplayerPlayMode/<player tag> in the normal data directory. Install and enable matching mods for every client. Ordinary editor sessions and player builds keep their existing data paths. These editor tags are testing settings and do not add Lua capabilities.