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#&L8VN&{>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