private void OnEvent(MPPerkCondition.PerkEventFlags flags)
 {
     if ((flags & this._perkEventFlags) == MPPerkCondition.PerkEventFlags.None)
     {
         return;
     }
     foreach (MPConditionalEffect conditionalEffect in (List <MPConditionalEffect>) this._conditionalEffects)
     {
         if ((flags & conditionalEffect.EventFlags) != MPPerkCondition.PerkEventFlags.None)
         {
             conditionalEffect.OnEvent(this._peer, this._conditionalEffects);
         }
     }
 }
 public MPPerkObject(
     MissionPeer peer,
     string name,
     string description,
     List <string> gameModes,
     int perkListIndex,
     string iconId,
     IEnumerable <MPConditionalEffect> conditionalEffects,
     IEnumerable <MPPerkEffectBase> effects,
     string heroIdleAnimOverride,
     string heroMountIdleAnimOverride,
     string troopIdleAnimOverride,
     string troopMountIdleAnimOverride)
 {
     this._peer                      = peer;
     this._name                      = name;
     this._description               = description;
     this.GameModes                  = gameModes;
     this.PerkListIndex              = perkListIndex;
     this.IconId                     = iconId;
     this._conditionalEffects        = new MPConditionalEffect.ConditionalEffectContainer(conditionalEffects);
     this._effects                   = new List <MPPerkEffectBase>(effects);
     this.HeroIdleAnimOverride       = heroIdleAnimOverride;
     this.HeroMountIdleAnimOverride  = heroMountIdleAnimOverride;
     this.TroopIdleAnimOverride      = troopIdleAnimOverride;
     this.TroopMountIdleAnimOverride = troopMountIdleAnimOverride;
     this._perkEventFlags            = MPPerkCondition.PerkEventFlags.None;
     foreach (MPConditionalEffect conditionalEffect in (List <MPConditionalEffect>) this._conditionalEffects)
     {
         foreach (MPPerkCondition condition in (IEnumerable <MPPerkCondition>)conditionalEffect.Conditions)
         {
             this._perkEventFlags |= condition.EventFlags;
         }
     }
     foreach (MPConditionalEffect conditionalEffect in (List <MPConditionalEffect>) this._conditionalEffects)
     {
         foreach (MPPerkCondition condition in (IEnumerable <MPPerkCondition>)conditionalEffect.Conditions)
         {
             if (condition is BannerBearerCondition)
             {
                 this.HasBannerBearer = true;
             }
         }
     }
 }
 private void OnEvent(Agent agent, MPPerkCondition.PerkEventFlags flags)
 {
     if (agent?.MissionPeer == null && agent != null)
     {
         MissionPeer agentMissionPeer = agent.OwningAgentMissionPeer;
     }
     if ((flags & this._perkEventFlags) == MPPerkCondition.PerkEventFlags.None)
     {
         return;
     }
     foreach (MPConditionalEffect conditionalEffect in (List <MPConditionalEffect>) this._conditionalEffects)
     {
         if ((flags & conditionalEffect.EventFlags) != MPPerkCondition.PerkEventFlags.None)
         {
             conditionalEffect.OnEvent(agent, this._conditionalEffects);
         }
     }
 }
        private MPPerkObject(XmlNode node)
        {
            this._peer = (MissionPeer)null;
            this._conditionalEffects = new MPConditionalEffect.ConditionalEffectContainer();
            this._effects            = new List <MPPerkEffectBase>();
            this._name        = node.Attributes["name"].Value;
            this._description = node.Attributes["description"].Value;
            this.GameModes    = new List <string>((IEnumerable <string>)node.Attributes["game_mode"].Value.Split(','));
            for (int index = 0; index < this.GameModes.Count; ++index)
            {
                this.GameModes[index] = this.GameModes[index].Trim();
            }
            this.IconId        = node.Attributes["icon"].Value;
            this.PerkListIndex = 0;
            XmlNode attribute = (XmlNode)node.Attributes["perk_list"];

            if (attribute != null)
            {
                this.PerkListIndex = Convert.ToInt32(attribute.Value);
                this.PerkListIndex = this.PerkListIndex - 1;
            }
            foreach (XmlNode childNode in node.ChildNodes)
            {
                if (childNode.NodeType != XmlNodeType.Comment && childNode.NodeType != XmlNodeType.SignificantWhitespace)
                {
                    if (childNode.Name == "ConditionalEffect")
                    {
                        this._conditionalEffects.Add(new MPConditionalEffect(this.GameModes, childNode));
                    }
                    else if (childNode.Name == "Effect")
                    {
                        this._effects.Add((MPPerkEffectBase)MPPerkEffect.CreateFrom(childNode));
                    }
                    else if (childNode.Name == "OnSpawnEffect")
                    {
                        this._effects.Add((MPPerkEffectBase)MPOnSpawnPerkEffect.CreateFrom(childNode));
                    }
                    else if (childNode.Name == "RandomOnSpawnEffect")
                    {
                        this._effects.Add((MPPerkEffectBase)MPRandomOnSpawnPerkEffect.CreateFrom(childNode));
                    }
                }
            }
            this.HeroIdleAnimOverride       = node.Attributes["hero_idle_anim"]?.Value;
            this.HeroMountIdleAnimOverride  = node.Attributes["hero_mount_idle_anim"]?.Value;
            this.TroopIdleAnimOverride      = node.Attributes["troop_idle_anim"]?.Value;
            this.TroopMountIdleAnimOverride = node.Attributes["troop_mount_idle_anim"]?.Value;
            this._perkEventFlags            = MPPerkCondition.PerkEventFlags.None;
            foreach (MPConditionalEffect conditionalEffect in (List <MPConditionalEffect>) this._conditionalEffects)
            {
                foreach (MPPerkCondition condition in (IEnumerable <MPPerkCondition>)conditionalEffect.Conditions)
                {
                    this._perkEventFlags |= condition.EventFlags;
                }
            }
            foreach (MPConditionalEffect conditionalEffect in (List <MPConditionalEffect>) this._conditionalEffects)
            {
                foreach (MPPerkCondition condition in (IEnumerable <MPPerkCondition>)conditionalEffect.Conditions)
                {
                    if (condition is BannerBearerCondition)
                    {
                        this.HasBannerBearer = true;
                    }
                }
            }
        }