Files

35 lines
1.1 KiB
C#
Raw Permalink Normal View History

using Content.Server.Cargo.Systems;
2023-09-28 06:48:50 -04:00
using Content.Shared.Armor;
using Robust.Shared.Prototypes;
using Content.Shared.Damage.Prototypes;
2023-09-28 06:48:50 -04:00
namespace Content.Server.Armor;
2023-09-28 06:48:50 -04:00
/// <inheritdoc/>
public sealed class ArmorSystem : SharedArmorSystem
{
[Dependency] private readonly IPrototypeManager _protoManager = default!;
2023-09-28 06:48:50 -04:00
public override void Initialize()
{
base.Initialize();
2023-09-28 06:48:50 -04:00
SubscribeLocalEvent<ArmorComponent, PriceCalculationEvent>(GetArmorPrice);
}
2023-09-28 06:48:50 -04:00
private void GetArmorPrice(EntityUid uid, ArmorComponent component, ref PriceCalculationEvent args)
{
foreach (var modifier in component.Modifiers.Coefficients)
{
2023-09-28 06:48:50 -04:00
var damageType = _protoManager.Index<DamageTypePrototype>(modifier.Key);
args.Price += component.PriceMultiplier * damageType.ArmorPriceCoefficient * 100 * (1 - modifier.Value);
}
2023-09-28 06:48:50 -04:00
foreach (var modifier in component.Modifiers.FlatReduction)
{
2023-09-28 06:48:50 -04:00
var damageType = _protoManager.Index<DamageTypePrototype>(modifier.Key);
args.Price += component.PriceMultiplier * damageType.ArmorPriceFlat * modifier.Value;
}
}
}