Added a scroll object that deals damage based on the player intelligence. Related to #60

This commit is contained in:
eichhornchen
2021-01-08 11:54:39 +01:00
parent ea58d5b426
commit 5736c2300b
3 changed files with 27 additions and 1 deletions

View File

@ -422,3 +422,24 @@ class RingXP(Ring):
experience: float = 2, *args, **kwargs):
super().__init__(name=name, price=price, experience=experience,
*args, **kwargs)
class ScrollofDamage(Item):
"""
A scroll that, when used, deals damage to all entities in a certain radius.
"""
def __init__(self, name: str = "scroll_of_damage", price: int = 18,
*args, **kwargs):
super().__init__(name=name, price=price, *args, **kwargs)
def use(self) -> None:
"""
Find all entities within a radius of 5, and deal damage based on the
player's intelligence.
"""
for entity in self.held_by.map.entities:
if entity.is_fighting_entity() and not entity == self.held_by:
if entity.distance(self.held_by)<=5:
self.held_by.map.logs.add_message(entity.take_damage(\
self.held_by, self.held_by.intelligence))
self.held_by.inventory.remove(self)