4 min read
Sigil Destruction

Evocation, Scrying, and Mass Teleport charging all work great, but you don’t want the enemy’s sigils to be functioning!

That’s right, it’s time for destruction. Mages should be able to break enemy sigils, stopping enemy castles from protecting, attacking, or visibility.

End Goal

Sigils aren’t like most entities with health.

  • Health is based on total mana capacity. Losing health reduces capacity.
  • Sigils have segmented health. If Scrying has 2 mana, it has 2 healthbars.
  • Sigils can be repaired by mages.
  • Sigils can be broken but won’t be removed (until the castle explodes).

FTL’s systems have a green, orange, red status and represent their health. Crew can autoattack systems until they break down a level. If the crew stops autoattacking the system, it resets progress. Repair works similarly.

Skymagi cabal aren’t confined to a grid, and can cast damaging spells as well as autoattack, so several of those streamlined mechanics won’t work.

So, sigils should have a healthbar.

Sigil Healthbar

These initial designs have shield tokens representing total healthbars/mana and a larger healthbar showing current shield health. The third panel shows a case where a shield is being repaired.

variations

Current shields actually is more complex than just a segmented healthbar.

Say you have 4 mana in a sigil. You could represent the healthbar into segmented chunks.

Chunks

You take a fireball to the sigil, and you lose a shield’s healthbar.

One shield down

If this was a standard healthbar, that means a single second of repair (~1hp) would restore the shield, since it graduates to the upper healthbar. But a single second of repair shouldn’t re-enable the sigil, that’s bad gameplay design.

Instead, losing a healthbar should remove a shield, and you can’t regain it until the bar is fully repaired.

Losing/Regaining

After realizing this, to avoid confusion (which is likely why FTL chose to reset when a crew halted repairing/attacking), I debated just showing shields and obsfucating this complexity.

Alternative design

But in the end, I added a partial state to represent a healthbar being repaired and refined the original design. I swapped it to mana blue to match the mana pool, since they are directly linked.

Below shows a sigil being repaired. The last panel shows a healthbar that must be fully repaired to regain the shield.

Partial State

Structure Health

The mechanics were a substantial refactor, but overall straight forward. I planned for this during the Sigil component design, so it already had curMana, maxMana, totalMana (where total and max determine damaged nodes).

However, rather than complicating the current Health component, I created a new StructHealth component.

  • Units/Sigils respond differently to spells and damage, so StructHealth being distinct is a feature.
  • Adding layered healthbars and distinct UI was trivial with a different component.
  • HealthUtils.Damage handled both so other systems didn’t have to know.

The greatest boon came from broken state versus dead. StructHealth doesn’t remove the entity at zero in the HealthSystem. The AnimationSystem used status changes to show broken sprites.

Additionally, when StructHealth reaches thresholds, the SigilManaSystem updates maxMana and broadcasts updateSigilMana accordingly.

Maybe I’ll regret it in the future.

Doors are also structures

Previously, doors were forever removed upon being destroyed. I had a TODO to fix that. I added StructHealth for them, which made destroyed sprite states easy.

Doors broken

Repairing

Like autoattacking, Repair is just a spell that costs no mana. Though I do not have channeled spells yet, a short duration autocasted spell works well enough. It only targets StructHealth.

Cantrips

Behold, fixing a destroyed alchemy cauldron.

Repair