# Path: components/messages.py
# class QueryType(Enum):
#     StatModifier = 0
#     ExperiencePool = 1
# 
# Path: stats/enums.py
# class StatsEnum(Enum):
#     Health = 'health'
#     Mana = 'mana'
#     Strength = 'strength'
#     Dexterity = 'dexterity'
#     Constitution = 'constitution'
#     Intelligence = 'intelligence'
#     Charisma = 'charisma'
#     Wisdom = 'wisdom'
#     Sharpness = 'sharpness'
#     Hardness = 'hardness'
#     Weight = 'weight'
#     Size = 'size'
#     Potency = 'potency'
#     MaxDamage = 'max_damage'
#     MinDamage = 'min_damage'
#     ArmorClass = 'armor_class'
# 
# Path: stats/stat.py
# class Stat(object):
#     def __init__(self, uid, current, maximum):
#         self.uid = uid
#         self.current = current
#         self.maximum = maximum
# 
#     def __str__(self):
#         return str(self.current)
# 
#     def __int__(self):
#         return int(self.current)
# 
#     def modify_current(self, value):
#         self.current += value
# 
#     def modify_max(self, value):
#         self.maximum += value


import six
from components.component import Component
from components.messages import QueryType
from stats.enums import StatsEnum
from stats.stat import Stat
            del self._core_stats[stat]

    def get_current_value(self, stat):
        if stat in StatsEnum:
            stat_value = 0
            if stat in self._core_stats:
                stat_value += self._core_stats[stat].current

            responses = self.host.transmit_query(self, QueryType.StatModifier, stat=stat)
            for response in responses:
                if response:
                    stat_value += response.stat_modifier_value

            return stat_value

    def copy(self):
        copy_instance = Stats()
        copy_instance._core_stats = self._core_stats.copy()

        return copy_instance


def make_character_stats(health=0, strength=8, dexterity=8, constitution=8,
                         intelligence=8, charisma=8, wisdom=8, size=5, **kwargs):
    """Helper function to add common core character stats."""
    stats = Stats()
    stats.add_core_stat(StatsEnum.Health, health, health)
    stats.add_core_stat(StatsEnum.Strength, strength, strength)
    stats.add_core_stat(StatsEnum.Dexterity, dexterity, dexterity)
    stats.add_core_stat(StatsEnum.Constitution, constitution, constitution)

# Path: components/messages.py
# class QueryType(Enum):
#     StatModifier = 0
#     ExperiencePool = 1
# 
# Path: stats/enums.py
# class StatsEnum(Enum):
#     Health = 'health'
#     Mana = 'mana'
#     Strength = 'strength'
#     Dexterity = 'dexterity'
#     Constitution = 'constitution'
#     Intelligence = 'intelligence'
#     Charisma = 'charisma'
#     Wisdom = 'wisdom'
#     Sharpness = 'sharpness'
#     Hardness = 'hardness'
#     Weight = 'weight'
#     Size = 'size'
#     Potency = 'potency'
#     MaxDamage = 'max_damage'
#     MinDamage = 'min_damage'
#     ArmorClass = 'armor_class'
# 
# Path: stats/stat.py
# class Stat(object):
#     def __init__(self, uid, current, maximum):
#         self.uid = uid
#         self.current = current
#         self.maximum = maximum
# 
#     def __str__(self):
#         return str(self.current)
# 
#     def __int__(self):
#         return int(self.current)
# 
#     def modify_current(self, value):
#         self.current += value
# 
#     def modify_max(self, value):
#         self.maximum += value


# Path: components/stats.py
import six
from components.component import Component
from components.messages import QueryType
from stats.enums import StatsEnum
from stats.stat import Stat

            del self._core_stats[stat]

    def get_current_value(self, stat):
        if stat in StatsEnum:
            stat_value = 0
            if stat in self._core_stats:
                stat_value += self._core_stats[stat].current

            responses = self.host.transmit_query(self, QueryType.StatModifier, stat=stat)
            for response in responses:
                if response:
                    stat_value += response.stat_modifier_value

            return stat_value

    def copy(self):
        copy_instance = Stats()
        copy_instance._core_stats = self._core_stats.copy()

        return copy_instance


def make_character_stats(health=0, strength=8, dexterity=8, constitution=8,
                         intelligence=8, charisma=8, wisdom=8, size=5, **kwargs):
    """Helper function to add common core character stats."""
    stats = Stats()
    stats.add_core_stat(StatsEnum.Health, health, health)
    stats.add_core_stat(StatsEnum.Strength, strength, strength)
    stats.add_core_stat(StatsEnum.Dexterity, dexterity, dexterity)
    stats.add_core_stat(StatsEnum.Constitution, constitution, constitution)

    stats.add_core_stat(StatsEnum.Intelligence, intelligence, intelligence)