from VegansDeluxe.core import AttachedAction, RegisterItem, ActionTag, percentage_chance
from VegansDeluxe.core import DecisiveItem
from VegansDeluxe.core import Enemies
from VegansDeluxe.core import Item
from VegansDeluxe.core.Translator.LocalizedString import ls
from VegansDeluxe.rebuild.States.Bleeding import Bleeding
[docs]@RegisterItem
class ThrowingKnife(Item):
id = 'throwing_knife'
name = ls("rebuild.item.throwing_knife.name")
[docs]@AttachedAction(ThrowingKnife)
class ThrowingKnifeAction(DecisiveItem):
id = 'throwing_knife'
target_type = Enemies()
def __init__(self, *args):
super().__init__(*args)
self.tags += [ActionTag.HARMFUL]
@property
def name(self):
return ls("rebuild.item.throwing_knife_name.percentage").format(self.hit_chance)
@property
def hit_chance(self):
return 40 + self.source.energy * 10
[docs] async def func(self, source, target):
source.energy -= 1
if not percentage_chance(self.hit_chance):
self.session.say(ls("rebuild.item.throwing_knife_name.miss").format(source.name, target.name))
return
bleeding = target.get_state(Bleeding)
if bleeding.active:
bleeding.bleeding -= 1
bleeding.active = True
self.session.say(
ls("rebuild.item.throwing_knife.text").format(source.name, target.name)
)