From 7e01649aaefc3d9efb7770f15751e66aa478e0d1 Mon Sep 17 00:00:00 2001 From: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Date: Fri, 4 Nov 2022 05:27:25 -0400 Subject: [PATCH] Fixes the universal scanner's sprites and adds contextual screentips. (#70926) ## About The Pull Request This PR fixes a minor icon_state name discrepancy when switching to the sales tagger mode (I forgot to add a space to the icon_state, which carried over to the radial). I then read #70909 which brings up several issues with the item, and after actually testing it, everything works as intended. The issue it appears is that it's not clear enough that the functionality is the same as it was previously on the prior items, so we've added contextual screentips to all 3 modes of the scanner. ![image](https://user-images.githubusercontent.com/41715314/198892524-65845906-736c-4859-87b2-304278b0c7a6.png) ## Why It's Good For The Game Fixes #70909. Improves player feedback on the three modes of the universal scanner through context. ## Changelog :cl: fix: The universal scanner now properly show all three options in the radial with sprites, due to a missing space. qol: The universal scanner now has contextual screentips within all three of its modes. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- code/modules/cargo/universal_scanner.dm | 20 +++++++++++++++++--- icons/obj/device.dmi | Bin 65325 -> 65325 bytes 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/code/modules/cargo/universal_scanner.dm b/code/modules/cargo/universal_scanner.dm index 5ca19a5f3e9..742aa2b6e44 100644 --- a/code/modules/cargo/universal_scanner.dm +++ b/code/modules/cargo/universal_scanner.dm @@ -38,10 +38,11 @@ "price tagger" = image(icon = src.icon, icon_state = "price tagger"), "sales tagger" = image(icon = src.icon, icon_state = "sales tagger"), )) + register_context() /obj/item/universal_scanner/attack_self(mob/user, modifiers) . = ..() - var/choice = show_radial_menu(user, src , scale_mode, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 36, require_near = TRUE) + var/choice = show_radial_menu(user, src, scale_mode, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 36, require_near = TRUE) if(!choice) return FALSE if(icon_state == "[choice]") @@ -117,7 +118,7 @@ if(!chosen_price || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) || loc != user) return new_custom_price = chosen_price - to_chat(user, span_notice("The [src] will now give things a [new_custom_price] cr tag.")) + to_chat(user, span_notice("[src] will now give things a [new_custom_price] cr tag.")) /obj/item/universal_scanner/CtrlClick(mob/user) . = ..() @@ -145,8 +146,21 @@ . += span_notice("Ctrl-click to clear the registered account.") if(scanning_mode == SCAN_PRICE_TAG) - . += span_notice("The current custom price is set to [new_custom_price] cr.") + . += span_notice("The current custom price is set to [new_custom_price] cr. Right-click to change.") +/obj/item/universal_scanner/add_context(atom/source, list/context, obj/item/held_item, mob/user) + switch(scanning_mode) + if(SCAN_SALES_TAG) + context[SCREENTIP_CONTEXT_LMB] = "Tag package" + context[SCREENTIP_CONTEXT_ALT_LMB] = "Change price" + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Clear target account" + context[SCREENTIP_CONTEXT_ALT_LMB] = "Change payout %" + if(SCAN_PRICE_TAG) + context[SCREENTIP_CONTEXT_LMB] = "Price item" + context[SCREENTIP_CONTEXT_RMB] = "Set price" + if(SCAN_EXPORTS) + context[SCREENTIP_CONTEXT_LMB] = "Scan for export value" + return CONTEXTUAL_SCREENTIP_SET /** * Scans an object, target, and provides it's export value based on selling to the cargo shuttle, to mob/user. */ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 95b73d18362c0a7320e04fdd58629ee12c4feaee..3394ca6768b1a9fab124901d1f1f3f971aa892c7 100644 GIT binary patch delta 1515 zcmVmeZ-4(-yh&FoYnHz+U%qS> zPiG~327m0fi>FMgH1pjbrRQG4ub;T#y8chPPm3p^TnS%2FP@H$=d%0#0m!TtQE;w| zGU84hm8_oMGD@UBS$iE8_r{UXO&B#s(glFqHQT>*a05sJi4imhNjYb zh8fq=`H$Gnm}6@=uj=ieUX#OBMs{khdUgl~t0V9wo13TB}ifTzTdP-~=1xbsel zG=4xFxQ7sbBE;?mc&MC-FQMlJfD`Kk5Rej>n!+r)U!a_rF2Zj76af0T7Z49VzVHr& zqs>`kNt!H6ovcBJ6W8Vnht+8+L!#L^Qv{uGg--K+(A5OwG~bluz5u6rCh|;xo#wx& zTtVH|4omj$)Zt(al?TOgK=m!%57y6ry(^>y*@fA(ZED(4FKm=Y25reg z`Ca!kVF8btVA00tG!w{5X(rmdZ#m5II1&6VM@`Ph_`tTx`^CKGFXoyh~(F>B54P-^gK-|1ng8I zsbE-j>-=&wzXG_h*8Q2mXb21+izhcl( z<{UZdUIRAUV69}3{3Vo3@~E&zO<2@Go)hcYQl%#6CoB@i&br=|p~*%wmnKCRkotJ{ z1{v@X7db|x<6ZTD5t{x(oDXz!zg2Lo>K=rWGAe|}J0O>d44*GoR|jjcvvGIl4Y{6w zQtMKy0;*0zyV=RItek{UCrGEOXM{q6Dxf`yyU*3ZKRnL~1o&RTFvuszyyNkv{8;9N z%H?(SV6>)eby*dKt_v#|HOC7^6oG&w%0EDk2tV|;r-H)}#8X8%dj74r@m0=FvWDX@ ze%RjO(L4xJdbfK23~>VYxkc_~X`}*wr+)&3EwS6^F)x|Y2kCrCzWf%ltWA@epb_@pPc+gV0>7jRmlAS5KI0Q3)o_O_! zZOI1RTI|LVoW{$Ly9>m^*U?JFgg zR82^ysKvw$nzi?0ghobl%n(ny?(ial-N7@jk`swmK$s8w3!0vw44PUAxGJ}l&h!P} zsvgRH4>uLpta}|Pu8zbT^#!M09vUyj&XS+nv|$f#wqS|gTp3%I|ZSYwp>iOoEm)KWGC+@eXG=vc(}>#uYr2Bpw|V1sQ1olji=)0<@cZ8+PCoj R2l+^*F-7ZBHnTbg^Z4JT`1b$+ delta 1515 zcmV=|40c8QPOhqnuUUjFg@uOB~`-~Rrwc$2PF)+~QtzI@p% zp3X}64F1_|7f+c~Y393sO3%H7KR=b1CUuQqTpN^ zWzr21_Z-EQg-pD&x%7mQhG13>!*}ql)VyxiX$7Cflaps<#NC{K#T%RS=uC3$Ga_tV zCfp#{?R9+5tD(<+@uaOShWy5tv%@i%-UR3ehkNx{3uov02}Y)E!o3alqb z3^T5!^B=LDF~`X)NE!R}f$CejAFQ8$dsj#avJ10m+tjq9Uf3v)4BC=~ z^1JS7!U7&O!J>`PX(o`B(oD2@-*TE!0$(`}%Z0Gm!0~fmmde~ZMd=ImNE*raa3mzg z2sY&=ZI0MAjh}iriEw%}g+h9;1qLUam_44zB0ath6*`w08Was051%m0_Sy{x&yfU zRcK4mXt_*zk%0iDBiE%&CZIuBrdY#o5O4DwbP>6eWUwAZ5XrA$MbZvv>3Nz`2-vAa zQo*q5*7@aVeg$x0t@|^B(GVC!s@W$GhqQBQ*VoI3MWdeyiYE)jbF$WmE`{cR(%^89raGt`62>XXEb98*)8= zrPifZ1yr4ccC(XZSvd)zPLNJl&j^JCRX}?Zcb}_+e|Vk~2=KjvVUSObdB@{T`LWCk zmCNhu!Dvm{>ar>dT^Cj`YK|9-C;|aVlz)I65q{`xPX&h|h^LBj^!!_Klqj?ad^ltV38R7))bBo-~(ntk=PX7c5TVl7-V_q_)57POPeEBV8S(_wt)-=+En@t~!0(?jnBB|B4eaR_FAJn`xc z+ma2swb+d#IE|MfcNd6-v%hH99NiTKNU>S>Wu3Lg<*rJm7GYd0=j(QC+K;CFlb68psL(b8q*hi zD|#r`J=|1Wv+ixAxHuAT)c2cRdT6{7J4=3QvxYsq*n;JGbECh;UppbEH?O<}ZJ0{J z#s=64uM~t<+Hx`BZffv>lbyUD^sP`s;^8K_zXsybf?O92qTV~JHJ*x}m*0PWYhS|q R9|`NG5fO$;6tg-8^Z1ZX;;8@t