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 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); }
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 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); }
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); }
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) { 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) { 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); }
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) { 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", 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 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); }
public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB) { MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", 8, true); TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8); TemplateCommon.AddDR(MonSB, "wood and piercing", 5); TemplateCommon.AddResistance(MonSB, "cold ", 10); TemplateCommon.AddResistance(MonSB, "electricity ", 10); TemplateCommon.AddResistance(MonSB, "sonic ", 10); 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.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "AlertnessB"); MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Improved InitiativeB"); MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Lightning ReflexesB"); MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Skill Focus()B"); MonSB.Feats = StatBlockInfo.AddFeat(MonSB.Feats, "Skill Focus()B"); return(MonSB); }
public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB) { 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(); double HD = Convert.ToInt32(tempHDInfo.Multiplier); double temp = (HD * 3) / 4; MonSB.BaseAtk = "+" + Math.Floor(temp).ToString(); temp = HD / 3; //Fort MonSB.Fort = "+" + Math.Floor(temp).ToString(); temp = HD / 3; ///Ref MonSB.Ref = "+" + Math.Floor(temp).ToString(); temp = HD / 2; ///Will MonSB.Will = "+" + (Math.Floor(temp) + 2).ToString(); switch (StatBlockInfo.GetSizeEnum(MonSB.Size)) { case StatBlockInfo.SizeCategories.Tiny: temp = 0; break; case StatBlockInfo.SizeCategories.Small: temp = 1; break; case StatBlockInfo.SizeCategories.Medium: case StatBlockInfo.SizeCategories.Large: temp = 2; break; case StatBlockInfo.SizeCategories.Huge: temp = 3; break; case StatBlockInfo.SizeCategories.Gargantuan: temp = 6; break; case StatBlockInfo.SizeCategories.Colossal: temp = 10; break; default: temp = 0; break; } MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", Convert.ToInt32(temp), false); TemplateCommon.AddDR(MonSB, "bludgeoning", 5); return(MonSB); }
public static MonsterStatBlock AppyBaseZombieTemplate(MonsterStatBlock MonSB) { 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(); double HD = Convert.ToInt32(tempHDInfo.Multiplier); double temp = (HD * 3) / 4; MonSB.BaseAtk = "+" + Math.Floor(temp).ToString(); temp = HD / 3; //Fort MonSB.Fort = "+" + Math.Floor(temp).ToString(); temp = HD / 3; ///Ref MonSB.Ref = "+" + Math.Floor(temp).ToString(); temp = HD / 2; ///Will MonSB.Will = "+" + (Math.Floor(temp) + 2).ToString(); switch (StatBlockInfo.GetSizeEnum(MonSB.Size)) { case StatBlockInfo.SizeCategories.Tiny: temp = 0; break; case StatBlockInfo.SizeCategories.Small: temp = 1; break; case StatBlockInfo.SizeCategories.Medium: temp = 2; break; case StatBlockInfo.SizeCategories.Large: temp = 3; break; case StatBlockInfo.SizeCategories.Huge: temp = 4; break; case StatBlockInfo.SizeCategories.Gargantuan: temp = 7; break; case StatBlockInfo.SizeCategories.Colossal: temp = 11; break; default: temp = 0; break; } TemplateCommon.ChangeHD(MonSB, StatBlockInfo.HitDiceCategories.d8); TemplateCommon.AddDR(MonSB, "slashing", 5); MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", Convert.ToInt32(temp), false); MonSB.Skills = string.Empty; MonSB.Feats = "ToughnessB"; return(MonSB); }
public override MonsterStatBlock ApplyTemplate(MonsterStatBlock MonSB) { MonSB.AC_Mods = StatBlockInfo.ChangeAC_Mod(MonSB.AC_Mods, "natural", -2, true); return(MonSB); }