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);
 }
Exemplo n.º 2
0
 /// <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);
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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;
 }
Exemplo n.º 7
0
        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);
        }