internal void Act()
        {
            if (IsDead)
            {
                return;
            }

            if (CanUseSpecial)
            {
                AttackType attackType = _controller.ChooseAttackType(this);
                switch (attackType)
                {
                case AttackType.BaseAttack:
                    PerformBaseAttack();
                    break;

                case AttackType.SpecialAction:
                    PerformSpecialAction();
                    CurrentMana -= ManaConsumption;
                    break;

                default: throw new NotImplementedException();
                }
            }
            else
            {
                PerformBaseAttack();
            }

            CurrentMana += MANA_REGEN_PER_TURN;
        }
        internal void Act()
        {
            if (IsDead)
            {
                return;
            }

            _controller.ChooseAttackType(this);
        }