Example #1
0
        public void LearnMistakes(Player player, string skillName, int delay = 0)
        {
            var skill = player.Skills.FirstOrDefault(x => x.SkillName.Equals(skillName, StringComparison.CurrentCultureIgnoreCase));

            if (skill == null)
            {
                return;
            }

            if (skill.Proficiency == 100)
            {
                return;
            }

            var increase = new Dice().Roll(1, 1, 5);

            skill.Proficiency += increase;

            _gain.GainExperiencePoints(player, 100 * skill.Level / 4, false);

            _clientUi.UpdateExp(player);

            _writeToClient.WriteLine(
                $"<p class='improve'>You learn from your mistakes and gain {100 * skill.Level / 4} experience points.</p>" +
                $"<p class='improve'>Your knowledge of {skill.SkillName} increases by {increase}%.</p>",
                player.ConnectionId, delay);
        }
Example #2
0
        public int Haggle(Player player, Player target)
        {
            var foundSkill = player.Skills.FirstOrDefault(x =>
                                                          x.SkillName.StartsWith("haggle", StringComparison.CurrentCultureIgnoreCase));

            if (foundSkill == null)
            {
                return(0);
            }

            var getSkill = _cache.GetSkill(foundSkill.SkillId);

            if (getSkill == null)
            {
                var skill = _cache.GetAllSkills().FirstOrDefault(x => x.Name.Equals("haggle", StringComparison.CurrentCultureIgnoreCase));
                foundSkill.SkillId = skill.Id;
                getSkill           = skill;
            }

            var proficiency = foundSkill.Proficiency;
            var success     = _dice.Roll(1, 1, 100);

            if (success == 1 || success == 101)
            {
                return(0);
            }

            //TODO Charisma Check
            if (proficiency >= success)
            {
                _writer.WriteLine($"<p>You charm {target.Name} in offering you favourable prices.</p>",
                                  player.ConnectionId);
                return(25);
            }

            _writer.WriteLine("<p>Your haggle attempts fail.</p>",
                              player.ConnectionId);

            if (foundSkill.Proficiency == 100)
            {
                return(0);
            }

            var increase = _dice.Roll(1, 1, 5);

            foundSkill.Proficiency += increase;

            _gain.GainExperiencePoints(player, 100 * foundSkill.Level / 4, false);

            _updateClientUi.UpdateExp(player);

            _writer.WriteLine(
                $"<p class='improve'>You learn from your mistakes and gain {100 * foundSkill.Level / 4} experience points.</p>" +
                $"<p class='improve'>Your knowledge of {foundSkill.SkillName} increases by {increase}%.</p>",
                player.ConnectionId, 0);

            return(0);
        }
Example #3
0
        public void Fight(Player player, string victim, Room room, bool isMurder)
        {
            var target = FindTarget(player, victim, room, isMurder);

            if (target == null)
            {
                if (player.Status == CharacterStatus.Status.Fighting)
                {
                    player.Target = "";
                    player.Status = CharacterStatus.Status.Standing;

                    _cache.RemoveCharFromCombat(player.Id.ToString());
                }

                _writer.WriteLine("<p>They are not here.</p>", player.ConnectionId);
                return;
            }

            if (player.Attributes.Attribute[EffectLocation.Hitpoints] <= 0)
            {
                _writer.WriteLine("<p>You cannot do that while dead.</p>", player.ConnectionId);
                return;
            }

            if (target.Attributes.Attribute[EffectLocation.Hitpoints] <= 0)
            {
                _writer.WriteLine("<p>They are already dead.</p>", player.ConnectionId);
                return;
            }

            // For the UI to create a nice gap between rounds of auto attacks
            _writer.WriteLine($"<p class='combat-start'></p>", player.ConnectionId);

            player.Target = target.Name;
            player.Status = CharacterStatus.Status.Fighting;
            target.Status = CharacterStatus.Status.Fighting;
            target.Target = string.IsNullOrEmpty(target.Target) ? player.Name : target.Target; //for group combat, if target is ganged, there target should not be changed when combat is initiated.

            if (!_cache.IsCharInCombat(player.Id.ToString()))
            {
                _cache.AddCharToCombat(player.Id.ToString(), player);
            }

            if (!_cache.IsCharInCombat(target.Id.ToString()))
            {
                _cache.AddCharToCombat(target.Id.ToString(), target);
            }
            var chanceToHit = _formulas.ToHitChance(player, target);
            var doesHit     = _formulas.DoesHit(chanceToHit);
            var weapon      = GetWeapon(player);

            if (doesHit)
            {
                // avoidance percentage can be improved by core skills
                // such as improved parry, acrobatic etc
                // instead of rolling a D10, roll a D6 for a close to 15% increase in chance

                // Move to formula, needs to use _dice instead of making a new instance
                var avoidanceRoll = new Dice().Roll(1, 1, 10);


                //10% chance to attempt a dodge
                if (avoidanceRoll == 1)
                {
                    var dodge = GetSkill("dodge", player);

                    if (dodge != null)
                    {
                        _writer.WriteLine($"<p>You dodge {target.Name}'s attack.</p>", player.ConnectionId);
                        _writer.WriteLine($"<p>{player.Name} dodges your attack.</p>", target.ConnectionId);
                        return;
                    }
                }

                //10% chance to parry
                if (avoidanceRoll == 2)
                {
                    var skill = GetSkill("parry", player);

                    if (skill != null)
                    {
                        _writer.WriteLine($"<p>You parry {target.Name}'s attack.</p>", player.ConnectionId);
                        _writer.WriteLine($"<p>{player.Name} parries your attack.</p>", target.ConnectionId);
                        return;
                    }
                }

                // Block
                if (avoidanceRoll == 3)
                {
                    //var chanceToBlock = _formulas.ToBlockChance(target, player);
                    //var doesBlock = _formulas.DoesHit(chanceToBlock);

                    //if (doesBlock)
                    //{
                    //    var skill = GetSkill("shieldblock", player);

                    //    if (skill != null)
                    //    {
                    //        _writer.WriteLine($"You block {target.Name}'s attack with your shield.", player.ConnectionId);
                    //        _writer.WriteLine($"{player.Name} blocks your attack with their shield.", player.ConnectionId);
                    //    }
                    //}
                    //else
                    //{
                    //    // block fail
                    //}
                }


                var damage = _formulas.CalculateDamage(player, target, weapon);

                if (_formulas.IsCriticalHit())
                {
                    // double damage
                    damage *= 2;
                }


                HarmTarget(target, damage);

                DisplayDamage(player, target, room, weapon, damage);

                _clientUi.UpdateHP(target);

                if (!IsTargetAlive(target))
                {
                    player.Target = String.Empty;
                    player.Status = CharacterStatus.Status.Standing;
                    target.Status = CharacterStatus.Status.Ghost;
                    target.Target = string.Empty;

                    DeathCry(room, target);

                    _gain.GainExperiencePoints(player, target);

                    _writer.WriteLine("<p class='dead'>You are dead. R.I.P.</p>", target.ConnectionId);

                    var targetName = target.Name.ToLower(CultureInfo.CurrentCulture);
                    var corpse     = new Item.Item()
                    {
                        Name        = $"The corpse of {targetName}.",
                        Description = new Description()
                        {
                            Room = $"The corpse of {targetName} is laying here.",
                            Exam = $"The corpse of {targetName} is laying here. {target.Description}",
                            Look = $"The corpse of {targetName} is laying here. {target.Description}",
                        },
                        Slot      = Equipment.EqSlot.Held,
                        Level     = 1,
                        Stuck     = true,
                        Container = new Container()
                        {
                            Items   = new ItemList(),
                            CanLock = false,
                            IsOpen  = true,
                            CanOpen = false,
                        },
                        ItemType   = Item.Item.ItemTypes.Container,
                        DecayTimer = 300 // 5 minutes
                    };

                    foreach (var item in target.Inventory)
                    {
                        corpse.Container.Items.Add(item);
                    }

                    // clear list
                    target.Inventory = new ItemList();
                    // clear equipped
                    target.Equipped = new Equipment();

                    // add corpse to room
                    room.Items.Add(corpse);
                    _clientUi.UpdateInventory(target);
                    _clientUi.UpdateEquipment(target);
                    _clientUi.UpdateScore(target);

                    room.Clean = false;

                    _cache.RemoveCharFromCombat(target.Id.ToString());
                    _cache.RemoveCharFromCombat(player.Id.ToString());

                    if (target.ConnectionId.Equals("mob", StringComparison.CurrentCultureIgnoreCase))
                    {
                        room.Mobs.Remove(target);
                    }
                    else
                    {
                        room.Players.Remove(target);
                    }
                    // take player to Temple / recall area
                }
            }
            else
            {
                DisplayMiss(player, target, room, weapon);
                // miss message
                // gain improvements on weapon skill


                SkillList getWeaponSkill = null;
                if (weapon != null && !player.ConnectionId.Equals("mob", StringComparison.CurrentCultureIgnoreCase))
                {
                    // urgh this is ugly
                    getWeaponSkill = player.Skills.FirstOrDefault(x =>
                                                                  x.SkillName.Replace(" ", string.Empty)
                                                                  .Equals(Enum.GetName(typeof(Item.Item.WeaponTypes), weapon.WeaponType)));
                }

                if (weapon == null && !player.ConnectionId.Equals("mob", StringComparison.CurrentCultureIgnoreCase))
                {
                    getWeaponSkill = player.Skills.FirstOrDefault(x =>
                                                                  x.SkillName.Equals("Hand To Hand", StringComparison.CurrentCultureIgnoreCase));
                }

                if (getWeaponSkill != null)
                {
                    getWeaponSkill.Proficiency += 1;
                    _writer.WriteLine($"<p class='improve'>Your proficiency in {getWeaponSkill.SkillName} has increased.</p>");

                    _gain.GainExperiencePoints(player, getWeaponSkill.Level * 50);
                }
            }
        }
Example #4
0
        public int Rescue(Player player, Player target, Room room, string obj)
        {
            if (target == null)
            {
                _writer.WriteLine("Rescue whom?", player.ConnectionId);
                return(0);
            }

            if (player.Followers.FirstOrDefault(x => x.Name.Equals(target.Name)) == null)
            {
                _writer.WriteLine("You can only rescue those in your group.", player.ConnectionId);
                return(0);
            }


            if ((target.Status & CharacterStatus.Status.Fighting) == 0)
            {
                _writer.WriteLine($"{target.Name} is not fighting right now.", player.ConnectionId);

                return(0);
            }

            if (target == player)
            {
                _writer.WriteLine("What about fleeing instead?", player.ConnectionId);

                return(0);
            }

            var foundSkill = player.Skills
                             .FirstOrDefault(x => x.SkillName.Equals("Rescue", StringComparison.CurrentCultureIgnoreCase));

            var chance = foundSkill
                         .Proficiency;

            if (_dice.Roll(1, 1, 100) < chance)
            {
                player.Target = target.Target;
                target.Target = string.Empty;
                target.Status = CharacterStatus.Status.Standing;

                var findTarget = Helpers.FindMob(Helpers.findNth($"{player.Target}"), room) ?? Helpers.FindPlayer(Helpers.findNth($"{player.Target}"), room);

                findTarget.Target = player.Name;

                var skillMessage = new SkillMessage()
                {
                    Hit =
                    {
                        ToPlayer = $"You rescue {target.Name}!",
                        ToRoom   = $"{player.Name} rescues {target.Name}!",
                        ToTarget = $"{player.Name} rescues you!"
                    }
                };

                _skillManager.EmoteAction(player, target, room, skillMessage);

                _skillManager.updateCombat(player, findTarget, room);
                return(0);
            }
            var increase = _dice.Roll(1, 1, 5);

            _gain.GainExperiencePoints(player, 100 * foundSkill.Level / 4, false);

            _updateClientUi.UpdateExp(player);

            _writer.WriteLine(
                $"<p class='improve'>You learn from your mistakes and gain {100 * foundSkill.Level / 4} experience points.</p>" +
                $"<p class='improve'>Your knowledge of {foundSkill.SkillName} increases by {increase}%.</p>",
                player.ConnectionId, 0);

            return(0);
        }
Example #5
0
        public void Fight(Player player, string victim, Room room, bool isMurder)
        {
            try
            {
                if (player.Affects.Stunned)
                {
                    _writer.WriteLine("<p>You are too stunned to attack this round.<p>", player.ConnectionId);
                    return;
                }
                // refactor this, makes no sense
                // murder command need its on'y check here should be generic find the target player or mob
                var target = FindTarget(player, victim, room, isMurder) ?? FindTarget(player, victim, room, true);

                if (target == null)
                {
                    if (player.Status == CharacterStatus.Status.Fighting)
                    {
                        player.Target = "";
                        player.Status = CharacterStatus.Status.Standing;

                        _cache.RemoveCharFromCombat(player.Id.ToString());
                    }


                    if (player.Status != CharacterStatus.Status.Fighting)
                    {
                        _writer.WriteLine("<p>They are not here.</p>", player.ConnectionId);
                        return;
                    }


                    _writer.WriteLine("<p>They are not here.</p>", player.ConnectionId);
                    return;
                }

                if (target.Name == player.Name)
                {
                    _writer.WriteLine("<p>You can't start a fight with yourself!</p>", player.ConnectionId);
                    return;
                }

                if (player.Attributes.Attribute[EffectLocation.Hitpoints] <= 0)
                {
                    _writer.WriteLine("<p>You cannot do that while dead.</p>", player.ConnectionId);
                    return;
                }

                if (target.Attributes.Attribute[EffectLocation.Hitpoints] <= 0)
                {
                    _writer.WriteLine("<p>They are already dead.</p>", player.ConnectionId);

                    player.Target = String.Empty;
                    return;
                }

                // For the UI to create a nice gap between rounds of auto attacks
                _writer.WriteLine($"<p class='combat-start'></p>", player.ConnectionId);

                player.Target = target.Name;
                player.Status = CharacterStatus.Status.Fighting;
                target.Status = CharacterStatus.Status.Fighting;
                target.Target =
                    string.IsNullOrEmpty(target.Target)
                        ? player.Name
                        : target.Target; //for group combat, if target is ganged, there target should not be changed when combat is initiated.

                if (!_cache.IsCharInCombat(player.Id.ToString()))
                {
                    _cache.AddCharToCombat(player.Id.ToString(), player);
                }

                if (!_cache.IsCharInCombat(target.Id.ToString()))
                {
                    _cache.AddCharToCombat(target.Id.ToString(), target);
                }


                /*
                 *  This section crying out for a refactor
                 */


                var weapon      = GetWeapon(player);
                var chanceToHit = _formulas.ToHitChance(player, target, false);

                if (chanceToHit < 5)
                {
                    chanceToHit = 5;
                }

                //if player bind and don't have blind fighting
                // reduce chance to hit by 40%
                if (player.Affects.Blind && !BlindFighting(player))
                {
                    chanceToHit = (int)(chanceToHit - (chanceToHit * .70));
                }

                var doesHit = _formulas.DoesHit(chanceToHit);

                if (doesHit)
                {
                    // avoidance percentage can be improved by core skills
                    // such as improved parry, acrobatic etc
                    // instead of rolling a D10, roll a D6 for a close to 15% increase in chance

                    // Move to formula, needs to use _dice instead of making a new instance
                    var avoidanceRoll = new Dice().Roll(1, 1, 10);


                    //10% chance to attempt a dodge
                    if (avoidanceRoll == 1)
                    {
                        var dodge = GetSkill("dodge", target);

                        if (dodge != null)
                        {
                            _writer.WriteLine($"<p>You dodge {player.Name}'s attack.</p>", target.ConnectionId);
                            _writer.WriteLine($"<p>{target.Name} dodges your attack.</p>", player.ConnectionId);
                            return;
                        }
                    }

                    //10% chance to parry
                    if (avoidanceRoll == 2)
                    {
                        var skill = GetSkill("parry", target);

                        if (skill != null)
                        {
                            _writer.WriteLine($"<p>You parry {player.Name}'s attack.</p>", target.ConnectionId);
                            _writer.WriteLine($"<p>{target.Name} parries your attack.</p>", player.ConnectionId);



                            var riposte = GetSkill("Riposte", target);

                            if (riposte != null)
                            {
                                _writer.WriteLine($"<p>You riposte {player.Name}'s attack.</p>", target.ConnectionId);
                                _writer.WriteLine($"<p>{target.Name} riposte's your attack.</p>", player.ConnectionId);

                                var ripDamage = _formulas.CalculateDamage(target, player, weapon);

                                ripDamage /= 3;

                                HarmTarget(player, ripDamage);

                                DisplayDamage(target, player, room, weapon, ripDamage);

                                _clientUi.UpdateHP(player);

                                if (!IsTargetAlive(player))
                                {
                                    TargetKilled(target, player, room);
                                }
                            }

                            return;
                        }
                    }

                    // Block
                    if (avoidanceRoll == 3 && player.Equipped.Shield != null)
                    {
                        var chanceToBlock = _formulas.ToBlockChance(target, player);
                        var doesBlock     = _formulas.DoesHit(chanceToBlock);

                        if (doesBlock)
                        {
                            var skill = GetSkill("shieldblock", target);

                            if (skill != null)
                            {
                                _writer.WriteLine($"You block {player.Name}'s attack with your shield.",
                                                  target.ConnectionId);
                                _writer.WriteLine($"{target.Name} blocks your attack with their shield.",
                                                  player.ConnectionId);
                                return;
                            }
                        }
                        else
                        {
                            // block fail
                        }
                    }


                    var damage = _formulas.CalculateDamage(player, target, weapon);

                    var enhancedDamageChance = _dice.Roll(1, 1, 100);
                    var hasEnhancedDamage    =
                        player.Skills.FirstOrDefault(x => x.SkillName.Equals("Enhanced Damage"));



                    if (_formulas.IsCriticalHit())
                    {
                        // double damage
                        damage *= 2;
                    }

                    if (hasEnhancedDamage != null)
                    {
                        if (hasEnhancedDamage.Proficiency >= enhancedDamageChance && player.Level >= hasEnhancedDamage.Level)
                        {
                            var bonusDam = Helpers.GetPercentage(15, damage);
                            damage += bonusDam;
                        }
                    }

                    HarmTarget(target, damage);

                    DisplayDamage(player, target, room, weapon, damage);

                    _clientUi.UpdateHP(target);

                    if (!IsTargetAlive(target))
                    {
                        TargetKilled(player, target, room);
                    }
                }
                else
                {
                    DisplayMiss(player, target, room, weapon);
                    // miss message
                    // gain improvements on weapon skill


                    SkillList getWeaponSkill = null;
                    if (weapon != null &&
                        !player.ConnectionId.Equals("mob", StringComparison.CurrentCultureIgnoreCase))
                    {
                        // urgh this is ugly
                        getWeaponSkill = player.Skills.FirstOrDefault(x =>
                                                                      x.SkillName.Replace(" ", string.Empty)
                                                                      .Equals(Enum.GetName(typeof(Item.Item.WeaponTypes), weapon.WeaponType)));
                    }

                    if (weapon == null &&
                        !player.ConnectionId.Equals("mob", StringComparison.CurrentCultureIgnoreCase))
                    {
                        getWeaponSkill = player.Skills.FirstOrDefault(x =>
                                                                      x.SkillName.Equals("Hand To Hand", StringComparison.CurrentCultureIgnoreCase));
                    }

                    if (getWeaponSkill != null && getWeaponSkill.Proficiency < 100)
                    {
                        getWeaponSkill.Proficiency += 1;
                        _writer.WriteLine(
                            $"<p class='improve'>Your proficiency in {getWeaponSkill.SkillName} has increased.</p>", player.ConnectionId);

                        _gain.GainExperiencePoints(player, getWeaponSkill.Level * 50, true);
                    }
                }

                if (player.Equipped.Secondary != null)
                {
                    weapon      = GetWeapon(player, true);
                    chanceToHit = _formulas.ToHitChance(player, target, true);

                    if (player.ConnectionId == "mob" && chanceToHit < 45)
                    {
                        chanceToHit = 45;
                    }

                    //if player bind and don't have blind fighting
                    // reduce chance to hit by 40%
                    if (player.Affects.Blind && !BlindFighting(player))
                    {
                        chanceToHit = (int)(chanceToHit - (chanceToHit * .40));
                    }

                    doesHit = _formulas.DoesHit(chanceToHit);

                    if (doesHit)
                    {
                        // avoidance percentage can be improved by core skills
                        // such as improved parry, acrobatic etc
                        // instead of rolling a D10, roll a D6 for a close to 15% increase in chance

                        // Move to formula, needs to use _dice instead of making a new instance
                        var avoidanceRoll = new Dice().Roll(1, 1, 10);


                        //10% chance to attempt a dodge
                        if (avoidanceRoll == 1)
                        {
                            var dodge = GetSkill("dodge", target);

                            if (dodge != null)
                            {
                                _writer.WriteLine($"<p>You dodge {player.Name}'s attack.</p>", target.ConnectionId);
                                _writer.WriteLine($"<p>{target.Name} dodges your attack.</p>", player.ConnectionId);
                                return;
                            }
                        }

                        //10% chance to parry
                        if (avoidanceRoll == 2)
                        {
                            var skill = GetSkill("parry", target);

                            if (skill != null)
                            {
                                _writer.WriteLine($"<p>You parry {player.Name}'s attack.</p>", target.ConnectionId);
                                _writer.WriteLine($"<p>{target.Name} parries your attack.</p>", player.ConnectionId);



                                var riposte = GetSkill("Riposte", target);

                                if (riposte != null)
                                {
                                    _writer.WriteLine($"<p>You riposte {player.Name}'s attack.</p>", target.ConnectionId);
                                    _writer.WriteLine($"<p>{target.Name} riposte's your attack.</p>", player.ConnectionId);

                                    var ripDamage = _formulas.CalculateDamage(target, player, weapon);

                                    ripDamage /= 3;

                                    HarmTarget(player, ripDamage);

                                    DisplayDamage(target, player, room, weapon, ripDamage);

                                    _clientUi.UpdateHP(player);

                                    if (!IsTargetAlive(player))
                                    {
                                        TargetKilled(target, player, room);
                                    }
                                }

                                return;
                            }
                        }

                        // Block
                        if (avoidanceRoll == 3 && player.Equipped.Shield != null)
                        {
                            var chanceToBlock = _formulas.ToBlockChance(target, player);
                            var doesBlock     = _formulas.DoesHit(chanceToBlock);

                            if (doesBlock)
                            {
                                var skill = GetSkill("shieldblock", target);

                                if (skill != null)
                                {
                                    _writer.WriteLine($"You block {player.Name}'s attack with your shield.",
                                                      target.ConnectionId);
                                    _writer.WriteLine($"{target.Name} blocks your attack with their shield.",
                                                      player.ConnectionId);
                                    return;
                                }
                            }
                            else
                            {
                                // block fail
                            }
                        }


                        var damage = _formulas.CalculateDamage(player, target, weapon);

                        if (_formulas.IsCriticalHit())
                        {
                            // double damage
                            damage *= 2;
                        }

                        var enhancedDamageChance = _dice.Roll(1, 1, 100);
                        var hasEnhancedDamage    =
                            player.Skills.FirstOrDefault(x => x.SkillName.Equals("Enhanced Damage"));

                        if (hasEnhancedDamage != null)
                        {
                            if (hasEnhancedDamage.Proficiency >= enhancedDamageChance)
                            {
                                var bonusDam = Helpers.GetPercentage(15, damage);
                                damage += bonusDam;
                            }
                        }

                        HarmTarget(target, damage);

                        DisplayDamage(player, target, room, weapon, damage);

                        _clientUi.UpdateHP(target);

                        if (!IsTargetAlive(target))
                        {
                            TargetKilled(player, target, room);
                        }
                    }
                    else
                    {
                        DisplayMiss(player, target, room, weapon);
                        // miss message
                        // gain improvements on weapon skill


                        SkillList getWeaponSkill = null;
                        if (weapon != null &&
                            !player.ConnectionId.Equals("mob", StringComparison.CurrentCultureIgnoreCase))
                        {
                            // urgh this is ugly
                            getWeaponSkill = player.Skills.FirstOrDefault(x =>
                                                                          x.SkillName.Replace(" ", string.Empty)
                                                                          .Equals(Enum.GetName(typeof(Item.Item.WeaponTypes), weapon.WeaponType)));
                        }

                        if (weapon == null &&
                            !player.ConnectionId.Equals("mob", StringComparison.CurrentCultureIgnoreCase))
                        {
                            getWeaponSkill = player.Skills.FirstOrDefault(x =>
                                                                          x.SkillName.Equals("Hand To Hand", StringComparison.CurrentCultureIgnoreCase));
                        }

                        if (getWeaponSkill != null)
                        {
                            getWeaponSkill.Proficiency += 1;
                            _writer.WriteLine(
                                $"<p class='improve'>Your proficiency in {getWeaponSkill.SkillName} has increased.</p>", player.ConnectionId);

                            _gain.GainExperiencePoints(player, getWeaponSkill.Level * 50, true);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }