From d793a538af073b741f5ea3174e1e63adcbd2f65e Mon Sep 17 00:00:00 2001 From: rolfero <45628623+rolfero@users.noreply.github.com> Date: Tue, 13 Sep 2022 15:19:04 +0200 Subject: [PATCH] appraisal verb (#11226) Co-authored-by: CommieFlowers --- .../Cargo/Systems/PriceGunSystem.cs | 26 +++++++++++++++++++ .../en-US/cargo/price-gun-component.ftl | 2 ++ 2 files changed, 28 insertions(+) diff --git a/Content.Server/Cargo/Systems/PriceGunSystem.cs b/Content.Server/Cargo/Systems/PriceGunSystem.cs index af4baa7b0a..6e3b5dd214 100644 --- a/Content.Server/Cargo/Systems/PriceGunSystem.cs +++ b/Content.Server/Cargo/Systems/PriceGunSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Popups; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Timing; +using Content.Shared.Verbs; using Robust.Shared.Player; namespace Content.Server.Cargo.Systems; @@ -20,8 +21,33 @@ public sealed class PriceGunSystem : EntitySystem public override void Initialize() { SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent>(OnUtilityVerb); } + private void OnUtilityVerb(EntityUid uid, PriceGunComponent component, GetVerbsEvent args) + { + + if (!args.CanAccess || !args.CanInteract || args.Target == null) + return; + + if (TryComp(args.Using, out UseDelayComponent? useDelay) && useDelay.ActiveDelay) + return; + + var price = _pricingSystem.GetPrice(args.Target); + + var verb = new UtilityVerb() + { + Act = () => + { + _popupSystem.PopupEntity(Loc.GetString("price-gun-pricing-result", ("object", Identity.Entity(args.Target, EntityManager)), ("price", $"{price:F2}")), args.User, Filter.Entities(args.User)); + _useDelay.BeginDelay(uid, useDelay); + }, + Text = Loc.GetString("price-gun-verb-text"), + Message = Loc.GetString("price-gun-verb-message", ("object", Identity.Entity(args.Target, EntityManager))) + }; + + args.Verbs.Add(verb); + } private void OnAfterInteract(EntityUid uid, PriceGunComponent component, AfterInteractEvent args) { if (!args.CanReach || args.Target == null) diff --git a/Resources/Locale/en-US/cargo/price-gun-component.ftl b/Resources/Locale/en-US/cargo/price-gun-component.ftl index f031748be5..797e681c3e 100644 --- a/Resources/Locale/en-US/cargo/price-gun-component.ftl +++ b/Resources/Locale/en-US/cargo/price-gun-component.ftl @@ -1 +1,3 @@ price-gun-pricing-result = The device deems {THE($object)} to be worth {$price} credits. +price-gun-verb-text = Appraisal +price-gun-verb-message = Appraise {THE($object)}.