# Path: app/models/magic.py
# class Element(object):
# class Effect(object):
# class AttackEffect(Effect):
# class ReboundAttackEffect(AttackEffect):
# class LeechAttackEffect(AttackEffect):
# class BoostStatEffect(Effect):
# class ReduceStatEffect(Effect):
# class HealingEffect(Effect):
# class Spell(object):
# class GroupSpell(Spell):
# class SpellCommand:
# class CastSpell(SpellCommand):
# class Magic:
# class SpellBook:
#     def __init__(self, name, strong, weak, compatible):
#     def is_compatible_with(self, element):
#     def is_strong_against(self, element):
#     def is_weak_against(self, element):
#     def __init__(self, element, power, accuracy=100):
#     def target_evades(self, caster, target):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, accuracy, critical_hit_prob):
#     def compute_damage(self, caster, target, critical_hit=False):
#     def is_critical_hit(self):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, accuracy, critical_hit_prob, rebound):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, accuracy, critical_hit_prob, leech):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, stat):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, accuracy, stat):
#     def apply_effect(self, caster, target):
#     def apply_effect(self, caster, target):
#     def __init__(self, name, effects, element):
#     def is_castable_by(self, caster):
#     def cast(self, caster, target):
#     def cast(self, caster, targets):
#     def __init__(self, spell, caster, target):
#     def execute(self):
#     def execute(self):
#     def __init__(self):
#     def execute(self, command):
#     def __init__(self):
#     def cast_spell(self, spell, caster, target):
#     def __load_elements(xml_tree):
#     def __load_spells(xml_tree):
#     def load_spell_book(spell_book):
#     def get_element_object(identifier):
#     def get_spell_object(identifier):


from app.models import magic
import time

class MageManager:
    modifier_minmax = 6
    spell_limit     = 4
    stat_limit      = 100
    default_element = "Ice"

    def __init__(self, mage):
        self.mage = mage

        self.name    = mage.name

# Path: app/models/magic.py
# class Element(object):
# class Effect(object):
# class AttackEffect(Effect):
# class ReboundAttackEffect(AttackEffect):
# class LeechAttackEffect(AttackEffect):
# class BoostStatEffect(Effect):
# class ReduceStatEffect(Effect):
# class HealingEffect(Effect):
# class Spell(object):
# class GroupSpell(Spell):
# class SpellCommand:
# class CastSpell(SpellCommand):
# class Magic:
# class SpellBook:
#     def __init__(self, name, strong, weak, compatible):
#     def is_compatible_with(self, element):
#     def is_strong_against(self, element):
#     def is_weak_against(self, element):
#     def __init__(self, element, power, accuracy=100):
#     def target_evades(self, caster, target):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, accuracy, critical_hit_prob):
#     def compute_damage(self, caster, target, critical_hit=False):
#     def is_critical_hit(self):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, accuracy, critical_hit_prob, rebound):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, accuracy, critical_hit_prob, leech):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, stat):
#     def apply_effect(self, caster, target):
#     def __init__(self, element, power, accuracy, stat):
#     def apply_effect(self, caster, target):
#     def apply_effect(self, caster, target):
#     def __init__(self, name, effects, element):
#     def is_castable_by(self, caster):
#     def cast(self, caster, target):
#     def cast(self, caster, targets):
#     def __init__(self, spell, caster, target):
#     def execute(self):
#     def execute(self):
#     def __init__(self):
#     def execute(self, command):
#     def __init__(self):
#     def cast_spell(self, spell, caster, target):
#     def __load_elements(xml_tree):
#     def __load_spells(xml_tree):
#     def load_spell_book(spell_book):
#     def get_element_object(identifier):
#     def get_spell_object(identifier):


# Path: app/models/mage_manager.py
from app.models import magic
import time


class MageManager:
    modifier_minmax = 6
    spell_limit     = 4
    stat_limit      = 100
    default_element = "Ice"

    def __init__(self, mage):
        self.mage = mage

        self.name    = mage.name

        self.element = magic.SpellBook.get_element_object(self.mage.element)