//private void TestComplexRole(IRole iRole, RoleType roleType, RoleFlag rf, bool isLeader) //{ // ComplexRole cr = iRole as ComplexRole; // Assert.IsNotNull(cr); // Assert.AreEqual(isLeader, cr.Leader); // Assert.AreEqual(roleType, cr.Type); // Assert.AreEqual(rf, cr.Flag); //} //private static void TestMinion(Creature c, bool HasRole, RoleType? roleType) //{ // Minion cr = (Minion)c.Role; // Assert.AreEqual(HasRole, cr.HasRole); // if (roleType != null) // { // Assert.IsTrue(cr.HasRole); // Assert.AreEqual(roleType, cr.Type); // } // else // { // Assert.IsFalse(cr.HasRole); // } //} private void TestSizeOriginType(Creature c, CreatureSize creatureSize, CreatureOrigin creatureOrigin, CreatureType creatureType, int level, string keyword) { Assert.AreEqual(creatureSize, c.Size); Assert.AreEqual(creatureOrigin, c.Origin); Assert.AreEqual(creatureType, c.Type); Assert.AreEqual(level, c.Level); Assert.AreEqual(CleanForCompare(keyword), CleanForCompare(c.Keywords)); }
public bool AllowItem(object obj, out Difficulty diff) { diff = Difficulty.Moderate; if (obj is ICreature) { ICreature c = obj as ICreature; #region Creature bool outlier = false; diff = AI.GetThreatDifficulty(c.Level, fPartyLevel); if ((diff == Difficulty.Trivial) || (diff == Difficulty.Extreme)) { outlier = true; } if (outlier && FilterLevelAppropriateToggle.Checked) { return(false); } if (FilterNameToggle.Checked && (fNameTokens != null)) { string name = c.Name.ToLower(); foreach (string token in fNameTokens) { if (!name.Contains(token)) { return(false); } } } if (FilterCatToggle.Checked && (fCatTokens != null)) { string cat = c.Category.ToLower(); foreach (string token in fCatTokens) { if (!cat.Contains(token)) { return(false); } } } if (FilterRoleToggle.Checked) { RoleType role = (RoleType)FilterRoleBox.SelectedItem; if (c.Role is ComplexRole) { ComplexRole cr = c.Role as ComplexRole; if (cr.Type != role) { return(false); } } if (c.Role is Minion) { Minion m = c.Role as Minion; if ((!m.HasRole) || (m.Type != role)) { return(false); } } } if (FilterModToggle.Checked) { RoleFlag flag = RoleFlag.Standard; bool minion = false; if (FilterModBox.Text == "Standard") { } if (FilterModBox.Text == "Elite") { flag = RoleFlag.Elite; } if (FilterModBox.Text == "Solo") { flag = RoleFlag.Solo; } if (FilterModBox.Text == "Minion") { minion = true; } ComplexRole cr = c.Role as ComplexRole; if (cr != null) { if (minion) { return(false); } if (flag != cr.Flag) { return(false); } } Minion m = c.Role as Minion; if (m != null) { if (!minion) { return(false); } } } if (FilterOriginToggle.Checked) { CreatureOrigin origin = (CreatureOrigin)FilterOriginBox.SelectedItem; if (c.Origin != origin) { return(false); } } if (FilterTypeToggle.Checked) { CreatureType type = (CreatureType)FilterTypeBox.SelectedItem; if (c.Type != type) { return(false); } } if (FilterKeywordToggle.Checked && (fKeyTokens != null)) { string keywords = (c.Keywords != null) ? c.Keywords.ToLower() : ""; foreach (string token in fKeyTokens) { if (!keywords.Contains(token)) { return(false); } } } if (FilterLevelToggle.Checked) { if ((c.Level < LevelFromBox.Value) || (c.Level > LevelToBox.Value)) { return(false); } } if (FilterSourceToggle.Checked) { Creature creature = c as Creature; if (creature == null) { return(false); } Library lib = FilterSourceBox.SelectedItem as Library; if (!lib.Creatures.Contains(creature)) { return(false); } } #endregion return(true); } if (obj is CreatureTemplate) { CreatureTemplate ct = obj as CreatureTemplate; #region Template if (FilterNameToggle.Checked && (fNameTokens != null)) { string name = ct.Name.ToLower(); foreach (string token in fNameTokens) { if (!name.Contains(token)) { return(false); } } } if (FilterCatToggle.Checked && (fCatTokens != null)) { // Ignore category for templates } if (FilterRoleToggle.Checked) { // Match on role RoleType role = (RoleType)FilterRoleBox.SelectedItem; if (ct.Role != role) { return(false); } } if (FilterOriginToggle.Checked) { // Ignore origin for templates } if (FilterTypeToggle.Checked) { // Ignore type for templates } if (FilterKeywordToggle.Checked && (fKeyTokens != null)) { // Ignore keywords for templates } if (FilterSourceToggle.Checked) { Library lib = FilterSourceBox.SelectedItem as Library; if (!lib.Templates.Contains(ct)) { return(false); } } return(true); } if (obj is NPC) { NPC npc = obj as NPC; bool outlier = false; diff = AI.GetThreatDifficulty(npc.Level, fPartyLevel); if ((diff == Difficulty.Trivial) || (diff == Difficulty.Extreme)) { outlier = true; } if (outlier && FilterLevelAppropriateToggle.Checked) { return(false); } if (FilterNameToggle.Checked && (fNameTokens != null)) { string name = npc.Name.ToLower(); foreach (string token in fNameTokens) { if (!name.Contains(token)) { return(false); } } } if (FilterCatToggle.Checked && (fCatTokens != null)) { string cat = npc.Category.ToLower(); foreach (string token in fCatTokens) { if (!cat.Contains(token)) { return(false); } } } if (FilterRoleToggle.Checked) { // Match on role RoleType role = (RoleType)FilterRoleBox.SelectedItem; if (npc.Role is ComplexRole) { ComplexRole cr = npc.Role as ComplexRole; if (cr.Type != role) { return(false); } } if (npc.Role is Minion) { Minion m = npc.Role as Minion; if ((!m.HasRole) || (m.Type != role)) { return(false); } } } if (FilterOriginToggle.Checked) { CreatureOrigin origin = (CreatureOrigin)FilterOriginBox.SelectedItem; if (npc.Origin != origin) { return(false); } } if (FilterTypeToggle.Checked) { CreatureType type = (CreatureType)FilterTypeBox.SelectedItem; if (npc.Type != type) { return(false); } } if (FilterKeywordToggle.Checked && (fKeyTokens != null)) { string keywords = (npc.Keywords != null) ? npc.Keywords.ToLower() : ""; foreach (string token in fKeyTokens) { if (!keywords.Contains(token)) { return(false); } } } if (FilterLevelToggle.Checked) { if ((npc.Level < LevelFromBox.Value) || (npc.Level > LevelToBox.Value)) { return(false); } } #endregion return(true); } if (obj is Trap) { Trap trap = obj as Trap; #region Trap bool outlier = false; diff = AI.GetThreatDifficulty(trap.Level, fPartyLevel); if ((diff == Difficulty.Trivial) || (diff == Difficulty.Extreme)) { outlier = true; } if (outlier && FilterLevelAppropriateToggle.Checked) { return(false); } if (FilterNameToggle.Checked && (fNameTokens != null)) { string name = trap.Name.ToLower(); foreach (string token in fNameTokens) { if (!name.Contains(token)) { return(false); } } } if (FilterCatToggle.Checked && (fCatTokens != null)) { // Ignore category for traps } if (FilterRoleToggle.Checked) { // Match on role RoleType role = (RoleType)FilterRoleBox.SelectedItem; if (trap.Role is ComplexRole) { ComplexRole cr = trap.Role as ComplexRole; if (cr.Type != role) { return(false); } } if (trap.Role is Minion) { Minion m = trap.Role as Minion; if ((!m.HasRole) || (m.Type != role)) { return(false); } } } if (FilterModToggle.Checked) { RoleFlag flag = RoleFlag.Standard; bool minion = false; if (FilterModBox.Text == "Standard") { } if (FilterModBox.Text == "Elite") { flag = RoleFlag.Elite; } if (FilterModBox.Text == "Solo") { flag = RoleFlag.Solo; } if (FilterModBox.Text == "Minion") { minion = true; } ComplexRole cr = trap.Role as ComplexRole; if (cr != null) { if (minion) { return(false); } if (flag != cr.Flag) { return(false); } } Minion m = trap.Role as Minion; if (m != null) { if (!minion) { return(false); } } } if (FilterOriginToggle.Checked) { // Ignore origin for traps } if (FilterTypeToggle.Checked) { // Ignore type for traps } if (FilterKeywordToggle.Checked && (fKeyTokens != null)) { // Ignore keywords for traps } if (FilterLevelToggle.Checked) { if ((trap.Level < LevelFromBox.Value) || (trap.Level > LevelToBox.Value)) { return(false); } } if (FilterSourceToggle.Checked) { Library lib = FilterSourceBox.SelectedItem as Library; if (!lib.Traps.Contains(trap)) { return(false); } } #endregion return(true); } if (obj is SkillChallenge) { SkillChallenge sc = obj as SkillChallenge; #region Skill challenge if (FilterNameToggle.Checked && (fNameTokens != null)) { string name = sc.Name.ToLower(); foreach (string token in fNameTokens) { if (!name.Contains(token)) { return(false); } } } if (FilterCatToggle.Checked && (fCatTokens != null)) { // Ignore category for skill challenges } if (FilterRoleToggle.Checked) { // Ignore roles for skill challenges } if (FilterOriginToggle.Checked) { // Ignore origin for skill challenges } if (FilterTypeToggle.Checked) { // Ignore type for skill challenges } if (FilterKeywordToggle.Checked && (fKeyTokens != null)) { // Ignore keywords for skill challenges } if (FilterSourceToggle.Checked) { Library lib = FilterSourceBox.SelectedItem as Library; if (!lib.SkillChallenges.Contains(sc)) { return(false); } } #endregion return(true); } return(false); }