From 0b34c138d9cce7b46e10f1132a6dd64fb7556078 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Sun, 22 Sep 2024 01:14:36 +0300 Subject: [PATCH 01/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl | 2 +- Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl | 2 +- .../ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl | 2 +- .../ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl | 2 +- .../ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl b/Resources/Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl index e04086221b..5f37557ba1 100644 --- a/Resources/Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl +++ b/Resources/Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl @@ -19,7 +19,7 @@ station-beacon-reporter = Репортёр station-beacon-camera-servers = Камеры station-beacon-boxing-ring = Боксёрская station-beacon-park = Парк -station-beacon-corpsman = Полевой Врач +station-beacon-corpsman = Патоллогоанатом station-beacon-justice = Судебная station-beacon-chiefjustice = Верховный судья station-beacon-prosecutor = Прокурор diff --git a/Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl b/Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl index 6b4be3a2ba..bb7bd083b1 100644 --- a/Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl +++ b/Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl @@ -4,4 +4,4 @@ id-card-access-level-chief-justice = Верховный судья id-card-access-level-cj = Верховный судья id-card-access-level-prosecutor = Прокурор id-card-access-level-justice = Суд -id-card-access-level-corpsman = Полевой Врач +id-card-access-level-corpsman = Патоллогоанатом diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl index a66d690982..7a92565713 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl @@ -2,5 +2,5 @@ ent-ClothingBeltCeremonial = церемониальный пояс .desc = Бело-голубой пояс с множеством карманов и подсумков. ent-ClothingBeltSuspendersBlack = черные подтяжки .desc = Чтобы ты поддерживал свои штаны. -ent-ClothingBeltCorpsmanWebbing = РПС полевого врача +ent-ClothingBeltCorpsmanWebbing = РПС патоллогоанатома .desc = Комплект защитных лент с синими вставками. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl index a4f8ddbd0a..c6fc0418e4 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl @@ -31,7 +31,7 @@ ent-ClothingHeadHatDirCap = фуражка директора .desc = Зеленая фуражка с эмблемой директорского ранга, принадлежащая высокопоставленному члену Центрального командования. Кто бы это ни был, они занимаются важными делами. ent-ClothingHeadHatBeretLogi = берет снабжения .desc = Для интеллектуального и усердного бухгалтера. Точно не знак революции! -ent-ClothingHeadHatBeretCorpsman = берет полевого врача +ent-ClothingHeadHatBeretCorpsman = берет патоллогоанатома .desc = Для стильных боевых спасателей и медицинских специалистов. ent-ClothingHeadHatCJToque = шляпа верховного судьи .desc = Стандартная судейская шляпа. Парики в любом случае старомодны. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl index 592fc713f1..73b91b0738 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl @@ -1,4 +1,4 @@ -ent-CorpsmanPDA = КПК полевого врача +ent-CorpsmanPDA = КПК патоллогоанатома .desc = Стерильно и безопасно. Имеет встроенный анализатор здоровья. ent-ChiefJusticePDA = КПК верховного судьи .desc = Носитель этого КПК имеет истинную власть на этой станции. From 49d128c3ae9634e0848c04bfbf2fbe988ed4ba46 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 21 Sep 2024 18:46:49 -0400 Subject: [PATCH 02/44] Reimplement Part Upgrading (#917) # Description By extremely popular demand(Both internally, and from our downstreams), this PR reimplements Part Upgrading. Since some of the systems that this PR touches were substantially changed since the removal of Parts, I had to do a lot of very in depth by-hand edits of individual systems. Shockingly, the only one that really proved any trouble was Cloning System, so I'm genuinely surprised wizden didn't substantially touch any of these codes since removing parts.. # Changelog :cl: - add: Part Upgrading has returned! --------- Signed-off-by: VMSolidus Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- .../Interaction/MachineConstruction.cs | 1 - .../Interaction/InteractionTest.Constants.cs | 5 +- .../Anomaly/AnomalySystem.Vessel.cs | 7 + .../Binary/Components/GasRecyclerComponent.cs | 25 +- .../Binary/EntitySystems/GasRecyclerSystem.cs | 18 ++ .../Portable/PortableScrubberComponent.cs | 46 +++- .../Atmos/Portable/PortableScrubberSystem.cs | 18 ++ Content.Server/Bed/BedSystem.cs | 19 +- .../Bed/Components/StasisBedComponent.cs | 11 +- .../Components/SeedExtractorComponent.cs | 30 ++- .../Botany/Systems/SeedExtractorSystem.cs | 20 +- .../Cargo/Systems/CargoSystem.Telepad.cs | 15 ++ .../Components/SolutionHeaterComponent.cs | 22 +- .../EntitySystems/SolutionHeaterSystem.cs | 15 ++ Content.Server/Cloning/CloningSystem.cs | 20 ++ .../ConstructionSystem.Machine.cs | 5 +- .../Construction/PartExchangerSystem.cs | 3 +- .../Gravity/GravityGeneratorComponent.cs | 3 + .../Gravity/GravityGeneratorSystem.cs | 8 + .../Kitchen/Components/MicrowaveComponent.cs | 60 ++--- .../Components/ReagentGrinderComponent.cs | 21 +- .../Kitchen/EntitySystems/MicrowaveSystem.cs | 13 ++ .../EntitySystems/ReagentGrinderSystem.cs | 21 ++ .../Materials/MaterialReclaimerSystem.cs | 16 ++ .../BiomassReclaimerComponent.cs | 93 ++++++-- .../BiomassReclaimerSystem.cs | 23 ++ .../Components/MedicalScannerComponent.cs | 12 +- .../Medical/MedicalScannerSystem.cs | 15 ++ .../Components/FatExtractorComponent.cs | 65 ++++-- .../EntitySystems/FatExtractorSystem.cs | 15 ++ .../Components/UpgradeBatteryComponent.cs | 28 +++ .../Components/UpgradePowerDrawComponent.cs | 41 ++++ .../UpgradePowerSupplierComponent.cs | 36 +++ .../UpgradePowerSupplyRampingComponent.cs | 36 +++ .../EntitySystems/UpgradeBatterySystem.cs | 39 ++++ .../Power/EntitySystems/UpgradePowerSystem.cs | 151 ++++++++++++ .../Power/Generator/GeneratorSystem.cs | 7 +- .../Shuttles/Components/ThrusterComponent.cs | 28 ++- .../Shuttles/Systems/ThrusterSystem.cs | 22 ++ .../EntitySystems/EmitterSystem.cs | 17 ++ .../Components/TraversalDistorterComponent.cs | 17 +- .../Systems/TraversalDistorterSystem.cs | 20 +- .../XenoArtifacts/ArtifactSystem.cs | 1 + .../Components/SharedCargoTelepadComponent.cs | 35 ++- Content.Shared/Cloning/CloningPodComponent.cs | 25 ++ .../Construction/MachinePartSystem.cs | 15 ++ .../Materials/MaterialReclaimerComponent.cs | 81 ++++--- .../Components/SharedEmitterComponent.cs | 101 +++++--- Resources/Locale/en-US/anomaly/anomaly.ftl | 1 + .../en-US/atmos/gas-recycler-system.ftl | 3 + .../Locale/en-US/atmos/portable-scrubber.ftl | 3 + .../components/seed-extractor-component.ftl | 2 + .../en-US/cargo/cargo-console-component.ftl | 2 + .../components/solution-heater-component.ftl | 1 + .../components/machine-part-component.ftl | 2 + .../components/microwave-component.ftl | 1 + .../components/reagent-grinder-component.ftl | 3 + Resources/Locale/en-US/machine/machine.ftl | 5 + .../Locale/en-US/materials/materials.ftl | 3 + .../biomass-reclaimer-component.ftl | 3 + .../components/cloning-pod-component.ftl | 2 + .../components/medical-scanner-component.ftl | 2 + .../components/stasis-bed-component.ftl | 1 + .../nutrition/components/fat-extractor.ftl | 2 + Resources/Locale/en-US/shuttles/thruster.ftl | 2 + .../components/emitter-component.ftl | 3 + .../xenoarchaeology/traversal-distorter.ftl | 2 + Resources/Migrations/migration.yml | 22 -- .../Markers/Spawners/Random/salvage.yml | 93 +++++++- .../Entities/Objects/Misc/machine_parts.yml | 219 ++++++++++++++++++ .../Objects/Specific/Research/rped.yml | 3 + .../Entities/Structures/Dispensers/chem.yml | 3 + .../Structures/Machines/anomaly_equipment.yml | 4 +- .../Structures/Machines/anomaly_sync.yml | 5 +- .../Structures/Machines/artifact_analyzer.yml | 3 + .../Entities/Structures/Machines/lathe.yml | 6 + .../Structures/Machines/seed_extractor.yml | 3 + .../Power/Generation/portable_generator.yml | 6 + .../Entities/Structures/Power/smes.yml | 7 +- .../Entities/Structures/Power/substation.yml | 7 +- .../Structures/Shuttles/thrusters.yml | 5 + Resources/Prototypes/Guidebook/science.yml | 6 + Resources/Prototypes/Recipes/Lathes/Parts.yml | 60 +++++ .../Prototypes/Research/experimental.yml | 28 +++ .../XenoArch/Effects/normal_effects.yml | 18 ++ .../Guidebook/Science/MachineUpgrading.xml | 38 +++ 86 files changed, 1704 insertions(+), 220 deletions(-) create mode 100644 Content.Server/Power/Components/UpgradeBatteryComponent.cs create mode 100644 Content.Server/Power/Components/UpgradePowerDrawComponent.cs create mode 100644 Content.Server/Power/Components/UpgradePowerSupplierComponent.cs create mode 100644 Content.Server/Power/Components/UpgradePowerSupplyRampingComponent.cs create mode 100644 Content.Server/Power/EntitySystems/UpgradeBatterySystem.cs create mode 100644 Content.Server/Power/EntitySystems/UpgradePowerSystem.cs create mode 100644 Resources/Locale/en-US/chemistry/components/solution-heater-component.ftl create mode 100644 Resources/Locale/en-US/construction/components/machine-part-component.ftl create mode 100644 Resources/Locale/en-US/medical/components/stasis-bed-component.ftl create mode 100644 Resources/ServerInfo/Guidebook/Science/MachineUpgrading.xml diff --git a/Content.IntegrationTests/Tests/Construction/Interaction/MachineConstruction.cs b/Content.IntegrationTests/Tests/Construction/Interaction/MachineConstruction.cs index f52f820a4c..cd95a85f20 100644 --- a/Content.IntegrationTests/Tests/Construction/Interaction/MachineConstruction.cs +++ b/Content.IntegrationTests/Tests/Construction/Interaction/MachineConstruction.cs @@ -57,4 +57,3 @@ public async Task ChangeMachine() AssertPrototype("Autolathe"); } } - diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs index 11381fb8cc..a915e5d47d 100644 --- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs +++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs @@ -1,3 +1,4 @@ + namespace Content.IntegrationTests.Tests.Interaction; // This partial class contains various constant prototype IDs common to interaction tests. @@ -27,8 +28,6 @@ public abstract partial class InteractionTest // Parts protected const string Bin1 = "MatterBinStockPart"; - protected const string Cap1 = "CapacitorStockPart"; protected const string Manipulator1 = "MicroManipulatorStockPart"; - protected const string Battery1 = "PowerCellSmall"; - protected const string Battery4 = "PowerCellHyper"; } + diff --git a/Content.Server/Anomaly/AnomalySystem.Vessel.cs b/Content.Server/Anomaly/AnomalySystem.Vessel.cs index 35de5c1a64..9a6c99f820 100644 --- a/Content.Server/Anomaly/AnomalySystem.Vessel.cs +++ b/Content.Server/Anomaly/AnomalySystem.Vessel.cs @@ -1,4 +1,5 @@ using Content.Server.Anomaly.Components; +using Content.Server.Construction; using Content.Server.Power.EntitySystems; using Content.Shared.Anomaly; using Content.Shared.Anomaly.Components; @@ -20,6 +21,7 @@ private void InitializeVessel() { SubscribeLocalEvent(OnVesselShutdown); SubscribeLocalEvent(OnVesselMapInit); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnVesselInteractUsing); SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnVesselGetPointsPerSecond); @@ -65,6 +67,11 @@ private void OnVesselMapInit(EntityUid uid, AnomalyVesselComponent component, Ma UpdateVesselAppearance(uid, component); } + private void OnUpgradeExamine(EntityUid uid, AnomalyVesselComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("anomaly-vessel-component-upgrade-output", component.PointMultiplier); + } + private void OnVesselInteractUsing(EntityUid uid, AnomalyVesselComponent component, InteractUsingEvent args) { if (component.Anomaly != null || diff --git a/Content.Server/Atmos/Piping/Binary/Components/GasRecyclerComponent.cs b/Content.Server/Atmos/Piping/Binary/Components/GasRecyclerComponent.cs index e1eb0072b9..aa7e3e0b36 100644 --- a/Content.Server/Atmos/Piping/Binary/Components/GasRecyclerComponent.cs +++ b/Content.Server/Atmos/Piping/Binary/Components/GasRecyclerComponent.cs @@ -1,11 +1,12 @@ using Content.Shared.Atmos; +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Atmos.Piping.Binary.Components { [RegisterComponent] public sealed partial class GasRecyclerComponent : Component { - [ViewVariables(VVAccess.ReadOnly)] [DataField("reacting")] public Boolean Reacting { get; set; } = false; @@ -17,10 +18,28 @@ public sealed partial class GasRecyclerComponent : Component [DataField("outlet")] public string OutletName { get; set; } = "outlet"; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public float MinTemp = 300 + Atmospherics.T0C; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] + public float BaseMinTemp = 300 + Atmospherics.T0C; + + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartMinTemp = "Capacitor"; + + [DataField] + public float PartRatingMinTempMultiplier = 0.95f; + + [ViewVariables(VVAccess.ReadWrite)] public float MinPressure = 30 * Atmospherics.OneAtmosphere; + + [DataField] + public float BaseMinPressure = 30 * Atmospherics.OneAtmosphere; + + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartMinPressure = "Manipulator"; + + [DataField] + public float PartRatingMinPressureMultiplier = 0.8f; } } diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs index 3ebc509492..40b9d88846 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Components; +using Content.Server.Construction; using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; @@ -28,6 +29,8 @@ public override void Initialize() SubscribeLocalEvent(OnUpdate); SubscribeLocalEvent(OnDisabled); SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); } private void OnEnabled(EntityUid uid, GasRecyclerComponent comp, ref AtmosDeviceEnabledEvent args) @@ -116,5 +119,20 @@ private void UpdateAppearance(EntityUid uid, GasRecyclerComponent? comp = null) _appearance.SetData(uid, PumpVisuals.Enabled, comp.Reacting); } + + private void OnRefreshParts(EntityUid uid, GasRecyclerComponent component, RefreshPartsEvent args) + { + var ratingTemp = args.PartRatings[component.MachinePartMinTemp]; + var ratingPressure = args.PartRatings[component.MachinePartMinPressure]; + + component.MinTemp = component.BaseMinTemp * MathF.Pow(component.PartRatingMinTempMultiplier, ratingTemp - 1); + component.MinPressure = component.BaseMinPressure * MathF.Pow(component.PartRatingMinPressureMultiplier, ratingPressure - 1); + } + + private void OnUpgradeExamine(EntityUid uid, GasRecyclerComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("gas-recycler-upgrade-min-temp", component.MinTemp / component.BaseMinTemp); + args.AddPercentageUpgrade("gas-recycler-upgrade-min-pressure", component.MinPressure / component.BaseMinPressure); + } } } diff --git a/Content.Server/Atmos/Portable/PortableScrubberComponent.cs b/Content.Server/Atmos/Portable/PortableScrubberComponent.cs index ae9a5da963..fbe2d3f95a 100644 --- a/Content.Server/Atmos/Portable/PortableScrubberComponent.cs +++ b/Content.Server/Atmos/Portable/PortableScrubberComponent.cs @@ -1,4 +1,6 @@ using Content.Shared.Atmos; +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Atmos.Portable { @@ -37,13 +39,51 @@ public sealed partial class PortableScrubberComponent : Component /// /// Maximum internal pressure before it refuses to take more. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public float MaxPressure = 2500; /// - /// The speed at which gas is scrubbed from the environment. + /// The base amount of maximum internal pressure /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] + public float BaseMaxPressure = 2500; + + /// + /// The machine part that modifies the maximum internal pressure + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartMaxPressure = "MatterBin"; + + /// + /// How much the will affect the pressure. + /// The value will be multiplied by this amount for each increasing part tier. + /// + [DataField] + public float PartRatingMaxPressureModifier = 1.5f; + + /// + /// The speed at which gas is scrubbed from the environment. + /// + [ViewVariables(VVAccess.ReadWrite)] public float TransferRate = 800; + + /// + /// The base speed at which gas is scrubbed from the environment. + /// + [DataField] + public float BaseTransferRate = 800; + + /// + /// The machine part which modifies the speed of + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartTransferRate = "Manipulator"; + + /// + /// How much the will modify the rate. + /// The value will be multiplied by this amount for each increasing part tier. + /// + [DataField] + public float PartRatingTransferRateModifier = 1.4f; } } diff --git a/Content.Server/Atmos/Portable/PortableScrubberSystem.cs b/Content.Server/Atmos/Portable/PortableScrubberSystem.cs index f9043c091a..f657d713d2 100644 --- a/Content.Server/Atmos/Portable/PortableScrubberSystem.cs +++ b/Content.Server/Atmos/Portable/PortableScrubberSystem.cs @@ -12,6 +12,7 @@ using Content.Server.NodeContainer.NodeGroups; using Content.Server.Audio; using Content.Server.Administration.Logs; +using Content.Server.Construction; using Content.Server.NodeContainer.EntitySystems; using Content.Shared.Database; @@ -38,6 +39,8 @@ public override void Initialize() SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnDestroyed); SubscribeLocalEvent(OnScrubberAnalyzed); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); } private bool IsFull(PortableScrubberComponent component) @@ -156,5 +159,20 @@ private void OnScrubberAnalyzed(EntityUid uid, PortableScrubberComponent compone if (_nodeContainer.TryGetNode(uid, component.PortName, out PipeNode? port)) args.GasMixtures.Add(component.PortName, port.Air); } + + private void OnRefreshParts(EntityUid uid, PortableScrubberComponent component, RefreshPartsEvent args) + { + var pressureRating = args.PartRatings[component.MachinePartMaxPressure]; + var transferRating = args.PartRatings[component.MachinePartTransferRate]; + + component.MaxPressure = component.BaseMaxPressure * MathF.Pow(component.PartRatingMaxPressureModifier, pressureRating - 1); + component.TransferRate = component.BaseTransferRate * MathF.Pow(component.PartRatingTransferRateModifier, transferRating - 1); + } + + private void OnUpgradeExamine(EntityUid uid, PortableScrubberComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("portable-scrubber-component-upgrade-max-pressure", component.MaxPressure / component.BaseMaxPressure); + args.AddPercentageUpgrade("portable-scrubber-component-upgrade-transfer-rate", component.TransferRate / component.BaseTransferRate); + } } } diff --git a/Content.Server/Bed/BedSystem.cs b/Content.Server/Bed/BedSystem.cs index f1bd9482e5..976ef5139c 100644 --- a/Content.Server/Bed/BedSystem.cs +++ b/Content.Server/Bed/BedSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Bed.Components; using Content.Server.Bed.Sleep; using Content.Server.Body.Systems; +using Content.Server.Construction; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Bed; @@ -9,6 +10,7 @@ using Content.Shared.Body.Components; using Content.Shared.Buckle.Components; using Content.Shared.Damage; +using Content.Shared.Emag.Components; using Content.Shared.Emag.Systems; using Content.Shared.Mobs.Systems; using Robust.Shared.Timing; @@ -32,6 +34,8 @@ public override void Initialize() SubscribeLocalEvent(OnBuckleChange); SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnEmagged); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); } private void ManageUpdateList(EntityUid uid, HealOnBuckleComponent component, ref BuckleChangeEvent args) @@ -66,7 +70,7 @@ public override void Update(float frameTime) foreach (var healedEntity in strapComponent.BuckledEntities) { - if (_mobStateSystem.IsDead(healedEntity) + if (_mobStateSystem.IsDead(healedEntity) || HasComp(healedEntity)) continue; @@ -126,5 +130,18 @@ private void UpdateMetabolisms(EntityUid uid, StasisBedComponent component, bool RaiseLocalEvent(buckledEntity, ref metabolicEvent); } } + + private void OnRefreshParts(EntityUid uid, StasisBedComponent component, RefreshPartsEvent args) + { + var metabolismRating = args.PartRatings[component.MachinePartMetabolismModifier]; + component.Multiplier = component.BaseMultiplier * metabolismRating; // Linear scaling so it's not OP + if (HasComp(uid)) + component.Multiplier = 1f / component.Multiplier; + } + + private void OnUpgradeExamine(EntityUid uid, StasisBedComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("stasis-bed-component-upgrade-stasis", component.Multiplier / component.BaseMultiplier); + } } } diff --git a/Content.Server/Bed/Components/StasisBedComponent.cs b/Content.Server/Bed/Components/StasisBedComponent.cs index e2175d6e64..bb4096a2a5 100644 --- a/Content.Server/Bed/Components/StasisBedComponent.cs +++ b/Content.Server/Bed/Components/StasisBedComponent.cs @@ -1,12 +1,21 @@ +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + namespace Content.Server.Bed.Components { [RegisterComponent] public sealed partial class StasisBedComponent : Component { + [DataField] + public float BaseMultiplier = 10f; + /// - /// What the metabolic update rate will be multiplied by (higher = slower metabolism) + /// What the metabolic update rate will be multiplied by (higher = slower metabolism) /// [ViewVariables(VVAccess.ReadWrite)] public float Multiplier = 10f; + + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartMetabolismModifier = "Capacitor"; } } diff --git a/Content.Server/Botany/Components/SeedExtractorComponent.cs b/Content.Server/Botany/Components/SeedExtractorComponent.cs index ddb04f213d..d765e079ce 100644 --- a/Content.Server/Botany/Components/SeedExtractorComponent.cs +++ b/Content.Server/Botany/Components/SeedExtractorComponent.cs @@ -1,4 +1,7 @@ using Content.Server.Botany.Systems; +using Content.Server.Construction; +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Botany.Components; @@ -7,14 +10,33 @@ namespace Content.Server.Botany.Components; public sealed partial class SeedExtractorComponent : Component { /// - /// The minimum amount of seed packets dropped. + /// The minimum amount of seed packets dropped with no machine upgrades. /// - [DataField("baseMinSeeds"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public int BaseMinSeeds = 1; /// - /// The maximum amount of seed packets dropped. + /// The maximum amount of seed packets dropped with no machine upgrades. /// - [DataField("baseMaxSeeds"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public int BaseMaxSeeds = 3; + + /// + /// Modifier to the amount of seeds outputted, set on . + /// + [ViewVariables(VVAccess.ReadWrite)] + public float SeedAmountMultiplier; + + /// + /// Machine part whose rating modifies the amount of seed packets dropped. + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartSeedAmount = "Manipulator"; + + /// + /// How much the machine part quality affects the amount of seeds outputted. + /// Going up a tier will multiply the seed output by this amount. + /// + [DataField] + public float PartRatingSeedAmountMultiplier = 1.5f; } diff --git a/Content.Server/Botany/Systems/SeedExtractorSystem.cs b/Content.Server/Botany/Systems/SeedExtractorSystem.cs index f1ae6c9f11..4c547b96f0 100644 --- a/Content.Server/Botany/Systems/SeedExtractorSystem.cs +++ b/Content.Server/Botany/Systems/SeedExtractorSystem.cs @@ -1,8 +1,10 @@ using Content.Server.Botany.Components; +using Content.Server.Construction; using Content.Server.Popups; using Content.Server.Power.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Popups; +using Robust.Shared.Player; using Robust.Shared.Random; namespace Content.Server.Botany.Systems; @@ -18,6 +20,8 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent(OnInteractUsing); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); } private void OnInteractUsing(EntityUid uid, SeedExtractorComponent seedExtractor, InteractUsingEvent args) @@ -25,8 +29,7 @@ private void OnInteractUsing(EntityUid uid, SeedExtractorComponent seedExtractor if (!this.IsPowered(uid, EntityManager)) return; - if (!TryComp(args.Used, out ProduceComponent? produce)) - return; + if (!TryComp(args.Used, out ProduceComponent? produce)) return; if (!_botanySystem.TryGetSeed(produce, out var seed) || seed.Seedless) { _popupSystem.PopupCursor(Loc.GetString("seed-extractor-component-no-seeds",("name", args.Used)), @@ -39,7 +42,7 @@ private void OnInteractUsing(EntityUid uid, SeedExtractorComponent seedExtractor QueueDel(args.Used); - var amount = _random.Next(seedExtractor.BaseMinSeeds, seedExtractor.BaseMaxSeeds + 1); + var amount = (int) _random.NextFloat(seedExtractor.BaseMinSeeds, seedExtractor.BaseMaxSeeds + 1) * seedExtractor.SeedAmountMultiplier; var coords = Transform(uid).Coordinates; if (amount > 1) @@ -50,4 +53,15 @@ private void OnInteractUsing(EntityUid uid, SeedExtractorComponent seedExtractor _botanySystem.SpawnSeedPacket(seed, coords, args.User); } } + + private void OnRefreshParts(EntityUid uid, SeedExtractorComponent seedExtractor, RefreshPartsEvent args) + { + var manipulatorQuality = args.PartRatings[seedExtractor.MachinePartSeedAmount]; + seedExtractor.SeedAmountMultiplier = MathF.Pow(seedExtractor.PartRatingSeedAmountMultiplier, manipulatorQuality - 1); + } + + private void OnUpgradeExamine(EntityUid uid, SeedExtractorComponent seedExtractor, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("seed-extractor-component-upgrade-seed-yield", seedExtractor.SeedAmountMultiplier); + } } diff --git a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs index 42aabf2578..1c25b0e79d 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs @@ -1,4 +1,6 @@ using Content.Server.Cargo.Components; +using Content.Server.Construction; +using Content.Server.Paper; using Content.Server.Power.Components; using Content.Shared.Cargo; using Content.Shared.Cargo.Components; @@ -13,6 +15,8 @@ public sealed partial class CargoSystem private void InitializeTelepad() { SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnTelepadPowerChange); // Shouldn't need re-anchored event SubscribeLocalEvent(OnTelepadAnchorChange); @@ -79,6 +83,17 @@ private void OnInit(EntityUid uid, CargoTelepadComponent telepad, ComponentInit _linker.EnsureSinkPorts(uid, telepad.ReceiverPort); } + 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) { diff --git a/Content.Server/Chemistry/Components/SolutionHeaterComponent.cs b/Content.Server/Chemistry/Components/SolutionHeaterComponent.cs index c1841e022c..bc1d44e82f 100644 --- a/Content.Server/Chemistry/Components/SolutionHeaterComponent.cs +++ b/Content.Server/Chemistry/Components/SolutionHeaterComponent.cs @@ -4,8 +4,26 @@ namespace Content.Server.Chemistry.Components; public sealed partial class SolutionHeaterComponent : Component { /// - /// How much heat is added per second to the solution, taking upgrades into account. + /// How much heat is added per second to the solution, with no upgrades. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] + public float BaseHeatPerSecond = 120; + + /// + /// How much heat is added per second to the solution, taking upgrades into account. + /// + [ViewVariables(VVAccess.ReadWrite)] public float HeatPerSecond; + + /// + /// The machine part that affects the heat multiplier. + /// + [DataField] + public string MachinePartHeatMultiplier = "Capacitor"; + + /// + /// How much each upgrade multiplies the heat by. + /// + [DataField] + public float PartRatingHeatMultiplier = 1.5f; } diff --git a/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs index 6e6373e10b..1ef589ab5c 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Chemistry.Components; using Content.Server.Chemistry.Containers.EntitySystems; +using Content.Server.Construction; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Chemistry; @@ -20,6 +21,8 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent(OnPowerChanged); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnItemPlaced); SubscribeLocalEvent(OnItemRemoved); } @@ -61,6 +64,18 @@ private void OnPowerChanged(Entity entity, ref PowerCha } } + private void OnRefreshParts(Entity entity, ref RefreshPartsEvent args) + { + var heatRating = args.PartRatings[entity.Comp.MachinePartHeatMultiplier] - 1; + + entity.Comp.HeatPerSecond = entity.Comp.BaseHeatPerSecond * MathF.Pow(entity.Comp.PartRatingHeatMultiplier, heatRating); + } + + private void OnUpgradeExamine(Entity entity, ref UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("solution-heater-upgrade-heat", entity.Comp.HeatPerSecond / entity.Comp.BaseHeatPerSecond); + } + private void OnItemPlaced(Entity entity, ref ItemPlacedEvent args) { TryTurnOn(entity); diff --git a/Content.Server/Cloning/CloningSystem.cs b/Content.Server/Cloning/CloningSystem.cs index 7931fae477..72104bc381 100644 --- a/Content.Server/Cloning/CloningSystem.cs +++ b/Content.Server/Cloning/CloningSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Chat.Systems; using Content.Server.Cloning.Components; +using Content.Server.Construction; using Content.Server.DeviceLinking.Systems; using Content.Server.EUI; using Content.Server.Fluids.EntitySystems; @@ -9,6 +10,10 @@ using Content.Server.Materials; using Content.Server.Popups; using Content.Server.Power.EntitySystems; +using Content.Server.Traits.Assorted; +using Content.Shared.Atmos; +using Content.Shared.CCVar; +using Content.Shared.Chemistry.Components; using Content.Shared.Cloning; using Content.Shared.Damage; using Content.Shared.DeviceLinking.Events; @@ -90,8 +95,23 @@ public override void Initialize() SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnEmagged); SubscribeLocalEvent(OnPowerChanged); + SubscribeLocalEvent(OnPartsRefreshed); + SubscribeLocalEvent(OnUpgradeExamine); + } + private void OnPartsRefreshed(EntityUid uid, CloningPodComponent component, RefreshPartsEvent args) + { + var materialRating = args.PartRatings[component.MachinePartMaterialUse]; + var speedRating = args.PartRatings[component.MachinePartCloningSpeed]; + + component.BiomassCostMultiplier = MathF.Pow(component.PartRatingMaterialMultiplier, materialRating - 1); + component.CloningTime = component.CloningTime * MathF.Pow(component.PartRatingSpeedMultiplier, speedRating - 1); } + private void OnUpgradeExamine(EntityUid uid, CloningPodComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("cloning-pod-component-upgrade-speed", component.CloningTime / component.CloningTime); + args.AddPercentageUpgrade("cloning-pod-component-upgrade-biomass-requirement", component.BiomassCostMultiplier); + } private void OnPortDisconnected(EntityUid uid, CloningPodComponent pod, PortDisconnectedEvent args) { pod.ConnectedConsole = null; diff --git a/Content.Server/Construction/ConstructionSystem.Machine.cs b/Content.Server/Construction/ConstructionSystem.Machine.cs index 2e670dbe40..65b0b70476 100644 --- a/Content.Server/Construction/ConstructionSystem.Machine.cs +++ b/Content.Server/Construction/ConstructionSystem.Machine.cs @@ -5,6 +5,7 @@ using Content.Shared.Construction.Prototypes; using Content.Shared.Verbs; using Robust.Shared.Containers; +using Robust.Shared.Map.Components; using Robust.Shared.Utility; namespace Content.Server.Construction; @@ -143,7 +144,7 @@ private void CreateBoardAndStockParts(EntityUid uid, MachineComponent component) var p = EntityManager.SpawnEntity(partProto.StockPartPrototype, xform.Coordinates); if (!_container.Insert(p, partContainer)) - throw new Exception($"Couldn't insert machine part of type {part} to machine with prototype {partProto.StockPartPrototype}!"); + throw new Exception($"Couldn't insert machine part of type {part} to machine with prototype {partProto.StockPartPrototype ?? "N/A"}!"); } } @@ -183,7 +184,7 @@ public sealed class RefreshPartsEvent : EntityEventArgs { public IReadOnlyList Parts = new List(); - public Dictionary PartRatings = new(); + public Dictionary PartRatings = new Dictionary(); } public sealed class UpgradeExamineEvent : EntityEventArgs diff --git a/Content.Server/Construction/PartExchangerSystem.cs b/Content.Server/Construction/PartExchangerSystem.cs index ee5edcbd0a..f364d1b547 100644 --- a/Content.Server/Construction/PartExchangerSystem.cs +++ b/Content.Server/Construction/PartExchangerSystem.cs @@ -10,6 +10,7 @@ using Robust.Shared.Containers; using Robust.Shared.Utility; using Content.Shared.Wires; +using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Collections; @@ -42,7 +43,7 @@ private void OnDoAfter(EntityUid uid, PartExchangerComponent component, DoAfterE if (args.Handled || args.Args.Target == null) return; - if (!TryComp(uid, out var storage)) + if (!TryComp(uid, out var storage) || storage.Container == null) return; //the parts are stored in here var machinePartQuery = GetEntityQuery(); diff --git a/Content.Server/Gravity/GravityGeneratorComponent.cs b/Content.Server/Gravity/GravityGeneratorComponent.cs index f946292038..f47d397939 100644 --- a/Content.Server/Gravity/GravityGeneratorComponent.cs +++ b/Content.Server/Gravity/GravityGeneratorComponent.cs @@ -37,6 +37,9 @@ public sealed partial class GravityGeneratorComponent : SharedGravityGeneratorCo // 0 -> 1 [ViewVariables(VVAccess.ReadWrite)] [DataField("charge")] public float Charge { get; set; } = 1; + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartMaxChargeMultiplier = "Capacitor"; + /// /// Is the gravity generator currently "producing" gravity? /// diff --git a/Content.Server/Gravity/GravityGeneratorSystem.cs b/Content.Server/Gravity/GravityGeneratorSystem.cs index ec5646457e..b1696e6a71 100644 --- a/Content.Server/Gravity/GravityGeneratorSystem.cs +++ b/Content.Server/Gravity/GravityGeneratorSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Administration.Logs; using Content.Server.Audio; +using Content.Server.Construction; using Content.Server.Power.Components; using Content.Server.Emp; using Content.Shared.Database; @@ -27,6 +28,7 @@ public override void Initialize() SubscribeLocalEvent(OnComponentShutdown); SubscribeLocalEvent(OnParentChanged); // Or just anchor changed? SubscribeLocalEvent(OnInteractHand); + SubscribeLocalEvent(OnRefreshParts); SubscribeLocalEvent( OnSwitchGenerator); @@ -257,6 +259,12 @@ public void UpdateState(Entity ent, AppearanceComponent? appearance) { _ambientSoundSystem.SetAmbience(ent, false); diff --git a/Content.Server/Kitchen/Components/MicrowaveComponent.cs b/Content.Server/Kitchen/Components/MicrowaveComponent.cs index 815ba8f521..1e343e5e33 100644 --- a/Content.Server/Kitchen/Components/MicrowaveComponent.cs +++ b/Content.Server/Kitchen/Components/MicrowaveComponent.cs @@ -11,95 +11,99 @@ namespace Content.Server.Kitchen.Components [RegisterComponent] public sealed partial class MicrowaveComponent : Component { - [DataField("cookTimeMultiplier"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public float CookTimeMultiplier = 1; - - [DataField("baseHeatMultiplier"), ViewVariables(VVAccess.ReadWrite)] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartCookTimeMultiplier = "Capacitor"; + [DataField] + public float CookTimeScalingConstant = 0.5f; + [DataField] public float BaseHeatMultiplier = 100; - [DataField("objectHeatMultiplier"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public float ObjectHeatMultiplier = 100; - [DataField("failureResult", customTypeSerializer: typeof(PrototypeIdSerializer))] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] public string BadRecipeEntityId = "FoodBadRecipe"; #region audio - [DataField("beginCookingSound")] + [DataField] public SoundSpecifier StartCookingSound = new SoundPathSpecifier("/Audio/Machines/microwave_start_beep.ogg"); - [DataField("foodDoneSound")] + [DataField] public SoundSpecifier FoodDoneSound = new SoundPathSpecifier("/Audio/Machines/microwave_done_beep.ogg"); - [DataField("clickSound")] + [DataField] public SoundSpecifier ClickSound = new SoundPathSpecifier("/Audio/Machines/machine_switch.ogg"); - [DataField("ItemBreakSound")] + [DataField] public SoundSpecifier ItemBreakSound = new SoundPathSpecifier("/Audio/Effects/clang.ogg"); public EntityUid? PlayingStream; - [DataField("loopingSound")] + [DataField] public SoundSpecifier LoopingSound = new SoundPathSpecifier("/Audio/Machines/microwave_loop.ogg"); #endregion [ViewVariables] public bool Broken; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public ProtoId OnPort = "On"; /// - /// This is a fixed offset of 5. - /// The cook times for all recipes should be divisible by 5,with a minimum of 1 second. - /// For right now, I don't think any recipe cook time should be greater than 60 seconds. + /// This is a fixed offset of 5. + /// The cook times for all recipes should be divisible by 5,with a minimum of 1 second. + /// For right now, I don't think any recipe cook time should be greater than 60 seconds. /// - [DataField("currentCookTimerTime"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public uint CurrentCookTimerTime = 0; /// - /// Tracks the elapsed time of the current cook timer. + /// Tracks the elapsed time of the current cook timer. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public TimeSpan CurrentCookTimeEnd = TimeSpan.Zero; /// - /// The maximum number of seconds a microwave can be set to. - /// This is currently only used for validation and the client does not check this. + /// The maximum number of seconds a microwave can be set to. + /// This is currently only used for validation and the client does not check this. /// - [DataField("maxCookTime"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public uint MaxCookTime = 30; /// /// The max temperature that this microwave can heat objects to. /// - [DataField("temperatureUpperThreshold")] + [DataField] public float TemperatureUpperThreshold = 373.15f; public int CurrentCookTimeButtonIndex; public Container Storage = default!; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public int Capacity = 10; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public ProtoId MaxItemSize = "Normal"; /// - /// How frequently the microwave can malfunction. + /// How frequently the microwave can malfunction. /// [DataField] public float MalfunctionInterval = 1.0f; /// - /// Chance of an explosion occurring when we microwave a metallic object + /// Chance of an explosion occurring when we microwave a metallic object /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public float ExplosionChance = .1f; /// - /// Chance of lightning occurring when we microwave a metallic object - [DataField, ViewVariables(VVAccess.ReadWrite)] + /// Chance of lightning occurring when we microwave a metallic object + /// + [DataField] public float LightningChance = .75f; } diff --git a/Content.Server/Kitchen/Components/ReagentGrinderComponent.cs b/Content.Server/Kitchen/Components/ReagentGrinderComponent.cs index 5bbbe2dc8d..4f4531206c 100644 --- a/Content.Server/Kitchen/Components/ReagentGrinderComponent.cs +++ b/Content.Server/Kitchen/Components/ReagentGrinderComponent.cs @@ -1,6 +1,8 @@ using Content.Shared.Kitchen; using Content.Server.Kitchen.EntitySystems; +using Content.Shared.Construction.Prototypes; using Robust.Shared.Audio; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Kitchen.Components { @@ -13,15 +15,30 @@ namespace Content.Server.Kitchen.Components [Access(typeof(ReagentGrinderSystem)), RegisterComponent] public sealed partial class ReagentGrinderComponent : Component { - [DataField] + [ViewVariables(VVAccess.ReadWrite)] public int StorageMaxEntities = 6; [DataField] - public TimeSpan WorkTime = TimeSpan.FromSeconds(3.5); // Roughly matches the grind/juice sounds. + public int BaseStorageMaxEntities = 4; + + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartStorageMax = "MatterBin"; + + [DataField] + public int StoragePerPartRating = 4; [DataField] + public TimeSpan WorkTime = TimeSpan.FromSeconds(3.5); // Roughly matches the grind/juice sounds. + + [ViewVariables(VVAccess.ReadWrite)] public float WorkTimeMultiplier = 1; + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartWorkTime = "Manipulator"; + + [DataField] + public float PartRatingWorkTimerMulitplier = 0.6f; + [DataField] public SoundSpecifier ClickSound { get; set; } = new SoundPathSpecifier("/Audio/Machines/machine_switch.ogg"); diff --git a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs index 212383c463..3de7051f54 100644 --- a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs @@ -76,6 +76,8 @@ public override void Initialize() SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnAnchorChanged); SubscribeLocalEvent(OnSuicide); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnSignalReceived); @@ -342,6 +344,17 @@ private void OnAnchorChanged(EntityUid uid, MicrowaveComponent component, ref An _container.EmptyContainer(component.Storage); } + private void OnRefreshParts(Entity ent, ref RefreshPartsEvent args) + { + var cookRating = args.PartRatings[ent.Comp.MachinePartCookTimeMultiplier]; + ent.Comp.CookTimeMultiplier = MathF.Pow(ent.Comp.CookTimeScalingConstant, cookRating - 1); + } + + private void OnUpgradeExamine(Entity ent, ref UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("microwave-component-upgrade-cook-time", ent.Comp.CookTimeMultiplier); + } + private void OnSignalReceived(Entity ent, ref SignalReceivedEvent args) { if (args.Port != ent.Comp.OnPort) diff --git a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs index e8ee453986..aad33fea67 100644 --- a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Chemistry.Containers.EntitySystems; +using Content.Server.Construction; using Content.Server.Kitchen.Components; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; @@ -48,6 +49,8 @@ public override void Initialize() SubscribeLocalEvent((uid, _, _) => UpdateUiState(uid)); SubscribeLocalEvent((EntityUid uid, ReagentGrinderComponent _, ref PowerChangedEvent _) => UpdateUiState(uid)); SubscribeLocalEvent(OnInteractUsing); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnContainerModified); SubscribeLocalEvent(OnContainerModified); @@ -197,6 +200,24 @@ private void OnInteractUsing(Entity entity, ref Interac args.Handled = true; } + /// + /// Gotta be efficient, you know? you're saving a whole extra second here and everything. + /// + private void OnRefreshParts(Entity entity, ref RefreshPartsEvent args) + { + var ratingWorkTime = args.PartRatings[entity.Comp.MachinePartWorkTime]; + var ratingStorage = args.PartRatings[entity.Comp.MachinePartStorageMax]; + + entity.Comp.WorkTimeMultiplier = MathF.Pow(entity.Comp.PartRatingWorkTimerMulitplier, ratingWorkTime - 1); + entity.Comp.StorageMaxEntities = entity.Comp.BaseStorageMaxEntities + (int) (entity.Comp.StoragePerPartRating * (ratingStorage - 1)); + } + + private void OnUpgradeExamine(Entity entity, ref UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("reagent-grinder-component-upgrade-work-time", entity.Comp.WorkTimeMultiplier); + args.AddNumberUpgrade("reagent-grinder-component-upgrade-storage", entity.Comp.StorageMaxEntities - entity.Comp.BaseStorageMaxEntities); + } + private void UpdateUiState(EntityUid uid) { ReagentGrinderComponent? grinderComp = null; diff --git a/Content.Server/Materials/MaterialReclaimerSystem.cs b/Content.Server/Materials/MaterialReclaimerSystem.cs index aa24fde44b..de82f12598 100644 --- a/Content.Server/Materials/MaterialReclaimerSystem.cs +++ b/Content.Server/Materials/MaterialReclaimerSystem.cs @@ -1,4 +1,6 @@ using Content.Server.Chemistry.Containers.EntitySystems; +using Content.Server.Chemistry.EntitySystems; +using Content.Server.Construction; using Content.Server.Fluids.EntitySystems; using Content.Server.GameTicking; using Content.Server.Popups; @@ -45,6 +47,8 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnInteractUsing, before: new []{typeof(WiresSystem), typeof(SolutionTransferSystem)}); @@ -56,6 +60,18 @@ private void OnStartup(Entity entity, ref ComponentS _solutionContainer.EnsureSolution(entity.Owner, entity.Comp.SolutionContainerId); } + private void OnUpgradeExamine(Entity entity, ref UpgradeExamineEvent args) + { + args.AddPercentageUpgrade(Loc.GetString("material-reclaimer-upgrade-process-rate"), entity.Comp.MaterialProcessRate / entity.Comp.BaseMaterialProcessRate); + } + + private void OnRefreshParts(Entity entity, ref RefreshPartsEvent args) + { + var rating = args.PartRatings[entity.Comp.MachinePartProcessRate] - 1; + entity.Comp.MaterialProcessRate = entity.Comp.BaseMaterialProcessRate * MathF.Pow(entity.Comp.PartRatingProcessRateMultiplier, rating); + Dirty(entity); + } + private void OnPowerChanged(Entity entity, ref PowerChangedEvent args) { AmbientSound.SetAmbience(entity.Owner, entity.Comp.Enabled && args.Powered); diff --git a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerComponent.cs b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerComponent.cs index 61d36f98b9..1358bfbcbb 100644 --- a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerComponent.cs +++ b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerComponent.cs @@ -1,4 +1,8 @@ +using System.Threading; +using Content.Shared.Construction.Prototypes; using Content.Shared.Storage; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Medical.BiomassReclaimer { @@ -6,72 +10,111 @@ namespace Content.Server.Medical.BiomassReclaimer public sealed partial class BiomassReclaimerComponent : Component { /// - /// This gets set for each mob it processes. - /// When it hits 0, there is a chance for the reclaimer to either spill blood or throw an item. + /// This gets set for each mob it processes. + /// When it hits 0, there is a chance for the reclaimer to either spill blood or throw an item. /// [ViewVariables] public float RandomMessTimer = 0f; /// - /// The interval for . + /// The interval for . /// - [ViewVariables(VVAccess.ReadWrite), DataField] + [DataField] public TimeSpan RandomMessInterval = TimeSpan.FromSeconds(5); /// - /// This gets set for each mob it processes. - /// When it hits 0, spit out biomass. + /// This gets set for each mob it processes. + /// When it hits 0, spit out biomass. /// [ViewVariables] - public float ProcessingTimer = default; + public float ProcessingTimer; /// - /// Amount of biomass that the mob being processed will yield. - /// This is calculated from the YieldPerUnitMass. - /// Also stores non-integer leftovers. + /// Amount of biomass that the mob being processed will yield. + /// This is calculated from the YieldPerUnitMass. + /// Also stores non-integer leftovers. /// [ViewVariables] - public float CurrentExpectedYield = 0f; + public float CurrentExpectedYield; /// - /// The reagent that will be spilled while processing a mob. + /// The reagent that will be spilled while processing a mob. /// [ViewVariables] public string? BloodReagent; /// - /// Entities that can be randomly spawned while processing a mob. + /// Entities that can be randomly spawned while processing a mob. /// public List SpawnedEntities = new(); /// - /// How many units of biomass it produces for each unit of mass. + /// How many units of biomass it produces for each unit of mass. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] - public float YieldPerUnitMass = 0.4f; + [ViewVariables(VVAccess.ReadWrite)] + public float YieldPerUnitMass = default; /// - /// How many seconds to take to insert an entity per unit of its mass. + /// The base yield per mass unit when no components are upgraded. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] + public float BaseYieldPerUnitMass = 0.4f; + + /// + /// Machine part whose rating modifies the yield per mass. + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartYieldAmount = "MatterBin"; + + /// + /// How much the machine part quality affects the yield. + /// Going up a tier will multiply the yield by this amount. + /// + [DataField] + public float PartRatingYieldAmountMultiplier = 1.25f; + + /// + /// How many seconds to take to insert an entity per unit of its mass. + /// + [DataField] public float BaseInsertionDelay = 0.1f; /// - /// How much to multiply biomass yield from botany produce. + /// How much to multiply biomass yield from botany produce. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public float ProduceYieldMultiplier = 0.25f; /// - /// The time it takes to process a mob, per mass. + /// The time it takes to process a mob, per mass. + /// + [ViewVariables(VVAccess.ReadWrite)] + public float ProcessingTimePerUnitMass; + + /// + /// The base time per mass unit that it takes to process a mob + /// when no components are upgraded. + /// + [DataField] + public float BaseProcessingTimePerUnitMass = 0.5f; + + /// + /// The machine part that increses the processing speed. + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartProcessingSpeed = "Manipulator"; + + /// + /// How much the machine part quality affects the yield. + /// Going up a tier will multiply the speed by this amount. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] - public float ProcessingTimePerUnitMass = 0.5f; + [DataField] + public float PartRatingSpeedMultiplier = 1.35f; /// - /// Will this refuse to gib a living mob? + /// Will this refuse to gib a living mob? /// - [ViewVariables(VVAccess.ReadWrite), DataField] + [DataField] public bool SafetyEnabled = true; } } diff --git a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs index eaf04d64b2..97a758a5ed 100644 --- a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs +++ b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs @@ -1,6 +1,7 @@ using System.Numerics; using Content.Server.Body.Components; using Content.Server.Botany.Components; +using Content.Server.Construction; using Content.Server.Fluids.EntitySystems; using Content.Server.Materials; using Content.Server.Power.Components; @@ -99,6 +100,8 @@ public override void Initialize() SubscribeLocalEvent(OnUnanchorAttempt); SubscribeLocalEvent(OnAfterInteractUsing); SubscribeLocalEvent(OnClimbedOn); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnSuicide); SubscribeLocalEvent(OnDoAfter); @@ -173,6 +176,26 @@ private void OnClimbedOn(Entity reclaimer, ref Climbe StartProcessing(args.Climber, reclaimer); } + private void OnRefreshParts(EntityUid uid, BiomassReclaimerComponent component, RefreshPartsEvent args) + { + var laserRating = args.PartRatings[component.MachinePartProcessingSpeed]; + var manipRating = args.PartRatings[component.MachinePartYieldAmount]; + + // Processing time slopes downwards with part rating. + component.ProcessingTimePerUnitMass = + component.BaseProcessingTimePerUnitMass / MathF.Pow(component.PartRatingSpeedMultiplier, laserRating - 1); + + // Yield slopes upwards with part rating. + component.YieldPerUnitMass = + component.BaseYieldPerUnitMass * MathF.Pow(component.PartRatingYieldAmountMultiplier, manipRating - 1); + } + + private void OnUpgradeExamine(EntityUid uid, BiomassReclaimerComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("biomass-reclaimer-component-upgrade-speed", component.BaseProcessingTimePerUnitMass / component.ProcessingTimePerUnitMass); + args.AddPercentageUpgrade("biomass-reclaimer-component-upgrade-biomass-yield", component.YieldPerUnitMass / component.BaseYieldPerUnitMass); + } + private void OnDoAfter(Entity reclaimer, ref ReclaimerDoAfterEvent args) { if (args.Handled diff --git a/Content.Server/Medical/Components/MedicalScannerComponent.cs b/Content.Server/Medical/Components/MedicalScannerComponent.cs index 96de649987..15ca6cd2bd 100644 --- a/Content.Server/Medical/Components/MedicalScannerComponent.cs +++ b/Content.Server/Medical/Components/MedicalScannerComponent.cs @@ -1,5 +1,4 @@ using Content.Shared.Construction.Prototypes; -using Content.Shared.DragDrop; using Content.Shared.MedicalScanner; using Robust.Shared.Containers; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; @@ -13,10 +12,15 @@ public sealed partial class MedicalScannerComponent : SharedMedicalScannerCompon public ContainerSlot BodyContainer = default!; public EntityUid? ConnectedConsole; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [ViewVariables(VVAccess.ReadWrite)] public float CloningFailChanceMultiplier = 1f; - - // Nyano, needed for Metem Machine. + public float MetemKarmaBonus = 0.25f; + + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartCloningFailChance = "Capacitor"; + + [DataField] + public float PartRatingFailMultiplier = 0.75f; } } diff --git a/Content.Server/Medical/MedicalScannerSystem.cs b/Content.Server/Medical/MedicalScannerSystem.cs index a6ce43c408..ab6918e373 100644 --- a/Content.Server/Medical/MedicalScannerSystem.cs +++ b/Content.Server/Medical/MedicalScannerSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Verbs; using Robust.Shared.Containers; using Content.Server.Cloning.Components; +using Content.Server.Construction; using Content.Server.DeviceLinking.Systems; using Content.Shared.DeviceLinking.Events; using Content.Server.Power.EntitySystems; @@ -44,6 +45,8 @@ public override void Initialize() SubscribeLocalEvent(OnDragDropOn); SubscribeLocalEvent(OnPortDisconnected); SubscribeLocalEvent(OnAnchorChanged); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnCanDragDropOn); } @@ -220,5 +223,17 @@ public void EjectBody(EntityUid uid, MedicalScannerComponent? scannerComponent) _climbSystem.ForciblySetClimbing(contained, uid); UpdateAppearance(uid, scannerComponent); } + + private void OnRefreshParts(EntityUid uid, MedicalScannerComponent component, RefreshPartsEvent args) + { + var ratingFail = args.PartRatings[component.MachinePartCloningFailChance]; + + component.CloningFailChanceMultiplier = MathF.Pow(component.PartRatingFailMultiplier, ratingFail - 1); + } + + private void OnUpgradeExamine(EntityUid uid, MedicalScannerComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("medical-scanner-upgrade-cloning", component.CloningFailChanceMultiplier); + } } } diff --git a/Content.Server/Nutrition/Components/FatExtractorComponent.cs b/Content.Server/Nutrition/Components/FatExtractorComponent.cs index e23c557236..fa6edc911e 100644 --- a/Content.Server/Nutrition/Components/FatExtractorComponent.cs +++ b/Content.Server/Nutrition/Components/FatExtractorComponent.cs @@ -1,4 +1,5 @@ using Content.Server.Nutrition.EntitySystems; +using Content.Shared.Construction.Prototypes; using Content.Shared.Nutrition.Components; using Robust.Shared.Audio; using Robust.Shared.Prototypes; @@ -8,67 +9,87 @@ namespace Content.Server.Nutrition.Components; /// -/// This is used for a machine that extracts hunger from entities and creates meat. Yum! +/// This is used for a machine that extracts hunger from entities and creates meat. Yum! /// [RegisterComponent, Access(typeof(FatExtractorSystem)), AutoGenerateComponentPause] public sealed partial class FatExtractorComponent : Component { /// - /// Whether or not the extractor is currently extracting fat from someone + /// Whether or not the extractor is currently extracting fat from someone /// - [DataField("processing")] + [DataField] public bool Processing = true; /// - /// How much nutrition is extracted per second. + /// How much nutrition is extracted per second. /// - [DataField("nutritionPerSecond"), ViewVariables(VVAccess.ReadWrite)] + [ViewVariables(VVAccess.ReadWrite)] public int NutritionPerSecond = 10; /// - /// An accumulator which tracks extracted nutrition to determine - /// when to spawn a meat. + /// The base rate of extraction /// - [DataField("nutrientAccumulator"), ViewVariables(VVAccess.ReadWrite)] + [DataField] + public int BaseNutritionPerSecond = 10; + + #region Machine Upgrade + /// + /// Which machine part affects the nutrition rate + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartNutritionRate = "Manipulator"; + + /// + /// The increase in rate per each rating above 1. + /// + [DataField] + public float PartRatingRateMultiplier = 10; + #endregion + + /// + /// An accumulator which tracks extracted nutrition to determine + /// when to spawn a meat. + /// + [DataField] public int NutrientAccumulator; /// - /// How high has to be to spawn meat + /// How high has to be to spawn meat /// - [DataField("nutrientPerMeat"), ViewVariables(VVAccess.ReadWrite)] - public int NutrientPerMeat = 30; + [DataField] + public int NutrientPerMeat = 60; /// - /// Meat spawned by the extractor. + /// Meat spawned by the extractor. /// - [DataField("meatPrototype", customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] public string MeatPrototype = "FoodMeat"; /// - /// When the next update will occur + /// When the next update will occur /// - [DataField("nextUpdate", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] [AutoPausedField] public TimeSpan NextUpdate; /// - /// How long each update takes + /// How long each update takes /// - [DataField("updateTime"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public TimeSpan UpdateTime = TimeSpan.FromSeconds(1); /// - /// The sound played when extracting + /// The sound played when extracting /// - [DataField("processSound")] + [DataField] public SoundSpecifier? ProcessSound; public EntityUid? Stream; /// - /// A minium hunger threshold for extracting nutrition. - /// Ignored when emagged. + /// A minium hunger threshold for extracting nutrition. + /// Ignored when emagged. /// - [DataField("minHungerThreshold")] + [DataField] public HungerThreshold MinHungerThreshold = HungerThreshold.Okay; } diff --git a/Content.Server/Nutrition/EntitySystems/FatExtractorSystem.cs b/Content.Server/Nutrition/EntitySystems/FatExtractorSystem.cs index 180e40d1e4..dc1f67c740 100644 --- a/Content.Server/Nutrition/EntitySystems/FatExtractorSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FatExtractorSystem.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; +using Content.Server.Construction; using Content.Server.Nutrition.Components; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; @@ -9,6 +10,7 @@ using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; using Content.Shared.Storage.Components; +using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Timing; @@ -27,12 +29,25 @@ public sealed class FatExtractorSystem : EntitySystem /// public override void Initialize() { + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnGotEmagged); SubscribeLocalEvent(OnClosed); SubscribeLocalEvent(OnOpen); SubscribeLocalEvent(OnPowerChanged); } + private void OnRefreshParts(EntityUid uid, FatExtractorComponent component, RefreshPartsEvent args) + { + var rating = args.PartRatings[component.MachinePartNutritionRate] - 1; + component.NutritionPerSecond = component.BaseNutritionPerSecond + (int) (component.PartRatingRateMultiplier * rating); + } + + private void OnUpgradeExamine(EntityUid uid, FatExtractorComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("fat-extractor-component-rate", (float) component.NutritionPerSecond / component.BaseNutritionPerSecond); + } + private void OnGotEmagged(EntityUid uid, FatExtractorComponent component, ref GotEmaggedEvent args) { args.Handled = true; diff --git a/Content.Server/Power/Components/UpgradeBatteryComponent.cs b/Content.Server/Power/Components/UpgradeBatteryComponent.cs new file mode 100644 index 0000000000..b676883b71 --- /dev/null +++ b/Content.Server/Power/Components/UpgradeBatteryComponent.cs @@ -0,0 +1,28 @@ +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Power.Components +{ + + [RegisterComponent] + public sealed partial class UpgradeBatteryComponent : Component + { + /// + /// The machine part that affects the power capacity. + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartPowerCapacity = "PowerCell"; + + /// + /// The machine part rating is raised to this power when calculating power gain + /// + [DataField] + public float MaxChargeMultiplier = 2f; + + /// + /// Power gain scaling + /// + [DataField] + public float BaseMaxCharge = 8000000; + } +} diff --git a/Content.Server/Power/Components/UpgradePowerDrawComponent.cs b/Content.Server/Power/Components/UpgradePowerDrawComponent.cs new file mode 100644 index 0000000000..23db4905cc --- /dev/null +++ b/Content.Server/Power/Components/UpgradePowerDrawComponent.cs @@ -0,0 +1,41 @@ +using Content.Server.Construction.Components; +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Power.Components; + +/// +/// This is used for machines whose power draw +/// can be decreased through machine part upgrades. +/// +[RegisterComponent] +public sealed partial class UpgradePowerDrawComponent : Component +{ + /// + /// The base power draw of the machine. + /// Prioritizes hv/mv draw over lv draw. + /// Value is initializezd on map init from + /// + [ViewVariables(VVAccess.ReadWrite)] + public float BaseLoad; + + /// + /// The machine part that affects the power draw. + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] + public string MachinePartPowerDraw = "Capacitor"; + + /// + /// The multiplier used for scaling the power draw. + /// + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public float PowerDrawMultiplier = 1f; + + /// + /// What type of scaling is being used? + /// + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public MachineUpgradeScalingType Scaling; +} + + diff --git a/Content.Server/Power/Components/UpgradePowerSupplierComponent.cs b/Content.Server/Power/Components/UpgradePowerSupplierComponent.cs new file mode 100644 index 0000000000..012c38a6b9 --- /dev/null +++ b/Content.Server/Power/Components/UpgradePowerSupplierComponent.cs @@ -0,0 +1,36 @@ +using Content.Server.Construction.Components; +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Power.Components; + +[RegisterComponent] +public sealed partial class UpgradePowerSupplierComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite)] + public float BaseSupplyRate; + + /// + /// The machine part that affects the power supplu. + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartPowerSupply = "Capacitor"; + + /// + /// The multiplier used for scaling the power supply. + /// + [DataField(required: true)] + public float PowerSupplyMultiplier = 1f; + + /// + /// What type of scaling is being used? + /// + [DataField(required: true)] + public MachineUpgradeScalingType Scaling; + + /// + /// The current value that the power supply is being scaled by, + /// + [DataField] + public float ActualScalar = 1f; +} diff --git a/Content.Server/Power/Components/UpgradePowerSupplyRampingComponent.cs b/Content.Server/Power/Components/UpgradePowerSupplyRampingComponent.cs new file mode 100644 index 0000000000..61a654b383 --- /dev/null +++ b/Content.Server/Power/Components/UpgradePowerSupplyRampingComponent.cs @@ -0,0 +1,36 @@ +using Content.Server.Construction.Components; +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Power.Components; + +[RegisterComponent] +public sealed partial class UpgradePowerSupplyRampingComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite)] + public float BaseRampRate; + + /// + /// The machine part that affects the power supply ramping + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartRampRate = "Capacitor"; + + /// + /// The multiplier used for scaling the power supply ramping + /// + [DataField] + public float SupplyRampingMultiplier = 1f; + + /// + /// What type of scaling is being used? + /// + [DataField(required: true)] + public MachineUpgradeScalingType Scaling; + + /// + /// The current value that the power supply is being scaled by + /// + [DataField] + public float ActualScalar = 1f; +} diff --git a/Content.Server/Power/EntitySystems/UpgradeBatterySystem.cs b/Content.Server/Power/EntitySystems/UpgradeBatterySystem.cs new file mode 100644 index 0000000000..734cf9d89c --- /dev/null +++ b/Content.Server/Power/EntitySystems/UpgradeBatterySystem.cs @@ -0,0 +1,39 @@ +using Content.Server.Construction; +using Content.Server.Power.Components; +using JetBrains.Annotations; + +namespace Content.Server.Power.EntitySystems +{ + [UsedImplicitly] + public sealed class UpgradeBatterySystem : EntitySystem + { + [Dependency] private readonly BatterySystem _batterySystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); + } + + public void OnRefreshParts(EntityUid uid, UpgradeBatteryComponent component, RefreshPartsEvent args) + { + var powerCellRating = args.PartRatings[component.MachinePartPowerCapacity]; + + if (TryComp(uid, out var batteryComp)) + { + _batterySystem.SetMaxCharge(uid, MathF.Pow(component.MaxChargeMultiplier, powerCellRating - 1) * component.BaseMaxCharge, batteryComp); + } + } + + private void OnUpgradeExamine(EntityUid uid, UpgradeBatteryComponent component, UpgradeExamineEvent args) + { + // UpgradeBatteryComponent.MaxChargeMultiplier is not the actual multiplier, so we have to do this. + if (TryComp(uid, out var batteryComp)) + { + args.AddPercentageUpgrade("upgrade-max-charge", batteryComp.MaxCharge / component.BaseMaxCharge); + } + } + } +} diff --git a/Content.Server/Power/EntitySystems/UpgradePowerSystem.cs b/Content.Server/Power/EntitySystems/UpgradePowerSystem.cs new file mode 100644 index 0000000000..d2f6ee4f56 --- /dev/null +++ b/Content.Server/Power/EntitySystems/UpgradePowerSystem.cs @@ -0,0 +1,151 @@ +using Content.Server.Construction; +using Content.Server.Construction.Components; +using Content.Server.Power.Components; + +namespace Content.Server.Power.EntitySystems; + +/// +/// This handles using upgraded machine parts +/// to modify the power supply/generation of a machine. +/// +public sealed class UpgradePowerSystem : EntitySystem +{ + /// + public override void Initialize() + { + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); + + SubscribeLocalEvent(OnSupplierMapInit); + SubscribeLocalEvent(OnSupplierRefreshParts); + SubscribeLocalEvent(OnSupplierUpgradeExamine); + + SubscribeLocalEvent(OnSupplyRampingMapInit); + SubscribeLocalEvent(OnSupplyRampingRefreshParts); + SubscribeLocalEvent(OnSupplyRampingUpgradeExamine); + } + + private void OnMapInit(EntityUid uid, UpgradePowerDrawComponent component, MapInitEvent args) + { + if (TryComp(uid, out var powa)) + component.BaseLoad = powa.DrawRate; + else if (TryComp(uid, out var powa2)) + component.BaseLoad = powa2.Load; + } + + private void OnRefreshParts(EntityUid uid, UpgradePowerDrawComponent component, RefreshPartsEvent args) + { + var load = component.BaseLoad; + var rating = args.PartRatings[component.MachinePartPowerDraw]; + switch (component.Scaling) + + { + case MachineUpgradeScalingType.Linear: + load += component.PowerDrawMultiplier * (rating - 1); + break; + case MachineUpgradeScalingType.Exponential: + load *= MathF.Pow(component.PowerDrawMultiplier, rating - 1); + break; + default: + Log.Error($"invalid power scaling type for {ToPrettyString(uid)}."); + load = 0; + break; + } + + if (TryComp(uid, out var powa)) + powa.Load = load; + if (TryComp(uid, out var powa2)) + powa2.DrawRate = load; + } + + private void OnUpgradeExamine(EntityUid uid, UpgradePowerDrawComponent component, UpgradeExamineEvent args) + { + // UpgradePowerDrawComponent.PowerDrawMultiplier is not the actual multiplier, so we have to do this. + var powerDrawMultiplier = CompOrNull(uid)?.Load / component.BaseLoad + ?? CompOrNull(uid)?.DrawRate / component.BaseLoad; + + if (powerDrawMultiplier is not null) + args.AddPercentageUpgrade("upgrade-power-draw", powerDrawMultiplier.Value); + } + + private void OnSupplierMapInit(EntityUid uid, UpgradePowerSupplierComponent component, MapInitEvent args) + { + if (!TryComp(uid, out var supplier)) + return; + + component.BaseSupplyRate = supplier.MaxSupply; + } + + private void OnSupplierRefreshParts(EntityUid uid, UpgradePowerSupplierComponent component, RefreshPartsEvent args) + { + var supply = component.BaseSupplyRate; + var rating = args.PartRatings[component.MachinePartPowerSupply]; + switch (component.Scaling) + + { + case MachineUpgradeScalingType.Linear: + supply += component.PowerSupplyMultiplier * component.BaseSupplyRate * (rating - 1); + break; + case MachineUpgradeScalingType.Exponential: + supply *= MathF.Pow(component.PowerSupplyMultiplier, rating - 1); + break; + default: + Log.Error($"invalid power scaling type for {ToPrettyString(uid)}."); + supply = component.BaseSupplyRate; + break; + } + + component.ActualScalar = supply / component.BaseSupplyRate; + + if (!TryComp(uid, out var powa)) + return; + + powa.MaxSupply = supply; + } + + private void OnSupplierUpgradeExamine(EntityUid uid, UpgradePowerSupplierComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("upgrade-power-supply", component.ActualScalar); + } + + private void OnSupplyRampingMapInit(EntityUid uid, UpgradePowerSupplyRampingComponent component, MapInitEvent args) + { + if (!TryComp(uid, out var battery)) + return; + + component.BaseRampRate = battery.SupplyRampRate; + } + + private void OnSupplyRampingRefreshParts(EntityUid uid, UpgradePowerSupplyRampingComponent component, RefreshPartsEvent args) + { + var rampRate = component.BaseRampRate; + var rating = args.PartRatings[component.MachinePartRampRate]; + switch (component.Scaling) + + { + case MachineUpgradeScalingType.Linear: + rampRate += component.SupplyRampingMultiplier * component.BaseRampRate * (rating - 1); + break; + case MachineUpgradeScalingType.Exponential: + rampRate *= MathF.Pow(component.SupplyRampingMultiplier, rating - 1); + break; + default: + Log.Error($"invalid power supply ramping type for {ToPrettyString(uid)}."); + rampRate = component.BaseRampRate; + break; + } + + component.ActualScalar = rampRate / component.BaseRampRate; + + if (!TryComp(uid, out var battery)) + return; + + battery.SupplyRampRate = rampRate; + } + + private void OnSupplyRampingUpgradeExamine(EntityUid uid, UpgradePowerSupplyRampingComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("upgrade-power-supply-ramping", component.ActualScalar); + } +} diff --git a/Content.Server/Power/Generator/GeneratorSystem.cs b/Content.Server/Power/Generator/GeneratorSystem.cs index a75d1e4113..721a959820 100644 --- a/Content.Server/Power/Generator/GeneratorSystem.cs +++ b/Content.Server/Power/Generator/GeneratorSystem.cs @@ -26,8 +26,11 @@ public sealed class GeneratorSystem : SharedGeneratorSystem [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly PuddleSystem _puddle = default!; + private EntityQuery _upgradeQuery; + public override void Initialize() { + _upgradeQuery = GetEntityQuery(); UpdatesBefore.Add(typeof(PowerNetSystem)); @@ -225,7 +228,9 @@ public override void Update(float frameTime) supplier.Enabled = true; - supplier.MaxSupply = gen.TargetPower; + var upgradeMultiplier = _upgradeQuery.CompOrNull(uid)?.ActualScalar ?? 1f; + + supplier.MaxSupply = gen.TargetPower * upgradeMultiplier; var eff = 1 / CalcFuelEfficiency(gen.TargetPower, gen.OptimalPower, gen); var consumption = gen.OptimalBurnRate * frameTime * eff; diff --git a/Content.Server/Shuttles/Components/ThrusterComponent.cs b/Content.Server/Shuttles/Components/ThrusterComponent.cs index 3bba9b5a7f..f64d9bdcbf 100644 --- a/Content.Server/Shuttles/Components/ThrusterComponent.cs +++ b/Content.Server/Shuttles/Components/ThrusterComponent.cs @@ -1,8 +1,10 @@ using System.Numerics; using Content.Server.Shuttles.Systems; +using Content.Shared.Construction.Prototypes; using Content.Shared.Damage; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Shuttles.Components { @@ -13,7 +15,7 @@ public sealed partial class ThrusterComponent : Component /// /// Whether the thruster has been force to be enabled / disabled (e.g. VV, interaction, etc.) /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public bool Enabled { get; set; } = true; /// @@ -22,9 +24,12 @@ public sealed partial class ThrusterComponent : Component public bool IsOn; // Need to serialize this because RefreshParts isn't called on Init and this will break post-mapinit maps! - [ViewVariables(VVAccess.ReadWrite), DataField("thrust")] + [DataField] public float Thrust = 100f; + [DataField] + public float BaseThrust = 100f; + [DataField("thrusterType")] public ThrusterType Type = ThrusterType.Linear; @@ -37,24 +42,31 @@ public sealed partial class ThrusterComponent : Component }; /// - /// How much damage is done per second to anything colliding with our thrust. + /// How much damage is done per second to anything colliding with our thrust. /// - [DataField("damage")] public DamageSpecifier? Damage = new(); + [DataField] + public DamageSpecifier? Damage = new(); - [DataField("requireSpace")] + [DataField] public bool RequireSpace = true; // Used for burns public List Colliding = new(); - public bool Firing = false; + public bool Firing; /// - /// Next time we tick damage for anyone colliding. + /// Next time we tick damage for anyone colliding. /// - [ViewVariables(VVAccess.ReadWrite), DataField("nextFire", customTypeSerializer:typeof(TimeOffsetSerializer))] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan NextFire; + + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartThrust = "Capacitor"; + + [DataField] + public float PartRatingThrustMultiplier = 1.5f; } public enum ThrusterType diff --git a/Content.Server/Shuttles/Systems/ThrusterSystem.cs b/Content.Server/Shuttles/Systems/ThrusterSystem.cs index be55cd9a62..ee131d7857 100644 --- a/Content.Server/Shuttles/Systems/ThrusterSystem.cs +++ b/Content.Server/Shuttles/Systems/ThrusterSystem.cs @@ -1,5 +1,6 @@ using System.Numerics; using Content.Server.Audio; +using Content.Server.Construction; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Shuttles.Components; @@ -51,6 +52,9 @@ public override void Initialize() SubscribeLocalEvent(OnThrusterExamine); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); + SubscribeLocalEvent(OnShuttleTileChange); } @@ -580,6 +584,24 @@ public void SetAngularThrust(ShuttleComponent component, bool on) } } + private void OnRefreshParts(EntityUid uid, ThrusterComponent component, RefreshPartsEvent args) + { + if (component.IsOn) // safely disable thruster to prevent negative thrust + DisableThruster(uid, component); + + var thrustRating = args.PartRatings[component.MachinePartThrust]; + + component.Thrust = component.BaseThrust * MathF.Pow(component.PartRatingThrustMultiplier, thrustRating - 1); + + if (component.Enabled && CanEnable(uid, component)) + EnableThruster(uid, component); + } + + private void OnUpgradeExamine(EntityUid uid, ThrusterComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("thruster-comp-upgrade-thrust", component.Thrust / component.BaseThrust); + } + #endregion private int GetFlagIndex(DirectionFlag flag) diff --git a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs index a9763b64d9..652ca236e4 100644 --- a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs @@ -1,6 +1,7 @@ using System.Numerics; using System.Threading; using Content.Server.Administration.Logs; +using Content.Server.Construction; using Content.Server.DeviceLinking.Events; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; @@ -47,6 +48,8 @@ public override void Initialize() SubscribeLocalEvent(OnInteractHand); SubscribeLocalEvent>(OnGetVerb); SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnAnchorStateChanged); SubscribeLocalEvent(OnSignalReceived); } @@ -176,6 +179,20 @@ private void OnApcChanged(EntityUid uid, EmitterComponent component, ref PowerCh } } + private void OnRefreshParts(EntityUid uid, EmitterComponent component, RefreshPartsEvent args) + { + var fireRateRating = args.PartRatings[component.MachinePartFireRate]; + + component.FireInterval = component.BaseFireInterval * MathF.Pow(component.FireRateMultiplier, fireRateRating - 1); + component.FireBurstDelayMin = component.BaseFireBurstDelayMin * MathF.Pow(component.FireRateMultiplier, fireRateRating - 1); + component.FireBurstDelayMax = component.BaseFireBurstDelayMax * MathF.Pow(component.FireRateMultiplier, fireRateRating - 1); + } + + private void OnUpgradeExamine(EntityUid uid, EmitterComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("emitter-component-upgrade-fire-rate", (float) (component.BaseFireInterval.TotalSeconds / component.FireInterval.TotalSeconds)); + } + public void SwitchOff(EntityUid uid, EmitterComponent component) { component.IsOn = false; diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/TraversalDistorterComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/TraversalDistorterComponent.cs index ec16083c53..d6a39fe4f4 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Components/TraversalDistorterComponent.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Components/TraversalDistorterComponent.cs @@ -1,4 +1,7 @@ -namespace Content.Server.Xenoarchaeology.Equipment.Components; +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Xenoarchaeology.Equipment.Components; /// /// This is used for a machine that biases @@ -7,6 +10,18 @@ [RegisterComponent] public sealed partial class TraversalDistorterComponent : Component { + [ViewVariables(VVAccess.ReadWrite)] + public float BiasChance; + + [DataField] + public float BaseBiasChance = 0.7f; + + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartBiasChance = "Manipulator"; + + [DataField] + public float PartRatingBiasChance = 1.1f; + [ViewVariables(VVAccess.ReadWrite)] public BiasDirection BiasDirection = BiasDirection.In; diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/TraversalDistorterSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/TraversalDistorterSystem.cs index 230e639af4..bb662925a9 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/TraversalDistorterSystem.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Systems/TraversalDistorterSystem.cs @@ -1,9 +1,12 @@ -using Content.Server.Popups; +using Content.Server.Construction; +using Content.Server.Popups; using Content.Server.Power.EntitySystems; using Content.Server.Xenoarchaeology.Equipment.Components; +using Content.Server.Xenoarchaeology.XenoArtifacts; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Placeable; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Xenoarchaeology.Equipment.Systems; @@ -20,6 +23,8 @@ public override void Initialize() SubscribeLocalEvent(OnInteract); SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnRefreshParts); + SubscribeLocalEvent(OnUpgradeExamine); SubscribeLocalEvent(OnItemPlaced); SubscribeLocalEvent(OnItemRemoved); @@ -68,10 +73,21 @@ private void OnExamine(EntityUid uid, TraversalDistorterComponent component, Exa examine = Loc.GetString("traversal-distorter-desc-out"); break; } - args.PushMarkup(examine); } + private void OnRefreshParts(EntityUid uid, TraversalDistorterComponent component, RefreshPartsEvent args) + { + var biasRating = args.PartRatings[component.MachinePartBiasChance]; + + component.BiasChance = component.BaseBiasChance * MathF.Pow(component.PartRatingBiasChance, biasRating - 1); + } + + private void OnUpgradeExamine(EntityUid uid, TraversalDistorterComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("traversal-distorter-upgrade-bias", component.BiasChance / component.BaseBiasChance); + } + private void OnItemPlaced(EntityUid uid, TraversalDistorterComponent component, ref ItemPlacedEvent args) { var bias = EnsureComp(args.OtherEntity); diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs index 955fe827d7..a7948aa7ff 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs @@ -206,6 +206,7 @@ public void ForceActivateArtifact(EntityUid uid, EntityUid? user = null, Artifac if (TryComp(uid, out var bias) && TryComp(bias.Provider, out var trav) && + _random.Prob(trav.BiasChance) && this.IsPowered(bias.Provider, EntityManager)) { switch (trav.BiasDirection) diff --git a/Content.Shared/Cargo/Components/SharedCargoTelepadComponent.cs b/Content.Shared/Cargo/Components/SharedCargoTelepadComponent.cs index 911ea41cca..7c8a362522 100644 --- a/Content.Shared/Cargo/Components/SharedCargoTelepadComponent.cs +++ b/Content.Shared/Cargo/Components/SharedCargoTelepadComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Construction.Prototypes; using Content.Shared.DeviceLinking; using Robust.Shared.Audio; using Robust.Shared.GameStates; @@ -13,29 +14,47 @@ namespace Content.Shared.Cargo.Components; public sealed partial class CargoTelepadComponent : Component { /// - /// The actual amount of time it takes to teleport from the telepad + /// The base amount of time it takes to teleport from the telepad /// - [DataField("delay"), ViewVariables(VVAccess.ReadWrite)] + [DataField] + public float BaseDelay = 10f; + + /// + /// The actual amount of time it takes to teleport from the telepad + /// + [DataField] public float Delay = 10f; /// - /// How much time we've accumulated until next teleport. + /// The machine part that affects + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] + public string MachinePartTeleportDelay = "Capacitor"; + + /// + /// A multiplier applied to for each level of + /// + [DataField] + public float PartRatingTeleportDelay = 0.8f; + + /// + /// How much time we've accumulated until next teleport. /// - [DataField("accumulator"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public float Accumulator; - [DataField("currentState")] + [DataField] public CargoTelepadState CurrentState = CargoTelepadState.Unpowered; - [DataField("teleportSound")] + [DataField] 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)] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] public string PrinterOutput = "PaperCargoInvoice"; - [DataField("receiverPort", customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] public string ReceiverPort = "OrderReceiver"; } diff --git a/Content.Shared/Cloning/CloningPodComponent.cs b/Content.Shared/Cloning/CloningPodComponent.cs index 082b92e8b1..c9a6fd4500 100644 --- a/Content.Shared/Cloning/CloningPodComponent.cs +++ b/Content.Shared/Cloning/CloningPodComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Construction.Prototypes; using Content.Shared.DeviceLinking; using Content.Shared.Materials; using Content.Shared.Random; @@ -38,6 +39,18 @@ public sealed partial class CloningPodComponent : Component [DataField] public ProtoId RequiredMaterial = "Biomass"; + /// + /// The multiplier for cloning duration + /// + [DataField] + public float PartRatingSpeedMultiplier = 0.75f; + + /// + /// The machine part that affects cloning speed + /// + [DataField] + public ProtoId MachinePartCloningSpeed = "Manipulator"; + /// /// The current amount of time it takes to clone a body /// @@ -66,6 +79,18 @@ public sealed partial class CloningPodComponent : Component Params = AudioParams.Default.WithVolume(4), }; + /// + /// The machine part that affects how much biomass is needed to clone a body. + /// + [DataField] + public float PartRatingMaterialMultiplier = 0.85f; + + /// + /// The machine part that decreases the amount of material needed for cloning + /// + [DataField] + public ProtoId MachinePartMaterialUse = "MatterBin"; + [ViewVariables(VVAccess.ReadWrite)] public CloningPodStatus Status; diff --git a/Content.Shared/Construction/MachinePartSystem.cs b/Content.Shared/Construction/MachinePartSystem.cs index 1a19040b41..01db7fbade 100644 --- a/Content.Shared/Construction/MachinePartSystem.cs +++ b/Content.Shared/Construction/MachinePartSystem.cs @@ -21,6 +21,7 @@ public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMachineBoardExamined); + SubscribeLocalEvent(OnMachinePartExamined); } private void OnMachineBoardExamined(EntityUid uid, MachineBoardComponent component, ExaminedEvent args) @@ -61,6 +62,20 @@ private void OnMachineBoardExamined(EntityUid uid, MachineBoardComponent compone } } + private void OnMachinePartExamined(EntityUid uid, MachinePartComponent component, ExaminedEvent args) + { + if (!args.IsInDetailsRange) + return; + + using (args.PushGroup(nameof(MachinePartComponent))) + { + args.PushMarkup(Loc.GetString("machine-part-component-on-examine-rating-text", + ("rating", component.Rating))); + args.PushMarkup(Loc.GetString("machine-part-component-on-examine-type-text", ("type", + Loc.GetString(_prototype.Index(component.PartType).Name)))); + } + } + public Dictionary GetMachineBoardMaterialCost(Entity entity, int coefficient = 1) { var (_, comp) = entity; diff --git a/Content.Shared/Materials/MaterialReclaimerComponent.cs b/Content.Shared/Materials/MaterialReclaimerComponent.cs index 3e72baf604..2fd6cd6fc8 100644 --- a/Content.Shared/Materials/MaterialReclaimerComponent.cs +++ b/Content.Shared/Materials/MaterialReclaimerComponent.cs @@ -1,100 +1,121 @@ -using Content.Shared.Whitelist; +using Content.Shared.Construction.Prototypes; +using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Materials; /// -/// This is a machine that handles converting entities -/// into the raw materials and chemicals that make them up. +/// This is a machine that handles converting entities +/// into the raw materials and chemicals that make them up. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] [Access(typeof(SharedMaterialReclaimerSystem))] public sealed partial class MaterialReclaimerComponent : Component { /// - /// Whether or not the machine has power. We put it here - /// so we can network and predict it. + /// Whether or not the machine has power. We put it here + /// so we can network and predict it. /// - [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + [DataField, AutoNetworkedField] public bool Powered; /// - /// An "enable" toggle for things like interfacing with machine linking + /// An "enable" toggle for things like interfacing with machine linking /// - [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + [DataField, AutoNetworkedField] public bool Enabled = true; /// - /// How efficiently the materials are reclaimed. - /// In practice, a multiplier per material when calculating the output of the reclaimer. + /// How efficiently the materials are reclaimed. + /// In practice, a multiplier per material when calculating the output of the reclaimer. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public float Efficiency = 1f; /// - /// Whether or not the process - /// speed scales with the amount of materials being processed - /// or if it's just + /// Whether or not the process + /// speed scales with the amount of materials being processed + /// or if it's just /// [DataField] public bool ScaleProcessSpeed = true; /// - /// How quickly it takes to consume X amount of materials per second. - /// For example, with a rate of 50, an entity with 100 total material takes 2 seconds to process. + /// How quickly it takes to consume X amount of materials per second. + /// For example, with a rate of 50, an entity with 100 total material takes 2 seconds to process. /// - [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + [DataField] + public float BaseMaterialProcessRate = 100f; + + /// + /// How quickly it takes to consume X amount of materials per second. + /// For example, with a rate of 50, an entity with 100 total material takes 2 seconds to process. + /// + [DataField, AutoNetworkedField] public float MaterialProcessRate = 100f; /// - /// The minimum amount fo time it can take to process an entity. - /// this value supercedes the calculated one using + /// Machine part whose rating modifies + /// + [DataField] + public ProtoId MachinePartProcessRate = "Manipulator"; + + /// + /// How much the machine part quality affects the /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] + public float PartRatingProcessRateMultiplier = 1.5f; + + /// + /// The minimum amount fo time it can take to process an entity. + /// this value supercedes the calculated one using + /// + [DataField] public TimeSpan MinimumProcessDuration = TimeSpan.FromSeconds(0.5f); /// - /// The id of our output solution + /// The id of our output solution /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public string SolutionContainerId = "output"; /// - /// a whitelist for what entities can be inserted into this reclaimer + /// a whitelist for what entities can be inserted into this reclaimer /// [DataField] public EntityWhitelist? Whitelist; /// - /// a blacklist for what entities cannot be inserted into this reclaimer + /// a blacklist for what entities cannot be inserted into this reclaimer /// [DataField] public EntityWhitelist? Blacklist; /// - /// The sound played when something is being processed. + /// The sound played when something is being processed. /// [DataField] public SoundSpecifier? Sound; /// - /// whether or not we cut off the sound early when the reclaiming ends. + /// whether or not we cut off the sound early when the reclaiming ends. /// [DataField] public bool CutOffSound = true; /// - /// When the next sound will be allowed to be played. Used to prevent spam. + /// When the next sound will be allowed to be played. Used to prevent spam. /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] [AutoPausedField] public TimeSpan NextSound; /// - /// Minimum time inbetween each + /// Minimum time inbetween each /// [DataField] public TimeSpan SoundCooldown = TimeSpan.FromSeconds(0.8f); @@ -102,10 +123,10 @@ public sealed partial class MaterialReclaimerComponent : Component public EntityUid? Stream; /// - /// A counter of how many items have been processed + /// A counter of how many items have been processed /// /// - /// I saw this on the recycler and i'm porting it because it's cute af + /// I saw this on the recycler and i'm porting it because it's cute af /// [DataField, AutoNetworkedField] public int ItemsProcessed; diff --git a/Content.Shared/Singularity/Components/SharedEmitterComponent.cs b/Content.Shared/Singularity/Components/SharedEmitterComponent.cs index c2e7af717b..cc6e8aeede 100644 --- a/Content.Shared/Singularity/Components/SharedEmitterComponent.cs +++ b/Content.Shared/Singularity/Components/SharedEmitterComponent.cs @@ -1,4 +1,5 @@ using System.Threading; +using Content.Shared.Construction.Prototypes; using Content.Shared.DeviceLinking; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -14,90 +15,130 @@ public sealed partial class EmitterComponent : Component { public CancellationTokenSource? TimerCancel; - // whether the power switch is in "on" - [ViewVariables] public bool IsOn; - // Whether the power switch is on AND the machine has enough power (so is actively firing) - [ViewVariables] public bool IsPowered; + /// + /// Whether the power switch is on + /// + [ViewVariables] + public bool IsOn; /// - /// counts the number of consecutive shots fired. + /// Whether the power switch is on AND the machine has enough power (so is actively firing) + /// + [ViewVariables] + public bool IsPowered; + + /// + /// counts the number of consecutive shots fired. /// [ViewVariables] public int FireShotCounter; /// - /// The entity that is spawned when the emitter fires. + /// The entity that is spawned when the emitter fires. /// - [DataField("boltType", customTypeSerializer: typeof(PrototypeIdSerializer))] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] public string BoltType = "EmitterBolt"; - [DataField("selectableTypes", customTypeSerializer: typeof(PrototypeIdListSerializer))] + [DataField(customTypeSerializer: typeof(PrototypeIdListSerializer))] public List SelectableTypes = new(); /// - /// The current amount of power being used. + /// The current amount of power being used. /// - [DataField("powerUseActive")] + [DataField] public int PowerUseActive = 600; /// - /// The amount of shots that are fired in a single "burst" + /// The amount of shots that are fired in a single "burst" /// - [DataField("fireBurstSize")] + [DataField] public int FireBurstSize = 3; /// - /// The time between each shot during a burst. + /// The time between each shot during a burst. /// - [DataField("fireInterval")] + [DataField] public TimeSpan FireInterval = TimeSpan.FromSeconds(2); /// - /// The current minimum delay between bursts. + /// The base amount of time between each shot during a burst. /// - [DataField("fireBurstDelayMin")] + [DataField] + public TimeSpan BaseFireInterval = TimeSpan.FromSeconds(2); + + /// + /// The current minimum delay between bursts. + /// + [DataField] public TimeSpan FireBurstDelayMin = TimeSpan.FromSeconds(4); /// - /// The current maximum delay between bursts. + /// The current maximum delay between bursts. /// - [DataField("fireBurstDelayMax")] + [DataField] public TimeSpan FireBurstDelayMax = TimeSpan.FromSeconds(10); /// - /// The visual state that is set when the emitter is turned on + /// The base minimum delay between shot bursts. + /// Used for machine part rating calculations. + /// + [DataField] + public TimeSpan BaseFireBurstDelayMin = TimeSpan.FromSeconds(4); + + /// + /// The base maximum delay between shot bursts. + /// Used for machine part rating calculations. + /// + [DataField] + public TimeSpan BaseFireBurstDelayMax = TimeSpan.FromSeconds(10); + + /// + /// The multiplier for the base delay between shot bursts as well as + /// the fire interval + /// + [DataField] + public float FireRateMultiplier = 0.8f; + + /// + /// The machine part that affects burst delay. + /// + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartFireRate = "Capacitor"; + + /// + /// The visual state that is set when the emitter is turned on /// - [DataField("onState")] + [DataField] public string? OnState = "beam"; /// - /// The visual state that is set when the emitter doesn't have enough power. + /// The visual state that is set when the emitter doesn't have enough power. /// - [DataField("underpoweredState")] + [DataField] public string? UnderpoweredState = "underpowered"; /// - /// Signal port that turns on the emitter. + /// Signal port that turns on the emitter. /// - [DataField("onPort", customTypeSerializer: typeof(PrototypeIdSerializer))] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] public string OnPort = "On"; /// - /// Signal port that turns off the emitter. + /// Signal port that turns off the emitter. /// - [DataField("offPort", customTypeSerializer: typeof(PrototypeIdSerializer))] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] public string OffPort = "Off"; /// - /// Signal port that toggles the emitter on or off. + /// Signal port that toggles the emitter on or off. /// - [DataField("togglePort", customTypeSerializer: typeof(PrototypeIdSerializer))] + [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] public string TogglePort = "Toggle"; /// - /// Map of signal ports to entity prototype IDs of the entity that will be fired. + /// Map of signal ports to entity prototype IDs of the entity that will be fired. /// - [DataField("setTypePorts", customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] + [DataField(customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] public Dictionary SetTypePorts = new(); } diff --git a/Resources/Locale/en-US/anomaly/anomaly.ftl b/Resources/Locale/en-US/anomaly/anomaly.ftl index da5882fa62..1609d77d91 100644 --- a/Resources/Locale/en-US/anomaly/anomaly.ftl +++ b/Resources/Locale/en-US/anomaly/anomaly.ftl @@ -3,6 +3,7 @@ anomaly-component-contact-damage = The anomaly sears off your skin! anomaly-vessel-component-anomaly-assigned = Anomaly assigned to vessel. anomaly-vessel-component-not-assigned = This vessel is not assigned to any anomaly. Try using a scanner on it. anomaly-vessel-component-assigned = This vessel is currently assigned to an anomaly. +anomaly-vessel-component-upgrade-output = point output anomaly-particles-delta = Delta particles anomaly-particles-epsilon = Epsilon particles diff --git a/Resources/Locale/en-US/atmos/gas-recycler-system.ftl b/Resources/Locale/en-US/atmos/gas-recycler-system.ftl index cc527adf5c..a72e137732 100644 --- a/Resources/Locale/en-US/atmos/gas-recycler-system.ftl +++ b/Resources/Locale/en-US/atmos/gas-recycler-system.ftl @@ -1,3 +1,6 @@ gas-recycler-reacting = It is [color=green]converting[/color] waste gases. gas-recycler-low-pressure = The input pressure is [color=darkred]too low[/color]. gas-recycler-low-temperature = The input temperature is [color=darkred]too low[/color]. + +gas-recycler-upgrade-min-temp = Minimum temperature +gas-recycler-upgrade-min-pressure = Minimum pressure diff --git a/Resources/Locale/en-US/atmos/portable-scrubber.ftl b/Resources/Locale/en-US/atmos/portable-scrubber.ftl index c4071b4acc..8aadf076d9 100644 --- a/Resources/Locale/en-US/atmos/portable-scrubber.ftl +++ b/Resources/Locale/en-US/atmos/portable-scrubber.ftl @@ -1 +1,4 @@ portable-scrubber-fill-level = It's at about [color=yellow]{$percent}%[/color] of its maximum internal pressure. + +portable-scrubber-component-upgrade-max-pressure = max pressure +portable-scrubber-component-upgrade-transfer-rate = transfer rate diff --git a/Resources/Locale/en-US/botany/components/seed-extractor-component.ftl b/Resources/Locale/en-US/botany/components/seed-extractor-component.ftl index 84d5a5ed28..c586a594a9 100644 --- a/Resources/Locale/en-US/botany/components/seed-extractor-component.ftl +++ b/Resources/Locale/en-US/botany/components/seed-extractor-component.ftl @@ -2,3 +2,5 @@ seed-extractor-component-interact-message = You extract some seeds from the { THE($name) }. seed-extractor-component-no-seeds = { CAPITALIZE(THE($name)) } has no seeds! + +seed-extractor-component-upgrade-seed-yield = seed yield diff --git a/Resources/Locale/en-US/cargo/cargo-console-component.ftl b/Resources/Locale/en-US/cargo/cargo-console-component.ftl index b56f4730cc..1caa810f1b 100644 --- a/Resources/Locale/en-US/cargo/cargo-console-component.ftl +++ b/Resources/Locale/en-US/cargo/cargo-console-component.ftl @@ -45,3 +45,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 diff --git a/Resources/Locale/en-US/chemistry/components/solution-heater-component.ftl b/Resources/Locale/en-US/chemistry/components/solution-heater-component.ftl new file mode 100644 index 0000000000..cecf15550c --- /dev/null +++ b/Resources/Locale/en-US/chemistry/components/solution-heater-component.ftl @@ -0,0 +1 @@ +solution-heater-upgrade-heat = Heat strength diff --git a/Resources/Locale/en-US/construction/components/machine-part-component.ftl b/Resources/Locale/en-US/construction/components/machine-part-component.ftl new file mode 100644 index 0000000000..0613f50516 --- /dev/null +++ b/Resources/Locale/en-US/construction/components/machine-part-component.ftl @@ -0,0 +1,2 @@ +machine-part-component-on-examine-rating-text = [color=white]Rating:[/color] [color=cyan]{$rating}[/color] +machine-part-component-on-examine-type-text = [color=white]Type:[/color] [color=cyan]{$type}[/color] diff --git a/Resources/Locale/en-US/kitchen/components/microwave-component.ftl b/Resources/Locale/en-US/kitchen/components/microwave-component.ftl index 0603b3c846..12346ee75d 100644 --- a/Resources/Locale/en-US/kitchen/components/microwave-component.ftl +++ b/Resources/Locale/en-US/kitchen/components/microwave-component.ftl @@ -9,6 +9,7 @@ microwave-component-suicide-multi-head-others-message = {$victim} is trying to c microwave-component-suicide-others-message = {$victim} is trying to cook their head! microwave-component-suicide-multi-head-message = You cook your heads! microwave-component-suicide-message = You cook your head! +microwave-component-upgrade-cook-time = cook time microwave-component-interact-full = It's full. microwave-component-interact-item-too-big = { CAPITALIZE(THE($item)) } is too big to fit in the microwave! diff --git a/Resources/Locale/en-US/kitchen/components/reagent-grinder-component.ftl b/Resources/Locale/en-US/kitchen/components/reagent-grinder-component.ftl index 8a3ca9eef8..3495128274 100644 --- a/Resources/Locale/en-US/kitchen/components/reagent-grinder-component.ftl +++ b/Resources/Locale/en-US/kitchen/components/reagent-grinder-component.ftl @@ -4,6 +4,9 @@ reagent-grinder-bound-user-interface-instant-button = INSTANT reagent-grinder-bound-user-interface-cook-time-label = COOK TIME reagent-grinder-component-cannot-put-entity-message = You can't put this in the reagent grinder! +reagent-grinder-component-upgrade-work-time = Work time +reagent-grinder-component-upgrade-storage = Storage + grinder-menu-title = All-In-One Grinder 3000 grinder-menu-grind-button = Grind grinder-menu-juice-button = Juice diff --git a/Resources/Locale/en-US/machine/machine.ftl b/Resources/Locale/en-US/machine/machine.ftl index ce8873df6f..2605950516 100644 --- a/Resources/Locale/en-US/machine/machine.ftl +++ b/Resources/Locale/en-US/machine/machine.ftl @@ -13,6 +13,11 @@ machine-part-name-manipulator = Manipulator machine-part-name-matter-bin = Matter Bin machine-part-name-power-cell = Power Cell +upgrade-power-draw = power draw +upgrade-max-charge = max charge +upgrade-power-supply = power supply +upgrade-power-supply-ramping = power ramp rate + two-way-lever-left = push left two-way-lever-right = push right two-way-lever-cant = can't push the lever that way! diff --git a/Resources/Locale/en-US/materials/materials.ftl b/Resources/Locale/en-US/materials/materials.ftl index dca520b5b4..5a4413348e 100644 --- a/Resources/Locale/en-US/materials/materials.ftl +++ b/Resources/Locale/en-US/materials/materials.ftl @@ -35,3 +35,6 @@ materials-raw-plasma = raw plasma materials-raw-uranium = raw uranium materials-raw-bananium = raw bananium materials-raw-salt = raw salt + +# Material Reclaimer +material-reclaimer-upgrade-process-rate = process rate diff --git a/Resources/Locale/en-US/medical/components/biomass-reclaimer-component.ftl b/Resources/Locale/en-US/medical/components/biomass-reclaimer-component.ftl index 443429c1ef..0c0b8faf59 100644 --- a/Resources/Locale/en-US/medical/components/biomass-reclaimer-component.ftl +++ b/Resources/Locale/en-US/medical/components/biomass-reclaimer-component.ftl @@ -1 +1,4 @@ biomass-reclaimer-suicide-others = {CAPITALIZE(THE($victim))} threw themselves into the biomass reclaimer! + +biomass-reclaimer-component-upgrade-speed = speed +biomass-reclaimer-component-upgrade-biomass-yield = biomass yield diff --git a/Resources/Locale/en-US/medical/components/cloning-pod-component.ftl b/Resources/Locale/en-US/medical/components/cloning-pod-component.ftl index b222d707a0..e92ac86a1e 100644 --- a/Resources/Locale/en-US/medical/components/cloning-pod-component.ftl +++ b/Resources/Locale/en-US/medical/components/cloning-pod-component.ftl @@ -1,3 +1,5 @@ cloning-pod-biomass = It currently has [color=red]{$number}[/color] units of biomass. +cloning-pod-component-upgrade-speed = cloning speed +cloning-pod-component-upgrade-biomass-requirement = biomass requirement cloning-pod-component-upgrade-emag-requirement = The card zaps something inside the cloning pod. diff --git a/Resources/Locale/en-US/medical/components/medical-scanner-component.ftl b/Resources/Locale/en-US/medical/components/medical-scanner-component.ftl index c4b1942654..da4dc7a384 100644 --- a/Resources/Locale/en-US/medical/components/medical-scanner-component.ftl +++ b/Resources/Locale/en-US/medical/components/medical-scanner-component.ftl @@ -2,3 +2,5 @@ medical-scanner-verb-enter = Enter medical-scanner-verb-noun-occupant = occupant + +medical-scanner-upgrade-cloning = Cloning fail chance diff --git a/Resources/Locale/en-US/medical/components/stasis-bed-component.ftl b/Resources/Locale/en-US/medical/components/stasis-bed-component.ftl new file mode 100644 index 0000000000..2d8a18c263 --- /dev/null +++ b/Resources/Locale/en-US/medical/components/stasis-bed-component.ftl @@ -0,0 +1 @@ +stasis-bed-component-upgrade-stasis = stasis effect diff --git a/Resources/Locale/en-US/nutrition/components/fat-extractor.ftl b/Resources/Locale/en-US/nutrition/components/fat-extractor.ftl index 20a31cd8c4..611b8ef540 100644 --- a/Resources/Locale/en-US/nutrition/components/fat-extractor.ftl +++ b/Resources/Locale/en-US/nutrition/components/fat-extractor.ftl @@ -1,3 +1,5 @@ +fat-extractor-component-rate = extraction rate + fat-extractor-fact-1 = Fats are triglycerides made up of a combination of different building blocks; glycerol and fatty acids. fat-extractor-fact-2 = Adults should get a recommended 20-35% of their energy intake from fat. fat-extractor-fact-3 = Being overweight or obese puts you at an increased risk of chronic diseases, such as cardiovascular diseases, metabolic syndrome, type 2 diabetes, and some types of cancers. diff --git a/Resources/Locale/en-US/shuttles/thruster.ftl b/Resources/Locale/en-US/shuttles/thruster.ftl index 94035811c7..faed6e8dd2 100644 --- a/Resources/Locale/en-US/shuttles/thruster.ftl +++ b/Resources/Locale/en-US/shuttles/thruster.ftl @@ -3,3 +3,5 @@ thruster-comp-disabled = The thruster is turned [color=red]off[/color]. thruster-comp-nozzle-direction = The nozzle is facing [color=yellow]{$direction}[/color]. thruster-comp-nozzle-exposed = The nozzle [color=green]exposed[/color] to space. thruster-comp-nozzle-not-exposed = The nozzle [color=red]is not exposed[/color] to space. + +thruster-comp-upgrade-thrust = Thrust strength diff --git a/Resources/Locale/en-US/singularity/components/emitter-component.ftl b/Resources/Locale/en-US/singularity/components/emitter-component.ftl index c71b3d6bdf..c7db1a93bb 100644 --- a/Resources/Locale/en-US/singularity/components/emitter-component.ftl +++ b/Resources/Locale/en-US/singularity/components/emitter-component.ftl @@ -11,5 +11,8 @@ comp-emitter-turned-off = The {$target} turns off. # Shows if the user attempts to activate the emitter while it's un-anchored. comp-emitter-not-anchored = The {$target} isn't anchored to the ground! +# Upgrades +emitter-component-upgrade-fire-rate = fire rate + emitter-component-current-type = The current selected type is: {$type}. emitter-component-type-set = Type set to: {$type} diff --git a/Resources/Locale/en-US/xenoarchaeology/traversal-distorter.ftl b/Resources/Locale/en-US/xenoarchaeology/traversal-distorter.ftl index 5c9eac57a5..af3039e864 100644 --- a/Resources/Locale/en-US/xenoarchaeology/traversal-distorter.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/traversal-distorter.ftl @@ -3,3 +3,5 @@ traversal-distorter-set-out = Traversal bias set to "out" traversal-distorter-desc-in = The affected artifact's traversal now favors moving inwards to the beginning. traversal-distorter-desc-out = The affected artifact's traversal now favors moving outwards towards more dangerous nodes. + +traversal-distorter-upgrade-bias = Bias effectiveness diff --git a/Resources/Migrations/migration.yml b/Resources/Migrations/migration.yml index 7f19699ad8..3b4a7178cf 100644 --- a/Resources/Migrations/migration.yml +++ b/Resources/Migrations/migration.yml @@ -126,28 +126,6 @@ DrinkGoldschlagerGlass: DrinkGildlagerGlass ClosetBase: ClosetSteelBase MonkeyCubeBox: VariantCubeBox -# 2024-01-08 -SalvagePartsT4Spawner: SalvageLootSpawner -SalvagePartsT3Spawner: SalvageLootSpawner -SalvagePartsT3T4Spawner: SalvageLootSpawner -SalvagePartsT2Spawner: SalvageLootSpawner -AdvancedCapacitorStockPart: CapacitorStockPart -SuperCapacitorStockPart: CapacitorStockPart -QuadraticCapacitorStockPart: CapacitorStockPart -NanoManipulatorStockPart: MicroManipulatorStockPart -PicoManipulatorStockPart: MicroManipulatorStockPart -FemtoManipulatorStockPart: MicroManipulatorStockPart -AdvancedMatterBinStockPart: MatterBinStockPart -SuperMatterBinStockPart: MatterBinStockPart -BluespaceMatterBinStockPart: MatterBinStockPart -AnsibleSubspaceStockPart: null -FilterSubspaceStockPart: null -AmplifierSubspaceStockPart: null -TreatmentSubspaceStockPart: null -AnalyzerSubspaceStockPart: null -CrystalSubspaceStockPart: null -TransmitterSubspaceStockPart: null - # 2024-01-10 ClothingHeadHatHoodRad: null diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml index 34bf32d8d7..4beffbc9c2 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml @@ -63,23 +63,78 @@ offset: 0.0 - type: entity - name: salvage loot spawner - id: SalvageLootSpawner + name: Salvage T2 Machine Parts Spawner + id: SalvagePartsT2Spawner parent: MarkerBase components: - type: Sprite layers: - state: red - - sprite: Objects/Weapons/Melee/crusher.rsi - state: icon + - sprite: Objects/Misc/stock_parts.rsi + state: advanced_matter_bin - type: RandomSpawner prototypes: - - WeaponCrusher - - WeaponCrusherDagger - - WeaponCrusherGlaive - - MiningDrill + - AdvancedCapacitorStockPart + - NanoManipulatorStockPart + - AdvancedMatterBinStockPart offset: 0.0 +- type: entity + parent: MarkerBase + id: SalvagePartsT3T4Spawner + name: tier 3/4 machine part + components: + - type: Sprite + layers: + - sprite: Objects/Misc/stock_parts.rsi + state: super_matter_bin + - type: RandomSpawner + rarePrototypes: + - QuadraticCapacitorStockPart + - FemtoManipulatorStockPart + - BluespaceMatterBinStockPart + rareChance: 0.05 + prototypes: + - SuperCapacitorStockPart + - PicoManipulatorStockPart + - SuperMatterBinStockPart + chance: 0.95 + offset: 0.0 + +- type: entity + parent: MarkerBase + id: SalvagePartsT3Spawner + name: tier 3 machine part + suffix: Spawner + components: + - type: Sprite + layers: + - sprite: Objects/Misc/stock_parts.rsi + state: super_matter_bin + - type: RandomSpawner + prototypes: + - SuperCapacitorStockPart + - PicoManipulatorStockPart + - SuperMatterBinStockPart + offset: 0.0 + +- type: entity + parent: MarkerBase + id: SalvagePartsT4Spawner + name: tier 4 machine part + suffix: Spawner + components: + - type: Sprite + layers: + - sprite: Objects/Misc/stock_parts.rsi + state: bluespace_matter_bin + - type: RandomSpawner + prototypes: + - QuadraticCapacitorStockPart + - PicoManipulatorStockPart + - BluespaceMatterBinStockPart + offset: 0.0 + - type: entity name: Salvage Mob Spawner id: SalvageMobSpawner @@ -228,3 +283,25 @@ - MobFleshLoverSalvage chance: 1 offset: 0.2 + +- type: entity + name: Salvage Loot Spawner + id: SalvageLootSpawner + parent: MarkerBase + components: + - type: Sprite + layers: + - state: red + - sprite: Structures/Storage/Crates/generic.rsi + state: icon + - type: RandomSpawner + rarePrototypes: + - SalvagePartsT2Spawner + - SalvagePartsT3Spawner + - SalvagePartsT3T4Spawner + - SalvagePartsT4Spawner + rareChance: 0.4 + prototypes: + - CrateSalvageAssortedGoodies + chance: 0.9 + offset: 0.2 diff --git a/Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml b/Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml index 341acb52f0..d90b03528e 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml @@ -16,6 +16,10 @@ sound: /Audio/SimpleStation14/Items/Handling/component_drop.ogg - type: EmitSoundOnLand sound: /Audio/SimpleStation14/Items/Handling/component_drop.ogg +# Rating 1 + - type: GuideHelp + guides: + - MachineUpgrading # Rating 1 @@ -69,3 +73,218 @@ - type: ReverseEngineering # Nyano recipes: - MatterBinStockPart + +# Rating 2 + +- type: entity + id: AdvancedCapacitorStockPart + name: advanced capacitor + parent: CapacitorStockPart + description: An advanced capacitor used in the construction of a variety of devices. + suffix: Rating 2 + components: + - type: Sprite + state: adv_capacitor + - type: MachinePart + rating: 2 + - type: ReverseEngineering # Nyano + difficulty: 2 + recipes: + - AdvancedCapacitorStockPart + +- type: entity + id: NanoManipulatorStockPart + name: advanced manipulator + parent: MicroManipulatorStockPart + description: An advanced manipulator used in the construction of a variety of devices. + suffix: Rating 2 + components: + - type: Sprite + state: nano_mani + - type: MachinePart + rating: 2 + - type: ReverseEngineering # Nyano + difficulty: 2 + recipes: + - NanoManipulatorStockPart + +- type: entity + id: AdvancedMatterBinStockPart + name: advanced matter bin + parent: MatterBinStockPart + description: An advanced matter bin used in the construction of a variety of devices. + suffix: Rating 2 + components: + - type: Sprite + state: advanced_matter_bin + - type: MachinePart + rating: 2 + - type: ReverseEngineering # Nyano + difficulty: 2 + recipes: + - AdvancedMatterBinStockPart + +# Rating 3 + +- type: entity + id: SuperCapacitorStockPart + name: super capacitor + parent: CapacitorStockPart + description: A super capacitor used in the construction of a variety of devices. + suffix: Rating 3 + components: + - type: Sprite + state: super_capacitor + - type: MachinePart + rating: 3 + - type: ReverseEngineering # Nyano + difficulty: 3 + recipes: + - SuperCapacitorStockPart + +- type: entity + id: PicoManipulatorStockPart + name: super manipulator + parent: MicroManipulatorStockPart + description: A super manipulator used in the construction of a variety of devices. + suffix: Rating 3 + components: + - type: Sprite + state: pico_mani + - type: MachinePart + rating: 3 + - type: ReverseEngineering # Nyano + difficulty: 3 + recipes: + - PicoManipulatorStockPart + +- type: entity + id: SuperMatterBinStockPart + name: super matter bin + parent: MatterBinStockPart + description: A super matter bin used in the construction of a variety of devices. + suffix: Rating 3 + components: + - type: Sprite + state: super_matter_bin + - type: MachinePart + rating: 3 + - type: ReverseEngineering # Nyano + difficulty: 3 + recipes: + - SuperMatterBinStockPart + +# Rating 4 + +- type: entity + id: QuadraticCapacitorStockPart + name: bluespace capacitor + parent: CapacitorStockPart + description: A bluespace capacitor used in the construction of a variety of devices. + suffix: Rating 4 + components: + - type: Sprite + state: quadratic_capacitor + - type: MachinePart + rating: 4 + - type: ReverseEngineering # Nyano + difficulty: 4 + recipes: + - QuadraticCapacitorStockPart + +- type: entity + id: FemtoManipulatorStockPart + name: bluespace manipulator + parent: MicroManipulatorStockPart + description: A bluespace manipulator used in the construction of a variety of devices. + suffix: Rating 4 + components: + - type: Sprite + state: femto_mani + - type: MachinePart + rating: 4 + - type: ReverseEngineering # Nyano + difficulty: 4 + recipes: + - FemtoManipulatorStockPart + +- type: entity + id: BluespaceMatterBinStockPart + name: bluespace matter bin + parent: MatterBinStockPart + description: A bluespace matter bin used in the construction of a variety of devices. + suffix: Rating 4 + components: + - type: Sprite + state: bluespace_matter_bin + - type: MachinePart + rating: 4 + - type: ReverseEngineering # Nyano + difficulty: 4 + recipes: + - BluespaceMatterBinStockPart + +# Subspace stock parts (REMOVE THESE) + +- type: entity + id: AnsibleSubspaceStockPart + name: subspace ansible + parent: BaseStockPart + description: A compact module capable of sensing extradimensional activity. + components: + - type: Sprite + state: subspace_ansible + +- type: entity + id: FilterSubspaceStockPart + name: hyperwave filter + parent: BaseStockPart + description: A tiny device capable of filtering and converting super-intense radiowaves. + components: + - type: Sprite + state: hyperwave_filter + +- type: entity + id: AmplifierSubspaceStockPart + name: subspace amplifier + parent: BaseStockPart + description: A compact micro-machine capable of amplifying weak subspace transmissions. + components: + - type: Sprite + state: subspace_amplifier + +- type: entity + id: TreatmentSubspaceStockPart + name: subspace treatment disk + parent: BaseStockPart + description: A compact micro-machine capable of stretching out hyper-compressed radio waves. + components: + - type: Sprite + state: treatment_disk + +- type: entity + id: AnalyzerSubspaceStockPart + name: subspace wavelength analyzer + parent: BaseStockPart + description: A sophisticated analyzer capable of analyzing cryptic subspace wavelengths. + components: + - type: Sprite + state: wavelength_analyzer + +- type: entity + id: CrystalSubspaceStockPart + name: ansible crystal + parent: BaseStockPart + description: A crystal made from pure glass used to transmit laser databursts to subspace. + components: + - type: Sprite + state: ansible_crystal + +- type: entity + id: TransmitterSubspaceStockPart + name: subspace transmitter + parent: BaseStockPart + description: A large piece of equipment used to open a window into the subspace dimension. + components: + - type: Sprite + state: subspace_transmitter diff --git a/Resources/Prototypes/Entities/Objects/Specific/Research/rped.yml b/Resources/Prototypes/Entities/Objects/Specific/Research/rped.yml index 84a51b4f34..fca8c8ae85 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Research/rped.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Research/rped.yml @@ -10,6 +10,9 @@ - type: Item sprite: Objects/Specific/Research/rped.rsi size: Normal + - type: GuideHelp + guides: + - MachineUpgrading - type: PartExchanger - type: Storage grid: diff --git a/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml b/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml index 681f0a390c..6e331a13a8 100644 --- a/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml +++ b/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml @@ -31,6 +31,9 @@ acts: ["Destruction"] - type: Machine board: ChemDispenserMachineCircuitboard + - type: UpgradePowerDraw + powerDrawMultiplier: 0.75 + scaling: Exponential - type: GuideHelp guides: - Chemicals diff --git a/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml b/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml index ab09a03fef..e6f08fe846 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml @@ -176,8 +176,8 @@ SetParticleZeta: AnomalousParticleZeta SetParticleSigma: AnomalousParticleSigma fireBurstSize: 1 - fireBurstDelayMin: 2 - fireBurstDelayMax: 6 + baseFireBurstDelayMin: 2 + baseFireBurstDelayMax: 6 - type: ApcPowerReceiver powerLoad: 100 - type: GuideHelp diff --git a/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml b/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml index 3019b8adf8..eeaae611c3 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml @@ -41,7 +41,7 @@ bounds: "-0.35,-0.35,0.35,0.35" density: 100 mask: - - ItemMask + - ItemMask hard: True - type: Transform anchored: true @@ -49,6 +49,9 @@ - type: ApcPowerReceiver powerLoad: 2500 needsPower: true + - type: UpgradePowerDraw + powerDrawMultiplier: 0.80 + scaling: Exponential - type: ItemPlacer whitelist: components: diff --git a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml index 18999a6ab2..2bea530e90 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml @@ -107,6 +107,9 @@ hard: False - type: Transform noRot: false + - type: UpgradePowerDraw + powerDrawMultiplier: 0.80 + scaling: Exponential - type: TraversalDistorter - type: ItemPlacer # don't limit the number of artifacts that can be biased diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index e5a9cb3541..52e9096791 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -294,6 +294,12 @@ - Implanter - PillCanister - ChemistryEmptyBottle01 + - AdvancedCapacitorStockPart + - AdvancedMatterBinStockPart + - NanoManipulatorStockPart + - SuperCapacitorStockPart + - SuperMatterBinStockPart + - PicoManipulatorStockPart - AdvMopItem - WeaponSprayNozzle - ClothingBackpackWaterTank diff --git a/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml b/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml index ec07294bfb..4ecd1c29e2 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml @@ -35,3 +35,6 @@ - type: SeedExtractor - type: Machine board: SeedExtractorMachineCircuitboard + - type: UpgradePowerDraw + powerDrawMultiplier: 0.75 + scaling: Exponential diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml index 4fa1bcbd91..35d65ffe87 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml @@ -171,6 +171,9 @@ materialWhiteList: [Plasma] - type: PortableGenerator startChance: 0.8 + - type: UpgradePowerSupplier + powerSupplyMultiplier: 1.25 + scaling: Exponential - type: GeneratorExhaustGas gasType: CarbonDioxide # 2 moles of gas for every sheet of plasma. @@ -228,6 +231,9 @@ storageLimit: 3000 materialWhiteList: [Uranium] - type: PortableGenerator + - type: UpgradePowerSupplier + powerSupplyMultiplier: 1.25 + scaling: Exponential - type: PowerMonitoringDevice group: Generator loadNodes: diff --git a/Resources/Prototypes/Entities/Structures/Power/smes.yml b/Resources/Prototypes/Entities/Structures/Power/smes.yml index 1e3559e5a9..762e8d375f 100644 --- a/Resources/Prototypes/Entities/Structures/Power/smes.yml +++ b/Resources/Prototypes/Entities/Structures/Power/smes.yml @@ -29,10 +29,15 @@ state: "smes-op1" shader: unshaded - type: Smes + - type: UpgradeBattery + maxChargeMultiplier: 2 + baseMaxCharge: 8000000 + - type: UpgradePowerSupplyRamping + scaling: Linear + supplyRampingMultiplier: 1 - type: Appearance - type: Battery startingCharge: 0 - maxCharge: 8000000 - type: ExaminableBattery - type: NodeContainer examinable: true diff --git a/Resources/Prototypes/Entities/Structures/Power/substation.yml b/Resources/Prototypes/Entities/Structures/Power/substation.yml index 347b18ecae..489cfff659 100644 --- a/Resources/Prototypes/Entities/Structures/Power/substation.yml +++ b/Resources/Prototypes/Entities/Structures/Power/substation.yml @@ -17,8 +17,13 @@ shader: unshaded - state: full shader: unshaded + - type: UpgradeBattery + maxChargeMultiplier: 2 + baseMaxCharge: 2500000 + - type: UpgradePowerSupplyRamping + scaling: Linear + supplyRampingMultiplier: 1 - type: Battery - maxCharge: 2500000 startingCharge: 0 - type: ExaminableBattery - type: PointLight diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml index f87be42659..eb299e3f3a 100644 --- a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml +++ b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml @@ -143,6 +143,7 @@ - type: Thruster thrusterType: Angular requireSpace: false + baseThrust: 2000 thrust: 2000 machinePartThrust: Manipulator - type: Sprite @@ -192,6 +193,9 @@ collection: MetalBreak - !type:ChangeConstructionNodeBehavior node: machineFrame + - type: UpgradePowerDraw + powerDrawMultiplier: 0.75 + scaling: Exponential - type: Damageable damageContainer: Inorganic damageModifierSet: Electronic @@ -216,6 +220,7 @@ - type: Thruster thrusterType: Angular requireSpace: false + baseThrust: 100 thrust: 100 - type: ApcPowerReceiver needsPower: false diff --git a/Resources/Prototypes/Guidebook/science.yml b/Resources/Prototypes/Guidebook/science.yml index a21be1678c..c73b666f68 100644 --- a/Resources/Prototypes/Guidebook/science.yml +++ b/Resources/Prototypes/Guidebook/science.yml @@ -7,6 +7,7 @@ - AnomalousResearch - Xenoarchaeology - Robotics + - MachineUpgrading - Psionics # Nyanotrasen - Psionics guidebook # - AltarsGolemancy # When it's added # Nyanotrasen - Golemancy guidebook - ReverseEngineering # Nyanotrasen - Reverse Engineering guidebook @@ -60,6 +61,11 @@ name: guide-entry-traversal-distorter text: "/ServerInfo/Guidebook/Science/TraversalDistorter.xml" +- type: guideEntry + id: MachineUpgrading + name: guide-entry-machine-upgrading + text: "/ServerInfo/Guidebook/Science/MachineUpgrading.xml" + - type: guideEntry id: Cyborgs name: guide-entry-cyborgs diff --git a/Resources/Prototypes/Recipes/Lathes/Parts.yml b/Resources/Prototypes/Recipes/Lathes/Parts.yml index 90cff2174d..496bc3a8a4 100644 --- a/Resources/Prototypes/Recipes/Lathes/Parts.yml +++ b/Resources/Prototypes/Recipes/Lathes/Parts.yml @@ -1,3 +1,4 @@ +#Rating 1 - type: latheRecipe id: CapacitorStockPart result: CapacitorStockPart @@ -24,3 +25,62 @@ materials: Steel: 50 Plastic: 50 + +#Rating 2 +- type: latheRecipe + id: AdvancedCapacitorStockPart + result: AdvancedCapacitorStockPart + completetime: 3 + materials: + Steel: 80 + Plastic: 80 + Plasma: 75 + +- type: latheRecipe + id: AdvancedMatterBinStockPart + result: AdvancedMatterBinStockPart + completetime: 3 + materials: + Steel: 80 + Plastic: 80 + Plasma: 75 + +- type: latheRecipe + id: NanoManipulatorStockPart + result: NanoManipulatorStockPart + completetime: 3 + materials: + Steel: 80 + Plastic: 80 + Plasma: 75 + +#Rating 3 +- type: latheRecipe + id: SuperCapacitorStockPart + result: SuperCapacitorStockPart + completetime: 3 + materials: + Steel: 150 + Plastic: 150 + Plasma: 75 + Gold: 75 + +- type: latheRecipe + id: SuperMatterBinStockPart + result: SuperMatterBinStockPart + completetime: 3 + materials: + Steel: 150 + Plastic: 150 + Plasma: 75 + Gold: 75 + +- type: latheRecipe + id: PicoManipulatorStockPart + result: PicoManipulatorStockPart + completetime: 3 + materials: + Steel: 150 + Plastic: 150 + Plasma: 75 + Gold: 75 diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml index d46e1db144..85523033f8 100644 --- a/Resources/Prototypes/Research/experimental.yml +++ b/Resources/Prototypes/Research/experimental.yml @@ -84,6 +84,20 @@ # Tier 2 +- type: technology + id: AdvancedParts + name: research-technology-advanced-parts + icon: + sprite: Objects/Misc/stock_parts.rsi + state: advanced_matter_bin + discipline: Experimental + tier: 2 + cost: 10000 + recipeUnlocks: + - AdvancedCapacitorStockPart + - AdvancedMatterBinStockPart + - NanoManipulatorStockPart + - type: technology id: AbnormalArtifactManipulation name: research-technology-abnormal-artifact-manipulation @@ -155,6 +169,20 @@ # Tier 3 +- type: technology + id: SuperParts + name: research-technology-super-parts + icon: + sprite: Objects/Misc/stock_parts.rsi + state: super_matter_bin + discipline: Experimental + tier: 3 + cost: 15000 + recipeUnlocks: + - SuperCapacitorStockPart + - SuperMatterBinStockPart + - PicoManipulatorStockPart + #- type: technology # DeltaV - LRP # id: GravityManipulation # name: research-technology-gravity-manipulation diff --git a/Resources/Prototypes/XenoArch/Effects/normal_effects.yml b/Resources/Prototypes/XenoArch/Effects/normal_effects.yml index b9564c0366..0a0b9bcbcc 100644 --- a/Resources/Prototypes/XenoArch/Effects/normal_effects.yml +++ b/Resources/Prototypes/XenoArch/Effects/normal_effects.yml @@ -584,6 +584,24 @@ messages: - shuffle-artifact-popup +- type: artifactEffect + id: EffectT4PartsSpawn + targetDepth: 3 + effectHint: artifact-effect-hint-creation + components: + - type: SpawnArtifact + maxSpawns: 10 + spawns: + - id: QuadraticCapacitorStockPart + prob: 0.5 + maxAmount: 3 + - id: FemtoManipulatorStockPart + prob: 0.5 + maxAmount: 3 + - id: BluespaceMatterBinStockPart + prob: 0.5 + maxAmount: 3 + - type: artifactEffect id: EffectFoamDangerous targetDepth: 3 diff --git a/Resources/ServerInfo/Guidebook/Science/MachineUpgrading.xml b/Resources/ServerInfo/Guidebook/Science/MachineUpgrading.xml new file mode 100644 index 0000000000..286219b4d9 --- /dev/null +++ b/Resources/ServerInfo/Guidebook/Science/MachineUpgrading.xml @@ -0,0 +1,38 @@ + +# Machine Upgrading + +Machines help the station run smoothly, and as a scientist, you can help them run even better! + +## Parts +Stock Parts: + + + + + +You can examine each machine part to see both the type and the rating, which range from 1 to 4. + +Parts of higher levels can be researched as well as found through artifacts or salvage. + + + + + + +## Upgrading +To know if a machine can be upgraded, you can examine it and check for the [color=#a4885c]lightning bolt[/color] icon in the lower right corner. Clicking on it will allow you to see what kinds of upgrades the machine has. + +To check what parts a machine needs, you can examine its board. Try it here: + + + + + + +You can use any rating part for any part requirement. Using higher rated parts will increase how effective the machine is. + +If you want to upgrade an existing machine, simply deconstruct it with a screwdriver and crowbar, and replace the existing parts with parts of a higher level. + +You can also quickly upgrade machines by using an RPED, loading it with machine parts, and then clicking on a machine. It will quickly be upgraded with whatever parts were inserted. + + From f126bb4149d01050760818211bcec10d0a418f2f Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 21 Sep 2024 18:46:59 -0400 Subject: [PATCH 03/44] [Port] Uplink Discounts From White Dream (#930) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description This is a port of https://github.com/WWhiteDreamProject/wwdpublic/pull/11 from White Dream. This feature selects random items in the traitor uplink each round to be discounted and moved to the Discount tab, which are the same for every traitor. This in theory helps encourage players to be spontaneous, and use items that they otherwise might not normally consider using, which helps mix things up from round to round.

Media

> # Описание PR > Порт скидок в аплинке. > > # Изменения > 🆑 Spatison > > * add: Added discounts in uplink / Добавлены скидки в аплинк

# Changelog :cl: Spatison add: Added discounts in uplink / Добавлены скидки в аплинк --------- Signed-off-by: VMSolidus Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com> Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- Content.Client/Store/Ui/StoreMenu.xaml.cs | 5 ++ .../Store/Systems/StoreSystem.Ui.cs | 6 ++ Content.Server/Store/Systems/StoreSystem.cs | 6 +- .../StoreDiscount/StoreDiscountSystem.cs | 55 +++++++++++++++++++ .../Store/ListingLocalisationHelpers.cs | 5 ++ Content.Shared/Store/ListingPrototype.cs | 18 ++++++ Content.Shared/Store/StorePresetPrototype.cs | 4 ++ .../StoreDiscount/SalesSpecifier.cs | 38 +++++++++++++ Resources/Locale/en-US/store/sales.ftl | 2 + Resources/Locale/ru-RU/store/sales.ftl | 2 + .../Prototypes/Catalog/uplink_catalog.yml | 38 ++++++++++++- Resources/Prototypes/Store/presets.yml | 8 +++ .../Prototypes/_White/Store/categories.yml | 4 ++ 13 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 Content.Server/StoreDiscount/StoreDiscountSystem.cs create mode 100644 Content.Shared/StoreDiscount/SalesSpecifier.cs create mode 100644 Resources/Locale/en-US/store/sales.ftl create mode 100644 Resources/Locale/ru-RU/store/sales.ftl create mode 100644 Resources/Prototypes/_White/Store/categories.yml diff --git a/Content.Client/Store/Ui/StoreMenu.xaml.cs b/Content.Client/Store/Ui/StoreMenu.xaml.cs index b7a2c285fe..7eb597f2f3 100644 --- a/Content.Client/Store/Ui/StoreMenu.xaml.cs +++ b/Content.Client/Store/Ui/StoreMenu.xaml.cs @@ -3,6 +3,7 @@ using Content.Client.Message; using Content.Shared.FixedPoint; using Content.Shared.Store; +using Content.Client.Stylesheets; using Robust.Client.AutoGenerated; using Robust.Client.GameObjects; using Robust.Client.Graphics; @@ -147,6 +148,10 @@ private void AddListingGui(ListingData listing) } var newListing = new StoreListingControl(listing, GetListingPriceString(listing), hasBalance, texture); + + if (listing.DiscountValue > 0) + newListing.StoreItemBuyButton.AddStyleClass(StyleNano.ButtonColorDangerDefault.ToString()); + newListing.StoreItemBuyButton.OnButtonDown += args => OnListingButtonPressed?.Invoke(args, listing); diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index 25f64ba4b6..7187a70476 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -265,6 +265,12 @@ private void OnBuyRequest(EntityUid uid, StoreComponent component, StoreBuyListi listing.PurchaseAmount++; //track how many times something has been purchased _audio.PlayEntity(component.BuySuccessSound, msg.Session, uid); //cha-ching! + if (listing.SaleLimit != 0 && listing.DiscountValue > 0 && listing.PurchaseAmount >= listing.SaleLimit) + { + listing.DiscountValue = 0; + listing.Cost = listing.OldCost; + } + UpdateUserInterface(buyer, uid, component); } diff --git a/Content.Server/Store/Systems/StoreSystem.cs b/Content.Server/Store/Systems/StoreSystem.cs index 72aeb29d19..a86dffef63 100644 --- a/Content.Server/Store/Systems/StoreSystem.cs +++ b/Content.Server/Store/Systems/StoreSystem.cs @@ -10,6 +10,7 @@ using Robust.Server.GameObjects; using Robust.Shared.Prototypes; using System.Linq; +using Content.Server.StoreDiscount; using Robust.Shared.Utility; namespace Content.Server.Store.Systems; @@ -22,6 +23,7 @@ public sealed partial class StoreSystem : EntitySystem { [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly StoreDiscountSystem _storeDiscount = default!; public override void Initialize() { @@ -199,6 +201,8 @@ public void InitializeFromPreset(StorePresetPrototype preset, EntityUid uid, Sto if (component.Balance == new Dictionary() && preset.InitialBalance != null) //if we don't have a value stored, use the preset TryAddCurrency(preset.InitialBalance, uid, component); + _storeDiscount.ApplyDiscounts(component.Listings, preset); + var ui = _ui.GetUiOrNull(uid, StoreUiKey.Key); if (ui != null) { @@ -225,7 +229,7 @@ public CurrencyInsertAttemptEvent(EntityUid user, EntityUid target, EntityUid us /// -/// Nyano/DeltaV Code. For penguin bombs and what not. +/// Nyano/DeltaV Code. For penguin bombs and what not. /// Raised on an item when it is purchased. /// An item may need to set it upself up for its purchaser. /// For example, to make sure it isn't hostile to them or diff --git a/Content.Server/StoreDiscount/StoreDiscountSystem.cs b/Content.Server/StoreDiscount/StoreDiscountSystem.cs new file mode 100644 index 0000000000..8f77eba780 --- /dev/null +++ b/Content.Server/StoreDiscount/StoreDiscountSystem.cs @@ -0,0 +1,55 @@ +using System.Linq; +using Content.Shared.FixedPoint; +using Content.Shared.Store; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server.StoreDiscount; + +public sealed class StoreDiscountSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + + public void ApplyDiscounts(IEnumerable listings, StorePresetPrototype store) + { + if (!store.Sales.Enabled) + return; + + var count = _random.Next(store.Sales.MinItems, store.Sales.MaxItems + 1); + + listings = listings + .Where(l => + !l.SaleBlacklist + && l.Cost.Any(x => x.Value > 1) + && store.Categories.Overlaps(ChangedFormatCategories(l.Categories))) + .OrderBy(_ => _random.Next()).Take(count).ToList(); + + foreach (var listing in listings) + { + var sale = GetDiscount(store.Sales.MinMultiplier, store.Sales.MaxMultiplier); + var newCost = listing.Cost.ToDictionary(x => x.Key, + x => FixedPoint2.New(Math.Max(1, (int) MathF.Round(x.Value.Float() * sale)))); + + if (listing.Cost.All(x => x.Value.Int() == newCost[x.Key].Int())) + continue; + + var key = listing.Cost.First(x => x.Value > 0).Key; + listing.OldCost = listing.Cost; + listing.DiscountValue = 100 - (newCost[key] / listing.Cost[key] * 100).Int(); + listing.Cost = newCost; + listing.Categories = new() {store.Sales.SalesCategory}; + } + } + + private IEnumerable ChangedFormatCategories(List> categories) + { + var modified = from p in categories select p.Id; + + return modified; + } + + private float GetDiscount(float minMultiplier, float maxMultiplier) + { + return _random.NextFloat() * (maxMultiplier - minMultiplier) + minMultiplier; + } +} diff --git a/Content.Shared/Store/ListingLocalisationHelpers.cs b/Content.Shared/Store/ListingLocalisationHelpers.cs index 882300109c..19cd029488 100644 --- a/Content.Shared/Store/ListingLocalisationHelpers.cs +++ b/Content.Shared/Store/ListingLocalisationHelpers.cs @@ -18,6 +18,11 @@ public static string GetLocalisedNameOrEntityName(ListingData listingData, IProt else if (listingData.ProductEntity != null) name = prototypeManager.Index(listingData.ProductEntity.Value).Name; + if (listingData.DiscountValue > 0) + name += " " + Loc.GetString("store-sales-amount", ("amount", listingData.DiscountValue)); + else if (listingData.OldCost.Count > 0) + name += " " + Loc.GetString("store-sales-over"); + return name; } diff --git a/Content.Shared/Store/ListingPrototype.cs b/Content.Shared/Store/ListingPrototype.cs index d3d2e13cdf..0b59ab48cb 100644 --- a/Content.Shared/Store/ListingPrototype.cs +++ b/Content.Shared/Store/ListingPrototype.cs @@ -109,6 +109,19 @@ public partial class ListingData : IEquatable, ICloneable [DataField] public TimeSpan RestockTime = TimeSpan.Zero; + [DataField] + public int SaleLimit = 3; + + [DataField] + public bool SaleBlacklist; + + public int DiscountValue; + + public Dictionary, FixedPoint2> OldCost = new(); + + [DataField] + public List Components = new(); + public bool Equals(ListingData? listing) { if (listing == null) @@ -166,6 +179,11 @@ public object Clone() ProductEvent = ProductEvent, PurchaseAmount = PurchaseAmount, RestockTime = RestockTime, + SaleLimit = SaleLimit, + SaleBlacklist = SaleBlacklist, + DiscountValue = DiscountValue, + OldCost = OldCost, + Components = Components, }; } } diff --git a/Content.Shared/Store/StorePresetPrototype.cs b/Content.Shared/Store/StorePresetPrototype.cs index ce7f0312b6..41ee510bd8 100644 --- a/Content.Shared/Store/StorePresetPrototype.cs +++ b/Content.Shared/Store/StorePresetPrototype.cs @@ -1,3 +1,4 @@ +using Content.Shared.StoreDiscount; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; @@ -38,4 +39,7 @@ public sealed partial class StorePresetPrototype : IPrototype /// [DataField("currencyWhitelist", customTypeSerializer: typeof(PrototypeIdHashSetSerializer))] public HashSet CurrencyWhitelist { get; private set; } = new(); + + [DataField] + public SalesSpecifier Sales { get; private set; } = new(); } diff --git a/Content.Shared/StoreDiscount/SalesSpecifier.cs b/Content.Shared/StoreDiscount/SalesSpecifier.cs new file mode 100644 index 0000000000..21539f85d4 --- /dev/null +++ b/Content.Shared/StoreDiscount/SalesSpecifier.cs @@ -0,0 +1,38 @@ +namespace Content.Shared.StoreDiscount; + +[DataDefinition] +public sealed partial class SalesSpecifier +{ + [DataField] + public bool Enabled { get; private set; } + + [DataField] + public float MinMultiplier { get; private set; } + + [DataField] + public float MaxMultiplier { get; private set; } + + [DataField] + public int MinItems { get; private set; } + + [DataField] + public int MaxItems { get; private set; } + + [DataField] + public string SalesCategory { get; private set; } = string.Empty; + + public SalesSpecifier() + { + } + + public SalesSpecifier(bool enabled, float minMultiplier, float maxMultiplier, int minItems, int maxItems, + string salesCategory) + { + Enabled = enabled; + MinMultiplier = minMultiplier; + MaxMultiplier = maxMultiplier; + MinItems = minItems; + MaxItems = maxItems; + SalesCategory = salesCategory; + } +} diff --git a/Resources/Locale/en-US/store/sales.ftl b/Resources/Locale/en-US/store/sales.ftl new file mode 100644 index 0000000000..7223a8a0dc --- /dev/null +++ b/Resources/Locale/en-US/store/sales.ftl @@ -0,0 +1,2 @@ +store-sales-amount = [DISCOUNT] { $amount }%! +store-sales-over = [The sale is over] diff --git a/Resources/Locale/ru-RU/store/sales.ftl b/Resources/Locale/ru-RU/store/sales.ftl new file mode 100644 index 0000000000..93f1798fe7 --- /dev/null +++ b/Resources/Locale/ru-RU/store/sales.ftl @@ -0,0 +1,2 @@ +store-sales-amount = [СКИДКА] { $amount }%! +store-sales-over = [Скидка закончилась] diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index a1a60e3fef..bdd27e83a8 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -10,6 +10,7 @@ Telecrystal: 3 categories: - UplinkWeapons + saleLimit: 1 - type: listing id: UplinkRevolverPython @@ -20,6 +21,7 @@ Telecrystal: 8 # Originally was 13 TC but was not used due to high cost categories: - UplinkWeapons + saleLimit: 1 # Inbuilt suppressor so it's sneaky + more expensive. - type: listing @@ -31,6 +33,7 @@ Telecrystal: 4 categories: - UplinkWeapons + saleLimit: 1 # Poor accuracy, slow to fire, cheap option - type: listing @@ -42,6 +45,7 @@ Telecrystal: 1 categories: - UplinkWeapons + saleLimit: 1 - type: listing id: UplinkEsword @@ -53,6 +57,7 @@ Telecrystal: 8 categories: - UplinkWeapons + saleLimit: 2 - type: listing id: UplinkEnergyDagger @@ -64,6 +69,7 @@ Telecrystal: 2 categories: - UplinkWeapons + saleLimit: 1 - type: listing id: UplinkThrowingKnivesKit @@ -85,6 +91,7 @@ Telecrystal: 8 categories: - UplinkWeapons + saleLimit: 1 - type: listing id: UplinkDisposableTurret @@ -100,6 +107,7 @@ blacklist: tags: - NukeOpsUplink + saleLimit: 2 - type: listing id: BaseBallBatHomeRun @@ -112,6 +120,7 @@ Telecrystal: 16 categories: - UplinkWeapons + saleLimit: 1 # Explosives @@ -214,6 +223,7 @@ whitelist: tags: - NukeOpsUplink + saleLimit: 1 - type: listing id: UplinkC4Bundle @@ -224,6 +234,7 @@ Telecrystal: 12 #you're buying bulk so its a 25% discount categories: - UplinkExplosives + saleLimit: 1 - type: listing id: UplinkEmpGrenade @@ -261,6 +272,7 @@ blacklist: tags: - NukeOpsUplink + saleLimit: 1 - type: listing id: UplinkSyndicateBombNukie @@ -276,6 +288,7 @@ whitelist: tags: - NukeOpsUplink + saleLimit: 1 - type: listing id: UplinkClusterGrenade @@ -451,6 +464,7 @@ blacklist: tags: - NukeOpsUplink + saleLimit: 1 - type: listing id: UplinkReinforcementRadioSyndicateNukeops # Version for Nukeops that spawns an agent with the NukeOperative component. @@ -467,6 +481,7 @@ whitelist: tags: - NukeOpsUplink + saleLimit: 1 - type: listing id: UplinkReinforcementRadioSyndicateCyborgAssault @@ -483,6 +498,7 @@ whitelist: tags: - NukeOpsUplink + saleLimit: 1 - type: listing id: UplinkReinforcementRadioSyndicateMonkey @@ -515,6 +531,7 @@ whitelist: tags: - NukeOpsUplink + saleLimit: 1 - type: listing id: UplinkStealthBox @@ -545,7 +562,6 @@ productEntity: EncryptionKeyBinary cost: Telecrystal: 1 - categories: - UplinkUtility @@ -748,6 +764,7 @@ blacklist: tags: - NukeOpsUplink + saleBlacklist: true - type: listing id: UplinkDeathRattle @@ -821,6 +838,7 @@ blacklist: components: - SurplusBundle + saleLimit: 1 - type: listing id: UplinkChemistryKitBundle @@ -862,6 +880,7 @@ blacklist: components: - SurplusBundle + saleLimit: 1 - type: listing id: UplinkSniperBundle @@ -873,6 +892,7 @@ Telecrystal: 12 categories: - UplinkBundles + saleLimit: 1 - type: listing id: UplinkC20RBundle @@ -884,6 +904,7 @@ Telecrystal: 17 categories: - UplinkBundles + saleLimit: 1 - type: listing id: UplinkBulldogBundle @@ -895,6 +916,7 @@ Telecrystal: 20 categories: - UplinkBundles + saleLimit: 1 - type: listing id: UplinkGrenadeLauncherBundle @@ -906,6 +928,7 @@ Telecrystal: 25 categories: - UplinkBundles + saleLimit: 1 - type: listing id: UplinkL6SawBundle @@ -917,6 +940,7 @@ Telecrystal: 30 categories: - UplinkBundles + saleLimit: 1 - type: listing id: UplinkZombieBundle @@ -937,6 +961,7 @@ blacklist: components: - SurplusBundle + saleLimit: 1 - type: listing id: UplinkSurplusBundle @@ -956,6 +981,7 @@ blacklist: components: - SurplusBundle + saleBlacklist: true - type: listing id: UplinkSuperSurplusBundle @@ -975,6 +1001,7 @@ blacklist: components: - SurplusBundle + saleBlacklist: true # Tools @@ -1113,6 +1140,7 @@ - !type:BuyerJobCondition whitelist: - Chaplain + saleLimit: 1 - type: listing id: uplinkRevolverCapGunFake @@ -1128,6 +1156,7 @@ whitelist: - Mime - Clown + saleLimit: 1 - type: listing id: uplinkBananaPeelExplosive @@ -1172,6 +1201,7 @@ - !type:BuyerJobCondition whitelist: - Clown + saleLimit: 1 - type: listing id: uplinkHotPotato @@ -1335,6 +1365,7 @@ Telecrystal: 8 categories: - UplinkArmor + saleLimit: 1 - type: listing id: UplinkHardsuitSyndieElite @@ -1346,6 +1377,7 @@ Telecrystal: 10 categories: - UplinkArmor + saleLimit: 1 - type: listing id: UplinkClothingOuterHardsuitJuggernaut @@ -1357,6 +1389,7 @@ Telecrystal: 12 categories: - UplinkArmor + saleLimit: 1 # Misc @@ -1425,6 +1458,7 @@ whitelist: tags: - NukeOpsUplink + saleLimit: 1 - type: listing id: UplinkSoapSyndie @@ -1515,6 +1549,7 @@ Telecrystal: 12 categories: - UplinkMisc + saleLimit: 1 - type: listing id: UplinkBribe @@ -1541,6 +1576,7 @@ whitelist: tags: - NukeOpsUplink + saleLimit: 1 - type: listing id: UplinkBackpackSyndicate diff --git a/Resources/Prototypes/Store/presets.yml b/Resources/Prototypes/Store/presets.yml index e623f4c8cd..bbf9699795 100644 --- a/Resources/Prototypes/Store/presets.yml +++ b/Resources/Prototypes/Store/presets.yml @@ -13,5 +13,13 @@ - UplinkJob - UplinkArmor - UplinkPointless + - UplinkSales currencyWhitelist: - Telecrystal + sales: + enabled: true + minMultiplier: 0.2 + maxMultiplier: 0.8 + minItems: 3 + maxItems: 8 + salesCategory: UplinkSales diff --git a/Resources/Prototypes/_White/Store/categories.yml b/Resources/Prototypes/_White/Store/categories.yml new file mode 100644 index 0000000000..cb9cfbc88f --- /dev/null +++ b/Resources/Prototypes/_White/Store/categories.yml @@ -0,0 +1,4 @@ +- type: storeCategory + id: UplinkSales + name: Sales + priority: 10 From 331d68d0681fba2fddda866fd63f5fc0ad4ae488 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sat, 21 Sep 2024 22:47:34 +0000 Subject: [PATCH 04/44] Automatic Changelog Update (#917) --- Resources/Changelog/Changelog.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f4bc13c117..bbb35f6773 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -6576,3 +6576,10 @@ Entries: id: 6381 time: '2024-09-20T21:47:16.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/940 +- author: VMSolidus + changes: + - type: Add + message: Part Upgrading has returned! + id: 6382 + time: '2024-09-21T22:46:49.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/917 From 1b431230b14a978da5d7230ec09277d57857095a Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sat, 21 Sep 2024 22:48:59 +0000 Subject: [PATCH 05/44] Automatic Changelog Update (#930) --- Resources/Changelog/Changelog.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index bbb35f6773..2477a35b91 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -6583,3 +6583,10 @@ Entries: id: 6382 time: '2024-09-21T22:46:49.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/917 +- author: Spatison + changes: + - type: Add + message: Added discounts in uplink / Добавлены скидки в аплинк + id: 6383 + time: '2024-09-21T22:46:59.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/930 From 61e1c8cc97c1d129c273b852c53206df333a52d0 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 21 Sep 2024 18:50:00 -0400 Subject: [PATCH 06/44] Psionic "Heal Other" Powers (#942) # Description This PR introduces two new Psionic Powers, Healing Word, and Breath of Life, both utilizing a new PsionicHealOtherSystem, which operates on datafield event arguments rather than a "hardcoded" component. Thus, any number of powers can be created which share this system. Healing Word is a power that features a short cast time, and heals a small amount of each damage type to a target(while reducing the target's rot timer slightly). It has a relatively short cooldown, and a low glimmer cost. Breath of Life by contrast, is an extremely rare power with a longer cast time, healing a much larger amount of each damage type to a target, reduces rot significantly, and attempts to revive the target. It has a 2 minute cooldown, and a high glimmer cost.

Media

![image](https://github.com/user-attachments/assets/ba01ccce-639f-4b03-84bb-55f96b5aeda3)

# Changelog :cl: - add: Healing Word has been added as a new Psionic Power. When cast on another person, it heals a small amount of every damage type(scaling with Casting Stats), while also reducing rot timers. Healing Word has a very short cooldown, and a fairly low Glimmer cost. - add: Breath of Life has been added as a new extremely rare Psionic Power. When cast on another person, it heals a large amount of damage(scaling with Casting Stats), while also substantially reducing rot timers. Additionally, it will revive the target if it is possible to do so. Breath of Life has an incredibly long cooldown, a long interuptable cast time, and an extraordinarily high glimmer cost(A typical Psion will spike glimmer by more than 50 points when casting it). - add: The Chaplain now starts with the Healing Word power. --------- Signed-off-by: VMSolidus Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- .../Abilities/HealOtherPowerSystem.cs | 152 ++++++++++++++++++ .../PsionicHealOtherPowerActionEvent.cs | 59 +++++++ Content.Shared/Psionics/Events.cs | 61 +++++-- Content.Shared/Psionics/PsionicComponent.cs | 11 +- .../Locale/en-US/psionics/psionic-powers.ftl | 23 +++ Resources/Prototypes/Actions/psionics.yml | 73 +++++++++ .../Prototypes/Nyanotrasen/psionicPowers.yml | 2 + Resources/Prototypes/Psionics/psionics.yml | 22 +++ .../Roles/Jobs/Civilian/chaplain.yml | 9 +- .../Actions/psionics.rsi/healing_word.png | Bin 0 -> 2189 bytes .../Interface/Actions/psionics.rsi/meta.json | 17 ++ .../Actions/psionics.rsi/revivify.png | Bin 0 -> 1977 bytes .../Interface/VerbIcons/ATTRIBUTION.txt | 3 + 13 files changed, 412 insertions(+), 20 deletions(-) create mode 100644 Content.Server/Abilities/Psionics/Abilities/HealOtherPowerSystem.cs create mode 100644 Content.Shared/Actions/Events/PsionicHealOtherPowerActionEvent.cs create mode 100644 Resources/Textures/Interface/Actions/psionics.rsi/healing_word.png create mode 100644 Resources/Textures/Interface/Actions/psionics.rsi/meta.json create mode 100644 Resources/Textures/Interface/Actions/psionics.rsi/revivify.png diff --git a/Content.Server/Abilities/Psionics/Abilities/HealOtherPowerSystem.cs b/Content.Server/Abilities/Psionics/Abilities/HealOtherPowerSystem.cs new file mode 100644 index 0000000000..85bae78dc6 --- /dev/null +++ b/Content.Server/Abilities/Psionics/Abilities/HealOtherPowerSystem.cs @@ -0,0 +1,152 @@ +using Robust.Shared.Player; +using Content.Server.DoAfter; +using Content.Shared.Abilities.Psionics; +using Content.Shared.Damage; +using Content.Shared.DoAfter; +using Content.Shared.Popups; +using Content.Shared.Psionics.Events; +using Content.Shared.Examine; +using static Content.Shared.Examine.ExamineSystemShared; +using Robust.Shared.Timing; +using Content.Shared.Actions.Events; +using Robust.Server.Audio; +using Content.Server.Atmos.Rotting; +using Content.Shared.Mobs.Systems; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; +using Content.Shared.Psionics.Glimmer; + +namespace Content.Server.Abilities.Psionics; + +public sealed class RevivifyPowerSystem : EntitySystem +{ + [Dependency] private readonly AudioSystem _audioSystem = default!; + [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly RottingSystem _rotting = default!; + [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly GlimmerSystem _glimmer = default!; + + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnPowerUsed); + SubscribeLocalEvent(OnDispelled); + SubscribeLocalEvent(OnDoAfter); + } + + + private void OnPowerUsed(EntityUid uid, PsionicComponent component, PsionicHealOtherPowerActionEvent args) + { + if (component.DoAfter is not null) + return; + + if (!args.Immediate) + AttemptDoAfter(uid, component, args); + else ActivatePower(uid, component, args); + + if (args.PopupText is not null + && _glimmer.Glimmer > args.GlimmerObviousPopupThreshold * component.CurrentDampening) + _popupSystem.PopupEntity(Loc.GetString(args.PopupText, ("entity", uid)), uid, + Filter.Pvs(uid).RemoveWhereAttachedEntity(entity => !_examine.InRangeUnOccluded(uid, entity, ExamineRange, null)), + true, + args.PopupType); + + if (args.PlaySound + && _glimmer.Glimmer > args.GlimmerObviousSoundThreshold * component.CurrentDampening) + _audioSystem.PlayPvs(args.SoundUse, uid, args.AudioParams); + + // Sanitize the Glimmer inputs because otherwise the game will crash if someone makes MaxGlimmer lower than MinGlimmer. + var minGlimmer = (int) Math.Round(MathF.MinMagnitude(args.MinGlimmer, args.MaxGlimmer) + + component.CurrentAmplification - component.CurrentDampening); + var maxGlimmer = (int) Math.Round(MathF.MaxMagnitude(args.MinGlimmer, args.MaxGlimmer) + + component.CurrentAmplification - component.CurrentDampening); + + _psionics.LogPowerUsed(uid, args.PowerName, minGlimmer, maxGlimmer); + args.Handled = true; + } + + private void AttemptDoAfter(EntityUid uid, PsionicComponent component, PsionicHealOtherPowerActionEvent args) + { + var ev = new PsionicHealOtherDoAfterEvent(_gameTiming.CurTime); + ev.HealingAmount = args.HealingAmount; + ev.RotReduction = args.RotReduction; + ev.DoRevive = args.DoRevive; + var doAfterArgs = new DoAfterArgs(EntityManager, uid, args.UseDelay, ev, uid, target: args.Target) + { + BreakOnUserMove = args.BreakOnUserMove, + BreakOnTargetMove = args.BreakOnTargetMove, + }; + + if (!_doAfterSystem.TryStartDoAfter(doAfterArgs, out var doAfterId)) + return; + + component.DoAfter = doAfterId; + } + + private void OnDispelled(EntityUid uid, PsionicComponent component, DispelledEvent args) + { + if (component.DoAfter is null) + return; + + _doAfterSystem.Cancel(component.DoAfter); + component.DoAfter = null; + args.Handled = true; + } + + private void OnDoAfter(EntityUid uid, PsionicComponent component, PsionicHealOtherDoAfterEvent args) + { + // It's entirely possible for the caster to stop being Psionic(due to mindbreaking) mid cast + if (component is null) + return; + component.DoAfter = null; + + // The target can also cease existing mid-cast + if (args.Target is null) + return; + + _rotting.ReduceAccumulator(args.Target.Value, TimeSpan.FromSeconds(args.RotReduction * component.CurrentAmplification)); + + if (!TryComp(args.Target.Value, out var damageableComponent)) + return; + + _damageable.TryChangeDamage(args.Target.Value, args.HealingAmount * component.CurrentAmplification, true, false, damageableComponent, uid); + + if (!args.DoRevive + || !TryComp(args.Target, out var mob) + || !_mobThreshold.TryGetThresholdForState(args.Target.Value, MobState.Dead, out var threshold) + || damageableComponent.TotalDamage > threshold) + return; + + _mobState.ChangeMobState(args.Target.Value, MobState.Critical, mob, uid); + } + + // This would be the same thing as OnDoAfter, except that here the target isn't nullable, so I have to reuse code with different arguments. + private void ActivatePower(EntityUid uid, PsionicComponent component, PsionicHealOtherPowerActionEvent args) + { + if (component is null) + return; + + _rotting.ReduceAccumulator(args.Target, TimeSpan.FromSeconds(args.RotReduction * component.CurrentAmplification)); + + if (!TryComp(args.Target, out var damageableComponent)) + return; + + _damageable.TryChangeDamage(args.Target, args.HealingAmount * component.CurrentAmplification, true, false, damageableComponent, uid); + + if (!args.DoRevive + || !TryComp(args.Target, out var mob) + || !_mobThreshold.TryGetThresholdForState(args.Target, MobState.Dead, out var threshold) + || damageableComponent.TotalDamage > threshold) + return; + + _mobState.ChangeMobState(args.Target, MobState.Critical, mob, uid); + } +} diff --git a/Content.Shared/Actions/Events/PsionicHealOtherPowerActionEvent.cs b/Content.Shared/Actions/Events/PsionicHealOtherPowerActionEvent.cs new file mode 100644 index 0000000000..8cf11b9e66 --- /dev/null +++ b/Content.Shared/Actions/Events/PsionicHealOtherPowerActionEvent.cs @@ -0,0 +1,59 @@ +using Robust.Shared.Audio; +using Content.Shared.Damage; +using Content.Shared.Popups; + +namespace Content.Shared.Actions.Events; +public sealed partial class PsionicHealOtherPowerActionEvent : EntityTargetActionEvent +{ + [DataField] + public DamageSpecifier HealingAmount = default!; + + [DataField] + public string PowerName; + + /// Controls whether or not a power fires immediately and with no DoAfter + [DataField] + public bool Immediate; + + [DataField] + public string? PopupText; + + [DataField] + public float RotReduction; + + [DataField] + public bool DoRevive; + + [DataField] + public bool BreakOnUserMove = true; + + [DataField] + public bool BreakOnTargetMove = false; + + [DataField] + public float UseDelay = 8f; + + [DataField] + public int MinGlimmer = 8; + + [DataField] + public int MaxGlimmer = 12; + + [DataField] + public int GlimmerObviousSoundThreshold; + + [DataField] + public int GlimmerObviousPopupThreshold; + + [DataField] + public PopupType PopupType = PopupType.Medium; + + [DataField] + public AudioParams AudioParams = default!; + + [DataField] + public bool PlaySound; + + [DataField] + public SoundSpecifier SoundUse = new SoundPathSpecifier("/Audio/Psionics/heartbeat_fast.ogg"); +} diff --git a/Content.Shared/Psionics/Events.cs b/Content.Shared/Psionics/Events.cs index cf9a50c6e1..f110c9c405 100644 --- a/Content.Shared/Psionics/Events.cs +++ b/Content.Shared/Psionics/Events.cs @@ -1,28 +1,59 @@ using Robust.Shared.Serialization; +using Content.Shared.Damage; using Content.Shared.DoAfter; -namespace Content.Shared.Psionics.Events +namespace Content.Shared.Psionics.Events; + +[Serializable, NetSerializable] +public sealed partial class PsionicRegenerationDoAfterEvent : DoAfterEvent { - [Serializable, NetSerializable] - public sealed partial class PsionicRegenerationDoAfterEvent : DoAfterEvent + [DataField("startedAt", required: true)] + public TimeSpan StartedAt; + + public PsionicRegenerationDoAfterEvent(TimeSpan startedAt) { - [DataField("startedAt", required: true)] - public TimeSpan StartedAt; + StartedAt = startedAt; + } + + public override DoAfterEvent Clone() => this; +} - private PsionicRegenerationDoAfterEvent() - { - } +[Serializable, NetSerializable] +public sealed partial class GlimmerWispDrainDoAfterEvent : SimpleDoAfterEvent { } - public PsionicRegenerationDoAfterEvent(TimeSpan startedAt) - { - StartedAt = startedAt; - } +[Serializable, NetSerializable] +public sealed partial class HealingWordDoAfterEvent : DoAfterEvent +{ + [DataField(required: true)] + public TimeSpan StartedAt; - public override DoAfterEvent Clone() => this; + public HealingWordDoAfterEvent(TimeSpan startedAt) + { + StartedAt = startedAt; } - [Serializable, NetSerializable] - public sealed partial class GlimmerWispDrainDoAfterEvent : SimpleDoAfterEvent + public override DoAfterEvent Clone() => this; +} + +[Serializable, NetSerializable] +public sealed partial class PsionicHealOtherDoAfterEvent : DoAfterEvent +{ + [DataField(required: true)] + public TimeSpan StartedAt; + + [DataField] + public DamageSpecifier HealingAmount = default!; + + [DataField] + public float RotReduction; + + [DataField] + public bool DoRevive; + + public PsionicHealOtherDoAfterEvent(TimeSpan startedAt) { + StartedAt = startedAt; } + + public override DoAfterEvent Clone() => this; } diff --git a/Content.Shared/Psionics/PsionicComponent.cs b/Content.Shared/Psionics/PsionicComponent.cs index 85b7e380fe..37d0a9a7ef 100644 --- a/Content.Shared/Psionics/PsionicComponent.cs +++ b/Content.Shared/Psionics/PsionicComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.DoAfter; using Content.Shared.Psionics; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -166,6 +167,14 @@ private set /// unneccesary subs for unique psionic entities like e.g. Oracle. ///
[DataField] - public List? PsychognomicDescriptors = null; + public List? PsychognomicDescriptors = null; + + /// Used for tracking what spell a Psion is actively casting + [DataField] + public DoAfterId? DoAfter; + + /// Popup to play if a Psion attempts to start casting a power while already casting one + [DataField] + public string AlreadyCasting = "already-casting"; } } diff --git a/Resources/Locale/en-US/psionics/psionic-powers.ftl b/Resources/Locale/en-US/psionics/psionic-powers.ftl index c68bb2a496..01b50cce32 100644 --- a/Resources/Locale/en-US/psionics/psionic-powers.ftl +++ b/Resources/Locale/en-US/psionics/psionic-powers.ftl @@ -1,4 +1,5 @@ generic-power-initialization-feedback = I Awaken. +arleady-casting = I cannot channel more than one power at a time. # Dispel dispel-power-description = Dispel summoned entities such as familiars or forcewalls. @@ -48,6 +49,28 @@ psionic-regeneration-power-initialization-feedback = I look within myself, finding a wellspring of life. psionic-regeneration-power-metapsionic-feedback = {CAPITALIZE($entity)} possesses an overwhelming will to live +# Healing Word +action-name-healing-word = Healing Word +action-description-healing-word = Speak the Lesser Secret Of Life, and restore health to another. +healing-word-power-description = Speak the Lesser Secret Of Life, and restore health to another. +healing-word-power-initialization-feedback = + At the beginning of time, a word was spoken that brought life into the Spheres. + Though it taxes my mind to know it, this Secret is known to me now. + I need only speak it. +healing-word-power-metapsionic-feedback = {CAPITALIZE($entity)} bears the Lesser Secret of Life. +healing-word-begin = {CAPITALIZE($entity)} mutters a word that brings both joy and pain alike to those who hear it. + +# Revivify +action-name-revivify = Breath of Life +action-description-revivify = Speak the Greater Secret of Life, and restore another to life. +revivify-power-description = Speak the Greater Secret of Life, and restore another to life. +revivify-power-initialization-feedback = + For a moment, my soul journeys across time and space to the beginning of it all, there I hear it. + The Secret of Life in its fullness. I feel my entire existence burning out from within, merely by knowing it. + Power flows through me as a mighty river, begging to be released with a simple spoken word. +revivify-power-metapsionic-feedback = {CAPITALIZE($entity)} bears the Greater Secret of Life. +revivify-word-begin = {CAPITALIZE($entity)} enunciates a word of such divine power, that those who hear it weep from joy. + # Telegnosis telegnosis-power-description = Create a telegnostic projection to remotely observe things. telegnosis-power-initialization-feedback = diff --git a/Resources/Prototypes/Actions/psionics.yml b/Resources/Prototypes/Actions/psionics.yml index 981d53884e..d38608a469 100644 --- a/Resources/Prototypes/Actions/psionics.yml +++ b/Resources/Prototypes/Actions/psionics.yml @@ -146,3 +146,76 @@ icon: Interface/VerbIcons/psionic_invisibility_off.png event: !type:RemovePsionicInvisibilityOffPowerActionEvent +- type: entity + id: ActionHealingWord + name: action-name-healing-word + description: action-description-healing-word + noSpawn: true + components: + - type: EntityTargetAction + icon: { sprite : Interface/Actions/psionics.rsi, state: healing_word } + useDelay: 10 + checkCanAccess: false + range: 6 + itemIconStyle: BigAction + canTargetSelf: true + blacklist: + components: + - PsionicInsulation + - Mindbroken + event: !type:PsionicHealOtherPowerActionEvent + healingAmount: + groups: # These all get divided by the number of damage types in the group. So they're all -2.5. + Genetic: -2.5 + Toxin: -5 + Airloss: -5 + Brute: -7.5 + Burn: -10 + rotReduction: 10 + useDelay: 1 + doRevive: true + powerName: Healing Word + popupText: healing-word-begin + playSound: true + minGlimmer: 2 + maxGlimmer: 4 + glimmerObviousSoundThreshold: 100 + glimmerObviousPopupThreshold: 200 + +- type: entity + id: ActionRevivify + name: action-name-revivify + description: action-description-revivify + noSpawn: true + components: + - type: EntityTargetAction + icon: { sprite : Interface/Actions/psionics.rsi, state: revivify } + useDelay: 120 + checkCanAccess: false + range: 2 + itemIconStyle: BigAction + canTargetSelf: false + blacklist: + components: + - PsionicInsulation + - Mindbroken + event: !type:PsionicHealOtherPowerActionEvent + healingAmount: + # These all get divided by the number of damage types in the group. So they're all -15 + # Additionally, they're multiplied by the caster's Amplification, which, + # assuming this is the only power they have, the multiplier is between 2.9-3.9 + groups: + Genetic: -15 + Toxin: -30 + Airloss: -60 # Except airloss, which heals 30 per type + Brute: -45 + Burn: -60 + rotReduction: 60 + doRevive: true + powerName: Revivify + popupText: revivify-begin + playSound: true + minGlimmer: 10 # These also get multiplied by caster stats. So, + maxGlimmer: 15 # keeping in mind the ~3.5x multiplier, this spikes glimmer by as much as 60 points. + glimmerObviousSoundThreshold: 50 + glimmerObviousPopupThreshold: 100 diff --git a/Resources/Prototypes/Nyanotrasen/psionicPowers.yml b/Resources/Prototypes/Nyanotrasen/psionicPowers.yml index 0781122b8e..2aee2273a1 100644 --- a/Resources/Prototypes/Nyanotrasen/psionicPowers.yml +++ b/Resources/Prototypes/Nyanotrasen/psionicPowers.yml @@ -11,3 +11,5 @@ # PsionicInvisibilityPower: 0.15 MindSwapPower: 0.15 TelepathyPower: 1 + HealingWordPower: 0.85 + RevivifyPower: 0.1 diff --git a/Resources/Prototypes/Psionics/psionics.yml b/Resources/Prototypes/Psionics/psionics.yml index 461098eab2..b881f1f11f 100644 --- a/Resources/Prototypes/Psionics/psionics.yml +++ b/Resources/Prototypes/Psionics/psionics.yml @@ -140,3 +140,25 @@ initializationFeedback: telepathy-power-initialization-feedback metapsionicFeedback: psionic-language-power-feedback # Reuse for telepathy, clairaudience, etc powerSlotCost: 0 + +- type: psionicPower + id: HealingWordPower + name: HealingWord + description: healing-word-power-description + actions: + - ActionHealingWord + initializationFeedback: healing-word-power-initialization-feedback + metapsionicFeedback: healing-word-power-feedback + amplificationModifier: 0.5 + dampeningModifier: 0.5 + +- type: psionicPower + id: RevivifyPower + name: Revivify + description: revivify-power-description + actions: + - ActionRevivify + initializationFeedback: revivify-power-initialization-feedback + metapsionicFeedback: revivify-power-feedback + amplificationModifier: 2.5 # An extremely rare and dangerous power + powerSlotCost: 2 diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml index c7395ff3e2..d4f8bdb067 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml @@ -5,8 +5,8 @@ playTimeTracker: JobChaplain requirements: - !type:CharacterDepartmentTimeRequirement - department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 14400 #DeltaV 4 hours + department: Epistemics # Chaplain is now one of the station's "Crew-Aligned Wizards" + min: 14400 # 4 hours - !type:CharacterLogicOrRequirement requirements: - !type:CharacterSpeciesRequirement @@ -21,7 +21,7 @@ supervisors: job-supervisors-rd access: - Chapel - - Research # DeltaV - Move Chaplain into Epistemics + - Research - Maintenance special: - !type:AddComponentSpecial @@ -32,6 +32,7 @@ - type: InnatePsionicPowers powersToAdd: - TelepathyPower + - HealingWordPower - type: startingGear id: ChaplainGear @@ -40,7 +41,7 @@ back: ClothingBackpackChaplainFilled shoes: ClothingShoesColorBlack id: ChaplainPDA - ears: ClothingHeadsetScience # DeltaV - Move Chaplain into Epistemics + ears: ClothingHeadsetScience innerClothingSkirt: ClothingUniformJumpskirtChaplain satchel: ClothingBackpackSatchelChaplainFilled duffelbag: ClothingBackpackDuffelChaplainFilled diff --git a/Resources/Textures/Interface/Actions/psionics.rsi/healing_word.png b/Resources/Textures/Interface/Actions/psionics.rsi/healing_word.png new file mode 100644 index 0000000000000000000000000000000000000000..800e2a46e6139ae17b21fb4509242b317c6445c5 GIT binary patch literal 2189 zcmV;82y*v{P)9?Ncm1Y5zzB48of z_$vGd+6uM`f}jW@me#%+k@Zd@BuJcP_I{k1bD22<_Fz`anJqrZ<%>or;CC-Ym)*`6 z+8CyfL3}aI)aS!<5&j*Yci2?D^{QU~?`t|b6G>A8Tf6X-rW-}!8R6i1QCGYz+^c0` z3E@NGaYGI$e5Lewjh_{#Yy7U*h=gXru6nxD4IFP^Eo0<_$Amq(Y)Sh)kGe@$GQSv> zIv{fhlMn&?xQSC@jVwjHQuC5obDyv3Tc98wP5wG%3~{8%h<9Anl5|ZO^grk^BUY6hGVQ4pyq-dL6nbu;W2KhW?>Z;<5ZRC?x`w@d7?u65)gMjJXf8H>^ zJath878q+2OxT#PaA736l+>sT;>L|8mc+g3LXC|kE)X>?T-3NRv9S>CqFB2iEmR{5 zH9oMZ#UDs2t@k^(=l0xrbARUNzG8Wk-0|#Luf3U?cIb_ln{7riUuCT8tBe&kfoDrV!dj@H5(Vf$0nQ}* zyk(dDt0X2k0Wkda!9n%MzpL;d`7cJ^Rds9I(X(y2k~a{zTonmzRXHDk%J#(3 z7n860Gx^=*CLq*SL1l4OLO|Q%&osXTmIa#cKX9y88OS^`f)apL0uVGwf)1Vy;``he z_p#c|Y(WWN!)Jc_s{zBOGasjj;SLhKPK>UiDu@YAz{2HuHMR7;0tpOGf*k&KgzobN zP@nvGRxM87Abb}u&Lr+*Qb=eLf)mhx&tWA=03ZOwJ+v)zcPNk`8$ZiZg-KDNhzOnr zVc7Bh7gDKi;hRzQ%U5->8L6XUobLZ&0zK;N*CkF?e3#Fh0U`4TFPw(za z5g>h-pX(&a7oZ%FKy6Q~rit@00eZiNo0d0%xd7&cA7jO&gaLl+w^5QiuPA2-&IIs# z6F7FEqEu;#In_O=0x&XwE~tnE75gy=i34C91o3=KjYgji(|3SJpDijT2w6kAhYtR( z<@3~UNv*n>43M^DI4J;uhc7uH3_(Bx$lkVx=)z~*=LVG!36Uxi@FEM~K1h&tf^?x% zpMOn5@pCS)Y=LusYXy|qsUgbOcHO=*$AJd_WD(cvN z|HedN{LF;}s{;{$Kl$o$it=(x%O^Tm=`{G*B&^^^r{hu>4gCNB3V{kx1xgZFN!(x7 z3H&aCBx1ySWABin@V?8I*~tZ9nB3s#smZhw><0T^>Q-C(7S-mi>*_-1IQ@(7xQ`2s z-Gmh($-%v+YR8iKQDgWtYZs7{l{wsy{QU*P1rJb?7?1#0fod>@ z-k>g&+j`0Eq5xY0HlV6Q+LF>kb$0r*4{3e`tSXPSI2O2oHN9i)0vH4IW$a=_0FOY`*!GQ7kWfV!1$?AHQ=TtQd)cPr-LWt08j&4D0tLos zi)^Y5Y{+mT0J(UZ>ZEx%4KjEiz$U{R$HT6&Lq(+lmEG);HlSr+Cju}4R-fCM`JvKz zzO12H^@2>1k9D3<2UiAkRe}=%GVrjkW2InpR-P{dyy#uj3bIZ(GdZO8skm%*ZMJDJ znFlpMNbqF|~qz?yXB+!#WYbyFzk^t zpr&S8c~|*+5uh66@E@B(uU*UOp;iC@01jnXNoGw=04e|g00;m8000000Mb*F P00000NkvXXu0mjf%9`?P literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Actions/psionics.rsi/meta.json b/Resources/Textures/Interface/Actions/psionics.rsi/meta.json new file mode 100644 index 0000000000..085cc41281 --- /dev/null +++ b/Resources/Textures/Interface/Actions/psionics.rsi/meta.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by leonardo_dabepis (discord)", + "size": { + "x": 64, + "y": 64 + }, + "states": [ + { + "name": "healing_word" + }, + { + "name": "revivify" + } + ] +} diff --git a/Resources/Textures/Interface/Actions/psionics.rsi/revivify.png b/Resources/Textures/Interface/Actions/psionics.rsi/revivify.png new file mode 100644 index 0000000000000000000000000000000000000000..087f40b4c98a073de7c2e0258f6128a1c3ff755b GIT binary patch literal 1977 zcmV;q2S)gbP)9?Ncm1Y5zzB48of z_$vGd+6uM`f}jW@me#%+k@Zd@BuJcP_I{k1bD22<_Fz`anJqrZ<%>or;CC-Ym)*`6 z+8CyfL3}aI)aS!<5&j*Yci2?D^{QU~?`t|b6G>A8Tf6X-rW-}!8R6i1QCGYz+^c0` z3E@NGaYGI$e5Lewjh_{#Yy7U*h=gXru6nxD4IFP^Eo0<_$Amq(Y)Sh)kGe@$GQSv> zIv{fhlMn&?xQSC@jVwjHQuC5obDyv3Tc98wP5wG%3~{8%h<9Anl5|ZO^grk^BUY6hGVQ4pyq-dL6nbu;W2KhW?>Z;<5ZRC?x`w@d7?u65)gMjJXf8h;(q6Rd$W6&-JQwJYU2(Zm%E+YdEd{xdGp?Eh@ut|hzLXk zA_5VC|1E(_!cboK`hsblaZ*p6HE!QL9m7<91M#gbi&TDM_l?uUv}p)N0kHVhl*K3O3?H&ir-jyO~R zEWD$mGbgm4XzL5FiqAbepA8*^G60>zMizeS&1FL5O-o`~2o?Zt0I}!Ioy7giuV~2g z2*2@FlO-hpI)#l}ye-_4cIh)!)Z6^7L*$kxx6tl4cGLN@=P8{@kPIP6QKect1O_mh z!UisnnU}@SwAiQqx|$dQWpcd&7gUP1L!eYxx3Ec{OAxR3_WSN~XvXaCeW=&|4#MSD zHt!ee?&_vY<~N5I_(jRMV(sAT0lK+8T)%DIT48VH!pjTV?H29sG=IT-f)@Z}kR1Z` z11e9ID$+9%(iJZYNsbPRkKc|Z?H6CiEW2l&Kc6^}5^+GKan%V3STcwienHdM15^y~ z>MO5*z^JDx(Org6a$$tZE+b;ksJL-4jelo3fwc@wHKPDBS6)N+-?B{D-uLn6wg!#| z5X>z#%n>gozB)emC8bYKn$m6G*C+rUW%Q>%sI#*}5@YQO+mh6}YX|L!Ws{%x4<2&N zbZO~Tl=XnqbnT*YksAbw1FFP~6hkm}b^9h^OTKt=z*ty)yXePm4&iw5X9U7kEAFM2 zpMTs=kW@u_^)~{52aHuNbgC z$i4TwRSa!ANShC=7eQ~s#`R*>PbN;%ZFF9~D z&u}D1xc2ZPo9%1x0zhC-fCsE?dQfDAuk`FSA|5w25(M{s_ztamV55LQR2V{R#qvB+ zfWVa@wnunI$%VmxykW5s2u1)*jQvPRfDi*10<0gib_28}uFQ~g0nP(hDZcO9pLKmK zjf-LzfRVqRnWV3e9}y7H06`WnyFQDBc(^*}26)Gda{&|Lm6rf=?H~_1U~D3lJ@pyb z7pFgeKS!^1_vE=SPJ?b6t|jWqZi6)qHKGqgK;TnNhgH{!@)D3ASa=PFI({T&<>XdA zfTi&Cb6e@XJ-xyc_?_O$?f($pxO5pEJvB_rtFvh`W?v-@4r-fhw=w_~!hq1<_cq0( zBd{-y9HzFGHH7z-)Mn2*#LLY+`#R!+*y?*8pnDd;gQJvXFL0*AMDl?s`m+~IPXA2D zKK)AM189Yg#=OL-oC)~m0XSpBgGup#(mHI=X$XjD$O&*pfOm+;fyhhSx7#m7dbCqR zKiF&Eqj5lS=SU27If5qF28acm9pXf&x#Vt}XLbGcV(p_U{Al14$LyNBM&+CIU_Zc3%002-H<9rb30qtw*HaV)_)kN{87YmAq`_FU^2yuSR=&?9M@G`>h2^MGq3CL0&Iz0u}+cJx*LS^o{zq!wmtW_p#i|a5VqmW6XHFQ$UPrq zqfDi{UK0~40NId#Lu?@szIniG-2P(tZ3MvdEQJ-!bajLh1OCep0;j?%glAho$z!P$ zHYzr9Un2l;^I||SEgp6n1K@_BGdrqdSO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt b/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt index 0b8ae856bd..69aa4650b3 100644 --- a/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt +++ b/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt @@ -7,3 +7,6 @@ https://game-icons.net/1x1/lorc/padlock.html unlock.svg by Delapouite under CC BY 3.0 https://game-icons.net/1x1/delapouite/padlock-open.html + +healing_word.png by LeonardoDaBepis under CC BY 3.0 +revivify.png by LeonardoDaBepis under CC BY 3.0 \ No newline at end of file From 272b4ece2f952d7d14a4ce531a62f5e311ebe597 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sat, 21 Sep 2024 22:51:07 +0000 Subject: [PATCH 07/44] Automatic Changelog Update (#942) --- Resources/Changelog/Changelog.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2477a35b91..ad3de9ce82 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -6590,3 +6590,25 @@ Entries: id: 6383 time: '2024-09-21T22:46:59.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/930 +- author: VMSolidus + changes: + - type: Add + message: >- + Healing Word has been added as a new Psionic Power. When cast on another + person, it heals a small amount of every damage type(scaling with + Casting Stats), while also reducing rot timers. Healing Word has a very + short cooldown, and a fairly low Glimmer cost. + - type: Add + message: >- + Breath of Life has been added as a new extremely rare Psionic Power. + When cast on another person, it heals a large amount of damage(scaling + with Casting Stats), while also substantially reducing rot timers. + Additionally, it will revive the target if it is possible to do so. + Breath of Life has an incredibly long cooldown, a long interuptable cast + time, and an extraordinarily high glimmer cost(A typical Psion will + spike glimmer by more than 50 points when casting it). + - type: Add + message: The Chaplain now starts with the Healing Word power. + id: 6384 + time: '2024-09-21T22:50:01.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/942 From 5bf5d5718a58eadf1989ef30e1ff32515a7bdd4e Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 21 Sep 2024 19:22:42 -0400 Subject: [PATCH 08/44] More Objects Hit By Projectiles (#943) # Description This PR is a follow up to https://github.com/Simple-Station/Einstein-Engines/pull/939 By increasing the number of items that are struck by bullets, or can be targeted by bullets. To add to the "Cinematic" experience of a gunfight, Bottles, Cups, and Plates of all kinds are automatically struck by bullets when fired over, and *probably* destroyed given that they only have 5 hit points. This also serves to aid in limiting the amount of things that can be hidden underneath when crawling under a table, since the station's bar counter will likely explode into a ton of glass and spilled booze when a gunfight gets near it. I also added Chairs to the "RequireProjectileTarget" feature, so that if you click on a chair, you'll shoot the chair and (probably) destroy it. # Changelog :cl: - add: Bottles, Drink Glasses, Plates, and all liquid containers are now struck by bullets(and most likely destroyed in the process). We hope that this will offer both a small tactical advantage/disadvantage, as well as contribute to making gunfights around the bar more "Cinematic". - add: Chairs are now hit by projectiles if a shooter clicks on them, in addition to Tables. --- .../Objects/Consumable/Drinks/drinks.yml | 25 +++++++++++++++++++ .../Consumable/Drinks/drinks_bottles.yml | 3 +++ .../Consumable/Food/Containers/plate.yml | 11 ++++++++ .../Entities/Structures/Furniture/chairs.yml | 3 ++- 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml index 93d4b957fe..743d9a1792 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml @@ -48,6 +48,31 @@ path: /Audio/SimpleStation14/Items/Handling/drinkglass_drop.ogg params: volume: -2 + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + density: 30 + mask: + - ItemMask + layer: + - BulletImpassable # Ever seen a John Woo movie? + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 5 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + params: + volume: -6 + - !type:SpillBehavior { } + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity parent: DrinkBase diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles.yml index a6752286dd..b2489325e0 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles.yml @@ -31,6 +31,9 @@ !type:DamageTrigger damage: 5 behaviors: + - !type:PlaySoundBehavior + sound: + collection: GlassBreak - !type:SpillBehavior { } - !type:DoActsBehavior acts: [ "Destruction" ] diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/plate.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/plate.yml index 63c47df67e..3bd66e8a48 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/plate.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/plate.yml @@ -54,6 +54,17 @@ materialComposition: Glass: 60 - type: SpaceGarbage + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + density: 25 + mask: + - ItemMask + layer: + - BulletImpassable # Ever seen a John Woo movie? - type: entity name: broken plate diff --git a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml index 0fb69b4fdb..14b3270ba8 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml @@ -33,7 +33,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 100 + damage: 25 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] @@ -48,6 +48,7 @@ collection: MetalBreak - type: StaticPrice price: 10 + - type: RequireProjectileTarget #Starts unanchored, cannot be rotated while anchored - type: entity From 900630cafd30a53ad04a1ed55257b23dc840c8e2 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sat, 21 Sep 2024 23:23:09 +0000 Subject: [PATCH 09/44] Automatic Changelog Update (#943) --- Resources/Changelog/Changelog.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ad3de9ce82..f85816dfaf 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -6612,3 +6612,18 @@ Entries: id: 6384 time: '2024-09-21T22:50:01.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/942 +- author: VMSolidus + changes: + - type: Add + message: >- + Bottles, Drink Glasses, Plates, and all liquid containers are now struck + by bullets(and most likely destroyed in the process). We hope that this + will offer both a small tactical advantage/disadvantage, as well as + contribute to making gunfights around the bar more "Cinematic". + - type: Add + message: >- + Chairs are now hit by projectiles if a shooter clicks on them, in + addition to Tables. + id: 6385 + time: '2024-09-21T23:22:43.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/943 From c8a29552373b234e88d2b0727cd7e7ddd945c49a Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Sun, 22 Sep 2024 10:06:50 +0300 Subject: [PATCH 10/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D0=BC=D0=BE?= =?UTF-8?q?=D0=B5=D0=B3=D0=BE=20=D1=82=D1=83=D0=BF=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B7=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ss14-ru/prototypes/catalog/fills/lockers/suit_storage.ftl | 2 +- .../deltav/entities/objects/devices/station_beacon.ftl | 2 +- .../deltav/entities/structures/doors/airlocks/access.ftl | 4 ++-- .../prototypes/entities/objects/misc/identification_cards.ftl | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/catalog/fills/lockers/suit_storage.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/catalog/fills/lockers/suit_storage.ftl index 0ea030f35d..f709616302 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/catalog/fills/lockers/suit_storage.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/catalog/fills/lockers/suit_storage.ftl @@ -65,5 +65,5 @@ ent-SuitStorageParamedic = { ent-SuitStorageBase } .suffix = Парамедик .desc = { ent-SuitStorageBase.desc } ent-SuitStorageCorpsman = { ent-SuitStorageBase } - .suffix = Морг + .suffix = Полевой Врач .desc = { ent-SuitStorageBase.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/station_beacon.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/station_beacon.ftl index 58474351ed..724d9016f9 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/station_beacon.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/station_beacon.ftl @@ -44,7 +44,7 @@ ent-DefaultStationBeaconPark = { ent-DefaultStationBeacon } .suffix = Парк .desc = { ent-DefaultStationBeacon.desc } ent-DefaultStationBeaconCorpsman = { ent-DefaultStationBeaconSecurity } - .suffix = Морг + .suffix = Полевой Врач .desc = { ent-DefaultStationBeaconSecurity.desc } ent-DefaultStationBeaconJustice = { ent-DefaultStationBeacon } .suffix = Адвокатская diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/structures/doors/airlocks/access.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/structures/doors/airlocks/access.ftl index 2023819be9..d92b58ee77 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/structures/doors/airlocks/access.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/structures/doors/airlocks/access.ftl @@ -32,10 +32,10 @@ ent-AirlockMaintProsecutorLocked = { ent-AirlockMaint } .suffix = Прокурор, Закрыто .desc = { ent-AirlockMaint.desc } ent-AirlockCorpsmanLocked = { ent-AirlockSecurity } - .suffix = Морг, Закрыто + .suffix = Полевой Врач, Закрыто .desc = { ent-AirlockSecurity.desc } ent-AirlockCorpsmanGlassLocked = { ent-AirlockSecurityGlass } - .suffix = Морг, Закрыто + .suffix = Полевой Врач, Закрыто .desc = { ent-AirlockSecurityGlass.desc } ent-AirlockExternalGlassShuttleEscapeSub = { ent-AirlockGlassShuttle } .suffix = Внешний, Выход, Стеклянный, Док diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/identification_cards.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/identification_cards.ftl index 96ff217e68..c8de0e28e1 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/identification_cards.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/identification_cards.ftl @@ -64,7 +64,7 @@ ent-RDIDCard = ID карта научного директора .desc = { ent-IDCardStandard.desc } ent-HoSIDCard = ID карта главы службы безопасности .desc = { ent-IDCardStandard.desc } -ent-BrigmedicIDCard = ID карта медициского офицера +ent-BrigmedicIDCard = ID карта полевого врача .desc = { ent-IDCardStandard.desc } ent-CentcomIDCard = ID карта старшего офицера .desc = { ent-IDCardStandard.desc } From b273a6a3db3303ab178b7b83e9341844a291f6cb Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Sun, 22 Sep 2024 11:14:29 +0300 Subject: [PATCH 11/44] =?UTF-8?q?Revert=20"=D1=84=D0=B8=D0=BA=D1=81=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=D0=BE=D0=B2"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 0b34c138d9cce7b46e10f1132a6dd64fb7556078. --- .../Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl | 2 +- Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl | 2 +- .../ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl | 2 +- .../ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl | 2 +- .../ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl b/Resources/Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl index 5f37557ba1..e04086221b 100644 --- a/Resources/Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl +++ b/Resources/Locale/ru-RU/deltav/navmap-beacons/station-beacons.ftl @@ -19,7 +19,7 @@ station-beacon-reporter = Репортёр station-beacon-camera-servers = Камеры station-beacon-boxing-ring = Боксёрская station-beacon-park = Парк -station-beacon-corpsman = Патоллогоанатом +station-beacon-corpsman = Полевой Врач station-beacon-justice = Судебная station-beacon-chiefjustice = Верховный судья station-beacon-prosecutor = Прокурор diff --git a/Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl b/Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl index bb7bd083b1..6b4be3a2ba 100644 --- a/Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl +++ b/Resources/Locale/ru-RU/deltav/prototypes/access/accesses.ftl @@ -4,4 +4,4 @@ id-card-access-level-chief-justice = Верховный судья id-card-access-level-cj = Верховный судья id-card-access-level-prosecutor = Прокурор id-card-access-level-justice = Суд -id-card-access-level-corpsman = Патоллогоанатом +id-card-access-level-corpsman = Полевой Врач diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl index 7a92565713..a66d690982 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/belt/belts.ftl @@ -2,5 +2,5 @@ ent-ClothingBeltCeremonial = церемониальный пояс .desc = Бело-голубой пояс с множеством карманов и подсумков. ent-ClothingBeltSuspendersBlack = черные подтяжки .desc = Чтобы ты поддерживал свои штаны. -ent-ClothingBeltCorpsmanWebbing = РПС патоллогоанатома +ent-ClothingBeltCorpsmanWebbing = РПС полевого врача .desc = Комплект защитных лент с синими вставками. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl index c6fc0418e4..a4f8ddbd0a 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hats.ftl @@ -31,7 +31,7 @@ ent-ClothingHeadHatDirCap = фуражка директора .desc = Зеленая фуражка с эмблемой директорского ранга, принадлежащая высокопоставленному члену Центрального командования. Кто бы это ни был, они занимаются важными делами. ent-ClothingHeadHatBeretLogi = берет снабжения .desc = Для интеллектуального и усердного бухгалтера. Точно не знак революции! -ent-ClothingHeadHatBeretCorpsman = берет патоллогоанатома +ent-ClothingHeadHatBeretCorpsman = берет полевого врача .desc = Для стильных боевых спасателей и медицинских специалистов. ent-ClothingHeadHatCJToque = шляпа верховного судьи .desc = Стандартная судейская шляпа. Парики в любом случае старомодны. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl index 73b91b0738..592fc713f1 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/devices/pda.ftl @@ -1,4 +1,4 @@ -ent-CorpsmanPDA = КПК патоллогоанатома +ent-CorpsmanPDA = КПК полевого врача .desc = Стерильно и безопасно. Имеет встроенный анализатор здоровья. ent-ChiefJusticePDA = КПК верховного судьи .desc = Носитель этого КПК имеет истинную власть на этой станции. From 59a50126eb60b769fd8c7f69764bcaa06a40344d Mon Sep 17 00:00:00 2001 From: BL02DL Date: Sun, 22 Sep 2024 17:21:16 +0700 Subject: [PATCH 12/44] =?UTF-8?q?=D0=91=D0=BE=D0=BB=D1=8C=D1=88=D0=BE?= =?UTF-8?q?=D0=B5=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DiamondCrusher/DiamondCrusherSystem.cs | 9 ++ .../DiamondCrusher/DiamondCrusherSystem.cs | 141 ++++++++++++++++ .../DiamondCrusher/DiamondComponent.cs | 9 ++ .../DiamondCrusher/DiamondCrusherComponent.cs | 116 +++++++++++++ .../SharedDiamondCrusherSystem.cs | 76 +++++++++ .../ru-RU/_LostParadise/DiamondCrusher.ftl | 4 + .../Locale/ru-RU/_LostParadise/diamond.ftl | 21 +++ .../ru-RU/artifacts/artifact-crusher.ftl | 6 +- .../Locale/ru-RU/materials/materials.ftl | 2 +- .../Locale/ru-RU/research/technologies.ftl | 4 + .../Locale/ru-RU/salvage/salvage-magnet.ftl | 2 +- .../entities/objects/materials/materials.ftl | 2 +- Resources/Maps/_LostParadise/LP_Normandy.yml | 7 - Resources/Maps/_LostParadise/asterisk.yml | 7 - Resources/Maps/_LostParadise/pebble.yml | 7 - Resources/Maps/_LostParadise/submarine.yml | 7 - Resources/Maps/arena.yml | 7 - Resources/Maps/asterisk.yml | 7 - Resources/Maps/edge.yml | 7 - Resources/Maps/hammurabi.yml | 8 - Resources/Maps/hive.yml | 7 - Resources/Maps/pebble.yml | 7 - Resources/Maps/shoukou.yml | 7 - Resources/Maps/submarine.yml | 7 - Resources/Maps/tortuga.yml | 8 - .../Entities/Structures/Walls/mountain.yml | 41 +---- .../DeltaV/Recipes/Lathes/security.yml | 1 + .../Circuitboards/Machine/production.yml | 5 +- .../Devices/Circuitboards/computer.yml | 4 - .../Entities/Objects/Materials/materials.yml | 9 ++ .../Objects/Specific/Salvage/ore_bag.yml | 1 + .../Objects/Weapons/Melee/pickaxe.yml | 81 +++++++++- .../Furniture/Tables/base_structuretables.yml | 2 +- .../Entities/Structures/Machines/lathe.yml | 7 +- .../Entities/Structures/Machines/research.yml | 1 + .../Entities/Structures/Walls/asteroid.yml | 34 +--- .../Weapons/Melee/breaching_hammer.yml | 1 + .../Prototypes/Reagents/Materials/ores.yml | 16 ++ .../Prototypes/Recipes/Lathes/chemistry.yml | 2 + .../Prototypes/Recipes/Lathes/devices.yml | 3 +- .../Prototypes/Recipes/Lathes/electronics.yml | 12 +- Resources/Prototypes/Recipes/Lathes/misc.yml | 1 + .../Prototypes/Recipes/Lathes/powercells.yml | 2 + .../Prototypes/Recipes/Lathes/security.yml | 12 +- .../Prototypes/Research/civilianservices.yml | 21 ++- .../Research/diamond_production.yml | 46 ++++++ Resources/Prototypes/Research/disciplines.yml | 20 ++- .../Prototypes/Research/experimental.yml | 12 ++ Resources/Prototypes/Stacks/Materials/ore.yml | 8 + .../Structures/Machines/DiamondCrusher.yml | 152 +++++++++++++++++ .../Entities/Structures/Walls/asteroid.yml | 153 ++++++++++++++++++ .../_LostParadise/Recipes/Lathes/devices.yml | 9 ++ Resources/Prototypes/ore.yml | 7 + Resources/Prototypes/tags.yml | 3 + .../Walls/mountain_rock_ore.rsi/meta.json | 15 ++ .../mountain_rock_ore.rsi/rock_asteroid.png | Bin 0 -> 350 bytes .../rock_asteroid_east.png | Bin 0 -> 1954 bytes .../rock_asteroid_north.png | Bin 0 -> 1948 bytes .../rock_asteroid_south.png | Bin 0 -> 1939 bytes .../rock_asteroid_west.png | Bin 0 -> 1955 bytes .../diamond_production.png | Bin 0 -> 194 bytes .../Misc/research_disciplines.rsi/meta.json | 3 + .../Objects/Materials/ingots.rsi/diamond.png | Bin 0 -> 338 bytes .../Objects/Materials/ingots.rsi/meta.json | 3 + .../Objects/Materials/ore.rsi/diamond.png | Bin 390 -> 416 bytes .../Machines/computers.rsi/meta.json | 3 + .../Machines/computers.rsi/tracking_icon.png | Bin 0 -> 947 bytes .../Structures/Walls/rock.rsi/full.png | Bin 0 -> 924 bytes .../Structures/Walls/rock.rsi/full_two.png | Bin 0 -> 395 bytes .../Structures/Walls/rock.rsi/meta.json | 89 ++++++++++ .../Structures/Walls/rock.rsi/rock_0.png | Bin 0 -> 1256 bytes .../Structures/Walls/rock.rsi/rock_0_two.png | Bin 0 -> 498 bytes .../Structures/Walls/rock.rsi/rock_1.png | Bin 0 -> 1328 bytes .../Structures/Walls/rock.rsi/rock_1_two.png | Bin 0 -> 500 bytes .../Structures/Walls/rock.rsi/rock_2.png | Bin 0 -> 1256 bytes .../Structures/Walls/rock.rsi/rock_2_two.png | Bin 0 -> 498 bytes .../Structures/Walls/rock.rsi/rock_3.png | Bin 0 -> 1328 bytes .../Structures/Walls/rock.rsi/rock_3_two.png | Bin 0 -> 500 bytes .../Structures/Walls/rock.rsi/rock_4.png | Bin 0 -> 1296 bytes .../Structures/Walls/rock.rsi/rock_4_two.png | Bin 0 -> 496 bytes .../Structures/Walls/rock.rsi/rock_5.png | Bin 0 -> 1387 bytes .../Structures/Walls/rock.rsi/rock_5_two.png | Bin 0 -> 504 bytes .../Structures/Walls/rock.rsi/rock_6.png | Bin 0 -> 1296 bytes .../Structures/Walls/rock.rsi/rock_6_two.png | Bin 0 -> 496 bytes .../Structures/Walls/rock.rsi/rock_7.png | Bin 0 -> 1343 bytes .../Structures/Walls/rock.rsi/rock_7_two.png | Bin 0 -> 493 bytes .../Walls/rock.rsi/rock_ore_diamond.png | Bin 0 -> 1942 bytes .../Specific/Mining/OreDiamond.rsi/icon.png | Bin 0 -> 666 bytes .../Mining/OreDiamond.rsi/inhand-left.png | Bin 0 -> 840 bytes .../Mining/OreDiamond.rsi/inhand-right.png | Bin 0 -> 914 bytes .../Specific/Mining/OreDiamond.rsi/meta.json | 22 +++ .../Tools/DiamondHandDrill.rsi/handdrill.png | Bin 0 -> 797 bytes .../DiamondHandDrill.rsi/inhand-left.png | Bin 0 -> 555 bytes .../DiamondHandDrill.rsi/inhand-right.png | Bin 0 -> 652 bytes .../Tools/DiamondHandDrill.rsi/meta.json | 22 +++ .../Tools/DiamondPickaxe.rsi/inhand-left.png | Bin 0 -> 317 bytes .../Tools/DiamondPickaxe.rsi/inhand-right.png | Bin 0 -> 470 bytes .../Tools/DiamondPickaxe.rsi/meta.json | 22 +++ .../Tools/DiamondPickaxe.rsi/pickaxe.png | Bin 0 -> 646 bytes .../Machines/diamond_crusher.rsi/base.png | Bin 0 -> 813 bytes .../diamond_crusher.rsi/door-closed.png | Bin 0 -> 258 bytes .../Machines/diamond_crusher.rsi/glass.png | Bin 0 -> 128 bytes .../Machines/diamond_crusher.rsi/lights.png | Bin 0 -> 221 bytes .../Machines/diamond_crusher.rsi/meta.json | 48 ++++++ .../diamond_crusher.rsi/piston-push.png | Bin 0 -> 762 bytes .../Machines/diamond_crusher.rsi/piston.png | Bin 0 -> 228 bytes 106 files changed, 1179 insertions(+), 199 deletions(-) create mode 100644 Content.Client/_LostParadise/DiamondCrusher/DiamondCrusherSystem.cs create mode 100644 Content.Server/_LostParadise/DiamondCrusher/DiamondCrusherSystem.cs create mode 100644 Content.Shared/_LostParadise/DiamondCrusher/DiamondComponent.cs create mode 100644 Content.Shared/_LostParadise/DiamondCrusher/DiamondCrusherComponent.cs create mode 100644 Content.Shared/_LostParadise/DiamondCrusher/SharedDiamondCrusherSystem.cs create mode 100644 Resources/Locale/ru-RU/_LostParadise/DiamondCrusher.ftl create mode 100644 Resources/Locale/ru-RU/_LostParadise/diamond.ftl create mode 100644 Resources/Prototypes/Research/diamond_production.yml create mode 100644 Resources/Prototypes/_LostParadise/Entities/Structures/Machines/DiamondCrusher.yml create mode 100644 Resources/Prototypes/_LostParadise/Entities/Structures/Walls/asteroid.yml create mode 100644 Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid.png create mode 100644 Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_east.png create mode 100644 Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_north.png create mode 100644 Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_south.png create mode 100644 Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_west.png create mode 100644 Resources/Textures/Interface/Misc/research_disciplines.rsi/diamond_production.png create mode 100644 Resources/Textures/Objects/Materials/ingots.rsi/diamond.png create mode 100644 Resources/Textures/Structures/Machines/computers.rsi/tracking_icon.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/full_two.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_0.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_0_two.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_1.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_1_two.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_2.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_2_two.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_3.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_3_two.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_4.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_4_two.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_5.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_5_two.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_6.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_6_two.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_7.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_7_two.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_ore_diamond.png create mode 100644 Resources/Textures/_LostParadise/Objects/Specific/Mining/OreDiamond.rsi/icon.png create mode 100644 Resources/Textures/_LostParadise/Objects/Specific/Mining/OreDiamond.rsi/inhand-left.png create mode 100644 Resources/Textures/_LostParadise/Objects/Specific/Mining/OreDiamond.rsi/inhand-right.png create mode 100644 Resources/Textures/_LostParadise/Objects/Specific/Mining/OreDiamond.rsi/meta.json create mode 100644 Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/handdrill.png create mode 100644 Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/inhand-left.png create mode 100644 Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/inhand-right.png create mode 100644 Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/meta.json create mode 100644 Resources/Textures/_LostParadise/Objects/Tools/DiamondPickaxe.rsi/inhand-left.png create mode 100644 Resources/Textures/_LostParadise/Objects/Tools/DiamondPickaxe.rsi/inhand-right.png create mode 100644 Resources/Textures/_LostParadise/Objects/Tools/DiamondPickaxe.rsi/meta.json create mode 100644 Resources/Textures/_LostParadise/Objects/Tools/DiamondPickaxe.rsi/pickaxe.png create mode 100644 Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/base.png create mode 100644 Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/door-closed.png create mode 100644 Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/glass.png create mode 100644 Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/lights.png create mode 100644 Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/meta.json create mode 100644 Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/piston-push.png create mode 100644 Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/piston.png diff --git a/Content.Client/_LostParadise/DiamondCrusher/DiamondCrusherSystem.cs b/Content.Client/_LostParadise/DiamondCrusher/DiamondCrusherSystem.cs new file mode 100644 index 0000000000..a12deb9d32 --- /dev/null +++ b/Content.Client/_LostParadise/DiamondCrusher/DiamondCrusherSystem.cs @@ -0,0 +1,9 @@ +using Content.Shared._LostParadise.DiamondCrusher; + +namespace Content.Client._LostParadise.DiamondCrusher; + +/// <унаследование/> +public sealed class DiamondCrusherSystem : SharedDiamondCrusherSystem +{ + +} diff --git a/Content.Server/_LostParadise/DiamondCrusher/DiamondCrusherSystem.cs b/Content.Server/_LostParadise/DiamondCrusher/DiamondCrusherSystem.cs new file mode 100644 index 0000000000..fe0baf51f9 --- /dev/null +++ b/Content.Server/_LostParadise/DiamondCrusher/DiamondCrusherSystem.cs @@ -0,0 +1,141 @@ +using Content.Server.Body.Systems; +using Content.Server.Popups; +using Content.Server.Power.Components; +using Content.Server.Power.EntitySystems; +using Content.Server.Stack; +using Content.Server.Storage.Components; +using Content.Shared.Body.Components; +using Content.Shared.Damage; +using Content.Shared.Verbs; +using Content.Shared._LostParadise.DiamondCrusher; +using Robust.Shared.Collections; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Server._LostParadise.DiamondCrusher.Systems; + +/// <унаследование/> +public sealed class DiamondCrusherSystem : SharedDiamondCrusherSystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly BodySystem _body = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly StackSystem _stack = default!; + [Dependency] private readonly PopupSystem _popup = default!; + + /// <унаследование/> + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>(OnGetVerbs); + SubscribeLocalEvent(OnPowerChanged); + } + + private void OnGetVerbs(Entity ent, ref GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Hands == null || ent.Comp.Crushing) + return; + + if (!TryComp(ent, out var entityStorageComp) || + entityStorageComp.Contents.ContainedEntities.Count == 0) + return; + + if (!this.IsPowered(ent, EntityManager)) + return; + + var verb = new AlternativeVerb + { + Text = Loc.GetString("diamond-crusher-verb-start-crushing"), + Priority = 2, + Act = () => StartCrushing((ent, ent.Comp, entityStorageComp)) + }; + args.Verbs.Add(verb); + } + + private void OnPowerChanged(Entity ent, ref PowerChangedEvent args) + { + if (!args.Powered) + StopCrushing(ent); + } + + public void StartCrushing(Entity ent) + { + var (uid, crusher, _) = ent; + + if (crusher.Crushing) + return; + + if (crusher.AutoLock) + _popup.PopupEntity(Loc.GetString("diamond-crusher-autolocks-enable"), uid); + + crusher.Crushing = true; + crusher.NextSecond = _timing.CurTime + TimeSpan.FromSeconds(1); + crusher.CrushEndTime = _timing.CurTime + crusher.CrushDuration; + crusher.CrushingSoundEntity = AudioSystem.PlayPvs(crusher.CrushingSound, ent); + Appearance.SetData(ent, DiamondCrusherVisuals.Crushing, true); + Dirty(ent, ent.Comp1); + } + + public void FinishCrushing(Entity ent) + { + var (_, crusher, storage) = ent; + StopCrushing((ent, ent.Comp1), false); + AudioSystem.PlayPvs(crusher.CrushingCompleteSound, ent); + crusher.CrushingSoundEntity = null; + Dirty(ent, ent.Comp1); + + var contents = new ValueList(storage.Contents.ContainedEntities); + var coords = Transform(ent).Coordinates; + foreach (var contained in contents) + { + if (crusher.CrushingWhitelist.IsValid(contained, EntityManager)) + { + var amount = _random.Next(crusher.MinFragments, crusher.MaxFragments); + var stacks = _stack.SpawnMultiple(crusher.FragmentStackProtoId, amount, coords); + foreach (var stack in stacks) + { + ContainerSystem.Insert((stack, null, null, null), crusher.OutputContainer); + } + } + + if (!TryComp(contained, out var body)) + Del(contained); + + var gibs = _body.GibBody(contained, body: body, gibOrgans: true); + foreach (var gib in gibs) + { + ContainerSystem.Insert((gib, null, null, null), crusher.OutputContainer); + } + } + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var crusher, out var storage)) + { + if (!crusher.Crushing) + continue; + + if (crusher.NextSecond < _timing.CurTime) + { + var contents = new ValueList(storage.Contents.ContainedEntities); + foreach (var contained in contents) + { + _damageable.TryChangeDamage(contained, crusher.CrushingDamage); + } + crusher.NextSecond += TimeSpan.FromSeconds(1); + Dirty(uid, crusher); + } + + if (crusher.CrushEndTime < _timing.CurTime) + { + FinishCrushing((uid, crusher, storage)); + } + } + } +} diff --git a/Content.Shared/_LostParadise/DiamondCrusher/DiamondComponent.cs b/Content.Shared/_LostParadise/DiamondCrusher/DiamondComponent.cs new file mode 100644 index 0000000000..e93829182f --- /dev/null +++ b/Content.Shared/_LostParadise/DiamondCrusher/DiamondComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._LostParadise.DiamondCrusher; + +[RegisterComponent, NetworkedComponent] +public sealed partial class DiamondComponent : Component +{ + +} diff --git a/Content.Shared/_LostParadise/DiamondCrusher/DiamondCrusherComponent.cs b/Content.Shared/_LostParadise/DiamondCrusher/DiamondCrusherComponent.cs new file mode 100644 index 0000000000..f5f9dd45fa --- /dev/null +++ b/Content.Shared/_LostParadise/DiamondCrusher/DiamondCrusherComponent.cs @@ -0,0 +1,116 @@ +using Content.Shared.Damage; +using Content.Shared.Stacks; +using Content.Shared.Whitelist; +using Robust.Shared.Audio; +using Robust.Shared.Audio.Components; +using Robust.Shared.Containers; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared._LostParadise.DiamondCrusher; + +/// +/// Это хранилище сущностей, которое при активации сжимает (не обработанные)алмазы внутри себя и выдает (обработанные)алмазы. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedDiamondCrusherSystem))] +public sealed partial class DiamondCrusherComponent : Component +{ + /// + /// Независимо от того, находится ли дробилка в данный момент в процессе дробления чего-либо или нет. + /// + [DataField, AutoNetworkedField] + public bool Crushing; + + /// + /// Когда закончится текущее дробление. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public TimeSpan CrushEndTime; + + /// + /// В следующую секунду. Используется для нанесения урона с течением времени. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public TimeSpan NextSecond; + + /// + /// Общая продолжительность дробления. + /// + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public TimeSpan CrushDuration = TimeSpan.FromSeconds(10); + + /// + /// Вайтлист предметов для которых, после дробления, будет давать фрагменты. + /// + [DataField] + public EntityWhitelist CrushingWhitelist = new(); + + /// + /// Минимальное число фрагментов. + /// + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public int MinFragments = 5; + + /// + /// Максимальное число фрагментов, не включительно + /// + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public int MaxFragments = 15; + + /// + /// Какой прототип будет являтся результатом дробления + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public ProtoId FragmentStackProtoId = "LPPProcessedDiamond"; + + /// + /// Контейнер, используемый для хранения осколков и крошки от дробления. + /// + [ViewVariables] + public Container OutputContainer; + + /// + /// Айди для + /// + [DataField] + public string OutputContainerName = "output_container"; + + /// + /// Урон, наносимый каждую секунду существам, находящимся внутри, во время дробления. + /// + [DataField] + public DamageSpecifier CrushingDamage = new(); + + /// + /// Звук воспроизводится в конце успешной обработки. + /// + [DataField, AutoNetworkedField] + public SoundSpecifier? CrushingCompleteSound = new SoundCollectionSpecifier("MetalCrunch"); + + /// + /// Звук воспроизводится на протяжении всего процесса дробления. Отключается, если он закончился раньше времени. + /// + [DataField, AutoNetworkedField] + public SoundSpecifier? CrushingSound = new SoundPathSpecifier("/Audio/Effects/hydraulic_press.ogg"); + + /// + /// Хранит сущность чтобы позволить покончить с этим пораньше. + /// + [DataField] + public (EntityUid, AudioComponent)? CrushingSoundEntity; + + /// + /// Когда этот параметр включен, устройство для обработки алмазов не открывается во время их измельчения. + /// + [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + public bool AutoLock = false; +} + +[Serializable, NetSerializable] +public enum DiamondCrusherVisuals : byte +{ + Crushing +} diff --git a/Content.Shared/_LostParadise/DiamondCrusher/SharedDiamondCrusherSystem.cs b/Content.Shared/_LostParadise/DiamondCrusher/SharedDiamondCrusherSystem.cs new file mode 100644 index 0000000000..791783b62b --- /dev/null +++ b/Content.Shared/_LostParadise/DiamondCrusher/SharedDiamondCrusherSystem.cs @@ -0,0 +1,76 @@ +using Content.Shared.Examine; +using Content.Shared.Storage.Components; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Containers; +using Content.Shared.Emag.Systems; + +namespace Content.Shared._LostParadise.DiamondCrusher; + +/// <резюме> +/// Это обрабатывает логику, относящуюся к +/// +public abstract class SharedDiamondCrusherSystem : EntitySystem +{ + [Dependency] protected readonly SharedAppearanceSystem Appearance = default!; + [Dependency] protected readonly SharedAudioSystem AudioSystem = default!; + [Dependency] protected readonly SharedContainerSystem ContainerSystem = default!; + + /// <унаследование/> + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnStorageAfterOpen); + SubscribeLocalEvent(OnStorageOpenAttempt); + SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnEmagged); + } + + private void OnInit(Entity ent, ref ComponentInit args) + { + ent.Comp.OutputContainer = ContainerSystem.EnsureContainer(ent, ent.Comp.OutputContainerName); + } + + private void OnStorageAfterOpen(Entity ent, ref StorageAfterOpenEvent args) + { + StopCrushing(ent); + ContainerSystem.EmptyContainer(ent.Comp.OutputContainer); + } + + private void OnEmagged(Entity ent, ref GotEmaggedEvent args) + { + ent.Comp.AutoLock = true; + args.Handled = true; + } + + private void OnStorageOpenAttempt(Entity ent, ref StorageOpenAttemptEvent args) + { + if (ent.Comp.AutoLock && ent.Comp.Crushing) + args.Cancelled = true; + } + + private void OnExamine(Entity ent, ref ExaminedEvent args) + { + args.PushMarkup(ent.Comp.AutoLock ? Loc.GetString("diamond-crusher-examine-autolocks") : Loc.GetString("artifact-crusher-examine-no-autolocks")); + } + + public void StopCrushing(Entity ent, bool early = true) + { + var (_, crusher) = ent; + + if (!crusher.Crushing) + return; + + crusher.Crushing = false; + Appearance.SetData(ent, DiamondCrusherVisuals.Crushing, false); + + if (early) + { + AudioSystem.Stop(crusher.CrushingSoundEntity?.Item1, crusher.CrushingSoundEntity?.Item2); + crusher.CrushingSoundEntity = null; + } + + Dirty(ent, ent.Comp); + } +} diff --git a/Resources/Locale/ru-RU/_LostParadise/DiamondCrusher.ftl b/Resources/Locale/ru-RU/_LostParadise/DiamondCrusher.ftl new file mode 100644 index 0000000000..a5fc1ed5b2 --- /dev/null +++ b/Resources/Locale/ru-RU/_LostParadise/DiamondCrusher.ftl @@ -0,0 +1,4 @@ +diamond-crusher-verb-start-crushing = Начать обработку +artifact-crusher-examine-no-autolocks = Блокировщики [color=green]отключены[/color]. +artifact-crusher-examine-autolocks = Блокировщики [color=red]включены[/color]. +artifact-crusher-autolocks-enable = Блокировщики машины захлопнулись! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_LostParadise/diamond.ftl b/Resources/Locale/ru-RU/_LostParadise/diamond.ftl new file mode 100644 index 0000000000..7782b340d7 --- /dev/null +++ b/Resources/Locale/ru-RU/_LostParadise/diamond.ftl @@ -0,0 +1,21 @@ +ent-LPPAsteroidRockOreDiamond = { ent-AsteroidRock } + .desc = Каменная стена. Что это торчит из неё? + .suffix = не обработанный алмаз +ent-LPPWallRockOreDiamond = { ent-WallRock } + .desc = Каменная стена. Что это торчит из неё? + .suffix = не обработанный алмаз +ent-LPPWallRockBasaltOreDiamond = { ent-WallRockBasalt } + .desc = Каменная стена. Что это торчит из неё? + .suffix = не обработанный алмаз +ent-LPPWallRockSnowOreDiamond = { ent-WallRockSnow } + .desc = Каменная стена. Что это торчит из неё? + .suffix = не обработанный алмаз +ent-LPPWallRockSandOreDiamond = { ent-WallRockSand } + .desc = Каменная стена. Что это торчит из неё? + .suffix = не обработанный алмаз +ent-LPPWallRockChromiteOreDiamond = { ent-WallRockChromite } + .desc = Каменная стена. Что это торчит из неё? + .suffix = не обработанный алмаз +ent-LPPWallRockAndesiteOreDiamond = { ent-WallRockAndesite } + .desc = Каменная стена. Что это торчит из неё? + .suffix = не обработанный алмаз \ No newline at end of file diff --git a/Resources/Locale/ru-RU/artifacts/artifact-crusher.ftl b/Resources/Locale/ru-RU/artifacts/artifact-crusher.ftl index d9f10f4334..b0bf64930f 100644 --- a/Resources/Locale/ru-RU/artifacts/artifact-crusher.ftl +++ b/Resources/Locale/ru-RU/artifacts/artifact-crusher.ftl @@ -1,3 +1,3 @@ -artifact-crusher-examine-no-autolocks = The machine's autolocks are [color=green]disabled[/color]. -artifact-crusher-examine-autolocks = The machine's autolocks are [color=red]enabled[/color]. -artifact-crusher-autolocks-enable = The machine's locks snap shut! +artifact-crusher-examine-no-autolocks = Блокировщики [color=green]отключены[/color]. +artifact-crusher-examine-autolocks = Блокировщики [color=red]включены[/color]. +artifact-crusher-autolocks-enable = Блокировщики машины захлопнулись! diff --git a/Resources/Locale/ru-RU/materials/materials.ftl b/Resources/Locale/ru-RU/materials/materials.ftl index 8d555bc5c1..1fa7ad4f26 100644 --- a/Resources/Locale/ru-RU/materials/materials.ftl +++ b/Resources/Locale/ru-RU/materials/materials.ftl @@ -30,8 +30,8 @@ materials-raw-iron = руда железа materials-raw-quartz = руда кварца materials-raw-gold = руда золота materials-raw-silver = руда серебра +materials-raw-diamond = обработанный алмаз materials-raw-plasma = руда плазмы materials-raw-uranium = руда урана materials-raw-bananium = руда бананиума materials-raw-salt = каменная соль -materials-raw-diamond = необработанные алмазы diff --git a/Resources/Locale/ru-RU/research/technologies.ftl b/Resources/Locale/ru-RU/research/technologies.ftl index fd8c4a846c..692fb9d275 100644 --- a/Resources/Locale/ru-RU/research/technologies.ftl +++ b/Resources/Locale/ru-RU/research/technologies.ftl @@ -3,6 +3,8 @@ research-discipline-industrial = Промышленность research-discipline-arsenal = Арсенал research-discipline-experimental = Экспериментальное research-discipline-civilian-services = Обслуживание персонала +research-discipline-diamond-production = Алмазное производство +lppresearch-technology-diamond-salvage-equipment = Продвинутое алмазное шахтёрское оборудование research-technology-fulton = Фултоны research-technology-Ion-gun = Ионное Оружие research-technology-salvage-equipment = Снаряжение для утилизации @@ -38,6 +40,7 @@ research-technology-wave-particle-harnessing = Применение волнов lppresearch-technology-combat-utility = Боевая медицина lppresearch-technology-basic-administration-of-drugs = Базовое введение препаратов lppresearch-technology-basic-tracking = Базовое отслеживание +lppresearch-technology-advanced-tracking = Продвинутое отслеживание research-technology-advanced-riot-control = Продвинутое противодействие беспорядкам research-technology-portable-microfusion-weaponry = Оруженый портативный микросинтез research-technology-experimental-battery-ammo = Экспериментальные батарейные боеприпасы @@ -52,6 +55,7 @@ research-technology-advanced-parts = Продвинутые компоненты research-technology-anomaly-harnessing = Применение ядер аномалий research-technology-grappling = Технология захвата research-technology-abnormal-artifact-manipulation = Переработка артефактов +lppresearch-technology-diamond-processing = Обработка алмазов research-technology-gravity-manipulation = Манипулирование гравитацией research-technology-quantum-leaping = Квантовые скачки research-technology-advanced-anomaly-research = Продвинутое изучение аномалий diff --git a/Resources/Locale/ru-RU/salvage/salvage-magnet.ftl b/Resources/Locale/ru-RU/salvage/salvage-magnet.ftl index c141c684e8..71e6445808 100644 --- a/Resources/Locale/ru-RU/salvage/salvage-magnet.ftl +++ b/Resources/Locale/ru-RU/salvage/salvage-magnet.ftl @@ -11,7 +11,7 @@ salvage-magnet-resources = [OreCoal] Уголь [OreQuartz] Кварц [OreGold] Золото - [OreDiamond] Алмазы + [LPPOreDiamond] Алмазы [OreSilver] Серебро [OrePlasma] Плазма [OreUranium] Уран diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/materials/materials.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/materials/materials.ftl index b5da72d16a..2f37d84006 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/materials/materials.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/materials/materials.ftl @@ -43,7 +43,7 @@ ent-MaterialHideBear = медвежья шкура .desc = { ent-MaterialBase.desc } ent-MaterialHideCorgi = шкура корги .desc = Роскошная шкура, используемая в высокой моде. Ходят слухи, что их находят, когда старые корги отправляются на ферму. -ent-MaterialDiamond = очищенный бриллиант +ent-MaterialDiamond = очищенный алмаз .suffix = Полный .desc = { ent-MaterialBase.desc } ent-MaterialDiamond1 = { ent-MaterialDiamond } diff --git a/Resources/Maps/_LostParadise/LP_Normandy.yml b/Resources/Maps/_LostParadise/LP_Normandy.yml index 2bc50b526e..02daf45c8d 100644 --- a/Resources/Maps/_LostParadise/LP_Normandy.yml +++ b/Resources/Maps/_LostParadise/LP_Normandy.yml @@ -81580,13 +81580,6 @@ entities: - type: Transform pos: 58.739925,9.466386 parent: 2 -- proto: SecBreachingHammer - entities: - - uid: 12985 - components: - - type: Transform - pos: 66.52352,45.10759 - parent: 2 - proto: SecurityTechFab entities: - uid: 8142 diff --git a/Resources/Maps/_LostParadise/asterisk.yml b/Resources/Maps/_LostParadise/asterisk.yml index 6002b9b705..f2f911399f 100644 --- a/Resources/Maps/_LostParadise/asterisk.yml +++ b/Resources/Maps/_LostParadise/asterisk.yml @@ -56751,13 +56751,6 @@ entities: - type: Transform pos: -47.609417,7.24538 parent: 2 -- proto: SecBreachingHammer - entities: - - uid: 3299 - components: - - type: Transform - pos: -42.5,11.5 - parent: 2 - proto: SecurityTechFab entities: - uid: 1488 diff --git a/Resources/Maps/_LostParadise/pebble.yml b/Resources/Maps/_LostParadise/pebble.yml index ceaa8bdbf1..82f7bc15ac 100644 --- a/Resources/Maps/_LostParadise/pebble.yml +++ b/Resources/Maps/_LostParadise/pebble.yml @@ -57329,13 +57329,6 @@ entities: - type: Transform pos: -26.5,-20.5 parent: 2 -- proto: SecBreachingHammer - entities: - - uid: 8620 - components: - - type: Transform - pos: 22.879267,-14.333235 - parent: 2 - proto: SecurityTechFab entities: - uid: 8621 diff --git a/Resources/Maps/_LostParadise/submarine.yml b/Resources/Maps/_LostParadise/submarine.yml index e3d993b9b2..0b2e9ef542 100644 --- a/Resources/Maps/_LostParadise/submarine.yml +++ b/Resources/Maps/_LostParadise/submarine.yml @@ -202902,13 +202902,6 @@ entities: - type: Transform pos: 10.653106,58.48732 parent: 2 -- proto: SecBreachingHammer - entities: - - uid: 16541 - components: - - type: Transform - pos: -26.344074,37.36297 - parent: 2 - uid: 16556 components: - type: Transform diff --git a/Resources/Maps/arena.yml b/Resources/Maps/arena.yml index 563011f75f..59f445dbf8 100644 --- a/Resources/Maps/arena.yml +++ b/Resources/Maps/arena.yml @@ -146753,13 +146753,6 @@ entities: - type: Transform pos: 39.452625,-85.156075 parent: 6747 -- proto: SecBreachingHammer - entities: - - uid: 3186 - components: - - type: Transform - pos: -32.46227,10.543685 - parent: 6747 - proto: SecurityTechFab entities: - uid: 1223 diff --git a/Resources/Maps/asterisk.yml b/Resources/Maps/asterisk.yml index 156fb2de6e..34c6b77d87 100644 --- a/Resources/Maps/asterisk.yml +++ b/Resources/Maps/asterisk.yml @@ -56439,13 +56439,6 @@ entities: - type: Transform pos: -47.609417,7.24538 parent: 2 -- proto: SecBreachingHammer - entities: - - uid: 3299 - components: - - type: Transform - pos: -42.5,11.5 - parent: 2 - proto: SecurityTechFab entities: - uid: 1488 diff --git a/Resources/Maps/edge.yml b/Resources/Maps/edge.yml index 601cb7dd17..d5ce8c713c 100644 --- a/Resources/Maps/edge.yml +++ b/Resources/Maps/edge.yml @@ -88769,13 +88769,6 @@ entities: - type: Transform pos: -40.520424,40.344563 parent: 2 -- proto: SecBreachingHammer - entities: - - uid: 13482 - components: - - type: Transform - pos: -44.37972,-6.4715266 - parent: 2 - proto: SecurityTechFab entities: - uid: 13483 diff --git a/Resources/Maps/hammurabi.yml b/Resources/Maps/hammurabi.yml index 0afaa64934..c1077b5bfe 100644 --- a/Resources/Maps/hammurabi.yml +++ b/Resources/Maps/hammurabi.yml @@ -231297,14 +231297,6 @@ entities: rot: 3.141592653589793 rad pos: -133.9929,-47.262802 parent: 1 -- proto: SecBreachingHammer - entities: - - uid: 12621 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -63.457417,-45.395763 - parent: 1 - uid: 12622 components: - type: Transform diff --git a/Resources/Maps/hive.yml b/Resources/Maps/hive.yml index a732c83a53..582f496b2b 100644 --- a/Resources/Maps/hive.yml +++ b/Resources/Maps/hive.yml @@ -139530,13 +139530,6 @@ entities: - type: Transform pos: 67.51577,32.45275 parent: 1 -- proto: SecBreachingHammer - entities: - - uid: 21457 - components: - - type: Transform - pos: 84.52116,17.583738 - parent: 1 - proto: SecurityTechFab entities: - uid: 4904 diff --git a/Resources/Maps/pebble.yml b/Resources/Maps/pebble.yml index 6f38df6c0e..6fd3445d4d 100644 --- a/Resources/Maps/pebble.yml +++ b/Resources/Maps/pebble.yml @@ -57822,13 +57822,6 @@ entities: - type: Transform pos: -26.5,-20.5 parent: 2 -- proto: SecBreachingHammer - entities: - - uid: 8620 - components: - - type: Transform - pos: 22.879267,-14.333235 - parent: 2 - proto: SecurityTechFab entities: - uid: 8621 diff --git a/Resources/Maps/shoukou.yml b/Resources/Maps/shoukou.yml index afd78ab15e..3a79b98bd0 100644 --- a/Resources/Maps/shoukou.yml +++ b/Resources/Maps/shoukou.yml @@ -70905,13 +70905,6 @@ entities: rot: 3.141592653589793 rad pos: -18.468266,3.9137797 parent: 34 -- proto: SecBreachingHammer - entities: - - uid: 4922 - components: - - type: Transform - pos: 32.493702,-9.347706 - parent: 34 - proto: SecurityTechFab entities: - uid: 4422 diff --git a/Resources/Maps/submarine.yml b/Resources/Maps/submarine.yml index 310644914b..a1f545fc7a 100644 --- a/Resources/Maps/submarine.yml +++ b/Resources/Maps/submarine.yml @@ -203953,13 +203953,6 @@ entities: - type: Transform pos: 10.653106,58.48732 parent: 2 -- proto: SecBreachingHammer - entities: - - uid: 16541 - components: - - type: Transform - pos: -26.344074,37.36297 - parent: 2 - uid: 16556 components: - type: Transform diff --git a/Resources/Maps/tortuga.yml b/Resources/Maps/tortuga.yml index 399a06a400..7f0a19fc3e 100644 --- a/Resources/Maps/tortuga.yml +++ b/Resources/Maps/tortuga.yml @@ -163167,14 +163167,6 @@ entities: - type: Transform pos: -90.394936,-19.181442 parent: 33 -- proto: SecBreachingHammer - entities: - - uid: 7070 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -28.413374,66.53389 - parent: 33 - proto: SecurityTechFab entities: - uid: 5837 diff --git a/Resources/Prototypes/DeltaV/Entities/Structures/Walls/mountain.yml b/Resources/Prototypes/DeltaV/Entities/Structures/Walls/mountain.yml index 575687336a..363f270227 100644 --- a/Resources/Prototypes/DeltaV/Entities/Structures/Walls/mountain.yml +++ b/Resources/Prototypes/DeltaV/Entities/Structures/Walls/mountain.yml @@ -1,44 +1,13 @@ - type: entity id: AsteroidAltRock #It's 1994 - parent: BaseStructure + parent: AsteroidRock name: asteroid rock suffix: Low Ore Yield description: A rocky asteroid. components: - - type: Gatherable - whitelist: - tags: - - Pickaxe - type: Sprite - sprite: DeltaV/Structures/Walls/asteroid_rock.rsi + sprite: Structures/Walls/rock.rsi state: full - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Metallic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 150 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - type: Occluder - - type: Airtight - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeAabb - bounds: "-0.5,-0.5,0.5,0.5" - density: 100 - mask: - - FullTileMask - layer: - - WallLayer - - type: IconSmooth - key: walls - base: rock_ - type: OreVein oreChance: 0.2 oreRarityPrototypeId: RandomOreDistributionStandard @@ -52,7 +21,7 @@ components: - type: Sprite sprite: DeltaV/Structures/Walls/mountain_rock_ore.rsi - state: full + state: full_two - type: Destructible thresholds: - trigger: @@ -110,10 +79,6 @@ suffix: Higher Ore Yield description: A rocky asteroid. components: - - type: Gatherable - whitelist: - tags: - - Pickaxe - type: OreVein oreChance: 0.33 oreRarityPrototypeId: RandomOreDistributionStandard diff --git a/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml b/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml index cd79417a44..a872164ba3 100644 --- a/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml @@ -172,6 +172,7 @@ category: Weapons completetime: 15 materials: + LPPDiamond: 2500 Steel: 2000 Glass: 1000 Plastic: 500 diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 891dfc1e79..81d010a5f4 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -616,10 +616,6 @@ materialRequirements: Steel: 1 Cable: 2 - - type: ReverseEngineering # Delta - difficulty: 3 - recipes: - - CrewMonitoringServerMachineCircuitboard - type: entity id: CryoPodMachineCircuitboard @@ -1407,6 +1403,7 @@ materialRequirements: Steel: 5 Bluespace: 2 #DeltaV Bluespace Exists + Diamond: 3 # LostParadise - type: ReverseEngineering # Delta difficulty: 3 recipes: diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml index 1210f302fc..9d194e01e8 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml @@ -235,10 +235,6 @@ components: - type: ComputerBoard prototype: ComputerCrewMonitoring - - type: ReverseEngineering # Nyano - difficulty: 2 - recipes: - - CrewMonitoringComputerCircuitboard - type: entity parent: BaseComputerCircuitboard diff --git a/Resources/Prototypes/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Entities/Objects/Materials/materials.yml index e71a163b5d..ee0d7d70ab 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/materials.yml @@ -348,12 +348,21 @@ name: refined diamond suffix: Full components: + - type: Tag + tags: + - Ingot + - LPPProcessedDiamond + - type: Material + - type: PhysicalComposition + materialComposition: + LPPDiamond: 500 - type: Stack stackType: Diamond - type: Sprite state: diamond - type: Item heldPrefix: diamond + - type: Appearance - type: Extractable grindableSolutionName: diamond - type: SolutionContainerManager diff --git a/Resources/Prototypes/Entities/Objects/Specific/Salvage/ore_bag.yml b/Resources/Prototypes/Entities/Objects/Specific/Salvage/ore_bag.yml index a36bfaf676..e2a3bb176c 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Salvage/ore_bag.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Salvage/ore_bag.yml @@ -23,6 +23,7 @@ areaInsert: true whitelist: tags: + - LPPProcessedDiamond - ArtifactFragment - Ore - type: Dumpable diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml index fb1eb3d7fe..da69264cdb 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml @@ -12,7 +12,7 @@ state: pickaxe - type: MeleeWeapon attackRate: 0.85 - range: 1.5 + range: 1.25 wideAnimationRotation: -135 soundHit: path: "/Audio/Weapons/smash.ogg" @@ -31,7 +31,7 @@ damage: types: Blunt: 5 - Structural: 30 + Structural: 12 - type: Item size: Normal shape: @@ -61,7 +61,7 @@ soundHit: path: "/Audio/Items/drill_hit.ogg" attackRate: 1.2 - range: 1.5 + range: 1.25 damage: types: Blunt: 6 @@ -72,8 +72,81 @@ heavyRangeModifier: 2 heavyDamageBaseModifier: 1 angle: 20 - - type: ReverseEngineering # Nyano difficulty: 2 recipes: - MiningDrill + +- type: entity + parent: BaseItem + id: LPPDiamondMiningDrill + name: алмазный шахтёрский бур + description: Сильнейший шахтёрский бур способный в разы быстрее и сильнее пробивать камни. Имеет этикетку "BL CORP technology". + components: + - type: Item + storedRotation: -90 + - type: Tag + tags: + - Pickaxe + - type: Sprite + sprite: _LostParadise/Objects/Tools/DiamondHandDrill.rsi + state: handdrill + - type: MeleeWeapon + autoAttack: true + wideAnimationRotation: -90 + soundHit: + path: "/Audio/Items/drill_hit.ogg" + attackRate: 3.0 + range: 1.5 + damage: + types: + Blunt: 6 + Slash: 4 + Structural: 42 + heavyRateModifier: 1 + heavyRangeModifier: 2 + heavyDamageBaseModifier: 1 + angle: 75 + +- type: entity + name: pickaxe + parent: BaseItem + id: LPPDiamondPickaxe + description: Notched to perfection, for jamming it into rocks + components: + - type: Tag + tags: + - Pickaxe + - type: Sprite + sprite: _LostParadise/Objects/Tools/DiamondPickaxe.rsi + state: pickaxe + - type: MeleeWeapon + attackRate: 2.5 + range: 1.5 + wideAnimationRotation: -135 + soundHit: + path: "/Audio/Weapons/smash.ogg" + params: + volume: -3 + damage: + types: + Blunt: 6 + Pierce: 5 + bluntStaminaDamageFactor: 2.0 + heavyDamageBaseModifier: 1.75 + maxTargets: 5 + angle: 80 + - type: Wieldable + - type: IncreaseDamageOnWield + damage: + types: + Blunt: 5 + Structural: 42 + - type: Item + size: Normal + shape: + - 0,0,2,0 + - 1,1,1,2 + sprite: Objects/Weapons/Melee/pickaxe.rsi + storedRotation: -45 + - type: UseDelay \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml b/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml index dbef5a7504..6c6504e05d 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml @@ -40,7 +40,7 @@ footstepSoundCollection: collection: FootstepHull - type: RequireProjectileTarget - + - type: entity id: CounterBase parent: TableBase diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 0c8031c6f8..1d61db19ce 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -272,9 +272,9 @@ runningState: building staticRecipes: - LargeBeaker - - Dropper - ClothingEyesGlassesChemical dynamicRecipes: + - Dropper - LPPRCDFAPDevice - LPPRCDFAPAmmo - PowerDrill @@ -433,6 +433,7 @@ - DeepFryerMachineCircuitboard #Nyano - Summary: adds deep fryer circuit board - SpaceHeaterMachineCircuitBoard dynamicRecipes: + - LPPDiamondCrusherMachineCircuitboard - ThermomachineFreezerMachineCircuitBoard - HellfireFreezerMachineCircuitBoard - PortableScrubberMachineCircuitBoard @@ -1211,11 +1212,13 @@ ignoreColor: true whitelist: tags: + - LPPProcessedDiamond - Ore - type: Lathe idleState: icon runningState: building staticRecipes: + - LPPMaterialDiamond - BluespaceCrystal #Nyano - Summary: Bluespace Crystals can be created here. - SheetSteel30 - SheetGlass30 @@ -1245,6 +1248,8 @@ materialUseMultiplier: 0.75 timeMultiplier: 0.5 staticRecipes: + - LPPMaterialDiamond + - BluespaceCrystal - SheetSteel30 - SheetGlass30 - SheetRGlass30 diff --git a/Resources/Prototypes/Entities/Structures/Machines/research.yml b/Resources/Prototypes/Entities/Structures/Machines/research.yml index 948b3f84b2..7f97499ae8 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/research.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/research.yml @@ -18,6 +18,7 @@ - Arsenal - Experimental - CivilianServices + - LPPDiamondProduction - type: ApcPowerReceiver powerLoad: 200 - type: ExtensionCableReceiver diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml index a8cb0b1cb8..37aa89c489 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml @@ -36,7 +36,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 120 + damage: 250 behaviors: - !type:DoActsBehavior acts: ["Destruction"] @@ -367,35 +367,13 @@ # Rocks and ore veins - type: entity id: WallRock - parent: BaseWall + parent: AsteroidRock name: rock suffix: planetmap components: - - type: Transform - noRot: true - - type: SoundOnGather - - type: Gatherable - whitelist: - tags: - - Pickaxe - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Metallic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 150 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - type: Icon sprite: Structures/Walls/rock.rsi state: rock - - type: SmoothEdge - type: Sprite sprite: Structures/Walls/rock.rsi layers: @@ -1660,14 +1638,6 @@ - type: Sprite layers: - state: rock_andesite - - map: [ "enum.EdgeLayer.South" ] - state: rock_andesite_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_andesite_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_andesite_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_andesite_west - state: rock_gold - type: entity diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/breaching_hammer.yml b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/breaching_hammer.yml index d019cee136..49a0388620 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/breaching_hammer.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/breaching_hammer.yml @@ -1,5 +1,6 @@ - type: entity name: breaching hammer + suffix: НЕ МАППИТЬ parent: BaseItem id: SecBreachingHammer description: A large, heavy hammer with a long handle, used for breaking stones or other heavy material such as the skulls of violent criminals, also perfect for forcing your way trough airlocks. diff --git a/Resources/Prototypes/Reagents/Materials/ores.yml b/Resources/Prototypes/Reagents/Materials/ores.yml index 18f1d9ebb3..8265fc1b0b 100644 --- a/Resources/Prototypes/Reagents/Materials/ores.yml +++ b/Resources/Prototypes/Reagents/Materials/ores.yml @@ -6,6 +6,22 @@ icon: { sprite: Objects/Materials/ore.rsi, state: iron } price: 0.05 +- type: material + id: LPPRawDiamond + stackEntity: LPPProcessedDiamond1 + name: materials-raw-diamond + unit: materials-unit-chunk + icon: { sprite: Objects/Materials/ingots.rsi, state: diamond } + price: 0.15 + +- type: material + id: LPPDiamond + stackEntity: MaterialDiamond1 + name: materials-diamond + unit: materials-unit-chunk + icon: { sprite: Objects/Materials/materials.rsi, state: diamond } + price: 0.15 + - type: material id: RawQuartz stackEntity: SpaceQuartz1 diff --git a/Resources/Prototypes/Recipes/Lathes/chemistry.yml b/Resources/Prototypes/Recipes/Lathes/chemistry.yml index 7ee8f1ed49..f4a243b45c 100644 --- a/Resources/Prototypes/Recipes/Lathes/chemistry.yml +++ b/Resources/Prototypes/Recipes/Lathes/chemistry.yml @@ -49,6 +49,7 @@ result: BluespaceBeaker completetime: 2 materials: + LPPDiamond: 2000 Steel: 200 #Cheaper Due to Needing Bluespace Plastic: 200 Plasma: 50 @@ -60,6 +61,7 @@ result: SyringeBluespace completetime: 2 materials: + LPPDiamond: 2000 Steel: 100 #Cheaper Due to Needing Bluespace Plastic: 100 Glass: 200 diff --git a/Resources/Prototypes/Recipes/Lathes/devices.yml b/Resources/Prototypes/Recipes/Lathes/devices.yml index d41b5fdce8..aa9a43b2db 100644 --- a/Resources/Prototypes/Recipes/Lathes/devices.yml +++ b/Resources/Prototypes/Recipes/Lathes/devices.yml @@ -76,7 +76,7 @@ Steel: 100 Plastic: 200 Glass: 100 - + - type: latheRecipe id: SignallerAdvanced result: RemoteSignallerAdvanced @@ -173,6 +173,7 @@ result: OreBagOfHolding completetime: 5 materials: + LPPDiamond: 2500 Steel: 2000 Silver: 750 Plasma: 1000 #DeltaV: Bluespace Exists so less plasma used, no uranium diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 12b5bedf10..36319da1da 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -357,6 +357,16 @@ Glass: 900 Gold: 100 +- type: latheRecipe + id: LPPDiamondCrusherMachineCircuitboard + result: LPPDiamondCrusherMachineCircuitboard + category: Circuitry + completetime: 4 + materials: + Steel: 100 + Glass: 900 + Gold: 100 + - type: latheRecipe id: AnomalyVesselCircuitboard result: AnomalyVesselCircuitboard @@ -974,7 +984,7 @@ Steel: 100 Glass: 900 Gold: 100 - + - type: latheRecipe id: JukeboxCircuitBoard result: JukeboxCircuitBoard diff --git a/Resources/Prototypes/Recipes/Lathes/misc.yml b/Resources/Prototypes/Recipes/Lathes/misc.yml index ab13dc4573..81ccb3d351 100644 --- a/Resources/Prototypes/Recipes/Lathes/misc.yml +++ b/Resources/Prototypes/Recipes/Lathes/misc.yml @@ -131,6 +131,7 @@ result: ClothingShoesBootsSpeed completetime: 2 materials: + LPPDiamond: 2500 Steel: 1500 Plastic: 1000 Silver: 500 diff --git a/Resources/Prototypes/Recipes/Lathes/powercells.yml b/Resources/Prototypes/Recipes/Lathes/powercells.yml index 21928a53d2..b7e6fd0c2a 100644 --- a/Resources/Prototypes/Recipes/Lathes/powercells.yml +++ b/Resources/Prototypes/Recipes/Lathes/powercells.yml @@ -35,6 +35,7 @@ category: Parts completetime: 10 materials: + LPPDiamond: 2000 Steel: 500 Glass: 400 Uranium: 200 @@ -63,6 +64,7 @@ result: PowerCageHigh completetime: 10 materials: + LPPDiamond: 2000 Steel: 600 Glass: 800 Plastic: 400 diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index 08e11e4ff8..7eea7064b0 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -38,7 +38,7 @@ materials: Steel: 250 Plastic: 100 - + - type: latheRecipe id: WeaponLaserCarbine result: WeaponLaserCarbine @@ -55,6 +55,7 @@ category: Weapons completetime: 5 materials: + LPPDiamond: 2000 Steel: 1500 Glass: 1000 Gold: 850 @@ -621,7 +622,7 @@ Steel: 1000 Glass: 500 Plastic: 500 - + - type: latheRecipe id: MagazineGrenadeEmpty result: MagazineGrenadeEmpty @@ -629,7 +630,7 @@ materials: Steel: 150 Plastic: 50 - + - type: latheRecipe id: GrenadeEMP result: GrenadeEMP @@ -638,7 +639,7 @@ Steel: 150 Plastic: 100 Glass: 20 - + - type: latheRecipe id: GrenadeBlast result: GrenadeBlast @@ -647,7 +648,7 @@ Steel: 150 Plastic: 100 Gold: 50 - + - type: latheRecipe id: GrenadeFlash result: GrenadeFlash @@ -656,4 +657,3 @@ Steel: 150 Plastic: 100 Glass: 20 - \ No newline at end of file diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index 489bef1800..6e22bf35ea 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -18,13 +18,14 @@ id: LPPBasicTracking name: lppresearch-technology-basic-tracking icon: - sprite: Objects/Specific/Medical/handheldcrewmonitor.rsi - state: scanner + sprite: Structures/Machines/computers.rsi + state: tracking_icon discipline: CivilianServices tier: 1 - cost: 2000 + cost: 4000 recipeUnlocks: - - HandheldCrewMonitor + - LPPCrewMonitoringServerMachineCircuitboard + - CrewMonitoringComputerCircuitboard - type: technology id: Hydroponics @@ -127,6 +128,18 @@ # Tier 2 +- type: technology + id: LPPAdvancedTracking + name: lppresearch-technology-advanced-tracking + icon: + sprite: Objects/Specific/Medical/handheldcrewmonitor.rsi + state: scanner + discipline: CivilianServices + tier: 2 + cost: 4000 + recipeUnlocks: + - HandheldCrewMonitor + - type: technology id: FauxAstroTiles name: research-technology-faux-astro-tiles diff --git a/Resources/Prototypes/Research/diamond_production.yml b/Resources/Prototypes/Research/diamond_production.yml new file mode 100644 index 0000000000..4d904dae13 --- /dev/null +++ b/Resources/Prototypes/Research/diamond_production.yml @@ -0,0 +1,46 @@ +# Tier 1 + +- type: technology + id: LPPDiamondSalvageEquipment + name: lppresearch-technology-diamond-salvage-equipment + icon: + sprite: _LostParadise/Objects/Tools/DiamondHandDrill.rsi + state: handdrill + discipline: LPPDiamondProduction + tier: 1 + cost: 1000 + recipeUnlocks: + - LPPDiamondMiningDrill + - LPPDiamondPickaxe + +# Tier 2 + +# - type: technology +# id: LPPLSpaceScanning +# name: research-technology-space-scanning +# icon: +# sprite: Objects/Tools/handheld_mass_scanner.rsi +# state: icon +# discipline: LPPDiamondProduction +# tier: 2 +# cost: 7500 +# recipeUnlocks: +# - RadarConsoleCircuitboard +# - HandHeldMassScanner +# - BorgModuleGPS + +# Tier 3 + +# - type: technology +# id: LPPBluespaceStorage +# name: research-technology-bluespace-storage +# icon: +# sprite: Clothing/Back/Backpacks/holding.rsi +# state: holding +# discipline: LPPDiamondProduction +# tier: 3 +# cost: 15000 +# recipeUnlocks: +# - ClothingBackpackHolding +# - ClothingBackpackSatchelHolding +# - ClothingBackpackDuffelHolding diff --git a/Resources/Prototypes/Research/disciplines.yml b/Resources/Prototypes/Research/disciplines.yml index 7a661da1a3..84719966b4 100644 --- a/Resources/Prototypes/Research/disciplines.yml +++ b/Resources/Prototypes/Research/disciplines.yml @@ -8,7 +8,7 @@ tierPrerequisites: 1: 0 2: 0.75 - 3: 0.75 + 3: 1.0 - type: techDiscipline id: Arsenal @@ -20,7 +20,7 @@ tierPrerequisites: 1: 0 2: 0.75 - 3: 0.75 + 3: 1.0 - type: techDiscipline id: Experimental @@ -32,7 +32,7 @@ tierPrerequisites: 1: 0 2: 0.75 - 3: 0.75 + 3: 1.0 - type: techDiscipline id: CivilianServices @@ -44,4 +44,16 @@ tierPrerequisites: 1: 0 2: 0.75 - 3: 0.75 + 3: 1.0 + +- type: techDiscipline + id: LPPDiamondProduction + name: research-discipline-diamond-production + color: "#96EEFF" + icon: + sprite: Interface/Misc/research_disciplines.rsi + state: diamond_production + tierPrerequisites: + 1: 0 + 2: 0.75 + 3: 1.0 \ No newline at end of file diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml index d46e1db144..551f8449ff 100644 --- a/Resources/Prototypes/Research/experimental.yml +++ b/Resources/Prototypes/Research/experimental.yml @@ -97,6 +97,18 @@ - TraversalDistorterMachineCircuitboard - ArtifactCrusherMachineCircuitboard +- type: technology + id: LPPDiamondProcessing + name: lppresearch-technology-diamond-processing + icon: + sprite: _LostParadise/Structures/Machines/diamond_crusher.rsi + state: base + discipline: Experimental + tier: 2 + cost: 2500 + recipeUnlocks: + - LPPDiamondCrusherMachineCircuitboard + - type: technology id: AdvancedAnomalyResearch name: research-technology-advanced-anomaly-research diff --git a/Resources/Prototypes/Stacks/Materials/ore.yml b/Resources/Prototypes/Stacks/Materials/ore.yml index 2a95393c27..72cf2fa3d8 100644 --- a/Resources/Prototypes/Stacks/Materials/ore.yml +++ b/Resources/Prototypes/Stacks/Materials/ore.yml @@ -30,6 +30,14 @@ maxCount: 30 itemSize: 2 +- type: stack + id: LPPProcessedDiamond + name: обработанный алмаз + icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: diamond } + spawn: LPPProcessedDiamond1 + maxCount: 30 + itemSize: 2 + - type: stack id: SpaceQuartz name: space quartz diff --git a/Resources/Prototypes/_LostParadise/Entities/Structures/Machines/DiamondCrusher.yml b/Resources/Prototypes/_LostParadise/Entities/Structures/Machines/DiamondCrusher.yml new file mode 100644 index 0000000000..a419da8edc --- /dev/null +++ b/Resources/Prototypes/_LostParadise/Entities/Structures/Machines/DiamondCrusher.yml @@ -0,0 +1,152 @@ +- type: entity + id: LPPMachineDiamondCrusher + parent: [ ConstructibleMachine, BaseMachinePowered ] + name: дробитель алмазов + description: Лучше не совать туда пальцы... + components: + - type: PlaceableSurface + - type: DiamondCrusher + crushingWhitelist: + components: + - Diamond + crushingDamage: + types: + Blunt: 10 + - type: Machine + board: LPPDiamondCrusherMachineCircuitboard + - type: WiresPanel + - type: Sprite + sprite: _LostParadise/Structures/Machines/diamond_crusher.rsi + offset: 0,0.5 + noRot: true + layers: + - state: base + map: ["enum.StorageVisualLayers.Base"] + - state: door-closed + map: ["enum.StorageVisualLayers.Door"] + - state: piston + map: ["pistonlayer"] + - state: glass + - state: lights + map: ["enum.PowerDeviceVisualLayers.Powered"] + shader: unshaded + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.45,-0.45,0.45,0.45" + density: 55 + mask: # tables should collide with other tables + - TableMask + layer: + - TableLayer + - BulletImpassable + - type: EntityStorage + isCollidableWhenOpen: true + capacity: 1 + whitelist: + components: + - Diamond + - type: Appearance + - type: GenericVisualizer + visuals: + enum.DiamondCrusherVisuals.Crushing: + pistonlayer: + True: {state: piston-push} + False: {state: piston} + enum.PowerDeviceVisuals.Powered: + enum.PowerDeviceVisualLayers.Powered: + True: { visible: true } + False: { visible: false } + - type: EntityStorageVisuals + stateDoorClosed: door-closed + openDrawDepth: 0 + closedDrawDepth: 4 + - type: Construction + containers: + - machine_board + - machine_parts + - entity_storage + - output_container + - type: ContainerContainer + containers: + machine_board: !type:Container + machine_parts: !type:Container + entity_storage: !type:Container + output_container: !type:Container + +- type: entity + id: LPPDiamondCrusherMachineCircuitboard + parent: BaseMachineCircuitboard + name: дробитель алмазов (машинная плата) + description: Машинная плата для сборки дробителя алмазов. + components: + - type: Sprite + state: supply + - type: MachineBoard + prototype: LPPMachineDiamondCrusher + requirements: + Manipulator: 2 + materialRequirements: + Glass: 1 + Steel: 5 + +- type: entity + parent: BaseItem + id: LPPOreDiamond + name: не обработанная жеода алмаза + description: Не обработанная жеода вся в пыли, грязи и прочих радостях шахтёрства.. явно надо обработать. + components: + - type: ClothingSpeedModifier + walkModifier: 0.85 + sprintModifier: 0.90 + - type: HeldSpeedModifier + - type: Sprite + sprite: _LostParadise/Objects/Specific/Mining/OreDiamond.rsi + state: icon + - type: Item + sprite: _LostParadise/Objects/Specific/Mining/OreDiamond.rsi + size: Huge + - type: MultiHandedItem + - type: Diamond + +- type: entity + id: LPPProcessedDiamond + parent: BaseItem + name: обработанный алмаз + description: Обработанный алмаз, очищенный от пыли и грязи, но не до идеала. Не пригоден для использования в таком виде.. + components: + - type: Material + - type: PhysicalComposition + materialComposition: + LPPRawDiamond: 500 + - type: Sprite + sprite: Objects/Materials/ingots.rsi + state: diamond + - type: Appearance + - type: Item + size: Normal + - type: Tag + tags: + - Ore + - LPPProcessedDiamond + - type: StaticPrice + price: 0 + - type: Stack + stackType: LPPProcessedDiamond + +- type: entity + parent: LPPProcessedDiamond + id: LPPProcessedDiamond1 + suffix: Single + components: + - type: Stack + count: 1 + +- type: latheRecipe + id: LPPMaterialDiamond + result: MaterialDiamond + completetime: 2 + materials: + LPPRawDiamond: 15000 \ No newline at end of file diff --git a/Resources/Prototypes/_LostParadise/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/_LostParadise/Entities/Structures/Walls/asteroid.yml new file mode 100644 index 0000000000..87a3fcad16 --- /dev/null +++ b/Resources/Prototypes/_LostParadise/Entities/Structures/Walls/asteroid.yml @@ -0,0 +1,153 @@ +- type: entity + id: LPPAsteroidRockOreDiamond + parent: AsteroidRock + description: A rock wall. What's that sticking out of it? + suffix: не обработанный алмаз + components: + - type: OreVein + oreChance: 1.0 + currentOre: LPPOreDiamond + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_ore_diamond + +- type: entity + id: LPPWallRockOreDiamond + parent: WallRock + description: A rock wall. What's that sticking out of it? + suffix: не обработанный алмаз + components: + - type: OreVein + oreChance: 1.0 + currentOre: LPPOreDiamond + - type: Sprite + layers: + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_ore_diamond + +- type: entity + id: LPPWallRockBasaltOreDiamond + parent: WallRockBasalt + description: A rock wall. What's that sticking out of it? + suffix: не обработанный алмаз + components: + - type: OreVein + oreChance: 1.0 + currentOre: LPPOreDiamond + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_ore_diamond + +- type: entity + id: LPPWallRockSnowOreDiamond + parent: WallRockSnow + description: A rock wall. What's that sticking out of it? + suffix: не обработанный алмаз + components: + - type: OreVein + oreChance: 1.0 + currentOre: LPPOreDiamond + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_ore_diamond + +- type: entity + id: LPPWallRockSandOreDiamond + parent: WallRockSand + description: A rock wall. What's that sticking out of it? + suffix: не обработанный алмаз + components: + - type: OreVein + oreChance: 1.0 + currentOre: LPPOreDiamond + - type: Sprite + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + - state: rock_ore_diamond + +- type: entity + id: LPPWallRockChromiteOreDiamond + parent: WallRockChromite + description: A rock wall. What's that sticking out of it? + suffix: не обработанный алмаз + components: + - type: OreVein + oreChance: 1.0 + currentOre: LPPOreDiamond + - type: Sprite + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + - state: rock_ore_diamond + +- type: entity + id: LPPWallRockAndesiteOreDiamond + parent: WallRockAndesite + description: A rock wall. What's that sticking out of it? + suffix: не обработанный алмаз + components: + - type: OreVein + oreChance: 1.0 + currentOre: LPPOreDiamond + - type: Sprite + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + - state: rock_ore_diamond \ No newline at end of file diff --git a/Resources/Prototypes/_LostParadise/Recipes/Lathes/devices.yml b/Resources/Prototypes/_LostParadise/Recipes/Lathes/devices.yml index 7587ccc51d..fe46616f8b 100644 --- a/Resources/Prototypes/_LostParadise/Recipes/Lathes/devices.yml +++ b/Resources/Prototypes/_LostParadise/Recipes/Lathes/devices.yml @@ -39,6 +39,7 @@ result: BluespacePlantBag completetime: 7 materials: + LPPDiamond: 500 Steel: 1300 Glass: 1400 Silver: 900 @@ -63,6 +64,7 @@ result: BluespaceChemBag completetime: 6 materials: + LPPDiamond: 500 Steel: 1300 Glass: 1400 Silver: 900 @@ -88,3 +90,10 @@ # Glass: 85 # Silver: 640 # Gold: 950 + +- type: latheRecipe + id: LPPCrewMonitoringServerMachineCircuitboard + result: CrewMonitoringServerMachineCircuitboard + completetime: 10 + materials: + Steel: 100 \ No newline at end of file diff --git a/Resources/Prototypes/ore.yml b/Resources/Prototypes/ore.yml index dde1516c85..b61f220949 100644 --- a/Resources/Prototypes/ore.yml +++ b/Resources/Prototypes/ore.yml @@ -84,6 +84,12 @@ minOreYield: 2 maxOreYield: 4 +- type: ore + id: LPPOreDiamond + oreEntity: LPPOreDiamond + minOreYield: 1 + maxOreYield: 2 + - type: weightedRandomOre id: RandomOreDistributionStandard weights: @@ -96,6 +102,7 @@ OreUranium: 1 OreBananium: 0.5 OreArtifactFragment: 0.5 + LPPOreDiamond: 1 - type: weightedRandomOre id: OreCrab diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 6a5791844c..18f476c9df 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -22,6 +22,9 @@ - type: Tag id: ArtifactFragment +- type: Tag + id: LPPProcessedDiamond + - type: Tag id: Arrow diff --git a/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/meta.json b/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/meta.json index 4621946ff8..32d2c4edd3 100644 --- a/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/meta.json +++ b/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/meta.json @@ -41,6 +41,21 @@ }, { "name": "full" + }, + { + "name": "rock_asteroid" + }, + { + "name": "rock_asteroid_east" + }, + { + "name": "rock_asteroid_north" + }, + { + "name": "rock_asteroid_south" + }, + { + "name": "rock_asteroid_west" } ] } diff --git a/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid.png b/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid.png new file mode 100644 index 0000000000000000000000000000000000000000..51db57b9b7745be96ef2f5e3e0f94bcdf8f9f282 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6=10X`wF@$vDYp`os>u2xo7`T6-}7VRH_Qk(@Ik;M!Qe1}1p@p%4<6rkV@ zPZ!4!jq{;_oq~rIcqVf&{}5tRn9g_Mi4{Z1|AnvEXN9?UoEMwMqad=T!RBi}qu`06 zEhjj-*!RT6J>fH3Bb9s5FNu8%dvB}4>+6f=ycNEkrLs$Jy4N+AOefKgK35r9&)kT; z8F((ir@+$fc_EigtjX+!Mn1P+h5M)$o8A1-oN>xpF+Na9ahbs$+xv#8pW~hfxP^Yw za$L^;(1X{0S?(criz`JZ)*0>boZpv|z5U?r>36%`GpALy#+y!#DYI;vvFM(H`ai3l q)rm8n)#z03d$6W?RsNdRF8<0b+{d#Y-dYLtBZH@_pUXO@geCw$T!qa5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_east.png b/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_east.png new file mode 100644 index 0000000000000000000000000000000000000000..678e06dd58fb5ed6727c2ba1048bf28c6fddbd24 GIT binary patch literal 1954 zcmah}Yi!e26gDf}XlVjro*GXE6gtSPG?>+v` zchC9Gxo36h)Z+BioKy_M(mf^a8R(50PrsMZzgA!W7l!p|kX^1)kIRLZs){5BA%^9h zTffFpl2kZkc|oSx-9jyQe@I@MJT$9iU0!3w1b^S=*0zrw_@R_TgN9ByK6`g(<>Az! z3qoWtxv&#!+21l_-=Ok;ul0R(S-*_5hYzH7;ZAzrjJ@C7zWm7&IC%3_w|mp3`R8-y zHSJiM-MXy$;+f*WkH7kcZ>_!5^yvF(@WIgwYs;#PTIA zdf%3T<1_!PzSYn=U^3U(^{xH3HUX~K91Z&Hxx2Q%akZ(!a=)x~Y3sWwr#|aCHg`>C zU&J{Vsfnm*UR=k=X82mJk1u6pg} z$%;ndqhZ+xJBt4~-VtuQHDNKm)A3UExh+rH)6=ha9=TmNzj(`&MQO*!9N2g2>5Y+T zi&y+->jZPiIJ^bZK?u_etI!k6R9Cu$+2UOjC z?~k0vkG~o-`r4FP?QLb(u5S%=Jzdp>?e?fgx3}V#P*GAMCFL51_0Ke(KG??1Loh6P zqUbM^UGf~DoXqe_oM^~+Bu0zU61f)b8T&{sn%jr)PR|GI2>k*F*6K_ z5TsTY)M2^u%l1XYgcvJ%D(THsfzbti%1hzA&oc)dOBVJ)EpQp6ku5i@O~ z%%PAGbquZPMK#Dd5z7nFny)Sb%`>2;RI36ks)1pBRJXe*^!P@q)nF_OQ82?G3?Z0? zPNRE{D)x9wd(cMK0XYAvs*G9>1bfG0@Q8@VW^=Fr+WjPL z6Cugk8G&?IC60s^i^$R($5}WFfr|n^Nl`-pl}rwS05nI!0RlIacEhWw%Iv5$8apm(01CvB@nZrs-fO8$Y{!BVF}z&o=3qW z34zge$TgM{?@}Sq71gIGK__8Efg3*YZ(ejcM4$sV&>`ZY7zYk>+214uO_ z4r;rYICx&79%H+awUy8i8wo^GHu9N3h|1h6k9@On*?Z@fZ+?*saa^w<5#xwk(F8&} z!qi@1nzv&0es4

YMwr{m0jU9QiVb`z&$>sFfGS{BfyDK_|4_=nj`tvK(7frGz z{g(U7oO_KMns?^DKS1yAvyOJ%JF-LU*Z;g#f3hwO6yC;CZY=pJDeD3M^|qSP(~P<8 MDVpm3Zem5le|<}z%>V!Z literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_north.png b/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_north.png new file mode 100644 index 0000000000000000000000000000000000000000..94c7e76e002132745afbafa7bfb559a03ad5143f GIT binary patch literal 1948 zcmah}4NMbf7(Rz4$^=vbD$eaVU1Yjzd)JoU-KcXE6?B=778 z8|ku?;z?@?Gqu)E-5Tq9yl3u|tj_oIT5F5kBX@WAy+@-5#~d6#W!~|Hdj{$brB12$ z}u4R3;pTP|Czn>W{-%URa( zhDx{ukL<*%&89tk1gGp*?K8! zN$-NaO2z%|TUjd`OKy{|d{Wz%ccE_5uD0BHZ_Qrpe|4$*+ZT3T%Xl;-G)%sBvbL3b z_qpr?{iXjL?+^6dC|X7Aq@M|$ZGU(*E$zy{;hRl0rR@*j7<+ui{;pF)Kj)5JweHA* ziwDxTg;IXneR5N0%EZm*hCaSDweO>5GUdnVhdw=NI%Bz#X27#o&blK@84b6W|CaOM z!DlmG?47sZYF~Blm95^vp>>1E9=mjOM>pC7i<04-@3JurBZ^{8O^wZFgSHJz{`A4u zD5bKz>M^{KNBh#NpkYj~Y_W_W&t|Ik2xQZiNf0zga8)bSj`<8H`ZX*sx`8I*4?;A8 z6ck2+ELRT{)D65sz>M`DJc^+LZ^jlG9XdzQ0_uda6%wdgQSRba)N?eC70ymeEr>9X z!4DJ`jre^5nTeROC@}-SRkIdDqY$Ouj8!|Fs6~_jYS0)oI@}f!8c7V2plE@_dzeaV zNt^_(%vhbG1R1S191d&3dW|S~wFFJmS{tU%@@A*cvq z099#Ow-{2)7>pwppg-tvB-sOUTnDI#Ho^wAghr?J`_-tUXj!o}Lg#oaPeseFrXbK( z0$B`69I!QlfHE!N&T~oMU`X;sv*0-`@Bu%B$#6F!xmBs%;Y^~{ti6Ii81;Y(CsB&v z`A?fC;!*!Z!%u7u-I9DyAQO42Kqv-d6}gZakKJm<)J+*)1kK_3 zEJu(=J!K%>#)N-`B*4~VeZ%8Xd3eZUq)i-fQ#zcWDHsRKxpB%((Ku}|n)Du{-fhy; z7|L@@i75G5STe!SdVw|=@M5T{EK}^Xn=w+Oi!Yr%R`Eb6>~A5!i(xr#cL{z_rLd}W zL_TGrOr%L~ASeT&Pk1f_k_>xGB_nhiy#Yg2E}tPyF8HA*8G@We=onoBEb@Y<>Hnb7qlCh%AXe8h zL590GCC%{zQUw}@nc_yDfJS?rVYyfeGTR7vENWd$ltqscW+hPUg{nbuVB1B-LG$AEcqy?{xDKddLxFHz zKK`FTPLV*WF#$ z4q}iAit{6~C@LVR5gdjH6Ep@;q<@gehd`LXf+LDRf(dR!2QiM#_u8(Egv2)2yZ5=@ z^LwA?_dM^@*F9C`x~y4Q2!iNb70w!XN40BW2K;q?)^P$s#wdSOqp`%7xj)|bmJK~J>BzL%mB&{e7-%}0 zHM=>82PTvbAl+Yg*BqKwKhm2yedENO?7!{^SGk+I%$$RJZd`o(WiVsMWv6rd_J(t_ z)^vUTN`8D}``c9rj|r}kc(^6#+N^7yrr zjUC*ZPvjr&FTa1hKh$@E8=e?^s-IamwZnQO&@4WX?_VESZ9y&Gr%iQes zo4;Ri@o>(^k&K`ApWN1+F=P9=;SVm&>3hGO%=mHs(T`4A&N!~OY{1Y2L~XWXb#4#pkYs>TdP;A^%VJ_Hi9r$+Es}YG zsc|k%k-(K5Yf{xPV=zRcQGL{;mt?93pU~Eu^wBJfzG^lB8&yK;dLD ztcp?y)o59t6jALMj3XIfFzj}x*+WW72dIc4#)b`q-e?F0wWt$lMJ;QE&Z$@)iB`OA zVPL2MiWHGKP}T}U>by~Ro=f|NBXS^-1&T1ra zg7cYh%51daKAxa)i%}3rGc8cS0!DdUAw^|F9ME_mvtEQGHXlX$NC3SENJ3eC0?u** zhjS)Ypn-*?NLm>6ua-sFdTd~9JQ@!Vc?f}^XwFLFKFUHv9+t&f!bal+Ntvw#$673A zABOTAvs99UEG(HAWc|Pp4*4-uQQ@J0ILcR3j13O@lsSt*}Y;A)T*o| z9YI?yRtssNX{*U(CQT{CN+2t+w=^=ss5em~$~svUKrSO`VvICHTD@dpCY7-|@kN0C80>|=8)GCWF#ByP-*NN^;ra00;<^cx*&+A2L5K?n*U!?Bn5 z&U7A*%u<)L)N8H2-Qmj7{xK)tAK4WQE-z{ujBfJL|bx^>A-lenl;S9rFE ny|gv(+pmLd#tqtcptwZevTky7*&gp>+5mQyRXM+0(%AkVC2y4^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_west.png b/Resources/Textures/DeltaV/Structures/Walls/mountain_rock_ore.rsi/rock_asteroid_west.png new file mode 100644 index 0000000000000000000000000000000000000000..eb95c87758e3702d60395d27f2bf6b49a96d9745 GIT binary patch literal 1955 zcmah~eN5D57%!qm8Hh?ir*kXSMVRSbuf5O8iR|u#Qx6y%4mT&fZQnaO?yg5$xI<%f zh|}S=DA||dbW3#NVx~;D_`!yf%*3y$(Wpe>52q$>acG>HYz+7IxI;`#)}-zGKK(tv z_j!Kr^FIBcw74)WWm*b`VQKCnXBm3q+C45AJ)JvSPGDG4ljv}ix*ZO@RF-^V0Ag6q zxlcFSijoVauFKERJ3FX#&W+@yh0`-TKFMjRp3jZm*WLS(4L>^m=%ne3jxX7Nuck9) zdTo#lj48N>b^Op#c5u?tCq1JlH;b z^7h?pv$~t>FP<&*pZLu?V@Kpt`@%!lu9iw3;bS$lWAcD22lxm(%2w)>s&r#~Awwrq1o z%azQxdnyj7B@erAXRd5maEG3|rMfleV$IaOt=Ws-o3}Lh#xm~vSN7aU|7TFFd-2Ap z>K6XPm$HuZ7yf&^Kh%43{%XS>+o<|;+aLF(rCq!C)2+s;!tIY&r5>Ms=-}zW>)ENR zH~d_2`N)K?>XU!ncWP@#@|3pogI`>k(ffH5oqTdu=a;7}XC2qljAYizId>H~z3$Gt zzfXJg=#gj$w!=R#xM2X>@0PoEb>o-Nrc5qf>~*m$D@jsSRh7%-s;Hg1ifUkur&OyHzvJ?GBy9itq?8KWU59J9vV2xO`LWbolioN`bTHYoQ z`Sa3J@}ewa2tpO$(O@8?uu(e^BWBT9GwTUF22pG6M5U(`cSthCjXI-_B3)6jfhG_M zj_1jOk1ca9h?Ah1ov2aOFss)`A`xAL(MhsjZ?M^HdWzQ5G>H(T(il=flnf~|he+Zy zPN?v*7*<6ogln{blj>DFf#MhnFc|iDhS@_(TnD6xJ_^EmgO1V%gId%vw4%BikaIki z=b{yFV;Jhopd!`FJajd{kUBHrF7U&?;d(g`%R=DwFaU!Hrl8df!%G#qJ*C5FEo;9R z497f>!ow(4^gY$)nRv7>vG5a%Be!9`XOM|JH6Rj$bxM4_7LVI$C$vRbLE=S$jSYF4 z=4{YpAt`7Bq){*$Nx=9_q|IV7FqDm>DT^h+;|?h*2=P$kLCiW4k?=;qSWOm&6gY#4 zG;*|o1OntpGqiFv;D8xg%nAPzSwy7=0wd$mcm%}53BY9J3_cP-29ib}XCeVjGo*<& za8Lj~o5g_Q5O{WhBnJW7GBF7JP#+HY30zZ_Ehu%{30gqeO3#(;>&YMllAPznlYfC3RW@--mjho~8#Ivj$D&)I8= zrvS|`3`v_TM$!mO6lt@W4Wz{kIgX~GK`=83e?{`C5g@|?KT-{egUT)@4xSU=kK6<@ zQUf)ykw7G6CZ7sqB5?hPJo5C~VIP@Wp8k0<4B-rp<;MBMcz{ zWYqSY<*gKInQphUz-uizyZPiK?a#S(;S+LW+WvH5Y~S4M^?CV8_#aC)k=Wn%W^Bv# z+==PbFS%`dA8*k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`212l#}zdby{SRII%EO>_ z%)r2R7=#&*=dVZs3Tk`0IEF}stDZj23$&NXq3ic~9WHr&7Q-J;J_t_^N_1`H|E2co e*goI;hTL3j41Tj`Y8n8wF?hQAxvXUtP)Px$3`s;mR9J=Wm9Y+jFc5}+dy`s^<{!8fv?*DRkr9f0v)W0j?z9^-9h;`NuN*jnWpUqQM)ziEyF2J02MT+Kh z9+rOpHo&`L19a97owb9%&%Ox&0GTtUeec%Is0{?mX$>1dX@lN_P}6@cX_P0054)NLtr(GE~|uG6w?gg0c38X7Y@SGEZn; kq?9l3f~csdsHmUo3PVtS_F~@;{r~^~07*qoM6N<$f;kY99RL6T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Materials/ingots.rsi/meta.json b/Resources/Textures/Objects/Materials/ingots.rsi/meta.json index 05b9647ea1..0cceaea938 100644 --- a/Resources/Textures/Objects/Materials/ingots.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/ingots.rsi/meta.json @@ -117,6 +117,9 @@ { "name": "silver-inhand-right", "directions": 4 + }, + { + "name": "diamond" } ] } diff --git a/Resources/Textures/Objects/Materials/ore.rsi/diamond.png b/Resources/Textures/Objects/Materials/ore.rsi/diamond.png index b2a3c788d34c3190e6ff143d2b0cc324597bad94..fa9a798525ba64719169b7f07e61d571b12e6d9e 100644 GIT binary patch delta 43 scmZo;UckJemQk56HNrE^*Ox(yfq{Voh(X{|@MI9>>FVdQ&MBb@0M8!@ZU6uP delta 17 YcmZ3$+{V12mXVXe)78&qol`;+04^y7RsaA1 diff --git a/Resources/Textures/Structures/Machines/computers.rsi/meta.json b/Resources/Textures/Structures/Machines/computers.rsi/meta.json index b6741b195d..97cab81f75 100644 --- a/Resources/Textures/Structures/Machines/computers.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/computers.rsi/meta.json @@ -1688,6 +1688,9 @@ { "name": "service_keys", "directions": 4 + }, + { + "name": "tracking_icon" } ] } diff --git a/Resources/Textures/Structures/Machines/computers.rsi/tracking_icon.png b/Resources/Textures/Structures/Machines/computers.rsi/tracking_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8bf1bb15891aad3725dcf8131db5cb0787eae3 GIT binary patch literal 947 zcmV;k15EshP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D14v0kK~z{r?Ur3g zQ(+j#|C@7jq0Z^dugv*@qKRfgr4>|=U`0_^c~e0}U`BP3BvBVu5Zy#zLgYnB7~NHr zf`JCrMX9CYN0j-&GD~f0I&{vk^Spb{ndj{22wdLugNOg~KIh~8zt1^)cd*iExH2-c zv*&s0S326-qw`B9|{Tzai{XSx`D)$Z1jI==N128P0m7JPutQ4(heG+ z(Pf+qGT>wCsoi$EXXA zky%Xsn32WEM+Z!6^>EGp#>}J()g`Z(IvsOT5MfpWOhSlIZnEn6NRFz3+hr}NC~ZcB zHCPswBqKsBJR*(kT+-l(ASsBcAr}%dEi5M}cMQ4BDN!|WzG^ed9^~WVo(4=$&Pp*p z=#-6#s$&h9`Z*&7k+CZV-+JsUCn%?y8mb0Xg$BYHtjD$IJ8|{UYZycHEW+XpQeJcR z4L=)R9U#X0oII1~N>mL@Pq}2P6mziyRmU4yT}0UdT5(vS=N+JYVMi9CYCv2ih1dlO zu>(q!9iSEGZOlX0iy;=2FV+RspJB=YJ+uKD=mO>betmT!bd6_aY7BQeU`{e1KEncA z*C?xr`RB*3rS}2aitC=<$3Sl{42GpA`dge%ClZp9P`K}i`c@oowa%MNCXk8l&JVo0 zyri$oVUtfxOu*LPuik;X6<2u0Kb$DJBja5Iu_hvW;-Tk2FHSLRiuWiH&It*a&$LyVt!mFLnM{Y*LxRPOuOJ8)E_sHp~73 zUt!M8+}T-Q2A1sJ+&gpT>&&%som?GJB1x}PSX-{P!MBSe{Q5Hm0DQcEVz=HD_Q<`I zG|K@16%AlA9hc$3ZoMghNO~RI+}+~i{j;z)-5=mu_27&KQI(5N&yS_X0pRBD)*E$k zgvoS_o4Z@Qy}Y8?ZUlQTx|hMb6-^gMsJb{pn&o(Uek^!#4oH7A0B{O>83@X5z43t3 zEcf9DaEicBq}guZ?d8=Bw**0hi`o2SaDVV?I{aytqbAWb+l|sFyuG}7W#@#3DXvxb z=V(i&!$*MVWf*tsjeq`U{Nw!->HZLeHvnN62Y{OVAP6neIMYC*6nf5@^6#P(EWMTM zVFUfiKPrk5Cw6rY`<(z znSxqSu~{Az6Qd!Ea<|_2JW5hp%;x^A<`d2k4?wh~p9QW}N7CzjM`M5RkHrTpHhRn) z%M|jF(W3YKTe(iIj+5y)Kq;r4rcd1|vQ3w(t#`(sF<4Ln3W$ipO;qI5B1ncpkEJ2W zDOw1UQU$_kABpa4N;F4smotTTpXc48Wecn;&3ZEG)70revGD!icGQR zfi%m5O4gzyWO+pj2EL0@8>h1YfTY*KWI8Tf7UcV4HpfNx5*OXefXk(@E1K7BmEQRID&o>{4qo=FFiUZ;>658!?{Jj&ejT??yM8*;6>*|yS188G0B z2}zS>#;HWNpiUV9$^ToRr3AC!C!#%caTF+DuC_rM3!__{18}+(^TXl;eNczCKN`Tb z>H!crQ@GDciHoDK4S7g{kVNC+==7UF%ngDj5NUuBu|QC2+B9kng;EAXVy{r$vN9EVWQ7~kfCO*_p5CtYYS1{5` yJ)Ep)xi~5mvc;OgeLyd20~WcIt)C+uOaDKrSnHQJ<7+Me0000dq4=l_8MIFER@9C_Fo;p?fV=Oxo!Vl{=0nF7m?fc zZ`;46J^>!vbK5^@W-GY%DsB4?6;)7GQ`fdKIyH%Q`kD1CUHhgB#kO~^sckES;<0^~ zKHI({QC!=;OK;m>AgOEn?%B4T0i^2m_*jouHi!!K%DwOF`IkL;)j;|2GkS?BUR8bS z?Mh07Xsf1ZTS=P`a7_o86uJLT%!p{0#agCGEfH4GL$t_ p(W($crZR*$YNCV?kwhX9;y;@&F>gpLCCLB)002ovPDHLkV1f-Yq^ke` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/meta.json b/Resources/Textures/Structures/Walls/rock.rsi/meta.json index a29513356c..6dd8f54d83 100644 --- a/Resources/Textures/Structures/Walls/rock.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/rock.rsi/meta.json @@ -214,6 +214,95 @@ }, { "name": "rock_andesite_west" + }, + { + "name": "rock_0", + "directions": 4 + }, + { + "name": "rock_1", + "directions": 4 + }, + { + "name": "rock_2", + "directions": 4 + }, + { + "name": "rock_3", + "directions": 4 + }, + { + "name": "rock_4", + "directions": 4 + }, + { + "name": "rock_5", + "directions": 4 + }, + { + "name": "rock_6", + "directions": 4 + }, + { + "name": "rock_7", + "directions": 4 + }, + { + "name": "full" + }, + { + "directions": 4, + "name": "rock_0_two" + }, + { + "directions": 4, + "name": "rock_1_two" + }, + { + "directions": 4, + "name": "rock_2_two" + }, + { + "directions": 4, + "name": "rock_3_two" + }, + { + "directions": 4, + "name": "rock_4_two" + }, + { + "directions": 4, + "name": "rock_5_two" + }, + { + "directions": 4, + "name": "rock_6_two" + }, + { + "directions": 4, + "name": "rock_7_two" + }, + { + "name": "full_two" + }, + { + "name": "rock_ore_diamond", + "delays":[ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] } ] } diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_0.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ba1045c22bc802ad4ef7cd64fab2369aaef0aeee GIT binary patch literal 1256 zcmVP);9q&c5WLZ{!VrAbM{%m&~^_-@G?7SwUocu6=r%cP%NG3Tx?Pn)~-n z_jV=Z{Xd4hSPNumI+^B-t~VRG`$qkNyH5)r)c&VHaO00ojtj;E!0!GYl4=FDolPX= z5)O|Kg5Ni~2PEZE!T5)}$Az!i-QWA~J(>O3=lwu^VnZoUoG5s zeQ}BOeyslf(Fq_B5!V-&05TFr{Q*Y(!J8Nl7|;NYbTUO!tvC|gIy0Wa0Dwv;m>@t3 z;l}osyGEYCLx4!|h0042odCJnks?Qb(|V`X_Ik-{VMYTud{35$s5cv`dSH$KDS~ee z69iBO;F;k1;u34?t8X|+Ssv%I@*>tZ|FRMt^*l47Dx#80D8jdWSUcD zDrit>a3XxAu2@hB0m8%Gqs!gAe5Fyjc`K-fK&RD4$Fn}_4|1Vl!SxBj1SHi;E~a^b zlQ2&xEg+ZxGM>Oy-)(9{wbv5DMX+4T8Q1L%k=~CT5i$+>N?;d&=!wDYX&+*a= zR`TW=Z@AY8t>rP8upTz)~2f9EZET;p{*o_WN8Pd_ri!Bf`_* zvr*mN(78F^^#NI`oR=nJLbV`52J)&d;IH0TaDPB)Cn%q0r`7ge^XWirs1R^=ehOfA z78vyhh0T#=sBDFStZcopy@ieKE!WPX>rw-(q{Uzj*xlcA6e8o4!RBtviQ8XZY9I91edh$N_=Kd^@p_T>6m_G@%_ioARD632m#2|4dgoapk>7Nr7$rfBg4a&Cixj6 zy&u27LCJJ7%{5VE%S{$qwP1pPq+H5oig;I<{oQG`UAay3ED=2fl5(lgQj?8UswZ|@ zZPc5Mth%H?f(Z`*GGlya1|I)^e*K*dS-cky;BGEE%^bcevc{Rhga^FD5bf4lbON~A z^XjpL?wKGd)K}SYTysgN~7+tgS)_pp^gs00DGTPE!Ct=GbNc00DkU zL_t(Y$9oH4L??wtI|0zL0}$8&jKw6dBj=yWe%{q?fxcf!bVH-Z8_!j!IN~SsWmQ1pv5e1rRa@p(!v4H7Sfbrl@EEGy>4VNeoa0l@HAwtW<1npcbP>LW&#q zHBbU)gn9MEXT^04=03d7xcr42h|grV!iV^frY%oYTtbHz0988NigustLeGmdt_W7a z*;m9Rxlw#Z#H*0`YAZse@PT(sZ3S?h_qX=EhI@1;ELZVwc-f85eA9}NM9WtYx&m%q zWR%1#02!j#X1*u8bsrLWS39SB6=K=kU5ln+b9b#G*rz+B*q0Jc@lj?}k2$LEfS8^a o*;J@*T72$Gtx^slirw}3oN!s6G)m=$wHb% zun+_rf5CvwFn__mVm#M#XYQEz?g{tqejp@qjGk}K`Oc4fddq7YwA&L`RT!vUJ)~|X^tJit;wJ*UN4|oa3Cr5a?dk{4q@PL3QP7st! z08%51@O1ZpXt@!8f9C`cp6(t1=p@W1Q}uWY;{gveU=a3kGrUDmttb+*;KoxJ01ycU zFFarn_O;Y@dVZ!JtzHKgmmz{`MLlowmj4Sc2mn$NqUA>2UBYUy#%i%ftJguZ+g9H2 zboWr`F^9k#0ys=}mfW3_AOYtDkg+$zTL7}|{TetYV6|8)<`(M74S391!D zaiT=cH;8ILqh7-x>|+r25tK_>br&r+h05*{)&x+A8pVlL#Zg?7cSLc5(RhaM*F&#} zuogk?{;S1W8AU0KQr3Jj#b`W36epTixQ1vJc)owcv*GXa$y7BrH^W;r>b0C`x`H(U zLA9b{oewv-aa<@VJCHcKhBX1%2`z71i4ZcBkGbEnxH$y&B3Le|yAGs;M9YmLf)nB+ ztUaLFZEIDTN#wW}0K1}z6Xy!n1aN_yPo_D;M&sE|7g$R41!5YI?bbN5THq5zD#6is zmQ!`o2A&nNF7E>&_Gxfy6uCNeYuYv2R9TcJT|%@MAOo|L8dJ*iK>z`vN-%pjY08s* zjvMWZ2Z#{x=wr1yNQ5e8~#d8qn%>jKdDD1E=R_#%&KD zbikSbIG`DB_CK_7?^p9=E~0BqadObN`x;m7Ew z^hY=dVs*f3u`V2P@G8-y1uh{*06*d3?!B+?_hBX=5(2y(4yqNk?M10kD~z_O(FfxJ zp>~)XV_ITrcH28q^g#GHL=Hv>`}X`y$6r2>A(jQmn0(K81?Z@ZKxBQn`lN{}rCh#iV7p)7d_@L;Ha8$-ji>9RcMbd?AWn=VaFCFa*h-P$ z1p&Zre}JY&bku%)a->z8yr7cU6!l_BDkztie_s8(=#ex?lM;UK+M<2(dtcEFF(sG}sef4+YN4%j6;1kMRCf$ti9 zza9d}kJ5m5R1&TOPI#3kz65kmFJRyM33210a z#!G%h&IIQKs3wVRk-TtJL6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_1_two.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_1_two.png new file mode 100644 index 0000000000000000000000000000000000000000..694dd628fbd4980132e42b4dfc7bcf43d354aff0 GIT binary patch literal 500 zcmVwKGd)K}SYTysgN~7+tgS)_pp^gs00DGTPE!Ct=GbNc00DqW zL_t(Y$9>e%wId-22H>;+CIx_*0)(-EIR7-T!Twv>$K7-90bl)&A_9-ck3~eyo#>G* zVgT1DzyaX)cM2o`+!HnUMhM}FYQ+30bf;7l2RkOlbiK7kSW)OIiWe+<&C!G3?P@$?{kHD_(iwI*L(j5?C#twA3YF zI*T6V`>VyAP);9q&c5WLZ{!VrAbM{%m&~^_-@G?7SwUocu6=r%cP%NG3Tx?Pn)~-n z_jV=Z{Xd4hSPNumI+^B-t~VRG`$qkNyH5)r)c&VHaO00ojtj;E!0!GYl4=FDolPX= z5)O|Kg5Ni~2PEZE!T5)}$Az!i-QWA~J(>O3=lwu^VnZoUoG5s zeQ}BOeyslf(Fq_B5!V-&05TFr{Q*Y(!J8Nl7|;NYbTUO!tvC|gIy0Wa0Dwv;m>@t3 z;l}osyGEYCLx4!|h0042odCJnks?Qb(|V`X_Ik-{VMYTud{35$s5cv`dSH$KDS~ee z69iBO;F;k1;u34?t8X|+Ssv%I@*>tZ|FRMt^*l47Dx#80D8jdWSUcD zDrit>a3XxAu2@hB0m8%Gqs!gAe5Fyjc`K-fK&RD4$Fn}_4|1Vl!SxBj1SHi;E~a^b zlQ2&xEg+ZxGM>Oy-)(9{wbv5DMX+4T8Q1L%k=~CT5i$+>N?;d&=!wDYX&+*a= zR`TW=Z@AY8t>rP8upTz)~2f9EZET;p{*o_WN8Pd_ri!Bf`_* zvr*mN(78F^^#NI`oR=nJLbV`52J)&d;IH0TaDPB)Cn%q0r`7ge^XWirs1R^=ehOfA z78vyhh0T#=sBDFStZcopy@ieKE!WPX>rw-(q{Uzj*xlcA6e8o4!RBtviQ8XZY9I91edh$N_=Kd^@p_T>6m_G@%_ioARD632m#2|4dgoapk>7Nr7$rfBg4a&Cixj6 zy&u27LCJJ7%{5VE%S{$qwP1pPq+H5oig;I<{oQG`UAay3ED=2fl5(lgQj?8UswZ|@ zZPc5Mth%H?f(Z`*GGlya1|I)^e*K*dS-cky;BGEE%^bcevc{Rhga^FD5bf4lbON~A z^XjpL?wKGd)K}SYTysgN~7+tgS)_pp^gs00DGTPE!Ct=GbNc00DkU zL_t(Y$9oH4L??wtI|0zL0}$8&jKw6dBj=yWe%{q?fxcf!bVH-Z8_!j!IN~SsWmQ1pv5e1rRa@p(!v4H7Sfbrl@EEGy>4VNeoa0l@HAwtW<1npcbP>LW&#q zHBbU)gn9MEXT^04=03d7xcr42h|grV!iV^frY%oYTtbHz0988NigustLeGmdt_W7a z*;m9Rxlw#Z#H*0`YAZse@PT(sZ3S?h_qX=EhI@1;ELZVwc-f85eA9}NM9WtYx&m%q zWR%1#02!j#X1*u8bsrLWS39SB6=K=kU5ln+b9b#G*rz+B*q0Jc@lj?}k2$LEfS8^a o*;J@*T72$Gtx^slirw}3oN!s6G)m=$wHb% zun+_rf5CvwFn__mVm#M#XYQEz?g{tqejp@qjGk}K`Oc4fddq7YwA&L`RT!vUJ)~|X^tJit;wJ*UN4|oa3Cr5a?dk{4q@PL3QP7st! z08%51@O1ZpXt@!8f9C`cp6(t1=p@W1Q}uWY;{gveU=a3kGrUDmttb+*;KoxJ01ycU zFFarn_O;Y@dVZ!JtzHKgmmz{`MLlowmj4Sc2mn$NqUA>2UBYUy#%i%ftJguZ+g9H2 zboWr`F^9k#0ys=}mfW3_AOYtDkg+$zTL7}|{TetYV6|8)<`(M74S391!D zaiT=cH;8ILqh7-x>|+r25tK_>br&r+h05*{)&x+A8pVlL#Zg?7cSLc5(RhaM*F&#} zuogk?{;S1W8AU0KQr3Jj#b`W36epTixQ1vJc)owcv*GXa$y7BrH^W;r>b0C`x`H(U zLA9b{oewv-aa<@VJCHcKhBX1%2`z71i4ZcBkGbEnxH$y&B3Le|yAGs;M9YmLf)nB+ ztUaLFZEIDTN#wW}0K1}z6Xy!n1aN_yPo_D;M&sE|7g$R41!5YI?bbN5THq5zD#6is zmQ!`o2A&nNF7E>&_Gxfy6uCNeYuYv2R9TcJT|%@MAOo|L8dJ*iK>z`vN-%pjY08s* zjvMWZ2Z#{x=wr1yNQ5e8~#d8qn%>jKdDD1E=R_#%&KD zbikSbIG`DB_CK_7?^p9=E~0BqadObN`x;m7Ew z^hY=dVs*f3u`V2P@G8-y1uh{*06*d3?!B+?_hBX=5(2y(4yqNk?M10kD~z_O(FfxJ zp>~)XV_ITrcH28q^g#GHL=Hv>`}X`y$6r2>A(jQmn0(K81?Z@ZKxBQn`lN{}rCh#iV7p)7d_@L;Ha8$-ji>9RcMbd?AWn=VaFCFa*h-P$ z1p&Zre}JY&bku%)a->z8yr7cU6!l_BDkztie_s8(=#ex?lM;UK+M<2(dtcEFF(sG}sef4+YN4%j6;1kMRCf$ti9 zza9d}kJ5m5R1&TOPI#3kz65kmFJRyM33210a z#!G%h&IIQKs3wVRk-TtJL6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_3_two.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_3_two.png new file mode 100644 index 0000000000000000000000000000000000000000..694dd628fbd4980132e42b4dfc7bcf43d354aff0 GIT binary patch literal 500 zcmVwKGd)K}SYTysgN~7+tgS)_pp^gs00DGTPE!Ct=GbNc00DqW zL_t(Y$9>e%wId-22H>;+CIx_*0)(-EIR7-T!Twv>$K7-90bl)&A_9-ck3~eyo#>G* zVgT1DzyaX)cM2o`+!HnUMhM}FYQ+30bf;7l2RkOlbiK7kSW)OIiWe+<&C!G3?P@$?{kHD_(iwI*L(j5?C#twA3YF zI*T6V`>VyAVeKBCxg13d9>+#N=7vnwdy>Gwf$#{L{eE0l5#}9CfA8S8+q1QpVq@E{f z2GesLe|`S^!RGtFxB2iP5tK`)Hyc~emh%N>_YaB?PSU>k&ia24fG$w0)6NMG0Oyw% zsGXf6Ni!sAhU@l~^>;hhfS_Dbg4fPYaejG$=f{_?e&+V>=FKy^!V3-91;-~xm<&cc z5%eB7CxC9BJG$eOquja4V1(r9Rs8#%6Tp!?y<##L0oahRoG-APFAgF+;DHYyBx$C! zfJjj9G2zJ!0En1^7X)xe2moOmsn?_l+ysaOlc~HH&I!1K(Ddb1(w54a36!SQQcypkjy| zVNfn1s8(|4xWII-)oJ77$Dgfa@InK~5fTad?V4`eMAAO+g8(Ls9ujpVX@=Xo8-#Hr z5(%tL;FnK7eF0Xt#Q*Tx*(vBbP+Z^J*7LTo&I3rmdb5G!lOq+bdfh$%b2Gz~|GR=% zBE*FUplWp@0@!H9?EV3OOhdyK2loL)1PKrLaq|Q*4S0Th*^1d*8+3t#YQ>A&2ZRVn z(o7{N1R_JSd2tBXJ3-3gcFfH5XyF>x1ely1!4v|0gP0S%ZeOWxEg?y>T*l^82n2+q z0B>)Haip|E&+d5Y>l(5ItZ$q5>%%xgz1es(#dQU1AJFUeSHp_6z3(!t@W~8BG+=iB zfS_72PICyn>B*nDhBW~}xrCrxQt7P;s)<4Mz6Uo?5cL73PzV&%^PZ3(mI)H3!*Stz zMdNRm5Fz09?gqdr?WGa+w*qSdDD+XzAI1^FINBnDX8n4}Tx2r;C9HkG`Q?S`;BxTk zj!Af6w~%>gSQGI4_)2RzB2R3R> z(Sb(YQf+Nph<1di)+eV&vwdJw8HRBrI^MR07y)#{RP^+^{Y}-kzHKrO9|R|e5Ww4E zLA8Qbrww3p!+LV$6Re|vzP>_pe16MR4*M7ltO?-4)6JV8J=d3lm=B=b{w@0^bMZwB zM2n%X?eUQx@J$P>37{s(bU0SR>7Jg4LV_>taWNC9HyfA^$HomVx_zn|fsLvBJ^M%M zPuL5hnIJa>^=z#btxnsk_)qX+MW$%^*|Z@_3lenx*WZ5s_E%&~m832_AG(;%?+fRP zlGp7k^tyc{Pp@co+W9qEwo0#_v7KUDc%cEnO3*+5=x*kTn(FfgizJ+Dz;rl9?d%j` z9BsA8^bk26j<@CxQYE!>0;og=pe9T~wX!AL?EV2snkf?KyhKvv+yqDna(bre61V?e zx4)Hi*}}O7(9Hr+O%xMM!`1)Iug2aZh~!V^01pV@v%=+kQRwaUg=+e&Eu5PGfdu1& z6=2)Z@kQ#OS`nE*c|icbT~qrkNi!8H0TlX)ec+q`zARy~YpxkwaH%NZ+y?+!nyZn( z{ewCq*i><@0YKi)P1_{=N7H~@6!3!pZD*)xtE@;nZ16AsTF=s98y>*`0000wKGd)K}SYTysgN~7+tgS)_pp^gs00DGTPE!Ct=GbNc00DeS zL_t(Y$9>h^t>hpK1>kAH&P)M5Bn1SA0ul}l+=2dExlb#tc4hlDpHT20uh%~z3Q+*B zC`7TdtA#-2AjkO*fo+odeTWI)|3+Kg|Z7gzNa0_Y@X@dPZAPX^jd zfr+=tTH;$+afco8EudauEd(3PD?a_d4{qWRjr#zD0uhbDBxO4#1-I7(jK#-226l0! zK#KEmivbnYkbzsz6B4&OA7RxbQS5Kh60m`!C7G0qq)L*gH`xUV5b_aN(rSQca>6lB zNkJn|9lS&EoxIPfM*`!?dSCrrybSsWd0J{hQ(WEnBQ zG07(bACk|t^8JXCBnpe&G;7+nevXx#a2H2btUvJ~JMf9&Hd!HCobvndDxMVW)&l7X zD7T92J>HX7FMcX(2=?0Dvmw^q-Ls6!?(UY2VCn9n$-Y!N)X#KA?doUp901Zi{>jZ0 m<~4b{&0yJ-i$e6TUG)oq5L}4O{Q3?60000wm5DWz#q~>;M2J<0$~3-|ZoYVgykPuaFl+ z)Eae^t0e%yt2b}8uIU5;ULlWz!;TP~&}_E=%!u$RMQrcxh|f&MQ$d0bzS8~=n#dBK zpc0;t^_|DSJ^__t=DE>e2mngqO~E<=fgj@P;xcu7G#DcAL#0zR3F|(91PuHzb&h<% z)y3u7w7@z6$0tYP^~)Ep6USwN%hi%`608%z1={cIq2KL^a7d^%>Nr0=6V6cno(`=0 zfGns4lZsE_fzW_jxpz<4!g;N?pVejhVa_Jr3-rd3W?v8MhI&ek< zDC_|XRVRDDy0}E(hxaB;tH3$|bk_qvOx)3aw`ra`vgRBA{S7BOko|+s-*$o_uqcKqu2dzPaJQyTjKpP)&2STFWSFB2gWrZh+>h* zG}|o%QM|T7#srKLAg8dD-KoMF*BDzc76r(gXW{(xEOl(%mEJ?3O#lyLz@k&5QhV;{ zDXX&$Z4(Im5Vb~K2sauG1qod3o9$NO{eEXp_tHk7tpWV5a?ej#W*XGwv9#i%vvs5R&d-rZT+%jaQ|D#xwO4JWifn*h}SlQ0?#Gy8$HM%@W5FyaI!xX3q<#mLh>g3PJlc-<=rG2r0@c2*%H<&uucE~ zwN_002ovPDHLkV1hAtkz)V= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_5_two.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_5_two.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ebe599159c725b73d3ea16e54c96ae9ecbf04a GIT binary patch literal 504 zcmVwLGdxE{Szl&tf{u@%tgTmEfIt8M00DGTPE!Ct=GbNc00D$a zL_t(Y$9&di@h5L|l4* zMM2e#FckIib*d&?H+pZEZ?VrteGm+p4QyLwEPe#UB8 z+xqHAw*3GgI%72hfN^Y^oDMt`*F$t|e~vf@k{ec%T`eqHXe9svM#*8l%8lnvPBWKt uKg(hj@A8?KC-cFjNLkrIVIevH&c|=$@NGej4C(j)0000VeKBCxg13d9>+#N=7vnwdy>Gwf$#{L{eE0l5#}9CfA8S8+q1QpVq@E{f z2GesLe|`S^!RGtFxB2iP5tK`)Hyc~emh%N>_YaB?PSU>k&ia24fG$w0)6NMG0Oyw% zsGXf6Ni!sAhU@l~^>;hhfS_Dbg4fPYaejG$=f{_?e&+V>=FKy^!V3-91;-~xm<&cc z5%eB7CxC9BJG$eOquja4V1(r9Rs8#%6Tp!?y<##L0oahRoG-APFAgF+;DHYyBx$C! zfJjj9G2zJ!0En1^7X)xe2moOmsn?_l+ysaOlc~HH&I!1K(Ddb1(w54a36!SQQcypkjy| zVNfn1s8(|4xWII-)oJ77$Dgfa@InK~5fTad?V4`eMAAO+g8(Ls9ujpVX@=Xo8-#Hr z5(%tL;FnK7eF0Xt#Q*Tx*(vBbP+Z^J*7LTo&I3rmdb5G!lOq+bdfh$%b2Gz~|GR=% zBE*FUplWp@0@!H9?EV3OOhdyK2loL)1PKrLaq|Q*4S0Th*^1d*8+3t#YQ>A&2ZRVn z(o7{N1R_JSd2tBXJ3-3gcFfH5XyF>x1ely1!4v|0gP0S%ZeOWxEg?y>T*l^82n2+q z0B>)Haip|E&+d5Y>l(5ItZ$q5>%%xgz1es(#dQU1AJFUeSHp_6z3(!t@W~8BG+=iB zfS_72PICyn>B*nDhBW~}xrCrxQt7P;s)<4Mz6Uo?5cL73PzV&%^PZ3(mI)H3!*Stz zMdNRm5Fz09?gqdr?WGa+w*qSdDD+XzAI1^FINBnDX8n4}Tx2r;C9HkG`Q?S`;BxTk zj!Af6w~%>gSQGI4_)2RzB2R3R> z(Sb(YQf+Nph<1di)+eV&vwdJw8HRBrI^MR07y)#{RP^+^{Y}-kzHKrO9|R|e5Ww4E zLA8Qbrww3p!+LV$6Re|vzP>_pe16MR4*M7ltO?-4)6JV8J=d3lm=B=b{w@0^bMZwB zM2n%X?eUQx@J$P>37{s(bU0SR>7Jg4LV_>taWNC9HyfA^$HomVx_zn|fsLvBJ^M%M zPuL5hnIJa>^=z#btxnsk_)qX+MW$%^*|Z@_3lenx*WZ5s_E%&~m832_AG(;%?+fRP zlGp7k^tyc{Pp@co+W9qEwo0#_v7KUDc%cEnO3*+5=x*kTn(FfgizJ+Dz;rl9?d%j` z9BsA8^bk26j<@CxQYE!>0;og=pe9T~wX!AL?EV2snkf?KyhKvv+yqDna(bre61V?e zx4)Hi*}}O7(9Hr+O%xMM!`1)Iug2aZh~!V^01pV@v%=+kQRwaUg=+e&Eu5PGfdu1& z6=2)Z@kQ#OS`nE*c|icbT~qrkNi!8H0TlX)ec+q`zARy~YpxkwaH%NZ+y?+!nyZn( z{ewCq*i><@0YKi)P1_{=N7H~@6!3!pZD*)xtE@;nZ16AsTF=s98y>*`0000wKGd)K}SYTysgN~7+tgS)_pp^gs00DGTPE!Ct=GbNc00DeS zL_t(Y$9>h^t>hpK1>kAH&P)M5Bn1SA0ul}l+=2dExlb#tc4hlDpHT20uh%~z3Q+*B zC`7TdtA#-2AjkO*fo+odeTWI)|3+Kg|Z7gzNa0_Y@X@dPZAPX^jd zfr+=tTH;$+afco8EudauEd(3PD?a_d4{qWRjr#zD0uhbDBxO4#1-I7(jK#-226l0! zK#KEmivbnYkbzsz6B4&OA7RxbQS5Kh60m`!C7G0qq)L*gH`xUV5b_aN(rSQca>6lB zNkJn|9lS&EoxIPfM*`!?dSCrrybSsWd0J{hQ(WEnBQ zG07(bACk|t^8JXCBnpe&G;7+nevXx#a2H2btUvJ~JMf9&Hd!HCobvndDxMVW)&l7X zD7T92J>HX7FMcX(2=?0Dvmw^q-Ls6!?(UY2VCn9n$-Y!N)X#KA?doUp901Zi{>jZ0 m<~4b{&0yJ-i$e6TUG)oq5L}4O{Q3?60000UJ;d&t3`PhSOBByeW7j`?`us}g`+wH?WfSnyDIqjL7M|Y=0J%b5-2dUz zXRYtIPC(L$b4&&!c-aif^{Tk<{_Y`0+Eek9_Fp(KRKgRsk+v_aYruRu+xeMFcvG;h z0bvj+NtjP(2!jaWVtLT-x2^#sU>HOjpOtDA0Km9EJeU?(*8l)$wSBbOKElOPyjpF4 z<31BkPli?uHG!+Ek1Kw%lfg&`FJC8T$Upn_x8Jp7u&x0~YOT5+1`)>nApmpQVBH7o zi&CwEFWs*IAV^U8jUR<|4d9??Fzyexo^ZKdMY&!TPErTXXaI#hV6Ez8@8kXuVGzMf zr_gHqMx%js0_fDkAc~#nWH3Un(}kDKh-;>W2OKbgFoZ-adT7E4@Q zo^QYBI|-%=AP((3;QhNlR`m0i?pIN=mTDDD1|tC5RaZBT>%yo8c}BMx$ox+v^9XAD);<^U8Z3h#xp_Lwy$q)!Q0-h z!59JD?!(1WXhyD($9y^yny{+_{M;}?00~9v-}D=?&t)xe$ror7K*G}r%fcU@9Ek*p zK=*HJQDQ$ZSI9e|1;+A# za=j`@_&>o|Pmo9eAgaGzC;TEzKt{M&;`-)Rczc@jxl{pi7^?<>M`3x$10cwdXZx;n zii}l*07Q7>%Zxna$z$zS+sDSAqmqdwRH^;LNX`HSKwKGd)K}SYTysgN~7+tgS)_pp^gs00DGTPE!Ct=GbNc00DVP zL_t(Y$Ay*Ak>nr@L?;DUPXGuLz&0lC!&dagDwv(k(6 zg(~+))ZU?;NGpzt1S5OE6Na4s89|rfdcb&c_<%B$?#NSyNU-I}Vw}#1b6k5YZwE5f z2V#pZpn-Wg9;|WD^Rn}x72dI3woF*ZerFRXFcvF1nPe!=ug+|_V3>eZN!bGeyh3(> zFJ;CcVges!W~y!XF3bXUU{+OMCZF>cVC9#3GFc(r>Hs=Zh_~8Hw))jluEhju0&28l zFNZ=G8|XJc^Z_myOQbdN3iPi6nGz1Xd-0OX>*{;Pw48)Vu4P}#mb>Io z@-=N&-zN;IZdcKRI6ZMgKisCdMsidzV@_e&z^*WY^RTu8{mS;!EXwX{h*KnMzPw6) jG9`I+cPx+Hc3Q5RCt{2on34cMI69?=K*I+p%hcK@=@d?5Fj=P#Q2~_d?G$+LQIS%fRR8b z0n115)dwHIz=IG;On?WYMiYDzV~m)stS))>?M7E6Wj>dBJ@pGsTq z+zIXU)8!X&k|Iv(HRq&=I4Kb)8Kysxyet=sIk%a_htLt z10Dw?fk9v(kytiZ3cu@~3`_&6fL@>-=o%{xe*J+nIv?A*yXB*rnxY*+G9aiw!@U?- z3akbW1HS@)`bmQyf20Kvgp3SW05kz>fCE4qa1KcODTILT#lTCzCg4#Z4eSL@0B7)7 z5%Td!u%s5wTNf_)ZI{QPYJL;26{rU`1G9jq+|Q%(d+w#E%&!5)11Vqwu*Chm;520W zeHXya<9+hp-MfK1wa@0x^?TMOQO(X8AlY`a_UWJcr#1oWP?_PoGc3aIxmTlVexm(e zRn?_|syg@mTKDsU(~#}=T>!7VkYaCb?XZ8|eEasO1+t-|BWPg_qT2ieKv!*j6)&f5 zodEU$4}if4{hs?Us@dtAI4Q~OalO~w_XmOAt#{`11og+E515T=cGjUX|8L+jrRxKp zM>RWMAMi2IN=SV`*%kl{WkfZq%^#1d`Tr7O=4ZLRi-0AlX6GPqijXoN%De!e_}>8` zx{JOHE-CA8+|YW{DN4VHlki?)`$M}7?dj>^-S&2Eg%G7bkys|)ONZZ5j(n|oWXLH0 z7b5a$d-1{@>2#pP8smTC^y!>`_@judY;E=RCA$LD4AcFVxbpsqeyyc$wEvx}SG69z z>3&}v)Z8wb?zdPf2;G-iru!`xi^XCvy5r+b_gmtI?)Z4q{T54wVCwvUlKb~$_43{X z1revZkO>M$MdYh)ku{eu7nF!>f3d{XKMXhX>qMNzBF=JmTj#eBwsm)F?SSIoA2rZO zXMDa%?)Qc6_;}O(7E1-8J3iiY zzr|v)SPVvYe7xy?OWe>MA8)$fVyO^}iO<*V*Bu{kx<6Fn5T9SkeoHwLoA~^4^H*wo zeq8+gkfU=dWqiKrev8FoDQDsupRd~=+WdfYPY>(c+ojMM^CuFgdC-p;G1t_$q*0@$su3K5)~UQNIM(4$O47Lr&F!kL_LbNo{X>X2 zvYVwN3ZYbf$Q`(q&mXuC5OGq#JXEu@9hLb#z;56;a6XY()*sYUKzbyRSXTCr=kf^S zDrn$?pBMdsdcfIk;EKCFh3be0LU80IGd^EO=4+oH5OiIkp#G>GD zTPziX?)Z4q{T7SGVlf!q@$r@BkIg-kLWt8cYoU#ZW#axSo*?2>ZRzZkQjU&gj8Du1 z7JYbkMjsK5ON^EV@2dIn@<{xqNwIO1-n0aYcagtQMGbtgf2pV64mT9|HX_I^O6(z{MMuus0uJXmwQA3v=lJbnS()8 zo4@fH{yBS&0oFWr?<}y<-9Kjg8_?g2YV*@ia{F3W;y%w-_g@3j?*87f(h$P&KLGYE zH`{3HGd;;9W^=@X-6#L)bX$nXhzliG%5pHiMS)q z>H}uFY1oGvCCs_rcBq}O`{iCt&}HCtcRQ5%5y$6up)$D@*n_(I*h5CHP`}i#ui=~{2Ykab^CS4$D8i=h3@!x)BP4p1)=*g%XGgbWc~*+cz~y^RhPH`000hUSV?A0O#mtY c000O800000007cclK=n!07*qoM6N<$g5Px%R7pfZR9J=WmcNS{K^(J5JE7SOqfom2q6GieEkAIKA+d?ZcopVQbx<=GFmQ|TU|*d;K%E? zn#eRwgb*mD7>~z^b%pCI9iGW#vh~bVncHYIqWI>fX#yan#I|kv{XUN407*A;xm<$d zQGK9ZuV-TNn^$j;QlgYXN{MAzn5L=84a2}N45XA#6M{yg5jC4leb~$I->_{PSmj3c z-3O$UEEWq4!=U}bWj>!jcy1~Of*@d4t`LSHVHncy_jMo0b=o>H=kqy*>nnWUr`PK} zjet_Alu=6QtcO)6v~8Op2sR3KU3Y7fO5KQ*QUpPuNy9M2w(UeE_`aVIWm(on5jzX; zJTHo~Tq&jJ^Z7j4Y?fc|Ki(@xSmnpj#pT9xQ$0rG@mQDIz1sJ$z;Ot}P~ToDg%E;V zr@ih%qAYiIpjNA8;+xOP6+J&IS9D0$Lo*tU5<-n+a07*qoM6N<$g60n} AegFUf literal 0 HcmV?d00001 diff --git a/Resources/Textures/_LostParadise/Objects/Specific/Mining/OreDiamond.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Objects/Specific/Mining/OreDiamond.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..d91cf316f6f7ee5484df8eb2cfabe0a015c8b62f GIT binary patch literal 840 zcmV-O1GoH%P)Px&0!c(cRCt{2nlWhGKoo}mlzI|)QKhAek7f|=;2}443xR^NB!k!J250Wj3PP6- zof=4?TNh;rT{Czy6oj`-2gQLTOX0dSi&3C~Oc}02IH5F-eIl_fm-j6`q=WbLzdN7A z`vHO=2!bGp{|F(3PSaG|%zZlTWM+vFLIXhS!)K^|cea5|@OhIYiB8j0zxi=)mCuv1 z0pd8;#jy}Vd!C0Vickd+wzs#J0N~G;_g3>u2@uDz4uas;IEo^KVF&)@Wk|fapz!<}z(L#Ne`^}Prg99rOtd&ZVL|?9MqTcU-FHeE;#47KHP`nIQe}e%%V~H7%c98DJ7IrI9^!?fQ73*P;v{HGvD(( z)Y=`?`(0#N1_0okqu1+UZ*Om*L@1rCdD$^%KIa?&7V_bN2Yd^ho}T8vwr4Iu5ClOG z1VIo4K@bE%5ClL5hLrfhokG(aMXXl)~leW396LJJHoYg2X9|In`>XNXxeaH7so5>*tj^eHf@Yu0kw7q zQcC=Oy_I_bvMdAV9Ior){OhN=TH}mqqt@<#bB-*_uyJvgn>B1KJ7Wbf)qVc`8(i1T zD{s`T3awv*Tc!<@>-FLOMAOFDn{gcLFbq*#VgQh38HU3lhQs09TjNF3MlnCY&a^Qx zc_RXFqi(I;!QkUN0QO$IX;btFUmxz5GHqBtz^J`mH35oLB{zZ~2!bGp%JLVG&uf61 S#RkU!0000Px&Oi4sRRCt{2nlWhGKp2IeOFap^sM6BKq8Wrcc*srNLZF~5>EN}x!I?X>g3zTy zrv_5!)r4|pg53ZDO{IkF$y%0DZ_OLCzQmI?i|}^xA%eZA)oGkzq`}j z=^kJ(7z_r3!JrAwx%5XCN-0m0MCyje6Gy&)P)a!fv_E_X8}#N|v8Y^?Y4?CQj(L(K z{LPOusT&@t1{_5ZFQzG_+;JR)VTegZm?m3WTQvaq^X0u%ekB2-DB`~F-$;jHh#&|6 z0IgO_DcD)DzP?_Q&8zeb@O>Yi=OK<`4gj9#Vc2Y=G0*WP$^QPnlnByF#c|9p)?T48 z=)v%w(i0Kl->o=#MAL`l*lNqCy30DyX@ zih<3CMP zFvf7Sx&Z*nt-lB;1uW)#$8k{abkP{}kYyPFfDnRyzmMJB-K81=$|Z`$j+pZaApkJZ zp9k~{F!5gCx@cL2IE0_YAvHq{k*bbS|<-RZB!nNGzL8gCxGX90It0PBCVTorj2pl zh5NX-2gGsA#j%&*^70a{>*kddE7pN%h+(sxHx6SA7i+KbJcN+a7^P#jt_IwMir%t@130;P6$DoruiW#V=O-ru6Me4`|L?+8MEFC6ipkp zZR2Ql1Dofk(x#2l9#HRek)|nrzkHp00kSLuAq2K<xGHjlo z=4K5U%TB2PqII8s{|4K(^OhItE(+~m!yBdz5$n~#UZrWH^v5WQcn}0Ab}<0RvJ9iq z2&2)c@@Rb4L!fBdD8>iKnKmkG6e0lE>ef453_rdDAm_!K$NPYyNBHVsPsy|)UE{d1 ozGwmzF{TZJ!C){L42BB+0$CZ(Q??UEJpcdz07*qoM6N<$g4eL2X#fBK literal 0 HcmV?d00001 diff --git a/Resources/Textures/_LostParadise/Objects/Specific/Mining/OreDiamond.rsi/meta.json b/Resources/Textures/_LostParadise/Objects/Specific/Mining/OreDiamond.rsi/meta.json new file mode 100644 index 0000000000..633f8f462b --- /dev/null +++ b/Resources/Textures/_LostParadise/Objects/Specific/Mining/OreDiamond.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by bruhman_cringe (discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/handdrill.png b/Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/handdrill.png new file mode 100644 index 0000000000000000000000000000000000000000..e0aadfc06e9e67f7d113e24ae9c16d1cecdfe36c GIT binary patch literal 797 zcmV+&1LFLNP)Px%y-7qtR9J=WlwC-ZQ5eU6OA#@h$}VC|^CL+?3`{W4h+!9Ac+sVx^Ja#ONn(S6 z7lnul!obRym_#s~QFIYWA`*z02}!$A%MWy$Y_AJN{HTdoa=Or+nqeZ*RqqcDJn!?K zbN>JHoWlbuDk>`fJDNx^Iy!pnB(teXq$F#}yO1Vxb4x)sx3+oWeyTZk;RzUxMq*Ez zWHwca%8F8!LmSlD?ntrT&Nh*uPsMDi5`Sajj|Ob@7ExJI%JBF!oz5POt==N?6UzXY z`x*qGvZ54Qy+y<%>2Y*4pW4W=26{W&METVMhR3IAs4l@)ZxPP+TEe|400eLB($zn~ z+|q%OTelmrH?;`uqdpXeAA>y;0L9^_=jQigjh%@EaY;H68Ij!Z_%zP;TDtltaJJVn z|7kXAaYJLJ;i5dO={gy=rsfFC<5&04Eqw)FttZv29H#jR#2*`2+QanYQ7*!R;;m7@Aj}JTFP#k_H*SBeOg(=o) z=?<);IQ%ra!t@o+Xre0cE7rOijnC^9S=rf)jlJjE<+P~(!TnV!e&tdY&j;VhH(;=5 zQml*PWz*DQtVQum;Up2&lok$Xu4KCd@Q#L>~Lu{X5{fX{220A%P>3GT15xfUSh zTq6F!3jV+f0A<(9c;@bBVI&^KGex*4kA)FXJX1eK3x7ZCiJj2i)FRe{^YS}Cu85C& z9st<|&88}`AEU+P>N!;(FdB`gnXaOuqN4I|_yIoWFqmqBpP>K%01jnXNoGw=04e|g b00;m8000000Mb*F00000NkvXXu0mjfkzZ~w literal 0 HcmV?d00001 diff --git a/Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/inhand-left.png b/Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..5172d17781869fbc844f2f993994cc3c066ff3ff GIT binary patch literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zPkXvJhE&XX zd&}1QaDW8s1L4BLknIx!H2GK;26OR>E_}I2MEzouvv|AH|3Xa_i?emX*ajQg-S)xWGVSW2dv5iPoxWM z_lblW(`>DAE4`AhDPC~9_Talhc7}kh=Nn#Ip1GmM_pNM- z-M_;J@AVlb&pz;VPM^i!qVRo3k~lxcxSM&eHd-V9(BoeM|NJ=B@~7VQoPqn}O_O6x z7v%USr)C{uX!u=y)kFya773b8x*p157XIS&#lU;)JE~vs#W<~CYTL@cKx^tbuRBJm zKp(6h(^W z!|>zJkDH6T_KE-bYIk4(Fcc$nF3t`;F2~sLooP#}>l6EPJ}x3N%?}1#3i$MT*Hd5| g^QA_3ruq6ZXaU(AKnwzxf+vG0Pgg&ebxsLQ04QSZM*si- literal 0 HcmV?d00001 diff --git a/Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/inhand-right.png b/Resources/Textures/_LostParadise/Objects/Tools/DiamondHandDrill.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..b378089c747b36a29264bf63911346f0d029239d GIT binary patch literal 652 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>VAAn)aSW-L z^Y+$$Z|Ot{_7Cr;^2IuvPj*&x;%*8K_IUKfQLxE-x-^p?<3am_2lpTGEI5(CzE$K% zv4)xAvhG5$)|Q?!!8hMZHcVIBwo|_L{s)=2-1+x6=FK^F1z}?T%l)s37iG!qVQ}uTRgkJ-EI~V^`(J*StG3=35p%KYowt?BCe* zgL9eJO%vFm&d{)TvD~`$?_#IsHm+9H*-@PF?)@<{ew7&Jrm*WTPZ&1DpVgO}Clz98 zEo z+sWAsf`Us8zE);Fc2(z=QU9gyxN7>sdO_w3dJfXW5FS-YVeJc-m8x%|*C^Yzo3-`a9djBnlRev0%54**;u5bT-!}=BDfyeh6=5H=P`;2jS zwU`ofgpJKyj)Sk>+?}x2mOGf4`DHowTNf65KK%Pm zw~wi;YEIprXFE(AI$rGm#;lUq$tjmujuk!ye-Ty}Z@rj}%`_rfFY?*Vg zE83~Bk%1w8FQa^Te|Y@wm=!?N_);T0(|mmyw18|5s2!JrCxcj?u6{1-oD!MTRam_}C*9_Mp8cG?mbq-iHn2IIH9+2YRz?aa=8o|Ed7}FZ&2#~Ti zEBQG&VtHTwmz`wI5%W9O{!x9-spIAaF`+v{{4Q*Nn85eAkl*3CSE0*$9uC(Dk5^^Y zam)oH&)%nWy%Y7%|qF{qoXP;fziR28sVAd>&u`8WOD#92wV!D45B<;{an^LB{Ts5 Dg)_ps literal 0 HcmV?d00001 diff --git a/Resources/Textures/_LostParadise/Objects/Tools/DiamondPickaxe.rsi/meta.json b/Resources/Textures/_LostParadise/Objects/Tools/DiamondPickaxe.rsi/meta.json new file mode 100644 index 0000000000..c170464e70 --- /dev/null +++ b/Resources/Textures/_LostParadise/Objects/Tools/DiamondPickaxe.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Blue Moon ss13", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "pickaxe" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_LostParadise/Objects/Tools/DiamondPickaxe.rsi/pickaxe.png b/Resources/Textures/_LostParadise/Objects/Tools/DiamondPickaxe.rsi/pickaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..a4250e8149e510174437e91916b12c517fdd34b7 GIT binary patch literal 646 zcmV;10(t$3P)Px%CP_p=R9J=Wl|N_`Q5?rV7ezv$HO8S-=~8rv;#Lr)nnQGLI*2$3>d>JE331Gz zc*89PCLX0bDDq4)px4nM*0jWHP?NlMuoLP|0L%450un zoI0ieO63YtN&s@XoUgg3<}R%H8oE|i?cK4RQn|vXFW(rS2xjalA%yunYzJH`s|E+Q zESu+VugTm~6ofa1zyO~4_0r3>%weeu-WUP_=rs2f1rZ3K-WPx%=Sf6CRA_Z8Hn-PKtB)k~O1AhP=oO68U?!eI0CpBLQiTm*$_dfT0 z_b~9H7rp3z*B1HG>2y{$y6v>);l6kI!WL^TPx*Wv0Pre`(R1i^RD;`2Yp&}Wvp*^Y zKt=+r{ar;ycLX3hh1dziz5r?qcnJmojb(c;Wns)$XBJflU1;O?|>dVkbc5KsvpLe*a-%k{4kcfS2J)dgkRVY4*?<) z-TB$!(JkOnJy02o?5%v={A%kSY#9RJz3 z#{=d^xPX5xW?BBB^ceu~?XtYKW8VG~*;9|Cd<4{#3TNT~@JOgBb!jw2mNmph>C}JD z!}$aN**7_=Ef)cjp=wG6t3RPA(DV%V90=bLVLwEKFdzYe*cU);f#~WahYQ(;pc0D0 zv{@y2TB2~ z^b1t+K#$QtM7-c2-$ms`JnaQcsYiKo1b_X zEZ!ZH@a4O>x1oj8=lOECt>>7w=vL)~xy&!+Ww^19jiKS_ude9O+UH!i#AFlpOPZ}J z6?<@Z+wy%4DPbw(zFj(wb+Zbe0sXFVdQ&MBb@0LX@9 APyhe` literal 0 HcmV?d00001 diff --git a/Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/glass.png b/Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..f1a30de8ae74735c4bbd37907ad7742c3a774655 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3HF&`%2dVDaPU;cPEB*=VV?2IaZ!7jv*P1 zZ_g?6F(~k`IG)-)@z3rEA)aN929L95+j4bn{W*clEK YbL;xEaGgE+z80jy)78&qol`;+054}Hz5oCK literal 0 HcmV?d00001 diff --git a/Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/lights.png b/Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/lights.png new file mode 100644 index 0000000000000000000000000000000000000000..32db2095ed0ebaa776b6e93e8bcf4d311220b786 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3HF&`%2dVDaPU;cPEB*=VV?2InzB|978f1 z-(K?NJES1c_VD12k9=~X;Tirbt=~1oPB}07QQcSPT9@xV^+e}}pKU#oKs`Y4VZF-F zWk>zPUy3W5d5f~Y`)_p%jbRXyUO>rifs0^ zj5nFzc#%Of&D(H0_k}4c@6R`%S|z#arnANMD+jB08E^Y}Eakt zG3V`F!z`^pk%ot#ox&E*mEIw}!7Dv+;u)qG*HsOMPOILi-gJ~=zQy(K`My_dLWd4i z8x;4{#AiOVfBZF$&&N;@Xet8ye{g<6{J$-c*ROB?u0Q|o-FrtKr&(u&|Ns7F{jnVa z9)YL!yyIVPHS^r76sy(UPghMdTA%#=wrR@OXzS1ajDOd@e$VoxXsXfr?x(Mc+28Ol zzgV7d`{&HR*Us(vf2QvKFKb56QrnV*zXkHK+q*kD-hMuPVW<3WLBZJV-mlZQM%ybr z-=6<>-`8@cqMc_N(j1Hx($Df(INj&TV0+^8lX+6shxSYN+s{4zm^_93;jjIR-?OkF zT#k+P@BV`I`SrKfyncQA_w@7c^70=QZkBzz_2aMS_xDRZc2aQF{JhJ44#+Q)U#`)c zwmRz6p1!;J*C$-fe|zTl`8VI!?iZeLI`q^YpwxNU4fb=~?lPydGStjg7|7aG4F zt}VH%r=+y)yuS1Ex;O4FK;GK+fs#IZr$_VxGl#wqcH`@dJ)p;{}ov zjGyv*tU4&~RWEPVf4o0XuI2UrzJ0<1*gSy{`%&M#Z{Od{&Fj|ZzmK=uy?bxx@v~)9 zt{;0nzy5z#4|k);(lf9B6|4gK#c$c>T@mZDG(TIF?T>X1+rQQLz5V9<+yD7F=!FCQ z9I?)>{J_5gsap1JbLZbg@@&X;XZCCS-!GQ#?&!E-x1VS3?~U?;K;D+Ru-#vki|T$~ zdmmk|t}y*HFiK3Ai>{q%Q2ufj7*pq_*ek4LtJnBj`@%-f-mOw#-GA#}ehvtyLs<{H Y_q(Zj=Hv&cihx8sUHx3vIVCg!0N}G=Y5)KL literal 0 HcmV?d00001 diff --git a/Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/piston.png b/Resources/Textures/_LostParadise/Structures/Machines/diamond_crusher.rsi/piston.png new file mode 100644 index 0000000000000000000000000000000000000000..53a54f846c15cedf5511cf63ac7fd57a7f96e343 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3HF&`%2dVDaPU;cPEB*=VV?2IrBVS978f1 z-(KCw+iW1v`q2AWLm%s&hSepSK`Pt^uB$v+6aqJL=S!6e4vZdvPD+we(pcD zP3QN|l$%OG6B;%*KYg@**QL6O^~dtAPqulTcJq6N Date: Sun, 22 Sep 2024 17:37:21 +0700 Subject: [PATCH 13/44] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=BA=D0=B8=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml index da69264cdb..ecdbb100c6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml @@ -109,10 +109,10 @@ angle: 75 - type: entity - name: pickaxe + name: алмазная кирка parent: BaseItem id: LPPDiamondPickaxe - description: Notched to perfection, for jamming it into rocks + description: Выточенный до совершенства, для забивания его в камни. components: - type: Tag tags: From fe8a072aecac45cf01cc5b0b06f457ab8108f271 Mon Sep 17 00:00:00 2001 From: BL02DL Date: Sun, 22 Sep 2024 17:43:11 +0700 Subject: [PATCH 14/44] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=D1=8B=20=D0=B8?= =?UTF-8?q?=20=D1=80=D0=B5=D1=86=D0=B5=D0=BF=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/Structures/Machines/lathe.yml | 2 ++ .../Recipes/Lathes/diamondindustry.yml | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 Resources/Prototypes/Recipes/Lathes/diamondindustry.yml diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 1d61db19ce..30917492ab 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -274,6 +274,8 @@ - LargeBeaker - ClothingEyesGlassesChemical dynamicRecipes: + - LPPDiamondPickaxe + - LPPDiamondMiningDrill - Dropper - LPPRCDFAPDevice - LPPRCDFAPAmmo diff --git a/Resources/Prototypes/Recipes/Lathes/diamondindustry.yml b/Resources/Prototypes/Recipes/Lathes/diamondindustry.yml new file mode 100644 index 0000000000..d209f23c8d --- /dev/null +++ b/Resources/Prototypes/Recipes/Lathes/diamondindustry.yml @@ -0,0 +1,19 @@ +- type: latheRecipe + id: LPPDiamondMiningDrill + result: LPPDiamondMiningDrill + category: Tools + completetime: 3 + materials: + Steel: 500 + Plastic: 100 + LPPDiamond: 2500 + +- type: latheRecipe + id: LPPDiamondPickaxe + result: LPPDiamondPickaxe + category: Tools + completetime: 4 + materials: + Steel: 1000 + Plastic: 500 + LPPDiamond: 2500 \ No newline at end of file From a217cfb2f731e2a282bf02b193419eef0f8cbe02 Mon Sep 17 00:00:00 2001 From: Evgencheg <73418250+Evgencheg@users.noreply.github.com> Date: Sun, 22 Sep 2024 14:02:19 +0300 Subject: [PATCH 15/44] Update Standard.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit не забывайте ставить пустые строчки в конце --- Resources/Prototypes/Catalog/Jukebox/Standard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/Jukebox/Standard.yml b/Resources/Prototypes/Catalog/Jukebox/Standard.yml index d099493956..faf917ea78 100644 --- a/Resources/Prototypes/Catalog/Jukebox/Standard.yml +++ b/Resources/Prototypes/Catalog/Jukebox/Standard.yml @@ -38,4 +38,4 @@ id: LPPPivoDance name: Pivo Dance - BL02DL path: - path: /Audio/Jukebox/PivoDance.ogg \ No newline at end of file + path: /Audio/Jukebox/PivoDance.ogg From 899f291c253e6609ba8dadfc0daa1f3cedba278f Mon Sep 17 00:00:00 2001 From: BL02DL Date: Sun, 22 Sep 2024 18:13:00 +0700 Subject: [PATCH 16/44] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=B2=D1=80=D0=B0?= =?UTF-8?q?=D1=82=20=D0=BC=D0=BE=D0=BB=D0=BE=D1=82=D0=B0=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=B0=D1=80=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Maps/_LostParadise/LP_Normandy.yml | 7 +++++++ Resources/Maps/_LostParadise/asterisk.yml | 7 +++++++ Resources/Maps/_LostParadise/pebble.yml | 7 +++++++ Resources/Maps/_LostParadise/submarine.yml | 7 +++++++ Resources/Maps/arena.yml | 7 +++++++ Resources/Maps/asterisk.yml | 7 +++++++ Resources/Maps/edge.yml | 7 +++++++ Resources/Maps/hammurabi.yml | 8 ++++++++ Resources/Maps/hive.yml | 7 +++++++ Resources/Maps/pebble.yml | 7 +++++++ Resources/Maps/shoukou.yml | 7 +++++++ Resources/Maps/submarine.yml | 7 +++++++ Resources/Maps/tortuga.yml | 8 ++++++++ 13 files changed, 93 insertions(+) diff --git a/Resources/Maps/_LostParadise/LP_Normandy.yml b/Resources/Maps/_LostParadise/LP_Normandy.yml index 02daf45c8d..2bc50b526e 100644 --- a/Resources/Maps/_LostParadise/LP_Normandy.yml +++ b/Resources/Maps/_LostParadise/LP_Normandy.yml @@ -81580,6 +81580,13 @@ entities: - type: Transform pos: 58.739925,9.466386 parent: 2 +- proto: SecBreachingHammer + entities: + - uid: 12985 + components: + - type: Transform + pos: 66.52352,45.10759 + parent: 2 - proto: SecurityTechFab entities: - uid: 8142 diff --git a/Resources/Maps/_LostParadise/asterisk.yml b/Resources/Maps/_LostParadise/asterisk.yml index f2f911399f..6002b9b705 100644 --- a/Resources/Maps/_LostParadise/asterisk.yml +++ b/Resources/Maps/_LostParadise/asterisk.yml @@ -56751,6 +56751,13 @@ entities: - type: Transform pos: -47.609417,7.24538 parent: 2 +- proto: SecBreachingHammer + entities: + - uid: 3299 + components: + - type: Transform + pos: -42.5,11.5 + parent: 2 - proto: SecurityTechFab entities: - uid: 1488 diff --git a/Resources/Maps/_LostParadise/pebble.yml b/Resources/Maps/_LostParadise/pebble.yml index 82f7bc15ac..ceaa8bdbf1 100644 --- a/Resources/Maps/_LostParadise/pebble.yml +++ b/Resources/Maps/_LostParadise/pebble.yml @@ -57329,6 +57329,13 @@ entities: - type: Transform pos: -26.5,-20.5 parent: 2 +- proto: SecBreachingHammer + entities: + - uid: 8620 + components: + - type: Transform + pos: 22.879267,-14.333235 + parent: 2 - proto: SecurityTechFab entities: - uid: 8621 diff --git a/Resources/Maps/_LostParadise/submarine.yml b/Resources/Maps/_LostParadise/submarine.yml index 0b2e9ef542..e3d993b9b2 100644 --- a/Resources/Maps/_LostParadise/submarine.yml +++ b/Resources/Maps/_LostParadise/submarine.yml @@ -202902,6 +202902,13 @@ entities: - type: Transform pos: 10.653106,58.48732 parent: 2 +- proto: SecBreachingHammer + entities: + - uid: 16541 + components: + - type: Transform + pos: -26.344074,37.36297 + parent: 2 - uid: 16556 components: - type: Transform diff --git a/Resources/Maps/arena.yml b/Resources/Maps/arena.yml index 59f445dbf8..563011f75f 100644 --- a/Resources/Maps/arena.yml +++ b/Resources/Maps/arena.yml @@ -146753,6 +146753,13 @@ entities: - type: Transform pos: 39.452625,-85.156075 parent: 6747 +- proto: SecBreachingHammer + entities: + - uid: 3186 + components: + - type: Transform + pos: -32.46227,10.543685 + parent: 6747 - proto: SecurityTechFab entities: - uid: 1223 diff --git a/Resources/Maps/asterisk.yml b/Resources/Maps/asterisk.yml index 34c6b77d87..156fb2de6e 100644 --- a/Resources/Maps/asterisk.yml +++ b/Resources/Maps/asterisk.yml @@ -56439,6 +56439,13 @@ entities: - type: Transform pos: -47.609417,7.24538 parent: 2 +- proto: SecBreachingHammer + entities: + - uid: 3299 + components: + - type: Transform + pos: -42.5,11.5 + parent: 2 - proto: SecurityTechFab entities: - uid: 1488 diff --git a/Resources/Maps/edge.yml b/Resources/Maps/edge.yml index d5ce8c713c..601cb7dd17 100644 --- a/Resources/Maps/edge.yml +++ b/Resources/Maps/edge.yml @@ -88769,6 +88769,13 @@ entities: - type: Transform pos: -40.520424,40.344563 parent: 2 +- proto: SecBreachingHammer + entities: + - uid: 13482 + components: + - type: Transform + pos: -44.37972,-6.4715266 + parent: 2 - proto: SecurityTechFab entities: - uid: 13483 diff --git a/Resources/Maps/hammurabi.yml b/Resources/Maps/hammurabi.yml index c1077b5bfe..0afaa64934 100644 --- a/Resources/Maps/hammurabi.yml +++ b/Resources/Maps/hammurabi.yml @@ -231297,6 +231297,14 @@ entities: rot: 3.141592653589793 rad pos: -133.9929,-47.262802 parent: 1 +- proto: SecBreachingHammer + entities: + - uid: 12621 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -63.457417,-45.395763 + parent: 1 - uid: 12622 components: - type: Transform diff --git a/Resources/Maps/hive.yml b/Resources/Maps/hive.yml index 582f496b2b..a732c83a53 100644 --- a/Resources/Maps/hive.yml +++ b/Resources/Maps/hive.yml @@ -139530,6 +139530,13 @@ entities: - type: Transform pos: 67.51577,32.45275 parent: 1 +- proto: SecBreachingHammer + entities: + - uid: 21457 + components: + - type: Transform + pos: 84.52116,17.583738 + parent: 1 - proto: SecurityTechFab entities: - uid: 4904 diff --git a/Resources/Maps/pebble.yml b/Resources/Maps/pebble.yml index 6fd3445d4d..6f38df6c0e 100644 --- a/Resources/Maps/pebble.yml +++ b/Resources/Maps/pebble.yml @@ -57822,6 +57822,13 @@ entities: - type: Transform pos: -26.5,-20.5 parent: 2 +- proto: SecBreachingHammer + entities: + - uid: 8620 + components: + - type: Transform + pos: 22.879267,-14.333235 + parent: 2 - proto: SecurityTechFab entities: - uid: 8621 diff --git a/Resources/Maps/shoukou.yml b/Resources/Maps/shoukou.yml index 3a79b98bd0..afd78ab15e 100644 --- a/Resources/Maps/shoukou.yml +++ b/Resources/Maps/shoukou.yml @@ -70905,6 +70905,13 @@ entities: rot: 3.141592653589793 rad pos: -18.468266,3.9137797 parent: 34 +- proto: SecBreachingHammer + entities: + - uid: 4922 + components: + - type: Transform + pos: 32.493702,-9.347706 + parent: 34 - proto: SecurityTechFab entities: - uid: 4422 diff --git a/Resources/Maps/submarine.yml b/Resources/Maps/submarine.yml index a1f545fc7a..310644914b 100644 --- a/Resources/Maps/submarine.yml +++ b/Resources/Maps/submarine.yml @@ -203953,6 +203953,13 @@ entities: - type: Transform pos: 10.653106,58.48732 parent: 2 +- proto: SecBreachingHammer + entities: + - uid: 16541 + components: + - type: Transform + pos: -26.344074,37.36297 + parent: 2 - uid: 16556 components: - type: Transform diff --git a/Resources/Maps/tortuga.yml b/Resources/Maps/tortuga.yml index 7f0a19fc3e..399a06a400 100644 --- a/Resources/Maps/tortuga.yml +++ b/Resources/Maps/tortuga.yml @@ -163167,6 +163167,14 @@ entities: - type: Transform pos: -90.394936,-19.181442 parent: 33 +- proto: SecBreachingHammer + entities: + - uid: 7070 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -28.413374,66.53389 + parent: 33 - proto: SecurityTechFab entities: - uid: 5837 From 535270710aed1a096aebc1d5569c39fe50a85f49 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Sun, 22 Sep 2024 14:16:14 +0300 Subject: [PATCH 17/44] =?UTF-8?q?=D0=B2=D1=8B=D0=B2=D0=B5=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=20=D0=BD=D0=B0=D1=88=D0=B5=20=D0=B2=20=D0=BD=D0=B0?= =?UTF-8?q?=D1=88=D0=B8=20=D0=BF=D0=B0=D0=BF=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_LostParadise/Guidebook/SpaceLaw.txt | 4 +- .../_LostParadise/Guidebook/spacelaw.ftl | 33 ++++++++++++++++ Resources/Locale/ru-RU/guidebook/guides.ftl | 33 ---------------- .../Weapons/Guns/Projectiles/hitscan.yml | 15 -------- Resources/Prototypes/Guidebook/security.yml | 5 --- Resources/Prototypes/Research/arsenal.yml | 13 ------- .../Prototypes/Research/civilianservices.yml | 26 ------------- .../Weapons/Guns/Projectiles/projectiles.yml | 15 ++++++++ .../_LostParadise/Guidebook/SpaceLaw.yml | 7 +++- .../_LostParadise/Researches/lpp.yml | 38 +++++++++++++++++++ 10 files changed, 94 insertions(+), 95 deletions(-) create mode 100644 Resources/Locale/ru-RU/_LostParadise/Guidebook/spacelaw.ftl create mode 100644 Resources/Prototypes/_LostParadise/Researches/lpp.yml diff --git a/Resources/Locale/ru-RU/_LostParadise/Guidebook/SpaceLaw.txt b/Resources/Locale/ru-RU/_LostParadise/Guidebook/SpaceLaw.txt index a3f3a7caab..6d97fb145c 100644 --- a/Resources/Locale/ru-RU/_LostParadise/Guidebook/SpaceLaw.txt +++ b/Resources/Locale/ru-RU/_LostParadise/Guidebook/SpaceLaw.txt @@ -1,4 +1,4 @@ -lppguide-entry-rights = Права сотрудников корпорации +lppguide-entry-rights = Права сотрудников корпорации lppguide-entry-brib = Основные Права Разумных Существ lppguide-entry-rightsprisoners = Права заключенных/задержанных -lppguide-entry-spacelaw = Космический закон \ No newline at end of file +lppguide-entry-spacelaw = Космический закон diff --git a/Resources/Locale/ru-RU/_LostParadise/Guidebook/spacelaw.ftl b/Resources/Locale/ru-RU/_LostParadise/Guidebook/spacelaw.ftl new file mode 100644 index 0000000000..4a4797b537 --- /dev/null +++ b/Resources/Locale/ru-RU/_LostParadise/Guidebook/spacelaw.ftl @@ -0,0 +1,33 @@ +lppguide-entry-rights = Права сотрудников корпорации +lppguide-entry-brib = Основные Права Разумных Существ +lppguide-entry-rightsprisoners = Права заключенных/задержанных +lppguide-entry-spacelaw = Космический закон +lppguide-entry-arrestprocedure = Процедура ареста +lppguide-entry-listofprohibitedsubstances = Список запрещенных веществ +lppguide-entry-levelsofforceapplication = Уровни Применения Силы +lppguide-entry-necessarydefense = Необходимая оборона +lppguide-entry-articlesofthecorporatelaw = Статьи Корпоративного Закона +lppguide-entry-minorviolations = Лёгкие нарушения +lppguide-entry-explanationoflightarticles = Пояснение лёгких статей +lppguide-entry-averageviolations = Средние нарушения +lppguide-entry-explanationofaveragearticles = Пояснение средних нарушений +lppguide-entry-seriousviolations = Тяжкие нарушения +lppguide-entry-explanationofseriousarticles = Пояснение тяжких нарушений +lppguide-entry-supersevereviolations = Сверхтяжкие нарушения +lppguide-entry-explanationofsuperseverearticles = Пояснение сверхтяжких нарушений +lppguide-entry-criticalviolations = Критические нарушения +lppguide-entry-explanationofcriticalarticles = Пояснение критических нарушений +lppguide-entry-punishments = Наказания +lppguide-entry-theseverityoftheviolationandtheappropriatepenalties = Степени тяжести нарушения +lppguide-entry-theratiooftheseverityoftheviolationandthepositionsauthorizedtocarryoutpunishments = Соотношение степени тяжести +lppguide-entry-rulesforissuingwarnings = Правила вынесения предупреждений +lppguide-entry-relapse = Рецидив +lppguide-entry-execution = Казнь +lppguide-entry-punishmentsagainstconfirmedenemiesofthecorporation = Наказания в отношении врагов +lppguide-entry-administrativeban = Административный запрет +lppguide-entry-additionalrulesforsentencing = Дополнительные правила +lppguide-entry-sentencemodifiers = Модификаторы приговоров +lppguide-entry-violationsoftheconditionsofdetention = Нарушения условий содержания +lppguide-entry-indulgences = Послабления +lppguide-entry-aggravatingcircumstances = Отягчающие обстоятельства +lppguide-entry-additionally = Дополнительно diff --git a/Resources/Locale/ru-RU/guidebook/guides.ftl b/Resources/Locale/ru-RU/guidebook/guides.ftl index 42ab3b95f2..2277c33830 100644 --- a/Resources/Locale/ru-RU/guidebook/guides.ftl +++ b/Resources/Locale/ru-RU/guidebook/guides.ftl @@ -66,39 +66,6 @@ guide-entry-robotics = Робототехника guide-entry-cyborgs = Киборги guide-entry-security = Безопасность станции lppguide-entry-criminal-records = Тэн-коды -lppguide-entry-rights = Права сотрудников корпорации -lppguide-entry-brib = Основные Права Разумных Существ -lppguide-entry-rightsprisoners = Права заключенных/задержанных -lppguide-entry-spacelaw = Космический закон -lppguide-entry-arrestprocedure = Процедура ареста -lppguide-entry-listofprohibitedsubstances = Список запрещенных веществ -lppguide-entry-levelsofforceapplication = Уровни Применения Силы -lppguide-entry-necessarydefense = Необходимая оборона -lppguide-entry-articlesofthecorporatelaw = Статьи Корпоративного Закона -lppguide-entry-minorviolations = Лёгкие нарушения -lppguide-entry-explanationoflightarticles = Пояснение лёгких статей -lppguide-entry-averageviolations = Средние нарушения -lppguide-entry-explanationofaveragearticles = Пояснение средних нарушений -lppguide-entry-seriousviolations = Тяжкие нарушения -lppguide-entry-explanationofseriousarticles = Пояснение тяжких нарушений -lppguide-entry-supersevereviolations = Сверхтяжкие нарушения -lppguide-entry-explanationofsuperseverearticles = Пояснение сверхтяжких нарушений -lppguide-entry-criticalviolations = Критические нарушения -lppguide-entry-explanationofcriticalarticles = Пояснение критических нарушений -lppguide-entry-punishments = Наказания -lppguide-entry-theseverityoftheviolationandtheappropriatepenalties = Степени тяжести нарушения -lppguide-entry-theratiooftheseverityoftheviolationandthepositionsauthorizedtocarryoutpunishments = Соотношение степени тяжести -lppguide-entry-rulesforissuingwarnings = Правила вынесения предупреждений -lppguide-entry-relapse = Рецидив -lppguide-entry-execution = Казнь -lppguide-entry-punishmentsagainstconfirmedenemiesofthecorporation = Наказания в отношении врагов -lppguide-entry-administrativeban = Административный запрет -lppguide-entry-additionalrulesforsentencing = Дополнительные правила -lppguide-entry-sentencemodifiers = Модификаторы приговоров -lppguide-entry-violationsoftheconditionsofdetention = Нарушения условий содержания -lppguide-entry-indulgences = Послабления -lppguide-entry-aggravatingcircumstances = Отягчающие обстоятельства -lppguide-entry-additionally = Дополнительно guide-entry-forensics = Криминалистика guide-entry-defusal = Обезвреживание крупной бомбы guide-entry-criminal-records = Криминальные записи diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml index 55baa13d83..3f37d308db 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml @@ -61,21 +61,6 @@ sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi state: impact_laser -- type: hitscan - id: LPPRedMediumLightLaser - damage: - types: - Heat: 13 - muzzleFlash: - sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi - state: muzzle_laser - travelFlash: - sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi - state: beam - impactFlash: - sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi - state: impact_laser - - type: hitscan id: RedLightLaser damage: diff --git a/Resources/Prototypes/Guidebook/security.yml b/Resources/Prototypes/Guidebook/security.yml index d0a4e29568..59ed27e82b 100644 --- a/Resources/Prototypes/Guidebook/security.yml +++ b/Resources/Prototypes/Guidebook/security.yml @@ -22,8 +22,3 @@ id: CriminalRecords name: guide-entry-criminal-records text: "/ServerInfo/Guidebook/Security/CriminalRecords.xml" - -- type: guideEntry - id: LPPTenCodes - name: lppguide-entry-criminal-records - text: "/ServerInfo/Guidebook/Security/TenCodes.xml" \ No newline at end of file diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 7f88798d33..7432d4225f 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -116,19 +116,6 @@ # Tier 2 -- type: technology - id: LPPCombatUtilitys - name: lppresearch-technology-combat-utility - icon: - sprite: _LostParadise/Objects/Specific/Medical/CombatHypospray.rsi - state: hypo - discipline: Arsenal - tier: 2 - cost: 10000 - recipeUnlocks: - - LPPCombatDefibrillator - - LPPCombatHypospray - - type: technology id: ExplosiveTechnology name: research-technology-explosive-technology diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index 489bef1800..0a9f74b86d 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -1,31 +1,5 @@ # Tier 1 -- type: technology - id: LPPBasicAdministrationOfDrugs - name: lppresearch-technology-basic-administration-of-drugs - icon: - sprite: _LostParadise/Objects/Specific/Medical/hyposprayzero.rsi - state: hypo - discipline: CivilianServices - tier: 1 - cost: 2000 - recipeUnlocks: - - LPPHypospray - - Syringe - - Dropper - -- type: technology - id: LPPBasicTracking - name: lppresearch-technology-basic-tracking - icon: - sprite: Objects/Specific/Medical/handheldcrewmonitor.rsi - state: scanner - discipline: CivilianServices - tier: 1 - cost: 2000 - recipeUnlocks: - - HandheldCrewMonitor - - type: technology id: Hydroponics name: research-technology-basic-hydroponics diff --git a/Resources/Prototypes/_LostParadise/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/_LostParadise/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index af6b2dc486..5749749da5 100644 --- a/Resources/Prototypes/_LostParadise/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/_LostParadise/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -129,6 +129,21 @@ - type: TimedDespawn lifetime: 0.2 +- type: hitscan + id: LPPRedMediumLightLaser + damage: + types: + Heat: 13 + muzzleFlash: + sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi + state: muzzle_laser + travelFlash: + sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi + state: beam + impactFlash: + sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi + state: impact_laser + # - type: entity # name : Cutter bolt # id: BulletCutter2 diff --git a/Resources/Prototypes/_LostParadise/Guidebook/SpaceLaw.yml b/Resources/Prototypes/_LostParadise/Guidebook/SpaceLaw.yml index 85878d3848..6df4a19ecc 100644 --- a/Resources/Prototypes/_LostParadise/Guidebook/SpaceLaw.yml +++ b/Resources/Prototypes/_LostParadise/Guidebook/SpaceLaw.yml @@ -197,4 +197,9 @@ - type: guideEntry id: LPPNecessaryDefense name: lppguide-entry-necessarydefense - text: "/ServerInfo/Guidebook/_LostParadise/SpaceLaw/NecessaryDefense.xml" \ No newline at end of file + text: "/ServerInfo/Guidebook/_LostParadise/SpaceLaw/NecessaryDefense.xml" + +- type: guideEntry + id: LPPTenCodes + name: lppguide-entry-criminal-records + text: "/ServerInfo/Guidebook/Security/TenCodes.xml" diff --git a/Resources/Prototypes/_LostParadise/Researches/lpp.yml b/Resources/Prototypes/_LostParadise/Researches/lpp.yml new file mode 100644 index 0000000000..ef951398ae --- /dev/null +++ b/Resources/Prototypes/_LostParadise/Researches/lpp.yml @@ -0,0 +1,38 @@ +- type: technology + id: LPPCombatUtilitys + name: lppresearch-technology-combat-utility + icon: + sprite: _LostParadise/Objects/Specific/Medical/CombatHypospray.rsi + state: hypo + discipline: Arsenal + tier: 2 + cost: 10000 + recipeUnlocks: + - LPPCombatDefibrillator + - LPPCombatHypospray + +- type: technology + id: LPPBasicAdministrationOfDrugs + name: lppresearch-technology-basic-administration-of-drugs + icon: + sprite: _LostParadise/Objects/Specific/Medical/hyposprayzero.rsi + state: hypo + discipline: CivilianServices + tier: 1 + cost: 2000 + recipeUnlocks: + - LPPHypospray + - Syringe + - Dropper + +- type: technology + id: LPPBasicTracking + name: lppresearch-technology-basic-tracking + icon: + sprite: Objects/Specific/Medical/handheldcrewmonitor.rsi + state: scanner + discipline: CivilianServices + tier: 1 + cost: 2000 + recipeUnlocks: + - HandheldCrewMonitor From f639d5a53085d21663bd2c0da5ed421c90452b98 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Sun, 22 Sep 2024 14:31:25 +0300 Subject: [PATCH 18/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Locale/ru-RU/_LostParadise/Guidebook/spacelaw.ftl | 1 + Resources/Locale/ru-RU/_LostParadise/misc/fibers.ftl | 1 + Resources/Locale/ru-RU/_LostParadise/research/research.ftl | 3 +++ Resources/Locale/ru-RU/_LostParadise/update20.ftl | 1 + Resources/Locale/ru-RU/corvax/changelog/changelog-window.ftl | 1 - Resources/Locale/ru-RU/forensics/fibers.ftl | 1 - Resources/Locale/ru-RU/guidebook/guides.ftl | 1 - Resources/Locale/ru-RU/research/technologies.ftl | 3 --- 8 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 Resources/Locale/ru-RU/_LostParadise/misc/fibers.ftl create mode 100644 Resources/Locale/ru-RU/_LostParadise/research/research.ftl diff --git a/Resources/Locale/ru-RU/_LostParadise/Guidebook/spacelaw.ftl b/Resources/Locale/ru-RU/_LostParadise/Guidebook/spacelaw.ftl index 4a4797b537..331697ceb9 100644 --- a/Resources/Locale/ru-RU/_LostParadise/Guidebook/spacelaw.ftl +++ b/Resources/Locale/ru-RU/_LostParadise/Guidebook/spacelaw.ftl @@ -31,3 +31,4 @@ lppguide-entry-violationsoftheconditionsofdetention = Нарушения усл lppguide-entry-indulgences = Послабления lppguide-entry-aggravatingcircumstances = Отягчающие обстоятельства lppguide-entry-additionally = Дополнительно +lppguide-entry-criminal-records = Тэн-коды diff --git a/Resources/Locale/ru-RU/_LostParadise/misc/fibers.ftl b/Resources/Locale/ru-RU/_LostParadise/misc/fibers.ftl new file mode 100644 index 0000000000..d6d79cab0d --- /dev/null +++ b/Resources/Locale/ru-RU/_LostParadise/misc/fibers.ftl @@ -0,0 +1 @@ +lppfibers-nitrile-insulative = нитрилово-изолирующие diff --git a/Resources/Locale/ru-RU/_LostParadise/research/research.ftl b/Resources/Locale/ru-RU/_LostParadise/research/research.ftl new file mode 100644 index 0000000000..982bec9ac0 --- /dev/null +++ b/Resources/Locale/ru-RU/_LostParadise/research/research.ftl @@ -0,0 +1,3 @@ +lppresearch-technology-combat-utility = Боевая медицина +lppresearch-technology-basic-administration-of-drugs = Базовое введение препаратов +lppresearch-technology-basic-tracking = Базовое отслеживание diff --git a/Resources/Locale/ru-RU/_LostParadise/update20.ftl b/Resources/Locale/ru-RU/_LostParadise/update20.ftl index ce91e2f05f..348305e572 100644 --- a/Resources/Locale/ru-RU/_LostParadise/update20.ftl +++ b/Resources/Locale/ru-RU/_LostParadise/update20.ftl @@ -234,3 +234,4 @@ trait-name-ElfLanguage = Эльфийский trait-desc-ElfLanguage = Вы знаете Эльфийский (Нет, не OOC словечки) trait-name-DwarfLanguage = Дворфийский trait-desc-DwarfLanguage = Если не вслушиваться похоже на бубнёж русских пьяниц +changelog-tab-title-ChangelogLPP = Обновления Lost Paradise diff --git a/Resources/Locale/ru-RU/corvax/changelog/changelog-window.ftl b/Resources/Locale/ru-RU/corvax/changelog/changelog-window.ftl index 99308346a1..226bd01d97 100644 --- a/Resources/Locale/ru-RU/corvax/changelog/changelog-window.ftl +++ b/Resources/Locale/ru-RU/corvax/changelog/changelog-window.ftl @@ -1,2 +1 @@ changelog-tab-title-ChangelogSyndie = Обновления Corvax -changelog-tab-title-ChangelogLPP = Обновления Lost Paradise diff --git a/Resources/Locale/ru-RU/forensics/fibers.ftl b/Resources/Locale/ru-RU/forensics/fibers.ftl index 59d999705b..31276f30fe 100644 --- a/Resources/Locale/ru-RU/forensics/fibers.ftl +++ b/Resources/Locale/ru-RU/forensics/fibers.ftl @@ -6,7 +6,6 @@ fibers-leather = кожаные fibers-durathread = дюратканевые fibers-latex = латексные fibers-nitrile = нитриловые -lppfibers-nitrile-insulative = нитрилово-изолирующие fibers-nanomachines = изолирующие наномашинные fibers-chameleon = голографические хамелеонные fibers-rubber = резиновые diff --git a/Resources/Locale/ru-RU/guidebook/guides.ftl b/Resources/Locale/ru-RU/guidebook/guides.ftl index 2277c33830..546cbff055 100644 --- a/Resources/Locale/ru-RU/guidebook/guides.ftl +++ b/Resources/Locale/ru-RU/guidebook/guides.ftl @@ -65,7 +65,6 @@ guide-entry-ss14 = Станции и смены guide-entry-robotics = Робототехника guide-entry-cyborgs = Киборги guide-entry-security = Безопасность станции -lppguide-entry-criminal-records = Тэн-коды guide-entry-forensics = Криминалистика guide-entry-defusal = Обезвреживание крупной бомбы guide-entry-criminal-records = Криминальные записи diff --git a/Resources/Locale/ru-RU/research/technologies.ftl b/Resources/Locale/ru-RU/research/technologies.ftl index fd8c4a846c..789fff5733 100644 --- a/Resources/Locale/ru-RU/research/technologies.ftl +++ b/Resources/Locale/ru-RU/research/technologies.ftl @@ -35,9 +35,6 @@ research-technology-nonlethal-ammunition = Нелетальные боеприп research-technology-practice-ammunition = Учебные боеприпасы research-technology-concentrated-laser-weaponry = Концентрированное лазерное оружие research-technology-wave-particle-harnessing = Применение волновых частиц -lppresearch-technology-combat-utility = Боевая медицина -lppresearch-technology-basic-administration-of-drugs = Базовое введение препаратов -lppresearch-technology-basic-tracking = Базовое отслеживание research-technology-advanced-riot-control = Продвинутое противодействие беспорядкам research-technology-portable-microfusion-weaponry = Оруженый портативный микросинтез research-technology-experimental-battery-ammo = Экспериментальные батарейные боеприпасы From ab03ee8bdb2d2bd1ff6e0a320d90b89256bd70c3 Mon Sep 17 00:00:00 2001 From: BL02DL Date: Sun, 22 Sep 2024 18:35:10 +0700 Subject: [PATCH 19/44] =?UTF-8?q?=D0=BC=D0=B8=D0=B3=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8,=20=D1=80=D0=B0=D1=81=D1=84=D0=BE=D1=81=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru-RU/_LostParadise/DiamondThings.ftl | 4 + .../Migrations/LostParadiseMigrations.yml | 1 + .../Circuitboards/Machine/production.yml | 4 + .../Devices/Circuitboards/computer.yml | 4 + .../Objects/Weapons/Melee/pickaxe.yml | 74 ------------------- .../Entities/Objects/Tools/DiamondTools.yml | 73 ++++++++++++++++++ 6 files changed, 86 insertions(+), 74 deletions(-) create mode 100644 Resources/Locale/ru-RU/_LostParadise/DiamondThings.ftl create mode 100644 Resources/Prototypes/_LostParadise/Entities/Objects/Tools/DiamondTools.yml diff --git a/Resources/Locale/ru-RU/_LostParadise/DiamondThings.ftl b/Resources/Locale/ru-RU/_LostParadise/DiamondThings.ftl new file mode 100644 index 0000000000..9b818c6fd9 --- /dev/null +++ b/Resources/Locale/ru-RU/_LostParadise/DiamondThings.ftl @@ -0,0 +1,4 @@ +ent-LPPDiamondMiningDrill = алмазный шахтёрский бур + .desc = Сильнейший шахтёрский бур способный в разы быстрее и сильнее пробивать камни. Имеет этикетку "BL CORP technology". +ent-LPPDiamondPickaxe = алмазная кирка + .desc = Выточенный до совершенства, для забивания его в камни. \ No newline at end of file diff --git a/Resources/Migrations/LostParadiseMigrations.yml b/Resources/Migrations/LostParadiseMigrations.yml index 9c9a8bc8e8..a86d247227 100644 --- a/Resources/Migrations/LostParadiseMigrations.yml +++ b/Resources/Migrations/LostParadiseMigrations.yml @@ -19,3 +19,4 @@ LPPFlagPoleSYND: null LPPLockerElectricalSuppliesSynFilled: null LPPRusUnder: null PlastitaniumPwindow: WindowReinforcedDirectional +SecBreachingHammer: LPPHammer \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 81d010a5f4..fd47a5ac52 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -616,6 +616,10 @@ materialRequirements: Steel: 1 Cable: 2 + - type: ReverseEngineering # Delta + difficulty: 3 + recipes: + - CrewMonitoringServerMachineCircuitboard - type: entity id: CryoPodMachineCircuitboard diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml index 9d194e01e8..1210f302fc 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml @@ -235,6 +235,10 @@ components: - type: ComputerBoard prototype: ComputerCrewMonitoring + - type: ReverseEngineering # Nyano + difficulty: 2 + recipes: + - CrewMonitoringComputerCircuitboard - type: entity parent: BaseComputerCircuitboard diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml index ecdbb100c6..013a97c099 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml @@ -76,77 +76,3 @@ difficulty: 2 recipes: - MiningDrill - -- type: entity - parent: BaseItem - id: LPPDiamondMiningDrill - name: алмазный шахтёрский бур - description: Сильнейший шахтёрский бур способный в разы быстрее и сильнее пробивать камни. Имеет этикетку "BL CORP technology". - components: - - type: Item - storedRotation: -90 - - type: Tag - tags: - - Pickaxe - - type: Sprite - sprite: _LostParadise/Objects/Tools/DiamondHandDrill.rsi - state: handdrill - - type: MeleeWeapon - autoAttack: true - wideAnimationRotation: -90 - soundHit: - path: "/Audio/Items/drill_hit.ogg" - attackRate: 3.0 - range: 1.5 - damage: - types: - Blunt: 6 - Slash: 4 - Structural: 42 - heavyRateModifier: 1 - heavyRangeModifier: 2 - heavyDamageBaseModifier: 1 - angle: 75 - -- type: entity - name: алмазная кирка - parent: BaseItem - id: LPPDiamondPickaxe - description: Выточенный до совершенства, для забивания его в камни. - components: - - type: Tag - tags: - - Pickaxe - - type: Sprite - sprite: _LostParadise/Objects/Tools/DiamondPickaxe.rsi - state: pickaxe - - type: MeleeWeapon - attackRate: 2.5 - range: 1.5 - wideAnimationRotation: -135 - soundHit: - path: "/Audio/Weapons/smash.ogg" - params: - volume: -3 - damage: - types: - Blunt: 6 - Pierce: 5 - bluntStaminaDamageFactor: 2.0 - heavyDamageBaseModifier: 1.75 - maxTargets: 5 - angle: 80 - - type: Wieldable - - type: IncreaseDamageOnWield - damage: - types: - Blunt: 5 - Structural: 42 - - type: Item - size: Normal - shape: - - 0,0,2,0 - - 1,1,1,2 - sprite: Objects/Weapons/Melee/pickaxe.rsi - storedRotation: -45 - - type: UseDelay \ No newline at end of file diff --git a/Resources/Prototypes/_LostParadise/Entities/Objects/Tools/DiamondTools.yml b/Resources/Prototypes/_LostParadise/Entities/Objects/Tools/DiamondTools.yml new file mode 100644 index 0000000000..0970528dd2 --- /dev/null +++ b/Resources/Prototypes/_LostParadise/Entities/Objects/Tools/DiamondTools.yml @@ -0,0 +1,73 @@ +- type: entity + parent: BaseItem + id: LPPDiamondMiningDrill + name: diamond mining drill + description: Powerful tool used to quickly drill through rocks. + components: + - type: Item + storedRotation: -90 + - type: Tag + tags: + - Pickaxe + - type: Sprite + sprite: _LostParadise/Objects/Tools/DiamondHandDrill.rsi + state: handdrill + - type: MeleeWeapon + autoAttack: true + wideAnimationRotation: -90 + soundHit: + path: "/Audio/Items/drill_hit.ogg" + attackRate: 3.0 + range: 1.5 + damage: + types: + Blunt: 6 + Slash: 4 + Structural: 42 + heavyRateModifier: 1 + heavyRangeModifier: 2 + heavyDamageBaseModifier: 1 + angle: 75 + +- type: entity + name: diamond pickaxe + parent: BaseItem + id: LPPDiamondPickaxe + description: Notched to perfection, for jamming it into rocks + components: + - type: Tag + tags: + - Pickaxe + - type: Sprite + sprite: _LostParadise/Objects/Tools/DiamondPickaxe.rsi + state: pickaxe + - type: MeleeWeapon + attackRate: 2.5 + range: 1.5 + wideAnimationRotation: -135 + soundHit: + path: "/Audio/Weapons/smash.ogg" + params: + volume: -3 + damage: + types: + Blunt: 6 + Pierce: 5 + bluntStaminaDamageFactor: 2.0 + heavyDamageBaseModifier: 1.75 + maxTargets: 5 + angle: 80 + - type: Wieldable + - type: IncreaseDamageOnWield + damage: + types: + Blunt: 5 + Structural: 42 + - type: Item + size: Normal + shape: + - 0,0,2,0 + - 1,1,1,2 + sprite: Objects/Weapons/Melee/pickaxe.rsi + storedRotation: -45 + - type: UseDelay \ No newline at end of file From 710eb899fb7438ea24420790c509e3e89a338123 Mon Sep 17 00:00:00 2001 From: BL02DL Date: Sun, 22 Sep 2024 18:56:00 +0700 Subject: [PATCH 20/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru-RU/_LostParadise/DiamondThings.ftl | 5 ++- .../Locale/ru-RU/_LostParadise/research.ftl | 6 +++ .../Locale/ru-RU/materials/materials.ftl | 2 - .../Locale/ru-RU/research/technologies.ftl | 1 - .../weapons/melee/breaching_hammer.ftl | 1 + .../Weapons/Melee/breaching_hammer.yml | 2 +- .../Prototypes/Reagents/Materials/ores.yml | 16 ------- .../Prototypes/Recipes/Lathes/electronics.yml | 10 ----- .../Prototypes/Research/civilianservices.yml | 39 ----------------- Resources/Prototypes/Research/disciplines.yml | 12 ------ .../Prototypes/Research/experimental.yml | 12 ------ Resources/Prototypes/Stacks/Materials/ore.yml | 8 ---- .../_LostParadise/Reagents/material.yml | 15 +++++++ .../Recipes/Lathes/diamondindustry.yml | 12 +++++- .../Research/CivilianServices.yml | 42 +++++++++++++++++++ .../Research/DiamondProduction.yml | 11 +++++ .../_LostParadise/Research/Experimental.yml | 11 +++++ .../Research/diamond_production.yml | 0 .../Prototypes/_LostParadise/Stacks/stack.yml | 7 ++++ 19 files changed, 109 insertions(+), 103 deletions(-) create mode 100644 Resources/Locale/ru-RU/_LostParadise/research.ftl create mode 100644 Resources/Prototypes/_LostParadise/Reagents/material.yml rename Resources/Prototypes/{ => _LostParadise}/Recipes/Lathes/diamondindustry.yml (59%) create mode 100644 Resources/Prototypes/_LostParadise/Research/CivilianServices.yml create mode 100644 Resources/Prototypes/_LostParadise/Research/DiamondProduction.yml create mode 100644 Resources/Prototypes/_LostParadise/Research/Experimental.yml rename Resources/Prototypes/{ => _LostParadise}/Research/diamond_production.yml (100%) create mode 100644 Resources/Prototypes/_LostParadise/Stacks/stack.yml diff --git a/Resources/Locale/ru-RU/_LostParadise/DiamondThings.ftl b/Resources/Locale/ru-RU/_LostParadise/DiamondThings.ftl index 9b818c6fd9..bf150c09a8 100644 --- a/Resources/Locale/ru-RU/_LostParadise/DiamondThings.ftl +++ b/Resources/Locale/ru-RU/_LostParadise/DiamondThings.ftl @@ -1,4 +1,7 @@ ent-LPPDiamondMiningDrill = алмазный шахтёрский бур .desc = Сильнейший шахтёрский бур способный в разы быстрее и сильнее пробивать камни. Имеет этикетку "BL CORP technology". ent-LPPDiamondPickaxe = алмазная кирка - .desc = Выточенный до совершенства, для забивания его в камни. \ No newline at end of file + .desc = Выточенный до совершенства, для забивания его в камни. +materials-diamond = алмазы +materials-raw-diamond = обработанный алмаз +lppresearch-technology-diamond-processing = Обработка алмазов \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_LostParadise/research.ftl b/Resources/Locale/ru-RU/_LostParadise/research.ftl new file mode 100644 index 0000000000..c2ab76af54 --- /dev/null +++ b/Resources/Locale/ru-RU/_LostParadise/research.ftl @@ -0,0 +1,6 @@ +lppresearch-discipline-diamond-production = Алмазное производство +lppresearch-technology-diamond-salvage-equipment = Продвинутое алмазное шахтёрское оборудование +lppresearch-technology-combat-utility = Боевая медицина +lppresearch-technology-basic-administration-of-drugs = Базовое введение препаратов +lppresearch-technology-basic-tracking = Базовое отслеживание +lppresearch-technology-advanced-tracking = Продвинутое отслеживание \ No newline at end of file diff --git a/Resources/Locale/ru-RU/materials/materials.ftl b/Resources/Locale/ru-RU/materials/materials.ftl index 1fa7ad4f26..81fcc63f8b 100644 --- a/Resources/Locale/ru-RU/materials/materials.ftl +++ b/Resources/Locale/ru-RU/materials/materials.ftl @@ -23,14 +23,12 @@ materials-meat = мясо materials-web = шёлк materials-bones = кости materials-coal = уголь -materials-diamond = алмазы materials-gunpowder = чёрный порох # Ores materials-raw-iron = руда железа materials-raw-quartz = руда кварца materials-raw-gold = руда золота materials-raw-silver = руда серебра -materials-raw-diamond = обработанный алмаз materials-raw-plasma = руда плазмы materials-raw-uranium = руда урана materials-raw-bananium = руда бананиума diff --git a/Resources/Locale/ru-RU/research/technologies.ftl b/Resources/Locale/ru-RU/research/technologies.ftl index 692fb9d275..9956c5e13e 100644 --- a/Resources/Locale/ru-RU/research/technologies.ftl +++ b/Resources/Locale/ru-RU/research/technologies.ftl @@ -55,7 +55,6 @@ research-technology-advanced-parts = Продвинутые компоненты research-technology-anomaly-harnessing = Применение ядер аномалий research-technology-grappling = Технология захвата research-technology-abnormal-artifact-manipulation = Переработка артефактов -lppresearch-technology-diamond-processing = Обработка алмазов research-technology-gravity-manipulation = Манипулирование гравитацией research-technology-quantum-leaping = Квантовые скачки research-technology-advanced-anomaly-research = Продвинутое изучение аномалий diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/breaching_hammer.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/breaching_hammer.ftl index d854aa1f9d..06a30c7b53 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/breaching_hammer.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/breaching_hammer.ftl @@ -1,2 +1,3 @@ ent-SecBreachingHammer = штурмовой молот .desc = Огромный, тяжелый молот для пробития различных дверей или окон. + .suffix = НЕ МАППИТЬ \ No newline at end of file diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/breaching_hammer.yml b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/breaching_hammer.yml index 49a0388620..1469f6ac4d 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/breaching_hammer.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/breaching_hammer.yml @@ -1,6 +1,6 @@ - type: entity name: breaching hammer - suffix: НЕ МАППИТЬ + suffix: DO NOT MAP parent: BaseItem id: SecBreachingHammer description: A large, heavy hammer with a long handle, used for breaking stones or other heavy material such as the skulls of violent criminals, also perfect for forcing your way trough airlocks. diff --git a/Resources/Prototypes/Reagents/Materials/ores.yml b/Resources/Prototypes/Reagents/Materials/ores.yml index 8265fc1b0b..18f1d9ebb3 100644 --- a/Resources/Prototypes/Reagents/Materials/ores.yml +++ b/Resources/Prototypes/Reagents/Materials/ores.yml @@ -6,22 +6,6 @@ icon: { sprite: Objects/Materials/ore.rsi, state: iron } price: 0.05 -- type: material - id: LPPRawDiamond - stackEntity: LPPProcessedDiamond1 - name: materials-raw-diamond - unit: materials-unit-chunk - icon: { sprite: Objects/Materials/ingots.rsi, state: diamond } - price: 0.15 - -- type: material - id: LPPDiamond - stackEntity: MaterialDiamond1 - name: materials-diamond - unit: materials-unit-chunk - icon: { sprite: Objects/Materials/materials.rsi, state: diamond } - price: 0.15 - - type: material id: RawQuartz stackEntity: SpaceQuartz1 diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 36319da1da..2b1cc7037e 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -357,16 +357,6 @@ Glass: 900 Gold: 100 -- type: latheRecipe - id: LPPDiamondCrusherMachineCircuitboard - result: LPPDiamondCrusherMachineCircuitboard - category: Circuitry - completetime: 4 - materials: - Steel: 100 - Glass: 900 - Gold: 100 - - type: latheRecipe id: AnomalyVesselCircuitboard result: AnomalyVesselCircuitboard diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index 6e22bf35ea..0a9f74b86d 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -1,32 +1,5 @@ # Tier 1 -- type: technology - id: LPPBasicAdministrationOfDrugs - name: lppresearch-technology-basic-administration-of-drugs - icon: - sprite: _LostParadise/Objects/Specific/Medical/hyposprayzero.rsi - state: hypo - discipline: CivilianServices - tier: 1 - cost: 2000 - recipeUnlocks: - - LPPHypospray - - Syringe - - Dropper - -- type: technology - id: LPPBasicTracking - name: lppresearch-technology-basic-tracking - icon: - sprite: Structures/Machines/computers.rsi - state: tracking_icon - discipline: CivilianServices - tier: 1 - cost: 4000 - recipeUnlocks: - - LPPCrewMonitoringServerMachineCircuitboard - - CrewMonitoringComputerCircuitboard - - type: technology id: Hydroponics name: research-technology-basic-hydroponics @@ -128,18 +101,6 @@ # Tier 2 -- type: technology - id: LPPAdvancedTracking - name: lppresearch-technology-advanced-tracking - icon: - sprite: Objects/Specific/Medical/handheldcrewmonitor.rsi - state: scanner - discipline: CivilianServices - tier: 2 - cost: 4000 - recipeUnlocks: - - HandheldCrewMonitor - - type: technology id: FauxAstroTiles name: research-technology-faux-astro-tiles diff --git a/Resources/Prototypes/Research/disciplines.yml b/Resources/Prototypes/Research/disciplines.yml index 84719966b4..baecd5f346 100644 --- a/Resources/Prototypes/Research/disciplines.yml +++ b/Resources/Prototypes/Research/disciplines.yml @@ -45,15 +45,3 @@ 1: 0 2: 0.75 3: 1.0 - -- type: techDiscipline - id: LPPDiamondProduction - name: research-discipline-diamond-production - color: "#96EEFF" - icon: - sprite: Interface/Misc/research_disciplines.rsi - state: diamond_production - tierPrerequisites: - 1: 0 - 2: 0.75 - 3: 1.0 \ No newline at end of file diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml index 551f8449ff..d46e1db144 100644 --- a/Resources/Prototypes/Research/experimental.yml +++ b/Resources/Prototypes/Research/experimental.yml @@ -97,18 +97,6 @@ - TraversalDistorterMachineCircuitboard - ArtifactCrusherMachineCircuitboard -- type: technology - id: LPPDiamondProcessing - name: lppresearch-technology-diamond-processing - icon: - sprite: _LostParadise/Structures/Machines/diamond_crusher.rsi - state: base - discipline: Experimental - tier: 2 - cost: 2500 - recipeUnlocks: - - LPPDiamondCrusherMachineCircuitboard - - type: technology id: AdvancedAnomalyResearch name: research-technology-advanced-anomaly-research diff --git a/Resources/Prototypes/Stacks/Materials/ore.yml b/Resources/Prototypes/Stacks/Materials/ore.yml index 72cf2fa3d8..2a95393c27 100644 --- a/Resources/Prototypes/Stacks/Materials/ore.yml +++ b/Resources/Prototypes/Stacks/Materials/ore.yml @@ -30,14 +30,6 @@ maxCount: 30 itemSize: 2 -- type: stack - id: LPPProcessedDiamond - name: обработанный алмаз - icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: diamond } - spawn: LPPProcessedDiamond1 - maxCount: 30 - itemSize: 2 - - type: stack id: SpaceQuartz name: space quartz diff --git a/Resources/Prototypes/_LostParadise/Reagents/material.yml b/Resources/Prototypes/_LostParadise/Reagents/material.yml new file mode 100644 index 0000000000..4dea6e5afa --- /dev/null +++ b/Resources/Prototypes/_LostParadise/Reagents/material.yml @@ -0,0 +1,15 @@ +- type: material + id: LPPRawDiamond + stackEntity: LPPProcessedDiamond1 + name: materials-raw-diamond + unit: materials-unit-chunk + icon: { sprite: Objects/Materials/ingots.rsi, state: diamond } + price: 0.15 + +- type: material + id: LPPDiamond + stackEntity: MaterialDiamond1 + name: materials-diamond + unit: materials-unit-chunk + icon: { sprite: Objects/Materials/materials.rsi, state: diamond } + price: 0.15 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Lathes/diamondindustry.yml b/Resources/Prototypes/_LostParadise/Recipes/Lathes/diamondindustry.yml similarity index 59% rename from Resources/Prototypes/Recipes/Lathes/diamondindustry.yml rename to Resources/Prototypes/_LostParadise/Recipes/Lathes/diamondindustry.yml index d209f23c8d..3507ccf234 100644 --- a/Resources/Prototypes/Recipes/Lathes/diamondindustry.yml +++ b/Resources/Prototypes/_LostParadise/Recipes/Lathes/diamondindustry.yml @@ -16,4 +16,14 @@ materials: Steel: 1000 Plastic: 500 - LPPDiamond: 2500 \ No newline at end of file + LPPDiamond: 2500 + +- type: latheRecipe + id: LPPDiamondCrusherMachineCircuitboard + result: LPPDiamondCrusherMachineCircuitboard + category: Circuitry + completetime: 4 + materials: + Steel: 100 + Glass: 900 + Gold: 100 \ No newline at end of file diff --git a/Resources/Prototypes/_LostParadise/Research/CivilianServices.yml b/Resources/Prototypes/_LostParadise/Research/CivilianServices.yml new file mode 100644 index 0000000000..b8dcea9cef --- /dev/null +++ b/Resources/Prototypes/_LostParadise/Research/CivilianServices.yml @@ -0,0 +1,42 @@ +# Tier 1 + +- type: technology + id: LPPBasicAdministrationOfDrugs + name: lppresearch-technology-basic-administration-of-drugs + icon: + sprite: _LostParadise/Objects/Specific/Medical/hyposprayzero.rsi + state: hypo + discipline: CivilianServices + tier: 1 + cost: 2000 + recipeUnlocks: + - LPPHypospray + - Syringe + - Dropper + +- type: technology + id: LPPBasicTracking + name: lppresearch-technology-basic-tracking + icon: + sprite: Structures/Machines/computers.rsi + state: tracking_icon + discipline: CivilianServices + tier: 1 + cost: 4000 + recipeUnlocks: + - LPPCrewMonitoringServerMachineCircuitboard + - CrewMonitoringComputerCircuitboard + +# Tier 2 + +- type: technology + id: LPPAdvancedTracking + name: lppresearch-technology-advanced-tracking + icon: + sprite: Objects/Specific/Medical/handheldcrewmonitor.rsi + state: scanner + discipline: CivilianServices + tier: 2 + cost: 4000 + recipeUnlocks: + - HandheldCrewMonitor \ No newline at end of file diff --git a/Resources/Prototypes/_LostParadise/Research/DiamondProduction.yml b/Resources/Prototypes/_LostParadise/Research/DiamondProduction.yml new file mode 100644 index 0000000000..d1cfbd3c10 --- /dev/null +++ b/Resources/Prototypes/_LostParadise/Research/DiamondProduction.yml @@ -0,0 +1,11 @@ +- type: techDiscipline + id: LPPDiamondProduction + name: lppresearch-discipline-diamond-production + color: "#96EEFF" + icon: + sprite: Interface/Misc/research_disciplines.rsi + state: diamond_production + tierPrerequisites: + 1: 0 + 2: 0.75 + 3: 1.0 \ No newline at end of file diff --git a/Resources/Prototypes/_LostParadise/Research/Experimental.yml b/Resources/Prototypes/_LostParadise/Research/Experimental.yml new file mode 100644 index 0000000000..9e0d1e4093 --- /dev/null +++ b/Resources/Prototypes/_LostParadise/Research/Experimental.yml @@ -0,0 +1,11 @@ +- type: technology + id: LPPDiamondProcessing + name: lppresearch-technology-diamond-processing + icon: + sprite: _LostParadise/Structures/Machines/diamond_crusher.rsi + state: base + discipline: Experimental + tier: 2 + cost: 2500 + recipeUnlocks: + - LPPDiamondCrusherMachineCircuitboard \ No newline at end of file diff --git a/Resources/Prototypes/Research/diamond_production.yml b/Resources/Prototypes/_LostParadise/Research/diamond_production.yml similarity index 100% rename from Resources/Prototypes/Research/diamond_production.yml rename to Resources/Prototypes/_LostParadise/Research/diamond_production.yml diff --git a/Resources/Prototypes/_LostParadise/Stacks/stack.yml b/Resources/Prototypes/_LostParadise/Stacks/stack.yml new file mode 100644 index 0000000000..be6e00d209 --- /dev/null +++ b/Resources/Prototypes/_LostParadise/Stacks/stack.yml @@ -0,0 +1,7 @@ +- type: stack + id: LPPProcessedDiamond + name: обработанный алмаз + icon: { sprite: /Textures/Objects/Materials/ore.rsi, state: diamond } + spawn: LPPProcessedDiamond1 + maxCount: 30 + itemSize: 2 \ No newline at end of file From 418759d78ece102a7f4373db636595bcb7688475 Mon Sep 17 00:00:00 2001 From: BL02DL Date: Sun, 22 Sep 2024 19:40:47 +0700 Subject: [PATCH 21/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Objects/Devices/Circuitboards/Machine/production.yml | 2 +- Resources/Prototypes/Entities/Structures/Machines/lathe.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index fd47a5ac52..ee1b0576b1 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -619,7 +619,7 @@ - type: ReverseEngineering # Delta difficulty: 3 recipes: - - CrewMonitoringServerMachineCircuitboard + - LPPCrewMonitoringServerMachineCircuitboard - type: entity id: CryoPodMachineCircuitboard diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 30917492ab..fdeff3cd52 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -506,6 +506,7 @@ - MassMediaCircuitboard - ReagentGrinderIndustrialMachineCircuitboard # Begin Nyano additions + - LPPCrewMonitoringServerMachineCircuitboard - ReverseEngineeringMachineCircuitboard - CrewMonitoringComputerCircuitboard - DoorElectronics From 6a458e4a552059aea5d5178497f41d61a51fa77f Mon Sep 17 00:00:00 2001 From: BL02DL Date: Sun, 22 Sep 2024 19:47:05 +0700 Subject: [PATCH 22/44] =?UTF-8?q?=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Prototypes/Entities/Structures/Walls/asteroid.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml index 37aa89c489..6ca2f44b16 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml @@ -9,7 +9,6 @@ description: A rocky asteroid. components: - type: Transform - noRot: true - type: IconSmooth key: walls mode: NoSprite From a031f9e3076dd236c3d70131323ebeb6814d5546 Mon Sep 17 00:00:00 2001 From: BL02DL Date: Sun, 22 Sep 2024 20:15:33 +0700 Subject: [PATCH 23/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Prototypes/Entities/Structures/Walls/asteroid.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml index 6ca2f44b16..4b2eef6df8 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml @@ -1637,6 +1637,14 @@ - type: Sprite layers: - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west - state: rock_gold - type: entity From 966e8ab51d07f9cd704bb0f9e04beb1bd7a93c2f Mon Sep 17 00:00:00 2001 From: Lost-Paradise-Bot <172407741+Lost-Paradise-Bot@users.noreply.github.com> Date: Sun, 22 Sep 2024 13:30:18 +0000 Subject: [PATCH 24/44] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20(#181)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Changelog/ChangelogLPP.yml | 49 ++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/Resources/Changelog/ChangelogLPP.yml b/Resources/Changelog/ChangelogLPP.yml index e1e5e490cc..6ab9cb3ffb 100644 --- a/Resources/Changelog/ChangelogLPP.yml +++ b/Resources/Changelog/ChangelogLPP.yml @@ -606,3 +606,52 @@ Entries: id: 59 time: '2024-09-21T16:25:24.0000000+00:00' url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/174 +- author: BL02DL + changes: + - type: Add + message: Добавлен дробитель алмазов! + - type: Add + message: Добавлена не обработанная жеода алмаза! + - type: Add + message: Добавлен обработанный алмаз! + - type: Add + message: Добавлен очищенный алмаз! + - type: Add + message: Добавлена новая дисциплина РнД "Алмазное производство"! + - type: Add + message: >- + Добавлена новая технология Т1 алмазного производства "Продвинутое + алмазное шахтёрское оборудование"! + - type: Add + message: Добавлены алмазный бур и алмазная кирка! + - type: Add + message: Добавлена новая технология Т2 сервис "Продвинутое отслеживание"! + - type: Add + message: Добавлена плата дробителя алмазов! + - type: Add + message: Добавлена новая технология Т2 экспериментальная "Обработка алмазов"! + - type: Remove + message: Убран дубликат штурмового молота с карт! + - type: Tweak + message: Изменена система добычи и копания руды! + - type: Tweak + message: Теперь некоторые Т3 технологии требуют очищенный алмаз! + - type: Tweak + message: >- + Портативный монитор датчиков теперь в технологии "Продвинутое + отслеживание"! + - type: Tweak + message: >- + Теперь технология "Базовое отслеживание" открывает платы монитора и + сервера датчиков! + - type: Tweak + message: >- + Теперь для изучения любой Т3 технологии нужно изучить полностью Т2 её + дисциплины! + - type: Fix + message: Исправлены характеристики бура и кирки! + - type: Fix + message: Пипетку больше нельзя сделать до изучения на протолате! + id: 60 + time: '2024-09-22T13:29:47.0000000+00:00' + url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/181 From a8d9442be17ec7fab7c42e0842b033c62e9fee43 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Sun, 22 Sep 2024 17:45:22 +0300 Subject: [PATCH 25/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Chemistry/ReagentEffectConditions/ReagentThreshold.cs | 2 +- Content.Shared/CCVar/CCVars.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs b/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs index 50be89581f..7c9d73286f 100644 --- a/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs +++ b/Content.Server/Chemistry/ReagentEffectConditions/ReagentThreshold.cs @@ -43,7 +43,7 @@ public override string GuidebookExplanation(IPrototypeManager prototype) prototype.TryIndex(Reagent, out reagentProto); return Loc.GetString("reagent-effect-condition-guidebook-reagent-threshold", - ("reagent", reagentProto?.LocalizedName ?? "this reagent"), + ("reagent", reagentProto?.LocalizedName ?? "этого реагента"), ("max", Max == FixedPoint2.MaxValue ? (float) int.MaxValue : Max.Float()), ("min", Min.Float())); } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 3a9eb53064..6f5043136c 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -2295,7 +2295,7 @@ public static readonly CVarDef /// Chance for a station goal to be sent ///

public static readonly CVarDef StationGoalsChance = - CVarDef.Create("game.station_goals_chance", 0.1f, CVar.SERVERONLY); + CVarDef.Create("game.station_goals_chance", 1f, CVar.SERVERONLY); #region CPR System From be89677b54d230cb5bddbe6320127c57b84b03e5 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Sun, 22 Sep 2024 18:22:46 +0300 Subject: [PATCH 26/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Locale/ru-RU/_LostParadise/research/research.ftl | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Locale/ru-RU/_LostParadise/research/research.ftl b/Resources/Locale/ru-RU/_LostParadise/research/research.ftl index 982bec9ac0..243d9ddb95 100644 --- a/Resources/Locale/ru-RU/_LostParadise/research/research.ftl +++ b/Resources/Locale/ru-RU/_LostParadise/research/research.ftl @@ -1,3 +1,4 @@ lppresearch-technology-combat-utility = Боевая медицина lppresearch-technology-basic-administration-of-drugs = Базовое введение препаратов lppresearch-technology-basic-tracking = Базовое отслеживание +lppresearch-technology-advanced-tracking = Продвинутое отслеживание From 3b0b9441840f648828525184b82d3a7026c5ff3b Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Sun, 22 Sep 2024 18:41:34 +0300 Subject: [PATCH 27/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_LostParadise/Researches/lpp.yml | 38 ------------------- 1 file changed, 38 deletions(-) delete mode 100644 Resources/Prototypes/_LostParadise/Researches/lpp.yml diff --git a/Resources/Prototypes/_LostParadise/Researches/lpp.yml b/Resources/Prototypes/_LostParadise/Researches/lpp.yml deleted file mode 100644 index ef951398ae..0000000000 --- a/Resources/Prototypes/_LostParadise/Researches/lpp.yml +++ /dev/null @@ -1,38 +0,0 @@ -- type: technology - id: LPPCombatUtilitys - name: lppresearch-technology-combat-utility - icon: - sprite: _LostParadise/Objects/Specific/Medical/CombatHypospray.rsi - state: hypo - discipline: Arsenal - tier: 2 - cost: 10000 - recipeUnlocks: - - LPPCombatDefibrillator - - LPPCombatHypospray - -- type: technology - id: LPPBasicAdministrationOfDrugs - name: lppresearch-technology-basic-administration-of-drugs - icon: - sprite: _LostParadise/Objects/Specific/Medical/hyposprayzero.rsi - state: hypo - discipline: CivilianServices - tier: 1 - cost: 2000 - recipeUnlocks: - - LPPHypospray - - Syringe - - Dropper - -- type: technology - id: LPPBasicTracking - name: lppresearch-technology-basic-tracking - icon: - sprite: Objects/Specific/Medical/handheldcrewmonitor.rsi - state: scanner - discipline: CivilianServices - tier: 1 - cost: 2000 - recipeUnlocks: - - HandheldCrewMonitor From a94b9169eb2c0be3b068683d5ce51db78b5b01f1 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Sun, 22 Sep 2024 18:42:28 +0300 Subject: [PATCH 28/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_LostParadise/Research/CivilianServices.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/_LostParadise/Research/CivilianServices.yml b/Resources/Prototypes/_LostParadise/Research/CivilianServices.yml index b8dcea9cef..d776d61453 100644 --- a/Resources/Prototypes/_LostParadise/Research/CivilianServices.yml +++ b/Resources/Prototypes/_LostParadise/Research/CivilianServices.yml @@ -39,4 +39,17 @@ tier: 2 cost: 4000 recipeUnlocks: - - HandheldCrewMonitor \ No newline at end of file + - HandheldCrewMonitor + +- type: technology + id: LPPCombatUtilitys + name: lppresearch-technology-combat-utility + icon: + sprite: _LostParadise/Objects/Specific/Medical/CombatHypospray.rsi + state: hypo + discipline: Arsenal + tier: 2 + cost: 10000 + recipeUnlocks: + - LPPCombatDefibrillator + - LPPCombatHypospray From b478db6b0676026a0f882adf47a4ab11ff5bdd32 Mon Sep 17 00:00:00 2001 From: SpicyDarkFox Date: Sun, 22 Sep 2024 23:37:57 +0300 Subject: [PATCH 29/44] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=B0=D0=BF=D1=81=D1=82=D1=80=D0=B8=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Locale/ru-RU/anomaly/anomaly.ftl | 4 +++ .../ru-RU/atmos/gas-recycler-system.ftl | 3 ++ .../Locale/ru-RU/atmos/portable-scrubber.ftl | 3 ++ .../components/seed-extractor-component.ftl | 2 ++ .../ru-RU/cargo/cargo-console-component.ftl | 5 ++- .../components/solution-heater-component.ftl | 1 + .../components/machine-part-component.ftl | 2 ++ .../components/microwave-component.ftl | 1 + .../components/reagent-grinder-component.ftl | 4 +++ Resources/Locale/ru-RU/machine/machine.ftl | 6 ++++ .../Locale/ru-RU/materials/materials.ftl | 3 ++ .../biomass-reclaimer-component.ftl | 3 ++ .../components/cloning-pod-component.ftl | 3 ++ .../components/medical-scanner-component.ftl | 2 ++ .../components/stasis-bed-component.ftl | 1 + .../nutrition/components/fat-extractor.ftl | 2 ++ .../Locale/ru-RU/psionics/psionic-powers.ftl | 35 +++++++++++++++++++ Resources/Locale/ru-RU/shuttles/thruster.ftl | 2 ++ .../components/emitter-component.ftl | 6 ++++ Resources/Locale/ru-RU/store/sales.ftl | 2 ++ .../xenoarchaeology/traversal-distorter.ftl | 1 + 21 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 Resources/Locale/ru-RU/chemistry/components/solution-heater-component.ftl create mode 100644 Resources/Locale/ru-RU/construction/components/machine-part-component.ftl create mode 100644 Resources/Locale/ru-RU/medical/components/stasis-bed-component.ftl create mode 100644 Resources/Locale/ru-RU/store/sales.ftl diff --git a/Resources/Locale/ru-RU/anomaly/anomaly.ftl b/Resources/Locale/ru-RU/anomaly/anomaly.ftl index 5e82300d31..bb22186db9 100644 --- a/Resources/Locale/ru-RU/anomaly/anomaly.ftl +++ b/Resources/Locale/ru-RU/anomaly/anomaly.ftl @@ -1,12 +1,16 @@ anomaly-component-contact-damage = Аномалия сдирает с вас кожу! + anomaly-vessel-component-anomaly-assigned = Аномалия присвоена сосуду. anomaly-vessel-component-not-assigned = Этому сосуду не присвоена ни одна аномалия. Попробуйте использовать на нём сканер. anomaly-vessel-component-assigned = Этому сосуду уже присвоена аномалия. +anomaly-vessel-component-upgrade-output = точка выхода + anomaly-particles-delta = Дельта-частицы anomaly-particles-epsilon = Эпсилон-частицы anomaly-particles-zeta = Зета-частицы anomaly-particles-omega = Омега-частицы anomaly-particles-sigma = Сигма-частицы + anomaly-scanner-component-scan-complete = Сканирование завершено! anomaly-scanner-ui-title = сканер аномалий anomaly-scanner-no-anomaly = Нет просканированной аномалии. diff --git a/Resources/Locale/ru-RU/atmos/gas-recycler-system.ftl b/Resources/Locale/ru-RU/atmos/gas-recycler-system.ftl index 88d53389ac..ec734cb757 100644 --- a/Resources/Locale/ru-RU/atmos/gas-recycler-system.ftl +++ b/Resources/Locale/ru-RU/atmos/gas-recycler-system.ftl @@ -1,3 +1,6 @@ gas-recycler-reacting = Он [color=green]преобразовывает[/color] газы-отходы. gas-recycler-low-pressure = Входное давление [color=darkred]слишком низкое[/color]. gas-recycler-low-temperature = Входная температура [color=darkred]слишком низкая[/color]. + +gas-recycler-upgrade-min-temp = Минимальная температура +gas-recycler-upgrade-min-pressure = Минимальное давление diff --git a/Resources/Locale/ru-RU/atmos/portable-scrubber.ftl b/Resources/Locale/ru-RU/atmos/portable-scrubber.ftl index d76268b3a1..f52c534d04 100644 --- a/Resources/Locale/ru-RU/atmos/portable-scrubber.ftl +++ b/Resources/Locale/ru-RU/atmos/portable-scrubber.ftl @@ -1 +1,4 @@ portable-scrubber-fill-level = Примерно [color=yellow]{ $percent }%[/color] от максимального внутреннего давления. + +portable-scrubber-component-upgrade-max-pressure = Максимальное давление +portable-scrubber-component-upgrade-transfer-rate = Скорость передачи diff --git a/Resources/Locale/ru-RU/botany/components/seed-extractor-component.ftl b/Resources/Locale/ru-RU/botany/components/seed-extractor-component.ftl index 9e0b6c61a4..b0aa3e8b49 100644 --- a/Resources/Locale/ru-RU/botany/components/seed-extractor-component.ftl +++ b/Resources/Locale/ru-RU/botany/components/seed-extractor-component.ftl @@ -2,3 +2,5 @@ seed-extractor-component-interact-message = Вы извлекаете немного семян из { $name }. seed-extractor-component-no-seeds = { CAPITALIZE($name) } не имеет семян! + +seed-extractor-component-upgrade-seed-yield = Урожайность diff --git a/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl b/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl index 34759621ce..957c72c05d 100644 --- a/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl +++ b/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl @@ -1,5 +1,4 @@ ## UI - cargo-console-menu-title = Консоль заказа грузов cargo-console-menu-account-name-label = Имя аккаунта:{ " " } cargo-console-menu-account-name-none-text = Нет @@ -21,6 +20,7 @@ cargo-console-menu-populate-categories-all-text = Все cargo-console-menu-populate-orders-cargo-order-row-product-name-text = { $productName } (x{ $orderAmount }) от { $orderRequester } cargo-console-menu-cargo-order-row-approve-button = Одобрить cargo-console-menu-cargo-order-row-cancel-button = Отменить + # Orders cargo-console-order-not-allowed = Доступ запрещён cargo-console-station-not-found = Нет доступной станции @@ -38,9 +38,12 @@ cargo-console-paper-print-text = Запросил: { $requester } Причина: { $reason } Одобрил: { $approver } + # Cargo shuttle console cargo-shuttle-console-menu-title = Консоль вызова грузового шаттла cargo-shuttle-console-station-unknown = Неизвестно cargo-shuttle-console-shuttle-not-found = Не найден cargo-no-shuttle = Грузовой шаттл не найден! cargo-shuttle-console-organics = На шаттле обнаружены органические формы жизни + +cargo-telepad-delay-upgrade = Задержка телепортации diff --git a/Resources/Locale/ru-RU/chemistry/components/solution-heater-component.ftl b/Resources/Locale/ru-RU/chemistry/components/solution-heater-component.ftl new file mode 100644 index 0000000000..94b2e9b468 --- /dev/null +++ b/Resources/Locale/ru-RU/chemistry/components/solution-heater-component.ftl @@ -0,0 +1 @@ +solution-heater-upgrade-heat = Скорость нагрева diff --git a/Resources/Locale/ru-RU/construction/components/machine-part-component.ftl b/Resources/Locale/ru-RU/construction/components/machine-part-component.ftl new file mode 100644 index 0000000000..beb659e13a --- /dev/null +++ b/Resources/Locale/ru-RU/construction/components/machine-part-component.ftl @@ -0,0 +1,2 @@ +machine-part-component-on-examine-rating-text = [color=white]Уровень:[/color] [color=cyan]{$rating}[/color] +machine-part-component-on-examine-type-text = [color=white]Тип:[/color] [color=cyan]{$type}[/color] diff --git a/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl b/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl index 303f71ed2e..ac567a1ca6 100644 --- a/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl +++ b/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl @@ -9,6 +9,7 @@ microwave-component-suicide-multi-head-others-message = { $victim } пытает microwave-component-suicide-others-message = { $victim } пытается зажарить свою голову! microwave-component-suicide-multi-head-message = Вы зажариваете свои головы! microwave-component-suicide-message = Вы зажариваете свою голову! +microwave-component-upgrade-cook-time = Время готовки! microwave-component-interact-full = Она заполнена. microwave-component-interact-item-too-big = { CAPITALIZE($item) } не может поместиться в микроволновой печи из-за размера! diff --git a/Resources/Locale/ru-RU/kitchen/components/reagent-grinder-component.ftl b/Resources/Locale/ru-RU/kitchen/components/reagent-grinder-component.ftl index 28fe0878c5..82441316c4 100644 --- a/Resources/Locale/ru-RU/kitchen/components/reagent-grinder-component.ftl +++ b/Resources/Locale/ru-RU/kitchen/components/reagent-grinder-component.ftl @@ -3,6 +3,10 @@ reagent-grinder-bound-user-interface-instant-button = МГНОВЕННО reagent-grinder-bound-user-interface-cook-time-label = ВРЕМЯ: reagent-grinder-component-cannot-put-entity-message = Вы не можете поместить это в измельчитель реагентов! + +reagent-grinder-component-upgrade-work-time = Время работы +reagent-grinder-component-upgrade-storage = Объем хранилища + grinder-menu-title = Универсальный Измельчитель 3000 grinder-menu-grind-button = Измельчить grinder-menu-juice-button = Выжать diff --git a/Resources/Locale/ru-RU/machine/machine.ftl b/Resources/Locale/ru-RU/machine/machine.ftl index d597123490..422c5aab7e 100644 --- a/Resources/Locale/ru-RU/machine/machine.ftl +++ b/Resources/Locale/ru-RU/machine/machine.ftl @@ -9,6 +9,12 @@ machine-upgrade-not-upgraded = Параметр [color=yellow]{ $upgraded }[/col machine-part-name-capacitor = Конденсатор machine-part-name-manipulator = Манипулятор machine-part-name-matter-bin = Ёмкость материи + +upgrade-power-draw = Потребление энергии +upgrade-max-charge = Максимальный заряд +upgrade-power-supply = Питание +upgrade-power-supply-ramping = Скорость наращивания мощности + machine-part-name-power-cell = Батарея two-way-lever-left = сдвинуть рычаг влево two-way-lever-right = сдвинуть рычаг вправо diff --git a/Resources/Locale/ru-RU/materials/materials.ftl b/Resources/Locale/ru-RU/materials/materials.ftl index 8d555bc5c1..750ff75e10 100644 --- a/Resources/Locale/ru-RU/materials/materials.ftl +++ b/Resources/Locale/ru-RU/materials/materials.ftl @@ -35,3 +35,6 @@ materials-raw-uranium = руда урана materials-raw-bananium = руда бананиума materials-raw-salt = каменная соль materials-raw-diamond = необработанные алмазы + +# Material Reclaimer +material-reclaimer-upgrade-process-rate = Скорость обработки diff --git a/Resources/Locale/ru-RU/medical/components/biomass-reclaimer-component.ftl b/Resources/Locale/ru-RU/medical/components/biomass-reclaimer-component.ftl index 177bd8fda5..7c6df729fe 100644 --- a/Resources/Locale/ru-RU/medical/components/biomass-reclaimer-component.ftl +++ b/Resources/Locale/ru-RU/medical/components/biomass-reclaimer-component.ftl @@ -1 +1,4 @@ biomass-reclaimer-suicide-others = { CAPITALIZE($victim) } запрыгивает в переработчик биомассы! + +biomass-reclaimer-component-upgrade-speed = Скорость +biomass-reclaimer-component-upgrade-biomass-yield = Урожайность биомассы diff --git a/Resources/Locale/ru-RU/medical/components/cloning-pod-component.ftl b/Resources/Locale/ru-RU/medical/components/cloning-pod-component.ftl index b6e6e81a0d..24e26b4199 100644 --- a/Resources/Locale/ru-RU/medical/components/cloning-pod-component.ftl +++ b/Resources/Locale/ru-RU/medical/components/cloning-pod-component.ftl @@ -1,2 +1,5 @@ cloning-pod-biomass = Содержит [color=red]{ $number }[/color] единиц биомассы. + +cloning-pod-component-upgrade-speed = Скорость клонирования +cloning-pod-component-upgrade-biomass-requirement = Необходимо биомассы cloning-pod-component-upgrade-emag-requirement = Карточка замыкает что-то внутри капсулы клонирования. diff --git a/Resources/Locale/ru-RU/medical/components/medical-scanner-component.ftl b/Resources/Locale/ru-RU/medical/components/medical-scanner-component.ftl index 9b69dd637e..9858dd2948 100644 --- a/Resources/Locale/ru-RU/medical/components/medical-scanner-component.ftl +++ b/Resources/Locale/ru-RU/medical/components/medical-scanner-component.ftl @@ -2,3 +2,5 @@ medical-scanner-verb-enter = Залезть medical-scanner-verb-noun-occupant = пациента + +medical-scanner-upgrade-cloning = Шанс неудачного клонирования diff --git a/Resources/Locale/ru-RU/medical/components/stasis-bed-component.ftl b/Resources/Locale/ru-RU/medical/components/stasis-bed-component.ftl new file mode 100644 index 0000000000..24e043f5a7 --- /dev/null +++ b/Resources/Locale/ru-RU/medical/components/stasis-bed-component.ftl @@ -0,0 +1 @@ +stasis-bed-component-upgrade-stasis = Эффект стазиса diff --git a/Resources/Locale/ru-RU/nutrition/components/fat-extractor.ftl b/Resources/Locale/ru-RU/nutrition/components/fat-extractor.ftl index a0abe051fc..29d4f28863 100644 --- a/Resources/Locale/ru-RU/nutrition/components/fat-extractor.ftl +++ b/Resources/Locale/ru-RU/nutrition/components/fat-extractor.ftl @@ -1,3 +1,5 @@ +fat-extractor-component-rate = Скорость извлечения + fat-extractor-fact-1 = Жиры - это триглицериды, состоящие из комбинации различных структурных элементов: глицерина и жирных кислот. fat-extractor-fact-2 = Взрослым рекомендуется получать 20-35% потребляемой энергии из жиров. fat-extractor-fact-3 = Избыточный вес или ожирение повышают риск развития хронических заболеваний, таких как сердечно-сосудистые патологии, метаболический синдром, диабет 2 типа и некоторые виды рака. diff --git a/Resources/Locale/ru-RU/psionics/psionic-powers.ftl b/Resources/Locale/ru-RU/psionics/psionic-powers.ftl index 8b297e5104..c24eecf003 100644 --- a/Resources/Locale/ru-RU/psionics/psionic-powers.ftl +++ b/Resources/Locale/ru-RU/psionics/psionic-powers.ftl @@ -1,16 +1,21 @@ generic-power-initialization-feedback = Я проснулся. +arleady-casting = Я не могу использовать более одной силы одновременно. + # Dispel dispel-power-description = Рассеивайте вызванные сущности, такие как фамильяры или силовые стены. dispel-power-initialization-feedback = Силы судьбы для меня ничто. Я чувствую, что могу дотянуться до окружающих меня нитей и навязать реальность другим. dispel-power-metapsionic-feedback = { CAPITALIZE($entity) } это могучий камень, противостоящий течению судьбы. + # Mass Sleep mass-sleep-power-description = Усыпите сущностей рядом с собой. mass-sleep-initialization-feedback = Обратившись к умам окружающих меня людей, я нашел слова, которые могут отправить других в царство сна. mass-sleep-metapsionic-feedback = { CAPITALIZE($entity) } несет на себе неизгладимую печать похитителя снов. + # Mind Swap mind-swap-power-description = Поменяйтесь мыслями с целью. Любой из них может измениться обратно через 20 секунд. mind-swap-power-initialization-feedback = Я чувствую, как узы души и тела распадаются по моей прихоти, мой сосуд может быть заменен на другой. mind-swap-power-metapsionic-feedback = { CAPITALIZE($entity) } им не хватает прочной связи со своим сосудом, как будто их связь с духом податлива. + # Noospheric Zap noospheric-zap-power-description = Шокирует сознание жертвы, оставляя ее ошеломленной и заикающейся. noospheric-zap-power-initialization-feedback = @@ -20,6 +25,7 @@ noospheric-zap-power-initialization-feedback = noospheric-zap-power-metapsionic-feedback = Я заглядываю в сердце { CAPTITALIZE($entity) }, и там, среди плоти, кружится микроскопическая частичка существа, состоящего из чистой энергии. Оно злобно смотрит на меня, его серебристые глаза полны ненависти к людям с углеродной плотью. + # Pyrokinesis pyrokinesis-power-description = Поджечь существо pyrokinesis-power-initialization-feedback = @@ -29,16 +35,41 @@ pyrokinesis-power-initialization-feedback = муха манит меня предложить свои услуги. Когда я протягиваю ему руку, чтобы пожать ее, видение исчезает, и я обнаруживаю, что стою в первозданном материуме. Теперь я знаю Его имя, это Тайна Огня. Просто думая об этом, я чувствую, как жар этого места распространяется по моим рукам. pyrokinesis-power-metapsionic-feedback = Тайна огня скрыта внутри { CAPITALIZE($entity) } + # Metapsionic Pulse metapsionic-power-description = Отправьте ментальный импульс на расстояние, что бы узнать еслить ли псионики поблизости metapsionic-power-initialization-feedback = Мир вокруг меня просыпается в свете сновидений. На какое-то трансцендентное мгновение я вижу все, что есть, и все, что когда-либо будет. Я пошатываюсь, губы пересохли не от желания выпить воды, а от желания испить чашу знаний. Я. Должен. Найти. Это. metapsionic-power-metapsionic-feedback = { CAPITALIZE($entity) } взирает на тебя. + # Psionic Regeneration psionic-regeneration-power-description = Доведите свой метоболизм до предела что бы ускорить регенерацию. psionic-regeneration-power-initialization-feedback = Я смотрю внутрь себя и нахожу источник жизни. psionic-regeneration-power-metapsionic-feedback = { CAPITALIZE($entity) } обладает непреодолимой волей к жизни + +# Healing Word +action-name-healing-word = Слово Исцеления +action-description-healing-word = Произнесите Меньший Секрет Жизни и восстановите здоровье другого. +healing-word-power-description = Произнесите Меньший Секрет Жизни и восстановите здоровье другого. +healing-word-power-initialization-feedback = + В начале времен было произнесено слово, которое принесло жизнь в Сферы. + Хотя это тяжело для моего разума, этот Секрет теперь известен мне. + Мне нужно лишь произнести его. +healing-word-power-metapsionic-feedback = {CAPITALIZE($entity)} хранит Меньший Секрет Жизни. +healing-word-begin = {CAPITALIZE($entity)} произносит слово, которое приносит радость и боль тем, кто его слышит. + +# Revivify +action-name-revivify = Дыхание Жизни +action-description-revivify = Произнесите Большой Секрет Жизни и верните другого к жизни. +revivify-power-description = Произнесите Большой Секрет Жизни и верните другого к жизни. +revivify-power-initialization-feedback = + На мгновение моя душа путешествует сквозь время и пространство к началу всего, и там я слышу это. + Секрет Жизни во всей его полноте. Я чувствую, как вся моя сущность выгорает изнутри, просто зная это. + Сила течет через меня, как могучая река, прося высвободиться простым произнесением слова. +revivify-power-metapsionic-feedback = {CAPITALIZE($entity)} хранит Большой Секрет Жизни. +revivify-word-begin = {CAPITALIZE($entity)} произносит слово такой божественной силы, что те, кто его слышит, плачут от радости. + # Telegnosis telegnosis-power-description = Создайте проекцию что бы удалённо осматривать местность. telegnosis-power-initialization-feedback = @@ -48,6 +79,7 @@ telegnosis-power-initialization-feedback = дракон с крыльями павлина, срывается вниз и пожирает мою плоть одним укусом. Через мгновение я просыпаюсь в мире, полностью лишенном истинных, настоящих цветов. telegnosis-power-metapsionic-feedback = Душа { CAPITALIZE($entity) } путешествует по мостам, состоящим из света снов + # Psionic Invisibility psionic-invisibility-power-description = Станьте невидимым для всех существ, способным стать псиоником. Борги, животные и так далее не подвержены этому воздействию. psionic-invisibility-power-initialization-feedback = @@ -55,17 +87,20 @@ psionic-invisibility-power-initialization-feedback = Размышляя об этом, я прихожу к пониманию, что само зрение - это иллюзия. Я отвергаю ее, я отрицаю, что свет реален. Когда я просыпаюсь, я уже не вижу даже себя. psionic-invisibility-power-metapsionic-feedback = { CAPITALIZE($entity) } стремится скрыться от твоего взгляда + # Xenoglossy xenoglossy-power-description = Вы понимаете все языки. xenoglossy-power-initialization-feedback = Я сопереживаю всему творению, чтобы понять его и быть понятым. Барьер между мыслями и выражениями для меня непроницаем. psionic-language-power-metapsionic-feedback = Ноöсфера свободно проходит через { CAPITALIZE($entity) }, который, кажется, переваривает ее и невозмутимо выпускает обратно. + # Psychognomy psychognomy-power-description = У вас есть некоторое смутное представление о форме источника телепатических сообщений. psychognomy-power-initialization-feedback = Я пробил завесу и знаю, что я не одинок. Что еще более важно, сделанное мной отверстие, кажется, неопвсе еще проницаемо наределенный срок. Когда энергия проходит через отверстия в ноосфере, я получаю слабое представление о материальном происхождении. + # Telepathy telepathy-power-description = Вы способны как отправлять, так и получать телепатические сообщения. telepathy-power-initialization-feedback = diff --git a/Resources/Locale/ru-RU/shuttles/thruster.ftl b/Resources/Locale/ru-RU/shuttles/thruster.ftl index 0bab26ca13..f58a55a395 100644 --- a/Resources/Locale/ru-RU/shuttles/thruster.ftl +++ b/Resources/Locale/ru-RU/shuttles/thruster.ftl @@ -3,3 +3,5 @@ thruster-comp-disabled = Двигатель [color=red]выключён[/color]. thruster-comp-nozzle-direction = Сопло направлено на [color=yellow]{ $direction }[/color]. thruster-comp-nozzle-exposed = Сопло [color=green]расправлено[/color] в космос. thruster-comp-nozzle-not-exposed = Сопло [color=red]не расправлено[/color] в космос. + +thruster-comp-upgrade-thrust = Сила тяги diff --git a/Resources/Locale/ru-RU/singularity/components/emitter-component.ftl b/Resources/Locale/ru-RU/singularity/components/emitter-component.ftl index 89ee6d16db..dc05a91c4f 100644 --- a/Resources/Locale/ru-RU/singularity/components/emitter-component.ftl +++ b/Resources/Locale/ru-RU/singularity/components/emitter-component.ftl @@ -2,11 +2,17 @@ # Shows when attempting to turn the emitter on or off without proper access comp-emitter-access-locked = Доступ к { $target } заблокирован! + # Shows when turning the emitter on/off comp-emitter-turned-on = { $target } включается. comp-emitter-turned-off = { $target } отключается. + # Shows if the user attempts to activate the emitter while it's un-anchored. comp-emitter-not-anchored = { $target } не закреплён! + +# Upgrades +emitter-component-upgrade-fire-rate = Скорострельность + # Upgrades emitter-component-current-type = Установленный тип: { $type }. emitter-component-type-set = Установить тип: { $type } diff --git a/Resources/Locale/ru-RU/store/sales.ftl b/Resources/Locale/ru-RU/store/sales.ftl new file mode 100644 index 0000000000..1bb2b31ead --- /dev/null +++ b/Resources/Locale/ru-RU/store/sales.ftl @@ -0,0 +1,2 @@ +store-sales-amount = [СКИДКА] { $amount }%! +store-sales-over = [Продажа окончена] diff --git a/Resources/Locale/ru-RU/xenoarchaeology/traversal-distorter.ftl b/Resources/Locale/ru-RU/xenoarchaeology/traversal-distorter.ftl index cd76267f30..cf37621a3e 100644 --- a/Resources/Locale/ru-RU/xenoarchaeology/traversal-distorter.ftl +++ b/Resources/Locale/ru-RU/xenoarchaeology/traversal-distorter.ftl @@ -6,3 +6,4 @@ traversal-distorter-set-up = Искажение обхода узлов наст traversal-distorter-set-down = Искажение обхода узлов настроено "в глубину", к более опасным узлам traversal-distorter-desc-up = Активация артефакта с большей вероятностью заставит его продвинуться к поверхности, к менее опасным узлам. traversal-distorter-desc-down = Активация артефакта с большей вероятностью заставит его продвинуться в глубину, к более опасным узлам. +traversal-distorter-upgrade-bias = Эффективность смещения From 423481dff1d774a2d1751eae9303975c4c18d696 Mon Sep 17 00:00:00 2001 From: Evgencheg <73418250+Evgencheg@users.noreply.github.com> Date: Mon, 23 Sep 2024 02:24:38 +0300 Subject: [PATCH 30/44] Update animals.yml --- Resources/Prototypes/Entities/Mobs/NPCs/animals.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 536c9156f6..700eb2f557 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -2067,7 +2067,7 @@ Heat : 0.2 #per second, scales with temperature & other constants - type: RandomBark barks: - - Wank + - Пипипи.. barkMultiplier: 0.6 - type: entity From 10fa45046d7b46799cc099ab6de79c3641f1e2f3 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Mon, 23 Sep 2024 15:52:51 +0300 Subject: [PATCH 31/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru-RU/administration/ui/admin-notes.ftl | 3 +- Resources/Locale/ru-RU/anomaly/anomaly.ftl | 3 - .../ru-RU/atmos/atmos-alerts-console.ftl | 22 +++--- .../ru-RU/atmos/gas-recycler-system.ftl | 1 - .../Locale/ru-RU/atmos/portable-scrubber.ftl | 1 - .../components/seed-extractor-component.ftl | 1 - .../ru-RU/cargo/cargo-console-component.ftl | 4 +- .../components/machine-part-component.ftl | 4 +- .../components/reagent-grinder-component.ftl | 2 - Resources/Locale/ru-RU/language/commands.ftl | 6 -- Resources/Locale/ru-RU/language/languages.ftl | 46 +++---------- .../Locale/ru-RU/loadouts/itemgroups.ftl | 9 --- Resources/Locale/ru-RU/machine/machine.ftl | 2 - .../Locale/ru-RU/materials/materials.ftl | 1 - .../biomass-reclaimer-component.ftl | 1 - .../components/cloning-pod-component.ftl | 1 - .../components/medical-scanner-component.ftl | 1 - .../nutrition/components/fat-extractor.ftl | 1 - .../Locale/ru-RU/psionics/psionic-powers.ftl | 22 ++---- Resources/Locale/ru-RU/shuttles/thruster.ftl | 1 - .../components/emitter-component.ftl | 4 -- .../deltav/body/organs/vulpkanin.ftl | 1 - .../fills/backpacks/startergear/backpack.ftl | 1 - .../fills/backpacks/startergear/duffelbag.ftl | 1 - .../fills/backpacks/startergear/satchel.ftl | 1 - .../deltav/catalog/fills/crates/armory.ftl | 2 - .../deltav/catalog/fills/crates/food.ftl | 2 - .../deltav/catalog/fills/crates/npc.ftl | 1 - .../deltav/catalog/fills/crates/vending.ftl | 1 - .../clothing/head/hardsuit-helmets.ftl | 0 .../clothing/outerclothing/hardsuits.ftl | 0 .../deltav/entities/mobs/player/vulpkanin.ftl | 1 - .../objects/consumable/drinks/drinks.ftl | 2 - .../entities/objects/misc/rubber_stamp.ftl | 1 - .../structures/storage/tanks/tanks.ftl | 2 - .../clothing/head/hardsuit-helmets.ftl | 5 ++ .../clothing/outerclothing/hardsuits.ftl | 5 ++ .../clothing/outerclothing/softsuits.ftl | 1 - .../entities/markers/environmental.ftl | 23 +++++++ .../entities/objects/misc/rubber_stamp.ftl | 1 - .../ammunition/cartridges/base_cartridge.ftl | 1 - .../entities/structures/machines/nuke.ftl | 2 - .../catalog/fills/crates/epistemics.ftl | 1 - .../catalog/fills/crates/syndicate.ftl | 1 - .../entities/mobs/npcs/mutants.ftl | 1 - .../objects/consumable/drinks/drinks.ftl | 1 - .../consumable/drinks/drinks_bottles.ftl | 1 - .../weapons/melee/breaching_hammer.ftl | 2 +- .../entities/objects/weapons/melee/knives.ftl | 1 - .../machines/metempsychoticMachine.ftl | 1 - .../entities/structures/walls/walls.ftl | 1 - Resources/Locale/ru-RU/traits/traits.ftl | 67 +------------------ 52 files changed, 62 insertions(+), 205 deletions(-) delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/body/organs/vulpkanin.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/armory.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/food.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/npc.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/vending.ftl rename Resources/Locale/ru-RU/ss14-ru/prototypes/{nyanotrasen => deltav}/entities/clothing/head/hardsuit-helmets.ftl (100%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/{nyanotrasen => deltav}/entities/clothing/outerclothing/hardsuits.ftl (100%) delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/mobs/player/vulpkanin.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/structures/storage/tanks/tanks.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/hardsuit-helmets.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/outerclothing/hardsuits.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/environmental.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/guns/ammunition/cartridges/base_cartridge.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/machines/nuke.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/catalog/fills/crates/epistemics.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/catalog/fills/crates/syndicate.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/knives.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/structures/machines/metempsychoticMachine.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl b/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl index 501bfb02be..2fbd8f27b8 100644 --- a/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl +++ b/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl @@ -23,7 +23,8 @@ admin-notes-hide = Скрыть admin-notes-delete-confirm = Вы уверены? admin-notes-edited = Последнее изменение от { $author } в { $date } admin-notes-unbanned = Разбанил { $admin } в { $date } -admin-notes-message-desc = [color=white]Вы получили { $count -> +admin-notes-message-desc = + [color=white]Вы получили { $count -> [1] новое сообщение от администрации *[other] новых сообщений от администрации } с момента последней игры на сервере.[/color] diff --git a/Resources/Locale/ru-RU/anomaly/anomaly.ftl b/Resources/Locale/ru-RU/anomaly/anomaly.ftl index bb22186db9..318c45f0f6 100644 --- a/Resources/Locale/ru-RU/anomaly/anomaly.ftl +++ b/Resources/Locale/ru-RU/anomaly/anomaly.ftl @@ -1,16 +1,13 @@ anomaly-component-contact-damage = Аномалия сдирает с вас кожу! - anomaly-vessel-component-anomaly-assigned = Аномалия присвоена сосуду. anomaly-vessel-component-not-assigned = Этому сосуду не присвоена ни одна аномалия. Попробуйте использовать на нём сканер. anomaly-vessel-component-assigned = Этому сосуду уже присвоена аномалия. anomaly-vessel-component-upgrade-output = точка выхода - anomaly-particles-delta = Дельта-частицы anomaly-particles-epsilon = Эпсилон-частицы anomaly-particles-zeta = Зета-частицы anomaly-particles-omega = Омега-частицы anomaly-particles-sigma = Сигма-частицы - anomaly-scanner-component-scan-complete = Сканирование завершено! anomaly-scanner-ui-title = сканер аномалий anomaly-scanner-no-anomaly = Нет просканированной аномалии. diff --git a/Resources/Locale/ru-RU/atmos/atmos-alerts-console.ftl b/Resources/Locale/ru-RU/atmos/atmos-alerts-console.ftl index 01cb6f8aeb..8342c94eeb 100644 --- a/Resources/Locale/ru-RU/atmos/atmos-alerts-console.ftl +++ b/Resources/Locale/ru-RU/atmos/atmos-alerts-console.ftl @@ -1,35 +1,29 @@ atmos-alerts-window-title = Компьютер Атмосферных Оповещений -atmos-alerts-window-station-name = [color=white][font size=14]{$stationName}[/font][/color] +atmos-alerts-window-station-name = [color=white][font size=14]{ $stationName }[/font][/color] atmos-alerts-window-unknown-location = Неизвестное местоположение - atmos-alerts-window-tab-no-alerts = Оповещения -atmos-alerts-window-tab-alerts = Оповещений: ({$value}) +atmos-alerts-window-tab-alerts = Оповещений: ({ $value }) atmos-alerts-window-tab-air-alarms = Сигналы воздушной тревоги atmos-alerts-window-tab-fire-alarms = Пожарные сигналы - -atmos-alerts-window-alarm-label = {CAPITALIZE($name)} ({$address}) +atmos-alerts-window-alarm-label = { CAPITALIZE($name) } ({ $address }) atmos-alerts-window-temperature-label = Температура -atmos-alerts-window-temperature-value = {$valueInC} °C ({$valueInK} K) +atmos-alerts-window-temperature-value = { $valueInC } °C ({ $valueInK } K) atmos-alerts-window-pressure-label = Давление -atmos-alerts-window-pressure-value = {$value} кПа +atmos-alerts-window-pressure-value = { $value } кПа atmos-alerts-window-oxygenation-label = Уровень кислорода -atmos-alerts-window-oxygenation-value = {$value}% +atmos-alerts-window-oxygenation-value = { $value }% atmos-alerts-window-other-gases-label = Присутствующие газы -atmos-alerts-window-other-gases-value = {$shorthand} ({$value}%) +atmos-alerts-window-other-gases-value = { $shorthand } ({ $value }%) atmos-alerts-window-other-gases-value-nil = Нет atmos-alerts-window-silence-alerts = Отключить оповещения от этого датчика - atmos-alerts-window-label-alert-types = Уровни тревоги: atmos-alerts-window-normal-state = Нормально atmos-alerts-window-warning-state = Предупреждение atmos-alerts-window-danger-state = Опасность! atmos-alerts-window-invalid-state = Неактивно - -atmos-alerts-window-no-active-alerts = [font size=16][color=white]Нет активных оповещений -[/color] [color={$color}]ситуация нормальная[/color][/font] +atmos-alerts-window-no-active-alerts = [font size=16][color=white]Нет активных оповещений -[/color] [color={ $color }]ситуация нормальная[/color][/font] atmos-alerts-window-no-data-available = Данные недоступны atmos-alerts-window-alerts-being-silenced = Отключение оповещений... - atmos-alerts-window-toggle-overlays = Переключить отображение сигналов тревоги - atmos-alerts-window-flavor-left = Обратитесь к технику по атмосфере за помощью atmos-alerts-window-flavor-right = v1.8 diff --git a/Resources/Locale/ru-RU/atmos/gas-recycler-system.ftl b/Resources/Locale/ru-RU/atmos/gas-recycler-system.ftl index ec734cb757..9ca10581c9 100644 --- a/Resources/Locale/ru-RU/atmos/gas-recycler-system.ftl +++ b/Resources/Locale/ru-RU/atmos/gas-recycler-system.ftl @@ -1,6 +1,5 @@ gas-recycler-reacting = Он [color=green]преобразовывает[/color] газы-отходы. gas-recycler-low-pressure = Входное давление [color=darkred]слишком низкое[/color]. gas-recycler-low-temperature = Входная температура [color=darkred]слишком низкая[/color]. - gas-recycler-upgrade-min-temp = Минимальная температура gas-recycler-upgrade-min-pressure = Минимальное давление diff --git a/Resources/Locale/ru-RU/atmos/portable-scrubber.ftl b/Resources/Locale/ru-RU/atmos/portable-scrubber.ftl index f52c534d04..6938778480 100644 --- a/Resources/Locale/ru-RU/atmos/portable-scrubber.ftl +++ b/Resources/Locale/ru-RU/atmos/portable-scrubber.ftl @@ -1,4 +1,3 @@ portable-scrubber-fill-level = Примерно [color=yellow]{ $percent }%[/color] от максимального внутреннего давления. - portable-scrubber-component-upgrade-max-pressure = Максимальное давление portable-scrubber-component-upgrade-transfer-rate = Скорость передачи diff --git a/Resources/Locale/ru-RU/botany/components/seed-extractor-component.ftl b/Resources/Locale/ru-RU/botany/components/seed-extractor-component.ftl index b0aa3e8b49..c304c9c377 100644 --- a/Resources/Locale/ru-RU/botany/components/seed-extractor-component.ftl +++ b/Resources/Locale/ru-RU/botany/components/seed-extractor-component.ftl @@ -2,5 +2,4 @@ seed-extractor-component-interact-message = Вы извлекаете немного семян из { $name }. seed-extractor-component-no-seeds = { CAPITALIZE($name) } не имеет семян! - seed-extractor-component-upgrade-seed-yield = Урожайность diff --git a/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl b/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl index 957c72c05d..c56189f2c0 100644 --- a/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl +++ b/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl @@ -1,4 +1,5 @@ ## UI + cargo-console-menu-title = Консоль заказа грузов cargo-console-menu-account-name-label = Имя аккаунта:{ " " } cargo-console-menu-account-name-none-text = Нет @@ -20,7 +21,6 @@ cargo-console-menu-populate-categories-all-text = Все cargo-console-menu-populate-orders-cargo-order-row-product-name-text = { $productName } (x{ $orderAmount }) от { $orderRequester } cargo-console-menu-cargo-order-row-approve-button = Одобрить cargo-console-menu-cargo-order-row-cancel-button = Отменить - # Orders cargo-console-order-not-allowed = Доступ запрещён cargo-console-station-not-found = Нет доступной станции @@ -38,12 +38,10 @@ cargo-console-paper-print-text = Запросил: { $requester } Причина: { $reason } Одобрил: { $approver } - # Cargo shuttle console cargo-shuttle-console-menu-title = Консоль вызова грузового шаттла cargo-shuttle-console-station-unknown = Неизвестно cargo-shuttle-console-shuttle-not-found = Не найден cargo-no-shuttle = Грузовой шаттл не найден! cargo-shuttle-console-organics = На шаттле обнаружены органические формы жизни - cargo-telepad-delay-upgrade = Задержка телепортации diff --git a/Resources/Locale/ru-RU/construction/components/machine-part-component.ftl b/Resources/Locale/ru-RU/construction/components/machine-part-component.ftl index beb659e13a..7eddb99010 100644 --- a/Resources/Locale/ru-RU/construction/components/machine-part-component.ftl +++ b/Resources/Locale/ru-RU/construction/components/machine-part-component.ftl @@ -1,2 +1,2 @@ -machine-part-component-on-examine-rating-text = [color=white]Уровень:[/color] [color=cyan]{$rating}[/color] -machine-part-component-on-examine-type-text = [color=white]Тип:[/color] [color=cyan]{$type}[/color] +machine-part-component-on-examine-rating-text = [color=white]Уровень:[/color] [color=cyan]{ $rating }[/color] +machine-part-component-on-examine-type-text = [color=white]Тип:[/color] [color=cyan]{ $type }[/color] diff --git a/Resources/Locale/ru-RU/kitchen/components/reagent-grinder-component.ftl b/Resources/Locale/ru-RU/kitchen/components/reagent-grinder-component.ftl index 82441316c4..3033f9435a 100644 --- a/Resources/Locale/ru-RU/kitchen/components/reagent-grinder-component.ftl +++ b/Resources/Locale/ru-RU/kitchen/components/reagent-grinder-component.ftl @@ -3,10 +3,8 @@ reagent-grinder-bound-user-interface-instant-button = МГНОВЕННО reagent-grinder-bound-user-interface-cook-time-label = ВРЕМЯ: reagent-grinder-component-cannot-put-entity-message = Вы не можете поместить это в измельчитель реагентов! - reagent-grinder-component-upgrade-work-time = Время работы reagent-grinder-component-upgrade-storage = Объем хранилища - grinder-menu-title = Универсальный Измельчитель 3000 grinder-menu-grind-button = Измельчить grinder-menu-juice-button = Выжать diff --git a/Resources/Locale/ru-RU/language/commands.ftl b/Resources/Locale/ru-RU/language/commands.ftl index 7c01700d65..f62d823393 100644 --- a/Resources/Locale/ru-RU/language/commands.ftl +++ b/Resources/Locale/ru-RU/language/commands.ftl @@ -1,17 +1,13 @@ command-list-langs-desc = Перечислите языки, на которых сущность может говорить. command-list-langs-help = Исп: { $command } - command-saylang-desc = Отправьте сообщение на определенном языке. Чтобы выбрать язык, вы можете использовать либо название языка, либо его позицию в списке языков. command-saylang-help = Исп: { $command } <имя языка> <текст>. Пример: { $command } TauCetiBasic "Привет мир!". Пример: { $command } 1 "Привет мир!" - command-language-select-desc = Выберите язык, на котором в данный момент будет говорить существо. Вы можете использовать либо название языка, либо его позицию в списке языков. command-language-select-help = Исп: { $command } <имя языка>. Пример: { $command } TauCetiBasic - command-language-spoken = Говорит: command-language-understood = Понимает: command-language-current-entry = { $id }. { $language } - { $name } (текущий) command-language-entry = { $id }. { $language } - { $name } - command-language-invalid-number = Номер языка должен быть между 0 и { $total }. Ну либо используйте имя языка. command-language-invalid-language = Язык { $id } не существует или им нельзя говорить. @@ -21,7 +17,6 @@ command-description-language-add = Добавляет новый язык к с command-description-language-rm = Удаляет язык из передаваемого объекта. Работает аналогично language:add. Пример: 'self language:rm "TauCetiBasic" true true'. command-description-language-lsspoken = Выводит список всех языков, на которых может говорить объект. Пример: 'self language:lsspoken' command-description-language-lsunderstood = Содержит список всех языков, которые может понимать сущность. Пример: 'self language:lssunderstood' - command-description-translator-addlang = Добавляет язык переводчику. Смотрите language:add для деталей. command-description-translator-rmlang = Удаляет целевой язык из переводчика. Смотрите language:rm для деталей. command-description-translator-addrequired = Добавляет новый необходимый язык к переводчику. Пример: 'ent 1234 translator:addrequired "TauCetiBasic"' @@ -29,6 +24,5 @@ command-description-translator-rmrequired = Удаляет необходимы command-description-translator-lsspoken = Выводит список всех языков на которых говорит переводчик. Пример: 'ent 1234 translator:lsspoken' command-description-translator-lsunderstood = Выводит список всех понятных языков для переводчика. Пример: 'ent 1234 translator:lssunderstood' command-description-translator-lsrequired = Выводит список всех необходимых языков для переводчика. Пример: 'ent 1234 translator:lsrequired' - command-language-error-this-will-not-work = Не сработает. command-language-error-not-a-translator = Сущность { $entity } не переводчик. diff --git a/Resources/Locale/ru-RU/language/languages.ftl b/Resources/Locale/ru-RU/language/languages.ftl index 56a4212fad..7e0d1555a5 100644 --- a/Resources/Locale/ru-RU/language/languages.ftl +++ b/Resources/Locale/ru-RU/language/languages.ftl @@ -1,97 +1,71 @@ language-Universal-name = Универсальный language-Universal-description = Что ты такое? - language-Bubblish-name = Пузырчатый language-Bubblish-description = Язык слаймолюдов. Это смесь булькающих звуков и хлюпов. Человеку очень трудно говорить без механической помощи. - language-RootSpeak-name = Песнь корней language-RootSpeak-description = Странный шелестящий язык, на котором говорят дионы. - language-Nekomimetic-name = Некоязык language-Nekomimetic-description = Для стороннего наблюдателя этот язык представляет собой непонятную смесь ломаного японского. Для фелинидов он каким-то образом понятен. - language-Draconic-name = Синта'унати language-Draconic-description = Общий язык унатхов с преобладающими шипящими звуками. - language-SolCommon-name = Солнечный язык language-SolCommon-description = Общий язык Солнечного Альянса берёт свои корни из мандаринского диалекта китайского языка и эволюционировал как официальный язык Солнечного Альянса, при этом чиновники стремились объединить его в единый общий язык. На нём говорят государственные служащие, его преподают в школах, и его используют те, кто либо испытывает чувство национальной гордости за Альянс, либо оказался под влиянием его культуры. - language-TauCetiBasic-name = Общегалактический -language-TauCetiBasic-description = Духовный преемник эсперанто, созданный в 2404 году в системе Тау Кита её интеллектуалами. - Его уникальный, полностью настроенный алфавит и структура позволяют говорить на нем даже большинству инопланетных видов. - Это официальный язык Тау Кита, который набирает все большую популярность в дипломатических кругах и среди универсалистов по всему человеческому пространству. - +language-TauCetiBasic-description = + Духовный преемник эсперанто, созданный в 2404 году в системе Тау Кита её интеллектуалами. + Его уникальный, полностью настроенный алфавит и структура позволяют говорить на нем даже большинству инопланетных видов. + Это официальный язык Тау Кита, который набирает все большую популярность в дипломатических кругах и среди универсалистов по всему человеческому пространству. language-Tradeband-name = Торговый язык language-Tradeband-description = - Происходящий от латинских и романских языков старой Земли, Торговый остается основным языком высшего класса человечества. - Язык звучит элегантно и хорошо структурированно для большинства ушей. Он по-прежнему популярен среди торговцев, дипломатов и тех, кто стремится сохранить частичку романтического прошлого. - + Происходящий от латинских и романских языков старой Земли, Торговый остается основным языком высшего класса человечества. + Язык звучит элегантно и хорошо структурированно для большинства ушей. Он по-прежнему популярен среди торговцев, дипломатов и тех, кто стремится сохранить частичку романтического прошлого. language-Freespeak-name = Свободная речь language-Freespeak-description = - Язык ренегатов и пограничников, происходящий от различных языков Земли, таких как хинди, объединенных в многокорневую мешанину, которая звучит несвязно или даже варварски для неносителей языка. - Этот язык является единственной общей культурной идентичностью для людей на границе. Само по себе владение этим языком смело заявляет о свободном духе говорящего. - Граждане Альянса часто называют его Уличным языком. - + Язык ренегатов и пограничников, происходящий от различных языков Земли, таких как хинди, объединенных в многокорневую мешанину, которая звучит несвязно или даже варварски для неносителей языка. + Этот язык является единственной общей культурной идентичностью для людей на границе. Само по себе владение этим языком смело заявляет о свободном духе говорящего. + Граждане Альянса часто называют его Уличным языком. +language-Elyran-name = Стандартный Элиранский trait-name-Elyran = Элиранский язык language-Elyran-description = Стандартный Элиранский — это официальный язык Республики Элира. Он был создан на основе элементов фарси, арабского и турецкого языков. Влияние всех трёх этих языков прослеживается в его грамматике и словарном составе. - language-Canilunzt-name = Канилунц language-Canilunzt-description = Гортанный язык, на котором говорят и используют обитатели системы Ваззенда, состоящий из рычания, лая, тявканья и интенсивного использования движений ушей и хвоста, вулпканины говорят на этом языке с легкостью. - language-Moffic-name = Мольный language-Moffic-description = Язык народа мотыльков граничит с полной неразборчивостью. - language-RobotTalk-name = Робоязык language-RobotTalk-description = Язык, состоящий из резких бинарных звуков - чириканья, свиста, шипения и завывания. Органические языки не могут говорить на нем без помощи специальных переводчиков. - language-Sign-name = Галактический язык жестов language-Sign-description = Этот язык жестов распространен среди немых и глухих людей. - language-Cat-name = Кот language-Cat-description = Мяу - language-Dog-name = Собака language-Dog-description = Гав! - language-Fox-name = Лиса language-Fox-description = Япиии! - language-Xeno-name = Ксено language-Xeno-description = СССССССССССССР! - language-Monkey-name = Мартышка language-Monkey-description = уаааааак! - language-Mouse-name = Мышка language-Mouse-description = Сквик! - language-Chicken-name = Курица language-Chicken-description = Курлык ёпта! - language-Duck-name = Курица language-Duck-description = Кудах! - language-Cow-name = Корова language-Cow-description = Муууу! - language-Sheep-name = Овца language-Sheep-description = Бееее! - language-Kangaroo-name = Кенгуру language-Kangaroo-description = Чуууу! - language-Pig-name = Свинья language-Pig-description = Хрю! - language-Crab-name = Краб language-Crab-description = Клик! - language-Kobold-name = Кобольды language-Kobold-description = Хиссс! - language-Hissing-name = Шипящий language-Hissing-description = Хисс! diff --git a/Resources/Locale/ru-RU/loadouts/itemgroups.ftl b/Resources/Locale/ru-RU/loadouts/itemgroups.ftl index c1acc8cda5..0888580621 100644 --- a/Resources/Locale/ru-RU/loadouts/itemgroups.ftl +++ b/Resources/Locale/ru-RU/loadouts/itemgroups.ftl @@ -8,7 +8,6 @@ character-item-group-LoadoutNeck = Гражданская Одежда На Ше character-item-group-LoadoutOuter = Гражданская Верхняя Одежда character-item-group-LoadoutShoes = Гражданская Обувь character-item-group-LoadoutUniformsCivilian = Гражданская Униформа - # Generic - Items character-item-group-LoadoutAirTank = Аварийные Баллоны С Воздухом character-item-group-LoadoutLighters = Зажигалки @@ -16,18 +15,15 @@ character-item-group-LoadoutInstrumentsAny = Музыкальные Инстру character-item-group-LoadoutSmokes = Табачное character-item-group-LoadoutBoxKits = Наборы Для Выживания character-item-group-LoadoutWritables = Канцелярия - # Cargo character-item-group-LoadoutNeckCargo = Одежда На Шею Отдела Снабжения character-item-group-LoadoutOuterCargo = Верхняя Одежда Отдела Снабжения character-item-group-LoadoutShoesCargo = Обувь Отдела Снабжения - # Engineering character-item-group-LoadoutEyesEngineering = Очки Инженерного Отдела character-item-group-LoadoutHeadEngineering = Головные Уборы Инженерного Отдела character-item-group-LoadoutOuterEngineering = Верхняя Одежда Инженерного Отдела character-item-group-LoadoutUniformsEngineering = Униформа Инженерного Отдела - # Medical character-item-group-LoadoutEyesMedical = Очки Медицинского Отдела character-item-group-LoadoutGlovesMedical = Перчатки Медицинского отдела @@ -36,7 +32,6 @@ character-item-group-LoadoutNeckMedical = Одежда На Шею Медици character-item-group-LoadoutOuterMedical = Верхняя Одежда Медицинского Отдела character-item-group-LoadoutShoesMedical = Обувь Медицинского Отдела character-item-group-LoadoutUniformsMedical = Униформа Медицинского Отдела - # Security character-item-group-LoadoutBeltSecurity = Ремни Отдела Службы Безопасности character-item-group-LoadoutEquipmentSecurity = Снаряжение Отдела Службы Безопасности @@ -48,7 +43,6 @@ character-item-group-LoadoutNeckSecurity = Одежда На Шею Отдела character-item-group-LoadoutOuterSecurity = Верхняя Одежда Отдела Службы Безопасности character-item-group-LoadoutShoesSecurity = Обувь Отдела Службы Безопасности character-item-group-LoadoutUniformsSecurity = Униформа Отдела Службы Безопасности - # Service character-item-group-LoadoutEquipmentService = Снаряжение Сервиса character-item-group-LoadoutMaskService = Маски Сервиса @@ -56,15 +50,12 @@ character-item-group-LoadoutNeckService = Одежда На Шею Сервис character-item-group-LoadoutOuterService = Верхняя Одежда Сервиса character-item-group-LoadoutShoesService = Обувь Сервиса character-item-group-LoadoutUniformsService = Униформа Сервиса - # Service - Bartender character-item-group-LoadoutBartenderAmmo = Аммуниция Бармена character-item-group-LoadoutBartenderOuterwear = Верхняя Одежда Бармена character-item-group-LoadoutBartenderWeapon = Оружие Бармена - # Service - Musician character-item-group-LoadoutMusicianInstruments = Музыкальные Инструменты - # Traits - Languages character-item-group-TraitsLanguagesBasic = Основные языки character-item-group-TraitsAccents = Акценты diff --git a/Resources/Locale/ru-RU/machine/machine.ftl b/Resources/Locale/ru-RU/machine/machine.ftl index 422c5aab7e..e3b85d0d0f 100644 --- a/Resources/Locale/ru-RU/machine/machine.ftl +++ b/Resources/Locale/ru-RU/machine/machine.ftl @@ -9,12 +9,10 @@ machine-upgrade-not-upgraded = Параметр [color=yellow]{ $upgraded }[/col machine-part-name-capacitor = Конденсатор machine-part-name-manipulator = Манипулятор machine-part-name-matter-bin = Ёмкость материи - upgrade-power-draw = Потребление энергии upgrade-max-charge = Максимальный заряд upgrade-power-supply = Питание upgrade-power-supply-ramping = Скорость наращивания мощности - machine-part-name-power-cell = Батарея two-way-lever-left = сдвинуть рычаг влево two-way-lever-right = сдвинуть рычаг вправо diff --git a/Resources/Locale/ru-RU/materials/materials.ftl b/Resources/Locale/ru-RU/materials/materials.ftl index 47690d4086..f206cb45d0 100644 --- a/Resources/Locale/ru-RU/materials/materials.ftl +++ b/Resources/Locale/ru-RU/materials/materials.ftl @@ -34,6 +34,5 @@ materials-raw-uranium = руда урана materials-raw-bananium = руда бананиума materials-raw-salt = каменная соль materials-raw-diamond = необработанные алмазы - # Material Reclaimer material-reclaimer-upgrade-process-rate = Скорость обработки diff --git a/Resources/Locale/ru-RU/medical/components/biomass-reclaimer-component.ftl b/Resources/Locale/ru-RU/medical/components/biomass-reclaimer-component.ftl index 7c6df729fe..e1671fdeba 100644 --- a/Resources/Locale/ru-RU/medical/components/biomass-reclaimer-component.ftl +++ b/Resources/Locale/ru-RU/medical/components/biomass-reclaimer-component.ftl @@ -1,4 +1,3 @@ biomass-reclaimer-suicide-others = { CAPITALIZE($victim) } запрыгивает в переработчик биомассы! - biomass-reclaimer-component-upgrade-speed = Скорость biomass-reclaimer-component-upgrade-biomass-yield = Урожайность биомассы diff --git a/Resources/Locale/ru-RU/medical/components/cloning-pod-component.ftl b/Resources/Locale/ru-RU/medical/components/cloning-pod-component.ftl index 24e26b4199..ee41d78077 100644 --- a/Resources/Locale/ru-RU/medical/components/cloning-pod-component.ftl +++ b/Resources/Locale/ru-RU/medical/components/cloning-pod-component.ftl @@ -1,5 +1,4 @@ cloning-pod-biomass = Содержит [color=red]{ $number }[/color] единиц биомассы. - cloning-pod-component-upgrade-speed = Скорость клонирования cloning-pod-component-upgrade-biomass-requirement = Необходимо биомассы cloning-pod-component-upgrade-emag-requirement = Карточка замыкает что-то внутри капсулы клонирования. diff --git a/Resources/Locale/ru-RU/medical/components/medical-scanner-component.ftl b/Resources/Locale/ru-RU/medical/components/medical-scanner-component.ftl index 9858dd2948..6519de2657 100644 --- a/Resources/Locale/ru-RU/medical/components/medical-scanner-component.ftl +++ b/Resources/Locale/ru-RU/medical/components/medical-scanner-component.ftl @@ -2,5 +2,4 @@ medical-scanner-verb-enter = Залезть medical-scanner-verb-noun-occupant = пациента - medical-scanner-upgrade-cloning = Шанс неудачного клонирования diff --git a/Resources/Locale/ru-RU/nutrition/components/fat-extractor.ftl b/Resources/Locale/ru-RU/nutrition/components/fat-extractor.ftl index 29d4f28863..df8d461338 100644 --- a/Resources/Locale/ru-RU/nutrition/components/fat-extractor.ftl +++ b/Resources/Locale/ru-RU/nutrition/components/fat-extractor.ftl @@ -1,5 +1,4 @@ fat-extractor-component-rate = Скорость извлечения - fat-extractor-fact-1 = Жиры - это триглицериды, состоящие из комбинации различных структурных элементов: глицерина и жирных кислот. fat-extractor-fact-2 = Взрослым рекомендуется получать 20-35% потребляемой энергии из жиров. fat-extractor-fact-3 = Избыточный вес или ожирение повышают риск развития хронических заболеваний, таких как сердечно-сосудистые патологии, метаболический синдром, диабет 2 типа и некоторые виды рака. diff --git a/Resources/Locale/ru-RU/psionics/psionic-powers.ftl b/Resources/Locale/ru-RU/psionics/psionic-powers.ftl index c24eecf003..d6e17004e5 100644 --- a/Resources/Locale/ru-RU/psionics/psionic-powers.ftl +++ b/Resources/Locale/ru-RU/psionics/psionic-powers.ftl @@ -1,21 +1,17 @@ generic-power-initialization-feedback = Я проснулся. arleady-casting = Я не могу использовать более одной силы одновременно. - # Dispel dispel-power-description = Рассеивайте вызванные сущности, такие как фамильяры или силовые стены. dispel-power-initialization-feedback = Силы судьбы для меня ничто. Я чувствую, что могу дотянуться до окружающих меня нитей и навязать реальность другим. dispel-power-metapsionic-feedback = { CAPITALIZE($entity) } это могучий камень, противостоящий течению судьбы. - # Mass Sleep mass-sleep-power-description = Усыпите сущностей рядом с собой. mass-sleep-initialization-feedback = Обратившись к умам окружающих меня людей, я нашел слова, которые могут отправить других в царство сна. mass-sleep-metapsionic-feedback = { CAPITALIZE($entity) } несет на себе неизгладимую печать похитителя снов. - # Mind Swap mind-swap-power-description = Поменяйтесь мыслями с целью. Любой из них может измениться обратно через 20 секунд. mind-swap-power-initialization-feedback = Я чувствую, как узы души и тела распадаются по моей прихоти, мой сосуд может быть заменен на другой. mind-swap-power-metapsionic-feedback = { CAPITALIZE($entity) } им не хватает прочной связи со своим сосудом, как будто их связь с духом податлива. - # Noospheric Zap noospheric-zap-power-description = Шокирует сознание жертвы, оставляя ее ошеломленной и заикающейся. noospheric-zap-power-initialization-feedback = @@ -25,7 +21,6 @@ noospheric-zap-power-initialization-feedback = noospheric-zap-power-metapsionic-feedback = Я заглядываю в сердце { CAPTITALIZE($entity) }, и там, среди плоти, кружится микроскопическая частичка существа, состоящего из чистой энергии. Оно злобно смотрит на меня, его серебристые глаза полны ненависти к людям с углеродной плотью. - # Pyrokinesis pyrokinesis-power-description = Поджечь существо pyrokinesis-power-initialization-feedback = @@ -35,19 +30,16 @@ pyrokinesis-power-initialization-feedback = муха манит меня предложить свои услуги. Когда я протягиваю ему руку, чтобы пожать ее, видение исчезает, и я обнаруживаю, что стою в первозданном материуме. Теперь я знаю Его имя, это Тайна Огня. Просто думая об этом, я чувствую, как жар этого места распространяется по моим рукам. pyrokinesis-power-metapsionic-feedback = Тайна огня скрыта внутри { CAPITALIZE($entity) } - # Metapsionic Pulse metapsionic-power-description = Отправьте ментальный импульс на расстояние, что бы узнать еслить ли псионики поблизости metapsionic-power-initialization-feedback = Мир вокруг меня просыпается в свете сновидений. На какое-то трансцендентное мгновение я вижу все, что есть, и все, что когда-либо будет. Я пошатываюсь, губы пересохли не от желания выпить воды, а от желания испить чашу знаний. Я. Должен. Найти. Это. metapsionic-power-metapsionic-feedback = { CAPITALIZE($entity) } взирает на тебя. - # Psionic Regeneration psionic-regeneration-power-description = Доведите свой метоболизм до предела что бы ускорить регенерацию. psionic-regeneration-power-initialization-feedback = Я смотрю внутрь себя и нахожу источник жизни. psionic-regeneration-power-metapsionic-feedback = { CAPITALIZE($entity) } обладает непреодолимой волей к жизни - # Healing Word action-name-healing-word = Слово Исцеления action-description-healing-word = Произнесите Меньший Секрет Жизни и восстановите здоровье другого. @@ -56,9 +48,8 @@ healing-word-power-initialization-feedback = В начале времен было произнесено слово, которое принесло жизнь в Сферы. Хотя это тяжело для моего разума, этот Секрет теперь известен мне. Мне нужно лишь произнести его. -healing-word-power-metapsionic-feedback = {CAPITALIZE($entity)} хранит Меньший Секрет Жизни. -healing-word-begin = {CAPITALIZE($entity)} произносит слово, которое приносит радость и боль тем, кто его слышит. - +healing-word-power-metapsionic-feedback = { CAPITALIZE($entity) } хранит Меньший Секрет Жизни. +healing-word-begin = { CAPITALIZE($entity) } произносит слово, которое приносит радость и боль тем, кто его слышит. # Revivify action-name-revivify = Дыхание Жизни action-description-revivify = Произнесите Большой Секрет Жизни и верните другого к жизни. @@ -67,9 +58,8 @@ revivify-power-initialization-feedback = На мгновение моя душа путешествует сквозь время и пространство к началу всего, и там я слышу это. Секрет Жизни во всей его полноте. Я чувствую, как вся моя сущность выгорает изнутри, просто зная это. Сила течет через меня, как могучая река, прося высвободиться простым произнесением слова. -revivify-power-metapsionic-feedback = {CAPITALIZE($entity)} хранит Большой Секрет Жизни. -revivify-word-begin = {CAPITALIZE($entity)} произносит слово такой божественной силы, что те, кто его слышит, плачут от радости. - +revivify-power-metapsionic-feedback = { CAPITALIZE($entity) } хранит Большой Секрет Жизни. +revivify-word-begin = { CAPITALIZE($entity) } произносит слово такой божественной силы, что те, кто его слышит, плачут от радости. # Telegnosis telegnosis-power-description = Создайте проекцию что бы удалённо осматривать местность. telegnosis-power-initialization-feedback = @@ -79,7 +69,6 @@ telegnosis-power-initialization-feedback = дракон с крыльями павлина, срывается вниз и пожирает мою плоть одним укусом. Через мгновение я просыпаюсь в мире, полностью лишенном истинных, настоящих цветов. telegnosis-power-metapsionic-feedback = Душа { CAPITALIZE($entity) } путешествует по мостам, состоящим из света снов - # Psionic Invisibility psionic-invisibility-power-description = Станьте невидимым для всех существ, способным стать псиоником. Борги, животные и так далее не подвержены этому воздействию. psionic-invisibility-power-initialization-feedback = @@ -87,20 +76,17 @@ psionic-invisibility-power-initialization-feedback = Размышляя об этом, я прихожу к пониманию, что само зрение - это иллюзия. Я отвергаю ее, я отрицаю, что свет реален. Когда я просыпаюсь, я уже не вижу даже себя. psionic-invisibility-power-metapsionic-feedback = { CAPITALIZE($entity) } стремится скрыться от твоего взгляда - # Xenoglossy xenoglossy-power-description = Вы понимаете все языки. xenoglossy-power-initialization-feedback = Я сопереживаю всему творению, чтобы понять его и быть понятым. Барьер между мыслями и выражениями для меня непроницаем. psionic-language-power-metapsionic-feedback = Ноöсфера свободно проходит через { CAPITALIZE($entity) }, который, кажется, переваривает ее и невозмутимо выпускает обратно. - # Psychognomy psychognomy-power-description = У вас есть некоторое смутное представление о форме источника телепатических сообщений. psychognomy-power-initialization-feedback = Я пробил завесу и знаю, что я не одинок. Что еще более важно, сделанное мной отверстие, кажется, неопвсе еще проницаемо наределенный срок. Когда энергия проходит через отверстия в ноосфере, я получаю слабое представление о материальном происхождении. - # Telepathy telepathy-power-description = Вы способны как отправлять, так и получать телепатические сообщения. telepathy-power-initialization-feedback = diff --git a/Resources/Locale/ru-RU/shuttles/thruster.ftl b/Resources/Locale/ru-RU/shuttles/thruster.ftl index f58a55a395..3dba21cfc9 100644 --- a/Resources/Locale/ru-RU/shuttles/thruster.ftl +++ b/Resources/Locale/ru-RU/shuttles/thruster.ftl @@ -3,5 +3,4 @@ thruster-comp-disabled = Двигатель [color=red]выключён[/color]. thruster-comp-nozzle-direction = Сопло направлено на [color=yellow]{ $direction }[/color]. thruster-comp-nozzle-exposed = Сопло [color=green]расправлено[/color] в космос. thruster-comp-nozzle-not-exposed = Сопло [color=red]не расправлено[/color] в космос. - thruster-comp-upgrade-thrust = Сила тяги diff --git a/Resources/Locale/ru-RU/singularity/components/emitter-component.ftl b/Resources/Locale/ru-RU/singularity/components/emitter-component.ftl index dc05a91c4f..05d36158aa 100644 --- a/Resources/Locale/ru-RU/singularity/components/emitter-component.ftl +++ b/Resources/Locale/ru-RU/singularity/components/emitter-component.ftl @@ -2,17 +2,13 @@ # Shows when attempting to turn the emitter on or off without proper access comp-emitter-access-locked = Доступ к { $target } заблокирован! - # Shows when turning the emitter on/off comp-emitter-turned-on = { $target } включается. comp-emitter-turned-off = { $target } отключается. - # Shows if the user attempts to activate the emitter while it's un-anchored. comp-emitter-not-anchored = { $target } не закреплён! - # Upgrades emitter-component-upgrade-fire-rate = Скорострельность - # Upgrades emitter-component-current-type = Установленный тип: { $type }. emitter-component-type-set = Установить тип: { $type } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/body/organs/vulpkanin.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/body/organs/vulpkanin.ftl deleted file mode 100644 index 8b13789179..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/body/organs/vulpkanin.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/backpack.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/backpack.ftl index 86a9ba38ae..72d0665431 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/backpack.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/backpack.ftl @@ -3,6 +3,5 @@ ent-ClothingBackpackMafiaFilled = { ent-ClothingBackpackSatchelLeather } .desc = { ent-ClothingBackpackSatchelLeather.desc } ent-ClothingBackpackParamedicFilledDV = { ent-ClothingBackpackMedical } .desc = { ent-ClothingBackpackMedical.desc } - ent-ClothingBackpackLawyerFilled = { ent-ClothingBackpack } .desc = { ent-ClothingBackpack.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/duffelbag.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/duffelbag.ftl index 2009854e71..8fa00d89f7 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/duffelbag.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/duffelbag.ftl @@ -1,5 +1,4 @@ ent-ClothingBackpackDuffelParamedicFilledDV = { ent-ClothingBackpackDuffelMedical } .desc = { ent-ClothingBackpackDuffelMedical.desc } - ent-ClothingBackpackDuffelLawyerFilled = { ent-ClothingBackpackDuffel } .desc = { ent-ClothingBackpackDuffel.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/satchel.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/satchel.ftl index 4e395685f7..a6d42cead3 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/satchel.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/backpacks/startergear/satchel.ftl @@ -1,5 +1,4 @@ ent-ClothingBackpackSatchelParamedicFilledDV = { ent-ClothingBackpackSatchelMedical } .desc = { ent-ClothingBackpackSatchelMedical.desc } - ent-ClothingBackpackSatchelLawyerFilled = { ent-ClothingBackpackSatchel } .desc = { ent-ClothingBackpackSatchel.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/armory.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/armory.ftl deleted file mode 100644 index 139597f9cb..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/armory.ftl +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/food.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/food.ftl deleted file mode 100644 index 139597f9cb..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/food.ftl +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/npc.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/npc.ftl deleted file mode 100644 index 8b13789179..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/npc.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/vending.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/vending.ftl deleted file mode 100644 index 8b13789179..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/catalog/fills/crates/vending.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/clothing/head/hardsuit-helmets.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hardsuit-helmets.ftl similarity index 100% rename from Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/clothing/head/hardsuit-helmets.ftl rename to Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/head/hardsuit-helmets.ftl diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/clothing/outerclothing/hardsuits.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/outerclothing/hardsuits.ftl similarity index 100% rename from Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/clothing/outerclothing/hardsuits.ftl rename to Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/clothing/outerclothing/hardsuits.ftl diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/mobs/player/vulpkanin.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/mobs/player/vulpkanin.ftl deleted file mode 100644 index 8b13789179..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/mobs/player/vulpkanin.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/consumable/drinks/drinks.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/consumable/drinks/drinks.ftl index bff9a984ed..500b1872bc 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/consumable/drinks/drinks.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/consumable/drinks/drinks.ftl @@ -10,11 +10,9 @@ ent-DrinkLemonDropGlass = { ent-DrinkGlass } ent-DrinkGreenGrassGlass = { ent-DrinkGlass } .desc = Необычно зелёный коктейль приправленный льдом, долькой лемона и трубочкой для питья. .suffix = зелёная травка - ent-DrinkArsonistsBrewGlass = { ent-DrinkGlass } .desc = Ничего обычного в том, что он дымится.. или светится.. Всё в норме. .suffix = отвар поджигателя - ent-DrinkMothamphetamineGlass = { ent-DrinkGlass } .desc = На удивление газированный напиток.. От него веет аурой хаоса. .suffix = метамфетамин diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/misc/rubber_stamp.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/misc/rubber_stamp.ftl index 444e0de5a8..69184d48b4 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/misc/rubber_stamp.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/objects/misc/rubber_stamp.ftl @@ -1,4 +1,3 @@ - ent-RubberStampLawyer = печать адвоката .suffix = НЕ МАППИТЬ .desc = { ent-RubberStampBase.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/structures/storage/tanks/tanks.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/structures/storage/tanks/tanks.ftl deleted file mode 100644 index 139597f9cb..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/deltav/entities/structures/storage/tanks/tanks.ftl +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/hardsuit-helmets.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/hardsuit-helmets.ftl new file mode 100644 index 0000000000..224b2d4cda --- /dev/null +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/head/hardsuit-helmets.ftl @@ -0,0 +1,5 @@ + + +ent-ClothingHeadHelmetHardsuitERTChaplain = ERT chaplain hardsuit helmet + .desc = A special hardsuit helmet worn by members of an emergency response team. + diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/outerclothing/hardsuits.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/outerclothing/hardsuits.ftl new file mode 100644 index 0000000000..a17dc4f225 --- /dev/null +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/outerclothing/hardsuits.ftl @@ -0,0 +1,5 @@ + + +ent-ClothingOuterHardsuitERTChaplain = ERT chaplain's hardsuit + .desc = A protective hardsuit worn by the chaplains of an Emergency Response Team. + diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/outerclothing/softsuits.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/outerclothing/softsuits.ftl index 54e4013aa6..0931b59ecb 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/outerclothing/softsuits.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/outerclothing/softsuits.ftl @@ -11,4 +11,3 @@ ent-ClothingOuterHardsuitEVAPrisoner = тюремный скафандр EVA .desc = Лёгкий космический скафандр, способный защитить заключённого от космического вакуума во время аварийной ситуации. ent-ClothingOuterHardsuitAncientEVA = пустотный скафандр NTSRA .desc = Древний космический скафандр, разработанный по заказу Центкома подразделением NTSRA - агентством космических исследований Nanotrasen. Он изготовлен с особой тщательностью, обеспечивая большую мобильность, чем большинство современных космических костюмов. - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/environmental.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/environmental.ftl new file mode 100644 index 0000000000..99aa8d71ae --- /dev/null +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/markers/environmental.ftl @@ -0,0 +1,23 @@ +ent-MarkerRadiation1 = Marker Radiation + .suffix = intensity 1 + .desc = { ent-MarkerBase.desc } +ent-MarkerRadiation2 = { ent-MarkerRadiation1 } + .suffix = intensity 2 + .desc = { ent-MarkerRadiation1.desc } +ent-MarkerRadiation3 = { ent-MarkerRadiation1 } + .suffix = intensity 3 + .desc = { ent-MarkerRadiation1.desc } +ent-MarkerRadiation4 = { ent-MarkerRadiation1 } + .suffix = intensity 4 + .desc = { ent-MarkerRadiation1.desc } +ent-MarkerRadiation5 = { ent-MarkerRadiation1 } + .suffix = intensity 5 + .desc = { ent-MarkerRadiation1.desc } +ent-MarkerRadiation10 = { ent-MarkerRadiation1 } + .suffix = intensity 10 + .desc = { ent-MarkerRadiation1.desc } +ent-MarkerBlocker = Marker Blocker + .suffix = invisible wall + .desc = { ent-MarkerBase.desc } +ent-MarkerWeatherblocker = Marker Weather Blocker + .desc = { ent-MarkerBase.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/rubber_stamp.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/rubber_stamp.ftl index b28b268e3f..1028c6d96c 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/rubber_stamp.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/misc/rubber_stamp.ftl @@ -11,7 +11,6 @@ ent-RubberStampCentcom = печать Центком ent-RubberStampChaplain = печать священника .suffix = НЕ МАППИТЬ .desc = { ent-RubberStampBase.desc } - ent-RubberStampClown = печать клоуна .suffix = НЕ МАППИТЬ .desc = { ent-RubberStampBase.desc } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/guns/ammunition/cartridges/base_cartridge.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/guns/ammunition/cartridges/base_cartridge.ftl deleted file mode 100644 index 8b13789179..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/guns/ammunition/cartridges/base_cartridge.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/machines/nuke.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/machines/nuke.ftl deleted file mode 100644 index 139597f9cb..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/machines/nuke.ftl +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/catalog/fills/crates/epistemics.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/catalog/fills/crates/epistemics.ftl deleted file mode 100644 index 8b13789179..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/catalog/fills/crates/epistemics.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/catalog/fills/crates/syndicate.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/catalog/fills/crates/syndicate.ftl deleted file mode 100644 index 8b13789179..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/catalog/fills/crates/syndicate.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/mobs/npcs/mutants.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/mobs/npcs/mutants.ftl index 13350a41ed..74268625b4 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/mobs/npcs/mutants.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/mobs/npcs/mutants.ftl @@ -5,4 +5,3 @@ ent-MobGiantSpiderVampire = онейрофаг ent-MobGiantSpiderVampireAngry = онейрофаг .suffix = Злой .desc = { ent-MobGiantSpiderVampire.desc } - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/consumable/drinks/drinks.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/consumable/drinks/drinks.ftl index 52e0da2aec..06093adff8 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/consumable/drinks/drinks.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/consumable/drinks/drinks.ftl @@ -1,4 +1,3 @@ - ent-DrinkOrangeCreamiceGlass = { ent-DrinkGlass } .desc = Апельсиново, кремово, божественно. .suffix = апельсиновый кремовик diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/consumable/drinks/drinks_bottles.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/consumable/drinks/drinks_bottles.ftl index ab710ad406..d561f7e4e5 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/consumable/drinks/drinks_bottles.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/consumable/drinks/drinks_bottles.ftl @@ -1,4 +1,3 @@ - ent-DrinkSojuBottleFull = бутылка соджу .desc = Это как саке, но в этот раз вы реально хотите напиться. ent-DrinkTokkuri = токкури diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/breaching_hammer.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/breaching_hammer.ftl index 06a30c7b53..aa2d8b41e1 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/breaching_hammer.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/breaching_hammer.ftl @@ -1,3 +1,3 @@ ent-SecBreachingHammer = штурмовой молот .desc = Огромный, тяжелый молот для пробития различных дверей или окон. - .suffix = НЕ МАППИТЬ \ No newline at end of file + .suffix = НЕ МАППИТЬ diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/knives.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/knives.ftl deleted file mode 100644 index 8b13789179..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/objects/weapons/melee/knives.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/structures/machines/metempsychoticMachine.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/structures/machines/metempsychoticMachine.ftl deleted file mode 100644 index 8b13789179..0000000000 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/structures/machines/metempsychoticMachine.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/structures/walls/walls.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/structures/walls/walls.ftl index 39a82ff404..32a0931bb4 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/structures/walls/walls.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/nyanotrasen/entities/structures/walls/walls.ftl @@ -1,4 +1,3 @@ - ent-WallPaper = бумажная стена .desc = Помогает изолироваться от страшных криков из додзё. ent-WallDrywall = гипсокартоновая стена diff --git a/Resources/Locale/ru-RU/traits/traits.ftl b/Resources/Locale/ru-RU/traits/traits.ftl index 5f3cfb7c62..a74d8862d9 100644 --- a/Resources/Locale/ru-RU/traits/traits.ftl +++ b/Resources/Locale/ru-RU/traits/traits.ftl @@ -1,274 +1,214 @@ trait-name-Blindness = Слепота trait-description-Blindness = Вы совершенно слепы и не можете видеть дальше нескольких метров перед собой. trait-examined-Blindness = [color=lightblue]{ CAPITALIZE(POSS-ADJ($target)) } глаза остекленелые и расфокусированные. Не похоже, что { SUBJECT($target) } может хорошо вас видеть, если может вообще.[/color] - trait-name-Narcolepsy = Нарколепсия trait-description-Narcolepsy = Вас одолевают приступы сонливости - trait-name-Pacifist = Пацифист trait-description-Pacifist = Вы не можете атаковать или причинить вред живым существам. - trait-name-SelfAware = Самосознание trait-description-SelfAware = Вы обладаете острой интуицией своего тела и чувств. Вы можете точно оценить тяжесть своих ран и ожогов, как анализатор здоровья, и можете определить, есть ли у вас повреждения от токсинов или потери воздуха. - trait-name-LightweightDrunk = Быстрое опьянение trait-description-LightweightDrunk = Алкоголь оказывает на вас более сильное воздействие - trait-name-HeavyweightDrunk = Толерантность к алкоголю -trait-description-HeavyweightDrunk = - Алкоголь боится тебя. - +trait-description-HeavyweightDrunk = Алкоголь боится тебя. trait-name-LiquorLifeline = Спасательный круг для ликера trait-description-LiquorLifeline = Забудьте о враче — просто зайдите в бар и получите свой "рецепт на этанол"! Когда вы пьёте, лечите [color=red]Механические[/color], [color=orange]Термические[/color], [color=orange]Электрические[/color], и [color=orange]Обморожение[/color], смотря на сколько вы пьяны. Вы также получаете преимущества [color=lightblue]Толерантности к алкоголю[/color]. - trait-name-Muted = Немой trait-description-Muted = Вы не можете говорить - trait-name-BloodDeficiency = Дефицит крови trait-description-BloodDeficiency = Ваше тело теряет больше крови, чем может восполнить. Со временем вы теряете кровь, и если не лечиться, вы в конечном итоге умрете от потери крови. - trait-name-Hemophilia = Гемофилия trait-description-Hemophilia = Способность вашего организма образовывать тромбы нарушена. Вы истекаете кровью в два раза дольше, у вас легкие синяки, и вы получаете на 10% больше дробящего урона. - trait-name-Paracusia = Паракузия trait-description-Paracusia = Вы слышите звуки, которых на самом деле нет - trait-name-PirateAccent = Пиратский акцент trait-description-PirateAccent = Ты не можешь перестать говорить как пират! - trait-name-Accentless = Без акцента trait-description-Accentless = У вас нет того акцента, который обычно бывает у представителей вашего вида. - trait-name-FrontalLisp = Сигматизм trait-description-FrontalLisp = У ваф имеютшя проблемы ш произношением. - trait-name-Stutter = Социофобия trait-description-Stutter = Вы испытываете тревожность, когда говорите, что приводит к заиканию. - trait-name-Snoring = Храп trait-description-Snoring = Вы храпите во время сна. - trait-name-CPRTraining = Обученный СЛР trait-description-CPRTraining = В какой-то момент вашей жизни вы прошли обучение тому, как выполнять СЛР. Эта черта автоматически бесплатно предоставляется врачам и предназначена для немедицинских персонажей. - trait-name-NormalVisionHarpy = Модификация трихромата trait-description-NormalVisionHarpy = Ваши глаза были модифицированы с помощью передовой медицины, чтобы видеть стандартные цвета: красный, зеленый и синий. - trait-name-Southern = Южный протяжный говор trait-description-Southern = У тебя другая манера говорить. (Работает только на английском) - trait-name-NormalVision = Модификация трихромата trait-description-NormalVision = Ваши глаза были изменены с помощью передовых медицинских технологий, чтобы они могли видеть стандартные цвета - красный, зеленый и синий. - trait-name-Thieving = Бывалый вор trait-description-Thieving = У вас ловкие руки, и вы талантливо умеете убеждать людей в том, что у них есть вещи. Вы можете распознавать спрятанные в карман предметы, красть их тише и на 33% быстрее. - trait-name-ForeignerLight = Унесённый ядерным взрывом (Легкое) trait-description-ForeignerLight = Вам трудно выучить основной язык этой станции, и поэтому вы не можете на нем говорить. Однако вы можете понимать, что другие говорят на этом языке. Чтобы помочь вам преодолеть это препятствие, у вас есть переводчик, который поможет вам говорить на основном языке этой станции. - trait-name-Foreigner = Унесённый ядерным взрывом trait-description-Foreigner = По той или иной причине вы не говорите на основном языке станции. Вместо этого вам выдан переводчик, которым можете пользоваться только вы. - trait-name-Saturnine = Мрачный trait-description-Saturnine = Вы от природы суровы и угрюмый человек. Ваше настроение постоянно ухудшается. - trait-name-Sanguine = Оптимистичный trait-description-Sanguine = Вы от природы оптимистичны и жизнерадостны! Ваше настроение постоянно повышается в разы. - trait-name-WillToLive = Воля К Жизни trait-description-WillToLive = У вас необычайно сильная "воля к жизни", и вы будете сопротивляться смерти сильнее, чем другие. ваш порог урона, при котором вы становитесь мертвым, увеличен на 10 пунктов. - trait-name-WillToDie = Воля к Смерти trait-description-WillToDie = У вас необычайно слабая "воля к жизни", и вы будете умирать от ранений раньше, чем другие. ваш порог урона, при котором вы становитесь мертвым, снижен на 15 пунктов. - trait-name-Tenacity = Упорство trait-description-Tenacity = Будь то благодаря упорству, силе воли или тонким бионическим усилениям, вы становитесь выносливее других. Ваш порог получения критического урона увеличен на 5 пунктов. - trait-name-GlassJaw = Стеклянная челюсть trait-description-GlassJaw = Ваше тело более хрупкое, чем у других, что приводит к большему урону критическими травмами Ваш порог получения критического урона снижен на 10 пунктов. - trait-name-HighAdrenaline = Высокий уровень адреналина trait-description-HighAdrenaline = В силу естественных причин, генетических или бионических особенностей, у вас более мощная надпочечниковая железа. При ранении ваши атаки в ближнем бою наносят на 10% больше урона, в дополнение к естественным бонусам от адреналина. Стандартные адреналиновые бонусы к урону в ближнем бою увеличиваются на 20%. - trait-name-AdrenalDysfunction = Дисфункция надпочечников trait-description-AdrenalDysfunction = Ваши надпочечники полностью выведены из строя или, возможно, полностью отсутствуют. При ранении ваши атаки в ближнем бою не получают бонус. Стандартные бонусы от адреналина к урону в ближнем бою увеличиваются на 20%. - trait-name-Masochism = Мазохизм trait-description-Masochism = Получая удовольствие от собственной боли, вы не испытываете такой скованности, как другие. Вы игнорируете первые 10% урона выносливости при атаках в ближнем бою. - trait-name-LowPainTolerance = Низкая переносимость боли trait-description-LowPainTolerance = Ваша переносимость боли намного ниже средней, а ее воздействие более подавляюще. При получении урона выносливости ваш урон в ближнем бою уменьшается еще на 15%. - trait-name-MartialArtist = Мастер боевых искусств trait-description-MartialArtist = Вы прошли подготовку по рукопашному бою, будь то на кулаках, ногах или когтях. Ваши кулаки бьют дальше и наносят на 50% больше урона. Это не относится ни к какому виду ручного оружия, а только к оружию, с которым вы родились. - trait-name-Vigor = Сила trait-description-Vigor = Ваша выносливость повышается благодаря целеустремленности, физической подготовке или бионическим усилениям. Ваша выносливость увеличивается на 10 пунктов. - trait-name-Lethargy = Летаргия trait-description-Lethargy = Вы устаете быстрее других, что делает вас более уязвимым к переутомлению. Ваша выносливость снижена на 15 пунктов. - trait-name-SignLanguage = Язык жестов trait-description-SignLanguage = Вы можете понимать и использовать галактический язык жестов. Если вы по какой-либо причине не можете говорить, вы все равно можете общаться с помощью языка жестов. - trait-name-SolCommon = Общий язык Солнечного Альянса trait-description-SolCommon = Общий язык Солнечного Альянса берёт свои корни из мандаринского диалекта китайского языка и эволюционировал как официальный язык Солнечного Альянса, при этом чиновники стремились объединить его в единый общий язык. На нём говорят государственные служащие, его преподают в школах, и его используют те, кто либо испытывает чувство национальной гордости за Альянс, либо оказался под влиянием его культуры. - trait-name-Tradeband = Торговый язык trait-description-Tradeband = Происходящий от латинских и романских языков старой Земли, Торговый остается основным языком высшего класса человечества. Язык звучит элегантно и хорошо структурированно для большинства ушей. Он по-прежнему популярен среди торговцев, дипломатов и тех, кто стремится сохранить частичку романтического прошлого. - trait-name-Freespeak = Свободная речь (Уличный) trait-description-Freespeak = Язык ренегатов и пограничников, происходящий от различных языков Земли, таких как хинди, объединенных в многокорневую мешанину, которая звучит несвязно или даже варварски для неносителей языка. Этот язык является единственной общей культурной идентичностью для людей на границе. Само по себе владение этим языком смело заявляет о свободном духе говорящего. Граждане Альянса часто называют его Уличным. - trait-name-Elyran = Элиранский язык trait-description-Elyran = Стандартный Элиранский — это официальный язык Республики Элира. Он был создан на основе элементов фарси, арабского и турецкого языков. Влияние всех трёх этих языков прослеживается в его грамматике и словарном составе. - trait-name-Voracious = Прожорливый trait-description-Voracious = Ничто не встанет между вами и вашей едой. Вы будете потреблять еду и напитки в два раза быстрее, чем обычно. - trait-name-ParkourTraining = Тренировка по паркуру trait-description-ParkourTraining = Паркур - это ваше хобби, стиль жизни или профессиональная тренировка. Вы становитесь быстрее в лазании, ползании, лежании и вставании. - trait-name-Sluggish = Вялый trait-description-Sluggish = Вы ориентируетесь в мире медленнее, чем другие, возможно, из-за состояния здоровья, гиподинамии или возраста. Вы двигаетесь медленнее, и вам требуется больше времени, чтобы подняться, лечь и встать с постели. - trait-name-SnailPaced = Черепашьим шагом trait-description-SnailPaced = Вы передвигаетесь со скоростью улитки, возможно, из-за состояния здоровья, нарушения подвижности или возраста. Вы двигаетесь значительно медленнее, и вам требуется гораздо больше времени, чтобы подняться, лечь и встать. - trait-name-LightStep = Легкий шаг trait-description-LightStep = Вы двигаетесь легким шагом, делая свои шаги тише. - trait-name-Swashbuckler = Фехтовальщик trait-description-Swashbuckler = Вы являетесь экспертом в фехтовании, владея мечами, ножами и другими видами клинков с непревзойденным мастерством. Ваш бонус за удар ножом в ближнем бою увеличен до 35%, но бонус за удар тупым предметом в ближнем бою снижен до 20%. - trait-name-Spearmaster = Мастер копья trait-description-Spearmaster = Вы превосходно владеете копьями, используя их как продолжение своего тела. Ваш бонус к прокалыванию в ближнем бою увеличен до 35%, но бонус к нанесению ударов тупым предметом в ближнем бою снижен до 20%. - trait-name-WeaponsGeneralist = Специалист по оружию trait-description-WeaponsGeneralist = Вы мастер на все руки в обращении с оружием ближнего боя, что позволяет вам быть универсальным в своем арсенале. Ваш бонус к урону в ближнем бою за все виды грубого урона составляет 25%. - trait-name-Singer = Певец trait-description-Singer = Вы, естественно, способны петь своим голосом простые мелодии. - trait-name-LatentPsychic = Скрытый экстрасенс trait-description-LatentPsychic = Ваш разум и душа открыты ноосфере, что позволяет использовать телепатию. Таким образом, вы имеете право на потенциальное получение экстрасенсорных способностей. Вполне возможно, что за вами охотятся потусторонние силы, поэтому подумайте о том, чтобы сохранить свои способности в секрете. - trait-name-PsionicInsulation = Изменение формы сигнала trait-description-PsionicInsulation = Вы - автомат из плоти и крови, оживляемый нейротрансмиттерами. Внутри вашего черепа находится полуторакилограммовый мешок мяса, дающий вам разум. Согласно современной теории познания, вы даже не существо с правами. Из хороших новостей то, что вы невосприимчивы к большинству положительных и отрицательных воздействий экстрасенсорных способностей. У этого заболевания могут быть и другие, неизвестные последствия. - trait-name-NaturalTelepath = Врождённая телепатия trait-description-NaturalTelepath = Как одарённый с рождения, вы способны к быстрому телепатическому общению, независимо от того обладаете ли вы какими-либо заметными экстрасенсорными способностями. Это дает все те же преимущества и недостатки, что и экстрасенс, за исключением того, что вы гарантированно начнете с телепатической связью. Вы все еще можете обрести способности, так же, как и обычный экстрасенс. - trait-name-TrapAvoider = Избегатель ловушек trait-description-TrapAvoider = Вы обладаете сверхъестественным чутьем на ловушки и будете неосознанно избегать их. Вы никогда не сможете их активировать. - trait-name-AnomalousPositronics = Аномальная позитроника trait-description-AnomalousPositronics = Будь то преднамеренный дизайн от производителя, модификации на черном рынке или случайное упущение, вашему позитронному мозгу не хватает стандартной псионической изоляции. Как существо, у которого, как можно утверждать, есть душа, это, в более широком смысле, означает, что вы можете подвергаться влиянию Ноосферы. - trait-name-Photophobia = Светобоязнь trait-description-Photophobia = Ваши глаза чрезвычайно чувствительны к яркому свету. В результате вы можете быть ослеплены на больший срок, чем другие, когда подвергаетесь воздействию внезапных вспышек света. Кроме того, ваши глаза с большей вероятностью могут пострадать от вспышек. - trait-name-Clumsy = Неуклюжий trait-description-Clumsy = У вас серьезный дефицит зрительно-моторной координации, что приводит к неспособности делать некоторые вещи, которые другие воспринимали бы как должное. Любое оружие, которое вы попытаетесь использовать, скорее всего, повредит вам, чем другим. Вы не сможете взобраться на какой-либо объект, не поранившись. - trait-name-Small = Низкий trait-description-Small = Вы намного меньше обычного человека и можете забираться в места, в которые другие обычно не помещаются, например в спортивные сумки. Эта черта никоим образом не изменяет размер вашего персонажа, она просто требует, чтобы ваш персонаж был размером не более стандартного Феленида. - trait-name-TemperatureTolerance = Температурная терпимость trait-description-TemperatureTolerance = Вы хорошо переносите более низкие температуры. Вы можете длительное время находиться в условиях, температура которых немного ниже точки замерзания, например, внутри кухонной морозилки, или на залитом солнцем склоне горы, где находится знаменитая ледниковая станция. - trait-name-Talons = Колющие Когти trait-description-Talons = Кончики ваших пальцев были заменены колющими когтями. @@ -276,7 +216,6 @@ trait-description-Talons = или даже выдвижные когти из твердого пластика, встроенные в протез конечности. Ваши атаки в ближнем бою без оружия наносят колющий урон вместо стандартного для вашей расы урона. Это не влияет на урон, наносимый в любой форме вооруженного ближнего боя. - trait-name-Claws = Режущие Когти trait-description-Claws = Кончики ваших пальцев были заменены острыми когтями. @@ -284,14 +223,12 @@ trait-description-Claws = или даже выдвижные когти из твердого пластика, встроенные в протез конечности. Ваши атаки в ближнем бою без оружия наносят режущий урон вместо стандартного для вашей расы урона. Это не влияет на урон, наносимый в любой форме вооруженного ближнего боя. - trait-name-NaturalWeaponRemoval = Удаление природного оружия trait-description-NaturalWeaponRemoval = Любое "природное оружие", с которым обычно рождается ваш вид, было удалено хирургическим путем. Это могло быть сделано для того, чтобы лучше вписаться в земные космические станции, или в качестве косметического решения. В результате ваши атаки без оружия наносят тупой урон вместо стандартного для вашего вида урона. Это не влияет на урон, наносимый в любой форме вооруженного ближнего боя. - trait-name-StrikingCalluses = Поразительные мозоли trait-description-StrikingCalluses = Культовое усовершенствование, широко распространенное в мире кибернетических боевых искусств. @@ -300,12 +237,10 @@ trait-description-StrikingCalluses = Владельцы протезов или бионических конечностей вместо этого будут иметь твердую пластиковую оболочку на костяшках пальцев. Эти улучшения увеличивают ваш урон от удара без оружия на 1 базовое очко, но не дают любые преимущества в любой форме вооруженного ближнего боя. - trait-name-Spinarette = Бионические Фильеры trait-description-Spinarette = Этот орган, выращенный в пробирке, отмеченный торговой маркой и запатентованный корпорацией Cybersun, позиционируется как сугубо утилитарное усовершенствование, и продается в клиниках по всему известному миру. Он состоит из узелка, который традиционно имплантированный прямо под запястьем, он впитывает липиды организма и превращается в натуральный шелк.. Небольшое отверстие на ладони позволяет пользователю "раскручивать" эту нить. Пользователям этого усовершенствования обычно требуется в два раза больше пищи, чем обычному солнечному человеку, из-за высокой метаболической стоимости искусственного шелководства. - trait-name-AddictionNicotine = Никотиновая зависимость trait-description-AddictionNicotine = У вас зависимость от никотина, и вам понадобятся частые перекуры, чтобы сохранить свой рассудок. From 9a4fc81230709bcc0da2f1aa5e0c5a57811503eb Mon Sep 17 00:00:00 2001 From: PowerKAT1 <53919050+PowerKAT1@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:53:11 +0300 Subject: [PATCH 32/44] Add files via upload --- Resources/Maps/_LostParadise/LP_Normandy.yml | 3963 +++++++++++------- 1 file changed, 2432 insertions(+), 1531 deletions(-) diff --git a/Resources/Maps/_LostParadise/LP_Normandy.yml b/Resources/Maps/_LostParadise/LP_Normandy.yml index 2bc50b526e..500d498812 100644 --- a/Resources/Maps/_LostParadise/LP_Normandy.yml +++ b/Resources/Maps/_LostParadise/LP_Normandy.yml @@ -107,7 +107,7 @@ entities: version: 6 0,-1: ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAIQAAAAAAIQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAtQAAAAAADwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADwAAAAAADwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAtQAAAAAAIwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAtQAAAAAAIwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAIQAAAAAAIQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAtQAAAAAADwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADwAAAAAADwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAtQAAAAAAIwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAtQAAAAAAIwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAIQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAA version: 6 -1,0: ind: -1,0 @@ -115,7 +115,7 @@ entities: version: 6 -1,-1: ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAtQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAtQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAtQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAIQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAtQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAtQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAtQAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAfgAAAAAAtQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAA version: 6 -2,-1: ind: -2,-1 @@ -127,7 +127,7 @@ entities: version: 6 -3,0: ind: -3,0 - tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAtQAAAAAABgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAJQAAAAAABgAAAAAABgAAAAAABgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAJQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAABgAAAAAABgAAAAAABgAAAAAAtQAAAAAABgAAAAAABgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAtQAAAAAABgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAJQAAAAAABgAAAAAABgAAAAAABgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAJQAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAABgAAAAAABgAAAAAABgAAAAAAtQAAAAAABgAAAAAABgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAABgAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtQAAAAAABgAAAAAAGAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAfgAAAAAAfgAAAAAAGAAAAAAAfgAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -3,-1: ind: -3,-1 @@ -167,7 +167,7 @@ entities: version: 6 3,0: ind: 3,0 - tiles: HAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAADAAAAAAADAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAtQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAEQAAAAAAEQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAEgAAAAAAEgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADAAAAAAAtQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAANwAAAAAANwAAAAAANwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAANwAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAJwAAAAAA + tiles: HAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAtQAAAAAADAAAAAAADAAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAtQAAAAAADAAAAAAADAAAAAAADAAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAEgAAAAAAEgAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADAAAAAAAtQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAANwAAAAAANwAAAAAANwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAANwAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAJwAAAAAA version: 6 3,-1: ind: 3,-1 @@ -183,7 +183,7 @@ entities: version: 6 3,1: ind: 3,1 - tiles: tQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAJwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAJwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtAAAAAAAtQAAAAAAKgAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAKAAAAAAAKAAAAAAAKAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtAAAAAAAtQAAAAAAKgAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAKAAAAAAAKAAAAAAAKAAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAtAAAAAAAtQAAAAAAEgAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAKAAAAAAAKAAAAAAAKAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAAAgAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAAMQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAJwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAA + tiles: tQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAJwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAJwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtAAAAAAAtQAAAAAAKgAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAKAAAAAAAKAAAAAAAKAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAANwAAAAAANwAAAAAAtQAAAAAAtAAAAAAAtQAAAAAAKgAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAKAAAAAAAKAAAAAAAKAAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAtAAAAAAAtQAAAAAAKgAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAKAAAAAAAKAAAAAAAKAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAANwAAAAAAAgAAAAAANwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAANwAAAAAAAgAAAAAANwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAANwAAAAAANwAAAAAANwAAAAAAMQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAAQAAAAAAEgAAAAAAEgAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAJwAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAAtQAAAAAA version: 6 2,1: ind: 2,1 @@ -1785,6 +1785,8 @@ entities: 2744: 28,25 2745: 28,25 2793: 40,30 + 3120: -44,8 + 3122: -43,10 - node: cleanable: True angle: 1.5707963267948966 rad @@ -1876,6 +1878,8 @@ entities: 2942: 81,-18 2943: 81,-11 2944: 79,-9 + 3123: -43,9 + 3124: -43,8 - node: cleanable: True angle: 2.0943951023931953 rad @@ -2264,6 +2268,7 @@ entities: 2876: 73,-8 2877: 69,-11 2878: 81,-16 + 3125: -43,9 - node: cleanable: True angle: 3.141592653589793 rad @@ -2388,6 +2393,7 @@ entities: 2900: -13,-10 2901: -22,-9 2902: -31,-8 + 3126: -43,10 - node: cleanable: True color: '#FFFFFFFF' @@ -2946,6 +2952,18 @@ entities: id: Rock03 decals: 882: 55.557835,19.889378 + - node: + cleanable: True + color: '#FFFFFFFF' + id: Rock03 + decals: + 3118: -45,8 + - node: + cleanable: True + color: '#FFFFFFFF' + id: Rock04 + decals: + 3119: -43,6 - node: color: '#D4D4D428' id: ThreeQuarterTileOverlayGreyscale180 @@ -3210,11 +3228,7 @@ entities: id: TrimlineInnerNeOverlayGreyscale decals: 1261: 36,-3 - - node: - color: '#52B4E9BE' - id: TrimlineInnerNeOverlayGreyscale - decals: - 753: 57,5 + 3128: 57,5 - node: color: '#9FED5896' id: TrimlineInnerNeOverlayGreyscale @@ -3276,7 +3290,7 @@ entities: color: '#49C423FF' id: TrimlineInnerSeOverlayGreyscale decals: - 747: 57,5 + 3131: 56,5 - node: color: '#52B4E996' id: TrimlineInnerSeOverlayGreyscale @@ -3358,7 +3372,7 @@ entities: color: '#49C423FF' id: TrimlineLineEOverlayGreyscale decals: - 746: 57,4 + 3129: 56,4 - node: color: '#52B4E996' id: TrimlineLineEOverlayGreyscale @@ -3734,6 +3748,7 @@ entities: decals: 744: 59,5 745: 58,5 + 3130: 57,5 - node: color: '#52B4E996' id: TrimlineLineSOverlayGreyscale @@ -4171,6 +4186,12 @@ entities: id: TrimlineThinBoxOverlayGreyscale decals: 1710: 35,-6 + - node: + angle: 1.5707963267948966 rad + color: '#D381C996' + id: TrimlineThinBoxOverlayGreyscale + decals: + 3127: 72,9 - node: color: '#D4D4D428' id: TrimlineThinBoxOverlayGreyscale @@ -6141,7 +6162,8 @@ entities: 11,3: 0: 7676 11,-1: - 0: 62702 + 0: 62694 + 3: 8 11,4: 0: 36863 12,0: @@ -6179,9 +6201,11 @@ entities: 12,-3: 0: 65535 12,-2: - 0: 30511 + 0: 13103 + 3: 17408 12,-1: - 0: 61559 + 3: 1 + 0: 61558 12,4: 0: 28775 13,0: @@ -6245,7 +6269,8 @@ entities: 14,-5: 0: 32631 15,-4: - 0: 29691 + 0: 13307 + 4: 16384 15,-3: 0: 30711 15,-2: @@ -6375,7 +6400,8 @@ entities: 0: 12339 1: 34952 16,7: - 0: 12339 + 0: 12307 + 3: 32 1: 34952 8,5: 0: 57344 @@ -6561,10 +6587,10 @@ entities: 0: 187 1: 28672 17,6: - 3: 224 - 4: 57344 + 5: 224 + 6: 57344 17,7: - 5: 57568 + 7: 57568 18,5: 0: 61661 18,6: @@ -6680,15 +6706,15 @@ entities: 0: 48051 17,9: 1: 65296 - 5: 12 + 7: 12 17,10: 0: 65280 1: 8 17,11: 0: 65535 17,8: - 6: 224 - 5: 57344 + 8: 224 + 7: 57344 18,9: 1: 61696 0: 206 @@ -6713,7 +6739,7 @@ entities: 0: 206 20,8: 0: 2219 - 5: 13056 + 7: 13056 20,9: 1: 48 0: 61576 @@ -6866,36 +6892,36 @@ entities: 21,12: 0: 17527 22,10: - 5: 65280 + 7: 65280 22,11: - 5: 65535 + 7: 65535 22,8: 0: 238 22,12: - 5: 36863 + 7: 36863 22,7: 0: 61166 23,10: - 5: 62208 + 7: 62208 23,11: - 5: 65535 + 7: 65535 23,7: 0: 65535 23,12: - 5: 65535 + 7: 65535 23,8: 0: 136 24,10: - 5: 61440 + 7: 61440 1: 17 24,11: - 5: 16383 + 7: 16383 21,13: 0: 68 24,12: - 5: 65343 + 7: 65343 24,13: - 5: 15 + 7: 15 1: 8704 23,14: 1: 8 @@ -6958,7 +6984,7 @@ entities: 1: 61152 0: 8 25,12: - 5: 1 + 7: 1 1: 61166 25,10: 0: 34816 @@ -6971,7 +6997,7 @@ entities: 25,14: 1: 15 25,13: - 5: 8 + 7: 8 1: 34816 26,14: 1: 3 @@ -7025,6 +7051,36 @@ entities: - 0 - 0 - 0 + - volume: 2500 + temperature: 293.14975 + moles: + - 20.078888 + - 75.53487 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 21.6852 + - 81.57766 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.15 moles: @@ -7111,6 +7167,17 @@ entities: - 4073 - 6375 - 6257 + - uid: 6937 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -39.5,9.5 + parent: 2 + - type: DeviceList + devices: + - 7010 + - 6943 + - 16215 - uid: 7145 components: - type: Transform @@ -7653,7 +7720,7 @@ entities: - 4137 - 4138 - 6276 - - 6275 + - 12440 - uid: 15349 components: - type: Transform @@ -7669,7 +7736,7 @@ entities: - 4137 - 4136 - 6277 - - 6274 + - 12383 - uid: 15351 components: - type: Transform @@ -8436,7 +8503,7 @@ entities: - 15455 - 4016 - 12166 - - 6204 + - 12382 - 6324 - uid: 15485 components: @@ -8724,6 +8791,11 @@ entities: rot: 3.141592653589793 rad pos: 62.5,45.5 parent: 2 + - uid: 12619 + components: + - type: Transform + pos: -41.5,10.5 + parent: 2 - proto: AirlockArmoryGlassLocked entities: - uid: 14 @@ -8738,11 +8810,6 @@ entities: - type: Transform pos: 80.5,22.5 parent: 2 - - uid: 12203 - components: - - type: Transform - pos: 83.5,17.5 - parent: 2 - uid: 12204 components: - type: Transform @@ -8950,6 +9017,12 @@ entities: - type: Transform pos: 53.5,-28.5 parent: 2 + - uid: 74 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 83.5,17.5 + parent: 2 - uid: 3957 components: - type: Transform @@ -9258,6 +9331,13 @@ entities: rot: 1.5707963267948966 rad pos: 21.5,-1.5 parent: 2 +- proto: AirlockJusticeLocked + entities: + - uid: 144 + components: + - type: Transform + pos: -5.5,10.5 + parent: 2 - proto: AirlockKitchenGlassLocked entities: - uid: 12143 @@ -9276,11 +9356,6 @@ entities: parent: 2 - proto: AirlockLawyerLocked entities: - - uid: 74 - components: - - type: Transform - pos: -5.5,10.5 - parent: 2 - uid: 75 components: - type: Transform @@ -9806,13 +9881,6 @@ entities: - type: Transform pos: 46.5,25.5 parent: 2 -- proto: AirlockSecurity - entities: - - uid: 144 - components: - - type: Transform - pos: -38.5,6.5 - parent: 2 - proto: AirlockSecurityGlassLocked entities: - uid: 145 @@ -9891,6 +9959,13 @@ entities: - type: Transform pos: -20.5,-1.5 parent: 2 +- proto: AirlockSecurityLocked + entities: + - uid: 171 + components: + - type: Transform + pos: -38.5,6.5 + parent: 2 - proto: AirlockShuttle entities: - uid: 15469 @@ -10027,11 +10102,6 @@ entities: parent: 2 - proto: APCBasic entities: - - uid: 171 - components: - - type: Transform - pos: -46.5,4.5 - parent: 2 - uid: 172 components: - type: Transform @@ -10241,6 +10311,11 @@ entities: rot: -1.5707963267948966 rad pos: 96.5,-26.5 parent: 2 + - uid: 2275 + components: + - type: Transform + pos: -65.5,4.5 + parent: 2 - uid: 11653 components: - type: Transform @@ -10339,6 +10414,12 @@ entities: rot: 3.141592653589793 rad pos: 72.5,-9.5 parent: 2 + - uid: 16220 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,8.5 + parent: 2 - proto: APCElectronics entities: - uid: 211 @@ -10490,21 +10571,6 @@ entities: - type: Transform pos: 81.5,34.5 parent: 2 - - uid: 254 - components: - - type: Transform - pos: 89.5,43.5 - parent: 2 - - uid: 255 - components: - - type: Transform - pos: 88.5,44.5 - parent: 2 - - uid: 256 - components: - - type: Transform - pos: 88.5,46.5 - parent: 2 - uid: 257 components: - type: Transform @@ -10515,15 +10581,10 @@ entities: - type: Transform pos: 88.5,50.5 parent: 2 - - uid: 259 - components: - - type: Transform - pos: 88.5,45.5 - parent: 2 - uid: 260 components: - type: Transform - pos: 89.5,42.5 + pos: 94.5,51.5 parent: 2 - uid: 261 components: @@ -10570,6 +10631,21 @@ entities: - type: Transform pos: 81.5,35.5 parent: 2 + - uid: 338 + components: + - type: Transform + pos: 92.5,51.5 + parent: 2 + - uid: 347 + components: + - type: Transform + pos: 93.5,51.5 + parent: 2 + - uid: 788 + components: + - type: Transform + pos: 95.5,51.5 + parent: 2 - uid: 1595 components: - type: Transform @@ -10600,11 +10676,6 @@ entities: - type: Transform pos: 93.5,42.5 parent: 2 - - uid: 2271 - components: - - type: Transform - pos: 93.5,43.5 - parent: 2 - uid: 2272 components: - type: Transform @@ -10615,11 +10686,6 @@ entities: - type: Transform pos: 93.5,46.5 parent: 2 - - uid: 2274 - components: - - type: Transform - pos: 93.5,44.5 - parent: 2 - uid: 2280 components: - type: Transform @@ -10660,16 +10726,6 @@ entities: - type: Transform pos: 98.5,50.5 parent: 2 - - uid: 3269 - components: - - type: Transform - pos: 88.5,42.5 - parent: 2 - - uid: 4312 - components: - - type: Transform - pos: 95.5,48.5 - parent: 2 - uid: 4313 components: - type: Transform @@ -10678,28 +10734,23 @@ entities: - uid: 4314 components: - type: Transform - pos: 88.5,43.5 + pos: 95.5,43.5 parent: 2 - - uid: 4337 + - uid: 4336 components: - type: Transform - pos: 89.5,44.5 + pos: 95.5,44.5 parent: 2 - - uid: 4338 + - uid: 4337 components: - type: Transform - pos: 89.5,46.5 + pos: 94.5,43.5 parent: 2 - uid: 4339 components: - type: Transform pos: 89.5,47.5 parent: 2 - - uid: 4340 - components: - - type: Transform - pos: 89.5,45.5 - parent: 2 - uid: 4341 components: - type: Transform @@ -10725,16 +10776,6 @@ entities: - type: Transform pos: 89.5,50.5 parent: 2 - - uid: 4607 - components: - - type: Transform - pos: 90.5,42.5 - parent: 2 - - uid: 4608 - components: - - type: Transform - pos: 90.5,45.5 - parent: 2 - uid: 4609 components: - type: Transform @@ -10765,16 +10806,6 @@ entities: - type: Transform pos: 96.5,50.5 parent: 2 - - uid: 4615 - components: - - type: Transform - pos: 90.5,43.5 - parent: 2 - - uid: 4616 - components: - - type: Transform - pos: 90.5,44.5 - parent: 2 - uid: 4618 components: - type: Transform @@ -10815,15 +10846,15 @@ entities: - type: Transform pos: 94.5,49.5 parent: 2 - - uid: 6321 + - uid: 6764 components: - type: Transform - pos: 94.5,51.5 + pos: 93.5,43.5 parent: 2 - - uid: 6765 + - uid: 6769 components: - type: Transform - pos: 95.5,51.5 + pos: 94.5,44.5 parent: 2 - uid: 6770 components: @@ -10855,26 +10886,11 @@ entities: - type: Transform pos: 91.5,49.5 parent: 2 - - uid: 6776 - components: - - type: Transform - pos: 92.5,43.5 - parent: 2 - uid: 6777 components: - type: Transform pos: 91.5,46.5 parent: 2 - - uid: 6779 - components: - - type: Transform - pos: 95.5,47.5 - parent: 2 - - uid: 6780 - components: - - type: Transform - pos: 95.5,43.5 - parent: 2 - uid: 6781 components: - type: Transform @@ -10885,11 +10901,6 @@ entities: - type: Transform pos: 99.5,45.5 parent: 2 - - uid: 6914 - components: - - type: Transform - pos: 92.5,51.5 - parent: 2 - uid: 6916 components: - type: Transform @@ -10945,21 +10956,11 @@ entities: - type: Transform pos: 93.5,48.5 parent: 2 - - uid: 8072 - components: - - type: Transform - pos: 93.5,51.5 - parent: 2 - uid: 8073 components: - type: Transform pos: 98.5,44.5 parent: 2 - - uid: 8074 - components: - - type: Transform - pos: 94.5,44.5 - parent: 2 - uid: 8076 components: - type: Transform @@ -10975,21 +10976,11 @@ entities: - type: Transform pos: 98.5,46.5 parent: 2 - - uid: 8079 - components: - - type: Transform - pos: 95.5,44.5 - parent: 2 - uid: 8080 components: - type: Transform pos: 98.5,45.5 parent: 2 - - uid: 8081 - components: - - type: Transform - pos: 94.5,43.5 - parent: 2 - uid: 8107 components: - type: Transform @@ -11010,11 +11001,6 @@ entities: - type: Transform pos: 93.5,49.5 parent: 2 - - uid: 8683 - components: - - type: Transform - pos: 91.5,43.5 - parent: 2 - uid: 8701 components: - type: Transform @@ -11040,11 +11026,6 @@ entities: - type: Transform pos: 92.5,42.5 parent: 2 - - uid: 10177 - components: - - type: Transform - pos: 92.5,44.5 - parent: 2 - uid: 10178 components: - type: Transform @@ -11055,11 +11036,6 @@ entities: - type: Transform pos: 92.5,46.5 parent: 2 - - uid: 11538 - components: - - type: Transform - pos: 95.5,46.5 - parent: 2 - uid: 11539 components: - type: Transform @@ -11070,11 +11046,6 @@ entities: - type: Transform pos: 91.5,45.5 parent: 2 - - uid: 12008 - components: - - type: Transform - pos: 91.5,44.5 - parent: 2 - uid: 12639 components: - type: Transform @@ -11130,6 +11101,31 @@ entities: - type: Transform pos: 69.5,35.5 parent: 2 + - uid: 16267 + components: + - type: Transform + pos: 93.5,44.5 + parent: 2 + - uid: 16268 + components: + - type: Transform + pos: 92.5,43.5 + parent: 2 + - uid: 16269 + components: + - type: Transform + pos: 92.5,44.5 + parent: 2 + - uid: 16270 + components: + - type: Transform + pos: 91.5,43.5 + parent: 2 + - uid: 16271 + components: + - type: Transform + pos: 91.5,44.5 + parent: 2 - proto: AtmosFixFreezerMarker entities: - uid: 271 @@ -11280,6 +11276,11 @@ entities: - type: Transform pos: 83.5,14.5 parent: 2 + - uid: 2246 + components: + - type: Transform + pos: -46.5,5.5 + parent: 2 - proto: AutolatheMachineCircuitboard entities: - uid: 214 @@ -11692,10 +11693,10 @@ entities: parent: 2 - proto: BaseBallBat entities: - - uid: 338 + - uid: 2248 components: - type: Transform - pos: -42.528946,8.562815 + pos: -45.889557,8.607788 parent: 2 - proto: BaseChemistryEmptyVial entities: @@ -11705,6 +11706,13 @@ entities: rot: 1.5707963267948966 rad pos: 37.677868,23.338121 parent: 2 +- proto: Basketball + entities: + - uid: 2245 + components: + - type: Transform + pos: -45.717552,8.451538 + parent: 2 - proto: Bed entities: - uid: 339 @@ -11732,21 +11740,6 @@ entities: - type: Transform pos: -20.5,3.5 parent: 2 - - uid: 344 - components: - - type: Transform - pos: -46.5,5.5 - parent: 2 - - uid: 345 - components: - - type: Transform - pos: -48.5,8.5 - parent: 2 - - uid: 347 - components: - - type: Transform - pos: -48.5,5.5 - parent: 2 - uid: 348 components: - type: Transform @@ -11777,6 +11770,16 @@ entities: - type: Transform pos: 16.5,-2.5 parent: 2 + - uid: 8079 + components: + - type: Transform + pos: -37.5,11.5 + parent: 2 + - uid: 8081 + components: + - type: Transform + pos: -37.5,10.5 + parent: 2 - proto: BedsheetBlack entities: - uid: 354 @@ -11877,20 +11880,15 @@ entities: - type: Transform pos: -33.5,-4.5 parent: 2 - - uid: 12440 - components: - - type: Transform - pos: -48.5,5.5 - parent: 2 - - uid: 12442 + - uid: 6946 components: - type: Transform - pos: -46.5,5.5 + pos: -37.5,11.5 parent: 2 - - uid: 12444 + - uid: 12624 components: - type: Transform - pos: -48.5,8.5 + pos: -37.5,10.5 parent: 2 - proto: BedsheetQM entities: @@ -12058,6 +12056,11 @@ entities: parent: 2 - proto: BenchSteelLeft entities: + - uid: 13393 + components: + - type: Transform + pos: -14.5,-6.5 + parent: 2 - uid: 13442 components: - type: Transform @@ -12071,6 +12074,16 @@ entities: parent: 2 - proto: BenchSteelMiddle entities: + - uid: 2252 + components: + - type: Transform + pos: -15.5,-6.5 + parent: 2 + - uid: 2261 + components: + - type: Transform + pos: -16.5,-6.5 + parent: 2 - uid: 13441 components: - type: Transform @@ -12084,6 +12097,11 @@ entities: parent: 2 - proto: BenchSteelRight entities: + - uid: 13394 + components: + - type: Transform + pos: -17.5,-6.5 + parent: 2 - uid: 13443 components: - type: Transform @@ -12921,16 +12939,6 @@ entities: rot: -1.5707963267948966 rad pos: 88.5,28.5 parent: 2 - - uid: 13391 - components: - - type: Transform - pos: -16.5,-5.5 - parent: 2 - - uid: 13393 - components: - - type: Transform - pos: -15.5,-5.5 - parent: 2 - proto: ButtonFrameCautionSecurity entities: - uid: 472 @@ -14511,26 +14519,11 @@ entities: - type: Transform pos: -68.5,6.5 parent: 2 - - uid: 786 - components: - - type: Transform - pos: -68.5,5.5 - parent: 2 - uid: 787 components: - type: Transform pos: -68.5,4.5 parent: 2 - - uid: 788 - components: - - type: Transform - pos: -70.5,4.5 - parent: 2 - - uid: 789 - components: - - type: Transform - pos: -71.5,4.5 - parent: 2 - uid: 790 components: - type: Transform @@ -14541,11 +14534,6 @@ entities: - type: Transform pos: -73.5,4.5 parent: 2 - - uid: 792 - components: - - type: Transform - pos: -69.5,4.5 - parent: 2 - uid: 793 components: - type: Transform @@ -18241,11 +18229,21 @@ entities: - type: Transform pos: 89.5,48.5 parent: 2 + - uid: 1577 + components: + - type: Transform + pos: 92.5,43.5 + parent: 2 - uid: 1578 components: - type: Transform pos: 99.5,49.5 parent: 2 + - uid: 1579 + components: + - type: Transform + pos: 90.5,43.5 + parent: 2 - uid: 1580 components: - type: Transform @@ -18271,16 +18269,116 @@ entities: - type: Transform pos: 97.5,50.5 parent: 2 + - uid: 1596 + components: + - type: Transform + pos: 91.5,43.5 + parent: 2 + - uid: 2095 + components: + - type: Transform + pos: 94.5,43.5 + parent: 2 + - uid: 2096 + components: + - type: Transform + pos: 95.5,43.5 + parent: 2 + - uid: 2230 + components: + - type: Transform + pos: 93.5,43.5 + parent: 2 + - uid: 2241 + components: + - type: Transform + pos: 88.5,45.5 + parent: 2 + - uid: 2242 + components: + - type: Transform + pos: 87.5,46.5 + parent: 2 + - uid: 2262 + components: + - type: Transform + pos: -71.5,6.5 + parent: 2 + - uid: 2271 + components: + - type: Transform + pos: -69.5,6.5 + parent: 2 + - uid: 2274 + components: + - type: Transform + pos: -70.5,6.5 + parent: 2 + - uid: 2279 + components: + - type: Transform + pos: 90.5,44.5 + parent: 2 - uid: 2544 components: - type: Transform pos: 72.5,-8.5 parent: 2 + - uid: 3068 + components: + - type: Transform + pos: 88.5,46.5 + parent: 2 - uid: 4291 components: - type: Transform pos: 42.5,-24.5 parent: 2 + - uid: 5507 + components: + - type: Transform + pos: -67.5,3.5 + parent: 2 + - uid: 5723 + components: + - type: Transform + pos: -68.5,-3.5 + parent: 2 + - uid: 5971 + components: + - type: Transform + pos: -68.5,-4.5 + parent: 2 + - uid: 5972 + components: + - type: Transform + pos: -68.5,-5.5 + parent: 2 + - uid: 5973 + components: + - type: Transform + pos: -67.5,-5.5 + parent: 2 + - uid: 5974 + components: + - type: Transform + pos: -68.5,-1.5 + parent: 2 + - uid: 5975 + components: + - type: Transform + pos: -68.5,3.5 + parent: 2 + - uid: 5986 + components: + - type: Transform + pos: -68.5,2.5 + parent: 2 + - uid: 5987 + components: + - type: Transform + pos: -65.5,4.5 + parent: 2 - uid: 6907 components: - type: Transform @@ -18291,6 +18389,31 @@ entities: - type: Transform pos: 65.5,48.5 parent: 2 + - uid: 6947 + components: + - type: Transform + pos: -43.5,7.5 + parent: 2 + - uid: 6948 + components: + - type: Transform + pos: -43.5,8.5 + parent: 2 + - uid: 6950 + components: + - type: Transform + pos: -42.5,10.5 + parent: 2 + - uid: 6951 + components: + - type: Transform + pos: -42.5,11.5 + parent: 2 + - uid: 7020 + components: + - type: Transform + pos: -43.5,10.5 + parent: 2 - uid: 7088 components: - type: Transform @@ -18311,6 +18434,26 @@ entities: - type: Transform pos: 58.5,43.5 parent: 2 + - uid: 7142 + components: + - type: Transform + pos: -43.5,11.5 + parent: 2 + - uid: 7143 + components: + - type: Transform + pos: -41.5,10.5 + parent: 2 + - uid: 7465 + components: + - type: Transform + pos: -42.5,8.5 + parent: 2 + - uid: 7543 + components: + - type: Transform + pos: -42.5,9.5 + parent: 2 - uid: 7559 components: - type: Transform @@ -19726,51 +19869,6 @@ entities: - type: Transform pos: 87.5,42.5 parent: 2 - - uid: 11981 - components: - - type: Transform - pos: 87.5,43.5 - parent: 2 - - uid: 11982 - components: - - type: Transform - pos: 88.5,43.5 - parent: 2 - - uid: 11983 - components: - - type: Transform - pos: 89.5,43.5 - parent: 2 - - uid: 11984 - components: - - type: Transform - pos: 90.5,43.5 - parent: 2 - - uid: 11985 - components: - - type: Transform - pos: 91.5,43.5 - parent: 2 - - uid: 11986 - components: - - type: Transform - pos: 92.5,43.5 - parent: 2 - - uid: 11987 - components: - - type: Transform - pos: 93.5,43.5 - parent: 2 - - uid: 11988 - components: - - type: Transform - pos: 94.5,43.5 - parent: 2 - - uid: 11989 - components: - - type: Transform - pos: 95.5,43.5 - parent: 2 - uid: 11990 components: - type: Transform @@ -20176,6 +20274,21 @@ entities: - type: Transform pos: 103.5,43.5 parent: 2 + - uid: 12501 + components: + - type: Transform + pos: 90.5,42.5 + parent: 2 + - uid: 12566 + components: + - type: Transform + pos: 89.5,42.5 + parent: 2 + - uid: 12614 + components: + - type: Transform + pos: -46.5,2.5 + parent: 2 - uid: 12660 components: - type: Transform @@ -20666,6 +20779,11 @@ entities: - type: Transform pos: 81.5,35.5 parent: 2 + - uid: 12833 + components: + - type: Transform + pos: 89.5,44.5 + parent: 2 - uid: 12852 components: - type: Transform @@ -20836,6 +20954,36 @@ entities: - type: Transform pos: -15.5,-12.5 parent: 2 + - uid: 13336 + components: + - type: Transform + pos: 88.5,42.5 + parent: 2 + - uid: 13357 + components: + - type: Transform + pos: 89.5,45.5 + parent: 2 + - uid: 13385 + components: + - type: Transform + pos: -45.5,2.5 + parent: 2 + - uid: 13391 + components: + - type: Transform + pos: -47.5,2.5 + parent: 2 + - uid: 13405 + components: + - type: Transform + pos: -40.5,10.5 + parent: 2 + - uid: 13410 + components: + - type: Transform + pos: -38.5,10.5 + parent: 2 - uid: 13547 components: - type: Transform @@ -23251,6 +23399,16 @@ entities: - type: Transform pos: 92.5,13.5 parent: 2 + - uid: 16203 + components: + - type: Transform + pos: -46.5,1.5 + parent: 2 + - uid: 16219 + components: + - type: Transform + pos: -39.5,10.5 + parent: 2 - proto: CableApcStack entities: - uid: 1532 @@ -23275,11 +23433,31 @@ entities: parent: 2 - proto: CableHV entities: + - uid: 259 + components: + - type: Transform + pos: -59.5,-4.5 + parent: 2 - uid: 376 components: - type: Transform pos: 14.5,1.5 parent: 2 + - uid: 786 + components: + - type: Transform + pos: 79.5,42.5 + parent: 2 + - uid: 789 + components: + - type: Transform + pos: -59.5,-3.5 + parent: 2 + - uid: 792 + components: + - type: Transform + pos: -60.5,-3.5 + parent: 2 - uid: 1534 components: - type: Transform @@ -23478,22 +23656,12 @@ entities: - uid: 1575 components: - type: Transform - pos: 83.5,47.5 + pos: -62.5,-3.5 parent: 2 - uid: 1576 components: - type: Transform - pos: 82.5,47.5 - parent: 2 - - uid: 1577 - components: - - type: Transform - pos: 81.5,47.5 - parent: 2 - - uid: 1579 - components: - - type: Transform - pos: 84.5,47.5 + pos: -61.5,-3.5 parent: 2 - uid: 1581 components: @@ -23530,31 +23698,6 @@ entities: - type: Transform pos: 80.5,47.5 parent: 2 - - uid: 1593 - components: - - type: Transform - pos: 86.5,44.5 - parent: 2 - - uid: 1594 - components: - - type: Transform - pos: 86.5,43.5 - parent: 2 - - uid: 1596 - components: - - type: Transform - pos: 86.5,42.5 - parent: 2 - - uid: 1597 - components: - - type: Transform - pos: 86.5,46.5 - parent: 2 - - uid: 1598 - components: - - type: Transform - pos: 86.5,45.5 - parent: 2 - uid: 1602 components: - type: Transform @@ -24700,11 +24843,6 @@ entities: - type: Transform pos: -64.5,4.5 parent: 2 - - uid: 1833 - components: - - type: Transform - pos: -54.5,4.5 - parent: 2 - uid: 1834 components: - type: Transform @@ -25810,30 +25948,180 @@ entities: - type: Transform pos: 74.5,-30.5 parent: 2 - - uid: 2807 + - uid: 2276 components: - type: Transform - pos: 86.5,41.5 + pos: 79.5,43.5 + parent: 2 + - uid: 2277 + components: + - type: Transform + pos: 79.5,44.5 + parent: 2 + - uid: 2278 + components: + - type: Transform + pos: 79.5,41.5 + parent: 2 + - uid: 3123 + components: + - type: Transform + pos: 91.5,45.5 + parent: 2 + - uid: 4222 + components: + - type: Transform + pos: 80.5,40.5 + parent: 2 + - uid: 4240 + components: + - type: Transform + pos: 83.5,40.5 + parent: 2 + - uid: 4241 + components: + - type: Transform + pos: 82.5,40.5 parent: 2 - uid: 4279 components: - type: Transform - pos: 85.5,47.5 + pos: 79.5,40.5 + parent: 2 + - uid: 4298 + components: + - type: Transform + pos: -57.5,3.5 + parent: 2 + - uid: 4299 + components: + - type: Transform + pos: 81.5,40.5 + parent: 2 + - uid: 4338 + components: + - type: Transform + pos: 91.5,44.5 + parent: 2 + - uid: 4340 + components: + - type: Transform + pos: 93.5,44.5 + parent: 2 + - uid: 4360 + components: + - type: Transform + pos: 96.5,45.5 parent: 2 - uid: 4362 components: - type: Transform - pos: 86.5,47.5 + pos: 96.5,47.5 parent: 2 - - uid: 8075 + - uid: 4450 components: - type: Transform - pos: 87.5,47.5 + pos: 96.5,49.5 parent: 2 - - uid: 8083 + - uid: 4453 components: - type: Transform - pos: 88.5,47.5 + pos: 95.5,49.5 + parent: 2 + - uid: 4454 + components: + - type: Transform + pos: 94.5,44.5 + parent: 2 + - uid: 4529 + components: + - type: Transform + pos: 91.5,49.5 + parent: 2 + - uid: 4608 + components: + - type: Transform + pos: 95.5,44.5 + parent: 2 + - uid: 6204 + components: + - type: Transform + pos: -55.5,3.5 + parent: 2 + - uid: 6274 + components: + - type: Transform + pos: -56.5,3.5 + parent: 2 + - uid: 6275 + components: + - type: Transform + pos: 86.5,48.5 + parent: 2 + - uid: 6321 + components: + - type: Transform + pos: 85.5,48.5 + parent: 2 + - uid: 6442 + components: + - type: Transform + pos: 84.5,48.5 + parent: 2 + - uid: 6443 + components: + - type: Transform + pos: 83.5,48.5 + parent: 2 + - uid: 6450 + components: + - type: Transform + pos: 82.5,48.5 + parent: 2 + - uid: 6453 + components: + - type: Transform + pos: 81.5,48.5 + parent: 2 + - uid: 6765 + components: + - type: Transform + pos: 88.5,48.5 + parent: 2 + - uid: 6768 + components: + - type: Transform + pos: 87.5,48.5 + parent: 2 + - uid: 6776 + components: + - type: Transform + pos: 95.5,45.5 + parent: 2 + - uid: 6778 + components: + - type: Transform + pos: 89.5,48.5 + parent: 2 + - uid: 6785 + components: + - type: Transform + pos: 92.5,44.5 + parent: 2 + - uid: 6914 + components: + - type: Transform + pos: 96.5,46.5 + parent: 2 + - uid: 6915 + components: + - type: Transform + pos: 96.5,48.5 + parent: 2 + - uid: 8403 + components: + - type: Transform + pos: 93.5,50.5 parent: 2 - uid: 11743 components: @@ -25890,11 +26178,6 @@ entities: - type: Transform pos: 52.5,31.5 parent: 2 - - uid: 12569 - components: - - type: Transform - pos: 89.5,47.5 - parent: 2 - uid: 12570 components: - type: Transform @@ -25910,210 +26193,235 @@ entities: - type: Transform pos: 90.5,45.5 parent: 2 - - uid: 12573 + - uid: 12580 components: - type: Transform - pos: 90.5,44.5 + pos: 90.5,48.5 parent: 2 - - uid: 12574 + - uid: 12581 components: - type: Transform - pos: 90.5,43.5 + pos: 90.5,49.5 parent: 2 - - uid: 12575 + - uid: 12583 components: - type: Transform - pos: 91.5,43.5 + pos: 91.5,50.5 parent: 2 - - uid: 12576 + - uid: 12607 components: - type: Transform - pos: 92.5,43.5 + pos: 95.5,50.5 parent: 2 - - uid: 12577 + - uid: 12622 components: - type: Transform - pos: 93.5,43.5 + pos: 79.5,45.5 parent: 2 - - uid: 12578 + - uid: 12626 components: - type: Transform - pos: 94.5,43.5 + pos: 79.5,47.5 parent: 2 - - uid: 12579 + - uid: 12631 components: - type: Transform - pos: 95.5,43.5 + pos: 94.5,50.5 parent: 2 - - uid: 12580 + - uid: 12705 components: - type: Transform - pos: 90.5,48.5 + pos: 92.5,50.5 parent: 2 - - uid: 12581 + - uid: 13402 components: - type: Transform - pos: 90.5,49.5 + pos: -58.5,3.5 parent: 2 - - uid: 12582 + - uid: 13416 components: - type: Transform - pos: 90.5,50.5 + pos: 79.5,46.5 parent: 2 - - uid: 12583 + - uid: 13964 components: - type: Transform - pos: 91.5,50.5 + pos: 67.5,-27.5 parent: 2 - - uid: 12584 + - uid: 13965 components: - type: Transform - pos: 91.5,51.5 + pos: 66.5,-27.5 parent: 2 - - uid: 12585 + - uid: 13966 components: - type: Transform - pos: 92.5,51.5 + pos: 66.5,-28.5 parent: 2 - - uid: 12586 + - uid: 13967 components: - type: Transform - pos: 93.5,51.5 + pos: 66.5,-29.5 parent: 2 - - uid: 12587 + - uid: 13968 components: - type: Transform - pos: 94.5,51.5 + pos: 66.5,-30.5 parent: 2 - - uid: 12588 + - uid: 13982 components: - type: Transform - pos: 95.5,51.5 + pos: 69.5,-33.5 parent: 2 - - uid: 12601 + - uid: 13983 components: - type: Transform - pos: 95.5,44.5 + pos: 70.5,-33.5 parent: 2 - - uid: 12602 + - uid: 13984 components: - type: Transform - pos: 95.5,45.5 + pos: 71.5,-33.5 parent: 2 - - uid: 12603 + - uid: 13985 components: - type: Transform - pos: 95.5,46.5 + pos: 72.5,-33.5 parent: 2 - - uid: 12604 + - uid: 14632 components: - type: Transform - pos: 95.5,47.5 + pos: 47.5,21.5 parent: 2 - - uid: 12605 + - uid: 14638 components: - type: Transform - pos: 95.5,48.5 + pos: 47.5,25.5 parent: 2 - - uid: 12606 + - uid: 14729 components: - type: Transform - pos: 95.5,49.5 + pos: 47.5,26.5 parent: 2 - - uid: 12607 + - uid: 14732 components: - type: Transform - pos: 95.5,50.5 + pos: 47.5,27.5 parent: 2 - - uid: 12608 + - uid: 14733 components: - type: Transform - pos: 85.5,41.5 + pos: 47.5,28.5 parent: 2 - - uid: 12649 + - uid: 14734 components: - type: Transform - pos: 84.5,41.5 + pos: 47.5,29.5 parent: 2 - - uid: 13964 + - uid: 14736 components: - type: Transform - pos: 67.5,-27.5 + pos: 47.5,23.5 parent: 2 - - uid: 13965 + - uid: 16272 components: - type: Transform - pos: 66.5,-27.5 + pos: -63.5,-3.5 parent: 2 - - uid: 13966 + - uid: 16273 components: - type: Transform - pos: 66.5,-28.5 + pos: -64.5,-3.5 parent: 2 - - uid: 13967 + - uid: 16274 components: - type: Transform - pos: 66.5,-29.5 + pos: -65.5,-3.5 parent: 2 - - uid: 13968 + - uid: 16277 components: - type: Transform - pos: 66.5,-30.5 + pos: -59.5,3.5 parent: 2 - - uid: 13982 + - uid: 16278 components: - type: Transform - pos: 69.5,-33.5 + pos: -59.5,4.5 parent: 2 - - uid: 13983 + - uid: 16279 components: - type: Transform - pos: 70.5,-33.5 + pos: -59.5,5.5 parent: 2 - - uid: 13984 + - uid: 16280 components: - type: Transform - pos: 71.5,-33.5 + pos: -59.5,6.5 parent: 2 - - uid: 13985 + - uid: 16281 components: - type: Transform - pos: 72.5,-33.5 + pos: -59.5,7.5 parent: 2 - - uid: 14632 + - uid: 16282 components: - type: Transform - pos: 47.5,21.5 + pos: -59.5,8.5 parent: 2 - - uid: 14638 + - uid: 16283 components: - type: Transform - pos: 47.5,25.5 + pos: -58.5,8.5 parent: 2 - - uid: 14729 + - uid: 16284 components: - type: Transform - pos: 47.5,26.5 + pos: -57.5,8.5 parent: 2 - - uid: 14732 + - uid: 16285 components: - type: Transform - pos: 47.5,27.5 + pos: -56.5,8.5 parent: 2 - - uid: 14733 + - uid: 16286 components: - type: Transform - pos: 47.5,28.5 + pos: -56.5,7.5 parent: 2 - - uid: 14734 + - uid: 16287 components: - type: Transform - pos: 47.5,29.5 + pos: -56.5,6.5 parent: 2 - - uid: 14736 + - uid: 16288 components: - type: Transform - pos: 47.5,23.5 + pos: -55.5,6.5 + parent: 2 + - uid: 16289 + components: + - type: Transform + pos: -54.5,6.5 + parent: 2 + - uid: 16290 + components: + - type: Transform + pos: -53.5,6.5 + parent: 2 + - uid: 16292 + components: + - type: Transform + pos: -53.5,7.5 + parent: 2 + - uid: 16293 + components: + - type: Transform + pos: -52.5,7.5 + parent: 2 + - uid: 16294 + components: + - type: Transform + pos: -51.5,7.5 parent: 2 - proto: CableHVStack entities: @@ -26144,6 +26452,16 @@ entities: - type: Transform pos: 19.5,31.5 parent: 2 + - uid: 254 + components: + - type: Transform + pos: -37.5,6.5 + parent: 2 + - uid: 1598 + components: + - type: Transform + pos: 95.5,50.5 + parent: 2 - uid: 2040 components: - type: Transform @@ -26234,11 +26552,6 @@ entities: - type: Transform pos: -32.5,11.5 parent: 2 - - uid: 2094 - components: - - type: Transform - pos: -33.5,11.5 - parent: 2 - uid: 2097 components: - type: Transform @@ -26899,11 +27212,6 @@ entities: - type: Transform pos: -64.5,4.5 parent: 2 - - uid: 2230 - components: - - type: Transform - pos: -64.5,3.5 - parent: 2 - uid: 2231 components: - type: Transform @@ -26954,66 +27262,6 @@ entities: - type: Transform pos: -68.5,9.5 parent: 2 - - uid: 2241 - components: - - type: Transform - pos: -68.5,2.5 - parent: 2 - - uid: 2242 - components: - - type: Transform - pos: -68.5,1.5 - parent: 2 - - uid: 2243 - components: - - type: Transform - pos: -68.5,0.5 - parent: 2 - - uid: 2244 - components: - - type: Transform - pos: -68.5,-0.5 - parent: 2 - - uid: 2245 - components: - - type: Transform - pos: -68.5,-1.5 - parent: 2 - - uid: 2246 - components: - - type: Transform - pos: -68.5,-2.5 - parent: 2 - - uid: 2247 - components: - - type: Transform - pos: -68.5,-3.5 - parent: 2 - - uid: 2248 - components: - - type: Transform - pos: -68.5,-4.5 - parent: 2 - - uid: 2249 - components: - - type: Transform - pos: -68.5,-5.5 - parent: 2 - - uid: 2250 - components: - - type: Transform - pos: -67.5,-5.5 - parent: 2 - - uid: 2251 - components: - - type: Transform - pos: -66.5,-5.5 - parent: 2 - - uid: 2252 - components: - - type: Transform - pos: -65.5,-5.5 - parent: 2 - uid: 2253 components: - type: Transform @@ -27054,16 +27302,6 @@ entities: - type: Transform pos: -53.5,3.5 parent: 2 - - uid: 2261 - components: - - type: Transform - pos: -54.5,4.5 - parent: 2 - - uid: 2262 - components: - - type: Transform - pos: -54.5,3.5 - parent: 2 - uid: 2263 components: - type: Transform @@ -27099,41 +27337,11 @@ entities: - type: Transform pos: -49.5,0.5 parent: 2 - - uid: 2275 - components: - - type: Transform - pos: 84.5,47.5 - parent: 2 - - uid: 2276 - components: - - type: Transform - pos: 83.5,47.5 - parent: 2 - - uid: 2277 - components: - - type: Transform - pos: 82.5,47.5 - parent: 2 - - uid: 2278 - components: - - type: Transform - pos: 81.5,47.5 - parent: 2 - - uid: 2279 - components: - - type: Transform - pos: 80.5,47.5 - parent: 2 - uid: 2283 components: - type: Transform pos: 78.5,49.5 parent: 2 - - uid: 2284 - components: - - type: Transform - pos: 79.5,47.5 - parent: 2 - uid: 2285 components: - type: Transform @@ -28749,10 +28957,10 @@ entities: - type: Transform pos: 33.5,27.5 parent: 2 - - uid: 4299 + - uid: 4242 components: - type: Transform - pos: 89.5,47.5 + pos: 79.5,48.5 parent: 2 - uid: 4389 components: @@ -28769,10 +28977,40 @@ entities: - type: Transform pos: 24.5,28.5 parent: 2 - - uid: 6778 + - uid: 4604 components: - type: Transform - pos: 86.5,47.5 + pos: 94.5,50.5 + parent: 2 + - uid: 4686 + components: + - type: Transform + pos: 81.5,48.5 + parent: 2 + - uid: 4688 + components: + - type: Transform + pos: 80.5,48.5 + parent: 2 + - uid: 5014 + components: + - type: Transform + pos: -40.5,6.5 + parent: 2 + - uid: 6046 + components: + - type: Transform + pos: -65.5,4.5 + parent: 2 + - uid: 6145 + components: + - type: Transform + pos: -65.5,-5.5 + parent: 2 + - uid: 6193 + components: + - type: Transform + pos: -65.5,-4.5 parent: 2 - uid: 6783 components: @@ -28784,11 +29022,6 @@ entities: - type: Transform pos: 92.5,50.5 parent: 2 - - uid: 6915 - components: - - type: Transform - pos: 85.5,47.5 - parent: 2 - uid: 6919 components: - type: Transform @@ -28809,26 +29042,16 @@ entities: - type: Transform pos: 90.5,50.5 parent: 2 - - uid: 8082 - components: - - type: Transform - pos: 88.5,47.5 - parent: 2 - - uid: 11259 + - uid: 8116 components: - type: Transform - pos: 93.5,44.5 + pos: 93.5,49.5 parent: 2 - uid: 11396 components: - type: Transform pos: 78.5,40.5 parent: 2 - - uid: 11511 - components: - - type: Transform - pos: 87.5,47.5 - parent: 2 - uid: 11635 components: - type: Transform @@ -29369,16 +29592,6 @@ entities: - type: Transform pos: 93.5,50.5 parent: 2 - - uid: 12382 - components: - - type: Transform - pos: 90.5,45.5 - parent: 2 - - uid: 12383 - components: - - type: Transform - pos: 90.5,46.5 - parent: 2 - uid: 12473 components: - type: Transform @@ -29394,20 +29607,35 @@ entities: - type: Transform pos: 43.5,15.5 parent: 2 - - uid: 12488 + - uid: 12490 components: - type: Transform - pos: 90.5,44.5 + pos: 83.5,48.5 parent: 2 - - uid: 12513 + - uid: 12627 components: - type: Transform - pos: 91.5,44.5 + pos: 96.5,50.5 parent: 2 - - uid: 12544 + - uid: 12628 components: - type: Transform - pos: 92.5,44.5 + pos: 96.5,48.5 + parent: 2 + - uid: 12629 + components: + - type: Transform + pos: 96.5,49.5 + parent: 2 + - uid: 12630 + components: + - type: Transform + pos: 82.5,48.5 + parent: 2 + - uid: 12646 + components: + - type: Transform + pos: 96.5,47.5 parent: 2 - uid: 12786 components: @@ -29434,6 +29662,11 @@ entities: - type: Transform pos: 48.5,17.5 parent: 2 + - uid: 13401 + components: + - type: Transform + pos: -38.5,6.5 + parent: 2 - uid: 13762 components: - type: Transform @@ -30019,6 +30252,176 @@ entities: - type: Transform pos: 64.5,-10.5 parent: 2 + - uid: 16214 + components: + - type: Transform + pos: -32.5,10.5 + parent: 2 + - uid: 16218 + components: + - type: Transform + pos: -39.5,6.5 + parent: 2 + - uid: 16261 + components: + - type: Transform + pos: 84.5,48.5 + parent: 2 + - uid: 16262 + components: + - type: Transform + pos: 85.5,48.5 + parent: 2 + - uid: 16263 + components: + - type: Transform + pos: 86.5,48.5 + parent: 2 + - uid: 16264 + components: + - type: Transform + pos: 87.5,48.5 + parent: 2 + - uid: 16265 + components: + - type: Transform + pos: 88.5,48.5 + parent: 2 + - uid: 16266 + components: + - type: Transform + pos: 89.5,48.5 + parent: 2 + - uid: 16275 + components: + - type: Transform + pos: -65.5,-3.5 + parent: 2 + - uid: 16291 + components: + - type: Transform + pos: -54.5,3.5 + parent: 2 + - uid: 16295 + components: + - type: Transform + pos: -55.5,3.5 + parent: 2 + - uid: 16296 + components: + - type: Transform + pos: -56.5,3.5 + parent: 2 + - uid: 16297 + components: + - type: Transform + pos: -57.5,3.5 + parent: 2 + - uid: 16298 + components: + - type: Transform + pos: -58.5,3.5 + parent: 2 + - uid: 16299 + components: + - type: Transform + pos: -59.5,3.5 + parent: 2 + - uid: 16300 + components: + - type: Transform + pos: -59.5,4.5 + parent: 2 + - uid: 16301 + components: + - type: Transform + pos: -59.5,5.5 + parent: 2 + - uid: 16302 + components: + - type: Transform + pos: -59.5,6.5 + parent: 2 + - uid: 16303 + components: + - type: Transform + pos: -59.5,7.5 + parent: 2 + - uid: 16304 + components: + - type: Transform + pos: -60.5,7.5 + parent: 2 + - uid: 16305 + components: + - type: Transform + pos: -61.5,7.5 + parent: 2 + - uid: 16306 + components: + - type: Transform + pos: -62.5,7.5 + parent: 2 + - uid: 16307 + components: + - type: Transform + pos: -63.5,7.5 + parent: 2 + - uid: 16308 + components: + - type: Transform + pos: -64.5,7.5 + parent: 2 + - uid: 16309 + components: + - type: Transform + pos: -65.5,7.5 + parent: 2 + - uid: 16310 + components: + - type: Transform + pos: -66.5,7.5 + parent: 2 + - uid: 16311 + components: + - type: Transform + pos: -67.5,7.5 + parent: 2 + - uid: 16312 + components: + - type: Transform + pos: -41.5,6.5 + parent: 2 + - uid: 16313 + components: + - type: Transform + pos: -42.5,6.5 + parent: 2 + - uid: 16316 + components: + - type: Transform + pos: -42.5,8.5 + parent: 2 + - uid: 16317 + components: + - type: Transform + pos: -43.5,6.5 + parent: 2 + - uid: 16318 + components: + - type: Transform + pos: -43.5,7.5 + parent: 2 + - uid: 16319 + components: + - type: Transform + pos: -43.5,8.5 + parent: 2 + - uid: 16320 + components: + - type: Transform + pos: -41.5,8.5 + parent: 2 - proto: CableMVStack entities: - uid: 2614 @@ -30068,6 +30471,12 @@ entities: rot: -1.5707963267948966 rad pos: 86.5,18.5 parent: 2 + - uid: 16276 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -59.5,-4.5 + parent: 2 - proto: CandleBlueSmallInfinite entities: - uid: 13354 @@ -30250,10 +30659,10 @@ entities: parent: 2 - proto: CannabisSeeds entities: - - uid: 2639 + - uid: 12567 components: - type: Transform - pos: -42.326252,8.414097 + pos: -45.436092,8.498413 parent: 2 - proto: CarbonDioxideCanister entities: @@ -33962,16 +34371,11 @@ entities: rot: 1.5707963267948966 rad pos: 62.830437,5.6190715 parent: 2 - - uid: 13425 - components: - - type: Transform - pos: -15.31891,-6.51791 - parent: 2 - - uid: 14050 + - uid: 13408 components: - type: Transform rot: 1.5707963267948966 rad - pos: 49.47059,-3.5406685 + pos: 49.657784,-2.8150163 parent: 2 - uid: 14191 components: @@ -34171,38 +34575,6 @@ entities: rot: 1.5707963267948966 rad pos: 25.54207,23.693987 parent: 2 -- proto: CheapLighter - entities: - - uid: 13396 - components: - - type: Transform - pos: -14.156409,-7.36166 - parent: 2 - - uid: 13420 - components: - - type: Transform - pos: -14.156409,-7.36166 - parent: 2 - - uid: 13421 - components: - - type: Transform - pos: -14.156409,-7.36166 - parent: 2 - - uid: 13422 - components: - - type: Transform - pos: -14.156409,-7.36166 - parent: 2 - - uid: 13423 - components: - - type: Transform - pos: -14.156409,-7.36166 - parent: 2 - - uid: 13424 - components: - - type: Transform - pos: -14.156409,-7.36166 - parent: 2 - proto: CheapRollerBedSpawnFolded entities: - uid: 3054 @@ -34249,10 +34621,10 @@ entities: - type: Transform pos: 47.5,-2.5 parent: 2 - - uid: 4222 + - uid: 12589 components: - type: Transform - pos: 49.5,-2.5 + pos: 48.5,-3.5 parent: 2 - proto: ChessBoard entities: @@ -34315,17 +34687,6 @@ entities: - type: Transform pos: 16.89298,-24.980135 parent: 2 -- proto: CigCartonBlack - entities: - - uid: 12292 - components: - - type: Transform - parent: 12291 - - type: Physics - angularDamping: 0 - linearDamping: 0 - canCollide: False - - type: InsideEntityStorage - proto: CigCartonMixed entities: - uid: 12294 @@ -34344,56 +34705,6 @@ entities: - type: Transform pos: -17.770985,-4.47945 parent: 2 - - uid: 13408 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.456409,-7.6054096 - parent: 2 - - uid: 13409 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.456409,-7.6054096 - parent: 2 - - uid: 13410 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.456409,-7.6054096 - parent: 2 - - uid: 13411 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.456409,-7.6054096 - parent: 2 -- proto: CigPackGreen - entities: - - uid: 13415 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.137659,-7.6054096 - parent: 2 - - uid: 13416 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.137659,-7.6054096 - parent: 2 - - uid: 13417 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.137659,-7.6054096 - parent: 2 - - uid: 13418 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.137659,-7.6054096 - parent: 2 - proto: CigPackRed entities: - uid: 3064 @@ -34401,30 +34712,6 @@ entities: - type: Transform pos: -17.47411,-4.2607 parent: 2 - - uid: 13407 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.812659,-7.62416 - parent: 2 - - uid: 13412 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.812659,-7.6054096 - parent: 2 - - uid: 13413 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.812659,-7.6054096 - parent: 2 - - uid: 13414 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.812659,-7.6054096 - parent: 2 - proto: CircuitImprinter entities: - uid: 3065 @@ -34507,22 +34794,6 @@ entities: - type: Transform pos: 10.5,12.5 parent: 2 - - uid: 12291 - components: - - type: Transform - pos: -36.5,11.5 - parent: 2 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 12292 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - uid: 12453 components: - type: Transform @@ -34553,6 +34824,11 @@ entities: - type: Transform pos: 69.5,-27.5 parent: 2 + - uid: 14050 + components: + - type: Transform + pos: -34.5,11.5 + parent: 2 - uid: 14337 components: - type: Transform @@ -35466,13 +35742,6 @@ entities: - type: Transform pos: -23.447702,4.800497 parent: 2 -- proto: ClothingHeadHelmetEVA - entities: - - uid: 3123 - components: - - type: Transform - pos: -42.215073,10.864062 - parent: 2 - proto: ClothingHeadHelmetSwat entities: - uid: 3124 @@ -35783,13 +36052,6 @@ entities: linearDamping: 0 canCollide: False - type: InsideEntityStorage -- proto: ClothingOuterHardsuitEVA - entities: - - uid: 3143 - components: - - type: Transform - pos: -42.34528,10.434375 - parent: 2 - proto: ClothingOuterHardsuitSalvage entities: - uid: 3144 @@ -38260,8 +38522,8 @@ entities: immutable: False temperature: 293.14673 moles: - - 1.7459903 - - 6.568249 + - 1.8856695 + - 7.0937095 - 0 - 0 - 0 @@ -38278,24 +38540,26 @@ entities: showEnts: False occludes: True ents: - - 10775 - - 11480 - - 11486 - - 11830 - - 11831 - - 11832 - - 12106 - - 12131 - - 12132 - - 12201 - - 12545 - - 12551 - - 12557 + - 8074 + - 8072 - 16012 + - 12557 + - 12551 + - 12545 + - 12201 + - 12132 + - 12131 + - 12106 + - 11832 + - 11831 + - 11830 + - 11486 + - 11480 + - 10775 paper_label: !type:ContainerSlot showEnts: False occludes: True - ent: null + ent: 8075 - proto: CrateMedicalSurgery entities: - uid: 3288 @@ -38647,15 +38911,15 @@ entities: parent: 2 - proto: CryogenicSleepUnitSpawnerPrisoner entities: - - uid: 9624 + - uid: 8082 components: - type: Transform - pos: -44.5,8.5 + pos: -40.5,11.5 parent: 2 - - uid: 9625 + - uid: 15617 components: - type: Transform - pos: -45.5,8.5 + pos: -39.5,11.5 parent: 2 - proto: CryoPod entities: @@ -38664,6 +38928,13 @@ entities: - type: Transform pos: 50.5,-9.5 parent: 2 +- proto: CryostasisBeaker + entities: + - uid: 13382 + components: + - type: Transform + pos: 48.028965,-2.4634538 + parent: 2 - proto: CryoxadoneBeakerSmall entities: - uid: 14174 @@ -39281,6 +39552,12 @@ entities: rot: 3.141592653589793 rad pos: 64.5,-21.5 parent: 2 + - uid: 16326 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 45.5,-12.5 + parent: 2 - proto: DinnerSofaCorner entities: - uid: 3388 @@ -42208,13 +42485,6 @@ entities: linearDamping: 0 canCollide: False - type: InsideEntityStorage -- proto: DoubleEmergencyOxygenTankFilled - entities: - - uid: 3885 - components: - - type: Transform - pos: -42.20205,10.265103 - parent: 2 - proto: DresserCaptainFilled entities: - uid: 3886 @@ -42584,10 +42854,10 @@ entities: parent: 2 - proto: DrinkMugMetal entities: - - uid: 12501 + - uid: 16221 components: - type: Transform - pos: -8.440036,10.657619 + pos: -8.669537,10.430412 parent: 2 - proto: DrinkMugRed entities: @@ -42867,22 +43137,22 @@ entities: parent: 2 - proto: Emitter entities: - - uid: 4298 + - uid: 345 components: - type: Transform - pos: 93.5,50.5 + rot: -1.5707963267948966 rad + pos: 96.5,47.5 parent: 2 - - uid: 8066 + - uid: 1833 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 90.5,47.5 + pos: 93.5,49.5 parent: 2 - - uid: 11537 + - uid: 8066 components: - type: Transform - rot: 3.141592653589793 rad - pos: 93.5,44.5 + rot: 1.5707963267948966 rad + pos: 90.5,47.5 parent: 2 - proto: EmpGrenade entities: @@ -46828,6 +47098,14 @@ entities: - type: DeviceNetwork deviceLists: - 15501 + - uid: 16215 + components: + - type: Transform + pos: -41.5,10.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 6937 - proto: Fireplace entities: - uid: 4217 @@ -46919,11 +47197,11 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 6768 + - uid: 8635 components: - type: Transform rot: -1.5707963267948966 rad - pos: 56.5,-19.5 + pos: 58.5,-16.5 parent: 2 - type: Fixtures fixtures: {} @@ -46971,6 +47249,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 16323 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-18.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: FloorLavaEntity entities: - uid: 4226 @@ -47183,24 +47469,6 @@ entities: - type: Transform pos: 64.569855,9.483208 parent: 2 - - uid: 4240 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 56.38584,5.677499 - parent: 2 - - uid: 4241 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 56.57348,5.489999 - parent: 2 - - uid: 4242 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 56.417114,5.239999 - parent: 2 - uid: 4243 components: - type: Transform @@ -47956,6 +48224,24 @@ entities: rot: 1.5707963267948966 rad pos: 71.5,36.5 parent: 2 + - uid: 16231 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 94.5,46.5 + parent: 2 + - uid: 16232 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 94.5,47.5 + parent: 2 + - uid: 16233 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 94.5,48.5 + parent: 2 - proto: GasPassiveGate entities: - uid: 4300 @@ -48050,6 +48336,22 @@ entities: rot: 1.5707963267948966 rad pos: 71.5,35.5 parent: 2 + - uid: 16234 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 92.5,46.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16235 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 92.5,48.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' - proto: GasPipeBend entities: - uid: 51 @@ -48902,14 +49204,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 4450 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 82.5,39.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 4451 components: - type: Transform @@ -49271,13 +49565,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 4597 - components: - - type: Transform - pos: 85.5,44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 4601 components: - type: Transform @@ -49285,13 +49572,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 5975 - components: - - type: Transform - pos: 84.5,43.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 6787 components: - type: Transform @@ -49303,6 +49583,8 @@ entities: rot: -1.5707963267948966 rad pos: 101.5,45.5 parent: 2 + - type: AtmosPipeColor + color: '#008000FF' - uid: 6904 components: - type: Transform @@ -49314,6 +49596,14 @@ entities: - type: Transform pos: 102.5,50.5 parent: 2 + - uid: 7019 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -37.5,7.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 8100 components: - type: Transform @@ -49322,6 +49612,13 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 9624 + components: + - type: Transform + pos: 81.5,44.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 10773 components: - type: Transform @@ -49333,36 +49630,151 @@ entities: rot: 1.5707963267948966 rad pos: 101.5,50.5 parent: 2 - - uid: 12618 + - uid: 11983 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 80.5,40.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 11984 + components: + - type: Transform + pos: 84.5,40.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 11985 + components: + - type: Transform + pos: 85.5,41.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 11986 + components: + - type: Transform + pos: 80.5,43.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 11987 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 79.5,39.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 11988 components: - type: Transform rot: 1.5707963267948966 rad - pos: 77.5,39.5 + pos: 79.5,48.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12619 + - uid: 12602 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -43.5,8.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 12603 components: - type: Transform rot: -1.5707963267948966 rad - pos: 81.5,39.5 + pos: -42.5,8.5 parent: 2 - type: AtmosPipeColor - color: '#008000FF' - - uid: 12631 + color: '#FF1212FF' + - uid: 12604 components: - type: Transform rot: 1.5707963267948966 rad - pos: 81.5,48.5 + pos: -42.5,10.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 12605 + components: + - type: Transform + pos: -37.5,10.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 12606 + components: + - type: Transform + pos: -36.5,7.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 12618 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 77.5,39.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' + - uid: 13395 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 81.5,41.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 14624 components: - type: Transform rot: -1.5707963267948966 rad pos: 23.5,29.5 parent: 2 + - uid: 16225 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 13.5,8.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 16241 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 95.5,46.5 + parent: 2 + - uid: 16243 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 97.5,49.5 + parent: 2 + - uid: 16244 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 97.5,51.5 + parent: 2 + - uid: 16245 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 95.5,49.5 + parent: 2 + - uid: 16253 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 91.5,45.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' - proto: GasPipeBroken entities: - uid: 13608 @@ -49511,6 +49923,13 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 12328 + components: + - type: Transform + pos: -36.5,5.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - proto: GasPipeStraight entities: - uid: 2539 @@ -49525,22 +49944,6 @@ entities: rot: -1.5707963267948966 rad pos: 72.5,36.5 parent: 2 - - uid: 4453 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 84.5,42.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 4454 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 83.5,44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 4519 components: - type: Transform @@ -49615,14 +50018,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 4529 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 80.5,43.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 4530 components: - type: Transform @@ -49994,14 +50389,6 @@ entities: rot: -1.5707963267948966 rad pos: 80.5,34.5 parent: 2 - - uid: 4596 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 81.5,44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 4598 components: - type: Transform @@ -50010,14 +50397,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 4599 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 82.5,43.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 4600 components: - type: Transform @@ -50484,14 +50863,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 4680 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 83.5,39.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 4687 components: - type: Transform @@ -50500,20 +50871,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 4688 - components: - - type: Transform - pos: 85.5,41.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 4689 - components: - - type: Transform - pos: 85.5,42.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 4690 components: - type: Transform @@ -53018,14 +53375,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 5014 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 84.5,40.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 5015 components: - type: Transform @@ -56823,14 +57172,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 5507 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 13.5,6.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 5508 components: - type: Transform @@ -58506,14 +58847,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 5723 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -43.5,6.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 5724 components: - type: Transform @@ -60246,61 +60579,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 5971 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 84.5,41.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 5972 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 84.5,44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 5973 - components: - - type: Transform - pos: 85.5,43.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 5974 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 82.5,44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 5986 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 80.5,44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 5987 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 83.5,43.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 6046 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 81.5,43.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 6438 components: - type: Transform @@ -60327,6 +60605,8 @@ entities: rot: -1.5707963267948966 rad pos: 99.5,45.5 parent: 2 + - type: AtmosPipeColor + color: '#008000FF' - uid: 6939 components: - type: Transform @@ -60335,6 +60615,37 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 6940 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -43.5,7.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 6941 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -42.5,9.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 6942 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -41.5,10.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 6944 + components: + - type: Transform + pos: -37.5,9.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 7148 components: - type: Transform @@ -60351,6 +60662,15 @@ entities: rot: 1.5707963267948966 rad pos: 98.5,45.5 parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 7421 + components: + - type: Transform + pos: -36.5,6.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 7499 components: - type: Transform @@ -60375,6 +60695,36 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 8792 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 80.5,42.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 8895 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 81.5,42.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 8933 + components: + - type: Transform + pos: 79.5,40.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 9006 + components: + - type: Transform + pos: 79.5,41.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' - uid: 9128 components: - type: Transform @@ -60382,6 +60732,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 9625 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 83.5,40.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 10177 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 81.5,40.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 10926 components: - type: Transform @@ -60394,120 +60760,156 @@ entities: rot: -1.5707963267948966 rad pos: 100.5,45.5 parent: 2 + - type: AtmosPipeColor + color: '#008000FF' - uid: 10988 components: - type: Transform rot: -1.5707963267948966 rad pos: 99.5,51.5 parent: 2 - - uid: 12615 + - uid: 11257 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 78.5,43.5 + rot: 3.141592653589793 rad + pos: 80.5,41.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 12616 + - uid: 11259 components: - type: Transform rot: -1.5707963267948966 rad - pos: 77.5,43.5 + pos: 82.5,40.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 12617 + - uid: 11260 components: - type: Transform - pos: 77.5,38.5 + rot: 1.5707963267948966 rad + pos: 83.5,41.5 parent: 2 - type: AtmosPipeColor - color: '#008000FF' - - uid: 12620 + color: '#FF1212FF' + - uid: 11511 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 78.5,39.5 + rot: 1.5707963267948966 rad + pos: 82.5,41.5 parent: 2 - type: AtmosPipeColor - color: '#008000FF' - - uid: 12621 + color: '#FF1212FF' + - uid: 11981 components: - type: Transform rot: -1.5707963267948966 rad - pos: 79.5,39.5 + pos: 80.5,44.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 11982 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 81.5,43.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 11989 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 81.5,48.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12622 + - uid: 11996 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 80.5,39.5 + rot: 1.5707963267948966 rad + pos: 80.5,48.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12623 + - uid: 12008 components: - type: Transform - rot: 3.141592653589793 rad - pos: 81.5,40.5 + pos: 79.5,47.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12624 + - uid: 12203 components: - type: Transform - rot: 3.141592653589793 rad - pos: 81.5,41.5 + pos: 79.5,46.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12625 + - uid: 12286 components: - type: Transform - rot: 3.141592653589793 rad - pos: 81.5,42.5 + pos: 79.5,45.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12626 + - uid: 12287 components: - type: Transform - rot: 3.141592653589793 rad - pos: 81.5,43.5 + pos: 79.5,44.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12627 + - uid: 12291 components: - type: Transform - rot: 3.141592653589793 rad - pos: 81.5,44.5 + pos: 79.5,43.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12628 + - uid: 12292 components: - type: Transform - rot: 3.141592653589793 rad - pos: 81.5,45.5 + pos: 79.5,42.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12629 + - uid: 12601 components: - type: Transform - rot: 3.141592653589793 rad - pos: 81.5,46.5 + rot: 1.5707963267948966 rad + pos: -40.5,10.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 12615 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 78.5,43.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 12616 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 77.5,43.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 12617 + components: + - type: Transform + pos: 77.5,38.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' - - uid: 12630 + - uid: 12620 components: - type: Transform - rot: 3.141592653589793 rad - pos: 81.5,47.5 + rot: -1.5707963267948966 rad + pos: 78.5,39.5 parent: 2 - type: AtmosPipeColor color: '#008000FF' @@ -60573,6 +60975,21 @@ entities: rot: -1.5707963267948966 rad pos: 75.5,27.5 parent: 2 + - uid: 13355 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 90.5,48.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 13409 + components: + - type: Transform + pos: -37.5,8.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 13611 components: - type: Transform @@ -60593,6 +61010,108 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 16222 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 13.5,7.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 16223 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 14.5,8.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 16229 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 79.5,35.5 + parent: 2 + - uid: 16230 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 79.5,34.5 + parent: 2 + - uid: 16237 + components: + - type: Transform + pos: 91.5,47.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16242 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 96.5,49.5 + parent: 2 + - uid: 16246 + components: + - type: Transform + pos: 97.5,50.5 + parent: 2 + - uid: 16247 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 92.5,45.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16248 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 93.5,45.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16249 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 94.5,45.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16250 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 95.5,45.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16251 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 96.5,45.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16252 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 97.5,45.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16257 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 84.5,41.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeTJunction entities: - uid: 5950 @@ -62006,13 +62525,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 6145 - components: - - type: Transform - pos: -36.5,5.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 6146 components: - type: Transform @@ -62273,6 +62785,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 11537 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 13.5,6.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 11538 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -43.5,6.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 14626 components: - type: Transform @@ -62286,6 +62814,33 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 16236 + components: + - type: Transform + pos: 91.5,48.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16238 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 91.5,46.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 16239 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 95.5,47.5 + parent: 2 + - uid: 16240 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 95.5,48.5 + parent: 2 - proto: GasPort entities: - uid: 4107 @@ -62542,6 +63097,22 @@ entities: parent: 2 - type: GasValve open: False + - uid: 12442 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 77.5,37.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' + - uid: 13329 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 89.5,48.5 + parent: 2 + - type: AtmosPipeColor + color: '#008000FF' - proto: GasVentPump entities: - uid: 4603 @@ -62598,16 +63169,6 @@ entities: - 11541 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 6204 - components: - - type: Transform - pos: 82.5,40.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 15479 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 6206 components: - type: Transform @@ -63320,28 +63881,6 @@ entities: - 15368 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 6274 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 21.5,6.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 15349 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 6275 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 12.5,6.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 15342 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 6276 components: - type: Transform @@ -63805,6 +64344,28 @@ entities: - type: Transform pos: 77.5,25.5 parent: 2 + - uid: 7010 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -38.5,10.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 6937 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 12382 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 83.5,39.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 15479 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 15288 components: - type: Transform @@ -65029,6 +65590,17 @@ entities: - 15374 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 6943 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,10.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 6937 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 6991 components: - type: Transform @@ -65045,6 +65617,28 @@ entities: - 15378 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 12383 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 21.5,6.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 15349 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 12440 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 12.5,6.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 15342 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 15289 components: - type: Transform @@ -65066,6 +65660,14 @@ entities: - 15359 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 16224 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 15.5,8.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasVolumePump entities: - uid: 4280 @@ -65086,14 +65688,6 @@ entities: rot: -1.5707963267948966 rad pos: 78.5,34.5 parent: 2 - - uid: 12614 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 77.5,37.5 - parent: 2 - - type: AtmosPipeColor - color: '#008000FF' - proto: Gateway entities: - uid: 6440 @@ -65151,19 +65745,17 @@ entities: parent: 2 - proto: GlimmerDrain entities: - - uid: 6442 + - uid: 12625 components: - type: Transform - pos: 63.5,25.5 + pos: 63.5,29.5 parent: 2 - - type: ApcPowerReceiver - powerDisabled: True - proto: GlimmerProber entities: - - uid: 6443 + - uid: 8677 components: - type: Transform - pos: 65.5,25.5 + pos: 62.5,29.5 parent: 2 - proto: GrassBattlemap entities: @@ -65181,35 +65773,23 @@ entities: parent: 2 - proto: Grille entities: - - uid: 4017 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 78.5,44.5 - parent: 2 - - uid: 4360 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,44.5 - parent: 2 - - uid: 4684 + - uid: 1594 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,42.5 + rot: 1.5707963267948966 rad + pos: 90.5,45.5 parent: 2 - - uid: 4685 + - uid: 2807 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,43.5 + rot: 3.141592653589793 rad + pos: 89.5,45.5 parent: 2 - - uid: 4686 + - uid: 4017 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,45.5 + rot: 3.141592653589793 rad + pos: 78.5,44.5 parent: 2 - uid: 6445 components: @@ -65238,11 +65818,6 @@ entities: - type: Transform pos: -44.5,11.5 parent: 2 - - uid: 6450 - components: - - type: Transform - pos: -43.5,11.5 - parent: 2 - uid: 6451 components: - type: Transform @@ -65253,11 +65828,6 @@ entities: - type: Transform pos: -32.5,-10.5 parent: 2 - - uid: 6453 - components: - - type: Transform - pos: -42.5,11.5 - parent: 2 - uid: 6454 components: - type: Transform @@ -66913,11 +67483,11 @@ entities: - type: Transform pos: 82.5,-19.5 parent: 2 - - uid: 6769 + - uid: 6779 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,46.5 + rot: 3.141592653589793 rad + pos: 90.5,44.5 parent: 2 - uid: 6789 components: @@ -67482,23 +68052,33 @@ entities: rot: 3.141592653589793 rad pos: 100.5,45.5 parent: 2 - - uid: 8316 + - uid: 7739 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-11.5 + pos: -43.5,11.5 parent: 2 - - uid: 8648 + - uid: 7997 + components: + - type: Transform + pos: -42.5,11.5 + parent: 2 + - uid: 8316 components: - type: Transform rot: -1.5707963267948966 rad - pos: 87.5,41.5 + pos: -2.5,-11.5 parent: 2 - uid: 8659 components: - type: Transform pos: 65.5,48.5 parent: 2 + - uid: 9066 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 90.5,42.5 + parent: 2 - uid: 9449 components: - type: Transform @@ -67562,6 +68142,12 @@ entities: - type: Transform pos: 35.5,14.5 parent: 2 + - uid: 11542 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 90.5,43.5 + parent: 2 - uid: 11611 components: - type: Transform @@ -67673,12 +68259,23 @@ entities: - type: Transform pos: 60.5,28.5 parent: 2 + - uid: 12544 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 87.5,46.5 + parent: 2 - uid: 12645 components: - type: Transform rot: -1.5707963267948966 rad pos: 79.5,35.5 parent: 2 + - uid: 12814 + components: + - type: Transform + pos: -43.5,10.5 + parent: 2 - uid: 12957 components: - type: Transform @@ -67694,6 +68291,12 @@ entities: - type: Transform pos: 30.5,22.5 parent: 2 + - uid: 13337 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 88.5,46.5 + parent: 2 - uid: 13557 components: - type: Transform @@ -67759,6 +68362,12 @@ entities: rot: -1.5707963267948966 rad pos: 72.5,35.5 parent: 2 + - uid: 16258 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 89.5,46.5 + parent: 2 - proto: GrilleBroken entities: - uid: 6889 @@ -67878,6 +68487,24 @@ entities: - type: Transform pos: 78.636055,-27.493525 parent: 2 + - uid: 13440 + components: + - type: Transform + parent: 13425 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage + - uid: 13495 + components: + - type: Transform + parent: 13494 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage - proto: HeadTerminator entities: - uid: 6902 @@ -67893,6 +68520,8 @@ entities: rot: 3.141592653589793 rad pos: 101.5,46.5 parent: 2 + - type: AtmosPipeColor + color: '#008000FF' - uid: 4358 components: - type: Transform @@ -68015,87 +68644,89 @@ entities: - type: Transform pos: 46.5,-11.5 parent: 2 - - uid: 6932 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -48.5,5.5 - parent: 2 - - uid: 6933 + - uid: 11258 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -46.5,5.5 + pos: -37.5,11.5 parent: 2 - - uid: 6935 + - uid: 16212 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -48.5,8.5 + pos: -37.5,10.5 parent: 2 -- proto: HydroponicsTrayEmpty +- proto: hydroponicsTray entities: - - uid: 6937 + - uid: 12573 components: - type: Transform - pos: 20.5,4.5 + rot: 1.5707963267948966 rad + pos: 23.5,7.5 parent: 2 - - uid: 6940 + - uid: 12574 components: - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,5.5 + rot: 1.5707963267948966 rad + pos: -45.5,5.5 parent: 2 - - uid: 6941 + - uid: 12575 components: - type: Transform - rot: 3.141592653589793 rad - pos: -45.5,5.5 + rot: 1.5707963267948966 rad + pos: -44.5,5.5 parent: 2 - - uid: 6942 + - uid: 12576 components: - type: Transform + rot: 1.5707963267948966 rad pos: 19.5,4.5 parent: 2 - - uid: 6943 + - uid: 12577 components: - type: Transform + rot: 1.5707963267948966 rad pos: 18.5,4.5 parent: 2 - - uid: 6944 + - uid: 12578 components: - type: Transform - pos: 23.5,7.5 + rot: 1.5707963267948966 rad + pos: 19.5,6.5 parent: 2 - - uid: 6945 + - uid: 12579 components: - type: Transform - pos: 23.5,6.5 + rot: 1.5707963267948966 rad + pos: 18.5,6.5 parent: 2 - - uid: 6946 + - uid: 12582 components: - type: Transform - pos: 23.5,5.5 + rot: 1.5707963267948966 rad + pos: 23.5,4.5 parent: 2 - - uid: 6947 + - uid: 12584 components: - type: Transform - pos: 23.5,4.5 + rot: 1.5707963267948966 rad + pos: 23.5,5.5 parent: 2 - - uid: 6948 + - uid: 12585 components: - type: Transform - pos: 21.5,4.5 + rot: 1.5707963267948966 rad + pos: 23.5,6.5 parent: 2 - - uid: 6950 + - uid: 12586 components: - type: Transform - pos: 18.5,6.5 + rot: 1.5707963267948966 rad + pos: 20.5,4.5 parent: 2 - - uid: 6951 + - uid: 12587 components: - type: Transform - pos: 19.5,6.5 + rot: 1.5707963267948966 rad + pos: 21.5,4.5 parent: 2 - proto: IDComputerCircuitboard entities: @@ -68705,6 +69336,11 @@ entities: - type: Transform pos: 20.739563,8.419169 parent: 2 + - uid: 13383 + components: + - type: Transform + pos: 48.563217,-2.8670998 + parent: 2 - proto: LGBTQFlag entities: - uid: 16121 @@ -68837,6 +69473,16 @@ entities: rot: -1.5707963267948966 rad pos: 82.5,30.5 parent: 2 + - uid: 16256 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 83.5,38.5 + parent: 2 + - type: DeviceLinkSource + linkedPorts: + 16255: + - Pressed: Toggle - proto: LockableButtonBar entities: - uid: 6993 @@ -69548,26 +70194,74 @@ entities: parent: 2 - proto: LockerChemistryFilled entities: - - uid: 7019 + - uid: 13425 components: - type: Transform - anchored: True - pos: 47.5,-3.5 + pos: 50.5,-4.5 parent: 2 - - type: Physics - angularDamping: 0 - linearDamping: 0 - bodyType: Static - - uid: 7020 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 13440 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + - uid: 13494 components: - type: Transform - anchored: True - pos: 48.5,-3.5 + pos: 50.5,-5.5 parent: 2 - - type: Physics - angularDamping: 0 - linearDamping: 0 - bodyType: Static + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 13495 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: LockerChiefEngineerFilled entities: - uid: 3095 @@ -69767,6 +70461,40 @@ entities: - type: Transform pos: 65.5,29.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 12590 + - 12595 + - 12596 + - 12597 + - 12599 + - 12600 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: LockerFreezer entities: - uid: 12113 @@ -70390,6 +71118,24 @@ entities: - type: Transform pos: 55.863064,-27.171606 parent: 2 +- proto: LPPBookSpaceLaw + entities: + - uid: 6933 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,-1.5 + parent: 2 + - uid: 16213 + components: + - type: Transform + pos: -8.309894,10.649162 + parent: 2 + - uid: 16216 + components: + - type: Transform + pos: -7.188752,-4.334501 + parent: 2 - proto: LPPBoxerBriefsLightpurple entities: - uid: 12561 @@ -70793,6 +71539,13 @@ entities: - type: Transform pos: -8.5,2.5 parent: 2 +- proto: LPPHammer + entities: + - uid: 12985 + components: + - type: Transform + pos: 66.52352,45.10759 + parent: 2 - proto: LPPHopComputerComms entities: - uid: 7181 @@ -70841,7 +71594,7 @@ entities: - uid: 7187 components: - type: MetaData - name: Касуми Энигматикс + name: Касуми Каннингем-Конала - type: Transform pos: 55.4641,-27.64262 parent: 2 @@ -71134,36 +71887,6 @@ entities: - type: Transform pos: 1.3380122,10.36076 parent: 2 - - uid: 13400 - components: - - type: Transform - pos: -14.570671,-7.28666 - parent: 2 - - uid: 13401 - components: - - type: Transform - pos: -14.570671,-7.28666 - parent: 2 - - uid: 13402 - components: - - type: Transform - pos: -14.570671,-7.28666 - parent: 2 - - uid: 13403 - components: - - type: Transform - pos: -14.570671,-7.28666 - parent: 2 - - uid: 13405 - components: - - type: Transform - pos: -14.570671,-7.28666 - parent: 2 - - uid: 13406 - components: - - type: Transform - pos: -14.570671,-7.28666 - parent: 2 - proto: LunchboxLogisticsFilledRandom entities: - uid: 7274 @@ -71783,11 +72506,6 @@ entities: - type: Transform pos: 81.5,-36.5 parent: 2 - - uid: 12287 - components: - - type: Transform - pos: -40.5,10.5 - parent: 2 - uid: 12427 components: - type: Transform @@ -71838,6 +72556,26 @@ entities: - type: Transform pos: 33.5,23.5 parent: 2 +- proto: MaterialBiomass + entities: + - uid: 8072 + components: + - type: Transform + parent: 8110 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage + - uid: 8074 + components: + - type: Transform + parent: 8110 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage - proto: MaterialCloth entities: - uid: 7302 @@ -71854,6 +72592,11 @@ entities: parent: 2 - proto: MaterialReclaimer entities: + - uid: 6932 + components: + - type: Transform + pos: -48.5,5.5 + parent: 2 - uid: 16131 components: - type: Transform @@ -72676,11 +73419,6 @@ entities: parent: 2 - proto: NoticeBoard entities: - - uid: 12490 - components: - - type: Transform - pos: -16.5,-7.5 - parent: 2 - uid: 14569 components: - type: Transform @@ -73074,12 +73812,6 @@ entities: - type: Transform pos: -6.923914,-4.669271 parent: 2 - - uid: 7421 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -48.609932,8.458669 - parent: 2 - uid: 7422 components: - type: Transform @@ -73193,6 +73925,17 @@ entities: parent: 2 - type: Paper content: Джеси, ты можеш, наконец-то, ПОЧИНИТЬ ЭТОТ ГРЁБАНЫЙ ПЕРЕРАБОЧИК МУСОРА!!! + - uid: 8075 + components: + - type: Transform + parent: 8110 + - type: Paper + content: > + Использовать при клонировании. Внутри Биомасса!! + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False - uid: 12562 components: - type: Transform @@ -73295,7 +74038,7 @@ entities: - uid: 16204 components: - type: Transform - pos: 83.45673,45.344048 + pos: 85.46628,44.539917 parent: 2 - type: Paper content: >- @@ -73320,6 +74063,9 @@ entities: Сделай выбор и выброси мусор.... + - type: Physics + angularDamping: 0 + linearDamping: 0 - proto: PaperBin10 entities: - uid: 7437 @@ -73369,6 +74115,11 @@ entities: rot: -1.5707963267948966 rad pos: -9.5,-5.5 parent: 2 + - uid: 12621 + components: + - type: Transform + pos: 59.5,9.5 + parent: 2 - uid: 12961 components: - type: Transform @@ -73572,12 +74323,6 @@ entities: - type: Transform pos: 63.70575,27.749767 parent: 2 - - uid: 7465 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 56.682938,5.052499 - parent: 2 - uid: 11593 components: - type: Transform @@ -73616,6 +74361,11 @@ entities: - type: Transform pos: 83.14486,-25.412575 parent: 2 + - uid: 13381 + components: + - type: Transform + pos: 59.559853,9.655121 + parent: 2 - proto: PenCap entities: - uid: 7466 @@ -73885,6 +74635,62 @@ entities: - type: Transform pos: 48.64683,-10.44799 parent: 2 +- proto: PillMindbreakerToxin + entities: + - uid: 12590 + components: + - type: Transform + parent: 7029 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage + - uid: 12595 + components: + - type: Transform + parent: 7029 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage + - uid: 12596 + components: + - type: Transform + parent: 7029 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage + - uid: 12597 + components: + - type: Transform + parent: 7029 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage + - uid: 12599 + components: + - type: Transform + parent: 7029 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage + - uid: 12600 + components: + - type: Transform + parent: 7029 + - type: Physics + angularDamping: 0 + linearDamping: 0 + canCollide: False + - type: InsideEntityStorage - proto: PlasmaCanister entities: - uid: 7487 @@ -73924,6 +74730,18 @@ entities: parent: 2 - proto: PlasmaReinforcedWindowDirectional entities: + - uid: 3143 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,10.5 + parent: 2 + - uid: 3269 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,10.5 + parent: 2 - uid: 4297 components: - type: Transform @@ -73952,6 +74770,12 @@ entities: rot: 1.5707963267948966 rad pos: -22.5,6.5 parent: 2 + - uid: 13413 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 61.5,10.5 + parent: 2 - uid: 14894 components: - type: Transform @@ -73965,6 +74789,12 @@ entities: parent: 2 - proto: PlasmaWindoorSecureScienceLocked entities: + - uid: 4335 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 62.5,10.5 + parent: 2 - uid: 16080 components: - type: Transform @@ -74161,14 +74991,14 @@ entities: parent: 2 - proto: PosterContrabandAtmosiaDeclarationIndependence entities: - - uid: 12814 + - uid: 13420 components: - type: MetaData desc: '"О боже, спаси и сохрани отдел, не дав всяким бездарям дотянутся до сверхважных элементов станции!"' name: Инженерная Молитва - type: Transform - rot: 1.5707963267948966 rad - pos: 87.5,41.5 + rot: 3.141592653589793 rad + pos: 88.5,41.5 parent: 2 - uid: 15809 components: @@ -74429,11 +75259,6 @@ entities: - type: Transform pos: 43.5,-2.5 parent: 2 - - uid: 7543 - components: - - type: Transform - pos: 66.5,-2.5 - parent: 2 - uid: 7544 components: - type: Transform @@ -74484,6 +75309,11 @@ entities: - type: Transform pos: 57.5,-6.5 parent: 2 + - uid: 16327 + components: + - type: Transform + pos: 66.5,-4.5 + parent: 2 - proto: PottedPlantRandomPlastic entities: - uid: 12305 @@ -75336,6 +76166,12 @@ entities: - type: Transform pos: -8.5,13.5 parent: 2 + - uid: 12444 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 67.5,-12.5 + parent: 2 - uid: 12651 components: - type: Transform @@ -76136,11 +76972,6 @@ entities: - type: Transform pos: -30.5,11.5 parent: 2 - - uid: 12705 - components: - - type: Transform - pos: -39.5,10.5 - parent: 2 - uid: 12706 components: - type: Transform @@ -76739,6 +77570,11 @@ entities: rot: 3.141592653589793 rad pos: 31.5,28.5 parent: 2 + - uid: 15922 + components: + - type: Transform + pos: -38.5,11.5 + parent: 2 - uid: 16029 components: - type: Transform @@ -76798,11 +77634,6 @@ entities: - type: Transform pos: 56.5,-4.5 parent: 2 - - uid: 7739 - components: - - type: Transform - pos: 63.5,29.5 - parent: 2 - proto: PuddleVomit entities: - uid: 13254 @@ -77109,55 +77940,45 @@ entities: - type: InsideEntityStorage - proto: RadiationCollectorFullTank entities: - - uid: 6785 - components: - - type: Transform - pos: 94.5,43.5 - parent: 2 - - uid: 11257 - components: - - type: Transform - pos: 93.5,51.5 - parent: 2 - - uid: 11258 + - uid: 344 components: - type: Transform - pos: 91.5,51.5 + pos: 96.5,46.5 parent: 2 - - uid: 11260 + - uid: 1593 components: - type: Transform - pos: 92.5,51.5 + pos: 90.5,46.5 parent: 2 - - uid: 12563 + - uid: 2094 components: - type: Transform - pos: 95.5,43.5 + pos: 92.5,49.5 parent: 2 - - uid: 12564 + - uid: 2639 components: - type: Transform - pos: 92.5,43.5 + pos: 96.5,48.5 parent: 2 - - uid: 12565 + - uid: 4596 components: - type: Transform - pos: 91.5,43.5 + pos: 94.5,49.5 parent: 2 - - uid: 12566 + - uid: 4597 components: - type: Transform - pos: 94.5,51.5 + pos: 90.5,48.5 parent: 2 - - uid: 12567 + - uid: 12649 components: - type: Transform - pos: 95.5,51.5 + pos: 92.5,45.5 parent: 2 - - uid: 12568 + - uid: 13414 components: - type: Transform - pos: 93.5,43.5 + pos: 94.5,45.5 parent: 2 - proto: RagItem entities: @@ -77628,6 +78449,11 @@ entities: - type: Transform pos: 89.5,13.5 parent: 2 + - uid: 8676 + components: + - type: Transform + pos: 55.5,5.5 + parent: 2 - uid: 13491 components: - type: Transform @@ -77978,6 +78804,16 @@ entities: parent: 2 - proto: RandomPosterAny entities: + - uid: 8083 + components: + - type: Transform + pos: -41.5,9.5 + parent: 2 + - uid: 13406 + components: + - type: Transform + pos: -40.5,12.5 + parent: 2 - uid: 15413 components: - type: Transform @@ -78307,6 +79143,11 @@ entities: - type: Transform pos: 48.5,18.5 parent: 2 + - uid: 16217 + components: + - type: Transform + pos: -38.5,12.5 + parent: 2 - proto: RandomPosterContraband entities: - uid: 15615 @@ -78321,12 +79162,6 @@ entities: rot: 3.141592653589793 rad pos: -49.5,9.5 parent: 2 - - uid: 15617 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -42.5,9.5 - parent: 2 - proto: RandomPosterLegit entities: - uid: 10320 @@ -79498,29 +80333,17 @@ entities: parent: 2 - proto: ReinforcedPlasmaWindow entities: - - uid: 4335 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,46.5 - parent: 2 - - uid: 4336 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,45.5 - parent: 2 - - uid: 4604 + - uid: 2284 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,44.5 + rot: 3.141592653589793 rad + pos: 89.5,45.5 parent: 2 - - uid: 6764 + - uid: 6780 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,41.5 + rot: 3.141592653589793 rad + pos: 90.5,44.5 parent: 2 - uid: 7860 components: @@ -79675,18 +80498,6 @@ entities: - type: Transform pos: 78.5,40.5 parent: 2 - - uid: 11542 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,42.5 - parent: 2 - - uid: 11996 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 87.5,43.5 - parent: 2 - uid: 12104 components: - type: Transform @@ -79711,6 +80522,54 @@ entities: rot: 3.141592653589793 rad pos: 78.5,45.5 parent: 2 + - uid: 12513 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 90.5,45.5 + parent: 2 + - uid: 12565 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 87.5,46.5 + parent: 2 + - uid: 12902 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 92.5,41.5 + parent: 2 + - uid: 13360 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 91.5,41.5 + parent: 2 + - uid: 13403 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 90.5,42.5 + parent: 2 + - uid: 13412 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 90.5,43.5 + parent: 2 + - uid: 16259 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 89.5,46.5 + parent: 2 + - uid: 16260 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 88.5,46.5 + parent: 2 - proto: ReinforcedWindow entities: - uid: 3307 @@ -79719,12 +80578,6 @@ entities: rot: 3.141592653589793 rad pos: 66.5,-46.5 parent: 2 - - uid: 6193 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 91.5,41.5 - parent: 2 - uid: 6702 components: - type: Transform @@ -80347,11 +81200,6 @@ entities: - type: Transform pos: 88.5,40.5 parent: 2 - - uid: 7997 - components: - - type: Transform - pos: 92.5,41.5 - parent: 2 - uid: 7999 components: - type: Transform @@ -80841,6 +81689,16 @@ entities: rot: -1.5707963267948966 rad pos: 46.5,34.5 parent: 2 + - uid: 12563 + components: + - type: Transform + pos: -43.5,10.5 + parent: 2 + - uid: 12564 + components: + - type: Transform + pos: -43.5,11.5 + parent: 2 - uid: 12929 components: - type: Transform @@ -81019,6 +81877,11 @@ entities: rot: -1.5707963267948966 rad pos: 73.5,37.5 parent: 2 + - uid: 16192 + components: + - type: Transform + pos: -42.5,11.5 + parent: 2 - uid: 16193 components: - type: Transform @@ -81055,10 +81918,10 @@ entities: parent: 2 - proto: ReverseEngineeringMachine entities: - - uid: 8116 + - uid: 13400 components: - type: Transform - pos: 72.5,9.5 + pos: 57.5,4.5 parent: 2 - proto: RevolverCapGun entities: @@ -81580,19 +82443,19 @@ entities: - type: Transform pos: 58.739925,9.466386 parent: 2 -- proto: SecBreachingHammer +- proto: SecurityTechFab entities: - - uid: 12985 + - uid: 8142 components: - type: Transform - pos: 66.52352,45.10759 + pos: -39.5,-2.5 parent: 2 -- proto: SecurityTechFab +- proto: SeedExtractor entities: - - uid: 8142 + - uid: 16228 components: - type: Transform - pos: -39.5,-2.5 + pos: 22.5,10.5 parent: 2 - proto: SeismicCharge entities: @@ -81767,17 +82630,20 @@ entities: parent: 2 - proto: SheetPlasma1 entities: - - uid: 7142 + - uid: 6945 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 48.059296,-2.4390674 + pos: 47.7032,-2.9842873 parent: 2 - - uid: 16124 + - uid: 16324 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 48.966217,-2.3765674 + pos: 47.65108,-3.4009538 + parent: 2 + - uid: 16325 + components: + - type: Transform + pos: 47.59896,-3.2056413 parent: 2 - proto: SheetPlasteel entities: @@ -82233,14 +83099,26 @@ entities: links: - 3244 - 3240 - - uid: 13495 +- proto: ShuttersNormalOpen + entities: + - uid: 2247 components: - type: Transform - rot: 3.141592653589793 rad - pos: -14.5,-7.5 + rot: 1.5707963267948966 rad + pos: -43.5,11.5 parent: 2 -- proto: ShuttersNormalOpen - entities: + - type: DeviceLinkSink + links: + - 8248 + - uid: 2251 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -43.5,10.5 + parent: 2 + - type: DeviceLinkSink + links: + - 8248 - uid: 8207 components: - type: Transform @@ -82534,6 +83412,14 @@ entities: links: - 15259 - 15258 + - uid: 12569 + components: + - type: Transform + pos: -42.5,11.5 + parent: 2 + - type: DeviceLinkSink + links: + - 8248 - uid: 15234 components: - type: Transform @@ -82992,6 +83878,14 @@ entities: links: - 3263 - 3268 + - uid: 16255 + components: + - type: Transform + pos: 84.5,38.5 + parent: 2 + - type: DeviceLinkSink + links: + - 16256 - proto: ShuttersWindow entities: - uid: 8239 @@ -83032,12 +83926,6 @@ entities: links: - 15432 - 15439 - - uid: 13494 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -15.5,-7.5 - parent: 2 - proto: ShuttersWindowOpen entities: - uid: 8243 @@ -83128,16 +84016,12 @@ entities: - Pressed: Toggle 8238: - Pressed: Toggle - - uid: 13394 - components: - - type: Transform - pos: -16.5,-5.5 - parent: 2 - - uid: 13395 - components: - - type: Transform - pos: -15.5,-5.5 - parent: 2 + 2251: + - Pressed: Toggle + 2247: + - Pressed: Toggle + 12569: + - Pressed: Toggle - proto: SignalButtonDirectional entities: - uid: 8249 @@ -83891,6 +84775,11 @@ entities: rot: 3.141592653589793 rad pos: 12.5,4.5 parent: 2 + - uid: 16227 + components: + - type: Transform + pos: 15.5,6.5 + parent: 2 - proto: SmartFridge entities: - uid: 8288 @@ -83905,6 +84794,11 @@ entities: parent: 2 - proto: SMESBasic entities: + - uid: 255 + components: + - type: Transform + pos: -59.5,-3.5 + parent: 2 - uid: 8290 components: - type: Transform @@ -84083,19 +84977,19 @@ entities: - type: Transform pos: 68.5,20.5 parent: 2 -- proto: SpawnMobCorgi +- proto: SpawnMobCleanBot entities: - - uid: 8304 + - uid: 8683 components: - type: Transform - pos: 30.5,-3.5 + pos: 19.5,1.5 parent: 2 -- proto: SpawnMobCrabAtmos +- proto: SpawnMobCorgi entities: - - uid: 12833 + - uid: 8304 components: - type: Transform - pos: 82.5,42.5 + pos: 30.5,-3.5 parent: 2 - proto: SpawnMobFoxRenault entities: @@ -84638,6 +85532,13 @@ entities: - type: Transform pos: 16.5,-2.5 parent: 2 +- proto: SpawnPointObserver + entities: + - uid: 13411 + components: + - type: Transform + pos: 5.5,1.5 + parent: 2 - proto: SpawnPointParamedic entities: - uid: 13082 @@ -84824,20 +85725,25 @@ entities: parent: 2 - proto: SpawnPointPrisoner entities: - - uid: 12328 + - uid: 12903 components: - type: Transform - pos: -36.5,-3.5 + pos: -44.5,6.5 parent: 2 - - uid: 12902 + - uid: 16314 components: - type: Transform - pos: -32.5,-3.5 + pos: -48.5,6.5 parent: 2 - - uid: 12903 + - uid: 16315 components: - type: Transform - pos: -44.5,6.5 + pos: -46.5,7.5 + parent: 2 + - uid: 16321 + components: + - type: Transform + pos: -38.5,10.5 parent: 2 - proto: SpawnPointPrisonGuard entities: @@ -85591,14 +86497,6 @@ entities: rot: 3.141592653589793 rad pos: 76.5,43.5 parent: 2 -- proto: SteelBench - entities: - - uid: 13440 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -13.5,-7.5 - parent: 2 - proto: StimpackMini entities: - uid: 15165 @@ -85684,6 +86582,11 @@ entities: parent: 2 - proto: SubstationBasic entities: + - uid: 256 + components: + - type: Transform + pos: -65.5,-3.5 + parent: 2 - uid: 8390 components: - type: Transform @@ -85776,11 +86679,6 @@ entities: - type: Transform pos: -64.5,4.5 parent: 2 - - uid: 8403 - components: - - type: Transform - pos: -54.5,4.5 - parent: 2 - proto: SuitStorageCaptain entities: - uid: 8404 @@ -86329,16 +87227,6 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Вход к СМ - - uid: 15922 - components: - - type: Transform - pos: 89.5,42.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: СуперМатерия - uid: 15923 components: - type: Transform @@ -87994,15 +88882,10 @@ entities: - type: Transform pos: 74.5,-29.5 parent: 2 - - uid: 13329 - components: - - type: Transform - pos: -15.5,-7.5 - parent: 2 - - uid: 13355 + - uid: 13424 components: - type: Transform - pos: -14.5,-7.5 + pos: -45.5,8.5 parent: 2 - uid: 13543 components: @@ -88076,11 +88959,6 @@ entities: - type: Transform pos: 37.5,31.5 parent: 2 - - uid: 12286 - components: - - type: Transform - pos: -40.5,10.5 - parent: 2 - uid: 13390 components: - type: Transform @@ -88711,6 +89589,12 @@ entities: - type: Transform pos: 53.5,5.5 parent: 2 + - uid: 6935 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 47.5,-3.5 + parent: 2 - uid: 7085 components: - type: Transform @@ -88836,12 +89720,6 @@ entities: - type: Transform pos: 56.5,-16.5 parent: 2 - - uid: 7143 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 49.5,-2.5 - parent: 2 - uid: 7161 components: - type: Transform @@ -89022,12 +89900,28 @@ entities: - type: Transform pos: 89.5,-27.5 parent: 2 + - uid: 8648 + components: + - type: Transform + pos: 55.5,5.5 + parent: 2 - uid: 9096 components: - type: Transform rot: 1.5707963267948966 rad pos: -23.5,6.5 parent: 2 + - uid: 12588 + components: + - type: Transform + pos: 48.5,-3.5 + parent: 2 + - uid: 13396 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 50.5,-20.5 + parent: 2 - uid: 15891 components: - type: Transform @@ -89176,18 +90070,6 @@ entities: parent: 2 - proto: TableWood entities: - - uid: 407 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -14.5,-7.5 - parent: 2 - - uid: 3068 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -15.5,-7.5 - parent: 2 - uid: 3146 components: - type: Transform @@ -89718,26 +90600,27 @@ entities: parent: 2 - proto: TegCenter entities: - - uid: 16203 + - uid: 3885 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 83.5,45.5 + rot: 3.141592653589793 rad + pos: 85.5,44.5 parent: 2 - proto: TegCirculator entities: - - uid: 7010 + - uid: 3490 components: - type: Transform - rot: 3.141592653589793 rad - pos: 82.5,45.5 + rot: 1.5707963267948966 rad + pos: 85.5,45.5 parent: 2 - type: PointLight color: '#FF3300FF' - - uid: 16192 + - uid: 4312 components: - type: Transform - pos: 84.5,45.5 + rot: -1.5707963267948966 rad + pos: 85.5,43.5 parent: 2 - type: PointLight color: '#FF3300FF' @@ -89789,6 +90672,11 @@ entities: - type: Transform pos: -62.5,-4.5 parent: 2 + - uid: 12488 + components: + - type: Transform + pos: 65.5,25.5 + parent: 2 - proto: TelecomServerFilledEngineering entities: - uid: 8626 @@ -89844,54 +90732,48 @@ entities: parent: 2 - proto: TeslaCoil entities: - - uid: 12589 - components: - - type: Transform - pos: 95.5,50.5 - parent: 2 - - uid: 12590 - components: - - type: Transform - pos: 95.5,46.5 - parent: 2 - - uid: 12595 + - uid: 12647 components: - type: Transform - pos: 95.5,44.5 + rot: 3.141592653589793 rad + pos: 91.5,49.5 parent: 2 - - uid: 12597 + - uid: 13418 components: - type: Transform - pos: 95.5,48.5 + rot: 3.141592653589793 rad + pos: 95.5,49.5 parent: 2 - - uid: 12599 + - uid: 13422 components: - type: Transform - pos: 90.5,50.5 + rot: 3.141592653589793 rad + pos: 95.5,45.5 parent: 2 - - uid: 12600 + - uid: 13423 components: - type: Transform - pos: 90.5,44.5 + rot: 3.141592653589793 rad + pos: 91.5,45.5 parent: 2 - proto: TeslaGroundingRod entities: - - uid: 12596 + - uid: 2244 components: - type: Transform - pos: 95.5,47.5 + pos: 96.5,51.5 parent: 2 - - uid: 12646 + - uid: 4599 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 91.5,45.5 + rot: 3.141592653589793 rad + pos: 88.5,50.5 parent: 2 - - uid: 12647 + - uid: 4607 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 91.5,49.5 + rot: 3.141592653589793 rad + pos: 97.5,44.5 parent: 2 - proto: ThermomachineFreezerMachineCircuitBoard entities: @@ -89954,11 +90836,10 @@ entities: parent: 2 - proto: ToiletDirtyWater entities: - - uid: 8635 + - uid: 2249 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -42.5,8.5 + pos: -48.5,8.5 parent: 2 - uid: 8636 components: @@ -90484,17 +91365,17 @@ entities: parent: 2 - proto: VendingMachineChemDrobe entities: - - uid: 8676 + - uid: 12623 components: - type: Transform - pos: 50.5,-5.5 + pos: 66.5,-2.5 parent: 2 - proto: VendingMachineChemicals entities: - - uid: 8677 + - uid: 16322 components: - type: Transform - pos: 50.5,-4.5 + pos: 64.5,-3.5 parent: 2 - proto: VendingMachineClothing entities: @@ -90654,6 +91535,11 @@ entities: - type: Transform pos: 23.5,10.5 parent: 2 + - uid: 12568 + components: + - type: Transform + pos: -44.5,8.5 + parent: 2 - proto: VendingMachineRepDrobe entities: - uid: 8688 @@ -90931,17 +91817,19 @@ entities: - type: Transform pos: 14.5,-2.5 parent: 2 -- proto: WallReinforced +- proto: WallmountTelevision entities: - - uid: 1592 + - uid: 2250 components: - type: Transform - pos: 63.5,48.5 + pos: -37.5,9.5 parent: 2 - - uid: 2095 +- proto: WallReinforced + entities: + - uid: 1592 components: - type: Transform - pos: -34.5,11.5 + pos: 63.5,48.5 parent: 2 - uid: 3067 components: @@ -90961,6 +91849,11 @@ entities: rot: -1.5707963267948966 rad pos: 87.5,49.5 parent: 2 + - uid: 4689 + components: + - type: Transform + pos: -33.5,11.5 + parent: 2 - uid: 6905 components: - type: Transform @@ -91344,11 +92237,6 @@ entities: - type: Transform pos: -38.5,-2.5 parent: 2 - - uid: 8792 - components: - - type: Transform - pos: -41.5,10.5 - parent: 2 - uid: 8793 components: - type: Transform @@ -91860,11 +92748,6 @@ entities: - type: Transform pos: -49.5,-0.5 parent: 2 - - uid: 8895 - components: - - type: Transform - pos: -40.5,11.5 - parent: 2 - uid: 8896 components: - type: Transform @@ -92050,11 +92933,6 @@ entities: - type: Transform pos: -52.5,-9.5 parent: 2 - - uid: 8933 - components: - - type: Transform - pos: -39.5,11.5 - parent: 2 - uid: 8934 components: - type: Transform @@ -92418,11 +93296,6 @@ entities: - type: Transform pos: -30.5,-1.5 parent: 2 - - uid: 9006 - components: - - type: Transform - pos: -38.5,11.5 - parent: 2 - uid: 9007 components: - type: Transform @@ -92724,11 +93597,6 @@ entities: - type: Transform pos: -43.5,4.5 parent: 2 - - uid: 9066 - components: - - type: Transform - pos: -42.5,9.5 - parent: 2 - uid: 9067 components: - type: Transform @@ -102270,12 +103138,22 @@ entities: rot: -1.5707963267948966 rad pos: 15.5,31.5 parent: 2 + - uid: 12608 + components: + - type: Transform + pos: -39.5,12.5 + parent: 2 - uid: 13182 components: - type: Transform rot: -1.5707963267948966 rad pos: -14.5,-1.5 parent: 2 + - uid: 13407 + components: + - type: Transform + pos: -40.5,12.5 + parent: 2 - uid: 13438 components: - type: Transform @@ -102363,6 +103241,11 @@ entities: rot: -1.5707963267948966 rad pos: 14.5,31.5 parent: 2 + - uid: 15988 + components: + - type: Transform + pos: -36.5,10.5 + parent: 2 - uid: 16030 components: - type: Transform @@ -102393,6 +103276,16 @@ entities: rot: -1.5707963267948966 rad pos: 20.5,31.5 parent: 2 + - uid: 16124 + components: + - type: Transform + pos: -36.5,11.5 + parent: 2 + - uid: 16211 + components: + - type: Transform + pos: -41.5,12.5 + parent: 2 - proto: WallSolid entities: - uid: 987 @@ -105656,12 +106549,6 @@ entities: parent: 2 - proto: WallWood entities: - - uid: 3490 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -16.5,-7.5 - parent: 2 - uid: 7141 components: - type: Transform @@ -106008,13 +106895,6 @@ entities: parent: 2 missingComponents: - WarpPoint - - uid: 15988 - components: - - type: Transform - pos: -41.5,12.5 - parent: 2 - missingComponents: - - WarpPoint - uid: 15989 components: - type: Transform @@ -106360,6 +107240,13 @@ entities: - type: Transform pos: 35.5,23.5 parent: 2 +- proto: WaterTankHighCapacity + entities: + - uid: 16226 + components: + - type: Transform + pos: 16.5,6.5 + parent: 2 - proto: WaterVaporCanister entities: - uid: 11382 @@ -106645,11 +107532,6 @@ entities: - type: Transform pos: 40.5,16.5 parent: 2 - - uid: 2096 - components: - - type: Transform - pos: -37.5,11.5 - parent: 2 - uid: 8609 components: - type: Transform @@ -106781,11 +107663,6 @@ entities: rot: 3.141592653589793 rad pos: 78.5,-14.5 parent: 2 - - uid: 13385 - components: - - type: Transform - pos: -15.5,-7.5 - parent: 2 - uid: 14685 components: - type: Transform @@ -106995,6 +107872,11 @@ entities: rot: 1.5707963267948966 rad pos: 82.5,13.5 parent: 2 + - uid: 16254 + components: + - type: Transform + pos: 93.5,46.5 + parent: 2 - proto: WindoorSecureHeadOfPersonnelLocked entities: - uid: 11429 @@ -107151,28 +108033,6 @@ entities: - type: Transform pos: -12.5,-1.5 parent: 2 -- proto: WindoorSecureServiceLocked - entities: - - uid: 13381 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -16.5,-6.5 - parent: 2 - - uid: 13383 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -15.5,-7.5 - parent: 2 -- proto: WindoorServiceLocked - entities: - - uid: 13382 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -14.5,-7.5 - parent: 2 - proto: Window entities: - uid: 9766 @@ -107404,6 +108264,53 @@ entities: parent: 2 - proto: WindowReinforcedDirectional entities: + - uid: 407 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 91.5,47.5 + parent: 2 + - uid: 1597 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 92.5,48.5 + parent: 2 + - uid: 2243 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 91.5,48.5 + parent: 2 + - uid: 4615 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 91.5,46.5 + parent: 2 + - uid: 4616 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 93.5,48.5 + parent: 2 + - uid: 4680 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 94.5,48.5 + parent: 2 + - uid: 4684 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 95.5,48.5 + parent: 2 + - uid: 4685 + components: + - type: Transform + pos: 92.5,46.5 + parent: 2 - uid: 8018 components: - type: Transform @@ -107862,10 +108769,22 @@ entities: rot: -1.5707963267948966 rad pos: 1.5,10.5 parent: 2 - - uid: 13336 + - uid: 13415 components: - type: Transform - pos: -14.5,-7.5 + pos: 94.5,46.5 + parent: 2 + - uid: 13417 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 95.5,47.5 + parent: 2 + - uid: 13421 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 95.5,46.5 parent: 2 - uid: 14885 components: @@ -108066,24 +108985,6 @@ entities: rot: -1.5707963267948966 rad pos: 17.5,25.5 parent: 2 - - uid: 13337 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -13.5,-7.5 - parent: 2 - - uid: 13357 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -15.5,-7.5 - parent: 2 - - uid: 13360 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -13.5,-6.5 - parent: 2 - uid: 13554 components: - type: Transform From babc9778e31567dfcd12d907e46bad48039583f1 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Mon, 23 Sep 2024 15:57:29 +0300 Subject: [PATCH 33/44] =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=B6=D1=83=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D1=8D?= =?UTF-8?q?=D1=82=D0=BE=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Locale/ru-RU/administration/ui/admin-notes.ftl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl b/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl index 2fbd8f27b8..501bfb02be 100644 --- a/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl +++ b/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl @@ -23,8 +23,7 @@ admin-notes-hide = Скрыть admin-notes-delete-confirm = Вы уверены? admin-notes-edited = Последнее изменение от { $author } в { $date } admin-notes-unbanned = Разбанил { $admin } в { $date } -admin-notes-message-desc = - [color=white]Вы получили { $count -> +admin-notes-message-desc = [color=white]Вы получили { $count -> [1] новое сообщение от администрации *[other] новых сообщений от администрации } с момента последней игры на сервере.[/color] From 611e75d82385f095094dad7d94e261aac14d8084 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Mon, 23 Sep 2024 15:58:37 +0300 Subject: [PATCH 34/44] =?UTF-8?q?=D0=B3=D0=BB=D0=B8=D0=BC=D0=BC=D0=B5?= =?UTF-8?q?=D1=80=20=D1=81=D1=80=D0=B0=D0=BD=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Locale/ru-RU/abilities/psionic.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Locale/ru-RU/abilities/psionic.ftl b/Resources/Locale/ru-RU/abilities/psionic.ftl index 47ae6f4228..f0a9b1d897 100644 --- a/Resources/Locale/ru-RU/abilities/psionic.ftl +++ b/Resources/Locale/ru-RU/abilities/psionic.ftl @@ -31,8 +31,8 @@ action-description-telegnosis = Создайте проекцию что бы у action-name-psionic-regeneration = Псионическая регенерация action-description-psionic-regeneration = Доведите свой метоболизм до предела что бы ускорить регенерацию. glimmer-report = Текущий уровень глиммера: { $level }Ψ. -glimmer-event-report-generic = Разрядка ноöсферы. Уровень глиммера уменьшен с { $decrease } до { $level }Ψ. -glimmer-event-report-signatures = Проявились новые псионические сигнатуры. Уроверь глиммера уменьшен на { $decrease } до { $level }Ψ. +glimmer-event-report-generic = Разрядка ноöсферы. Уровень глиммера уменьшен на { $decrease }, текущий { $level }Ψ. +glimmer-event-report-signatures = Проявились новые псионические сигнатуры. Уроверь глиммера уменьшен на { $decrease }, текущий { $level }Ψ. glimmer-event-awakened-prefix = { $entity } пробудился noospheric-zap-seize = Вы задыхаетесь! noospheric-zap-seize-potential-regained = Ты схватываешь на лету! Кажется, какой-то ментальный барьер тоже снят. From 69f1d1c592a80d397abec199b1e240e81f551902 Mon Sep 17 00:00:00 2001 From: Lost-Paradise-Bot <172407741+Lost-Paradise-Bot@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:04:30 +0000 Subject: [PATCH 35/44] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20(#186)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Changelog/ChangelogLPP.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/ChangelogLPP.yml b/Resources/Changelog/ChangelogLPP.yml index 6ab9cb3ffb..9fd31b9d96 100644 --- a/Resources/Changelog/ChangelogLPP.yml +++ b/Resources/Changelog/ChangelogLPP.yml @@ -655,3 +655,10 @@ Entries: id: 60 time: '2024-09-22T13:29:47.0000000+00:00' url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/181 +- author: Evgencheg + changes: + - type: Fix + message: Исправлены переводы! + id: 61 + time: '2024-09-23T13:03:59.0000000+00:00' + url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/186 From 509fe8020a13057203a0c3bd262531bc85a0e22c Mon Sep 17 00:00:00 2001 From: Lost-Paradise-Bot <172407741+Lost-Paradise-Bot@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:15:20 +0000 Subject: [PATCH 36/44] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20(#185)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Changelog/ChangelogLPP.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Resources/Changelog/ChangelogLPP.yml b/Resources/Changelog/ChangelogLPP.yml index 9fd31b9d96..7980bd855d 100644 --- a/Resources/Changelog/ChangelogLPP.yml +++ b/Resources/Changelog/ChangelogLPP.yml @@ -662,3 +662,8 @@ Entries: id: 61 time: '2024-09-23T13:03:59.0000000+00:00' url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/186 +- author: PowerKAT1 + changes: [] + id: 62 + time: '2024-09-23T13:14:50.0000000+00:00' + url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/185 From 8ec031ebe57f08caa3baf86d41ee5e3565a4b42c Mon Sep 17 00:00:00 2001 From: Evgencheg <73418250+Evgencheg@users.noreply.github.com> Date: Mon, 23 Sep 2024 16:25:34 +0300 Subject: [PATCH 37/44] Update ChangelogLPP.yml --- Resources/Changelog/ChangelogLPP.yml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/ChangelogLPP.yml b/Resources/Changelog/ChangelogLPP.yml index 7980bd855d..4f82697290 100644 --- a/Resources/Changelog/ChangelogLPP.yml +++ b/Resources/Changelog/ChangelogLPP.yml @@ -575,7 +575,7 @@ Entries: - type: Fix message: Исправлен перевод вещей ПВ и прочих! - type: Fix - message: 'Исправлен баг с отображением иконки роли визорам: Мед-сб, Инж-сб! ' + message: Исправлен баг с отображением иконки роли визорам: Мед-сб, Инж-сб! id: 56 time: '2024-09-20T14:51:04.0000000+00:00' url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/167 @@ -602,7 +602,7 @@ Entries: - type: Tweak message: Изменены параметры появления режимов. - type: Tweak - message: 'Изменено: Вор потерял пацифизм в угоду РП и логики.' + message: Изменено: Вор потерял пацифизм в угоду РП и логики. id: 59 time: '2024-09-21T16:25:24.0000000+00:00' url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/174 @@ -617,19 +617,19 @@ Entries: - type: Add message: Добавлен очищенный алмаз! - type: Add - message: Добавлена новая дисциплина РнД "Алмазное производство"! + message: Добавлена новая дисциплина РнД Алмазное производство! - type: Add message: >- - Добавлена новая технология Т1 алмазного производства "Продвинутое - алмазное шахтёрское оборудование"! + Добавлена новая технология Т1 алмазного производства Продвинутое + алмазное шахтёрское оборудование! - type: Add message: Добавлены алмазный бур и алмазная кирка! - type: Add - message: Добавлена новая технология Т2 сервис "Продвинутое отслеживание"! + message: Добавлена новая технология Т2 сервис Продвинутое отслеживание! - type: Add message: Добавлена плата дробителя алмазов! - type: Add - message: Добавлена новая технология Т2 экспериментальная "Обработка алмазов"! + message: Добавлена новая технология Т2 экспериментальная Обработка алмазов! - type: Remove message: Убран дубликат штурмового молота с карт! - type: Tweak @@ -638,11 +638,10 @@ Entries: message: Теперь некоторые Т3 технологии требуют очищенный алмаз! - type: Tweak message: >- - Портативный монитор датчиков теперь в технологии "Продвинутое - отслеживание"! + Портативный монитор датчиков теперь в технологии Продвинутое отслеживание! - type: Tweak message: >- - Теперь технология "Базовое отслеживание" открывает платы монитора и + Теперь технология Базовое отслеживание открывает платы монитора и сервера датчиков! - type: Tweak message: >- @@ -663,7 +662,9 @@ Entries: time: '2024-09-23T13:03:59.0000000+00:00' url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/186 - author: PowerKAT1 - changes: [] + changes: + - type: Fix + message: Исправлена карта Нормандия! id: 62 time: '2024-09-23T13:14:50.0000000+00:00' url: https://github.com/Lost-Paradise-Project/Lost-Paradise/pull/185 From 42c396b167bedfae953cf1c0e9eac1e281b6a983 Mon Sep 17 00:00:00 2001 From: Evgencheg <7064926@gmail.com> Date: Mon, 23 Sep 2024 17:51:23 +0300 Subject: [PATCH 38/44] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PULL_REQUEST_TEMPLATE.md | 2 ++ .../Locale/ru-RU/_LostParadise/revolvers.ftl | 2 +- .../ru-RU/chat/managers/chat-manager.ftl | 2 +- .../Locale/ru-RU/nuke/nuke-component.ftl | 2 +- .../clothing/head/hardsuit-helmets.ftl | 7 ++----- .../clothing/outerclothing/hardsuits.ftl | 7 ++----- .../entities/markers/environmental.ftl | 20 +++++++++---------- 7 files changed, 19 insertions(+), 23 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4ec4f897b8..ae3b753ccc 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -18,6 +18,8 @@ - [ ] Я запускал локальный сервер со своими изменениями и всё протестировал. - [ ] Я добавил скриншот/видео демонстрации PR в игре, **или** этот PR этого не требует. - [ ] Я не добавлял контент нарушающий чужие авторские права. +- [ ] Я добавил свой контент только в папку _LostParadise(только если вы не меняете оригинальный код). +- [ ] Я не добавлял переводы в прототипы, а сделал их в файле locale. **Изменения**