示例#1
0
        public static BaseMonster CreateBaseMonster(int level, bool allowSpecial = false, bool forceSpecial = false)
        {
            string name        = MonstersByLevel.RandomMonsterName(RandomNumberGenerator.NumberBetween(0, 20));
            string monsterName = "";

            if ((allowSpecial && RandomNumberGenerator.NumberBetween(0, 10) <= 2) || forceSpecial)
            {
                monsterName  = MonstersByLevel.GetNextSpecialMonster(level);
                forceSpecial = true;
            }
            else
            {
                monsterName = MonstersByLevel.GetNextMonster(level);
            }

            name = name + ", the " + monsterName;

            BaseMonster BM = Monsters.Find(x => x.Name == name);

            if (BM != null)
            {
                return(BM);
            }

            BM = new BaseMonster(name);

            BM.RewardGold             = 6 * (level + 1);
            BM.RewardExperiencePoints = 4 * (level + 1);

            if (forceSpecial)
            {
                int num = RandomNumberGenerator.NumberBetween(0, 6);
                BM.RewardExperiencePoints = (int)(BM.RewardExperiencePoints * 1.25);
                BM.RewardGold             = (int)(BM.RewardGold * 1.25);
                while (num > 0)
                {
                    int num2 = RandomNumberGenerator.NumberBetween(0, 8);
                    switch (num2)
                    {
                    case 1:
                        BM.AddEquipment(ItemFactory.CreateWeapon(level, true, true));
                        break;

                    case 2:
                        BM.AddEquipment(ItemFactory.CreateArmor(level, Torso.TorsoFactory(), true, true));
                        break;

                    case 3:
                        BM.AddEquipment(ItemFactory.CreateArmor(level, Arm.ArmFactory(true), true, true));
                        break;

                    case 4:
                        BM.AddEquipment(ItemFactory.CreateArmor(level, Arm.ArmFactory(false), true, true));
                        break;

                    case 5:
                        // TODO THis was the error point
                        BM.AddEquipment(ItemFactory.CreateArmor(level, Leg.LegFactory(false), true, true));
                        break;

                    case 6:
                        BM.AddEquipment(ItemFactory.CreateArmor(level, Head.HeadFactory(), true, true));
                        break;

                    case 7:
                        BM.myStats.Strength.Value *= 1.2;
                        break;

                    case 8:
                        BM.myStats.Toughness.Value *= 1.2;
                        break;

                    default:
                        break;
                    }
                }
            }

            Monsters.Add(BM);
            return(BM);
        }