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.
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.
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.
You take a fireball to the sigil, and you lose a shield’s healthbar.
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.
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.
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.
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.
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
.
Behold, fixing a destroyed alchemy cauldron.