Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAttackData.cs
T
2021-08-26 21:08:21 +09:00

45 lines
1.5 KiB
C#

using System.Collections.Generic;
using System.Xml.Linq;
namespace Barotrauma.Abilities
{
class CharacterAbilityModifyAttackData : CharacterAbility
{
private readonly List<Affliction> afflictions;
float addedDamageMultiplier;
float addedPenetration;
public CharacterAbilityModifyAttackData(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement)
{
if (abilityElement.GetChildElement("afflictions") is XElement afflictionElements)
{
afflictions = CharacterAbilityGroup.ParseAfflictions(CharacterTalent, afflictionElements);
}
addedDamageMultiplier = abilityElement.GetAttributeFloat("addeddamagemultiplier", 0f);
addedPenetration = abilityElement.GetAttributeFloat("addedpenetration", 0f);
}
protected override void ApplyEffect(object abilityData)
{
if (abilityData is AttackData attackData)
{
if (attackData.Afflictions == null)
{
attackData.Afflictions = afflictions;
}
else
{
attackData.Afflictions.AddRange(afflictions);
}
attackData.DamageMultiplier += addedDamageMultiplier;
attackData.AddedPenetration += addedPenetration;
}
else
{
LogAbilityDataMismatch();
}
}
}
}