Source code for VegansDeluxe.rebuild.Weapons.Knuckles

from VegansDeluxe.core import AttachedAction, RegisterWeapon
from VegansDeluxe.core import EventContext
from VegansDeluxe.core import MeleeAttack, ActionTag
from VegansDeluxe.core import Next
from VegansDeluxe.core import PreDamagesGameEvent
from VegansDeluxe.core.Translator.LocalizedString import ls
from VegansDeluxe.core.Weapons.Weapon import MeleeWeapon


[docs]@RegisterWeapon class Knuckles(MeleeWeapon): id = 'knuckles' name = ls("rebuild.weapon.knuckles.name") description = ls("rebuild.weapon.knuckles.description") cubes = 3 accuracy_bonus = 2 energy_cost = 2 damage_bonus = 0
[docs]@AttachedAction(Knuckles) class KnucklesAttack(MeleeAttack): priority = -1
[docs] async def func(self, source, target): damage = (await super().attack(source, target)).dealt if not damage: return damage @Next(self.session.id, event=PreDamagesGameEvent) def pre_damages(context: EventContext[PreDamagesGameEvent]): reloading = False for action in context.action_manager.get_queued_entity_actions(self.session, target): if ActionTag.RELOAD in action.tags: reloading = True if reloading: self.session.say(ls("rebuild.weapon.knuckles.effect").format(target.name)) target.energy = max(target.energy - 4, 0) return damage