/// </summary>
[DataField(required: true)]
public float Reduction;
+
+ /// <summary>
+ /// LocId for message that will be shown on detailed examine.
+ /// Actually can be moved into system
+ /// </summary>
+ [DataField]
+ public LocId ExamineMessage = "fire-protection-reduction-value";
}
+using Content.Shared.Armor;
using Content.Shared.Atmos;
using Content.Shared.Clothing.Components;
using Content.Shared.Inventory;
base.Initialize();
SubscribeLocalEvent<FireProtectionComponent, InventoryRelayedEvent<GetFireProtectionEvent>>(OnGetProtection);
+ SubscribeLocalEvent<FireProtectionComponent, ArmorExamineEvent>(OnArmorExamine);
}
private void OnGetProtection(Entity<FireProtectionComponent> ent, ref InventoryRelayedEvent<GetFireProtectionEvent> args)
{
args.Args.Reduce(ent.Comp.Reduction);
}
+
+ private void OnArmorExamine(Entity<FireProtectionComponent> ent, ref ArmorExamineEvent args)
+ {
+ var value = MathF.Round((1f - ent.Comp.Reduction) * 100, 1);
+
+ if (value == 0)
+ return;
+
+ args.Msg.PushNewline();
+ args.Msg.AddMarkupOrThrow(Loc.GetString(ent.Comp.ExamineMessage, ("value", value)));
+ }
}