# Path: characters/enums.py
# class Sex(Enum):
#     Male = 0
#     Female = 1
#     Androgynous = 2
# 
# Path: components/game_object.py
# class NoneVoid(object):
#     """
#     This class's only purpose is to Falsify any other calls make to get attributes from it.
#     It allows us to duck type into components a little easier.
#     """
#     def __getattr__(self, item):
#         return None
# 
#     def __bool__(self):
#         return False


from characters.enums import Sex
from enum import Enum
from collections import defaultdict
from components.game_object import NoneVoid
        for variable in MessageVariables:
            if variable.value in message and variable.name not in context_variables and variable.name in message_router:
                context_variables[variable.name] = message_router[variable.name](**context_variables)

        formatted_message = message.format(**context_variables)
        self.console.printStr(formatted_message + "\n")


class MessageVariables(Enum):
    attacker = "{attacker}"
    attacker_weapon = "{attacker_weapon}"
    attacker_his = "{attacker_his}"
    attacker_him = "{attacker_him}"
    attacker_he = "{attacker_he}"
    defender = "{defender}"
    defender_his = "{defender_his}"
    defender_him = "{defender_him}"
    defender_he = "{defender_he}"
    defender_bodypart = "{defender_bodypart}"
    defender_armor = "{defender_armor}"
    defender_weapon = "{defender_weapon}"


def his_her_it(target, **kwargs):
    if 'player' in kwargs and kwargs['player'] == target:
        return "your"

    if hasattr(target, 'sex'):
        if target.sex == Sex.Male:
            return "his"

# Path: characters/enums.py
# class Sex(Enum):
#     Male = 0
#     Female = 1
#     Androgynous = 2
# 
# Path: components/game_object.py
# class NoneVoid(object):
#     """
#     This class's only purpose is to Falsify any other calls make to get attributes from it.
#     It allows us to duck type into components a little easier.
#     """
#     def __getattr__(self, item):
#         return None
# 
#     def __bool__(self):
#         return False


# Path: managers/echo.py
from characters.enums import Sex
from enum import Enum
from collections import defaultdict
from components.game_object import NoneVoid

        for variable in MessageVariables:
            if variable.value in message and variable.name not in context_variables and variable.name in message_router:
                context_variables[variable.name] = message_router[variable.name](**context_variables)

        formatted_message = message.format(**context_variables)
        self.console.printStr(formatted_message + "\n")


class MessageVariables(Enum):
    attacker = "{attacker}"
    attacker_weapon = "{attacker_weapon}"
    attacker_his = "{attacker_his}"
    attacker_him = "{attacker_him}"
    attacker_he = "{attacker_he}"
    defender = "{defender}"
    defender_his = "{defender_his}"
    defender_him = "{defender_him}"
    defender_he = "{defender_he}"
    defender_bodypart = "{defender_bodypart}"
    defender_armor = "{defender_armor}"
    defender_weapon = "{defender_weapon}"


def his_her_it(target, **kwargs):
    if 'player' in kwargs and kwargs['player'] == target:
        return "your"

    if hasattr(target, 'sex'):
        if target.sex == Sex.Male:
            return "his"

        if target.sex == Sex.Female: