1
0

ArmorSystem.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using Content.Server.Cargo.Systems;
  2. using Content.Shared.Armor;
  3. using Robust.Shared.Prototypes;
  4. using Content.Shared.Damage.Prototypes;
  5. namespace Content.Server.Armor;
  6. /// <inheritdoc/>
  7. public sealed class ArmorSystem : SharedArmorSystem
  8. {
  9. [Dependency] private readonly IPrototypeManager _protoManager = default!;
  10. public override void Initialize()
  11. {
  12. base.Initialize();
  13. SubscribeLocalEvent<ArmorComponent, PriceCalculationEvent>(GetArmorPrice);
  14. }
  15. private void GetArmorPrice(EntityUid uid, ArmorComponent component, ref PriceCalculationEvent args)
  16. {
  17. foreach (var modifier in component.Modifiers.Coefficients)
  18. {
  19. var damageType = _protoManager.Index<DamageTypePrototype>(modifier.Key);
  20. args.Price += component.PriceMultiplier * damageType.ArmorPriceCoefficient * 100 * (1 - modifier.Value);
  21. }
  22. foreach (var modifier in component.Modifiers.FlatReduction)
  23. {
  24. var damageType = _protoManager.Index<DamageTypePrototype>(modifier.Key);
  25. args.Price += component.PriceMultiplier * damageType.ArmorPriceFlat * modifier.Value;
  26. }
  27. }
  28. }