Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilitySetMetadataInt.cs
T
2023-12-14 16:11:27 +02:00

39 lines
1.3 KiB
C#

#nullable enable
namespace Barotrauma.Abilities
{
internal sealed class CharacterAbilitySetMetadataInt : CharacterAbility
{
private readonly Identifier identifier;
private readonly int value;
public CharacterAbilitySetMetadataInt(CharacterAbilityGroup characterAbilityGroup, ContentXElement abilityElement) : base(characterAbilityGroup, abilityElement)
{
identifier = abilityElement.GetAttributeIdentifier("identifier", Identifier.Empty);
value = abilityElement.GetAttributeInt("value", 0);
if (identifier.IsEmpty)
{
DebugConsole.ThrowError($"Error in talent {CharacterTalent.DebugIdentifier}, {nameof(CharacterAbilitySetMetadataInt)} - identifier is empty.",
contentPackage: abilityElement.ContentPackage);
}
}
public override void InitializeAbility(bool addingFirstTime)
{
ApplyEffect();
}
protected override void ApplyEffect()
{
if (identifier == Identifier.Empty) { return; }
if (GameMain.GameSession?.Campaign?.CampaignMetadata is not { } metadata) { return; }
metadata.SetValue(identifier, value);
}
protected override void ApplyEffect(AbilityObject abilityObject)
{
ApplyEffect();
}
}
}