From 727c37fa82749a9885c09bb42a8d418ccef785cf Mon Sep 17 00:00:00 2001 From: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com> Date: Thu, 3 Jul 2025 12:52:20 +0200 Subject: [PATCH] Wallet and Lanyard Fixes (#20929) this PR fixes wallets and lanyards having a stray mob overlay and cleans up the code a bit. tested and made sure that ID cards still appear when worn by themselves and that lanyards still appear with or without an ID card inside. fixes #18678. fixes #20926. --- .../objects/items/weapons/storage/wallets.dm | 66 ++++++------------ .../mob/living/carbon/human/update_icons.dm | 6 +- .../SleepyGemmy-wallet_mob_sprite.yml | 7 ++ icons/mob/card.dmi | Bin 5005 -> 4620 bytes 4 files changed, 32 insertions(+), 47 deletions(-) create mode 100644 html/changelogs/SleepyGemmy-wallet_mob_sprite.yml diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index ceec2c0a704..4797f45b007 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -46,9 +46,6 @@ build_from_parts = TRUE var/obj/item/card/id/front_id = null - var/flipped = null - var/flippable = 1 - var/wear_over_suit = 0 /obj/item/storage/wallet/Initialize() . = ..() @@ -96,7 +93,6 @@ else icon_state = "[initial(icon_state)]" . = ..() - mob_icon_update() /obj/item/storage/wallet/GetID() return front_id @@ -127,42 +123,6 @@ if(istype(id) && is_adjacent) id.show(user) -/obj/item/storage/wallet/proc/mob_icon_update() - if (ismob(src.loc)) - var/mob/M = src.loc - M.update_inv_wear_id() - -/obj/item/storage/wallet/verb/flip_side() - set name = "Flip wallet side" - set category = "Object" - set src in usr - if(use_check_and_message(usr, use_flags = USE_DISALLOW_SILICONS)) - return - if (!flippable) - to_chat(usr, "You cannot flip \the [src] as it is not a flippable item.") - return - - src.flipped = !src.flipped - if(src.flipped) - src.overlay_state = "[overlay_state]_flip" - else - src.overlay_state = initial(overlay_state) - to_chat(usr, "You change \the [src] to be on your [src.flipped ? "left" : "right"] side.") - mob_icon_update() - -/obj/item/storage/wallet/verb/toggle_icon_layer() - set name = "Switch Wallet Layer" - set category = "Object" - set src in usr - - if(use_check_and_message(usr, use_flags = USE_DISALLOW_SILICONS)) - return - if(wear_over_suit == -1) - to_chat(usr, SPAN_NOTICE("\The [src] cannot be worn above your suit!")) - return - wear_over_suit = !wear_over_suit - mob_icon_update() - /obj/item/storage/wallet/colourable icon_state = "wallet" @@ -190,14 +150,13 @@ /obj/item/paper_bundle, /obj/item/pen, /obj/item/photo) - flippable = 0 //until a cleaner way is implemented to just simply have the verb not show up at all - var/plastic_film_overlay_state = "plasticfilm" - var/front_id_overlay_state - drop_sound = 'sound/items/drop/cloth.ogg' pickup_sound = 'sound/items/pickup/cloth.ogg' + var/front_id_overlay_state var/image/plastic_film + var/plastic_film_overlay_state = "plasticfilm" + var/wear_over_suit = 0 /obj/item/storage/wallet/lanyard/update_icon() if(front_id) @@ -206,6 +165,7 @@ if(("[initial(icon_state)]-film") in icon_states(icon)) var/image/film_image = overlay_image(icon, "[initial(icon_state)]-film", flags = RESET_COLOR) AddOverlays(film_image) + mob_icon_update() /obj/item/storage/wallet/lanyard/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot) var/image/I = ..() @@ -217,6 +177,24 @@ I.AddOverlays(plastic_film) return I +/obj/item/storage/wallet/lanyard/proc/mob_icon_update() + if(ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_wear_id() + +/obj/item/storage/wallet/lanyard/verb/toggle_icon_layer() + set name = "Switch Lanyard Layer" + set category = "Object" + set src in usr + + if(use_check_and_message(usr, use_flags = USE_DISALLOW_SILICONS)) + return + if(wear_over_suit == -1) + to_chat(usr, SPAN_NOTICE("\The [src] cannot be worn above your suit!")) + return + wear_over_suit = !wear_over_suit + mob_icon_update() + // wallet subtypes /obj/item/storage/wallet/random/fill() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 82d6e9794d8..e328c6ea64f 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -680,9 +680,9 @@ There are several things that need to be remembered: //Layering under/over suit var/id_layer = ID_LAYER - if(istype(wear_id, /obj/item/storage/wallet)) - var/obj/item/storage/wallet/wallet = wear_id - if(wallet.wear_over_suit) + if(istype(wear_id, /obj/item/storage/wallet/lanyard)) + var/obj/item/storage/wallet/lanyard/lanyard = wear_id + if(lanyard.wear_over_suit) id_layer = ID_LAYER_ALT else if(istype(wear_id, /obj/item/card/id)) var/obj/item/card/id/id_card = wear_id diff --git a/html/changelogs/SleepyGemmy-wallet_mob_sprite.yml b/html/changelogs/SleepyGemmy-wallet_mob_sprite.yml new file mode 100644 index 00000000000..f602846dc83 --- /dev/null +++ b/html/changelogs/SleepyGemmy-wallet_mob_sprite.yml @@ -0,0 +1,7 @@ +author: SleepyGemmy + +delete-after: True + +changes: + - bugfix: "Fixed wallets having a mob overlay." + - bugfix: "Fixed lanyards having a duplicate overlay." diff --git a/icons/mob/card.dmi b/icons/mob/card.dmi index 4aa655b65a3459cc18a33e382fee250f0f6d35ad..f6d458cdf2b25d193406712d1644c3215b6a6283 100644 GIT binary patch literal 4620 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 V#fwO2zy|<_ACK%S+w1xBzW@$wzR3Up literal 5005 zcmd5=d03M98vUuIm8DKIHzzl2nJKU3GH#_JHI}Aji#5@die-hOX=<*h;I*_(X)(<$ zGSh5K(F#owXj9u1M=iw-(*ze56$KH2`!Ushy8qm{%`;CkfAD+df;{fBfCe%j14dv=Lv@$^I^@l{j0lO3uH zUK-U^!_ld8!1zm?N=i!ZKi}yLJ6H3=nmjkL^R|Cl+E{0`{bah#)A?nMy?R9dmPL&k z4<(16Mr`IEzaM7iS-OCwb8`6RT%B$Is1q4%Sh(9Kb!GkPZ9{u-NygjSV-E09oV6Vr z8_fc6Kd!fE&}=xN({8HiDAI&42dmXx9Zlw`vT`HFG)jN0o>4K(PrKvV0kd9$ud937 zUk=QzmpmL}`cAAmbB1xt3%NJq_1&NBF#fdI9L6;kYUB3?z7k8_JGC08%NmU>SNJT< zTI=(*UhvW7N6IwHuW78iac$OE*Iku8gG(CRUTb)(dA7 zjEheSsWH7)Xt|jy&&Fdnz^@S$#{+O33voepJ^=Gp0$_Xr0Q`pkd7wE>t1# zOD<4)9~y0@ix!6D?zQ;iuf+kbmUpR<(;3z0N z2e)PBV{L2^5MN|$T_Z2~5L34&oT-mpXb7Zyry4JJ6QnsxPi`G_K#8HmoF(91^lSX^ zT{vFZfee&WB)4ozm)73n+|coNKxYkL3#5A-erZ31#RMhHOa_Q+Pr+?Flzm1q+H)r1 z5P4FTFz&NvA1A$p!KMA12$pWPcJzTX2m7wLBMCHFS4iAI!#$~(!Z}3nh#c}sZA3(} zcS>7RhzBAW`l821E9T=#JrOS_UN)rlkmZlXF5_WAPuT3;uxiphbi&IZ|*6B}$ked6Q&CqaOjj zw|716=I}_?z^e~jAiZK#ABz@B5s|{i!PFg&ubIO7p1%iyjH3GzBlnQ%L~R}2a1`T1i-_?_XP)K`c()T& z@UhxZk9Xd8J-)0tUoVHk8D;t<8P*^Jg@MT4)tMw&jTdFYC6i!?y{xwh;!Hy@t-5yn z%q^F3&!F9@jXlCCZp9<5o)WTzLx>|sHC&|gH>N$Xk)Ja1AxC@1knLLPF$XM4-TX`hm1wy6n}9$!=dEjLdjE zmaK*Ur1SdKO;2pw&X<Wkia_;r|Ji;IZ=RpYlphfc=H1TXAue0iC5Q8-;?)WgjFl5uI40I^viX% znkG5ht@(MI1kwsKcivlpjgFDv6O&_P+zu#68uQhU9!R*FWx>0dT zOA2t>HkysR}IH&}PIQ#3d z!tVVqs!LXNV(4%#sRmQxZgCvixiOCoDmnRT~#ox*(5fYM^HV8{Bbk>-BqZ zu6x;>h7q|gVYV0%K8EJgSA@4}r@fXj^8DlEQU2rA=4o6x)}!_O2zlt)+b1bqg@uJa zyzreVQU+UoFLgpb7xHZrf6;2b$Pg%T`N)}qbvgq)4K%WIf-k<0SVw7jb-AjU(kyDNHi>Z)GqsFR!cDA?fi^M2WdMi~bJ zrjJ&2^&K1bkeRtO69lA za>YVg-AciGGb=hdH8mB9!Tf@h8gS!#1DV~3f_?|EqF>`uSv2WLxZ?cT-wh;x+VFfD zdzzb7%5AZ}%8$j_C*^P(JJbg%@Ey~oXj4JT^EZLnM~ij$p->@PO^!e<*eRz36HJ5N z9KWlIh#nVpaypKUj*jvuh>44^*@-R|pQ2#7Ls~Nt(@fn(Yfsh! zz5_|k8op-Y9Y`06kI)c&s{)flh0|WTymUedH{_1d!)+|m@bB;rw zVwFtInh`1b=wTZVs}?nt@~UI<7QsxW;sJAZZugXWL2Ma91>jka*yep^&i?5Py%`4( zcuzyUs{2IPdmPm)dzBWtG(I`>5EPs|!=n_#ir5@1R}}6-l{BkZM7)htAQWT77j376 zvRwwJtB|IZe8tOUgyeu*Ln1QWBfM^csZ zxW6Kz3ud?<3XUb2=C7k?J1U?su{5OzA!ah<3FH()z91J)8MU+>K~F1l)C67ai)P6G ztn-E%52Ko{9g7+;zWm~Y*MZ?gH?h6Tj}g$@;hi)ARS-a2Kjq)X68n$~K(s>2V#!}; z(!Ka}MM5TuTk#xnF%^>hIxF5t-l`0`{M}`K^|KFN0a;^hYcdT!%VWUar~{Q;VYgmG!S0Wl>(^G zML$Y5g5;G}_3lp)&{@c)QX6WI!<)mu8CVAUVR_^?06gsNqeG(pM+13HzDT7wFd=~^ z`U(_3Bz`{Q{f9s_yRCpH?Uh~=W$h+ZLb49ZrI0_$^oggg$&+u38GhaF8fsLzF-XPY zPQF5bM~DkalkO&iNiZY1MG&Dw)ps9F%_7mZKocY&KNW;Opfb%0)#j(;gz;ckFX(SJ O;I?`Drm`P>|MhR~TvBcT