Skip to content

V13.6.1 Morale Tweaks

Choose a tag to compare

@GnollStack GnollStack released this 18 Mar 00:53
· 33 commits to main since this release
bb24387

Squad Combat Initiative v13.6.1

Foundry VTT Compatibility: v13
D&D 5e System: 5.2.x+

This release completely overhauls the morale system, introducing per-turn automatic rolling, granular individual combatant morale controls, and the ability to clear morale statuses on the fly.

What's New

Advanced Morale Mechanics

  • Per-Turn Automatic Morale Rolls: When group morale conditions are met (casualty threshold reached or captain killed), living combatants will now automatically roll morale at the start of their individual turn.
    • Note: Dead/defeated combatants, as well as those who already have a morale result, are automatically skipped. You must clear a combatant's morale to allow for re-checks.
  • Per-Combatant Morale Rolls: GMs now have access to a small dice icon on each combatant's controls within a group (when the morale system is enabled). Clicking this rolls morale for just that specific individual and sends a condensed result card to the GM chat.
  • Clear Morale (Group): A new broom icon button has been added to group headers. Clicking this instantly clears all morale flags and status effects (such as Frightened or Fleeing) for every member of the group. It also resets the auto-prompt and captain death gates so per-turn checks can fire again if needed.
  • Clear Morale (Individual): Right-click any combatant that currently has a morale status and select "Clear Morale" to remove their specific flag and status effect without altering the rest of the group.

Improvements

  • Captain Death Auto-Morale: Previously, a captain's death only fired a one-time group-wide roll. Now, it also enables per-turn auto-rolls for any combatants who haven't been checked yet (useful if morale was previously cleared or if new members joined the squad later).
  • Single-Combatant Chat Cards: Individual morale rolls now generate a streamlined, condensed chat card showing the combatant's portrait, roll total, modifiers, and pass/fail result—distinct from the larger, full-group summary tables.
  • Refactored Morale Internals: Roll logic has been extracted into shared helpers (_prepareGroupParams, _rollForCombatant) ensuring that group rolls and individual rolls use identical math and mechanics under the hood.

Bug Fixes

  • Fixed an issue where per-turn auto-morale would never fire when the trigger was set to "Captain Death" (the check was only evaluating casualty thresholds and returning early).
  • Fixed auto-morale failing to fire on round advancement. The system previously only checked for standard turn changes, but advancing a round (which also changes the active combatant) now correctly triggers the check.
  • Fixed a bug where dead or defeated combatants were incorrectly receiving automatic morale rolls on their turn.

API Additions (For Developers)

The following methods have been added to the module API for macro and external module integration:

  • api.rollMoraleSingle(combat, groupId, combatantId)
  • api.clearMorale(combat, groupId, combatantId?) (leave combatantId undefined to clear the whole group)
  • api.clearMoraleEffect(combatant)
  • api.checkAutoMorale(combat, combatant)