Ejemplo n.º 1
0
        public static void RestPlayer(IHubContext context, PlayerSetup.Player player, Room.Room room)
        {
            if (player.Status == PlayerSetup.Player.PlayerStatus.Sleeping)
            {
                context.SendToClient("You are sleeping.", player.HubGuid);
                return;
            }
            else if (player.Status == PlayerSetup.Player.PlayerStatus.Resting)
            {
                context.SendToClient("You are already resting.", player.HubGuid);
                return;
            }
            else if (player.Status == PlayerSetup.Player.PlayerStatus.Fighting)
            {
                context.SendToClient("You are in a middle of a fight!", player.HubGuid);
                return;
            }

            player.Status = PlayerSetup.Player.PlayerStatus.Resting;

            context.SendToClient("You sit down and rest.", player.HubGuid);

            foreach (var character in room.players)
            {
                if (player != character)
                {
                    var roomMessage = $"{ Helpers.ReturnName(player, character, string.Empty)} sits down and rests.";

                    context.SendToClient(roomMessage, character.HubGuid);
                }
            }
        }
Ejemplo n.º 2
0
        public static void CraftList(PlayerSetup.Player player)
        {
            if (player.CraftingRecipes == null || player.CraftingRecipes.Count == 0)
            {
                HubContext.Instance.SendToClient("You don't know how to craft anything.", player.HubGuid);
                return;
            }

            var craftlist = "<table><thead><tr><td>Craft Item</td><td>Required</td></tr></thead><tbody>";

            HubContext.Instance.SendToClient("<p>You can craft:</p>", player.HubGuid);

            foreach (var craft in player.CraftingRecipes)
            {
                var canCraft = Crafting.CraftList().FirstOrDefault(x => x.Name.Equals(craft));
                var required = string.Empty;

                if (canCraft?.Materials != null)
                {
                    foreach (var materials in canCraft.Materials)
                    {
                        required += materials.Name + " x" + materials.Count + ",";
                    }

                    craftlist += "<tr><td>" + canCraft.Name + "</td><td>" + required + "</td></tr>";
                }
            }
            craftlist += "</tbody></table>";

            HubContext.Instance.SendToClient(craftlist, player.HubGuid);
        }
Ejemplo n.º 3
0
        public static void greet(PlayerSetup.Player player, PlayerSetup.Player mob, Room.Room room, string message = "")
        {
            var isMobHere = room.mobs.FirstOrDefault(x => x.Name.Equals(mob.Name));

            if (isMobHere == null)
            {
                return;
            }

            if (player.Type == PlayerSetup.Player.PlayerTypes.Player && message == string.Empty)
            {
                if (!string.IsNullOrEmpty(mob.GreetMessage))
                {
                    string greetMessageToRoom = mob.GreetMessage + " " + player.Name;

                    foreach (var character in room.players)
                    {
                        var roomMessage = $"{ Helpers.ReturnName(mob, character, string.Empty)} says \"{greetMessageToRoom}\"";

                        HubContext.Instance.SendToClient(roomMessage, character.HubGuid);
                    }
                }
            }
            else
            {
            }
        }
Ejemplo n.º 4
0
        public static int Damage(int dam, PlayerSetup.Player target)
        {
            if (target.Status == PlayerSetup.Player.PlayerStatus.Sleeping || target.Status == PlayerSetup.Player.PlayerStatus.Stunned)
            {
                dam *= 2;
            }

            if (target.Status == PlayerSetup.Player.PlayerStatus.Resting)
            {
                dam *= (int)1.5;
            }

            var armourReduction = Fight2.CalculateDamageReduction(target, dam);

            if (armourReduction > 0)
            {
                dam /= armourReduction;
            }

            if (dam <= 0)
            {
                dam = 1;
            }

            var criticalHitChance = Helpers.Rand(1, 20);

            if (criticalHitChance == 20)
            {
                dam *= 2;
            }

            return(dam);
        }
Ejemplo n.º 5
0
        public static bool CanDoSkill(PlayerSetup.Player player)
        {
            if (player.Status == PlayerSetup.Player.PlayerStatus.Sleeping)
            {
                HubContext.Instance.SendToClient("You can't do that while asleep.", player.HubGuid);

                return(false);
            }

            if (player.Status == PlayerSetup.Player.PlayerStatus.Ghost)
            {
                HubContext.Instance.SendToClient("You can't do that while dead.", player.HubGuid);

                return(false);
            }

            if (player.Status == PlayerSetup.Player.PlayerStatus.Dead)
            {
                HubContext.Instance.SendToClient("You can't do that while dead.", player.HubGuid);

                return(false);
            }

            if (player.Status == PlayerSetup.Player.PlayerStatus.Resting)
            {
                HubContext.Instance.SendToClient("You can't do that while resting.", player.HubGuid);

                return(false);
            }


            return(true);
        }
Ejemplo n.º 6
0
        public static PlayerSetup.Player SmallPig()
        {
            var SmallPig = new PlayerSetup.Player
            {
                NPCId          = Guid.NewGuid(),
                Name           = "pink pig",
                NPCLongName    = "large pig is laying in the mud",
                KnownByName    = false,
                Type           = PlayerSetup.Player.PlayerTypes.Mob,
                Description    = "A large pig is laying in the mud",
                Strength       = 45,
                Dexterity      = 30,
                Constitution   = 30,
                Intelligence   = 30,
                Wisdom         = 30,
                Charisma       = 30,
                MaxHitPoints   = 75,
                HitPoints      = 75,
                Level          = 5,
                Status         = PlayerSetup.Player.PlayerStatus.Standing,
                Trainer        = false,
                DialogueTree   = new List <DialogTree>(),
                Dialogue       = new List <Responses>(),
                Quest          = new List <Quest>(),
                MobAttackType  = PlayerSetup.Player.MobAttackTypes.Charge,
                MobAttackStats = new Stats
                {
                    damMin = 3,
                    damMax = 6
                }
            };


            return(SmallPig);
        }
Ejemplo n.º 7
0
        public static void WakePlayer(PlayerSetup.Player player, Room.Room room)
        {
            if (player.Status == PlayerSetup.Player.PlayerStatus.Sleeping)
            {
                player.Status = PlayerSetup.Player.PlayerStatus.Standing;

                HubContext.SendToClient("You wake and stand up", player.HubGuid);

                if (!string.IsNullOrEmpty(room.EventWake))
                {
                    Event.ParseCommand(room.EventWake, player, null, room, "wake");
                }


                foreach (var mob in room.mobs)
                {
                    if (!string.IsNullOrEmpty(mob.EventWake))
                    {
                        Event.ParseCommand(mob.EventWake, player, mob, room, "wake");
                    }
                }

                Command.ParseCommand("look", player, room);
            }

            else
            {
                HubContext.SendToClient("You are already awake", player.HubGuid);
            }
        }
Ejemplo n.º 8
0
        private static void EvokeEvent(Room.Room room, PlayerSetup.Player player, string option)
        {
            if (!string.IsNullOrEmpty(room.EventWear))
            {
                var triggerEvent = room.EventWear;

                Event.ParseCommand(triggerEvent, player, null, room, option, "player");
            }

            foreach (var mob in room.mobs)
            {
                if (!string.IsNullOrEmpty(mob.EventWear))
                {
                    var triggerEvent = mob.EventWear;

                    Event.ParseCommand(triggerEvent, player, mob, room, option, "player");
                }


                if (!string.IsNullOrEmpty(mob.EventDeath))
                {
                    var triggerEvent = mob.EventDeath;

                    Event.ParseCommand(triggerEvent, player, mob, room, option, "player");
                }
            }


            if (!string.IsNullOrEmpty(room.EventLook))
            {
                var triggerEvent = room.EventLook;

                Event.ParseCommand(triggerEvent, player, null, room, option, "player");
            }
        }
Ejemplo n.º 9
0
Archivo: Shop.cs Proyecto: sizzles/MIM
        public static void listItems(PlayerSetup.Player player, Room.Room room)
        {
            var itemsForSell = "<table><thead><tr><td>Item</td><td>Price</td></tr></thead><tbody>";
            var mob          = room.mobs.FirstOrDefault(x => x.Shop.Equals(true));

            if (mob != null)
            {
                if (mob.itemsToSell.Count > 0)
                {
                    foreach (var item in mob.itemsToSell)
                    {
                        itemsForSell += "<tr><td>" + item.name + "</td> <td>" + item.Gold + " GP</td></tr>";
                    }

                    itemsForSell += "</tbody></table>";
                }
                else
                {
                    HubContext.SendToClient("Sorry I have nothing to sell you.", player.HubGuid);
                    return;
                }

                //e.g Yes sure here are my wares.
                HubContext.SendToClient(mob.Name + " says to you " + mob.sellerMessage, player.HubGuid);

                //show player items
                HubContext.SendToClient(itemsForSell, player.HubGuid);
            }
            else
            {
                HubContext.SendToClient("There is no merchant here", player.HubGuid);
            }
        }
Ejemplo n.º 10
0
        public int VictimDifficulty(PlayerSetup.Player player, PlayerSetup.Player victim)
        {
            var difficulty = victim.Level * victim.Level * 2 + (victim.Strength + victim.Constitution + victim.Dexterity + victim.Intelligence + victim.Wisdom + victim.Charisma) * 10 +
                             (victim.DamRoll + victim.HitRoll) * 2 + (victim.MaxHitPoints + victim.MaxManaPoints + victim.MaxMovePoints) * 2;


            if (player.Level * 3 < victim.Level)
            {
                difficulty = difficulty * 3;
            }
            else if (player.Level * 2 < victim.Level)
            {
                difficulty = difficulty * 2;
            }


            if (player.Level > victim.Level * 3)
            {
                difficulty = difficulty / 3;
            }
            else if (player.Level >= victim.Level * 2)
            {
                difficulty = difficulty / 2;
            }

            if (player.Level * 5 > victim.Level)
            {
                difficulty = difficulty / 4;
            }



            return(difficulty);
        }
Ejemplo n.º 11
0
        public void GainLevel(PlayerSetup.Player player)
        {
            if (HasGainedLevel(player))
            {
                player.Level += 1;
                var carryOverExcessXp = Math.Max(player.Experience - player.ExperienceToNextLevel, 0);
                player.Experience            = carryOverExcessXp;
                player.ExperienceToNextLevel = GetTNL(player);

                var selectedClass = PlayerClass.ClassList().FirstOrDefault(x => x.Value.Name.ToLower().StartsWith(player.SelectedClass, StringComparison.CurrentCultureIgnoreCase));
                var dice          = new Helpers();

                var hpGain        = dice.dice(1, selectedClass.Value.MinHpGain, selectedClass.Value.MaxHpGain);
                var manaGain      = dice.dice(1, selectedClass.Value.MinHpGain, selectedClass.Value.MaxHpGain);
                var enduranceGain = dice.dice(1, selectedClass.Value.MinHpGain, selectedClass.Value.MaxHpGain);
                //tell user they have gained a level

                player.MaxHitPoints  += hpGain;
                player.MaxManaPoints += manaGain;
                player.MaxMovePoints += enduranceGain;

                //tell user how much HP / mana / mvs / practices / trains they have gained

                HubContext.SendToClient("Congratulations, you are now level " + player.Level + ". You have gained. HP: " + hpGain + " Mana: " + manaGain + " End: " + enduranceGain, player.HubGuid);

                Save.SavePlayer(player);
                //save player

                //check player hasn't leveled again
                GainLevel(player);
            }
        }
Ejemplo n.º 12
0
        public static void FindEvent(EventType eventName, PlayerSetup.Player player, string option)
        {
            var room =
                Cache.ReturnRooms()
                .FirstOrDefault(
                    x =>
                    x.area.Equals(player.Area) && x.areaId.Equals(player.AreaId) &&
                    x.region.Equals(player.Region));

            if (room == null)
            {
                //logerror
                return;
            }

            if (eventName.Equals(EventType.Wear))
            {
                EvokeEvent(room, player, option);
            }

            if (eventName.Equals(EventType.Look))
            {
                EvokeEvent(room, player, option);
            }

            if (eventName.Equals(EventType.Death))
            {
                EvokeEvent(room, player, option);
            }

            if (eventName.Equals(EventType.Wake))
            {
                EvokeEvent(room, player, option);
            }
        }
Ejemplo n.º 13
0
        public static void fleeCombat(PlayerSetup.Player player, Room.Room room)
        {
            if (player.Status == PlayerSetup.Player.PlayerStatus.Fighting)
            {
                //hardcode 50% flee success rate

                if (Helpers.Rand(1, 100) >= 50)
                {
                    HubContext.SendToClient("You Flee", player.HubGuid);

                    var exit = Helpers.diceRoll.Next(room.exits.Count);

                    player.Status = PlayerSetup.Player.PlayerStatus.Standing;

                    HubContext.SendToClient(player.Name + " Flee's from combat", player.Target.HubGuid);

                    player.Target = null;

                    Room.Movement.Move(player, room, room.exits[exit].name);
                }
                else
                {
                    HubContext.SendToClient("You fail to flee", player.HubGuid);
                }
            }
            else
            {
                HubContext.SendToClient("Flee from whom, you're not fighting anyone", player.HubGuid);
            }
        }
Ejemplo n.º 14
0
        private int DisarmSuccess(PlayerSetup.Player attacker, PlayerSetup.Player target)
        {
            var success = 2 * attacker.Strength - target.Strength + (attacker.Level - target.Level) * 2;

            if (attacker.Effects.FirstOrDefault(x => x.Name.Equals("Haste")) != null)
            {
                success += 10;
            }

            if (target.Effects.FirstOrDefault(x => x.Name.Equals("Haste")) != null)
            {
                success -= 25;
            }

            if (attacker.SizeCategory > target.SizeCategory)
            {
                success += 10;
            }

            if (target.SizeCategory > attacker.SizeCategory)
            {
                success -= 25;
            }

            if (success <= 0)
            {
                success = 1;
            }

            return(success);
        }
Ejemplo n.º 15
0
        private int BashSuccess(PlayerSetup.Player attacker, PlayerSetup.Player target)
        {
            var sizeMod    = attacker.SizeCategory < target.SizeCategory ? 18 : 10;
            var stunChance = ((int)attacker.SizeCategory - (int)target.SizeCategory) * sizeMod;

            stunChance += 10;

            stunChance += attacker.Weight / 250;
            stunChance -= target.Weight / 200;
            stunChance += attacker.Strength;
            stunChance -= (target.Dexterity * 4) / 3;

            var hasHaste = attacker.Effects?.FirstOrDefault(
                x => x.Name.Equals("Haste", StringComparison.CurrentCultureIgnoreCase)) != null;

            if (hasHaste)
            {
                stunChance += 10;
            }

            var targetHasHaste = target.Effects?.FirstOrDefault(
                x => x.Name.Equals("Haste", StringComparison.CurrentCultureIgnoreCase)) != null;

            if (targetHasHaste)
            {
                stunChance -= 30;
            }

            stunChance += attacker.Level - target.Level;

            return(stunChance);
        }
Ejemplo n.º 16
0
        private int XPLevelModifier(PlayerSetup.Player player)
        {
            if (player.Level < 10)
            {
                return(45);
            }

            if (player.Level < 20)
            {
                return(175);
            }

            if (player.Level < 30)
            {
                return(235);
            }

            if (player.Level < 40)
            {
                return(460);
            }

            if (player.Level < 50)
            {
                return(785);
            }

            return(935);
        }
Ejemplo n.º 17
0
        public static void SleepPlayer(PlayerSetup.Player player, Room.Room room)
        {
            if (player.Status != PlayerSetup.Player.PlayerStatus.Sleeping)
            {
                player.Status = PlayerSetup.Player.PlayerStatus.Sleeping;

                HubContext.SendToClient("You laydown and go to sleep", player.HubGuid);

                if (!string.IsNullOrEmpty(room.EventWake))
                {
                    Event.ParseCommand(room.EventWake, player, null, room, "sleep");
                }


                foreach (var mob in room.mobs)
                {
                    if (!string.IsNullOrEmpty(mob.EventWake))
                    {
                        Event.ParseCommand(mob.EventWake, player, mob, room, "sleep");
                    }
                }
            }

            else
            {
                HubContext.SendToClient("You are already asleep", player.HubGuid);
            }
        }
Ejemplo n.º 18
0
        public int ToNextLevel(PlayerSetup.Player player)
        {
            int baseXP = 1250;
            int tnl    = player.Level * player.Level * baseXP;

            return(tnl);
        }
Ejemplo n.º 19
0
Archivo: Shop.cs Proyecto: sizzles/MIM
        public static void buyItems(PlayerSetup.Player player, Room.Room room, string itemName)
        {
            var mob = room.mobs.FirstOrDefault(x => x.Shop.Equals(true));

            if (mob != null)
            {
                if (mob.Shop)
                {
                    if (string.IsNullOrEmpty(itemName))
                    {
                        HubContext.SendToClient("Buy? Buy what?", player.HubGuid);
                        return;
                    }

                    var itemToBuy = mob.itemsToSell.FirstOrDefault(x => x.name.ToLower().Contains(itemName.ToLower()));

                    if (itemToBuy != null)
                    {
                        var    result  = AvsAnLib.AvsAn.Query(itemToBuy.name);
                        string article = result.Article;

                        //Can afford

                        if (player.Gold >= itemToBuy.Gold)
                        {
                            itemToBuy.location = Item.Item.ItemLocation.Inventory;
                            player.Inventory.Add(itemToBuy);
                            HubContext.SendToClient(
                                "You buy " + article + itemToBuy.name + " from " + mob.Name,
                                player.HubGuid);

                            foreach (var character in room.players)
                            {
                                if (player != character)
                                {
                                    var hisOrHer    = Helpers.ReturnHisOrHers(player, character);
                                    var roomMessage = $"{ Helpers.ReturnName(player, character, string.Empty)} buys {article} {itemToBuy.name} from {mob.Name}";

                                    HubContext.SendToClient(roomMessage, character.HubGuid);
                                }
                            }

                            Score.UpdateUiInventory(player);
                            //deduct gold

                            player.Gold -= itemToBuy.Gold;
                        }
                        else
                        {
                            HubContext.SendToClient("You can't afford " + article + " " + itemToBuy.name, player.HubGuid);
                        }
                    }
                }
                else
                {
                    HubContext.SendToClient("Sorry I don't sell that", player.HubGuid);
                }
            }
        }
Ejemplo n.º 20
0
        private async Task DoSkill(IHubContext context, PlayerSetup.Player attacker, PlayerSetup.Player target, Room room)
        {
            attacker.Status = PlayerSetup.Player.PlayerStatus.Busy;

            await Task.Delay(500);

            if (attacker.ManaPoints < causeLightAb().ManaCost)
            {
                context.SendToClient("You attempt to draw energy but fail", attacker.HubGuid);
                attacker.ActiveSkill = null;
                PlayerSetup.Player.SetState(attacker);

                if (attacker.ManaPoints < 0)
                {
                    attacker.ManaPoints = 0;
                }

                return;
            }


            var chanceOfSuccess = Helpers.Rand(1, 100);
            var skill           = attacker.Skills.FirstOrDefault(x => x.Name.Equals("Cause Light"));

            if (skill == null)
            {
                attacker.ActiveSkill = null;
                return;
            }

            var skillProf = skill.Proficiency;

            if (skillProf >= chanceOfSuccess)
            {
                var damage = Helpers.Rand(1, 8) / 3;
                var toHit  = Helpers.GetPercentage(attacker.Skills.Find(x => x.Name.Equals(causeLightAb().Name, StringComparison.CurrentCultureIgnoreCase)).Proficiency, 95); // always 5% chance to miss

                Fight2.ShowAttack(attacker, target, room, toHit, chanceOfSuccess, causeLightAb(), false, damage);
            }
            else
            {
                attacker.ActiveSkill = null;
                HubContext.Instance.SendToClient("You lost your concerntration.",
                                                 attacker.HubGuid);
                PlayerSetup.Player.LearnFromMistake(attacker, causeLightAb(), 250);

                Score.ReturnScoreUI(attacker);
            }


            Score.ReturnScoreUI(target);

            PlayerSetup.Player.SetState(attacker);

            Fight2.PerpareToFightBack(attacker, room, target.Name, true);


            attacker.ActiveSkill = null;
        }
Ejemplo n.º 21
0
        public static async Task KickIdlePlayers()
        {
            try
            {
                foreach (var player in MIMHub._PlayerCache.ToList())
                {
                    if (player.Value != null && player.Value.LastCommandTime.AddMinutes(1) < DateTime.UtcNow)
                    {
                        HubContext.SendToClient("You disappear in the void", player.Value.HubGuid);

                        var room =
                            MIMHub._AreaCache.FirstOrDefault(
                                x =>
                                x.Value.area.Equals(player.Value.Area) && x.Value.areaId.Equals(player.Value.AreaId) &&
                                x.Value.region.Equals(player.Value.Region));

                        if (room.Value != null)
                        {
                            foreach (var players in room.Value.players.ToList())
                            {
                                HubContext.broadcastToRoom(player.Value.Name + " disappears in the void",
                                                           room.Value.players,
                                                           player.Value.HubGuid, true);
                            }
                        }
                    }

                    if (player.Value != null && player.Value.LastCommandTime.AddMinutes(2) < DateTime.UtcNow)
                    {
                        var room =
                            MIMHub._AreaCache.FirstOrDefault(
                                x =>
                                x.Value.area.Equals(player.Value.Area) && x.Value.areaId.Equals(player.Value.AreaId) &&
                                x.Value.region.Equals(player.Value.Region));


                        PlayerSetup.Player removedChar = null;

                        MIMHub._PlayerCache.TryRemove(player.Value.HubGuid, out removedChar);

                        if (removedChar != null)
                        {
                            Command.ParseCommand("quit", player.Value, room.Value);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var log = new Error.Error
                {
                    Date         = DateTime.Now,
                    ErrorMessage = ex.InnerException.ToString(),
                    MethodName   = "KickIdlePlayers"
                };

                Save.LogError(log);
            }
        }
Ejemplo n.º 22
0
        public static PlayerSetup.Player WeakGoblin()
        {
            var leatherVest = LeatherBody.LeatherVest();

            leatherVest.location = Item.Item.ItemLocation.Worn;

            var rustedSword = ShortSwordBasic.RustedShortSword();

            rustedSword.location = Item.Item.ItemLocation.Wield;

            var shield = ShieldBasic.WoodenShield();

            shield.location = Item.Item.ItemLocation.Worn;

            var WeakGoblin = new PlayerSetup.Player
            {
                NPCId        = Guid.NewGuid(),
                Name         = "A skinny hunched Goblin",
                NPCLongName  = "A skinny hunched goblin snarls at you",
                KnownByName  = true,
                Type         = PlayerSetup.Player.PlayerTypes.Mob,
                Description  = "A weak goblin",
                Strength     = 25,
                Dexterity    = 25,
                Constitution = 30,
                Intelligence = 30,
                Wisdom       = 30,
                Charisma     = 30,
                MaxHitPoints = 7,
                HitPoints    = 7,
                Level        = 1,
                Status       = PlayerSetup.Player.PlayerStatus.Standing,
                Skills       = new List <Skill>()
                {
                    ShortBlades.ShortBladesAb()
                },
                Inventory = new ItemContainer()
                {
                    leatherVest,
                    rustedSword,
                    shield
                },
                Equipment = new Equipment()
                {
                    Body    = leatherVest.name,
                    Wielded = rustedSword.name,
                    Shield  = shield.name
                },
                Trainer      = false,
                DialogueTree = new List <DialogTree>(),
                Dialogue     = new List <Responses>(),
                Quest        = new List <Quest>()
            };



            return(WeakGoblin);
        }
Ejemplo n.º 23
0
        public static PlayerSetup.Player SmallRabbit()
        {
            var smallrabbit = new PlayerSetup.Player
            {
                NPCId        = Guid.NewGuid(),
                Name         = "White rabbit",
                NPCLongName  = "small rabbit is nibbling the grass here.",
                KnownByName  = false,
                Type         = PlayerSetup.Player.PlayerTypes.Mob,
                Description  = "The calico rabbit occasionally stops hopping to look up and nervously scans the area. Nose and ears twitching as it does so before resuming it's hoping.",
                Strength     = 30,
                Dexterity    = 30,
                Constitution = 30,
                Intelligence = 30,
                Wisdom       = 30,
                Charisma     = 30,
                MaxHitPoints = 15,
                HitPoints    = 15,
                Level        = 1,
                Status       = PlayerSetup.Player.PlayerStatus.Standing,
                Skills       = new List <Skill>()
                {
                    ShortBlades.ShortBladesAb()
                },
                Inventory = new ItemContainer()
                {
                    new Item.Item()
                    {
                        name        = "rabbit fur",
                        Gold        = 2,
                        Weight      = 1,
                        description = new Description()
                        {
                            look = "Soft white fur."
                        },
                        type     = Item.Item.ItemType.Misc,
                        location = Item.Item.ItemLocation.Inventory
                    }
                },
                Equipment = new Equipment()
                {
                },
                Trainer        = false,
                DialogueTree   = new List <DialogTree>(),
                Dialogue       = new List <Responses>(),
                Quest          = new List <Quest>(),
                MobAttackType  = PlayerSetup.Player.MobAttackTypes.Bite,
                MobAttackStats = new Stats()
                {
                    damMin = 2,
                    damMax = 6
                }
            };



            return(smallrabbit);
        }
Ejemplo n.º 24
0
        public void GainLevel(PlayerSetup.Player player)
        {
            if (player.Type == PlayerSetup.Player.PlayerTypes.Mob)
            {
                return;
            }

            if (HasGainedLevel(player))
            {
                player.Level += 1;
                var carryOverExcessXp = Math.Max(player.Experience - player.ExperienceToNextLevel, 0);
                player.Experience            = carryOverExcessXp;
                player.ExperienceToNextLevel = GetTNL(player);

                var selectedClass    = PlayerClass.ClassList().FirstOrDefault(x => x.Value.Name.ToLower().StartsWith(player.SelectedClass, StringComparison.CurrentCultureIgnoreCase));
                var dice             = new Helpers();
                var maxHPGain        = selectedClass.Value.MaxHpGain;
                var maxEnduranceGain = selectedClass.Value.MaxEnduranceGain;

                if (Skill.CheckPlayerHasSkill(player, "Toughness"))
                {
                    var chanceOfSuccess = Helpers.Rand(1, 100);

                    var hasSkill = player.Skills.FirstOrDefault(x => x.Name.Equals("Toughness"));
                    if (hasSkill != null && hasSkill.Proficiency >= chanceOfSuccess)
                    {
                        maxHPGain        *= 3;
                        maxEnduranceGain *= 3;
                    }
                }

                var hpGain        = dice.dice(1, selectedClass.Value.MinHpGain, maxHPGain);
                var manaGain      = dice.dice(1, selectedClass.Value.MinManaGain, selectedClass.Value.MaxManaGain);
                var enduranceGain = dice.dice(1, selectedClass.Value.MinEnduranceGain, maxEnduranceGain);
                //tell user they have gained a level

                player.MaxHitPoints  += hpGain;
                player.MaxManaPoints += manaGain;
                player.MaxMovePoints += enduranceGain;

                //tell user how much HP / mana / mvs / practices / trains they have gained

                HubContext.Instance.SendToClient("<span style='color:yellow'>Congratulations, you are now level " + player.Level + ". You have gained. HP: " + hpGain + " Mana: " + manaGain + " End: " + enduranceGain + "</span>", player.HubGuid);

                Score.ReturnScoreUI(player);

                Save.SavePlayer(player);
                //save player

                //check player hasn't leveled again
                GainLevel(player);

                var discordToSay = player.Name + " is now level " + player.Level;

                var discordBot = new HomeController();
                discordBot.PostToDiscord(discordToSay);
            }
        }
Ejemplo n.º 25
0
        public static PlayerSetup.Player GoblinWarrior()
        {
            var leatherVest = LeatherBody.LeatherVest();

            leatherVest.location = Item.Item.ItemLocation.Worn;

            var rustedSword = ShortSwordBasic.RustedShortSword();

            rustedSword.location = Item.Item.ItemLocation.Wield;
            rustedSword.stats    = new Stats()
            {
                damMax        = 12,
                damMin        = 2,
                damRoll       = 1,
                minUsageLevel = 1,
                worth         = 1
            };

            var WeakGoblin = new PlayerSetup.Player
            {
                NPCId        = Guid.NewGuid(),
                Name         = "A goblin warrior",
                NPCLongName  = "A strong goblin snarls at you",
                KnownByName  = true,
                Type         = PlayerSetup.Player.PlayerTypes.Mob,
                Description  = "A strong goblin",
                Strength     = 20,
                Dexterity    = 13,
                Constitution = 12,
                Intelligence = 4,
                Wisdom       = 5,
                Charisma     = 2,
                MaxHitPoints = 100,
                HitPoints    = 100,
                Level        = 5,
                Aggro        = true,
                Status       = PlayerSetup.Player.PlayerStatus.Standing,
                Skills       = new List <Skill>(),
                Inventory    = new ItemContainer()
                {
                    leatherVest,
                    rustedSword
                },
                Equipment = new Equipment()
                {
                    Body    = leatherVest.name,
                    Wielded = rustedSword.name
                },
                Trainer      = false,
                DialogueTree = new List <DialogTree>(),
                Dialogue     = new List <Responses>(),
                Quest        = new List <Quest>()
            };



            return(WeakGoblin);
        }
Ejemplo n.º 26
0
        public static void UpdateAffects(PlayerSetup.Player player, IHubContext context)
        {
            try
            {
                if (player.Affects == null)
                {
                    return;
                }

                foreach (var af in player.Affects)
                {
                    if (af.Duration == 0 || af.Duration <= 0)
                    {
                        player.Affects.Remove(af);

                        // put in method? or change way we handle invis
                        if (af.Name == "Invis")
                        {
                            player.invis = false;
                        }

                        if (af.Name == "Chill Touch")
                        {
                            player.Equipment.Wielded = "Nothing";
                            var chillTouch = player.Inventory.FirstOrDefault(x => x.name.Equals("Chill Touch"));
                            player.Inventory.Remove(chillTouch);
                        }

                        if (af.AffectLossMessageRoom != null)
                        {
                            HubContext.SendToClient(af.AffectLossMessagePlayer, player.HubGuid);
                        }

                        if (af.AffectLossMessageRoom != null)
                        {
                            var room = Cache.getRoom(player);

                            foreach (var character in room.players)
                            {
                                if (player != character)
                                {
                                    HubContext.SendToClient(
                                        Helpers.ReturnName(player, character, string.Empty) + " " +
                                        af.AffectLossMessageRoom, character.HubGuid);
                                }
                            }
                        }
                    }

                    af.Duration -= 1;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
Ejemplo n.º 27
0
        //Red:     Mob Level >= Char Level + 5
        //Orange:  Mob Level = Char Level + (3 or 4)
        //Yellow:  Mob Level = Char Level ± 2
        //Green:   Mob Level <= Char Level - 3, but above Gray Level
        //Gray:    Mob Level <= Gray Level

//        XP = (Char Level * 5) + 45, where Char Level = Mob Level, for mobs in Azeroth
//XP = (Char Level* 5) + 235, where Char Level = Mob Level, for mobs in Outland
//XP = (Char Level* 5) + 580, where Char Level = Mob Level, for mobs in Northrend
//XP = (Char Level* 5) + 1878, where Char Level = Mob Level, for mobs in Cataclysm

        private int CheckMobLevelBonus(PlayerSetup.Player player, PlayerSetup.Player mob)
        {
            int mobLevel    = mob.Level;
            int playerLevel = player.Level;

            if (playerLevel + 5 <= mobLevel)
            {
                if (playerLevel + 10 <= mobLevel)
                {
                    return(5);
                }
                return(4);
            }

            switch (mobLevel - playerLevel)
            {
            case 4:
                return(4);

            case 3:
                return(3);

            case 2:
            case 1:
            case 0:
            case -1:
            case -2:
                return(2);

            default:

                if (playerLevel <= 5)
                {
                    return(1);
                }

                if (playerLevel <= 39)
                {
                    if (mobLevel <= (playerLevel - 5 - Math.Floor((double)playerLevel / 10)))
                    {
                        return(0);
                    }
                    else
                    {
                        return(1);
                    }
                }

                //player over lvl 39:
                if (mobLevel <= (playerLevel - 1 - Math.Floor((double)playerLevel / 5)))
                {
                    return(0);
                }

                return(1);
            }
        }
Ejemplo n.º 28
0
 public static Effect Sneak(PlayerSetup.Player player)
 {
     return(new Effect
     {
         Name = "Sneak",
         Duration = player.Level,
         AffectLossMessagePlayer = "You feel less sneaky.",
         AffectLossMessageRoom = $"You become aware of {player.Name}"
     });
 }
Ejemplo n.º 29
0
 public static Effect Blindness(PlayerSetup.Player player, bool magical = false)
 {
     return(new Effect
     {
         Name = "Blindness",
         Duration = magical ? player.Level + 5 : Helpers.Rand(1, 5),
         AffectLossMessagePlayer = magical ? "Your eyes regain the ability to see again." : "You rub the dirt from your eyes.",
         AffectLossMessageRoom = magical ? "'s regain the ability to see again." : " rubs the dirt from their eyes."
     });
 }
Ejemplo n.º 30
0
 internal static Effect DetectInvis(PlayerSetup.Player player)
 {
     return(new Effect
     {
         Name = "Detect Invis",
         Duration = player.Level,
         AffectLossMessagePlayer = "You no longer detect Invis.",
         AffectLossMessageRoom = string.Empty
     });
 }