public override bool Satisfies(DataElement obj) { bool result; List <Ability> val; bool applicable = obj.GetAbilityListFromDataPath(dpath, out val); if (!applicable) { result = false; } else { switch (FilterType) { case AbilityListFilterType.CONTAINS: { result = false; foreach (Ability e in val) { if (e.ID == RefValue) { result = true; break; } } } break; case AbilityListFilterType.CONTAINS_SIMILAR: { result = false; foreach (int ability_id in Program.database.Abilities_similar[Program.database.Abilities[RefValue].Name]) { foreach (Ability e in val) { if (e.ID == ability_id) { result = true; break; } } if (result) { break; } } } break; default: result = false; break; } } return(result ^ NegateResult); }