Added a fire ball staff, closes #64
This commit is contained in:
		@@ -25,6 +25,7 @@ class TexturePack:
 | 
				
			|||||||
    CHESTPLATE: str
 | 
					    CHESTPLATE: str
 | 
				
			||||||
    EAGLE: str
 | 
					    EAGLE: str
 | 
				
			||||||
    EMPTY: str
 | 
					    EMPTY: str
 | 
				
			||||||
 | 
					    FIRE_BALL_STAFF: str
 | 
				
			||||||
    FLOOR: str
 | 
					    FLOOR: str
 | 
				
			||||||
    HAZELNUT: str
 | 
					    HAZELNUT: str
 | 
				
			||||||
    HEART: str
 | 
					    HEART: str
 | 
				
			||||||
@@ -82,6 +83,7 @@ TexturePack.ASCII_PACK = TexturePack(
 | 
				
			|||||||
    EAGLE='µ',
 | 
					    EAGLE='µ',
 | 
				
			||||||
    EMPTY=' ',
 | 
					    EMPTY=' ',
 | 
				
			||||||
    EXPLOSION='%',
 | 
					    EXPLOSION='%',
 | 
				
			||||||
 | 
					    FIRE_BALL_STAFF=':',
 | 
				
			||||||
    FLOOR='.',
 | 
					    FLOOR='.',
 | 
				
			||||||
    LADDER='H',
 | 
					    LADDER='H',
 | 
				
			||||||
    HAZELNUT='¤',
 | 
					    HAZELNUT='¤',
 | 
				
			||||||
@@ -121,6 +123,7 @@ TexturePack.SQUIRREL_PACK = TexturePack(
 | 
				
			|||||||
    EAGLE='🦅',
 | 
					    EAGLE='🦅',
 | 
				
			||||||
    EMPTY='  ',
 | 
					    EMPTY='  ',
 | 
				
			||||||
    EXPLOSION='💥',
 | 
					    EXPLOSION='💥',
 | 
				
			||||||
 | 
					    FIRE_BALL_STAFF='🪄',
 | 
				
			||||||
    FLOOR='██',
 | 
					    FLOOR='██',
 | 
				
			||||||
    LADDER=('🪜', curses.COLOR_WHITE, (1000, 1000, 1000),
 | 
					    LADDER=('🪜', curses.COLOR_WHITE, (1000, 1000, 1000),
 | 
				
			||||||
            curses.COLOR_WHITE, (1000, 1000, 1000)),
 | 
					            curses.COLOR_WHITE, (1000, 1000, 1000)),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,7 +86,7 @@ class Item(Entity):
 | 
				
			|||||||
        """
 | 
					        """
 | 
				
			||||||
        return [BodySnatchPotion, Bomb, Heart, Shield, Sword,\
 | 
					        return [BodySnatchPotion, Bomb, Heart, Shield, Sword,\
 | 
				
			||||||
                Chestplate, Helmet, RingCritical, RingXP, \
 | 
					                Chestplate, Helmet, RingCritical, RingXP, \
 | 
				
			||||||
                ScrollofDamage, ScrollofWeakening, Ruler, Bow]
 | 
					                ScrollofDamage, ScrollofWeakening, Ruler, Bow, FireBallStaff]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def be_sold(self, buyer: InventoryHolder, seller: InventoryHolder) -> bool:
 | 
					    def be_sold(self, buyer: InventoryHolder, seller: InventoryHolder) -> bool:
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
@@ -505,9 +505,10 @@ class LongRangeWeapon(Item):
 | 
				
			|||||||
                   self.held_by.x-entity.x<=self.range:
 | 
					                   self.held_by.x-entity.x<=self.range:
 | 
				
			||||||
                    to_kill = entity
 | 
					                    to_kill = entity
 | 
				
			||||||
        if to_kill:
 | 
					        if to_kill:
 | 
				
			||||||
            self.held_by.map.logs.add_message(_("{name} is shot by an arrow.")\
 | 
					            self.held_by.map.logs.add_message(_("{name}")\
 | 
				
			||||||
                                              .format(name=to_kill.translated_name.capitalize())+ " " \
 | 
					                                              .format(name=to_kill.translated_name.capitalize())+ self.string + " " \
 | 
				
			||||||
                                              + to_kill.take_damage(self.held_by, self.damage + getattr(self.held_by, self.stat)))
 | 
					                                              + to_kill.take_damage(self.held_by, self.damage + \
 | 
				
			||||||
 | 
					                                                                    getattr(self.held_by, self.stat)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def equip(self) -> None:
 | 
					    def equip(self) -> None:
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
@@ -523,6 +524,12 @@ class LongRangeWeapon(Item):
 | 
				
			|||||||
        or intelligence for a magic staff.
 | 
					        or intelligence for a magic staff.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def string(self) -> str:
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        The string that is printed when we hit an ennemy.
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Bow(LongRangeWeapon):
 | 
					class Bow(LongRangeWeapon):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    A type of long range weapon that deals damage based on the player's dexterity
 | 
					    A type of long range weapon that deals damage based on the player's dexterity
 | 
				
			||||||
@@ -538,3 +545,27 @@ class Bow(LongRangeWeapon):
 | 
				
			|||||||
        Here it is dexterity
 | 
					        Here it is dexterity
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        return "dexterity"
 | 
					        return "dexterity"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def string(self) -> str:
 | 
				
			||||||
 | 
					        return " is shot by an arrow."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class FireBallStaff(LongRangeWeapon):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    A type of long range weapon that deals damage based on the player's dexterity
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    def __init__(self, name: str = "fire_ball_staff", price: int = 36,\
 | 
				
			||||||
 | 
					                 damage: int = 6, rang: int = 4, *args, **kwargs):
 | 
				
			||||||
 | 
					        super().__init__(name=name, price=price, damage=damage, \
 | 
				
			||||||
 | 
					                         rang=rang, *args, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def stat(self) -> str:
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        Here it is dexterity
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        return "intelligence"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def string(self) -> str:
 | 
				
			||||||
 | 
					        return " is shot by a fire ball."
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@
 | 
				
			|||||||
from random import randint
 | 
					from random import randint
 | 
				
			||||||
from typing import Dict, Optional, Tuple
 | 
					from typing import Dict, Optional, Tuple
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .items import Item, Bow
 | 
					from .items import Item
 | 
				
			||||||
from ..interfaces import FightingEntity, InventoryHolder
 | 
					from ..interfaces import FightingEntity, InventoryHolder
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -630,7 +630,7 @@ class Entity:
 | 
				
			|||||||
            Trumpet
 | 
					            Trumpet
 | 
				
			||||||
        from squirrelbattle.entities.items import BodySnatchPotion, Bomb, \
 | 
					        from squirrelbattle.entities.items import BodySnatchPotion, Bomb, \
 | 
				
			||||||
            Heart, Sword, Shield, Chestplate, Helmet, RingCritical, RingXP, \
 | 
					            Heart, Sword, Shield, Chestplate, Helmet, RingCritical, RingXP, \
 | 
				
			||||||
            ScrollofDamage, ScrollofWeakening, Ruler, Bow
 | 
					            ScrollofDamage, ScrollofWeakening, Ruler, Bow, FireBallStaff
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            "Tiger": Tiger,
 | 
					            "Tiger": Tiger,
 | 
				
			||||||
            "Bomb": Bomb,
 | 
					            "Bomb": Bomb,
 | 
				
			||||||
@@ -654,6 +654,7 @@ class Entity:
 | 
				
			|||||||
            "ScrollofDamage": ScrollofDamage,
 | 
					            "ScrollofDamage": ScrollofDamage,
 | 
				
			||||||
            "ScrollofWeakening": ScrollofWeakening,
 | 
					            "ScrollofWeakening": ScrollofWeakening,
 | 
				
			||||||
            "Bow": Bow,
 | 
					            "Bow": Bow,
 | 
				
			||||||
 | 
					            "FireBallStaff": FireBallStaff,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def save_state(self) -> dict:
 | 
					    def save_state(self) -> dict:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user