Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAffliction.cs
T
Markus Isberg edaf4b09fe Build 0.20.0.0
2022-10-27 17:54:57 +03:00

43 lines
1.8 KiB
C#

namespace Barotrauma.Abilities
{
class CharacterAbilityModifyAffliction : CharacterAbility
{
private readonly Identifier[] afflictionIdentifiers;
private readonly Identifier replaceWith;
private readonly float addedMultiplier;
public CharacterAbilityModifyAffliction(CharacterAbilityGroup characterAbilityGroup, ContentXElement abilityElement) : base(characterAbilityGroup, abilityElement)
{
afflictionIdentifiers = abilityElement.GetAttributeIdentifierArray("afflictionidentifiers", System.Array.Empty<Identifier>());
replaceWith = abilityElement.GetAttributeIdentifier("replacewith", Identifier.Empty);
addedMultiplier = abilityElement.GetAttributeFloat("addedmultiplier", 0f);
}
protected override void ApplyEffect(AbilityObject abilityObject)
{
var abilityAffliction = abilityObject as IAbilityAffliction;
if (abilityAffliction?.Affliction is Affliction affliction)
{
foreach (Identifier afflictionIdentifier in afflictionIdentifiers)
{
if (affliction.Identifier != afflictionIdentifier) { continue; }
affliction.Strength *= 1 + addedMultiplier;
if (!replaceWith.IsEmpty)
{
if (AfflictionPrefab.Prefabs.TryGet(replaceWith, out AfflictionPrefab afflictionPrefab))
{
abilityAffliction.Affliction = new Affliction(afflictionPrefab, abilityAffliction.Affliction.Strength);
}
}
}
}
else
{
LogAbilityObjectMismatch();
}
}
}
}