コード例 #1
0
        public void BattleMessageModel_Get_Default_Should_Pass()
        {
            // Arrange

            // Act
            var result = new BattleMessagesModel();

            // Reset

            // Assert
            Assert.IsNotNull(result);

            Assert.AreEqual(EntityTypeEnum.Unknown, result.PlayerType);

            Assert.AreEqual(HitStatusEnum.Unknown, result.HitStatus);

            Assert.AreEqual(string.Empty, result.AttackerName);
            Assert.AreEqual(string.Empty, result.TargetName);
            Assert.AreEqual(string.Empty, result.AttackStatus);
            Assert.AreEqual(string.Empty, result.TurnMessage);
            Assert.AreEqual(string.Empty, result.TurnMessageSpecial);
            Assert.AreEqual(string.Empty, result.LevelUpMessage);

            Assert.AreEqual(0, result.DamageAmount);
            Assert.AreEqual(0, result.CurrentHealth);

            Assert.AreEqual(@"<html><body bgcolor=""#E8D0B6""><p>", result.htmlHead);
            Assert.AreEqual(@"</p></body></html>", result.htmlTail);
        }
コード例 #2
0
        public void BattleMessageModel_ClearMessage_Should_Pass()
        {
            // Arrange
            var result = new BattleMessagesModel
            {
                PlayerType   = PlayerTypeEnum.Character,
                HitStatus    = HitStatusEnum.Hit,
                AttackerName = "CaptainSU"
            };

            // Act
            result.ClearMessages();

            // Reset

            // Assert
            Assert.AreEqual(PlayerTypeEnum.Unknown, result.PlayerType);

            Assert.AreEqual(HitStatusEnum.Unknown, result.HitStatus);

            Assert.AreEqual(string.Empty, result.AttackerName);
            Assert.AreEqual(string.Empty, result.TargetName);
            Assert.AreEqual(string.Empty, result.AttackStatus);
            Assert.AreEqual(string.Empty, result.TurnMessage);
            Assert.AreEqual(string.Empty, result.TurnMessageSpecial);
            Assert.AreEqual(string.Empty, result.LevelUpMessage);

            Assert.AreEqual(0, result.DamageAmount);
            Assert.AreEqual(0, result.CurrentHealth);

            Assert.AreEqual(@"<html><body bgcolor=""#E8D0B6""><p>", result.htmlHead);
            Assert.AreEqual(@"</p></body></html>", result.htmlTail);
        }
コード例 #3
0
        public void BattleMessageModel_Constructor_Default_Should_Pass()
        {
            // Arrange

            // Act
            var result = new BattleMessagesModel();

            // Reset

            // Assert
            Assert.IsNotNull(result);
        }
コード例 #4
0
        public void BattleMessageModel_GetTurnMessage_Default_Should_Pass()
        {
            // Arrange
            var message = new BattleMessagesModel();

            // Act
            var result = message.GetTurnMessage();

            // Reset

            // Assert
            Assert.IsNotNull(result);
        }
コード例 #5
0
        public void BattleMessageModel_GetDamageMessage_Default_Should_Pass()
        {
            // Arrange
            var message = new BattleMessagesModel();

            // Act
            var result = message.GetDamageMessage();

            // Reset

            // Assert

            Assert.AreEqual(" for 0 damage ", result);
        }
コード例 #6
0
        /// <summary>
        /// // MonsterModel Attacks CharacterModel
        /// </summary>
        /// <param name="Attacker"></param>
        /// <param name="AttackScore"></param>
        /// <param name="Target"></param>
        /// <param name="DefenseScore"></param>
        /// <returns></returns>
        public bool TurnAsAttack(PlayerInfoModel Attacker, PlayerInfoModel Target)
        {
            if (Attacker == null)
            {
                return(false);
            }

            if (Target == null)
            {
                return(false);
            }

            // Set Messages to empty
            ClearBattleMessages();

            // Do the Attack
            CalculateAttackStatus(Attacker, Target);

            switch (BattleMessagesModel.HitStatus)
            {
            case HitStatusEnum.Miss:
                // It's a Miss

                break;

            case HitStatusEnum.Hit:
                // It's a Hit

                //Calculate Damage
                BattleMessagesModel.DamageAmount = Attacker.GetDamageRollValue();

                // Apply the Damage
                Target.TakeDamage(BattleMessagesModel.DamageAmount);
                BattleMessagesModel.CurrentHealth      = Target.CurrentHealth;
                BattleMessagesModel.TurnMessageSpecial = BattleMessagesModel.GetCurrentHealthMessage();

                // Check if Dead and Remove
                RemoveIfDead(Target);

                // If it is a character apply the experience earned
                CalculateExperience(Attacker, Target);

                break;
            }

            BattleMessagesModel.TurnMessage = Attacker.Name + BattleMessagesModel.AttackStatus + Target.Name + BattleMessagesModel.TurnMessageSpecial + BattleMessagesModel.ExperienceEarned;
            Debug.WriteLine(BattleMessagesModel.TurnMessage);

            return(true);
        }
コード例 #7
0
        public void BattleMessageModel_GetHTMLFormattedTurnMessage_HitStatus_CriticalMiss_Should_Pass()
        {
            // Arrange
            var message = new BattleMessagesModel();

            message.HitStatus = HitStatusEnum.CriticalMiss;

            // Act
            var result = message.GetHTMLFormattedTurnMessage();

            // Reset

            // Assert
            Assert.IsNotNull(result);
        }
コード例 #8
0
        public void BattleMessageModel_GetHTMLFormattedTurnMessage_Character_Default_Should_Pass()
        {
            // Arrange
            var message = new BattleMessagesModel();

            message.PlayerType = EntityTypeEnum.Character;

            // Act
            var result = message.GetHTMLFormattedTurnMessage();

            // Reset

            // Assert
            Assert.IsNotNull(result);
        }
コード例 #9
0
        public void BattleMessageModel_ClearMessages_HitStatus_CriticalMiss_Should_Pass()
        {
            // Arrange
            var message = new BattleMessagesModel();

            message.HitStatus              = HitStatusEnum.CriticalMiss;
            message.PlayerType             = PlayerTypeEnum.Monster;
            message.AttackerName           = "Minnie";
            message.TargetName             = "Target";
            message.AttackStatus           = "Attacking";
            message.TurnMessage            = "turn message";
            message.TurnMessageSpecial     = "turn message special";
            message.ExperienceEarned       = "experience";
            message.LevelUpMessage         = "level up";
            message.BadCriticalMissMessage = "bad critical message";

            message.DamageAmount  = 10;
            message.CurrentHealth = 45;

            // Act
            var result = message.ClearMessages();

            // Reset

            // Assert
            Assert.IsTrue(result);
            Assert.AreEqual(HitStatusEnum.Unknown, message.HitStatus);
            Assert.AreEqual(PlayerTypeEnum.Unknown, message.PlayerType);
            Assert.AreEqual(string.Empty, message.AttackerName);
            Assert.AreEqual(string.Empty, message.TargetName);
            Assert.AreEqual(string.Empty, message.AttackerName);
            Assert.AreEqual(string.Empty, message.AttackStatus);
            Assert.AreEqual(string.Empty, message.TurnMessage);
            Assert.AreEqual(string.Empty, message.TurnMessageSpecial);
            Assert.AreEqual(string.Empty, message.ExperienceEarned);
            Assert.AreEqual(string.Empty, message.ExperienceEarned);
            Assert.AreEqual(string.Empty, message.LevelUpMessage);
            Assert.AreEqual(string.Empty, message.BadCriticalMissMessage);
            Assert.AreEqual(0, message.DamageAmount);
            Assert.AreEqual(0, message.CurrentHealth);
        }
コード例 #10
0
        /// <summary>
        /// // MonsterModel Attacks CharacterModel
        /// </summary>
        /// <param name="Attacker"></param>
        /// <param name="AttackScore"></param>
        /// <param name="Target"></param>
        /// <param name="DefenseScore"></param>
        /// <returns></returns>
        public bool TurnAsAttack(PlayerInfoModel Attacker, PlayerInfoModel Target)
        {
            if (Attacker == null)
            {
                return(false);
            }



            if (Target == null)
            {
                return(false);
            }

            // Set Messages to empty
            BattleMessagesModel.ClearMessages();

            // Do the Attack
            CalculateAttackStatus(Attacker, Target);

            if (Attacker.PlayerType == PlayerTypeEnum.Character && Attacker.AttributesPrime())
            {
                BattleMessagesModel.HitStatus = HitStatusEnum.Hit;
            }

            // Hackathon
            // Hackathon Scenario 2, Bob alwasys misses
            if (Attacker.Name.Equals("Bob"))
            {
                BattleMessagesModel.HitStatus   = HitStatusEnum.Miss;
                BattleMessagesModel.TurnMessage = "Bob always Misses";
                Debug.WriteLine(BattleMessagesModel.TurnMessage);
                return(true);
            }

            switch (BattleMessagesModel.HitStatus)
            {
            case HitStatusEnum.Miss:
                // It's a Miss
                RemoveIfDead(Attacker);
                break;

            case HitStatusEnum.Hit:
                // It's a Hit

                //Calculate Damage
                BattleMessagesModel.DamageAmount = Attacker.GetDamageRollValue();

                if (Attacker.PlayerType == PlayerTypeEnum.Character && Attacker.AttributesPrime())
                {
                    BattleMessagesModel.DamageAmount += Attacker.GetDamageLevelBonus;
                    var myItem = ItemIndexViewModel.Instance.GetItem(Attacker.PrimaryHand);
                    if (myItem != null)
                    {
                        // Dice of the weapon.  So sword of Damage 10 is d10
                        BattleMessagesModel.DamageAmount += myItem.Damage;
                    }
                    Debug.WriteLine("Prime Damage Done Boyyyy");
                }

                if (Attacker.PlayerType == PlayerTypeEnum.Character)
                {
                    if (Helpers.StrengthWeaknessHelper.characterStrongAgainst(Attacker.CharEnum.ToString(), Target.MonstEnum.ToString()))
                    {
                        BattleMessagesModel.DamageAmount *= 2;
                    }
                }
                else
                {
                    if (Helpers.StrengthWeaknessHelper.monsterStrength(Target.CharEnum.ToString(), Attacker.MonstEnum.ToString()))
                    {
                        BattleMessagesModel.DamageAmount *= 2;
                    }
                }

                // Apply the Damage
                ApplyDamage(Target);

                BattleMessagesModel.TurnMessageSpecial = BattleMessagesModel.GetCurrentHealthMessage();

                // Check if Dead and Remove
                RemoveIfDead(Target);
                RemoveIfDead(Attacker);

                // If it is a character apply the experience earned
                CalculateExperience(Attacker, Target);

                break;
            }

            BattleMessagesModel.TurnMessage = Attacker.Name + BattleMessagesModel.AttackStatus + Target.Name + BattleMessagesModel.TurnMessageSpecial + BattleMessagesModel.ExperienceEarned;
            Debug.WriteLine(BattleMessagesModel.TurnMessage);

            return(true);
        }
コード例 #11
0
        /// <summary>
        /// // MonsterModel Attacks CharacterModel
        /// </summary>
        /// <param name="Attacker"></param>
        /// <param name="AttackScore"></param>
        /// <param name="Target"></param>
        /// <param name="DefenseScore"></param>
        /// <returns></returns>
        public bool TurnAsAttack(PlayerInfoModel Attacker, PlayerInfoModel Target)
        {
            if (Attacker == null)
            {
                return(false);
            }

            if (Target == null)
            {
                return(false);
            }

            // Set Messages to empty
            BattleMessagesModel.ClearMessages();

            // Do the Attack
            CalculateAttackStatus(Attacker, Target);

            // Hackathon
            // Hackathon Scenario 2, Bob alwasys misses
            if (Attacker.Name.Equals("Bob"))
            {
                BattleMessagesModel.HitStatus   = HitStatusEnum.Miss;
                BattleMessagesModel.TurnMessage = "Bob always Misses";
                Debug.WriteLine(BattleMessagesModel.TurnMessage);
                return(true);
            }

            // See if the Battle Settings Overrides the Roll
            BattleMessagesModel.HitStatus = BattleSettingsOverride(Attacker);

            switch (BattleMessagesModel.HitStatus)
            {
            case HitStatusEnum.Miss:
                // It's a Miss

                break;

            case HitStatusEnum.Hit:
                // It's a Hit

                //Calculate Damage
                BattleMessagesModel.DamageAmount = Attacker.GetDamageRollValue();

                // Apply the Damage
                ApplyDamage(Target);

                BattleMessagesModel.TurnMessageSpecial = BattleMessagesModel.GetCurrentHealthMessage();

                // Check if Dead and Remove
                RemoveIfDead(Target);

                // If it is a character apply the experience earned
                CalculateExperience(Attacker, Target);

                break;
            }

            BattleMessagesModel.TurnMessage = Attacker.Name + BattleMessagesModel.AttackStatus + Target.Name + BattleMessagesModel.TurnMessageSpecial + BattleMessagesModel.ExperienceEarned;
            Debug.WriteLine(BattleMessagesModel.TurnMessage);

            return(true);
        }
コード例 #12
0
        /// <summary>
        /// Run Auto Battle
        /// </summary>
        /// <returns></returns>
        public async Task <bool> RunAutoBattle()
        {
            RoundEnum RoundCondition;

            Debug.WriteLine("Auto Battle Starting");

            // Auto Battle, does all the steps that a human would do.

            // Prepare for Battle
            bool Ifeelgood = false;
            var  d20       = DiceHelper.RollDice(1, 20);

            if (d20 < 10)
            {
                //Do not Use Special Ability
                Ifeelgood = false;
            }

            CreateCharacterParty(Ifeelgood);

            // Start Battle in AutoBattle mode
            StartBattle(true);

            // Fight Loop. Continue until Game is Over...
            do
            {
                // Check for excessive duration.
                if (DetectInfinateLoop())
                {
                    Debug.WriteLine("Aborting, More than Max Rounds");
                    EndBattle();
                    return(false);
                }

                Debug.WriteLine("Next Turn");

                // Do the turn...
                // If the round is over start a new one...
                RoundCondition = RoundNextTurn();

                if (RoundCondition == RoundEnum.NewRound)
                {
                    NewRound();
                    Debug.WriteLine("New Round");
                    //if round is 2 reincarnate any character
                    if (BattleScore.RoundCount == 2)
                    {
                        if (BattleScore.CharacterModelDeathList.Count > 0)
                        {
                            BattleScore.CharacterModelDeathList[0].Alive = true;
                            CharacterList.Add(BattleScore.CharacterModelDeathList[0]);
                            BattleMessagesModel.ReincarnatedCharName = BattleScore.CharacterModelDeathList[0].Name;
                            Debug.WriteLine(BattleMessagesModel.GetReincarnatedPlayerMessage());
                            WasReincarnated = true;
                        }
                    }
                }
            } while (RoundCondition != RoundEnum.GameOver);

            Debug.WriteLine("Game Over");

            // Wrap up
            EndBattle();

            return(true);
        }
コード例 #13
0
        /// <summary>
        /// Attack the Target this Turn
        /// </summary>
        /// <param name="Attacker"></param>
        /// <param name="AttackScore"></param>
        /// <param name="Target"></param>
        /// <param name="DefenseScore"></param>
        /// <returns></returns>
        public bool TurnAsAttack(PlayerInfoModel Attacker, PlayerInfoModel Target)
        {
            if (Attacker == null)
            {
                return(false);
            }

            if (Target == null)
            {
                return(false);
            }

            BattleMessagesModel.TurnMessage        = string.Empty;
            BattleMessagesModel.TurnMessageSpecial = string.Empty;
            BattleMessagesModel.AttackStatus       = string.Empty;

            BattleMessagesModel.PlayerType = PersonTypeEnum.Monster;

            var AttackScore  = Attacker.Level + Attacker.CurrentStrength;
            var DefenseScore = Target.CurrentThiccness + Target.Level;

            // Choose who to attack

            BattleMessagesModel.TargetName   = Target.Name;
            BattleMessagesModel.AttackerName = Attacker.Name;


            // Hack #47: Character Attribute equal Prime should deal Max damage
            if (isTotalPrime(Attacker) == true)
            {
                BattleMessagesModel.HitStatus = HitStatusEnum.Hit;
            }
            else
            {
                BattleMessagesModel.HitStatus = RollToHitTarget(AttackScore, DefenseScore);
            }

            // Hackathon #2: Characters named Bob should miss
            if (Attacker.Name.Contains("Bob"))
            {
                BattleMessagesModel.HitStatus = HitStatusEnum.Miss;
            }

            Debug.WriteLine(BattleMessagesModel.GetTurnMessage());

            // It's a Miss
            if (BattleMessagesModel.HitStatus == HitStatusEnum.Miss)
            {
                return(true);
            }

            // It's a Hit
            if (BattleMessagesModel.HitStatus == HitStatusEnum.Hit)
            {
                int Damage = Attacker.CurrentStrength;

                //Calculate Damage
                if (Attacker.Head != null)
                {
                    Damage = CalculateDamage(Attacker);

                    // Hack 47: Continued
                    Damage = isPrime(Attacker, Damage);

                    // Hackathon 43: Go SU RedHawks
                    //if (ItemIndexViewModel.Instance.GetItem(Attacker.ItemOne).Description == "Go SU RedHawks")
                    //{
                    //    // Inflict 2x damage
                    //    Damage = Attacker.CurrentStrength + (2 * (ItemIndexViewModel.Instance.GetItem(Attacker.ItemOne).Value));
                    //    Debug.WriteLine("Go SU!");
                    //}
                    //else
                    //{
                    //    Damage = Attacker.CurrentStrength + ItemIndexViewModel.Instance.GetItem(Attacker.ItemOne).Value;
                    //}
                }

                BattleMessagesModel.DamageAmount = Damage;

                Target.TakeDamage(BattleMessagesModel.DamageAmount);

                // Hackathon 25: Rebound Damage
                float chance = DiceHelper.RollDice(1, 100) / 100f;
                if (SettingsHelper.ReboundEnabled && chance <= SettingsHelper.REBOUND_CHANCE)
                {
                    int ReboundDamage = (int)(Damage / 2);

                    // Don't allow the player to die from rebound damage, leave them with at least 1 hit point
                    if (Attacker.CurrentHitPoints - ReboundDamage <= 0)
                    {
                        ReboundDamage = Attacker.CurrentHitPoints - 1;
                    }

                    Debug.WriteLine("The attack rebounded! Took " + ReboundDamage + " damage!");
                    Attacker.TakeDamage(ReboundDamage);
                }

                // Hackathon 24: Rental Insurance (Break Item)
                chance = DiceHelper.RollDice(1, 100) / 100f;
                if (SettingsHelper.RentalInsuranceEnabled && chance <= SettingsHelper.RENTAL_INSURANCE_TEST)
                {
                    Debug.WriteLine(Attacker.Name + "'s " + ItemIndexViewModel.Instance.GetItem(Attacker.Head).Name + " broke!");
                    Attacker.Head = null;
                }
            }

            BattleMessagesModel.CurrentHealth      = Target.CurrentHitPoints;
            BattleMessagesModel.TurnMessageSpecial = BattleMessagesModel.GetCurrentHealthMessage();

            //Check if Target is dead
            RemoveIfDead(Target);

            BattleMessagesModel.TurnMessage = Attacker.Name + BattleMessagesModel.AttackStatus + Target.Name + BattleMessagesModel.TurnMessageSpecial;
            Debug.WriteLine(BattleMessagesModel.TurnMessage);

            return(true);
        }
コード例 #14
0
        /// <summary>
        /// // MonsterModel Attacks CharacterModel
        /// </summary>
        /// <param name="Attacker"></param>
        /// <param name="AttackScore"></param>
        /// <param name="Target"></param>
        /// <param name="DefenseScore"></param>
        /// <returns></returns>
        public bool TurnAsAttack(PlayerInfoModel Attacker, PlayerInfoModel Target, bool UseSpecialAbility)
        {
            if (Attacker == null)
            {
                return(false);
            }

            if (Target == null)
            {
                return(false);
            }

            BattleMessagesModel.ClearMessages();

            //TODO
            BattleMessagesModel.PlayerType = PlayerTypeEnum.Monster;
            var AttackScore = 0;

            // Choose who to attack

            BattleMessagesModel.TargetName   = Target.Name;
            BattleMessagesModel.AttackerName = Attacker.Name;

            CurrentAttacker = Attacker;
            CurrentDefender = Target;

            if (Attacker.PlayerType == PlayerTypeEnum.Character)
            {
                // bool UseSpecialAbility = RollToUseSpecialAbilityOnTarget();
                if (UseSpecialAbility)
                {
                    if (Attacker.ISSpecialAbilityNotUsed == true)
                    {
                        Debug.WriteLine(BattleMessagesModel.GetSpecialAbilityMessage());
                        AttackScore = Attacker.Level + Attacker.GetAttack(UseSpecialAbility);
                    }
                }

                UseSpecialAbility = false;
            }

            if (Attacker.PlayerType == PlayerTypeEnum.Monster)
            {
                AttackScore = Attacker.Level + Attacker.GetAttack();
            }

            // Hack #43
            if (Attacker.AttackWithGoSUItem)
            {
                BattleMessagesModel.SpecialMessage = "Go SU!";
                Debug.WriteLine(BattleMessagesModel.SpecialMessage);
            }

            // Hack #27
            if (Attacker.BrokenItems.Count > 0)
            {
                BattleMessagesModel.ItemsBroken = string.Empty;
                foreach (ItemModel BrokenItem in Attacker.BrokenItems)
                {
                    BattleMessagesModel.ItemsBroken += "Item " + BrokenItem.Name + " broke" + "\n";
                }

                Debug.WriteLine(BattleMessagesModel.ItemsBroken);

                // reset
                Attacker.BrokenItems = new List <ItemModel>();
            }

            var DefenseScore = Target.GetDefense() + Target.Level;


            // Hackathon
            // Hackathon Scenario 2, Bob alwasys misses
            if (Attacker.Name.Equals("Bob"))
            {
                BattleMessagesModel.HitStatus   = HitStatusEnum.Miss;
                BattleMessagesModel.TurnMessage = "Bob always Misses";
                Debug.WriteLine(BattleMessagesModel.TurnMessage);
                return(true);
            }

            // Hack #47
            var AttributeSumPrimeCheck = CheckIfAttributesSumtoPrime(Attacker);

            BattleMessagesModel.HitStatus = HitStatusEnum.Hit;
            if (!AttributeSumPrimeCheck)
            {
                BattleMessagesModel.HitStatus = RollToHitTarget(AttackScore, DefenseScore);

                // Player has died due to Hack #48, i.e., player roll was same as secret
                if (BattleMessagesModel.HitStatus == HitStatusEnum.Unknown)
                {
                    RemoveIfDead(Attacker);
                    BattleMessagesModel.SpecialMessage = "The CIA regrets to inform you that your character died.";
                    Debug.WriteLine(BattleMessagesModel.SpecialMessage);
                    return(true);
                }
            }

            Debug.WriteLine(BattleMessagesModel.GetTurnMessage());

            // It's a Miss
            if (BattleMessagesModel.HitStatus == HitStatusEnum.Miss)
            {
                BattleMessagesModel.TurnMessage = Attacker.Name + BattleMessagesModel.AttackStatus + Target.Name + BattleMessagesModel.TurnMessageSpecial.Replace("\n", Environment.NewLine);
                Debug.WriteLine(BattleMessagesModel.TurnMessage);
                return(true);
            }

            // It's a Hit
            if (BattleMessagesModel.HitStatus == HitStatusEnum.Hit)
            {
                //Calculate Damage
                BattleMessagesModel.DamageAmount = Attacker.GetDamageRollValue(AttributeSumPrimeCheck);

                //Hack #31, When Round Count exceeds 100, Monster Damage power becomes 10x
                if (BattleScore.RoundCount > 100 && Attacker.PlayerType == PlayerTypeEnum.Monster)
                {
                    BattleMessagesModel.DamageAmount *= 10;
                }
                Target.TakeDamage(BattleMessagesModel.DamageAmount);
            }

            BattleMessagesModel.CurrentHealth      = Target.CurrentHealth;
            BattleMessagesModel.TurnMessageSpecial = BattleMessagesModel.GetCurrentHealthMessage();

            //Hack #33, Character in the turn Loose its current health when it is Round 13.
            if (BattleScore.RoundCount == 13)
            {
                if (Attacker.PlayerType == PlayerTypeEnum.Character)
                {
                    Attacker.CurrentHealth = 0;
                }
                if (Target.PlayerType == PlayerTypeEnum.Character)
                {
                    Target.CurrentHealth = 0;
                }
                Debug.WriteLine("Its Lucky 13 round, so Character Loose its Health");
            }
            RemoveIfDead(Target);

            // If it is a character apply the experience earned
            CalculateExperience(Attacker, Target);

            BattleMessagesModel.TurnMessage = Attacker.Name + BattleMessagesModel.AttackStatus + Target.Name + BattleMessagesModel.TurnMessageSpecial.Replace("\n", Environment.NewLine);
            Debug.WriteLine(BattleMessagesModel.TurnMessage);

            return(true);
        }