private void HandleHdInfos(ref StatBlockInfo.HDBlockInfo tempHDInfo, ref int Count, ref bool Found, List <string> FoundClasses, List <ClassWrapper> tempCharacterClasses)
 {
     for (int a = 0; a < _hitDiceBlockInfo.Count; a++)
     {
         tempHDInfo = _hitDiceBlockInfo[a];
         foreach (ClassWrapper wrapper in _sbCheckerBaseInput.CharacterClasses.Classes)
         {
             if (tempHDInfo.HDType == _sbCheckerBaseInput.CharacterClasses.GetClassHDType(wrapper.Name))
             {
                 if (wrapper.Name == "Eidolon")
                 {
                     tempHDInfo.Multiplier -= StatBlockInfo.ComputeEidolonHD(wrapper.Level);
                 }
                 else
                 {
                     tempHDInfo.Multiplier -= wrapper.Level;
                 }
                 Found = true;
                 FoundClasses.Add(wrapper.Name);
                 tempCharacterClasses.Remove(wrapper);
             }
         }
         if (Found)
         {
             Found = false;
             _hitDiceBlockInfo[Count] = tempHDInfo;
         }
         Count++;
     }
 }
Example #2
0
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            string size       = MonSB.Size;
            int    naturalMod = 0;

            switch (size)
            {
            case "Large":
                naturalMod = 6;
                break;

            case "Huge":
                naturalMod = 7;
                break;

            case "Gargantuan":
                naturalMod = 8;
                break;

            case "Colossal":
                naturalMod = 9;
                break;
            }

            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", naturalMod, true);

            return(MonSB);
        }
        public int RaceBAB()
        {
            switch (BaseRaceType)
            {
            case RaceType.Race:
                return(0);

            case RaceType.StatBlock:
            case RaceType.BestiaryStatBlock:
                if (!UseRacialHD)
                {
                    return(0);                  // determined by class
                }
                if (Race_SB.BaseAtk.Length > 0)
                {
                    return(StatBlockInfo.ComputeBAB(RacialHDValue(), BaseBABType));
                }
                else
                {
                    return(0);
                }

            case RaceType.None:
                return(0);
            }
            return(-100);
        }
        public int HDFeats()
        {
            switch (BaseRaceType)
            {
            case RaceType.Race:
                return(0);

            case RaceType.StatBlock:
                if (!UseRacialHD)
                {
                    return(0);                  // determined by class
                }
                if (Race_SB.Feats.Length > 0)
                {
                    return(StatBlockInfo.GetHDFeats(RacialHDValue()));
                }
                else
                {
                    return(0);
                }

            case RaceType.None:
                return(0);
            }
            return(-100);
        }
        public override MonsterStatBlock ApplyAdvancedHDTemplate(MonsterStatBlock MonSB, string NewSizeValue, int HighCR, int LowCR)
        {
            if (NewSizeValue.Length > 0)
            {
                ComputeSizeChange(MonSB, NewSizeValue);
            }

            //natural armor change for CR increase
            List <int> HigherCR = new List <int> {
                0, 1, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2
            };                                                                                     //0 for 0th spot

            int diff = HighCR - LowCR - 1;

            int lowCRIndex  = LowCR + 1;
            int highCRIndex = diff + lowCRIndex;
            int total       = 0;

            for (int a = lowCRIndex; a <= highCRIndex; a++)
            {
                total += HigherCR[a];
            }

            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", total, true);

            return(MonSB);
        }
 public int GetWillSaveValue(int HD)
 {
     if (CreatureTypeInstance != null)
     {
         return(StatBlockInfo.ParseSaveBonues(HD, CreatureTypeInstance.WillSaveType));
     }
     return(-1);
 }
Example #7
0
 public Ability(StatBlockInfo.AbilityName Name, int Score)
 {
     this.Name       = Name;
     this.Score      = Score;
     ScoreTemp       = Score;
     AbilityModifier = 0;
     Modifiers       = new List <StatBlockModifier>();
     AbilityModifier = StatBlockInfo.GetAbilityModifier(Score);
 }
        private void ComputeSizeChange(MonsterStatBlock MonSB, string NewSizeValue)
        {
            StatBlockInfo.SizeCategories RaceSize = StatBlockInfo.GetSizeEnum(MonSB.Size);
            StatBlockInfo.SizeCategories NewSize  = StatBlockInfo.GetSizeEnum(NewSizeValue);

            int diff = NewSize - RaceSize;
            int naturalArmorChange = 0;
            int sign = 0;

            while (diff != 0)
            {
                if (diff < 0) //smaller
                {
                    RaceSize--;
                    sign = -1;
                }
                else //bigger
                {
                    RaceSize++;
                    sign = 1;
                }

                //apply new size changes
                switch (RaceSize)
                {
                case StatBlockInfo.SizeCategories.Diminutive:
                case StatBlockInfo.SizeCategories.Tiny:
                case StatBlockInfo.SizeCategories.Small:
                case StatBlockInfo.SizeCategories.Medium:
                    break;

                case StatBlockInfo.SizeCategories.Large:
                    naturalArmorChange += 2 * sign;
                    break;

                case StatBlockInfo.SizeCategories.Huge:
                    naturalArmorChange += 3 * sign;
                    break;

                case StatBlockInfo.SizeCategories.Gargantuan:
                    naturalArmorChange += 4 * sign;
                    break;

                case StatBlockInfo.SizeCategories.Colossal:
                    naturalArmorChange += 5 * sign;
                    break;
                }

                diff = NewSize - RaceSize;
            }

            if (naturalArmorChange > 0)
            {
                MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", naturalArmorChange, true);
            }
        }
        public int GetBABValue()
        {
            int Count = 0;

            foreach (ClassWrapper wrapper in Classes)
            {
                Count += StatBlockInfo.ComputeBAB(wrapper.Level, wrapper.ClassInstance.BABType);
            }
            return(Count);
        }
        public int GetWillSaveValue()
        {
            int Count = 0;

            foreach (ClassWrapper wrapper in Classes)
            {
                Count += StatBlockInfo.ParseSaveBonues(wrapper.Level, wrapper.ClassInstance.WillSaveType);
            }
            return(Count);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            int ChaValue = MonSB.GetAbilityScoreValue(StatBlockInfo.CHA) + 4;
            int ChaMod   = StatBlockInfo.GetAbilityModifier(ChaValue);

            TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);
            // MonSB.AbilitiyScores
            // MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "deflection", ChaMod, true);
            return(MonSB);
        }
Example #12
0
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);

            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "ToughnessB");

            TemplateCommon.AddDR(MonSB, "slashing", 5);

            return(MonSB);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 5, true);

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Perception");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Sense Motive");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Stealth");

            TemplateCommon.AddDR(MonSB, "bludgeoning and magic", 15);

            return(MonSB);
        }
Example #14
0
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);

            TemplateCommon.AddDR(MonSB, "-", 10);

            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "ToughnessB");

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Intimidate");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Sense Motive");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Stealth");

            return(MonSB);
        }
        public int GetBABValue(out string formula)
        {
            int Count = 0;

            formula = string.Empty;
            foreach (ClassWrapper wrapper in Classes)
            {
                int value = StatBlockInfo.ComputeBAB(wrapper.Level, wrapper.ClassInstance.BABType);
                Count   += value;
                formula += wrapper.Name + ": " + wrapper.Level.ToString() + PathfinderConstants.SPACE + wrapper.ClassInstance.BABType.ToString()
                           + " computed BAB--" + value.ToString();
            }
            return(Count);
        }
Example #16
0
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 4, true);

            TemplateCommon.AddDR(MonSB, "-", 5);

            TemplateCommon.AddResistance(MonSB, "cold ", 5);
            TemplateCommon.AddResistance(MonSB, "electricity ", 5);
            TemplateCommon.AddResistance(MonSB, "acid ", 5);
            TemplateCommon.AddResistance(MonSB, "fire ", 5);
            TemplateCommon.AddResistance(MonSB, "sonic ", 5);

            return(MonSB);
        }
        private StatBlockInfo.HDBlockInfo FindSpecialClassUnarmedDamage(StatBlockInfo.SizeCategories ClassSize)
        {
            int CLassLevel = 0;

            if (_sbCheckerBaseInput.CharacterClasses.HasClass("monk"))
            {
                CLassLevel = _sbCheckerBaseInput.CharacterClasses.FindClassLevel("Monk");
            }
            else if (_sbCheckerBaseInput.CharacterClasses.HasClass("brawler"))
            {
                CLassLevel = _sbCheckerBaseInput.CharacterClasses.FindClassLevel("brawler");
            }

            return(StatBlockInfo.GetSpecialClassUnarmedDamage(CLassLevel, ClassSize));
        }
        public string Size()
        {
            switch (BaseRaceType)
            {
            case RaceType.Race:
                return(StatBlockInfo.GetSizeFromEnum(RaceFoundationType.Size));

            case RaceType.StatBlock:
                return(Race_SB.Size);

            case RaceType.None:
                return(string.Empty);
            }
            return(null);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);

            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 4, true);

            TemplateCommon.AddDR(MonSB, "-", 5);

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+4 Stealth");

            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "ToughnessB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, " Improved Natural AttackB");

            return(MonSB);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);

            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 0, false);


            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "DiehardB");

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Stealth");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Perception");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Sense Motive");

            return(MonSB);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            if (!MonSB.DontUseRacialHD)
            {
                TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);

                StatBlockInfo.HDBlockInfo tempHDInfo = new StatBlockInfo.HDBlockInfo();
                tempHDInfo.ParseHDBlock(MonSB.HD);
                //tempHDInfo.HDType = StatBlockInfo.HitDiceCategories.d8; //keeps HD, change to d8
                //tempHDInfo.Modifier = 0;
                //MonSB.HD = tempHDInfo.ToString();
                CreatureTypeFoundation CreatureType = CreatureTypeDetailsWrapper.GetRaceDetailClass("undead");
                int fort = StatBlockInfo.ParseSaveBonues(tempHDInfo.Multiplier, CreatureType.FortSaveType);
                CreatureTypeMaster CreatureTypeMaster = new CreatureTypeMaster();
                CreatureTypeMaster.CreatureTypeInstance = CreatureType;
                fort      += StatBlockInfo.GetAbilityModifier(MonSB.GetAbilityScoreValue(CreatureTypeMaster.CreatureTypeInstance.FortMod()));
                MonSB.Fort = fort.ToString();
                int refValue = StatBlockInfo.ParseSaveBonues(tempHDInfo.Multiplier, CreatureType.RefSaveType);
                refValue += StatBlockInfo.GetAbilityModifier(MonSB.GetAbilityScoreValue(StatBlockInfo.DEX));
                MonSB.Ref = refValue.ToString();
                int will = StatBlockInfo.ParseSaveBonues(tempHDInfo.Multiplier, CreatureType.WillSaveType);
                will      += StatBlockInfo.GetAbilityModifier(MonSB.GetAbilityScoreValue(StatBlockInfo.WIS));
                MonSB.Will = will.ToString();
            }


            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 6, true);

            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "AlertnessB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Combat ReflexesB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "DodgeB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Improved InitiativeB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Lightning ReflexesB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "ToughnessB");

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Bluff");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Perception");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Sense Motive");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Stealth");

            TemplateCommon.AddDR(MonSB, "magic and silver", 10);

            TemplateCommon.AddResistance(MonSB, "cold ", 10);
            TemplateCommon.AddResistance(MonSB, "electricity ", 10);

            return(MonSB);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);

            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 3, true);

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Climb");

            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Improved InitiativeB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "ToughnessB");

            TemplateCommon.AddDR(MonSB, "magic and slashing", 5);

            TemplateCommon.AddResistance(MonSB, "fire ", 10);

            return(MonSB);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 6, true);
            TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);

            TemplateCommon.AddDR(MonSB, "silver and slashing", 5);
            TemplateCommon.AddResistance(MonSB, "cold ", 10);
            TemplateCommon.AddResistance(MonSB, "fire ", 10);

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Bluff");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Fly");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Perception");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Sense Motive");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Stealth");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Knowledge (arcana)");

            return(MonSB);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 4, true);

            TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);

            TemplateCommon.AddDR(MonSB, "magic", 10);

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Perception");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Intimidatee");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Ride");

            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Mounted CombatB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Improved InitiativeB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Ride-By AttackB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "ToughnessB");

            return(MonSB);
        }
Example #25
0
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8);

            int ACMod = StatBlockInfo.GetAbilityModifier(MonSB.GetAbilityScoreValue(StatBlockInfo.AbilityName.Charisma)) / 2;

            if (ACMod < 1)
            {
                ACMod = 1;
            }

            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "deflection", ACMod, true);

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Perception");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Intimidate");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Stealth");


            return(MonSB);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 2, true);

            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "AlertnessB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "DodgeB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "MobilityB");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Skill Focus (Acrobatics)B");
            MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Spring AttackB");

            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Acrobatics");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Perception");
            MonSB.RacialMods = StatBlockInfo.AddRacialMod(MonSB.RacialMods, "+8 Stealth");

            TemplateCommon.AddDR(MonSB, "magic and slashing", 10);

            TemplateCommon.AddResistance(MonSB, "cold ", 20);

            return(MonSB);
        }
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 1, true);

            if (MonSB.HDValue() <= 11)
            {
                TemplateCommon.AddDR(MonSB, "magic", 5);
            }
            else
            {
                TemplateCommon.AddDR(MonSB, "magic", 10);
            }

            TemplateCommon.AddResistance(MonSB, "acid ", 10);
            TemplateCommon.AddResistance(MonSB, "cold ", 10);
            TemplateCommon.AddResistance(MonSB, "electricity ", 10);



            return(MonSB);
        }
        public int RaceWill()
        {
            switch (BaseRaceType)
            {
            case RaceType.Race:
                return(0);

            case RaceType.StatBlock:
            case RaceType.BestiaryStatBlock:
                // if (IsHumanoid) return 0; // determined by class
                if (!UseRacialHD)
                {
                    return(0);                  // determined by class
                }
                if (_useTemplateValues)
                {
                    int modWill = StatBlockInfo.GetAbilityModifier(GetAbilityScore(StatBlockInfo.WIS));
                    return(Convert.ToInt32(Race_SB.Will) - modWill);
                }
                else
                {
                    if (WillOverride == StatBlockInfo.SaveBonusType.None)
                    {
                        StatBlockInfo.HDBlockInfo racialHDInfo = new StatBlockInfo.HDBlockInfo();
                        racialHDInfo.ParseHDBlock(RacialHD());
                        return(CreatureTypeMaster.GetWillSaveValue(racialHDInfo.Multiplier));
                    }
                    else
                    {
                        return(StatBlockInfo.ParseSaveBonues(RacialHDValue(), WillOverride));
                    }
                }

            case RaceType.None:
                return(0);
            }
            return(-1);
        }
        private string HandleAnimatedObject(string RacialHD)
        {
            if (_sbCheckerBaseInput.MonsterSB.Race.ToLower() == "animated object")
            {
                switch (StatBlockInfo.GetSizeEnum(_sbCheckerBaseInput.MonsterSB.Size))
                {
                case StatBlockInfo.SizeCategories.Tiny:
                    RacialHD = "1d10";
                    break;

                case StatBlockInfo.SizeCategories.Small:
                    RacialHD = "2d10+10";
                    break;

                case StatBlockInfo.SizeCategories.Medium:
                    RacialHD = "3d10+20";
                    break;

                case StatBlockInfo.SizeCategories.Large:
                    RacialHD = "4d10+30";
                    break;

                case StatBlockInfo.SizeCategories.Huge:
                    RacialHD = "7d10+40";
                    break;

                case StatBlockInfo.SizeCategories.Gargantuan:
                    RacialHD = "10d10+60";
                    break;

                case StatBlockInfo.SizeCategories.Colossal:
                    RacialHD = "13d10+80";
                    break;
                }
            }

            return(RacialHD);
        }
Example #30
0
        public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB)
        {
            MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 1, true);

            if (MonSB.HDValue() <= 11)
            {
                TemplateCommon.AddDR(MonSB, "magic", 5);
            }
            else
            {
                TemplateCommon.AddDR(MonSB, "magic", 10);
            }

            TemplateCommon.AddResistance(MonSB, "cold ", 10);
            TemplateCommon.AddResistance(MonSB, "electricity ", 10);
            TemplateCommon.AddResistance(MonSB, "acid ", 10);
            TemplateCommon.AddResistance(MonSB, "fire ", 10);

            int CR_Hold;

            int.TryParse(MonSB.CR, out CR_Hold);
            if (CR_Hold <= 4)
            {
                MonSB.SR = ((CR_Hold - 1) + 11).ToString();
            }
            else if (CR_Hold <= 10)
            {
                MonSB.SR = ((CR_Hold - 2) + 11).ToString();
            }
            else
            {
                MonSB.SR = ((CR_Hold - 2) + 11).ToString();
            }

            return(MonSB);
        }