private void CheckFeatPreReqInt(FeatFoundation feat) { if (feat.Int < 0) { return; } if (feat.BonusFeat) { return; } if (feat.Int > Int) { if (_sbCheckerBaseInput.CharacterClasses.HasClass("brawler")) { if (feat.Int > 13 || feat.Type != FeatFoundational.FeatTypes.Combat) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " needs min Int of " + feat.Int.ToString() + ", but has Int of " + Int.ToString()); } } else { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " needs min Int of " + feat.Int.ToString() + ", but has Int of " + Int.ToString()); } } }
private void CheckFeatPreReqCon(FeatFoundation feat) { if (feat.Con < 0) { return; } if (feat.BonusFeat) { return; } if (_sbCheckerBaseInput.MonsterSBSearch.HasType("undead")) { if (feat.Con > Cha) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " needs min Con of " + feat.Con.ToString() + ", but has Cha(undead) of " + Cha.ToString()); } return; } if (feat.Con > Con) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " needs min Con of " + feat.Con.ToString() + ", but has Con of " + Con.ToString()); } }
public void ParseFeats(List <string> FeatList) { FeatList.RemoveAll(x => x == string.Empty); List <string> FailedFeats = new List <string>(); string hold = string.Empty; string temp = string.Empty; bool bonusFeat = false; foreach (string feat in FeatList) { hold = feat.Trim(); hold = hold.Replace("'", string.Empty); bonusFeat = false; if (hold.EndsWith("B")) { hold = hold.Substring(0, hold.Length - 1); bonusFeat = true; } temp = string.Empty; int Pos = hold.IndexOf(PathfinderConstants.PAREN_LEFT); if (Pos >= 0) { temp = hold.Substring(Pos); hold = hold.Replace(temp, string.Empty).Trim(); temp = Utility.RemoveParentheses(temp); } hold = hold.Replace("**", string.Empty); hold = hold.Replace("*", string.Empty); Feat = ParceFeat(hold); if (Feat != null) { if (temp.Length > 0) { Feat.SelectedItem = temp; } Feat.BonusFeat = bonusFeat; FeatsList.Add(Feat); } else { FailedFeats.Add(hold); } } if (FailedFeats.Any()) { throw new Exception("Feats " + string.Join(",", FailedFeats.ToArray()) + " not defined"); } }
private void CheckFeatPreReqWis(FeatFoundation feat) { if (feat.Wis < 0) { return; } if (feat.BonusFeat) { return; } if (feat.Wis > Wis) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " needs min Wis of " + feat.Wis.ToString() + ", but has Wis of " + Wis.ToString()); } }
private void CheckFeatPreReqCha(FeatFoundation feat) { if (feat.Cha < 0) { return; } if (feat.BonusFeat) { return; } if (feat.Cha > Cha) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " needs min Cha of " + feat.Cha.ToString() + ", but has Cha of " + Cha.ToString()); } }
private void CheckFeatPreReqDex(FeatFoundation feat) { if (feat.Dex < 0) { return; } if (feat.BonusFeat) { return; } if (feat.Dex > Dex) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " needs min Dex of " + feat.Dex.ToString() + ", but has Dex of " + Dex.ToString()); } }
private void CheckFeatPreReqBAB(FeatFoundation feat) { if (feat.BAB < 0) { return; } if (feat.BonusFeat) { return; } if (feat.BAB > BAB) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " needs min BAB of " + feat.BAB.ToString() + ", but has BAB of " + BAB.ToString()); } }
private void ChechPreReqFeats(FeatFoundation feat) { List <string> preReqs = null; if (!feat.BonusFeat) { preReqs = feat.PreRequistFeats; foreach (string preReq in preReqs) { bool PreReqOrs = preReq.Contains("|"); List <string> preReqs2 = new List <string>(); bool Fail = false; if (PreReqOrs) { preReqs2 = preReq.Split('|').ToList(); foreach (string preReq2 in preReqs2) { if (CheckOnePreReqFeat(feat, preReq2, out Fail)) { continue; } if (!Fail) { break; } } if (Fail) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " is missing prereq feat " + preReq); } } else { if (CheckOnePreReqFeat(feat, preReq, out Fail)) { continue; } if (Fail) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " is missing prereq feat " + preReq); } } } } }
private void CheckFeatPreReqStr(FeatFoundation feat) { if (feat.Str < 0) { return; } if (feat.BonusFeat) { return; } if (_sbCheckerBaseInput.MonsterSBSearch.HasSubType("incorporeal")) { return; } if (feat.Str > Str) { _sbCheckerBaseInput.MessageXML.AddFail("Feat Pre Req", feat.Name + " needs min Str of " + feat.Str.ToString() + ", but has Str of " + Str.ToString()); } }
private bool CheckOnePreReqFeat(FeatFoundation feat, string preReq, out bool Fail) { Fail = false; string temp = preReq.Trim(); string selectedItem = null; int Pos = temp.IndexOf(PathfinderConstants.PAREN_LEFT); if (Pos >= 0) { selectedItem = temp.Substring(Pos); temp = temp.Replace(selectedItem, string.Empty).Trim(); selectedItem = Utility.RemoveParentheses(selectedItem); } if (selectedItem == null) { selectedItem = feat.SelectedItem; } if (selectedItem == "see below") { selectedItem = string.Empty; } if (selectedItem.Contains("see page")) { selectedItem = string.Empty; } if (!Feats.Exists(y => y.Name.ToLower() == temp.ToLower() && y.SelectedItem == selectedItem)) { if (temp == "Weapon Focus" && Feats.Exists(y => y.Name.ToLower() == temp.ToLower())) { return(true); } if (CheckBonusFeats(feat.Name)) { Fail = true; } } return(false); }
private void CheckClassPreReqs(List <FeatData> Feats) { string methodName = "CheckClassPreReqs"; foreach (ClassWrapper wrapper in _sbCheckerBaseInput.CharacterClasses.Classes) { List <string> ClassPreReqs = _sbCheckerBaseInput.CharacterClasses.GetPrestigePreReqFeats(wrapper.Name); FeatFoundation tempFeat = null; foreach (string oneFeat in ClassPreReqs) { string holdFeat = oneFeat; string SelectdItem = string.Empty; List <string> splitFeats = oneFeat.Split(',').ToList(); bool Found = false; foreach (string oneSplitFeat in splitFeats) { if (oneSplitFeat.Contains(" (")) { int Pos = oneSplitFeat.IndexOf(" ("); holdFeat = oneSplitFeat.Substring(0, Pos).Trim(); SelectdItem = oneSplitFeat.Replace(holdFeat, string.Empty); SelectdItem = Utility.RemoveParentheses(SelectdItem); } tempFeat = Feats.Find(p => p.Name == holdFeat && p.SelectedItem == SelectdItem); if (tempFeat != null) { Found = true; break; } } if (!Found) { _sbCheckerBaseInput.MessageXML.AddFail(methodName, wrapper.Name + " is missing prereq feat " + oneFeat); } } } }