From 052d07316ec140124c92754f4c8026ea38f63d27 Mon Sep 17 00:00:00 2001 From: Maggotson Date: Mon, 9 Feb 2026 18:24:45 +0300 Subject: [PATCH 1/2] Pullable Helmet --- .../Components/PullableHelmetComponent.cs | 43 +++++++ .../Systems/PullableHelmetSystem.cs | 116 +++++++++++++++++ .../PullableHelmet/PullHelmetAction.cs | 4 + .../PullableHelmet/PullHelmetDoAfter.cs | 7 ++ .../Imperial/HamMaggotson/helmet_pulldown.ogg | Bin 0 -> 13351 bytes .../Imperial/HamMaggotson/helmet_pullup.ogg | Bin 0 -> 13273 bytes .../ru-RU/Imperial/DeadSector/helmets.ftl | 13 ++ .../ru-RU/Imperial/HamMaggotson/verb.ftl | 2 + .../Imperial/Clothing/Helmets/k6_3.yml | 119 ++++++++++++++++-- .../HamMaggotson/Entities/clothing.yml | 2 + .../Head/Helmets/k6_3_new.rsi/icon-off.png | Bin 0 -> 384 bytes .../Head/Helmets/k6_3_new.rsi/icon.png | Bin 0 -> 447 bytes .../Head/Helmets/k6_3_new.rsi/inhand-left.png | Bin 0 -> 490 bytes .../Helmets/k6_3_new.rsi/inhand-right.png | Bin 0 -> 533 bytes .../Head/Helmets/k6_3_new.rsi/meta.json | 30 +++++ .../k6_3_new.rsi/off-equipped-HELMET.png | Bin 0 -> 635 bytes .../k6_3_new.rsi/on-equipped-HELMET.png | Bin 0 -> 677 bytes .../Helmets/k6_3_new_alt.rsi/icon-off.png | Bin 0 -> 317 bytes .../Head/Helmets/k6_3_new_alt.rsi/icon.png | Bin 0 -> 402 bytes .../Helmets/k6_3_new_alt.rsi/inhand-left.png | Bin 0 -> 490 bytes .../Helmets/k6_3_new_alt.rsi/inhand-right.png | Bin 0 -> 522 bytes .../Head/Helmets/k6_3_new_alt.rsi/meta.json | 30 +++++ .../k6_3_new_alt.rsi/off-equipped-HELMET.png | Bin 0 -> 718 bytes .../k6_3_new_alt.rsi/on-equipped-HELMET.png | Bin 0 -> 736 bytes 24 files changed, 359 insertions(+), 7 deletions(-) create mode 100644 Content.Server/Imperial/HamMaggotson/PullableHelmet/Components/PullableHelmetComponent.cs create mode 100644 Content.Server/Imperial/HamMaggotson/PullableHelmet/Systems/PullableHelmetSystem.cs create mode 100644 Content.Shared/Imperial/HamMaggotson/PullableHelmet/PullHelmetAction.cs create mode 100644 Content.Shared/Imperial/HamMaggotson/PullableHelmet/PullHelmetDoAfter.cs create mode 100644 Resources/Audio/Imperial/HamMaggotson/helmet_pulldown.ogg create mode 100644 Resources/Audio/Imperial/HamMaggotson/helmet_pullup.ogg create mode 100644 Resources/Locale/ru-RU/Imperial/HamMaggotson/verb.ftl create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/icon-off.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/icon.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/inhand-left.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/inhand-right.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/meta.json create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/off-equipped-HELMET.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/on-equipped-HELMET.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/icon-off.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/icon.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/inhand-left.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/inhand-right.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/meta.json create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/off-equipped-HELMET.png create mode 100644 Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/on-equipped-HELMET.png diff --git a/Content.Server/Imperial/HamMaggotson/PullableHelmet/Components/PullableHelmetComponent.cs b/Content.Server/Imperial/HamMaggotson/PullableHelmet/Components/PullableHelmetComponent.cs new file mode 100644 index 00000000000..24abbab3681 --- /dev/null +++ b/Content.Server/Imperial/HamMaggotson/PullableHelmet/Components/PullableHelmetComponent.cs @@ -0,0 +1,43 @@ +using Content.Shared.Storage; +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Content.Shared.Inventory; +namespace Content.Server.Imperial.HamMaggotson.PullableHelmet.Components; + + +[RegisterComponent] +public sealed partial class PullableHelmetComponent : Component +{ + [DataField("toggledPrototype", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] + public string ToggledPrototype = string.Empty; + + [DataField("untoggledPrototype", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] + [AutoNetworkedField] + public string UntoggledPrototype = string.Empty; + + [DataField("toggled"), AutoNetworkedField] + public bool Toggled = false; + [DataField] + public SlotFlags? Slot; + [DataField("requiredSlot")] + public SlotFlags RequiredFlags = SlotFlags.HEAD; + [DataField] + public LocId PullDownText = "pulldownhelmet-verb"; + + [DataField] + public LocId PullUpText = "pulluphelmet-verb"; + [DataField] + public TimeSpan Delay = TimeSpan.FromSeconds(2); + [DataField] + public SoundSpecifier PullUpSound { get; set; } = new SoundPathSpecifier("/Audio/Imperial/HamMaggotson/helmet_pullup.ogg"); + [DataField] + public SoundSpecifier PullDownSound { get; set; } = new SoundPathSpecifier("/Audio/Imperial/HamMaggotson/helmet_pulldown.ogg"); + [DataField] + public EntProtoId PullAction = "ToggleK63Helmet"; + + [DataField] + public EntityUid? Action; +} diff --git a/Content.Server/Imperial/HamMaggotson/PullableHelmet/Systems/PullableHelmetSystem.cs b/Content.Server/Imperial/HamMaggotson/PullableHelmet/Systems/PullableHelmetSystem.cs new file mode 100644 index 00000000000..7afbe982858 --- /dev/null +++ b/Content.Server/Imperial/HamMaggotson/PullableHelmet/Systems/PullableHelmetSystem.cs @@ -0,0 +1,116 @@ +using Content.Shared.Clothing.Components; +using Content.Shared.Foldable; +using Content.Shared.Inventory; +using Content.Shared.Item; +using Content.Shared.Clothing.EntitySystems; +using Content.Shared.Verbs; +using Content.Server.Imperial.HamMaggotson.PullableHelmet.Components; +using Content.Shared.Popups; +using Content.Shared.DoAfter; +using Robust.Shared.Containers; +using Content.Shared.Imperial.HamMaggotson.PullableHelmet; +using Robust.Shared.Audio.Systems; +using Content.Shared.Actions; +namespace Content.Server.Imperial.HamMaggotson.PullableHelmet.Systems; + +public sealed class PullableHelmetSystem : EntitySystem +{ + [Dependency] private readonly ClothingSystem _clothingSystem = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly SharedItemSystem _itemSystem = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly ActionContainerSystem _actionContainer = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>(AddPullVerb); + SubscribeLocalEvent(TryToggleHelmet); + SubscribeLocalEvent(TryStartDoAfter); + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnGetActions); + } + + private void AddPullVerb(EntityUid uid, PullableHelmetComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Hands == null) + return; + + AlternativeVerb verb = new() + { + Act = () => TryStartDoAfter(args.User, (uid, component)), + Text = component.Toggled ? Loc.GetString(component.PullUpText) : Loc.GetString(component.PullDownText), + Priority = component.Toggled ? 0 : 2, + }; + + args.Verbs.Add(verb); + } + + private void TryStartDoAfter(EntityUid user, Entity ent) + { + _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, + user, + ent.Comp.Delay, + new PullHelmetDoAfterEvent(), + ent, + ent) + { + NeedHand = true, + }); + } + + private void TryStartDoAfter(Entity ent, ref PullHelmetActionEvent args) + { + _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, + args.Performer, + ent.Comp.Delay, + new PullHelmetDoAfterEvent(), + ent, + ent) + { + NeedHand = true, + }); + } + + public void TryToggleHelmet(EntityUid uid, PullableHelmetComponent component, ref PullHelmetDoAfterEvent args) + { + var user = args.User; + if (!_inventory.InSlotWithFlags(uid, component.RequiredFlags)) + return; + component.Toggled = !component.Toggled; + var newPrototype = component.Toggled ? component.ToggledPrototype : component.UntoggledPrototype; + var sound = component.Toggled ? component.PullDownSound : component.PullUpSound; + var newEntity = Spawn(newPrototype, Transform(uid).Coordinates); + if (!TryComp(newEntity, out var hlm)) + { + QueueDel(newEntity); + return; + } + hlm.Toggled = component.Toggled; + if (_inventory.TryGetContainingSlot(uid, out var slot)) + { + _inventory.TryUnequip(user, slot.Name); + _inventory.TryEquip(user, newEntity, slot.Name); + QueueDel(uid); + _audio.PlayPvs(sound, user); + } + } + private void OnGetActions(EntityUid uid, PullableHelmetComponent component, GetItemActionsEvent args) + { + if (component.Action != null + && (args.SlotFlags & component.RequiredFlags) == component.RequiredFlags) + { + args.AddAction(component.Action.Value); + } + } + + private void OnMapInit(EntityUid uid, PullableHelmetComponent component, MapInitEvent args) + { + if (_actionContainer.EnsureAction(uid, ref component.Action, out var action, component.PullAction)) + _actionsSystem.SetEntityIcon((component.Action.Value, action), uid); + } +} diff --git a/Content.Shared/Imperial/HamMaggotson/PullableHelmet/PullHelmetAction.cs b/Content.Shared/Imperial/HamMaggotson/PullableHelmet/PullHelmetAction.cs new file mode 100644 index 00000000000..d528fd59ec8 --- /dev/null +++ b/Content.Shared/Imperial/HamMaggotson/PullableHelmet/PullHelmetAction.cs @@ -0,0 +1,4 @@ +using Content.Shared.Actions; +namespace Content.Shared.Imperial.HamMaggotson.PullableHelmet; +public sealed partial class PullHelmetActionEvent : InstantActionEvent +{} diff --git a/Content.Shared/Imperial/HamMaggotson/PullableHelmet/PullHelmetDoAfter.cs b/Content.Shared/Imperial/HamMaggotson/PullableHelmet/PullHelmetDoAfter.cs new file mode 100644 index 00000000000..f3614c47da9 --- /dev/null +++ b/Content.Shared/Imperial/HamMaggotson/PullableHelmet/PullHelmetDoAfter.cs @@ -0,0 +1,7 @@ +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.Imperial.HamMaggotson.PullableHelmet; + +[Serializable, NetSerializable] +public sealed partial class PullHelmetDoAfterEvent : SimpleDoAfterEvent; diff --git a/Resources/Audio/Imperial/HamMaggotson/helmet_pulldown.ogg b/Resources/Audio/Imperial/HamMaggotson/helmet_pulldown.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4abe4e6aff0af5ca335b28e4c903b207a3eba879 GIT binary patch literal 13351 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/inhand-left.png b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..135130abea8d2c561f7f8ea0371ed4077fa2e554 GIT binary patch literal 490 zcmV0z{2hPm zyR~84_NL8C_I=e}qFgD>3&pH-4R{Y?vA(#c5~LSe8_nf2|2i-9Is?}bmJQyme&A-n z^TP|Aue5Z}ihufUw@}O)nF-nh0D$w$3+cMmsCus3>kM>vXDuTE++1Bt*H+wn-DJvI zSvH+Gs$E*iNB}yf{I+P{1{b$5VUt~8RhfxJ(8zPZHu();Pg6faivjGq1G^Ua0E|3e zd!cK=4Ad@Qf?H6210W(IA|fIpqUZ_z3lTx}#Yo@-0DeQTZ5z3KX6b(iR09ajOHncS zWXi(9VfyE@?j*^J&;%d`pGe4ur+z~)ayV*2?(77k;TW@-gX7a9sqEuj{V+B(Yry^M zXbu3~yIb_TPf~gR@lAOgp_u`#MpgRd7f*^+7s1d3Fr7FU4aeHs4g4Y~w!nI=8JkWV gBmWX1A|i^YZ{(Ma(av|4`v3p{07*qoM6N<$f;L6k`v3p{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/inhand-right.png b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ca444f2efb2a03c9466255f02eef46843816cadf GIT binary patch literal 533 zcmV+w0_y#VP)Ym4Py_u;6eXM0^1uK7|ipz{$9XgYg+07<6$l5sZT|(eMH$ zfa!*d#g^XE(iYm%@0T$2(l+Ow9&XFM1&D}JFyi}4$6PVr~l4z4vSs5L6Ktj3WnegI43 zw^hLV%LnwIT}zvq{SGU}$e5B~sRUaB0O0ua#Ik*NdA7dDLiYUly3+pA1YDnAShm%y z|A00vUr-&tn~Zf^n=}F2Q1V_`2ElHpr%c8=WS=D51(wC{)CXGyB%!0rtQvpDeV6T) z`UFS^LBC{=rEa2ld^Ssc1^6ED{9J9Bbya{Q;{#I(5j`_ze`{UQ~`SjMa%Z*+ZO;ptCukxjDnncV|*uII2b7aELU2qmr*}F z0s!1z-3NEUKx2}uy@(wNb4*^3Bq73$KMY#lz%w?HByqLlju Xd%3u0>aIwm00000NkvXXu0mjfgUIyq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/meta.json b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/meta.json new file mode 100644 index 00000000000..ff63bd5bd72 --- /dev/null +++ b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Create by @lune_felix", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "off-equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/off-equipped-HELMET.png b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/off-equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..438968b9636a84a498ff51bc530b8445f1f1cdc8 GIT binary patch literal 635 zcmV->0)+jEP)^R}n+`S3;y;TC26-ryU^4k5bm(3P6#9`0g+hl;?a-~Or;?#is0|vt zNcLjm4t8u=f*7ttBgJwPM|W1N7(c(wCrkJ8>h93-9zeTIQ@QEoi@JFA_6-gX4lwgP zeEaYTKYv{)Jxi8ZD~L>1hhgZ*74sN&2XI{<(}|CEt0x_U^bLyv1l9>aweMUpkNy2U zTwTp0Nof7S?a)W7r);+JiM<+oqqi`$m{qD+nRv2H{qX z0O0NQz*=)x8U!&1@;7EvwHYD!CmzJ&D4kwKXNIQVE?R)}=h<4gq z+hMa-5Jyidc>V4i0PywwN9cz`xUP?jADu+E+V!)FFbp03EEnl-eA!v6A|zcK1pY5V zi1|Eny<9B;fJiC{^|Oj7S4&|@Y`MQ69+gB$e+L95a`W^gY@2x=W}YYeC}qq2nWrbn zWOb$Lkka{p>o*+w{`re+ziYXzzjCz%+j6AOC@4*VKqjkWeAz+%_*vMNE9PNaj#91u zF4Kt*+j6it4FF)!A0d;~SKN6&B?Fr24vV!b$U!fAah>Ha2Rwy`92!yrm5SkH590qS-bu^g~1ula4QRKstC7v80`E zFM1I2C(kcHdJwEjUs05QPoXB71eUAi!8sg~` zlbahHeg0B)ZZq+#pVn*}fFEK!Vsnm~??F|GttzP*u&k?{XIp`y>1qr=%*+D52G~|0 zbpHbq1E4mp3l<^K-o$i!t@!+G@cRs{nfpZ-L7`i~wgP25Vu&J!p&#B^ftU3d6lwn( z=^sM*wpINhLa$?ye zMB@WM_tmpZyX$!9_FA!Me5v|?{K@kIiL|N*B7en;@(_tF^>Q@r;v~Rko#D~LPHs<7 zw(E?1|KEQMaB&jg<(pQiex(M$b-ZNsH|rA^JHLu1-oAgA)D4`TeiiD|G|j>VZ|~!N zQj2hWa0p{(8{yS;CMOxvGe9Jz7IaOWuHysA9>XM?!P22&( z5Ig$O0RXPMz;N^mAbKF$t&XUiReje+<6&t1y$V31-V}yzV*WK>DcjTu zkJtI5Tpoo&-dFbW_PDlw+5qHI)m~%rK7svduYA%nbaQ2B$dKRullaarFMQu`uC623 z9gT;wZ)c-S0uZOeLB&!zw9K)miQ5e$Jph`J{*-1alUZP0S)5rQtSpNpn8|y1fWrGij(70I3F_r%flD0yGR`bWrjepRK`Ml1Hf+( zWKbpv-ab7GV7c`k+$O(&xJ%p*WuAcGnS)^ROF9cElLH)k3QY*<=MR(#K(F7`Y-a}B gkvIN{h=>l{4@CK(yO~tk9smFU07*qoM6N<$f-&>b@Bjb+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/inhand-right.png b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..430026ec913516482357b6b473ee6f8fed6568e8 GIT binary patch literal 522 zcmV+l0`>igP)BcU)5MA|2@*1M+La9)zrYLIDjgcgi zXf6{>n*W0=6655YlgWjd07OJYL_|bHL^-3_S9Dzm0CcpjX>A(}`wC7_RWf z*W@CT?Bnx2)c&3Y$Wp>?4S2mDtudz zcG8{#9j$BH&wQ`Re$mbE1SjhefD0y z=H33@L~H5F7Ypjay)BlOGV!%A?D6T#0nVwd9fS5CYPE-I+`aw%H&>d3e6gVJ->r~N zW&TRQS-;28*9P{_j$s&=4JP3p%_6U)L4NC+W>5JCtcgb+dqA%vL1FXo{wl0F0m8~^|S07*qoM6N<$f}Gx2 AQ2+n{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/on-equipped-HELMET.png b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/on-equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..7d844eaea87f60b1de4c85ca4ac5daae8ceeff59 GIT binary patch literal 736 zcmV<60w4W}P)tSzw7&GDUiX*-K-K{O%1+48?ew^1+Q_~Dk2x5f4>is?G;Mb` zq#W*cdffG#jrXgToogkunr+^AbQF(^1s#iJ6ptrYWBk1MuE``ozx|OluIIq2KG=NU zoynL}!uRKK^(BKBRVa&80;-k`4&da?Da=X*ny!OK5!if=Pw(ENYS~Io$RdKhcBZJ= z^}TEr?!uu%aq;U%sE&9{95o;y==LT3GK_FK(1&vg#~09`A>Fe)(0 zMtsc=eC2OYmQ6`$HQQXpp7h%i$51u_;uunK;%}n-LnwRgUksig2!bF8f*=TjAP9mW z2!gn8DE*cFtp9?0Y~3Y3v_1g1sZp>@8(#-s@@AaQhLLmR&HeML>8s)FtGamJm#QS&~KFHU~rbp9?KX6z-A z5y?pI#)m?zx$lXycc~^T;VvAyjiffg^_*NKIRrrv1VIo4K@bE%5ClQ|fBXSopC4zj SN`kWh0000 Date: Sat, 14 Feb 2026 21:14:51 +0300 Subject: [PATCH 2/2] Quickfix --- Resources/Prototypes/Imperial/Clothing/Helmets/k6_3.yml | 3 +++ .../Imperial/Clothing/Head/Helmets/k6_3_new.rsi/meta.json | 3 +++ .../Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/meta.json | 3 +++ 3 files changed, 9 insertions(+) diff --git a/Resources/Prototypes/Imperial/Clothing/Helmets/k6_3.yml b/Resources/Prototypes/Imperial/Clothing/Helmets/k6_3.yml index 1bd5ce24b89..9708e15c782 100644 --- a/Resources/Prototypes/Imperial/Clothing/Helmets/k6_3.yml +++ b/Resources/Prototypes/Imperial/Clothing/Helmets/k6_3.yml @@ -42,6 +42,7 @@ components: - type: Sprite sprite: Imperial/Clothing/Head/Helmets/k6_3_new.rsi + state: icon-off - type: Clothing sprite: Imperial/Clothing/Head/Helmets/k6_3_new.rsi quickEquip: true @@ -110,6 +111,7 @@ untoggledPrototype: ClothingHeadHelmetK63Alternate toggledPrototype: ClothingHeadHelmetK63AlternateLowered pullAction: ToggleK63Helmet + - type: entity id: ClothingHeadHelmetK63AlternateLowered parent: ClothingHeadHelmetK63Alternate @@ -120,6 +122,7 @@ components: - type: Sprite sprite: Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi + state: icon-off - type: Clothing sprite: Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi quickEquip: true diff --git a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/meta.json b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/meta.json index ff63bd5bd72..83e4281b819 100644 --- a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/meta.json +++ b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new.rsi/meta.json @@ -10,6 +10,9 @@ { "name": "icon" }, + { + "name": "icon-off" + }, { "name": "off-equipped-HELMET", "directions": 4 diff --git a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/meta.json b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/meta.json index ff63bd5bd72..83e4281b819 100644 --- a/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/meta.json +++ b/Resources/Textures/Imperial/Clothing/Head/Helmets/k6_3_new_alt.rsi/meta.json @@ -10,6 +10,9 @@ { "name": "icon" }, + { + "name": "icon-off" + }, { "name": "off-equipped-HELMET", "directions": 4