35 lines
1.2 KiB
C#
35 lines
1.2 KiB
C#
#nullable enable
|
|
|
|
namespace Barotrauma.Abilities
|
|
{
|
|
internal sealed class CharacterAbilityGiveItemStat : CharacterAbility
|
|
{
|
|
private readonly ItemTalentStats stat;
|
|
private readonly float value;
|
|
private readonly bool stackable;
|
|
private readonly bool save;
|
|
|
|
public CharacterAbilityGiveItemStat(CharacterAbilityGroup characterAbilityGroup, ContentXElement abilityElement) : base(characterAbilityGroup, abilityElement)
|
|
{
|
|
stat = abilityElement.GetAttributeEnum("stattype", ItemTalentStats.None);
|
|
value = abilityElement.GetAttributeFloat("value", 0f);
|
|
stackable = abilityElement.GetAttributeBool("stackable", true);
|
|
save = abilityElement.GetAttributeBool("save", false);
|
|
}
|
|
|
|
protected override void VerifyState(bool conditionsMatched, float timeSinceLastUpdate)
|
|
{
|
|
if (conditionsMatched)
|
|
{
|
|
ApplyEffect();
|
|
}
|
|
}
|
|
|
|
protected override void ApplyEffect(AbilityObject abilityObject)
|
|
{
|
|
if (abilityObject is not IAbilityItem ability) { return; }
|
|
|
|
ability.Item.StatManager.ApplyStat(stat, stackable, save, value, CharacterTalent);
|
|
}
|
|
}
|
|
} |