protected void PrintStatusAddedMessage(object sender, StatusAddedEventArgs e)
        {
            Status status = e.Status;

            IFighter senderAsFighter = sender as IFighter;

            if (senderAsFighter == null)
            {
                throw new InvalidOperationException("BattleManager.PrintStatusAddedMessage() should only subscribe to instances of IFighter");
            }

            CriticalChanceMultiplierStatus  criticalChanceStatus       = status as CriticalChanceMultiplierStatus;
            StatMultiplierStatus            statMultiplierStatus       = status as StatMultiplierStatus;
            MagicMultiplierStatus           magicMultiplierStatus      = status as MagicMultiplierStatus;
            MagicResistanceMultiplierStatus resistanceMultiplierStatus = status as MagicResistanceMultiplierStatus;
            ReflectStatus             reflectStatus             = status as ReflectStatus;
            SpellCostMultiplierStatus spellCostMultiplierStatus = status as SpellCostMultiplierStatus;
            AutoEvadeStatus           autoEvadeStatus           = status as AutoEvadeStatus;
            CounterAttackStatus       counterAttackStatus       = status as CounterAttackStatus;
            BlindStatus blindStatus = status as BlindStatus;

            if (criticalChanceStatus != null)
            {
                PrintStatusAddedMessage(senderAsFighter, criticalChanceStatus);
            }
            if (statMultiplierStatus != null)
            {
                PrintStatusAddedMessage(senderAsFighter, statMultiplierStatus);
            }
            if (magicMultiplierStatus != null)
            {
                PrintStatusAddedMessage(senderAsFighter, magicMultiplierStatus);
            }
            if (resistanceMultiplierStatus != null)
            {
                PrintStatusAddedMessage(senderAsFighter, resistanceMultiplierStatus);
            }
            if (reflectStatus != null)
            {
                PrintStatusAddedMessage(senderAsFighter, reflectStatus);
            }
            if (spellCostMultiplierStatus != null)
            {
                PrintStatusAddedMessage(senderAsFighter, spellCostMultiplierStatus);
            }
            if (autoEvadeStatus != null)
            {
                PrintStatusAddedMessage(senderAsFighter, autoEvadeStatus);
            }
            if (counterAttackStatus != null)
            {
                PrintStatusAddedMessage(senderAsFighter, counterAttackStatus);
            }
            if (blindStatus != null)
            {
                PrintStatusAddedMessage(senderAsFighter, blindStatus);
            }
        }
        protected void PrintStatusAddedMessage(IFighter fighter, MagicResistanceMultiplierStatus status)
        {
            string    strengthenedOrWeakened = (status.Multiplier > 1.0) ? "strengthened" : "weakened";
            MagicType magicType = status.MagicType;

            string output = $"{fighter.DisplayName} has {strengthenedOrWeakened}";

            if (magicType != MagicType.All)
            {
                string magicTypeString = magicType.ToString().ToLower();
                output = $"{output} {magicTypeString}";
            }

            output = $"{output} resistance for {GetDurationString(status)}!";
            _output.WriteLine(output);
        }