public EncounterTemplateSlot(int count, int level_adj, RoleFlag flag, RoleType[] roles) { this.fCount = count; this.fLevelAdjustment = level_adj; this.fFlag = flag; this.fRoles.AddRange(roles); }
/// <summary> /// Constructor. /// </summary> /// <param name="count">The number of creatures.</param> /// <param name="level_adj">The level adjustment.</param> /// <param name="flag">The type of creature.</param> /// <param name="role">The allowed role.</param> public EncounterTemplateSlot(int count, int level_adj, RoleFlag flag, RoleType role) { fCount = count; fLevelAdjustment = level_adj; fFlag = flag; fRoles.Add(role); }
private static List <Creature> get_creatures(List <Creature> creatures, int level, bool is_minion, bool is_leader, RoleType role, RoleFlag flag) { List <Creature> list = new List <Creature>(); foreach (Creature c in creatures) { if (c.Level != level) { continue; } ComplexRole cr = c.Role as ComplexRole; Minion m = c.Role as Minion; if ((m != null) && (!m.HasRole)) { continue; } bool minion = m != null; if (minion != is_minion) { continue; } bool leader = ((cr != null) && (cr.Leader)); if (leader != is_leader) { continue; } RoleType rt = RoleType.Blaster; RoleFlag rf = RoleFlag.Standard; if (cr != null) { rt = cr.Type; rf = cr.Flag; } if (m != null) { rt = m.Type; rf = RoleFlag.Standard; } if (rt != role) { continue; } if (rf != flag) { continue; } list.Add(c); } return(list); }
public IRole GetLevelAndRoleFrom(string temp, out int level) { RoleType rt; string[] tempArray = temp.Replace("Level", "").Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); level = Convert.ToInt32(tempArray[0]); //c.Role = new ComplexRole(Enum.Parse(typeof(RoleType), Upper1(temp[1])); IRole role; if (temp.Contains("Minion")) { role = new Minion(); if (EnumUtility.TryParseEnum <RoleType>(Upper1(tempArray[2]), true, out rt)) { (role as Minion).HasRole = true; (role as Minion).Type = rt; } } else { RoleFlag rf = RoleFlag.Standard; int index = 1; if (tempArray[1].ToLower() == "solo") { rf = RoleFlag.Solo; } if (tempArray[1].ToLower() == "elite") { rf = RoleFlag.Elite; } if (rf != RoleFlag.Standard) { index = 2; } //if (!EnumUtility.TryParse(,out rt)) //{ // throw new InvalidStructureException(" ") //} role = new ComplexRole((RoleType)Enum.Parse(typeof(RoleType), Upper1(tempArray[index]))); (role as ComplexRole).Leader = temp.Contains("Leader"); (role as ComplexRole).Flag = rf; } return(role); }
private static List <Creature> get_creatures(List <Creature> creatures, int level, bool is_minion, bool is_leader, RoleType role, RoleFlag flag) { List <Creature> creatures1 = new List <Creature>(); foreach (Creature creature in creatures) { if (creature.Level != level) { continue; } ComplexRole complexRole = creature.Role as ComplexRole; Minion minion = creature.Role as Minion; if (minion != null && !minion.HasRole || minion != null != is_minion) { continue; } if ((complexRole == null ? false : complexRole.Leader) != is_leader) { continue; } RoleType type = RoleType.Blaster; RoleFlag roleFlag = RoleFlag.Standard; if (complexRole != null) { type = complexRole.Type; roleFlag = complexRole.Flag; } if (minion != null) { type = minion.Type; roleFlag = RoleFlag.Standard; } if (type != role || roleFlag != flag) { continue; } creatures1.Add(creature); } return(creatures1); }
public EncounterTemplateSlot(int count, int level_adj, RoleFlag flag) { this.fCount = count; this.fLevelAdjustment = level_adj; this.fFlag = flag; }
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); }