# ba_meta require api 7 # (see https://ballistica.net/wiki/meta-tag-system) from __future__ import annotations from typing import TYPE_CHECKING import ba from bastd.actor import playerspaz if TYPE_CHECKING: from typing import Sequence class NewPlayerSpaz(playerspaz.PlayerSpaz): def __init__(self, player: ba.Player, color: Sequence[float] = (1.0, 1.0, 1.0), highlight: Sequence[float] = (0.5, 0.5, 0.5), character: str = 'Spaz', powerups_expire: bool = True): super().__init__(player=player, color=color, highlight=highlight, character=character, powerups_expire=powerups_expire) self._punch_power_scale = 20 self._punch_cooldown = 0 def equip_boxing_gloves(self) -> None: from bastd.actor.spazfactory import SpazFactory assert self.node self.node.boxing_gloves = True self._has_boxing_gloves = True if self._demo_mode: # Preserve old behavior. self._punch_power_scale = 2.4 self._punch_cooldown = 0 else: self._punch_power_scale = 40 def _gloves_wear_off(self) -> None: from bastd.actor.powerupbox import PowerupBoxFactory if self._demo_mode: # Preserve old behavior. self._punch_power_scale = 1.2 self._punch_cooldown = 0 else: self._punch_power_scale = 20 self._has_boxing_gloves = False if self.node: ba.playsound(PowerupBoxFactory.get().powerdown_sound, position=self.node.position) self.node.boxing_gloves = False self.node.billboard_opacity = 0.0 # ba_meta export plugin class HyperMegaPunchMod(ba.Plugin): playerspaz.PlayerSpaz = NewPlayerSpaz