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; } } } }