From 9118217bceb228c1c20a13761aed2217e4e7dc2b Mon Sep 17 00:00:00 2001 From: DragonDidlo <111651007+DragonDidlo@users.noreply.github.com> Date: Sat, 21 Dec 2024 18:06:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=81=D1=82=D1=83=D0=BF=D1=8B=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=9C=D0=B5=D1=85=D0=BE=D0=B2=20=D0=B8=20?= =?UTF-8?q?=D0=9F=D0=B0=D1=82=D1=80=D1=83=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=9F=D0=BE=D0=B4=20(#883)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Mech Access and Sec Pod * fix shit --- Content.Server/Mech/Systems/MechSystem.cs | 12 +- .../entities/objects/specific/mech/mechs.ftl | 2 +- .../entities/markers/spawners/mechs.ftl | 3 + Resources/Locale/en-US/_strings/mech/mech.ftl | 1 + .../entities/objects/specific/mech/mechs.ftl | 2 + .../entities/markers/spawners/mechs.ftl | 3 + Resources/Locale/ru-RU/_strings/mech/mech.ftl | 1 + .../Entities/Markers/Spawners/mechs.yml | 17 +- .../Entities/Objects/Specific/Mech/mechs.yml | 13 ++ .../Entities/Objects/Specific/Mech/mechs.yml | 203 ++++++++++++++---- .../Specific/Mech/sec_pod.rsi/meta.json | 13 +- .../Specific/Mech/sec_pod.rsi/sec_pod.png | Bin 5177 -> 1714 bytes .../Mech/sec_pod.rsi/sec_pod_broken.png | Bin 0 -> 2058 bytes .../Mech/sec_pod.rsi/sec_pod_open.png | Bin 0 -> 1764 bytes 14 files changed, 227 insertions(+), 43 deletions(-) create mode 100644 Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod_broken.png create mode 100644 Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod_open.png diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index d849df50f7..7c7cc73223 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -33,6 +33,8 @@ using Robust.Server.GameObjects; using Robust.Shared.Containers; using Robust.Shared.Player; using Content.Shared.Whitelist; +using Content.Shared.Access.Components; +using Content.Shared.Access.Systems; namespace Content.Server.Mech.Systems; @@ -54,6 +56,7 @@ public sealed partial class MechSystem : SharedMechSystem [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly TagSystem _tag = default!; [Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!; + [Dependency] private readonly AccessReaderSystem _accessReader = default!; /// public override void Initialize() @@ -249,7 +252,14 @@ public sealed partial class MechSystem : SharedMechSystem _popup.PopupEntity(Loc.GetString("mech-no-enter", ("item", uid)), args.User); return; } - + + if (TryComp(uid, out var accessReader)) + if (!_accessReader.IsAllowed(args.Args.User, uid, accessReader)) + { + _popup.PopupEntity(Loc.GetString("mech-no-access", ("item", uid)), args.User); + return; + } + if (TryComp(args.Args.User, out var handsComponent)) foreach (var hand in _hands.EnumerateHands(args.Args.User, handsComponent)) _hands.DoDrop(args.Args.User, hand, true, handsComponent); diff --git a/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/mech/mechs.ftl b/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/mech/mechs.ftl index a71495e614..5c8ed38ae4 100644 --- a/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/mech/mechs.ftl +++ b/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/mech/mechs.ftl @@ -1,2 +1,2 @@ ent-MechSecPod = Security Pod - .desc = While lightly armored, the Gygax has incredible mobility thanks to its ability that lets it smash through walls at high speeds. + .desc = Despite its size, the Security Pod has incredible mobility in space thanks to its engines. \ No newline at end of file diff --git a/Resources/Locale/en-US/_prototypes/entities/markers/spawners/mechs.ftl b/Resources/Locale/en-US/_prototypes/entities/markers/spawners/mechs.ftl index 44c7c8e2c5..3a337f5d39 100644 --- a/Resources/Locale/en-US/_prototypes/entities/markers/spawners/mechs.ftl +++ b/Resources/Locale/en-US/_prototypes/entities/markers/spawners/mechs.ftl @@ -38,3 +38,6 @@ ent-SpawnMechMaulerSyndie = Mauler Spawner ent-SpawnMechMaulerSyndieFilled = Mauler Spawner .suffix = Filled .desc = { ent-MarkerBase.desc } +ent-SpawnMechSecPodFilled = Sec Pod Spawner + .suffix = Filled + .desc = { ent-MarkerBase.desc } \ No newline at end of file diff --git a/Resources/Locale/en-US/_strings/mech/mech.ftl b/Resources/Locale/en-US/_strings/mech/mech.ftl index 7fac0387ed..c6b60dedc2 100644 --- a/Resources/Locale/en-US/_strings/mech/mech.ftl +++ b/Resources/Locale/en-US/_strings/mech/mech.ftl @@ -17,5 +17,6 @@ mech-energy-missing = Energy: MISSING mech-slot-display = Open Slots: {$amount} mech-no-enter = You cannot pilot this. +mech-no-access = You do not have access to pilot this. mech-eject-pilot-alert = {$user} is pulling the pilot out of the {$item}! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/mech/mechs.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/mech/mechs.ftl index 73ce6147e4..30ae337e34 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/mech/mechs.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/mech/mechs.ftl @@ -6,3 +6,5 @@ ent-MechMolotBattery = { ent-MechMolot } ent-MechMolotFilled = { ent-MechMolotBattery } .desc = { ent-MechMolotBattery.desc } .suffix = Батарея, Заполнен +ent-MechSecPod = Патрульный Под + .desc = Несмотря на свои габариты, Охранный Под обладает невероятной мобильностью в космосе благодаря своим двигателям. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_prototypes/entities/markers/spawners/mechs.ftl b/Resources/Locale/ru-RU/_prototypes/entities/markers/spawners/mechs.ftl index 56bb79dd26..9a5f4947ce 100644 --- a/Resources/Locale/ru-RU/_prototypes/entities/markers/spawners/mechs.ftl +++ b/Resources/Locale/ru-RU/_prototypes/entities/markers/spawners/mechs.ftl @@ -38,3 +38,6 @@ ent-SpawnMechMaulerSyndie = спавнер Маулер ent-SpawnMechMaulerSyndieFilled = спавнер Маулер .desc = { ent-MarkerBase.desc } .suffix = Заполнен +ent-SpawnMechSecPodFilled = спавнер Патрульного Пода + .suffix = Filled + .desc = { ent-MarkerBase.desc } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_strings/mech/mech.ftl b/Resources/Locale/ru-RU/_strings/mech/mech.ftl index 59b1207ccc..ead90d2a69 100644 --- a/Resources/Locale/ru-RU/_strings/mech/mech.ftl +++ b/Resources/Locale/ru-RU/_strings/mech/mech.ftl @@ -11,4 +11,5 @@ mech-energy-display = Энергия: { $amount }% mech-energy-missing = Энергия: ОТСУТСТВУЕТ mech-slot-display = Доступно слотов: { $amount } mech-no-enter = Вы не можете пилотировать это. +mech-no-access = У вас нет доступа для пилотирования. mech-eject-pilot-alert = { $user } вытягивает пилота из { $item }! diff --git a/Resources/Prototypes/Entities/Markers/Spawners/mechs.yml b/Resources/Prototypes/Entities/Markers/Spawners/mechs.yml index 1897faee99..0a24451518 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/mechs.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/mechs.yml @@ -240,4 +240,19 @@ state: mauler - type: ConditionalSpawner prototypes: - - MechMaulerSyndieFilled \ No newline at end of file + - MechMaulerSyndieFilled + +- type: entity + name: Sec Pod Spawner + suffix: Filled + id: SpawnMechSecPodFilled + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: _Sunrise/Objects/Specific/Mech/sec_pod.rsi + state: sec_pod + - type: ConditionalSpawner + prototypes: + - MechSecPod \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml index dcd9f81d14..7dddbe9352 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml @@ -178,6 +178,7 @@ autoRot: true radius: 4 netsync: false + - type: AccessReader # Ripley MK-I - type: entity @@ -860,6 +861,8 @@ - DoorBumpOpener - FootstepSound - Gygax + - type: AccessReader + access: [["CentralCommand"]] - type: entity id: MechNTGygaxBattery @@ -938,6 +941,8 @@ 800: Critical showOverlays: false allowRevives: true + - type: AccessReader + access: [["CentralCommand"]] - type: entity id: MechMarauderBattery @@ -1016,6 +1021,8 @@ 800: Critical showOverlays: false allowRevives: true + - type: AccessReader + access: [["CentralCommand"]] - type: entity id: MechSeraphBattery @@ -1102,6 +1109,8 @@ - DoorBumpOpener - FootstepSound - Gygax + - type: AccessReader + access: [["NuclearOperative"]] - type: entity id: MechGygaxSyndieBattery @@ -1178,6 +1187,8 @@ 780: Critical showOverlays: false allowRevives: true + - type: AccessReader + access: [["NuclearOperative"]] - type: entity id: MechRoverSyndieBattery @@ -1259,6 +1270,8 @@ 800: Critical showOverlays: false allowRevives: true + - type: AccessReader + access: [["NuclearOperative"]] - type: entity id: MechMaulerSyndieBattery diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/mechs.yml index 452aba8a0f..2cd6854ec0 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/mechs.yml @@ -1,45 +1,71 @@ - type: entity - id: MechSecPod - parent: [ BaseMech, CombatMech, BaseRestrictedContraband ] - name: Security Pod - description: While lightly armored, the Gygax has incredible mobility thanks to its ability that lets it smash through walls at high speeds. + id: BaseMechPod + save: false + abstract: true components: - - type: Sprite - drawdepth: Mobs - noRot: true - sprite: _Sunrise/Objects/Specific/Mech/sec_pod.rsi - scale: 1.08, 1.08 - layers: - - map: [ "enum.MechVisualLayers.Base" ] - state: sec_pod - - type: FootstepModifier - footstepSoundCollection: - path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: MobMover - type: Mech - baseState: sec_pod - openState: sec_pod - brokenState: sec_pod - mechToPilotDamageMultiplier: 0.3 - airtight: true - pilotWhitelist: - components: - - HumanoidAppearance - - type: MeleeWeapon - hidden: true - attackRate: 1 + - type: MechAir + - type: AirFilter + # everything except oxygen and nitrogen + gases: + - CarbonDioxide + - Plasma + - Tritium + - WaterVapor + - Ammonia + - NitrousOxide + - Frezon + #- Helium3 TODO: fusion + # remove everything except oxygen to maintain oxygen ratio + overflowGases: + - Nitrogen + - CarbonDioxide + - Plasma + - Tritium + - WaterVapor + - Ammonia + - NitrousOxide + - Frezon + #- Helium3 TODO: fusion + - type: AirIntake + # for intake and filter to work + - type: AtmosDevice + requireAnchored: false + joinSystem: true + - type: DoAfter + - type: Repairable + doAfterDelay: 2 damage: types: - Blunt: 0 - Structural: 0 + Blunt: -15 + Slash: -15 + Piercing: -15 + - type: UserInterface + interfaces: + enum.MechUiKey.Key: + type: MechBoundUserInterface + - type: Puller + needsHands: false + - type: InputMover + - type: InteractionOutline - type: MovementSpeedModifier - baseWalkSpeed: 2.5 + baseWalkSpeed: 2 baseSprintSpeed: 3 - - type: Reflect - reflectProb: 0.25 - spread: 180 - soundOnReflect: /Audio/Weapons/block_metal1.ogg - reflects: - - NonEnergy + friction: 5 + weightlessFriction: 5 + weightlessAcceleration: 4 + weightlessModifier: 2.8 + - type: MovementAlwaysTouching + - type: Pullable + - type: Clickable + - type: WiresPanel + - type: Physics + bodyType: Dynamic + - type: MobState + allowedStates: + - Alive + - Critical - type: MobThresholds currentThresholdState : Alive thresholds: @@ -47,4 +73,109 @@ 300: Critical showOverlays: false allowRevives: true - - type: Tag \ No newline at end of file + - type: HealthExaminable + examinableTypes: + - Blunt + - Slash + - Piercing + - Heat + - Shock + locPrefix: mech + - type: Appearance + - type: ContainerContainer + containers: + mech-pilot-slot: !type:ContainerSlot + mech-equipment-container: !type:Container + mech-battery-slot: !type:ContainerSlot + - type: Damageable + damageContainer: Mech + damageModifierSet: LightArmor + - type: GuideHelp + guides: + - Robotics + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 900 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - !type:ChangeConstructionNodeBehavior + node: start + - !type:DoActsBehavior + acts: ["Destruction"] + - type: StatusIcon + bounds: "-0.6,-0.6, 0.6, 0.6" + - type: PointLight + enabled: false + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + radius: 9 + netsync: false + +- type: entity + id: MechSecPod + parent: [ BaseMechPod, BaseRestrictedContraband ] + name: Security Pod + description: Despite its size, the Security Pod has incredible mobility in space thanks to its engines. + suffix: Filled + components: + - type: Sprite + drawdepth: Mobs + sprite: _Sunrise/Objects/Specific/Mech/sec_pod.rsi + scale: 1.08, 1.08 + layers: + - state: sec_pod + map: ["enum.MechVisualLayers.Base"] + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.9 + density: 1000 + mask: + - FlyingMobMask + layer: + - FlyingMobLayer + - type: AmbientSound + range: 4 + volume: -4 + sound: + path: /Audio/Effects/shuttle_thruster.ogg + - type: Mech + baseState: sec_pod + openState: sec_pod_open + brokenState: sec_pod_broken + mechToPilotDamageMultiplier: 0.3 + maxEquipmentAmount: 2 + airtight: true + pilotWhitelist: + components: + - HumanoidAppearance + equipmentWhitelist: + tags: + - CombatMech + startingEquipment: + - WeaponMechCombatSolarisLaser + - type: Reflect + reflectProb: 0.2 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg + reflects: + - NonEnergy + - type: MobThresholds + currentThresholdState: Alive + thresholds: + 0: Alive + 450: Critical + showOverlays: false + allowRevives: true + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCageMedium + - type: AccessReader + access: [["Security"]] \ No newline at end of file diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/meta.json index 4fee9929dd..20b96ce54d 100644 --- a/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/meta.json +++ b/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/meta.json @@ -3,13 +3,18 @@ "license" : "CC-BY-SA-3.0", "version": 1, "size": { - "x": 32, - "y": 32 + "x": 64, + "y": 64 }, "states": [ { - "name": "sec_pod", - "directions": 4 + "name": "sec_pod" + }, + { + "name": "sec_pod_broken" + }, + { + "name": "sec_pod_open" } ] } diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod.png b/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod.png index 6366d28acdfac0fc176e9c820276d1cb49b53dec..f4bfec3f087c82a0ab250b23957f473f94e6f7ee 100644 GIT binary patch literal 1714 zcmV;j22J^iP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tdsf}lApBq}0^{slRB@Z`<22U$IM_U6fhhx`M=N=()PJTCGFeawmG>ZRDjt3Ukr=_pX_mnlkUd`*ypdPsYMC>Ew%^ z#L27G>NY+(IcWt*BM-DbVMrT!>5IZ3@HpY>>Z&cr$cX`)fBa=bn0W4K8*XfDn1h3Z zzLODdH+Js4O{de8TUc1I&x?zTR#)ePlnrTvxZA%FItpssO3)b}AGh)C?QNS+=cLop zA&`z@i0c6K=(NuPq*2y&Ku8K8UXSaRGNE+qpUwx-85kQI zyF$ar#KeSYG#a*pk|si7@<&ESOtaavm7q5}I~!N-is&?M9hi~F?$vd4bY%AS_RRG3 zwAEQ#TQj4hqh@Gm$m;7d)Pr-}xZAzdHF>%_RFu)Q!-bFFXUPRm;b(F^V10F!<%1x9>q@B+}w=YNjwK& z{4;$6iK6l4ixkCIr-;UvFOoKpUI&Qr?>+KpqG){iB55!ZNE*I6MKr#Aku)cqdJAlQ z{Y`8}LZ+sFYf-s#B@lv<-SrmB}pC#CUE!ZUXiM`}^Y=YVm zJt1Z42Gff=+PH=b-nRfsGEG8f0aNnY_HUV|Xb8Ga-9|S$_A1A4A@LlL#R+r@(Q$cB z8$mWgB$24BTW3f834|CAi5ZY|O4OAn?Z8^cy$rGIbEDI673QswR3@!{pH8R)Qjco8 zyStwa4-a1<&IO`K~5f*3E5mcz9@a+%kx+ z8xi9`bhrpX+hBXy>SjD7E`d<=Qt=7MU7lw#-i0)+BX@mWmn+?j3n8cicPaR$7dlp1 zfgvEDw6c;`Ubow=Z)p^s0RoM=LdRuo1D%x6Cz1!0k@CK}tx^vNu1I?tx_KG>*VZ@U z)0dnrWK@%o(U$W)NAsViPMly99J2PyrDrq1hup*jjK4Jdv6ZP;-|)t@gY>=RtO#}h z9u@C`c-^=5(|F?eXB*xee8t8Q;vjjU6dipiGz0QDK@5kT!ZRL2hg!-QYI>I?F*voS-3%Japvuf;4p7 zd5woco8W%qhHY3v7yTVh;GiQ;Xk1&eBF4L?M9NZ!k8W*;Qm8QRV!q~b#r2JXepho* zkzatg?z&3{9j>(0#SG|nsp-~sD1~M~9+sAttf6#X3u)w)O{osRP^LPg<`eSJDU-qu zkS{_Z_(t9pbVA9}b`pggz}ib%qdw53(-`R!-`q>)!P zg&k0I1d7m$wo9J@_Z!9k!H|Oftj=fi_Pg6GFE86X*1UYi<})|ze`{;YE`zKeHj7Zn z9+1QXxd&u{k?lr^PA@rg2gvJ6c76@U`V1~>`a@-#pcpAq6{S0X5tp^DKWfV6S2m?M zAZZz-rIj)Lp|T~Qcl;`Lf1xr5a2}8)AZLRrsKf!X*7aSWiuDhrp5yfwB6saeTAAw~ zs#^kAe~eQsP}TZ}N@su=UL}>x0ALnGQA-u0Z;Ubj0gUs&%eM8jHvj+t07*qo IM6N<$f^~E~xBvhE literal 5177 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 diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod_broken.png b/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod_broken.png new file mode 100644 index 0000000000000000000000000000000000000000..4ee4f2defae4eb94a8c9e8dfaf9c53bba97a95c9 GIT binary patch literal 2058 zcmV+l2=(`gP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2cJnqK~#8N?VC+( z6;%|+=e3jo(n1ZQAV#E(BqeH!2D(5%4H^lua3cch!o-9f8(a{CP?SVn$O;k@7b*}| zE*hfID1u>8iPC674W>m@1V7N)qM$-~zTfTqhuh1Y_vXFVnWy3}Ii348GxwZ(@3|lI zn#FUE?3;uBlivkH1I=M-5HvLp1WF(L<%b;QNVm&2Hl8+R#kq4cN8Jay zH_1D~=1v3OHcQ(g+F)qs|PzP`R-XlN)$IpVo-6HPjm=Dsy+)|mL7J$p=9J0Em! zl6Mex>z4#?57_Zi>s40a;j?DV3J|>rs1!nlBuew4iu;JmOY)Am`U%opA>A0jRk(Hg zZ(*o3v=%~3NR;M6#i`)ZrAxz&j{tbqZl#}BBCL%f9g&76~BI;<4Szfz+MGS-yy4)W}}7t_HEft4#)8VBMQIIwYZ81i#w-rQiuvEyMZp2OEo zu4o7>`n|L-N>YdWw|9o25$FMWPo2D>3(DV;tB(~MU%n(M_uScSt_KeuG*{t!ro_gV zFDcfL-f2+Eub40?R&0Fvl48&j8js98%lE!z!ZyBVN^E@jl43^4wYRrN^Cx`$+Ut?> zuZfhRzb#hy`ZZ!^_mUoR%|Ih;_ZhQdCMkxanprB8A9_nN6 z>=sjTDG!9}{~QWqLGWZ@T2+4BLW_J1=Q8~BH|8B&5sWS2xxnz5yX|EYw(E%w=pyAo z`l7q>0R#}b6Cx|w^Q9ijm6tv9(Ge4e-cLUaLnEMss|YO)OtFI500Eq!PkD?;k8ydv zePQrK^R(!>fB{ucS|88>UC>GTNni3uIYHYHaZt&(S3erOx_CikeIW(Z(yl^U0{3m4 zY_2w+eBNQ6t9xzeF`Ifm4r75)eAUCp!dRh|7xkKZi{UCRyt4p>)J^PO0LP!(5Zpfd zJrkDo+wQ*4h#*W0`4k0|jl6(LFbgk_RH{1+-3K$~0-V za-d4OsEl@Ylp&7tI{Xl9ZJGX5#=fW6vq5EKq@JE0)62TLx=J35czr-Q*#5#NpuIeC zpYlMOT}FF-`&q6O>)J__heStWt}pO87vG)&ML&P2+? zm>Ix_jKbK~zMXrx`cNKM-2x*C@pI$ z?g7;p0i`bvo(N-s3Cj>!Q;`8QCzopkwz@xd?=WE*!B(C;-)FNlskjGV1U4*^Qt%A` zW3kYY5o|~!k23mRkOfsaLH#fx?gt9?Ihx)s+{YJG^)dMP_uuV0JVhCGEBQI+*H2{jz)oEp) zkVly;soDTK)=q-2OCN-@`8^k>MdDN z)jFUQ{N{)sTiI)YLx&ETJjFrZ^KA45In6Zyq}l^~pT-#HHd5Z+1JG;A`Kewtq-ucm z&-RUKJyv%<^u?I2PuTZ?G%Zs10h%i1`E4+W{kdGIH>BPDA$0@9A)~|@2jAiQ$?jN_ zxdCW(`2jgcAk7^j?hs0YObie=42q>?(fy%jL%^O5+?gRuYGwe|0~!Ka8`OfD7(ip) z-V4M{k!h3aO3=kVA#%sQ(y|=?P`e>;_{y)o>~Pl9%mDusYBvikT4=n#kwUmu)XV_# z{+bPHMW#*=+@o?}2B?Jtg#Ud&c)e!1<_(a!4*=T_07u|#f3qI{P}3fO(@XMOz*M0J o)I#`I9Ypb0UTlfN*-1Y58=ppMf$H66F#rGn07*qoM6N<$f@g=|7ytkO literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod_open.png b/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod_open.png new file mode 100644 index 0000000000000000000000000000000000000000..df01ee3aa2e9066dd87ff5a6e2d76abb9df08df9 GIT binary patch literal 1764 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D26;(DK~#8N?V8VP zT}2efZ<_wFrZ2XkEkr9;Qz%AgDS~EEXjMcI{R_Hq;mVzB7t*?L?M_^{5R!kOxDin( zbP+`;QVbLmZLr$V6kbhgYk!28&*Xkz&zsELcYnOx+fqMpxN~RD{5WUM%$rF8S@`LH@M?^vJimt=3;oS1d0--Bk}%H%}jFc44-p*HWzB zznzSak0YX}u%H2;*O*vg#4yv1{57Pel^3YY$;x~fM zfddCz`pT6nuAISX&>9eEpcvvi06hjBasYYM^&OC>kI?wsO-jth&Jv)qqzDWE!2pT! zd@z9aPo6xP<~)Er%B+#1NFP~*Z0vZ>X5vA_Vs%30Suk5N9$8viN@iwex*~w}JUl$y zXkS7!^yXTvC-#n-WW?T#_}BK?lhAcb<4MDwa^WBnxH& z$s*LI#1bl(WI18OQ(*qfuR6xV=eL*LHAK}Vzy=D_)6<)_1U}f=a@Vi_y_Nj2x{^Hi z{(J6T{d655R=)XegYo|Q0lS8NZ{JOGH*)vp4R_tTa<7yF?hkHr<=c1dcGnQk@7dmI zH?+wy^S%=X-+IH{)6W)8L+TVzKrv=~h{FfhJNB>rq--D9fGsi}WN+srNCF|85P7NB z`YZ~aPEJlHXV0E>r#aFHY4S*GBKie3U<)?MKG{oo*CuEk(GUF4#nAl|A37O-`L$pg z9ZOdD7r{4N1fK#ZDNOQ40U>$m@?6gl-Fxq6cfG#ts7oWHL1jL+P1{E=>|W&?E~4jv zB2HjXh)wI>pFtT8S8uhPfOUjWUB6A6j*-WBh!#NXlxQ1|?Z8$?FE&~NGWOozzd7A) zPrcB|yEgq<=e5{AIkMUh>Ev}lGy=dz!CE@a?MCHvXr&<%PnYnMXi*fG%|))TX4Dae3(J02#>PB{s7$CtwIdNb9o}V6?&?NXro*ebo=O z9W$OWGS(~|OXUa1z>nR6o?VQ|be`8}i>7dd&p-uguJL zPG9zH!K|_w+D%ZKpV0Z9qxp~H>rQYP9!1CH)3*o+p*Jys;q2~wKv^fq=*4RbPN1kGeB;Yf$N_#7 zJWQ0Cec04J;8CEk1NspK3j6Cp;slJ|J9;p^TYC{&OUn^OsWJ{I zN_u$D)TJnYc5}SL$hF?)x4|g7a+Z? zSkU3CuzoSJue`Cgv--|Ur3fekA3rga!CN7Zvbw3&0T@cCGixEC44pcu>;S?!FQJ+D z1)aPU={rUx2e9^HYcvG93>qUt651PL6zw}k?R&t96DK-GvN7sICV7RKdv+)1&Yg2*ta<*=1NzU-{QSII2EEPz{iKmS zAjTuP2NWUpS>2LHr=M)P1N6Ak&Tqlkkim6@KQy)p%1B95)b0RgTx;Ea)YRrzH?=q* zwhXfJ>Ii>mYzf#Mzlq&nH0A)#16l$)8#F;94$xY+?*dJ%f2j2wZ@&=vYhQVFu77B5 z37r2SO?9X1rZERREHw8NIR2{J{hh3(o1!rXX!qCCpebtI1i}AQ4m<&x*Z|@GJs`b4 zwmkL@sC^FryAME9>mM4802$sSjYI$t1!>aJ#Ox