Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveMoney.cs
T
Joonas Rikkonen 234fb6bc06 Release v0.15.12.0
2021-10-27 18:50:57 +03:00

47 lines
1.5 KiB
C#

using System.Xml.Linq;
namespace Barotrauma.Abilities
{
class CharacterAbilityGiveMoney : CharacterAbility
{
public override bool AppliesEffectOnIntervalUpdate => true;
private readonly int amount;
private readonly string scalingStatIdentifier;
public CharacterAbilityGiveMoney(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement)
{
amount = abilityElement.GetAttributeInt("amount", 0);
scalingStatIdentifier = abilityElement.GetAttributeString("scalingstatidentifier", string.Empty);
}
private void ApplyEffectSpecific(Character targetCharacter)
{
float multiplier = 1f;
if (!string.IsNullOrEmpty(scalingStatIdentifier))
{
multiplier = 0 + Character.Info.GetSavedStatValue(StatTypes.None, scalingStatIdentifier);
}
targetCharacter.GiveMoney((int)(multiplier * amount));
}
protected override void ApplyEffect(AbilityObject abilityObject)
{
if ((abilityObject as IAbilityCharacter)?.Character is Character targetCharacter)
{
ApplyEffectSpecific(targetCharacter);
}
else
{
ApplyEffectSpecific(Character);
}
}
protected override void ApplyEffect()
{
ApplyEffectSpecific(Character);
}
}
}