# Path: combat/enums.py
# class DamageType(Enum):
#     Blunt = 0
#     Slash = 1
#     Pierce = 2
# 
# Path: util/dice.py
# class DiceStack(object):
#     __slots__ = ['amount', 'dice']
# 
#     def __init__(self, amount, dice):
#         self.amount = amount
#         self.dice = dice
# 
# class Dice(object):
#     __slots__ = ['sides']
# 
#     def __init__(self, sides):
#         self.sides = sides


from components.component import Component
from combat.enums import DamageType
from util.dice import DiceStack, Dice
    NAME = "weapon"

    def __init__(self, weapon_category, weapon_type, size, ammunition_uid=None, finesse=False,
                 loading=False, normal_range=0, long_range=0, reach=False, thrown=False, two_handed=False,
                 melee_damage_type=DamageType.Blunt, ranged_damage_type=None, damage_dice=DiceStack(1, Dice(1))):
        super().__init__()
        self.weapon_category = weapon_category
        self.weapon_type = weapon_type
        self.ammunition_uid = ammunition_uid
        self.size = size
        self.finesse = finesse
        self.loading = loading
        self.normal_range = normal_range
        self.long_range = long_range
        self.reach = reach
        self.thrown = thrown
        self.two_handed = two_handed
        self.melee_damage_type = melee_damage_type
        self.ranged_damage_type = ranged_damage_type
        self.damage_dice = damage_dice

    def copy(self):
        return Weapon(
            ammunition_uid=self.ammunition_uid,
            damage_dice=self.damage_dice,
            finesse=self.finesse,
            loading=self.loading,
            long_range=self.long_range,
            reach=self.reach,
            melee_damage_type=self.melee_damage_type,

# Path: combat/enums.py
# class DamageType(Enum):
#     Blunt = 0
#     Slash = 1
#     Pierce = 2
# 
# Path: util/dice.py
# class DiceStack(object):
#     __slots__ = ['amount', 'dice']
# 
#     def __init__(self, amount, dice):
#         self.amount = amount
#         self.dice = dice
# 
# class Dice(object):
#     __slots__ = ['sides']
# 
#     def __init__(self, sides):
#         self.sides = sides


# Path: components/weapon.py
from components.component import Component
from combat.enums import DamageType
from util.dice import DiceStack, Dice

    NAME = "weapon"

    def __init__(self, weapon_category, weapon_type, size, ammunition_uid=None, finesse=False,
                 loading=False, normal_range=0, long_range=0, reach=False, thrown=False, two_handed=False,
                 melee_damage_type=DamageType.Blunt, ranged_damage_type=None, damage_dice=DiceStack(1, Dice(1))):
        super().__init__()
        self.weapon_category = weapon_category
        self.weapon_type = weapon_type
        self.ammunition_uid = ammunition_uid
        self.size = size
        self.finesse = finesse
        self.loading = loading
        self.normal_range = normal_range
        self.long_range = long_range
        self.reach = reach
        self.thrown = thrown
        self.two_handed = two_handed
        self.melee_damage_type = melee_damage_type
        self.ranged_damage_type = ranged_damage_type
        self.damage_dice = damage_dice

    def copy(self):
        return Weapon(
            ammunition_uid=self.ammunition_uid,
            damage_dice=self.damage_dice,
            finesse=self.finesse,
            loading=self.loading,
            long_range=self.long_range,
            reach=self.reach,
            melee_damage_type=self.melee_damage_type,

            normal_range=self.normal_range,