3 min read
Abjuration & Teleport Mana

The Abjuration sigil has a static number of wards no matter how much mana the sigil has.

Unlike other sigils, abjuration requires two mana per ward. This balance ensures offense/defense leans towards offense intentionally, so castles are not just invincible.

Though my wardCapacity was configurable, I hadn’t handled reducing capacity past the current state. I added a setWardCapacity function that removed excess wards and updated the capacity.

public void updateAbjurationSigilMana(Entity sigilEntity) {
    Sigil sigil = Comps.sigil.get(sigilEntity);
    int wardCapacity = sigil.manaNodes / 2;
    // sets total ward slots and removes excess wards that already exist.
    setWardCapacity(sigilEntity, wardCapacity);
}

It might be a nice UX to always remove or use double mana from the sigil, but that adds complexity in destruction (one node at a time), so tabling that for later.

Teleport & Boarding

In the current teleport sigil design, mages spellbooks are swapped to a sigil specific set of spells. This design added some complications.

  • How to do bulk teleports? Select mages and click teleport?
  • What about teleport cooldown management? If it’s tied to a mage, harder to tie to a sigil.
  • What about recall?

So based on the new evocation UI panel, I designed a new Teleport panel (placeholder icons, of course). Teleport sigil

And rather than mages casting teleport as a spell, I added an explicit TeleportCommand consumed by the TeleportSigilSystem that works on TeleportSigils and their current occupants.

Turning ~15 LoC into ~300…

Regrets

But with this new approach, teleport can now handle multiple units at once, manage its cooldowns, and have sigil mana requirements that Spells certainly wouldn’t have properly handled without tight coupling and janky code.

Similarly, recalling from teleport becomes a simple command with a cooldown.

Teleport Group

Above, you’ll see that it requires 2 mana to perform local teleportation. That’s because a single mana only provides Mass Teleport charging. The intent is to unlock boarding by upgrading the Teleport Sigil from its initial rank 1.