Esempio n. 1
0
        public Monster AdvanceMonster(Monster oldMonster)
        {
            if (oldMonster == null)
            {
                return(null);
            }

            Monster monster = (Monster)oldMonster.Clone();


            switch (template)
            {
            case AdvancerTemplate.HalfDragon:
                if (monster.MakeHalfDragon(_DragonColor))
                {
                    monster.Name = "Half-Dragon " + monster.Name;
                }
                break;

            case AdvancerTemplate.Skeleton:
                if (monster.MakeSkeleton(_SelectedSkeletonTypes[0], _SelectedSkeletonTypes[1], _SelectedSkeletonTypes[2]))
                {
                    monster.Name = "Skeletal " + monster.Name;
                    for (int i = 2; i >= 0; i--)
                    {
                        if (_SelectedSkeletonTypes[i])
                        {
                            monster.Name = SkeletonText(i) + " " + monster.Name;
                        }
                    }
                }
                break;

            case AdvancerTemplate.Zombie:
                if (monster.MakeZombie(_ZombieType))
                {
                    monster.Name = ZombieText(_ZombieType, true) + " " + monster.Name;
                }
                break;

            case AdvancerTemplate.Vampire:

                if (monster.MakeVampire())
                {
                    monster.Name = "Vampire " + monster.Name;
                }
                break;

            case AdvancerTemplate.HalfCelestial:
                if (SelectedStats.Count == 3 && monster.MakeHalfCelestial(SelectedStats))
                {
                    monster.Name = "Half-Celestial " + monster.Name;
                }
                break;

            case AdvancerTemplate.HalfFiend:
                if (SelectedStats.Count == 3 && monster.MakeHalfFiend(SelectedStats))
                {
                    monster.Name = "Half-Fiend " + monster.Name;
                }
                break;
            }

            if (racialHDChange != 0)
            {
                int dice = racialHDChange;

                Stat stat = racialBonusStat;

                bool size = racialSizeChange;

                int res = monster.AddRacialHD(dice, stat, size);

                if (res != 0)
                {
                    monster.Name = monster.Name + " " + CMStringUtilities.PlusFormatNumber(res) + " HD";
                }
            }

            if (advancedLevel > 0)
            {
                int count = advancedLevel;

                int added = 0;

                for (int i = 0; i < count; i++)
                {
                    if (monster.MakeAdvanced())
                    {
                        added++;
                    }
                }

                if (added > 0)
                {
                    monster.Name += " (Adv " + added.PlusFormat() + ")";
                }
            }
            if (simpleSize != 0)
            {
                if (simpleSize > 0)
                {
                    int count = simpleSize;
                    int added = 0;
                    for (int i = 0; i < count; i++)
                    {
                        if (monster.MakeGiant())
                        {
                            added++;
                        }
                    }
                    if (added == 1)
                    {
                        monster.Name = "Giant " + monster.Name;
                    }
                    if (added > 1)
                    {
                        monster.Name = "Giant x" + added + " " + monster.Name;
                    }
                }
                else
                {
                    int count = -simpleSize;
                    int added = 0;
                    for (int i = 0; i < count; i++)
                    {
                        if (monster.MakeYoung())
                        {
                            added++;
                        }
                    }
                    if (added == 1)
                    {
                        monster.Name = "Young " + monster.Name;
                    }
                    if (added > 1)
                    {
                        monster.Name = "Young x" + added + " " + monster.Name;
                    }
                }
            }
            if (simpleOutsiderType != null)
            {
                switch (simpleOutsiderType)
                {
                case Monster.HalfOutsiderType.Celestial:
                    if (monster.MakeCelestial())
                    {
                        monster.Name = "Celestial " + monster.Name;
                    }
                    break;

                case Monster.HalfOutsiderType.Entropic:
                    if (monster.MakeEntropic())
                    {
                        monster.Name = "Entopic " + monster.Name;
                    }
                    break;

                case Monster.HalfOutsiderType.Fiendish:
                    if (monster.MakeFiendish())
                    {
                        monster.Name = "Fiendish " + monster.Name;
                    }
                    break;

                case Monster.HalfOutsiderType.Resolute:
                    if (monster.MakeResolute())
                    {
                        monster.Name = "Resolute " + monster.Name;
                    }
                    break;
                }
            }
            if (augmentSummoning)
            {
                monster.AugmentSummoning();
                monster.Name = "Augmented " + monster.Name;
            }


            return(monster);
        }