From a21983d5aac19eda4c8773b799aa6b8684a13653 Mon Sep 17 00:00:00 2001 From: Unkn0wn_Gh0st Date: Thu, 18 Dec 2025 14:37:31 -0600 Subject: [PATCH] Syndicate Wall Lockers and Secure Storage (#33251) Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../Prototypes/Catalog/Fills/Lockers/misc.yml | 25 +++++++++- .../Storage/Closets/Lockers/lockers.yml | 7 ++- .../Structures/Storage/Closets/closets.yml | 6 +-- .../Storage/Closets/wall_lockers.yml | 15 ++++++ .../Structures/Storage/Crates/crates.yml | 15 +++++- .../Crates/syndicate_secure.rsi/base.png | Bin 0 -> 403 bytes .../Crates/syndicate_secure.rsi/closed.png | Bin 0 -> 599 bytes .../Crates/syndicate_secure.rsi/icon.png | Bin 0 -> 457 bytes .../Crates/syndicate_secure.rsi/locked.png | Bin 0 -> 147 bytes .../Crates/syndicate_secure.rsi/meta.json | 45 ++++++++++++++++++ .../Crates/syndicate_secure.rsi/open.png | Bin 0 -> 630 bytes .../Crates/syndicate_secure.rsi/sparking.png | Bin 0 -> 206 bytes .../Crates/syndicate_secure.rsi/unlocked.png | Bin 0 -> 142 bytes .../Crates/syndicate_secure.rsi/welded.png | Bin 0 -> 294 bytes .../Storage/closet.rsi/syndicate_door.png | Bin 210 -> 425 bytes .../Storage/closet.rsi/syndicate_open.png | Bin 207 -> 333 bytes .../Storage/wall_locker.rsi/meta.json | 8 +++- .../wall_locker.rsi/syndicate_closed.png | Bin 0 -> 417 bytes .../wall_locker.rsi/syndicate_open.png | Bin 0 -> 375 bytes 19 files changed, 113 insertions(+), 8 deletions(-) create mode 100644 Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/base.png create mode 100644 Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/closed.png create mode 100644 Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/icon.png create mode 100644 Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/locked.png create mode 100644 Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/meta.json create mode 100644 Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/open.png create mode 100644 Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/sparking.png create mode 100644 Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/unlocked.png create mode 100644 Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/welded.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/syndicate_closed.png create mode 100644 Resources/Textures/Structures/Storage/wall_locker.rsi/syndicate_open.png diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml index 18c0d00712..95b0dab390 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml @@ -1,8 +1,31 @@ - type: entity id: LockerSyndicatePersonalFilled - suffix: Filled + suffix: Nukie, Filled parent: LockerSyndicatePersonal + description: It's a personal storage unit for operative gear. + components: + - type: AccessReader + access: [["NuclearOperative"]] + - type: EntityTableContainerFill + containers: + entity_storage: !type:AllSelector + children: + - id: ClothingBeltMilitaryWebbing + - id: ClothingHandsGlovesCombat + - id: JetpackBlackFilled + - id: ClothingUniformJumpsuitOperative + - id: ClothingUniformJumpskirtOperative + - id: ClothingHeadsetAltSyndicate + - id: ClothingEyesHudSyndicate + +- type: entity + id: LockerSyndicateWallFilled + suffix: Nukie, Filled + parent: LockerWallSyndicate + description: It's a personal storage unit for operative gear. components: + - type: AccessReader + access: [["NuclearOperative"]] - type: EntityTableContainerFill containers: entity_storage: !type:AllSelector diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml index 0fd9f1fab5..8f22f8d68c 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml @@ -533,15 +533,18 @@ # Syndicate - type: entity id: LockerSyndicatePersonal - name: armory closet + name: blood-red locker parent: LockerBaseSecure - description: It's a personal storage unit for operative gear. + description: It's a personal storage unit with a blood-red design. + suffix: "Locked" components: - type: Appearance - type: EntityStorageVisuals stateBaseClosed: syndicate stateDoorOpen: syndicate_open stateDoorClosed: syndicate_door + - type: AccessReader + access: [["SyndicateAgent"]] # Bluespace - type: entity diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/closets.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/closets.yml index e00a8627e1..052ff93e53 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/closets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/closets.yml @@ -1,4 +1,4 @@ -# Tool closet +# Tool closet - type: entity id: ClosetTool name: tool closet @@ -164,9 +164,9 @@ # Syndicate - type: entity id: LockerSyndicate - name: armory closet + name: blood-red closet parent: ClosetSteelBase - description: It's a storage unit. + description: It's a storage unit with a blood-red design. components: - type: Appearance - type: EntityStorageVisuals diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml index 7943e74e94..1e90d332d1 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/wall_lockers.yml @@ -237,3 +237,18 @@ components: - type: EntityStorageVisuals stateDoorClosed: genpop_door_8 + +- type: entity + id: LockerWallSyndicate + parent: BaseWallLocker + name: blood-red wall locker + description: It's a wall storage unit with a blood-red design. + suffix: "Locked" + components: + - type: Appearance + - type: EntityStorageVisuals + stateBaseClosed: generic + stateDoorOpen: syndicate_open + stateDoorClosed: syndicate_closed + - type: AccessReader + access: [["SyndicateAgent"]] diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml index 55a0c72e7c..c622ad8961 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml @@ -332,6 +332,19 @@ - type: AccessReader access: [["Command"]] +- type: entity + parent: CrateBaseSecure + id: CrateSyndicateSecure + name: secure syndicate crate + description: A dark steel crate with red bands and a letter S embossed on the front. + components: + - type: Icon + sprite: Structures/Storage/Crates/syndicate_secure.rsi + - type: Sprite + sprite: Structures/Storage/Crates/syndicate_secure.rsi + - type: AccessReader + access: [["SyndicateAgent", "NuclearOperative"]] + - type: entity parent: CrateGeneric id: CrateLivestock @@ -822,7 +835,7 @@ - type: entity parent: CrateGenericSteel id: CrateSyndicate - name: Syndicate crate + name: syndicate crate description: A dark steel crate with red bands and a letter S embossed on the front. components: - type: Icon diff --git a/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/base.png b/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..393e370d51e9996088798c3570b930ebfaaf84c0 GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^TEDn4#?y*WRVR3VY5Fc6?#Ko`IS6$=2zps|LT278hfjuKD>(Wu)>+9pw54>zp z_n&v+ilC8^5l@9|!TWo*v#cCEJu|N`{%~dxv48XCjY((QeEWK%1|h3^CJd97s2+ID zpsA_JR##WI;jiX;`Ncbu`&Q`8;4fOx(7?bfE-v2nXM6sA3A>sf4Br&({>t0erBr-- zBl#_-Bd6fb?sN??9id50pB>p6t|&22c&fmEfI;uCL3@%edq*k5iAj&*=Lg7KIDL%$ zd2vxuQt#3C_xCr~@bPJO$u_)kesY2FCQnhr(xs}0KR!M#na5t-EW3EuH*MxnSq3AK zXB>fYa%^7&7(^`=IO%@=>AZn?nfIyS>x@4xakvIDbldztpC9n3Pu`vQ1p$3I~I;(j!Iw4PI)%P-gIS^>bP0l+XkK8JnBP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/closed.png b/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..625914054bea61f33e94308f248f198fc76ce005 GIT binary patch literal 599 zcmV-d0;v6oP)EX>4Tx04R}tkv&MmKpe$iQ>7vmhjtJZ$xxlFh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MF2wxVGIKjGxbDzAp_6xbq^n3@1i`*``n+SN6DKE@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_HRyuGk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2z)@A#AClF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKsO$X@Af+@k<(#3a001*X z@1xGW2lz~>9!W){T{Qcs>p7R^B^ZDK+7zg2`?-B><)hAPJ{c{5nW2<2G@2P!KI&$_ l{Rw`q;(y_rkPt%1c5byvXPkc43IG5A002ovPDHLkV1mkf5k&w1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/icon.png b/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c6c6bffa7ebd4b05d5495fc81212ae578130d012 GIT binary patch literal 457 zcmV;)0XF`LP)Px$gGod|R9Hvtmc2^EKoH008X@sCLA=5R5fUs?r^-`U*jw3H`yAFbR`wP?MXIY) zNCG0Pg(8XK25e4dWsY6l9Ng|sfiVNa$$;hV+Mwo0mj%Oj$>^K%Cf}ymuErzcM@mwnSTa;q8vRL5s;Tm!h> z`&r3UL+TAW!{BNOyX*^p$e!XjeS6jQwchB>T)oj~VP7}g91E_zfW(Ol9K$c~Y z=Q%u_ZcCWsyHD6C06Haz*>noOGY~})R8<8R&yNz|`rv4@0IPb$sRUHKlaE)ej`utJ zYfb4Y`_3L%D}v+4f11$IpSAgLZpGHW;Ar>_jZ&sCNT*#U00000NkvXXu0mjfl4Hiy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/locked.png b/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/locked.png new file mode 100644 index 0000000000000000000000000000000000000000..aceacfce597de2a7dd34974d00c7324fdb3a34f5 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}zMd|QArY-_ zFD~S5a1d#J*mS&nYVt3wh^K#|8Jd+i&O8JP)EX>4Tx04R}tkv&MmKpe$iQ>7vmhjtJZ$xxlFh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi`@MF2wxVGIKjGxbDzAp_6xbq^n3@1i`*``n+SN6DKE@QK8;OgAjzb>itw zOXs{#9A+g+AwDM_HRyuGk6f2se&bwpSm2pqBa@mV4ik&THkR9%l?;`5ia4UE8s!UF zmle)ioYiubHSft^7|d(SX|B^8L>!AqAPEsNs@Omo7NWFjq?kz2e$2z)@A#AClF79J zMvi$@ph9x|;D7MDTeC1Z;U)!RKbz!Y7y@Hg|@+lw9_W34&h{bzf6@?J0 z{XQSf)|`l10q0y#_Hts3o51rJ5)m--l*U?XK*Z{-5nyIeN=*@9=0@N#rPCjXfC$_! zP<=xp0;LofW2Q9AIRg>>R{Wlf1rfWm{Hi;?KEZKl3`(57Ll6W(5CmZ=FZ}OAIQ&tI QVE_OC07*qoM6N<$g6k<6H2?qr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/sparking.png b/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/sparking.png new file mode 100644 index 0000000000000000000000000000000000000000..87b78b9b4653d54a703643d161f7f8bf353995df GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^2|(QXSZ^$5X5FCBsLJs@fG2hgpXAxzo?UdK185n8r>mdKI;Vst0DN#gB>(^b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/unlocked.png b/Resources/Textures/Structures/Storage/Crates/syndicate_secure.rsi/unlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..94b89fa655da949cd72a05f4ca4438bb89764b66 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}9-c0aArY-_ zFCOG%P!w>!nBl!LLFdle1Jma0)vpjq{rP@YBa0goP~nI2d3^rIwe)wN4!xr4xzg-a n#Xj@W=MCBxvgf{XH$0BhzQQx>vT)Q^pi%};S3j3^P60oneEP)Px#;7LS5R9J=W&@pPmFcik|zaXFl(jeJ6O@`tl=oZdmyk;mg&>^$8rgN@rKUr+ydP+h^u7-Xlu}A5rBsKA++{7(RQ}s(h7P+y+uhDA(^O99 zGi6z}b0Gxr&S9-(?meHE3v=%QxHV0i6?xC=di|@fw-G`R06QAtl)`= zFW~EXWjdPy@Vr=1Rn<>n6!E^_1CS(1ZzjvKws-IcUREpVzT#;z;np-1MPc$h7l708 sh>v6Jc-*`9w%PodZOmY;Qc69TZ;Wzr1AKHN?EnA(07*qoM6N<$f;^dk6951J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/closet.rsi/syndicate_door.png b/Resources/Textures/Structures/Storage/closet.rsi/syndicate_door.png index 3011253d03629719007205a1c697d1e4662f766b..0136eefe65acdf554dc259544c74f1b6b0c01ffb 100644 GIT binary patch delta 411 zcmV;M0c8Ht0jUF!7=H)`0001UdV2H#0004VQb$4nuFf3k0004FNkl zJA)7h2iQUHe*9qg@bf3b!>?b#e40Dp#FsA&FP}eW5SNsM(|;g~EqHin=YYPhuK)K} ztN>d;Ca2Sk}ol%i1wfI=W3AmG33qeldz0H%QI zX#m*)gvx=(a&inCHf$g&dWlkm9s=lf0jxZLm4q~Rz<`Iq#@n~SQ4K2v(M!VN9|GvL zAuJ^5mIesb1vHBSLKY*-Q#~7!VmT>li7p37F_aXw02EhR1TeLD4;laf002ovPDHLk FV1n%$sRaN4 delta 194 zcmZ30w}~S#8*vaQ}T3&@Ki~S3j3^P6+Ka_-2@&83+`8PP2RS^Rg+8kF2waPS~)9e{4(r4JwA4$u=2 zV4#ZwkS%@x=@Zxif_!`obaepC;wPU!gB_qNElpnsTz>i#Y=5x~FYgEnf&BdZ{{p8@ zF+BeEjR9K-$Z~NpG#)=ryIg?m0BmW1t`2~O04VXn09_q`t!*$e9Pnt54D@sWwt|SR4!~9v z)71f^Auwn{KsQ%Z6eU~ICmSMJdG^g46bD><{hGGr0D393VZ#QRS%_{I08ys~FnsA- QT>t<807*qoM6N<$g7fo&O#lD@ delta 191 zcmX@hbe?g7L_G^L0|P^2NcwRgB@y5g;tHhoMMX_TL;@8RlQcDx^!4j4EhpI9cU_rK z3zTCl3GxeOaCmkj4aiCLba4#PIG>y#p>aS%qv4FGh={(vgP4H6KCi1N2d^2BFbe__ zL23(}cvdJex-zU_3RUnh6$w=^nbOc;5TIbuV8R%EDn4#?y*WRVQF*Yc=G)De{mrZ70ttYs{hYRd~~Ff#nvN$@x--bZEgSa&2p7a zGAh;8@qFdwWjU+9f+0m)gXN#B9Zz|Kjk$RIPW=BQm!JhWn ziNBlKK`v?#VejbdG~845wd)rj2M5Ow{ogMH?`bf!GVnAwIrxXSR|N{l34MxxbI*1U z-;F=-WV`n4?BqOr$~2p!%>ZQnMdyYYO)oaikvZJPE6p*>KY-DUT_9NG@)gErHI@&e zM@@Jclf0Z(SvN>{U%VQiD>y0Ha${A;Db^!WZhgA~*?Za;7?dI}DeiRjGXaJPx$F-b&0R9Hvtmah)NFc8KMBoY!FIG_%JK+OSDfZfxOg*RAuk%5{=&5+=lObsM| z^c0XQlr&p|yBlIPT_*PZ?z`)^)}Z87D_I{ZfXacN4hSKhIHXcaGN%e3)}kovd7e5X zzVFikn1ZG#KHqjbXe}1>0J>5wYGwl)09K1@*leo(c)zQi6#&K8ajb-wy&gZnHc4PL z9`ifkx-LBSdu4y#fx6>B5CpWRKm(uy+Il^RtN^w@BMZRgdV|??0%@AUD9Z{Qo5O*& z1%ClB=)aF$DGp?Y?ek9%nSCH{!L-r%>gAL0-0eabhO{#vgn-WJWX%Cq09z8W0@#v} z6~LB+NxKbE6!FXeP9j#U7tRHn16ou{Sx7?CJ7NAxMtup*S4Y-c+mFrmt^z3Cffv=~ V!XaT->K*_9002ovPDHLkV1jlXn?V2o literal 0 HcmV?d00001 -- 2.52.0