Per-player mana tracking

ManaStore ext

ManaStore tracks mana per player with auto-regen and BossBar display. It automatically cleans up boss bars when players disconnect.

from bridge.extensions import ManaStore

Constructor

ManaStore(default_mana=100, default_max_mana=100,
          default_regen_rate=1, display_bossbar=False)

Usage

mana = ManaStore(default_mana=100, display_bossbar=True)

# Index notation
current = mana[player]
mana[player] = 50

Methods

consume(player, amount) → bool

Try to consume mana. Returns False if the player doesn't have enough.

if mana.consume(player, 30):
    # Ability cast succeeds
    ...
else:
    await player.send_message("§cNot enough mana!")

restore(player, amount)

Restore mana to the player (capped at max).

start_regen()

Begin the auto-regen loop (restores regen_rate mana per second).


Per-Player Overrides

mana.set_max(player, 200)
mana.set_regen(player, 5)

Player Integration

Set Player._default_mana_store = mana to enable player.mana:

Player._default_mana_store = mana

# Now you can use:
current = player.mana
player.mana = 50

Lifecycle