using System.Collections.Generic; using System.Xml.Linq; namespace Barotrauma.Abilities { class CharacterAbilityTaskmaster : CharacterAbility { private readonly List statusEffects; private readonly List statusEffectsRemove; private Character lastCharacter; public CharacterAbilityTaskmaster(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) { statusEffects = CharacterAbilityGroup.ParseStatusEffects(CharacterTalent, abilityElement.GetChildElement("statuseffects")); statusEffectsRemove = CharacterAbilityGroup.ParseStatusEffects(CharacterTalent, abilityElement.GetChildElement("statuseffectsremove")); } protected override void ApplyEffect(object abilityData) { if (abilityData is Character targetCharacter) { if (targetCharacter == Character) { return; } foreach (var statusEffect in statusEffectsRemove) { statusEffect.Apply(ActionType.OnAbility, EffectDeltaTime, Character, lastCharacter); } foreach (var statusEffect in statusEffects) { statusEffect.Apply(ActionType.OnAbility, EffectDeltaTime, Character, targetCharacter); } lastCharacter = targetCharacter; } } } }