public string CreateFullText(MagicItemStatBlock SB) { MI_SB = SB; StringBuilder stringBulider = new StringBuilder(); stringBulider.Append(CommonMethods.Get_CSS_Ref()); Foramt_Basics_Div(stringBulider); stringBulider.Append(PathfinderConstants.EDIV); if (MI_SB.AL.Length > 0) { Foramt_Statisitcs_Div(stringBulider); } if (MI_SB.Description.Length > 0) { Format_Description_Div(stringBulider); } if (MI_SB.Destruction.Length > 0) { Format_Destruction_Div(stringBulider); } if (MI_SB.MagicItems.Length == 0 && MI_SB.Requirements.Length > 0) { Format_Construction_Div(stringBulider); } else { if (MI_SB.MagicItems.Length > 0) { Format_Creation_Div(stringBulider); } } stringBulider = stringBulider.Replace("<i>fly</i>ing", "flying"); stringBulider = stringBulider.Replace("<i>web</i>bing", "webbing"); stringBulider = stringBulider.Replace("da<i>mage</i>", "damage"); stringBulider = stringBulider.Replace("<i>heal</i>ing", "healing"); stringBulider = stringBulider.Replace("<i>jump</i>ing", "jumping"); stringBulider = stringBulider.Replace("<i>bleed</i>ing", "bleeding"); stringBulider = stringBulider.Replace("f<i>light</i>", "flight"); stringBulider = stringBulider.Replace("<i>light</i>ning", "lightning"); stringBulider = stringBulider.Replace("<i><i>resist</i> energy</i>", "<i>resist energy</i>"); stringBulider = stringBulider.Replace("<i>see <i>invisibility</i></i>", "<i>see invisibility</i>"); stringBulider = stringBulider.Replace("<i>greater <i>magic</i> weapon</i>", "<i>greater magic weapon</i>"); stringBulider = stringBulider.Replace("S<i>ki</i>ll", "Skill"); stringBulider = stringBulider.Replace("channel <i>resistance</i>", "channel resistance"); stringBulider = stringBulider.Replace("meta<i>magic</i>", "metamagic"); stringBulider = stringBulider.Replace("<i>light</i> crossbow", "light crossbow"); stringBulider = stringBulider.Replace("butter<i>fly</i>", "butterfly"); stringBulider = stringBulider.Replace("<i>sleep</i>ing", "sleeping"); stringBulider = stringBulider.Replace("<i>teleport</i>ation", "teleportation"); stringBulider = stringBulider.Replace("<i>web</i>s", "webs"); stringBulider = stringBulider.Replace("<i>heal</i>s", "heals"); stringBulider = stringBulider.Replace("<i>ki</i>ng", "king"); stringBulider = stringBulider.Replace("s<i>ki</i>ll", "skill"); stringBulider = stringBulider.Replace("<i>heal</i>th", "health"); stringBulider = stringBulider.Replace("moon<i>light</i>", "moonlight"); List <string> Supers = Utility.GetSuperScripts(); foreach (string super in Supers) { stringBulider = stringBulider.Replace(super, "<sup>" + super + "</sup>"); } stringBulider = stringBulider.Replace("CONSTR<sup>UC</sup>TION", "CONSTRUCTION"); stringBulider = stringBulider.Replace("DESTR<sup>UC</sup>TION", "DESTRUCTION"); return(stringBulider.ToString()); }
public void ApplyBeforeCombatMagic() { if (!_spellsData.BeforeCombatMagic.Any()) { return; } ISpellStatBlock spell = null; MagicItemStatBlock magicItem = null; _sbCheckerBaseInput.IndvSB.HD = _sbCheckerBaseInput.MonsterSB.HD; List <IndividualStatBlock_Combat> list = new List <IndividualStatBlock_Combat> { _sbCheckerBaseInput.IndvSB }; Dictionary <string, int> Overrides = new Dictionary <string, int>(); bool found = false; _spellsData.MagicInEffect = new List <string>(); foreach (string magic in _spellsData.BeforeCombatMagic) { string search = magic; bool Potion = false; bool Oil = false; Oil = magic.Contains("oil"); Potion = magic.Contains("potion"); search = Utility.SearchMod(search); spell = _spellStatBlockBusiness.GetSpellByName(search); if (spell != null && !Potion && !Oil) { try { int CL = FindSpellCasterLevel(magic); if (magic == "effortless armor") { int ACPmod = 1; if (CL >= 5) { ACPmod++; } if (CL >= 10) { ACPmod++; } if (CL >= 15) { ACPmod++; } if (CL >= 20) { ACPmod++; } _armorClassData.TotalArmorCheckPenalty += ACPmod; _sbCheckerBaseInput.MessageXML.AddInfo("effortless armor mod " + ACPmod.ToString()); } _sbCheckerBaseInput.IndvSB.CastSpell(spell.name, CL, list); found = true; _spellsData.MagicInEffect.Add(spell.name + " CL: " + CL.ToString()); } catch (Exception ex) { _sbCheckerBaseInput.MessageXML.AddFail("ApplyBeforeCombatMagic", "ApplyBeforeCombatMagic: Issue with " + magic + "-- " + ex.Message); } } else { magicItem = _magicItemStatBlockBusiness.GetMagicItemByName(magic); if (magicItem != null) { found = true; } else { if (spell != null) { int CL = 0; try { found = UseMagicalEquipment(ref spell, list, Overrides, magic, ref CL); } catch (Exception ex) { _sbCheckerBaseInput.MessageXML.AddInfo("Before Combat Magic: Issue with " + magic + " --" + ex.Message); } if (found) { _spellsData.MagicInEffect.Add(spell.name + " CL: " + CL.ToString()); } } } } if (!found) { _sbCheckerBaseInput.MessageXML.AddInfo("Before Combat Magic: Issue with " + magic); } found = false; } if (_sbCheckerBaseInput.IndvSB.GetOnGoingStatBlockModsCount() > 0) { List <OnGoingStatBlockModifier> mods = _sbCheckerBaseInput.IndvSB.GetOnGoingStatBlockMods(); if (Overrides.Any()) { foreach (KeyValuePair <string, int> kvp in Overrides) { for (int a = mods.Count - 1; a > 0; a--) { if (mods[a].Name.ToLower().Contains(kvp.Key.ToString())) { mods[a].Modifier = kvp.Value; } } } } foreach (OnGoingStatBlockModifier mod in mods) { //if (mod.ModType == OnGoingStatBlockModifier.StatBlockModifierTypes.AC) //{ // ACMods_Computed.AddModEffect(mod); //} if (mod.ModType == OnGoingStatBlockModifier.StatBlockModifierTypes.Attack) { _onGoingAttackMod += mod.Modifier; } } } List <OnGoingStatBlockModifier> onGoingMods = _sbCheckerBaseInput.IndvSB.GetOnGoingStatBlockMods(); //remove all ability mods since they have been already incorperated into the SB and we don't want to add them twice for (int a = onGoingMods.Count - 1; a >= 0; a--) { if (onGoingMods[a].ModType == OnGoingStatBlockModifier.StatBlockModifierTypes.Ability) { onGoingMods.RemoveAt(a); } } if (_spellsData.MagicInEffect.Any()) { string temp = string.Join(", ", _spellsData.MagicInEffect.ToArray()); _sbCheckerBaseInput.MessageXML.AddInfo("Magic In Effect: " + temp); } }