From 252f0be372cc6c96da1b50d56448ff8a15ed621d Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sun, 21 May 2023 06:09:31 -0400 Subject: [PATCH] Telepad revival (#16664) --- Content.Client/Cargo/CargoTelepadComponent.cs | 10 --- .../Cargo/Systems/CargoSystem.Telepad.cs | 33 +++++---- .../Cargo/Components/CargoTelepadComponent.cs | 40 ----------- .../Cargo/Systems/CargoSystem.Telepad.cs | 66 ++++++++++++------ .../Components/SharedCargoTelepadComponent.cs | 56 ++++++++++++++- .../en-US/cargo/cargo-console-component.ftl | 2 + .../Locale/en-US/research/technologies.ftl | 2 +- .../Circuitboards/Machine/production.yml | 15 ++++ .../Machines/Computers/computers.yml | 9 +++ .../Entities/Structures/Machines/lathe.yml | 1 + .../{cargo_console.yml => cargo_telepad.yml} | 30 +++----- .../Prototypes/Recipes/Lathes/electronics.yml | 9 +++ .../Prototypes/Research/civilianservices.yml | 48 ++++++++----- .../Structures/cargo_telepad.rsi/display.png | Bin 0 -> 653 bytes .../Structures/cargo_telepad.rsi/meta.json | 3 + 15 files changed, 196 insertions(+), 128 deletions(-) delete mode 100644 Content.Client/Cargo/CargoTelepadComponent.cs delete mode 100644 Content.Server/Cargo/Components/CargoTelepadComponent.cs rename Resources/Prototypes/Entities/Structures/{cargo_console.yml => cargo_telepad.yml} (62%) create mode 100644 Resources/Textures/Structures/cargo_telepad.rsi/display.png diff --git a/Content.Client/Cargo/CargoTelepadComponent.cs b/Content.Client/Cargo/CargoTelepadComponent.cs deleted file mode 100644 index 884718f783..0000000000 --- a/Content.Client/Cargo/CargoTelepadComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Content.Shared.Cargo.Components; -using Robust.Shared.GameObjects; - -namespace Content.Client.Cargo; - -[RegisterComponent] -public sealed class CargoTelepadComponent : SharedCargoTelepadComponent -{ - -} diff --git a/Content.Client/Cargo/Systems/CargoSystem.Telepad.cs b/Content.Client/Cargo/Systems/CargoSystem.Telepad.cs index 6bc0f88007..50d079737d 100644 --- a/Content.Client/Cargo/Systems/CargoSystem.Telepad.cs +++ b/Content.Client/Cargo/Systems/CargoSystem.Telepad.cs @@ -1,4 +1,6 @@ using Content.Shared.Cargo; +using Content.Shared.Cargo.Components; +using JetBrains.Annotations; using Robust.Client.Animations; using Robust.Client.GameObjects; using Robust.Client.Graphics; @@ -52,47 +54,48 @@ public sealed partial class CargoSystem private void OnCargoAppChange(EntityUid uid, CargoTelepadComponent component, ref AppearanceChangeEvent args) { - OnChangeData(args.Component, args.Sprite); + OnChangeData(uid, args.Sprite); } private void OnCargoAnimComplete(EntityUid uid, CargoTelepadComponent component, AnimationCompletedEvent args) { - if (!TryComp(uid, out var appearance)) return; - - OnChangeData(appearance); + OnChangeData(uid); } - private void OnChangeData(AppearanceComponent component, SpriteComponent? sprite = null) + private void OnChangeData(EntityUid uid, SpriteComponent? sprite = null) { - if (!Resolve(component.Owner, ref sprite)) + if (!Resolve(uid, ref sprite)) return; - _appearance.TryGetData(component.Owner, CargoTelepadVisuals.State, out var state); + _appearance.TryGetData(uid, CargoTelepadVisuals.State, out var state); AnimationPlayerComponent? player = null; switch (state) { case CargoTelepadState.Teleporting: - if (_player.HasRunningAnimation(component.Owner, TelepadBeamKey)) return; - _player.Stop(component.Owner, player, TelepadIdleKey); - _player.Play(component.Owner, player, CargoTelepadBeamAnimation, TelepadBeamKey); + if (_player.HasRunningAnimation(uid, TelepadBeamKey)) + return; + _player.Stop(uid, player, TelepadIdleKey); + _player.Play(uid, player, CargoTelepadBeamAnimation, TelepadBeamKey); break; case CargoTelepadState.Unpowered: sprite.LayerSetVisible(CargoTelepadLayers.Beam, false); - _player.Stop(component.Owner, player, TelepadBeamKey); - _player.Stop(component.Owner, player, TelepadIdleKey); + _player.Stop(uid, player, TelepadBeamKey); + _player.Stop(uid, player, TelepadIdleKey); break; default: sprite.LayerSetVisible(CargoTelepadLayers.Beam, true); - if (_player.HasRunningAnimation(component.Owner, player, TelepadIdleKey) || - _player.HasRunningAnimation(component.Owner, player, TelepadBeamKey)) return; + if (_player.HasRunningAnimation(uid, player, TelepadIdleKey) || + _player.HasRunningAnimation(uid, player, TelepadBeamKey)) + return; - _player.Play(component.Owner, player, CargoTelepadIdleAnimation, TelepadIdleKey); + _player.Play(uid, player, CargoTelepadIdleAnimation, TelepadIdleKey); break; } } + [UsedImplicitly] private enum CargoTelepadLayers : byte { Base = 0, diff --git a/Content.Server/Cargo/Components/CargoTelepadComponent.cs b/Content.Server/Cargo/Components/CargoTelepadComponent.cs deleted file mode 100644 index add83d0c93..0000000000 --- a/Content.Server/Cargo/Components/CargoTelepadComponent.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Content.Server.Cargo.Systems; -using Content.Shared.Cargo; -using Content.Shared.Cargo.Components; -using Content.Shared.MachineLinking; -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Server.Cargo.Components -{ - /// - /// Handles teleporting in requested cargo after the specified delay. - /// - [RegisterComponent, Access(typeof(CargoSystem))] - public sealed class CargoTelepadComponent : SharedCargoTelepadComponent - { - [DataField("delay")] - public float Delay = 45f; - - /// - /// How much time we've accumulated until next teleport. - /// - [DataField("accumulator")] - public float Accumulator = 0f; - - [ViewVariables] - public CargoTelepadState CurrentState = CargoTelepadState.Unpowered; - - [DataField("teleportSound")] public SoundSpecifier TeleportSound = new SoundPathSpecifier("/Audio/Machines/phasein.ogg"); - - /// - /// The paper-type prototype to spawn with the order information. - /// - [DataField("printerOutput", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string PrinterOutput = "PaperCargoInvoice"; - - [DataField("receiverPort", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string ReceiverPort = "OrderReceiver"; - } -} diff --git a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs index e1744c3e9a..8b30ee4583 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs @@ -1,13 +1,12 @@ -using Content.Server.Cargo.Systems; using Content.Server.Cargo.Components; -using Content.Server.Labels.Components; +using Content.Server.Construction; using Content.Server.Paper; using Content.Server.Power.Components; using Content.Shared.Cargo; -using Content.Shared.Cargo.Prototypes; +using Content.Shared.Cargo.Components; +using Content.Shared.DeviceLinking; using Robust.Shared.Audio; -using Robust.Shared.Collections; -using Robust.Shared.Player; +using Robust.Shared.Utility; namespace Content.Server.Cargo.Systems; @@ -19,22 +18,32 @@ public sealed partial class CargoSystem private void InitializeTelepad() { SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnTelepadPowerChange); // Shouldn't need re-anchored event SubscribeLocalEvent(OnTelepadAnchorChange); } - private void UpdateTelepad(float frameTime) { - foreach (var comp in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) { // Don't EntityQuery for it as it's not required. - TryComp(comp.Owner, out var appearance); + TryComp(uid, out var appearance); if (comp.CurrentState == CargoTelepadState.Unpowered) { comp.CurrentState = CargoTelepadState.Idle; - _appearance.SetData(comp.Owner, CargoTelepadVisuals.State, CargoTelepadState.Idle, appearance); + _appearance.SetData(uid, CargoTelepadVisuals.State, CargoTelepadState.Idle, appearance); + comp.Accumulator = comp.Delay; + continue; + } + + if (!TryComp(uid, out var sinkComponent) || + sinkComponent.LinkedSources.FirstOrNull() is not { } console || + !HasComp(console)) + { comp.Accumulator = comp.Delay; continue; } @@ -45,11 +54,11 @@ public sealed partial class CargoSystem if (comp.Accumulator > 0f) { comp.CurrentState = CargoTelepadState.Idle; - _appearance.SetData(comp.Owner, CargoTelepadVisuals.State, CargoTelepadState.Idle, appearance); + _appearance.SetData(uid, CargoTelepadVisuals.State, CargoTelepadState.Idle, appearance); continue; } - var station = _station.GetOwningStation(comp.Owner); + var station = _station.GetOwningStation(console); if (!TryComp(station, out var orderDatabase) || orderDatabase.Orders.Count == 0) @@ -58,14 +67,14 @@ public sealed partial class CargoSystem continue; } - var xform = Transform(comp.Owner); - if(FulfillOrder(orderDatabase, xform.Coordinates,comp.PrinterOutput)) + var xform = Transform(uid); + if (FulfillOrder(orderDatabase, xform.Coordinates,comp.PrinterOutput)) { - _audio.PlayPvs(_audio.GetSound(comp.TeleportSound), comp.Owner, AudioParams.Default.WithVolume(-8f)); + _audio.PlayPvs(_audio.GetSound(comp.TeleportSound), uid, AudioParams.Default.WithVolume(-8f)); UpdateOrders(orderDatabase); comp.CurrentState = CargoTelepadState.Teleporting; - _appearance.SetData(comp.Owner, CargoTelepadVisuals.State, CargoTelepadState.Teleporting, appearance); + _appearance.SetData(uid, CargoTelepadVisuals.State, CargoTelepadState.Teleporting, appearance); } comp.Accumulator += comp.Delay; @@ -77,29 +86,42 @@ public sealed partial class CargoSystem _linker.EnsureSinkPorts(uid, telepad.ReceiverPort); } - private void SetEnabled(CargoTelepadComponent component, ApcPowerReceiverComponent? receiver = null, + private void OnRefreshParts(EntityUid uid, CargoTelepadComponent component, RefreshPartsEvent args) + { + var rating = args.PartRatings[component.MachinePartTeleportDelay] - 1; + component.Delay = component.BaseDelay * MathF.Pow(component.PartRatingTeleportDelay, rating); + } + + private void OnUpgradeExamine(EntityUid uid, CargoTelepadComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("cargo-telepad-delay-upgrade", component.Delay / component.BaseDelay); + } + + private void SetEnabled(EntityUid uid, CargoTelepadComponent component, ApcPowerReceiverComponent? receiver = null, TransformComponent? xform = null) { // False due to AllCompsOneEntity test where they may not have the powerreceiver. - if (!Resolve(component.Owner, ref receiver, ref xform, false)) return; + if (!Resolve(uid, ref receiver, ref xform, false)) + return; var disabled = !receiver.Powered || !xform.Anchored; // Setting idle state should be handled by Update(); - if (disabled) return; + if (disabled) + return; - TryComp(component.Owner, out var appearance); + TryComp(uid, out var appearance); component.CurrentState = CargoTelepadState.Unpowered; - _appearance.SetData(component.Owner, CargoTelepadVisuals.State, CargoTelepadState.Unpowered, appearance); + _appearance.SetData(uid, CargoTelepadVisuals.State, CargoTelepadState.Unpowered, appearance); } private void OnTelepadPowerChange(EntityUid uid, CargoTelepadComponent component, ref PowerChangedEvent args) { - SetEnabled(component); + SetEnabled(uid, component); } private void OnTelepadAnchorChange(EntityUid uid, CargoTelepadComponent component, ref AnchorStateChangedEvent args) { - SetEnabled(component); + SetEnabled(uid, component); } } diff --git a/Content.Shared/Cargo/Components/SharedCargoTelepadComponent.cs b/Content.Shared/Cargo/Components/SharedCargoTelepadComponent.cs index 953c58396a..b95c9266b8 100644 --- a/Content.Shared/Cargo/Components/SharedCargoTelepadComponent.cs +++ b/Content.Shared/Cargo/Components/SharedCargoTelepadComponent.cs @@ -1,6 +1,60 @@ +using Content.Shared.Construction.Prototypes; +using Content.Shared.MachineLinking; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + namespace Content.Shared.Cargo.Components; -public abstract class SharedCargoTelepadComponent : Component +/// +/// Handles teleporting in requested cargo after the specified delay. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedCargoSystem))] +public sealed class CargoTelepadComponent : Component { + /// + /// The base amount of time it takes to teleport from the telepad + /// + [DataField("baseDelay"), ViewVariables(VVAccess.ReadWrite)] + public float BaseDelay = 45f; + /// + /// The actual amount of time it takes to teleport from the telepad + /// + [DataField("delay"), ViewVariables(VVAccess.ReadWrite)] + public float Delay = 45f; + + /// + /// The machine part that affects + /// + [DataField("machinePartTeleportDelay", customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] + public string MachinePartTeleportDelay = "Capacitor"; + + /// + /// A multiplier applied to for each level of + /// + [DataField("partRatingTeleportDelay"), ViewVariables(VVAccess.ReadWrite)] + public float PartRatingTeleportDelay = 0.8f; + + /// + /// How much time we've accumulated until next teleport. + /// + [DataField("accumulator"), ViewVariables(VVAccess.ReadWrite)] + public float Accumulator; + + [DataField("currentState")] + public CargoTelepadState CurrentState = CargoTelepadState.Unpowered; + + [DataField("teleportSound")] + public SoundSpecifier TeleportSound = new SoundPathSpecifier("/Audio/Machines/phasein.ogg"); + + /// + /// The paper-type prototype to spawn with the order information. + /// + [DataField("printerOutput", customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] + public string PrinterOutput = "PaperCargoInvoice"; + + [DataField("receiverPort", customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] + public string ReceiverPort = "OrderReceiver"; } diff --git a/Resources/Locale/en-US/cargo/cargo-console-component.ftl b/Resources/Locale/en-US/cargo/cargo-console-component.ftl index 5b41e18443..1165fdfb52 100644 --- a/Resources/Locale/en-US/cargo/cargo-console-component.ftl +++ b/Resources/Locale/en-US/cargo/cargo-console-component.ftl @@ -43,3 +43,5 @@ cargo-shuttle-console-station-unknown = Unknown cargo-shuttle-console-shuttle-not-found = Not found cargo-shuttle-console-organics = Detected organic lifeforms on the shuttle cargo-no-shuttle = No cargo shuttle found! + +cargo-telepad-delay-upgrade = Teleport delay \ No newline at end of file diff --git a/Resources/Locale/en-US/research/technologies.ftl b/Resources/Locale/en-US/research/technologies.ftl index 7edf72b82e..f64a1c2774 100644 --- a/Resources/Locale/en-US/research/technologies.ftl +++ b/Resources/Locale/en-US/research/technologies.ftl @@ -50,4 +50,4 @@ research-technology-advanced-cleaning = Advanced Cleaning research-technology-meat-manipulation = Meat Manipulation research-technology-honk-mech = H.O.N.K. Mech research-technology-advanced-spray = Advanced Spray - +research-technology-bluespace-cargo-transport = Bluespace Cargo Transport diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 1384198bc7..2d45f0a627 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -775,6 +775,21 @@ DefaultPrototype: Beaker ExamineName: Glass Beaker +- type: entity + id: CargoTelepadMachineCircuitboard + parent: BaseMachineCircuitboard + name: cargo telepad machine board + description: A machine printed circuit board for a cargo telepad. + components: + - type: Sprite + state: supply + - type: MachineBoard + prototype: CargoTelepad + requirements: + Capacitor: 2 + materialRequirements: + Steel: 5 + - type: entity id: SodaDispenserMachineCircuitboard parent: BaseMachineCircuitboard diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml index b1edc2c24e..0ea89d12dd 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml @@ -673,6 +673,15 @@ color: "#b89f25" - type: AccessReader access: [["Cargo"]] + - type: DeviceNetwork + deviceNetId: Wireless + receiveFrequencyId: BasicDevice + - type: WirelessNetworkConnection + range: 200 + - type: DeviceLinkSource + range: 200 + ports: + - OrderSender - type: entity parent: BaseComputer diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 7c58249ef0..f27b88b2cb 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -308,6 +308,7 @@ - StasisBedMachineCircuitboard - MaterialReclaimerMachineCircuitboard - OreProcessorMachineCircuitboard + - CargoTelepadMachineCircuitboard - RipleyCentralElectronics - RipleyPeripheralsElectronics - HonkerCentralElectronics diff --git a/Resources/Prototypes/Entities/Structures/cargo_console.yml b/Resources/Prototypes/Entities/Structures/cargo_telepad.yml similarity index 62% rename from Resources/Prototypes/Entities/Structures/cargo_console.yml rename to Resources/Prototypes/Entities/Structures/cargo_telepad.yml index a920b45052..d395235a53 100644 --- a/Resources/Prototypes/Entities/Structures/cargo_console.yml +++ b/Resources/Prototypes/Entities/Structures/cargo_telepad.yml @@ -1,7 +1,8 @@ - type: entity id: CargoTelepad - parent: BaseStructureDynamic + parent: [ BaseMachinePowered, ConstructibleMachine ] name: cargo telepad + description: Beam in the pizzas and dig in. components: - type: InteractionOutline - type: Physics @@ -20,15 +21,14 @@ mask: - MachineMask - type: Sprite - netsync: false sprite: Structures/cargo_telepad.rsi drawdepth: FloorObjects layers: - - state: offline - map: [ "enum.CargoTelepadLayers.Base" ] - - state: idle - map: [ "enum.CargoTelepadLayers.Beam" ] - shader: unshaded + - state: offline + map: [ "enum.CargoTelepadLayers.Base" ] + - state: idle + map: [ "enum.CargoTelepadLayers.Beam" ] + shader: unshaded - type: Damageable damageContainer: Inorganic damageModifierSet: Metallic @@ -40,22 +40,10 @@ - type: DeviceLinkSink ports: - OrderReceiver - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 75 - behaviors: - - !type:SpawnEntitiesBehavior - spawn: - SheetSteel1: - min: 1 - max: 1 - - !type:DoActsBehavior - acts: [ "Destruction" ] - type: ApcPowerReceiver powerLoad: 1000 # TODO if we keep this make it spike power draw when teleporting - - type: ExtensionCableReceiver - type: CargoTelepad + - type: Machine + board: CargoTelepadMachineCircuitboard - type: Appearance - type: CollideOnAnchor diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 7669d2f267..b40e40e78d 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -563,6 +563,15 @@ Steel: 100 Glass: 900 +- type: latheRecipe + id: CargoTelepadMachineCircuitboard + result: CargoTelepadMachineCircuitboard + completetime: 4 + materials: + Steel: 100 + Glass: 900 + Gold: 100 + - type: latheRecipe id: SodaDispenserMachineCircuitboard result: SodaDispenserMachineCircuitboard diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index 8dd40a4a9e..b39b85b26d 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -74,6 +74,20 @@ - SurveillanceWirelessCameraMonitorCircuitboard - TelecomServerCircuitboard +- type: technology + id: AdvancedEntertainment + name: research-technology-advanced-entertainment + icon: + sprite: Structures/Machines/computers.rsi + state: television + discipline: CivilianServices + tier: 1 + cost: 7500 + recipeUnlocks: + - ComputerTelevisionCircuitboard + - SynthesizerInstrument + - DawInstrumentMachineCircuitboard + # Tier 2 - type: technology @@ -123,22 +137,6 @@ - HonkerTargetingElectronics - MechEquipmentHorn -- type: technology - id: AdvancedEntertainment - name: research-technology-advanced-entertainment - icon: - sprite: Structures/Machines/computers.rsi - state: television - discipline: CivilianServices - tier: 2 - cost: 7500 - recipeUnlocks: - - ComputerTelevisionCircuitboard - - SynthesizerInstrument - - DawInstrumentMachineCircuitboard - -# Tier 3 - - type: technology id: AdvancedSpray name: research-technology-advanced-spray @@ -146,8 +144,22 @@ sprite: Objects/Weapons/Guns/Basic/spraynozzle.rsi state: icon discipline: CivilianServices - tier: 3 - cost: 15000 + tier: 2 + cost: 10000 recipeUnlocks: - WeaponSprayNozzle - ClothingBackpackWaterTank + +# Tier 3 + +- type: technology + id: BluespaceCargoTransport + name: research-technology-bluespace-cargo-transport + icon: + sprite: Structures/cargo_telepad.rsi + state: display + discipline: CivilianServices + tier: 3 + cost: 15000 + recipeUnlocks: + - CargoTelepadMachineCircuitboard diff --git a/Resources/Textures/Structures/cargo_telepad.rsi/display.png b/Resources/Textures/Structures/cargo_telepad.rsi/display.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1de6592f60ad886847d091a2907db0f5ae38e0 GIT binary patch literal 653 zcmV;80&@L{P)Px%M@d9MR9J=Wl)q~eVHn3hS6zh|4%0}6#EU~IDX&Qr0zm?yW6(PIAH)vgpj)@% zWSw*n2g%@45f!ZBRN^2d5Rz2RO3@)dZV)wclwt?R*CE{XF1a+A*zG>c<$3Zx&+~o1 zPcGo&8H>D+edAQVDCL?WQ~Bc5E=)u~ z)nxMq^0+lP1&?CLwt%WhZGMiO5AT%0yfdy`Ym+*!u=8EA^jdTE7+gmxUzF{=FP>|% z69H9|(a0J8^g4W9IYhZD73bik%LziEb5v_}a@h>K?Vmh|zU7W_g#~Ta&i8u1sBC|B z36X1xyuN#tR@cDzcIXmf{|FDvwn9Y6jpA=WaSaAs!>hGAmohn0VTFZLv#xwDo3U#u z+tvy?tg4%ox?;!$S0IFt@mQ2qbb)ypt<_0n3na1yR}Zh-gU4F{N2{>J zIB#I(%4yxUx6}|L&slxEhQpYDLaU*dE2V~@oYw8(gXfO3-N{G?oN+Fj0U*7&2*ATf zkB4e*-?|AvquB(YTC2OhALYPM(i-k87!+g;b22E(tA3P-e?|x)g%I*-`H8eXPugo@ nMb4rB?Pk-6n3S3EM^2W%a0C?B*BJl900000NkvXXu0mjfa%DNd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/cargo_telepad.rsi/meta.json b/Resources/Textures/Structures/cargo_telepad.rsi/meta.json index 78aca01881..037bb438af 100644 --- a/Resources/Textures/Structures/cargo_telepad.rsi/meta.json +++ b/Resources/Textures/Structures/cargo_telepad.rsi/meta.json @@ -32,6 +32,9 @@ }, { "name": "offline" + }, + { + "name": "display" } ] }