From b00b9e8522535a666fea609992fd99507f7b4f8a Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:09:51 -0700 Subject: [PATCH 001/111] Mirror: add more astro-grasses (#380) ## Mirror of PR #26381: [add more astro-grasses](https://github.com/space-wizards/space-station-14/pull/26381) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `89235b9e1b91b32b3e55b364d46c79daabe199e9` PR opened by IProduceWidgets at 2024-03-24 06:01:14 UTC --- PR changed 7 files with 130 additions and 1 deletions. The PR had the following labels: - No C# - Status: Needs Review ---

Original Body

> > > > ## About the PR > > Ever fearful that their staff will manage to touch real grass, NanoTrasen has put billions of spesos of work into developing the worlds most life like astro-grasses. Yet still, with all the innovations made, the glorious corporate overlords have deemed us worth of yet more varieties of real fake grass. It almost feels like you're actually outside! > ![image](https://github.com/space-wizards/space-station-14/assets/107586145/368d6f07-deab-4e55-a02e-e0845e178fbe) > > ## Why / Balance > > To celebrate the server's remarkable uptime metrics. > > ## Technical details > > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > :cl: > - add: More varieties of astro-grass are now available. > - tweak: Astro-grass must now be cut instead of pried.
Co-authored-by: SimpleStation14 --- Resources/Locale/en-US/tiles/tiles.ftl | 3 ++ .../Entities/Objects/Misc/tiles.yml | 51 +++++++++++++++++++ .../Entities/Structures/Machines/lathe.yml | 3 ++ Resources/Prototypes/Recipes/Lathes/misc.yml | 21 ++++++++ .../Prototypes/Research/civilianservices.yml | 3 ++ .../Prototypes/Stacks/floor_tile_stacks.yml | 21 ++++++++ Resources/Prototypes/Tiles/floors.yml | 29 ++++++++++- 7 files changed, 130 insertions(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/tiles/tiles.ftl b/Resources/Locale/en-US/tiles/tiles.ftl index 0a1b13a6e0d..e5b6810fcab 100644 --- a/Resources/Locale/en-US/tiles/tiles.ftl +++ b/Resources/Locale/en-US/tiles/tiles.ftl @@ -122,5 +122,8 @@ tiles-hull-reinforced = exterior reinforced hull plating tiles-web = web tile tiles-chromite = chromite tiles-astro-grass = astro-grass +tiles-mowed-astro-grass = mowed astro-grass +tiles-jungle-astro-grass = jungle astro-grass tiles-astro-ice = astro-ice +tiles-astro-snow = astro-snow tiles-wood-large = large wood \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Misc/tiles.yml b/Resources/Prototypes/Entities/Objects/Misc/tiles.yml index 45762474a98..78bbd32f174 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/tiles.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/tiles.yml @@ -1056,6 +1056,40 @@ - type: Stack stackType: FloorTileAstroGrass +- type: entity + id: FloorTileItemMowedAstroGrass + parent: FloorTileItemBase + name: mowed astro-grass + description: Fake grass that covers up wires and even comes with realistic NanoTrimmings! + components: + - type: Sprite + state: grass + - type: Item + heldPrefix: grass + - type: FloorTile + outputs: + - Plating + - FloorMowedAstroGrass + - type: Stack + stackType: FloorTileAstroGrass + +- type: entity + id: FloorTileItemJungleAstroGrass + parent: FloorTileItemBase + name: jungle astro-grass + description: Fake grass that covers up wires and even comes with realistic NanoTrimmings! + components: + - type: Sprite + state: grassjungle + - type: Item + heldPrefix: grass + - type: FloorTile + outputs: + - Plating + - FloorJungleAstroGrass + - type: Stack + stackType: FloorTileAstroGrass + - type: entity id: FloorTileItemAstroIce parent: FloorTileItemBase @@ -1073,6 +1107,23 @@ - type: Stack stackType: FloorTileAstroIce +- type: entity + id: FloorTileItemAstroSnow + parent: FloorTileItemBase + name: astro-snow + description: Fake snow that's as fluffy as the real thing, while being easily removable! + components: + - type: Sprite + state: snow + - type: Item + heldPrefix: snow + - type: FloorTile + outputs: + - Plating + - FloorAstroSnow + - type: Stack + stackType: FloorTileAstroSnow + - type: entity name: large wood floor parent: FloorTileItemBase diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 5f3c7191625..011f2a3b649 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -335,7 +335,10 @@ - JawsOfLife - CoreSilver # Nyanotrasen - Silver Golem core - FauxTileAstroGrass + - FauxTileMowedAstroGrass + - FauxTileJungleAstroGrass - FauxTileAstroIce + - FauxTileAstroSnow - OreBagOfHolding - DeviceQuantumSpinInverter - type: EmagLatheRecipes diff --git a/Resources/Prototypes/Recipes/Lathes/misc.yml b/Resources/Prototypes/Recipes/Lathes/misc.yml index 13347883760..ab13dc4573f 100644 --- a/Resources/Prototypes/Recipes/Lathes/misc.yml +++ b/Resources/Prototypes/Recipes/Lathes/misc.yml @@ -150,6 +150,20 @@ materials: Plastic: 100 +- type: latheRecipe + id: FauxTileMowedAstroGrass + result: FloorTileItemMowedAstroGrass + completetime: 1 + materials: + Plastic: 100 + +- type: latheRecipe + id: FauxTileJungleAstroGrass + result: FloorTileItemJungleAstroGrass + completetime: 1 + materials: + Plastic: 100 + - type: latheRecipe id: FauxTileAstroIce result: FloorTileItemAstroIce @@ -157,6 +171,13 @@ materials: Plastic: 100 +- type: latheRecipe + id: FauxTileAstroSnow + result: FloorTileItemAstroSnow + completetime: 1 + materials: + Plastic: 100 + - type: latheRecipe id: FloorGreenCircuit result: FloorTileItemGCircuit4 diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index c3f83e0fc59..61f95894ee6 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -110,7 +110,10 @@ cost: 5000 recipeUnlocks: - FauxTileAstroGrass + - FauxTileMowedAstroGrass + - FauxTileJungleAstroGrass - FauxTileAstroIce + - FauxTileAstroSnow - type: technology id: BiochemicalStasis diff --git a/Resources/Prototypes/Stacks/floor_tile_stacks.yml b/Resources/Prototypes/Stacks/floor_tile_stacks.yml index b469f55c59c..c5e37013b87 100644 --- a/Resources/Prototypes/Stacks/floor_tile_stacks.yml +++ b/Resources/Prototypes/Stacks/floor_tile_stacks.yml @@ -475,6 +475,20 @@ maxCount: 30 itemSize: 5 +- type: stack + id: FloorTileMowedAstroGrass + name: mowed astro-grass floor + spawn: FloorTileItemMowedAstroGrass + maxCount: 30 + itemSize: 5 + +- type: stack + id: FloorTileJungleAstroGrass + name: jungle astro-grass floor + spawn: FloorTileItemJungleAstroGrass + maxCount: 30 + itemSize: 5 + - type: stack id: FloorTileAstroIce name: astro-ice floor @@ -482,6 +496,13 @@ maxCount: 30 itemSize: 5 +- type: stack + id: FloorTileAstroSnow + name: astro-snow floor + spawn: FloorTileItemAstroSnow + maxCount: 30 + itemSize: 5 + - type: stack id: FloorTileWoodLarge name: large wood floor diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index 15c80a8e5f0..59fa88be2b2 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -1874,12 +1874,30 @@ West: /Textures/Tiles/Planet/Grass/double_edge.png baseTurf: Plating isSubfloor: false - deconstructTools: [ Prying ] + deconstructTools: [ Cutting ] footstepSounds: collection: FootstepGrass itemDrop: FloorTileItemAstroGrass heatCapacity: 10000 +- type: tile + id: FloorMowedAstroGrass + name: tiles-mowed-astro-grass + parent: FloorGrass + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Cutting ] + itemDrop: FloorTileItemMowedAstroGrass + +- type: tile + id: FloorJungleAstroGrass + name: tiles-jungle-astro-grass + parent: FloorGrassJungle + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Cutting ] + itemDrop: FloorTileItemJungleAstroGrass + # Ice - type: tile id: FloorAstroIce @@ -1895,6 +1913,15 @@ mobAcceleration: 2 itemDrop: FloorTileItemAstroIce +- type: tile + id: FloorAstroSnow + name: tiles-astro-snow + parent: FloorSnow + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + itemDrop: FloorTileItemAstroSnow + - type: tile id: FloorWoodLarge name: tiles-wood-large From d19e5bb92ddd9b6fce5320c14711ccd7c34aa6eb Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:10:02 -0700 Subject: [PATCH 002/111] Mirror: fix: the captain can put his laser gun back in the box. (#379) ## Mirror of PR #26398: [fix: the captain can put his laser gun back in the box.](https://github.com/space-wizards/space-station-14/pull/26398) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `27a9b078239fb32be00e78fd980951f16f644dac` PR opened by IProduceWidgets at 2024-03-24 18:29:22 UTC --- PR changed 1 files with 1 additions and 0 deletions. The PR had the following labels: - No C# ---

Original Body

> > > > ## About the PR > > fixed #25519 the tagging for the captain's laser glass box. > > ## Why / Balance > > > ## Technical details > > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > :cl: > - fix: The captain can now return his laser to the glass display box.
Co-authored-by: SimpleStation14 --- .../Entities/Objects/Weapons/Guns/Battery/battery_guns.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index 00d12606841..1487fbe1981 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -578,6 +578,7 @@ tags: - HighRiskItem - Sidearm + - WeaponAntiqueLaser - type: StaticPrice price: 750 - type: StealTarget From 3b635f1729de206da411c92c6f35c51fecb4a8ef Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:14:58 -0700 Subject: [PATCH 003/111] Mirror: haunted dungeon template (#321) ## Mirror of PR #23768: [haunted dungeon template](https://github.com/space-wizards/space-station-14/pull/23768) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `952b7f4c4e8e957c0c3765f7b20f2745c9297e27` PR opened by Emisse at 2024-01-09 07:36:29 UTC --- PR changed 17 files with 4009 additions and 67 deletions. The PR had the following labels: ---

Original Body

> also for sloth when he gets to it > > Requires https://github.com/space-wizards/RobustToolbox/pull/4980
Co-authored-by: SimpleStation14 --- .../DungeonJob.CorridorClutterPost.cs | 53 + .../Procedural/DungeonJob.PostGen.cs | 89 +- .../Procedural/DungeonJob.PrefabDunGen.cs | 2 +- .../Procedural/DungeonJob.WormPost.cs | 193 + Content.Server/Procedural/DungeonJob.cs | 6 + Content.Shared/Procedural/Dungeon.cs | 7 + Content.Shared/Procedural/DungeonRoom.cs | 2 +- .../PostGeneration/BoundaryWallPostGen.cs | 20 +- .../PostGeneration/CornerClutterPostGen.cs | 4 +- .../PostGeneration/CorridorClutterPostGen.cs | 18 + .../PostGeneration/CorridorPostGen.cs | 15 +- .../PostGeneration/WormCorridorPostGen.cs | 42 + Resources/Maps/Dungeon/haunted.yml | 3251 +++++++++++++++++ .../Prototypes/Procedural/Themes/haunted.yml | 308 ++ .../Prototypes/Procedural/dungeon_configs.yml | 55 +- .../Prototypes/Procedural/salvage_mods.yml | 8 +- Resources/Prototypes/tags.yml | 3 + 17 files changed, 4009 insertions(+), 67 deletions(-) create mode 100644 Content.Server/Procedural/DungeonJob.CorridorClutterPost.cs create mode 100644 Content.Server/Procedural/DungeonJob.WormPost.cs create mode 100644 Content.Shared/Procedural/PostGeneration/CorridorClutterPostGen.cs create mode 100644 Content.Shared/Procedural/PostGeneration/WormCorridorPostGen.cs create mode 100644 Resources/Maps/Dungeon/haunted.yml create mode 100644 Resources/Prototypes/Procedural/Themes/haunted.yml diff --git a/Content.Server/Procedural/DungeonJob.CorridorClutterPost.cs b/Content.Server/Procedural/DungeonJob.CorridorClutterPost.cs new file mode 100644 index 00000000000..8099157cc50 --- /dev/null +++ b/Content.Server/Procedural/DungeonJob.CorridorClutterPost.cs @@ -0,0 +1,53 @@ +using System.Threading.Tasks; +using Content.Shared.Procedural; +using Content.Shared.Procedural.PostGeneration; +using Content.Shared.Storage; +using Robust.Shared.Map.Components; +using Robust.Shared.Physics.Components; +using Robust.Shared.Random; + +namespace Content.Server.Procedural; + +public sealed partial class DungeonJob +{ + private async Task PostGen(CorridorClutterPostGen gen, Dungeon dungeon, EntityUid gridUid, MapGridComponent grid, + Random random) + { + var physicsQuery = _entManager.GetEntityQuery(); + var count = (int) Math.Ceiling(dungeon.CorridorTiles.Count * gen.Chance); + + while (count > 0) + { + var tile = random.Pick(dungeon.CorridorTiles); + + var enumerator = _maps.GetAnchoredEntitiesEnumerator(_gridUid, _grid, tile); + var blocked = false; + + while (enumerator.MoveNext(out var ent)) + { + if (!physicsQuery.TryGetComponent(ent, out var physics) || + !physics.CanCollide || + !physics.Hard) + { + continue; + } + + blocked = true; + break; + } + + if (blocked) + continue; + + count--; + + var protos = EntitySpawnCollection.GetSpawns(gen.Contents, random); + var coords = _maps.ToCenterCoordinates(_gridUid, tile, _grid); + _entManager.SpawnEntities(coords, protos); + await SuspendIfOutOfTime(); + + if (!ValidateResume()) + return; + } + } +} diff --git a/Content.Server/Procedural/DungeonJob.PostGen.cs b/Content.Server/Procedural/DungeonJob.PostGen.cs index 9674cb5fae9..b326bcc378f 100644 --- a/Content.Server/Procedural/DungeonJob.PostGen.cs +++ b/Content.Server/Procedural/DungeonJob.PostGen.cs @@ -26,7 +26,7 @@ public sealed partial class DungeonJob private bool HasWall(MapGridComponent grid, Vector2i tile) { - var anchored = grid.GetAnchoredEntitiesEnumerator(tile); + var anchored = _maps.GetAnchoredEntitiesEnumerator(_gridUid, _grid, tile); while (anchored.MoveNext(out var uid)) { @@ -52,7 +52,7 @@ private async Task PostGen(AutoCablingPostGen gen, Dungeon dungeon, EntityUid gr // Gather existing nodes foreach (var tile in allTiles) { - var anchored = grid.GetAnchoredEntitiesEnumerator(tile); + var anchored = _maps.GetAnchoredEntitiesEnumerator(_gridUid, _grid, tile); while (anchored.MoveNext(out var anc)) { @@ -186,7 +186,9 @@ private async Task PostGen(BoundaryWallPostGen gen, Dungeon dungeon, EntityUid g // - Tiles first foreach (var neighbor in dungeon.RoomExteriorTiles) { - if (dungeon.RoomTiles.Contains(neighbor)) + DebugTools.Assert(!dungeon.RoomTiles.Contains(neighbor)); + + if (dungeon.Entrances.Contains(neighbor)) continue; if (!_anchorable.TileFree(grid, neighbor, DungeonSystem.CollisionLayer, DungeonSystem.CollisionMask)) @@ -265,7 +267,6 @@ private async Task PostGen(CornerClutterPostGen gen, Dungeon dungeon, EntityUid Random random) { var physicsQuery = _entManager.GetEntityQuery(); - var tagQuery = _entManager.GetEntityQuery(); foreach (var tile in dungeon.CorridorTiles) { @@ -771,7 +772,7 @@ private async Task PostGen(CorridorPostGen gen, Dungeon dungeon, EntityUid gridU { for (var y = -expansion; y <= expansion; y++) { - var neighbor = new Vector2i(tile.X + x, tile.Y + y); + var neighbor = new Vector2(tile.X + x, tile.Y + y).Floored(); if (dungeon.RoomTiles.Contains(neighbor) || dungeon.RoomExteriorTiles.Contains(neighbor) || @@ -817,6 +818,52 @@ private async Task PostGen(CorridorPostGen gen, Dungeon dungeon, EntityUid gridU return mod; }); + WidenCorridor(dungeon, gen.Width, corridorTiles); + + var setTiles = new List<(Vector2i, Tile)>(); + var tileDef = _prototype.Index(gen.Tile); + + foreach (var tile in corridorTiles) + { + setTiles.Add((tile, _tile.GetVariantTile(tileDef, random))); + } + + grid.SetTiles(setTiles); + dungeon.CorridorTiles.UnionWith(corridorTiles); + BuildCorridorExterior(dungeon); + } + + private void BuildCorridorExterior(Dungeon dungeon) + { + var exterior = dungeon.CorridorExteriorTiles; + + // Just ignore entrances or whatever for now. + foreach (var tile in dungeon.CorridorTiles) + { + for (var x = -1; x <= 1; x++) + { + for (var y = -1; y <= 1; y++) + { + var neighbor = new Vector2i(tile.X + x, tile.Y + y); + + if (dungeon.CorridorTiles.Contains(neighbor) || + dungeon.RoomExteriorTiles.Contains(neighbor) || + dungeon.RoomTiles.Contains(neighbor) || + dungeon.Entrances.Contains(neighbor)) + { + continue; + } + + exterior.Add(neighbor); + } + } + } + } + + private void WidenCorridor(Dungeon dungeon, float width, ICollection corridorTiles) + { + var expansion = width - 2; + // Widen the path if (expansion >= 1) { @@ -831,7 +878,7 @@ private async Task PostGen(CorridorPostGen gen, Dungeon dungeon, EntityUid gridU { for (var y = -expansion; y <= expansion; y++) { - var neighbor = new Vector2i(node.X + x, node.Y + y); + var neighbor = new Vector2(node.X + x, node.Y + y).Floored(); // Diagonals still matter here. if (dungeon.RoomTiles.Contains(neighbor) || @@ -852,36 +899,6 @@ private async Task PostGen(CorridorPostGen gen, Dungeon dungeon, EntityUid gridU corridorTiles.Add(node); } } - - var setTiles = new List<(Vector2i, Tile)>(); - var tileDef = _prototype.Index(gen.Tile); - - foreach (var tile in corridorTiles) - { - setTiles.Add((tile, _tile.GetVariantTile(tileDef, random))); - } - - grid.SetTiles(setTiles); - dungeon.CorridorTiles.UnionWith(corridorTiles); - - var exterior = dungeon.CorridorExteriorTiles; - - // Just ignore entrances or whatever for now. - foreach (var tile in dungeon.CorridorTiles) - { - for (var x = -1; x <= 1; x++) - { - for (var y = -1; y <= 1; y++) - { - var neighbor = new Vector2i(tile.X + x, tile.Y + y); - - if (dungeon.CorridorTiles.Contains(neighbor)) - continue; - - exterior.Add(neighbor); - } - } - } } private async Task PostGen(EntranceFlankPostGen gen, Dungeon dungeon, EntityUid gridUid, MapGridComponent grid, diff --git a/Content.Server/Procedural/DungeonJob.PrefabDunGen.cs b/Content.Server/Procedural/DungeonJob.PrefabDunGen.cs index 230c21c56e5..1783a567904 100644 --- a/Content.Server/Procedural/DungeonJob.PrefabDunGen.cs +++ b/Content.Server/Procedural/DungeonJob.PrefabDunGen.cs @@ -21,7 +21,6 @@ private async Task GeneratePrefabDungeon(PrefabDunGen prefab, EntityUid var dungeonRotation = _dungeon.GetDungeonRotation(seed); var dungeonTransform = Matrix3.CreateTransform(_position, dungeonRotation); var roomPackProtos = new Dictionary>(); - var fallbackTile = new Tile(_tileDefManager[prefab.Tile].TileId); foreach (var pack in _prototype.EnumeratePrototypes()) { @@ -325,6 +324,7 @@ private void SetDungeonEntrance(Dungeon dungeon, DungeonRoom room, Random random } room.Entrances.Add(entrancePos); + dungeon.Entrances.Add(entrancePos); break; } } diff --git a/Content.Server/Procedural/DungeonJob.WormPost.cs b/Content.Server/Procedural/DungeonJob.WormPost.cs new file mode 100644 index 00000000000..5d2271cae65 --- /dev/null +++ b/Content.Server/Procedural/DungeonJob.WormPost.cs @@ -0,0 +1,193 @@ +using System.Linq; +using System.Numerics; +using System.Threading.Tasks; +using Content.Shared.Procedural; +using Content.Shared.Procedural.PostGeneration; +using Robust.Shared.Collections; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Random; +using Robust.Shared.Utility; + +namespace Content.Server.Procedural; + +public sealed partial class DungeonJob +{ + /// + /// Tries to connect rooms via worm-like corridors. + /// + private async Task PostGen(WormCorridorPostGen gen, Dungeon dungeon, EntityUid gridUid, MapGridComponent grid, Random random) + { + var networks = new List<(Vector2i Start, HashSet Network)>(); + + // List of places to start from. + var worm = new ValueList(); + var startAngles = new Dictionary(); + + foreach (var room in dungeon.Rooms) + { + foreach (var entrance in room.Entrances) + { + var network = new HashSet { entrance }; + networks.Add((entrance, network)); + + // Point away from the room to start with. + startAngles.Add(entrance, (entrance + grid.TileSizeHalfVector - room.Center).ToAngle()); + } + } + + // There's a lot of ways to handle this, e.g. pathfinding towards each room + // For simplicity we'll go through each entrance randomly and generate worms from it + // then as a final step we will connect all of their networks. + random.Shuffle(networks); + + for (var i = 0; i < gen.Count; i++) + { + // Find a random network to worm from. + var startIndex = (i % networks.Count); + var startPos = networks[startIndex].Start; + var position = startPos + grid.TileSizeHalfVector; + + var remainingLength = gen.Length; + worm.Clear(); + var angle = startAngles[startPos]; + + for (var x = remainingLength; x >= 0; x--) + { + position += angle.ToVec(); + angle += random.NextAngle(-gen.MaxAngleChange, gen.MaxAngleChange); + var roundedPos = position.Floored(); + + // Check if the tile doesn't overlap something it shouldn't + if (dungeon.RoomTiles.Contains(roundedPos) || + dungeon.RoomExteriorTiles.Contains(roundedPos)) + { + continue; + } + + worm.Add(roundedPos); + } + + // Uhh yeah. + if (worm.Count == 0) + { + continue; + } + + // Find a random part on the existing worm to start. + var value = random.Pick(worm); + networks[startIndex].Network.UnionWith(worm); + startAngles[value] = random.NextAngle(); + } + + // Now to ensure they all connect we'll pathfind each network to one another + // Simple BFS pathfinder + var main = networks[0]; + + var frontier = new PriorityQueue(); + var cameFrom = new Dictionary(); + var costSoFar = new Dictionary(); + + // How many times we try to patch the networks together + var attempts = 3; + + for (var attempt = 0; attempt < attempts; attempt++) + { + // Skip index 0 + for (var i = networks.Count - 1; i > 0; i--) + { + cameFrom.Clear(); + frontier.Clear(); + costSoFar.Clear(); + + var targetNode = random.Pick(main.Network); + + var other = networks[i]; + var startNode = other.Network.First(); + frontier.Enqueue(startNode, 0f); + costSoFar[startNode] = 0f; + var count = 0; + + await SuspendIfOutOfTime(); + if (!ValidateResume()) + return; + + while (frontier.TryDequeue(out var node, out _) && count < gen.PathLimit) + { + count++; + + // Found + if (main.Network.Contains(node)) + { + // found, rebuild + frontier.Clear(); + main.Network.Add(node); + main.Network.UnionWith(other.Network); + var target = node; + + // Rebuild + while (cameFrom.TryGetValue(target, out var source)) + { + target = source; + main.Network.Add(target); + } + + networks.RemoveSwap(i); + continue; + } + + for (var x = -1; x <= 1; x++) + { + for (var y = -1; y <= 1; y++) + { + if (x == 0 && y == 0) + continue; + + var neighbor = node + new Vector2i(x, y); + + // Exclude room tiles. + if (dungeon.RoomTiles.Contains(neighbor) || + dungeon.RoomExteriorTiles.Contains(neighbor)) + { + continue; + } + + var tileCost = (neighbor - node).Length; + var gScore = costSoFar[node] + tileCost; + + if (costSoFar.TryGetValue(neighbor, out var nextValue) && gScore >= nextValue) + { + continue; + } + + cameFrom[neighbor] = node; + costSoFar[neighbor] = gScore; + var hScore = (targetNode - neighbor).Length + gScore; + + frontier.Enqueue(neighbor, hScore); + } + } + } + } + } + + WidenCorridor(dungeon, gen.Width, main.Network); + dungeon.CorridorTiles.UnionWith(main.Network); + BuildCorridorExterior(dungeon); + + var tiles = new List<(Vector2i Index, Tile Tile)>(); + var tileDef = _prototype.Index(gen.Tile); + + foreach (var tile in dungeon.CorridorTiles) + { + tiles.Add((tile, _tile.GetVariantTile(tileDef, random))); + } + + foreach (var tile in dungeon.CorridorExteriorTiles) + { + tiles.Add((tile, _tile.GetVariantTile(tileDef, random))); + } + + _maps.SetTiles(_gridUid, _grid, tiles); + } +} diff --git a/Content.Server/Procedural/DungeonJob.cs b/Content.Server/Procedural/DungeonJob.cs index c8a69808d31..8fecf1c9e8e 100644 --- a/Content.Server/Procedural/DungeonJob.cs +++ b/Content.Server/Procedural/DungeonJob.cs @@ -126,6 +126,9 @@ public DungeonJob( case CornerClutterPostGen clutter: await PostGen(clutter, dungeon, _gridUid, _grid, random); break; + case CorridorClutterPostGen corClutter: + await PostGen(corClutter, dungeon, _gridUid, _grid, random); + break; case CorridorPostGen cordor: await PostGen(cordor, dungeon, _gridUid, _grid, random); break; @@ -159,6 +162,9 @@ public DungeonJob( case WallMountPostGen wall: await PostGen(wall, dungeon, _gridUid, _grid, random); break; + case WormCorridorPostGen worm: + await PostGen(worm, dungeon, _gridUid, _grid, random); + break; default: throw new NotImplementedException(); } diff --git a/Content.Shared/Procedural/Dungeon.cs b/Content.Shared/Procedural/Dungeon.cs index 5e976fe83d0..aecfef2c782 100644 --- a/Content.Shared/Procedural/Dungeon.cs +++ b/Content.Shared/Procedural/Dungeon.cs @@ -15,6 +15,8 @@ public sealed class Dungeon public readonly HashSet CorridorExteriorTiles = new(); + public readonly HashSet Entrances = new(); + public Dungeon() { Rooms = new List(); @@ -23,5 +25,10 @@ public Dungeon() public Dungeon(List rooms) { Rooms = rooms; + + foreach (var room in Rooms) + { + Entrances.UnionWith(room.Entrances); + } } } diff --git a/Content.Shared/Procedural/DungeonRoom.cs b/Content.Shared/Procedural/DungeonRoom.cs index a6f9367b125..4802949d2f3 100644 --- a/Content.Shared/Procedural/DungeonRoom.cs +++ b/Content.Shared/Procedural/DungeonRoom.cs @@ -4,7 +4,7 @@ namespace Content.Shared.Procedural; public sealed record DungeonRoom(HashSet Tiles, Vector2 Center, Box2i Bounds, HashSet Exterior) { - public List Entrances = new(); + public readonly List Entrances = new(); /// /// Nodes adjacent to tiles, including the corners. diff --git a/Content.Shared/Procedural/PostGeneration/BoundaryWallPostGen.cs b/Content.Shared/Procedural/PostGeneration/BoundaryWallPostGen.cs index 56d314089e3..390ff42feea 100644 --- a/Content.Shared/Procedural/PostGeneration/BoundaryWallPostGen.cs +++ b/Content.Shared/Procedural/PostGeneration/BoundaryWallPostGen.cs @@ -9,15 +9,25 @@ namespace Content.Shared.Procedural.PostGeneration; /// public sealed partial class BoundaryWallPostGen : IPostDunGen { - [DataField("tile", customTypeSerializer:typeof(PrototypeIdSerializer))] - public string Tile = "FloorSteel"; + [DataField] + public ProtoId Tile = "FloorSteel"; - [DataField("wall", customTypeSerializer:typeof(PrototypeIdSerializer))] - public string Wall = "WallSolid"; + [DataField] + public EntProtoId Wall = "WallSolid"; /// /// Walls to use in corners if applicable. /// - [DataField("cornerWall", customTypeSerializer:typeof(PrototypeIdSerializer))] + [DataField] public string? CornerWall; + + [DataField] + public BoundaryWallFlags Flags = BoundaryWallFlags.Corridors | BoundaryWallFlags.Rooms; +} + +[Flags] +public enum BoundaryWallFlags : byte +{ + Rooms = 1 << 0, + Corridors = 1 << 1, } diff --git a/Content.Shared/Procedural/PostGeneration/CornerClutterPostGen.cs b/Content.Shared/Procedural/PostGeneration/CornerClutterPostGen.cs index 22889d2b385..a16c7f9ab3f 100644 --- a/Content.Shared/Procedural/PostGeneration/CornerClutterPostGen.cs +++ b/Content.Shared/Procedural/PostGeneration/CornerClutterPostGen.cs @@ -7,12 +7,12 @@ namespace Content.Shared.Procedural.PostGeneration; /// public sealed partial class CornerClutterPostGen : IPostDunGen { - [DataField("chance")] + [DataField] public float Chance = 0.50f; /// /// The default starting bulbs /// - [DataField("contents", required: true)] + [DataField(required: true)] public List Contents = new(); } diff --git a/Content.Shared/Procedural/PostGeneration/CorridorClutterPostGen.cs b/Content.Shared/Procedural/PostGeneration/CorridorClutterPostGen.cs new file mode 100644 index 00000000000..a8a74ba6ccb --- /dev/null +++ b/Content.Shared/Procedural/PostGeneration/CorridorClutterPostGen.cs @@ -0,0 +1,18 @@ +using Content.Shared.Storage; + +namespace Content.Shared.Procedural.PostGeneration; + +/// +/// Adds entities randomly to the corridors. +/// +public sealed partial class CorridorClutterPostGen : IPostDunGen +{ + [DataField] + public float Chance = 0.05f; + + /// + /// The default starting bulbs + /// + [DataField(required: true)] + public List Contents = new(); +} diff --git a/Content.Shared/Procedural/PostGeneration/CorridorPostGen.cs b/Content.Shared/Procedural/PostGeneration/CorridorPostGen.cs index 32c49d1951a..705ae99dcef 100644 --- a/Content.Shared/Procedural/PostGeneration/CorridorPostGen.cs +++ b/Content.Shared/Procedural/PostGeneration/CorridorPostGen.cs @@ -14,24 +14,15 @@ public sealed partial class CorridorPostGen : IPostDunGen /// /// Given the heavy weightings this needs to be fairly large for larger dungeons. /// - [DataField("pathLimit")] + [DataField] public int PathLimit = 2048; - [DataField("method")] - public CorridorPostGenMethod Method = CorridorPostGenMethod.MinimumSpanningTree; - [DataField] public ProtoId Tile = "FloorSteel"; /// /// How wide to make the corridor. /// - [DataField("width")] - public int Width = 3; -} - -public enum CorridorPostGenMethod : byte -{ - Invalid, - MinimumSpanningTree, + [DataField] + public float Width = 3f; } diff --git a/Content.Shared/Procedural/PostGeneration/WormCorridorPostGen.cs b/Content.Shared/Procedural/PostGeneration/WormCorridorPostGen.cs new file mode 100644 index 00000000000..c57d92ef956 --- /dev/null +++ b/Content.Shared/Procedural/PostGeneration/WormCorridorPostGen.cs @@ -0,0 +1,42 @@ +using Content.Shared.Maps; +using Content.Shared.Procedural.DungeonGenerators; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Procedural.PostGeneration; + +// Ime a worm +/// +/// Generates worm corridors. +/// +public sealed partial class WormCorridorPostGen : IPostDunGen +{ + [DataField] + public int PathLimit = 2048; + + /// + /// How many times to run the worm + /// + [DataField] + public int Count = 20; + + /// + /// How long to make each worm + /// + [DataField] + public int Length = 20; + + /// + /// Maximum amount the angle can change in a single step. + /// + [DataField] + public Angle MaxAngleChange = Angle.FromDegrees(45); + + [DataField] + public ProtoId Tile = "FloorSteel"; + + /// + /// How wide to make the corridor. + /// + [DataField] + public float Width = 3f; +} diff --git a/Resources/Maps/Dungeon/haunted.yml b/Resources/Maps/Dungeon/haunted.yml new file mode 100644 index 00000000000..d63ca74f200 --- /dev/null +++ b/Resources/Maps/Dungeon/haunted.yml @@ -0,0 +1,3251 @@ +meta: + format: 6 + postmapinit: false +tilemap: + 0: Space + 22: FloorCave + 23: FloorCaveDrought + 40: FloorDirt + 66: FloorMining + 68: FloorMiningLight + 71: FloorOldConcreteMono + 72: FloorOldConcreteSmooth + 82: FloorShuttleOrange + 118: FloorWood + 121: Plating + 124: PlatingDamaged +entities: +- proto: "" + entities: + - uid: 1653 + components: + - type: MetaData + - type: Transform + - type: Map + - type: PhysicsMap + - type: Broadphase + - type: OccluderTree + - chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA + version: 6 + 0,0: + ind: 0,0 + tiles: FgAAAAAEFgAAAAAEFgAAAAAFFgAAAAAFFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAAFgAAAAACFgAAAAAFFgAAAAACFgAAAAAGFgAAAAADFgAAAAAAFgAAAAADFgAAAAAAFgAAAAAEFgAAAAABFgAAAAAEFgAAAAAGFgAAAAACFgAAAAACFgAAAAABFgAAAAAEFgAAAAAEFgAAAAAGFgAAAAAFFgAAAAAEFgAAAAACFgAAAAAFFgAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAACFgAAAAAGFgAAAAACFgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAADFgAAAAAEFgAAAAABFgAAAAACFgAAAAABFgAAAAAAFgAAAAAFFgAAAAAEFgAAAAAAFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAEFgAAAAABFgAAAAAEFgAAAAACFgAAAAAGFgAAAAAFFgAAAAAAFgAAAAABFgAAAAAFFgAAAAADFgAAAAADFgAAAAAFFgAAAAAFFgAAAAABFgAAAAAFFgAAAAACFgAAAAAAFgAAAAAAFgAAAAAFFgAAAAADFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAABFgAAAAABFgAAAAACFgAAAAABFgAAAAAGFgAAAAAAFgAAAAAGFwAAAAAAFwAAAAAAFgAAAAACUgAAAAAAFgAAAAAAFgAAAAAEFgAAAAAEFgAAAAACFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAABFgAAAAADFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAADUgAAAAAAFgAAAAACFgAAAAAFFgAAAAACFwAAAAAAFgAAAAAGFgAAAAADFwAAAAAAFwAAAAAAFgAAAAAEFgAAAAAAFgAAAAACFgAAAAADFwAAAAAAFgAAAAAAFgAAAAAFUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAABFgAAAAABFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAFFwAAAAAAFwAAAAAAUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAGFwAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAEFgAAAAAAFgAAAAAAFgAAAAABFgAAAAAEFgAAAAAEUgAAAAAAFgAAAAABFgAAAAADFgAAAAACFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAEFgAAAAABFgAAAAAEFwAAAAABFwAAAAABFwAAAAAEUgAAAAAAFgAAAAAFFgAAAAABFgAAAAAFFgAAAAADFgAAAAADFgAAAAAEFgAAAAADUgAAAAAAFgAAAAACFgAAAAAEFgAAAAAFFgAAAAABFgAAAAAGFgAAAAAFFwAAAAAEUgAAAAAAFgAAAAAGFgAAAAAGFwAAAAAGFwAAAAADFgAAAAAAFgAAAAADFgAAAAAEUgAAAAAAFgAAAAAGFwAAAAACFgAAAAACFgAAAAABFgAAAAABFgAAAAADFgAAAAAAUgAAAAAAFwAAAAACFgAAAAABFwAAAAAHFgAAAAACFgAAAAAEFwAAAAAEFgAAAAADUgAAAAAAFwAAAAACFgAAAAAGFgAAAAAGFgAAAAABFgAAAAAAFgAAAAAEFwAAAAAEUgAAAAAAFgAAAAABFwAAAAAFFwAAAAAFFgAAAAACFgAAAAABFwAAAAAHFwAAAAAEUgAAAAAA + version: 6 + 0,1: + ind: 0,1 + tiles: FwAAAAACFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAEFgAAAAAGFgAAAAAAUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAGFgAAAAADFgAAAAAGFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAAFFgAAAAAFFgAAAAABUgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFFwAAAAAAFgAAAAAEUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAAEFwAAAAABFwAAAAAGFgAAAAAFFgAAAAAEUgAAAAAAFgAAAAACFwAAAAAFFwAAAAADFwAAAAADFgAAAAAFUgAAAAAAFwAAAAACFwAAAAADFwAAAAAEFwAAAAAFFgAAAAAEFwAAAAAGFwAAAAAHFwAAAAADFwAAAAAGUgAAAAAAFwAAAAAHFwAAAAACFgAAAAADFwAAAAADFgAAAAABUgAAAAAAFgAAAAABFgAAAAAGFgAAAAAEFgAAAAAGFgAAAAAFFgAAAAAAFwAAAAACFgAAAAAGFgAAAAABUgAAAAAAFgAAAAAGFwAAAAAGFwAAAAABFwAAAAAAFgAAAAACUgAAAAAAFwAAAAAAFgAAAAAGFwAAAAADFwAAAAAHFgAAAAADFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAABFgAAAAAFFgAAAAAGFwAAAAADUgAAAAAAFgAAAAACFgAAAAAAFgAAAAADFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAGFgAAAAABFgAAAAAFUgAAAAAAFwAAAAAEFgAAAAAAFgAAAAAFUgAAAAAAFwAAAAABFgAAAAAAFgAAAAADUgAAAAAAFgAAAAADFwAAAAAFFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAFUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAAAUgAAAAAAFwAAAAAAFwAAAAADFwAAAAAHUgAAAAAAFgAAAAABFgAAAAABFgAAAAACUgAAAAAAFgAAAAAFFgAAAAADFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAAEFgAAAAAGUgAAAAAAFwAAAAABFwAAAAAFFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFwAAAAAEUgAAAAAAFgAAAAAAFgAAAAAFFgAAAAACUgAAAAAAFgAAAAADFgAAAAAFFgAAAAAEUgAAAAAAFwAAAAACFwAAAAAHFgAAAAADUgAAAAAAFgAAAAACFgAAAAADFgAAAAAGUgAAAAAAFgAAAAADFgAAAAADFgAAAAAAUgAAAAAAFgAAAAACFgAAAAAAFwAAAAABUgAAAAAAFwAAAAAAFgAAAAABFgAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAABFgAAAAABFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAEFgAAAAABFgAAAAADFgAAAAABFgAAAAAGFgAAAAAEFgAAAAADFgAAAAADUgAAAAAAFgAAAAADFgAAAAAFFgAAAAACFgAAAAACFgAAAAAEFgAAAAAGFgAAAAABFgAAAAAFFgAAAAACFgAAAAAGFgAAAAAAFgAAAAADFgAAAAAFFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAADFgAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA + version: 6 + -1,1: + ind: -1,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA + version: 6 + 1,-1: + ind: 1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: FgAAAAACUgAAAAAAFgAAAAACFgAAAAACFgAAAAABFgAAAAADFgAAAAACKAAAAAAAKAAAAAAAKAAAAAAAFgAAAAAGFgAAAAABFgAAAAAEFgAAAAAAFgAAAAAFFgAAAAABFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAAGFgAAAAABFgAAAAADKAAAAAAAFgAAAAADFgAAAAAEFgAAAAAAFgAAAAAFFgAAAAABFgAAAAAAKAAAAAAAFgAAAAAEUgAAAAAAKAAAAAAAKAAAAAAAFgAAAAAAFgAAAAADKAAAAAAAFgAAAAADFgAAAAACFgAAAAAFKAAAAAAAKAAAAAAAKAAAAAAAFgAAAAAGKAAAAAAAKAAAAAAAFgAAAAACUgAAAAAAKAAAAAAAKAAAAAAAFgAAAAAGFgAAAAACFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAGFgAAAAABFgAAAAADFgAAAAAGFgAAAAADFgAAAAABKAAAAAAAFgAAAAAGUgAAAAAAKAAAAAAAFgAAAAAEFgAAAAAFFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAGFgAAAAABFgAAAAAGFgAAAAACFgAAAAACFgAAAAAAFgAAAAABKAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAADFgAAAAAAFgAAAAAEFgAAAAADUgAAAAAAFgAAAAACFgAAAAAFFgAAAAAAFgAAAAAGFgAAAAAEFgAAAAADFgAAAAABFgAAAAAEFwAAAAAAFgAAAAADFwAAAAAAFwAAAAAAFgAAAAAGFgAAAAADFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAACFgAAAAADFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAADFgAAAAAFFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAGFwAAAAAAFwAAAAAAFgAAAAAGFgAAAAAGFgAAAAACUgAAAAAAFgAAAAAFFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAABFgAAAAAFFgAAAAABUgAAAAAAFgAAAAAEFgAAAAABFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAEFwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAADFgAAAAAEFgAAAAACUgAAAAAAFgAAAAABFgAAAAAAFgAAAAABFgAAAAAFFgAAAAABFgAAAAABFgAAAAACUgAAAAAAFgAAAAACFwAAAAAAFwAAAAACFwAAAAAEFwAAAAACFgAAAAACFgAAAAAFUgAAAAAAFgAAAAACFgAAAAAEFgAAAAAGFgAAAAADFgAAAAAGFgAAAAABFgAAAAACUgAAAAAAFgAAAAAGFgAAAAAFFwAAAAAHFwAAAAADFwAAAAAAFwAAAAACFgAAAAAAUgAAAAAAFgAAAAABFgAAAAAFFgAAAAABFgAAAAADFgAAAAAFFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAADFgAAAAABFwAAAAAHFwAAAAAAFwAAAAAEFgAAAAADFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAABFgAAAAACFgAAAAAAFgAAAAAFFgAAAAADFgAAAAADUgAAAAAA + version: 6 + 1,1: + ind: 1,1 + tiles: FgAAAAAAFgAAAAAAFgAAAAAFFgAAAAADFgAAAAAEFgAAAAAEFgAAAAAGUgAAAAAAFgAAAAABFgAAAAABFgAAAAAAFgAAAAABFgAAAAACFgAAAAAFFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAAUgAAAAAAFgAAAAADFgAAAAAAFgAAAAABFgAAAAAGFgAAAAADUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAACFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAABFgAAAAACFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAADFgAAAAAGUgAAAAAAFgAAAAADFwAAAAADFwAAAAABFgAAAAACFgAAAAAFUgAAAAAAFgAAAAAEdgAAAAADFgAAAAAFUgAAAAAAFgAAAAABFgAAAAAFFgAAAAAGFgAAAAABFgAAAAABUgAAAAAAFgAAAAAGFwAAAAAEFwAAAAACFwAAAAAHFgAAAAACUgAAAAAAFgAAAAACdgAAAAABFwAAAAADUgAAAAAAFgAAAAAGFgAAAAAAFgAAAAACFgAAAAAFFgAAAAADUgAAAAAAFgAAAAACFgAAAAACFwAAAAAHFwAAAAAAFgAAAAABUgAAAAAAFgAAAAAAdgAAAAACFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAADFgAAAAAAFgAAAAAFFgAAAAAAUgAAAAAAFgAAAAACFgAAAAAFFgAAAAABFgAAAAADFgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAEFwAAAAAFFwAAAAAGUgAAAAAAFgAAAAAGFwAAAAAFFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAADFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAGFgAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAACFwAAAAAGFwAAAAAAUgAAAAAAFgAAAAAGFgAAAAAFFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAABFgAAAAAGFwAAAAADUgAAAAAAFwAAAAACFgAAAAAEFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAEFwAAAAABUgAAAAAAFgAAAAAGFgAAAAAFFwAAAAAHUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAGFgAAAAACFgAAAAAFFgAAAAAFFgAAAAADFgAAAAACFgAAAAAGFgAAAAAFFwAAAAAGFwAAAAAFFwAAAAAAUgAAAAAAFgAAAAAAFwAAAAADFwAAAAADFwAAAAADFwAAAAAEFgAAAAAEFwAAAAAHFwAAAAAGFgAAAAADFgAAAAACFgAAAAADFwAAAAAEFwAAAAABFwAAAAABFwAAAAAHUgAAAAAAFgAAAAAAFgAAAAAFFgAAAAADFgAAAAAE + version: 6 + -1,2: + ind: -1,2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAA + version: 6 + -1,3: + ind: -1,3 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 0,2: + ind: 0,2 + tiles: FgAAAAAAFgAAAAACFgAAAAAEFgAAAAADFgAAAAACFgAAAAAGFgAAAAAFFgAAAAACFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAFFgAAAAABUgAAAAAAFgAAAAAFFgAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAACFgAAAAAEFwAAAAAAFgAAAAACFgAAAAAAFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAGFwAAAAAEUgAAAAAAFgAAAAAEFgAAAAADFgAAAAAAFgAAAAADFwAAAAAFFwAAAAACFgAAAAAFFgAAAAACFgAAAAAFFgAAAAAFFgAAAAAEFwAAAAAAFgAAAAAGFgAAAAAAFgAAAAACUgAAAAAAFgAAAAABFgAAAAAFFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAACFgAAAAAEFwAAAAAHFgAAAAAGFgAAAAAFFgAAAAAFFgAAAAAGFgAAAAAAFgAAAAACUgAAAAAAFgAAAAAEFgAAAAAAFgAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAGFgAAAAABFgAAAAAGFgAAAAADFgAAAAABFgAAAAAAFgAAAAAEUgAAAAAAFgAAAAADFgAAAAABFgAAAAAFFgAAAAAAFgAAAAAEFgAAAAADFgAAAAAFUgAAAAAAFgAAAAAEFgAAAAACFgAAAAABFgAAAAADFgAAAAAEFgAAAAACFgAAAAABUgAAAAAAFgAAAAAEFgAAAAAAFgAAAAAGFgAAAAABFgAAAAAAFgAAAAAEFgAAAAAGUgAAAAAAFgAAAAAEFgAAAAAGFgAAAAABFgAAAAABFgAAAAADFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAAFgAAAAADFgAAAAADFgAAAAADFgAAAAAAFgAAAAADFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAACFgAAAAABFgAAAAAFFgAAAAABFgAAAAABFgAAAAAAFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAACFgAAAAAEFgAAAAADFgAAAAAAFgAAAAAGUgAAAAAAFgAAAAAAFgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAADFgAAAAABQgAAAAAAFgAAAAAEfAAAAAAAFgAAAAACFgAAAAAAUgAAAAAAFgAAAAAAQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAEUgAAAAAAFgAAAAAAQgAAAAAAfAAAAAABRAAAAAAAeQAAAAAAFgAAAAAAFgAAAAABUgAAAAAAFgAAAAAFQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAAUgAAAAAAFgAAAAAFQgAAAAAARAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAFgAAAAACUgAAAAAAFgAAAAABQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAGUgAAAAAAFgAAAAAFQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAABUgAAAAAAFgAAAAABFgAAAAACQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAGFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAACQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAABFgAAAAABUgAAAAAA + version: 6 + 0,3: + ind: 0,3 + tiles: FgAAAAADFgAAAAAGFgAAAAAGFgAAAAAFFgAAAAAGFgAAAAAFFgAAAAAFUgAAAAAAFgAAAAADFgAAAAACFgAAAAAFFgAAAAAGFgAAAAAEFgAAAAAAFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,2: + ind: 1,2 + tiles: FgAAAAACFgAAAAAFFgAAAAADFgAAAAAEFgAAAAACFwAAAAACFwAAAAADFwAAAAAAFwAAAAAGFwAAAAAHFwAAAAAEUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAACFgAAAAAEFgAAAAAAFgAAAAAAFgAAAAADFgAAAAABUgAAAAAAFgAAAAAEFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAFFgAAAAACFgAAAAAEFgAAAAACFgAAAAABFgAAAAAEFgAAAAAEFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAABFgAAAAACFgAAAAAFFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAADFgAAAAAAFgAAAAAGFgAAAAAEFgAAAAADFgAAAAAFFgAAAAAAFgAAAAAFFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAABFgAAAAAEFgAAAAAEFgAAAAAAFgAAAAAGFgAAAAAGFgAAAAABUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAACFgAAAAACFgAAAAAAFgAAAAADFgAAAAAEFgAAAAAEFgAAAAAFUgAAAAAAFgAAAAABFgAAAAAEFgAAAAABFgAAAAAAFgAAAAAFFgAAAAACFgAAAAAAUgAAAAAAFgAAAAAGFgAAAAAEFgAAAAAEFgAAAAAGFgAAAAAEFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAAFgAAAAACFgAAAAAGFgAAAAAAFgAAAAAGFgAAAAACFgAAAAADUgAAAAAAFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAAFgAAAAAAFgAAAAAAFgAAAAACUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAABFgAAAAAAFgAAAAAFFgAAAAACFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAFFgAAAAABFgAAAAABFgAAAAAAFgAAAAAFFgAAAAAGUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAFFgAAAAAAQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFFgAAAAACUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAEQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAEQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAEUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAABQgAAAAAAQgAAAAAARAAAAAAAQgAAAAAAQgAAAAAAFgAAAAAEUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAABFgAAAAAEQgAAAAAAQgAAAAAAQgAAAAAAFgAAAAAFFgAAAAADUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,3: + ind: 1,3 + tiles: FgAAAAAEFgAAAAACFgAAAAAFFgAAAAAGFgAAAAACFgAAAAACFgAAAAAFUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,0: + ind: 2,0 + tiles: FgAAAAABFgAAAAABFgAAAAACUgAAAAAAFwAAAAAAFgAAAAAFFgAAAAAFFgAAAAADFgAAAAAEFgAAAAACFgAAAAAAFgAAAAAEFgAAAAAGFgAAAAADFgAAAAADFgAAAAAGFgAAAAAGFgAAAAAFKAAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFgAAAAAFFgAAAAACFgAAAAABFgAAAAACFgAAAAAGFgAAAAAGFgAAAAAGFgAAAAAAFgAAAAABFgAAAAACFgAAAAAGFgAAAAAEKAAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFgAAAAAAFgAAAAAFFgAAAAAAFgAAAAAAFgAAAAAEFgAAAAAGFgAAAAAAFgAAAAACFgAAAAAAFgAAAAAGKAAAAAAAKAAAAAAAKAAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFgAAAAACFgAAAAAFFgAAAAAAFgAAAAACFgAAAAABFgAAAAAAFgAAAAADFgAAAAAGKAAAAAAAKAAAAAAAFgAAAAAFUgAAAAAAFgAAAAADFgAAAAADFwAAAAAAFgAAAAABFgAAAAADFgAAAAACFgAAAAAEFgAAAAADFgAAAAADFgAAAAAFFgAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFgAAAAAEFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAABFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAAFgAAAAAAFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAAFFgAAAAAEFgAAAAADFgAAAAAEFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAAGFgAAAAACFgAAAAAAFgAAAAAFFgAAAAADFgAAAAAFFgAAAAAGUgAAAAAAFgAAAAABRwAAAAADRwAAAAABSAAAAAAARwAAAAADFgAAAAAFFgAAAAAFUgAAAAAAFgAAAAACFgAAAAAEFgAAAAADFgAAAAAGFgAAAAAFFgAAAAABFgAAAAAAUgAAAAAAFgAAAAABFgAAAAACSAAAAAACSAAAAAADRwAAAAADSAAAAAAAFgAAAAADUgAAAAAAFgAAAAADFgAAAAADFgAAAAADFgAAAAAFFgAAAAABFgAAAAAEFgAAAAAAUgAAAAAAFgAAAAAGRwAAAAABSAAAAAACSAAAAAAASAAAAAACRwAAAAADFgAAAAAGUgAAAAAAFgAAAAAGFgAAAAAEFgAAAAAFFgAAAAACFgAAAAAEFgAAAAACFgAAAAAGUgAAAAAA + version: 6 + 3,0: + ind: 3,0 + tiles: FgAAAAADFgAAAAACFgAAAAAEFgAAAAAEFgAAAAADFwAAAAAAFgAAAAAEUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAGFgAAAAAEFgAAAAAGFgAAAAADFgAAAAAFFgAAAAADFwAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAABFgAAAAAAFgAAAAABFgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAFgAAAAADFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAGFgAAAAABFgAAAAAGFgAAAAAAFgAAAAAFFgAAAAADFgAAAAADUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,-1: + ind: 2,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA + version: 6 + 3,-1: + ind: 3,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 3,1: + ind: 3,1 + tiles: UgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 3,2: + ind: 3,2 + tiles: UgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,2: + ind: 2,2 + tiles: FgAAAAAAFgAAAAAFFgAAAAAAFgAAAAADFgAAAAAFFgAAAAAGFwAAAAACFwAAAAABFgAAAAAFUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAAGFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAFFgAAAAAEFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAEFgAAAAABFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAAAFgAAAAABFgAAAAAGFgAAAAAFFgAAAAACFgAAAAACFgAAAAAEUgAAAAAAFgAAAAAAFgAAAAAGFgAAAAAAFgAAAAADFgAAAAACFgAAAAAEFgAAAAAGUgAAAAAAFgAAAAABFgAAAAACFgAAAAAEFgAAAAACFgAAAAABFgAAAAAAFgAAAAAFUgAAAAAAFgAAAAACFgAAAAADFgAAAAAGFgAAAAADFgAAAAACFgAAAAAFFgAAAAAEUgAAAAAAFgAAAAAEFgAAAAABFgAAAAAEFgAAAAACFgAAAAACFgAAAAABFgAAAAAGUgAAAAAAFgAAAAAEFgAAAAABFgAAAAACFgAAAAADFgAAAAABFgAAAAABFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,1: + ind: 2,1 + tiles: FgAAAAAAFgAAAAAGFgAAAAAEFgAAAAACFgAAAAAGFgAAAAAEFgAAAAADUgAAAAAAFgAAAAACFgAAAAAEFgAAAAAAFgAAAAAGFgAAAAADFgAAAAADFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAAFFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAdgAAAAAAdgAAAAABFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAdgAAAAADdgAAAAABFgAAAAACUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAdgAAAAAAdgAAAAAAFgAAAAAEUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFgAAAAADFgAAAAAAFgAAAAAGUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAAFFwAAAAAHFwAAAAAGFwAAAAABFwAAAAAFFgAAAAAFFgAAAAAEFgAAAAAEFgAAAAADUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAFwAAAAADFwAAAAABFwAAAAAGFgAAAAAAFgAAAAACFgAAAAAEFgAAAAACFgAAAAABFwAAAAAHUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAA + version: 6 + type: MapGrid + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Basalt1 + decals: + 1342: 6.955441,21.068565 + 1405: 5.569477,24.342073 + 1409: 21.493462,30.781818 + 1423: 16.244232,47.723083 + - node: + color: '#FFFFFFFF' + id: Basalt2 + decals: + 1408: 21.571587,25.092073 + 1411: 38.670036,30.328693 + 1412: 32.59149,34.61899 + - node: + color: '#FFFFFFFF' + id: Basalt3 + decals: + 1404: 2.0071354,12.534689 + 1413: 28.294615,35.52524 + 1419: 1.8725519,39.603367 + 1428: 40.1997,39.904606 + 1429: 37.775063,38.35773 + 1430: 27.454536,18.497276 + - node: + color: '#FFFFFFFF' + id: Basalt4 + decals: + 1407: 14.05264,26.857698 + 1420: 8.417587,42.316833 + - node: + color: '#FFFFFFFF' + id: Basalt5 + decals: + 1347: 7.0134563,30.499578 + 1403: 8.765746,13.144064 + 1414: 24.413132,39.478367 + 1421: 13.773578,47.660583 + 1426: 12.267979,34.57054 + 1427: 44.902824,38.38898 + 1431: 24.313911,21.591026 + 1432: 21.396156,20.325401 + - node: + color: '#FFFFFFFF' + id: Basalt6 + decals: + 1341: 0.908566,19.95919 + 1415: 20.816694,39.134617 + - node: + color: '#FFFFFFFF' + id: Basalt7 + decals: + 1339: 10,18 + 1416: 12.790198,39.33774 + 1422: 21.884857,42.17621 + 1433: 18.589165,18.387901 + 1434: 34.005077,18.028526 + 1435: 4.6335278,15.488716 + - node: + color: '#FFFFFFFF' + id: Basalt8 + decals: + 1340: 7.1637583,18.068565 + 1417: 8.813416,38.415867 + 1424: 0.46817493,47.80121 + 1425: 8.544811,34.586166 + - node: + color: '#FFFFFFFF' + id: Basalt9 + decals: + 1343: 13.433517,19.162315 + 1406: 0.6944771,26.826448 + 1410: 30.17049,31.359943 + 1418: 5.810052,38.259617 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + decals: + 301: 9,45 + 306: 13,42 + 308: 10,42 + 311: 13,45 + 578: 10,32 + - node: + color: '#FFFFFFFF' + id: Rock06 + decals: + 1344: 2.1520143,30.343328 + - node: + color: '#FFFFFFFF' + id: Rock07 + decals: + 1345: 10.29961,31.483953 + - node: + color: '#DE3A3A96' + id: rune6 + decals: + 1402: 8.952158,26.184813 + - node: + color: '#79150031' + id: splatter + decals: + 1348: 10.903494,45.563152 + 1349: 10.950369,45.969402 + 1350: 11.184744,45.906902 + 1351: 11.590994,45.422527 + 1352: 11.590994,45.422527 + 1353: 10.965994,45.610027 + 1354: 10.997244,44.969402 + 1355: 11.231619,45.047527 + 1356: 11.356619,45.344402 + 1357: 10.825369,45.656902 + 1358: 11.184744,45.922527 + 1359: 11.231619,45.891277 + 1360: 10.512869,45.563152 + 1361: 11.684744,44.078777 + 1362: 11.747244,43.797527 + 1363: 12.044119,43.328777 + 1364: 11.778494,43.281902 + 1365: 11.887869,43.688152 + 1366: 12.200369,43.735027 + 1367: 12.137869,44.141277 + 1368: 11.669119,43.656902 + 1369: 10.637869,43.781902 + 1370: 10.544119,43.781902 + 1371: 10.669119,43.453777 + 1372: 10.590994,43.485027 + 1373: 11.419119,45.797527 + 1374: 11.825369,45.813152 + 1375: 11.950369,46.219402 + 1376: 11.200369,45.672527 + 1377: 11.247244,45.922527 + 1378: 10.590994,46.125652 + 1379: 11.481619,45.422527 + 1380: 11.684744,45.672527 + 1381: 11.512869,45.141277 + 1382: 11.825369,45.281902 + 1383: 11.684744,45.438152 + 1384: 10.950369,45.735027 + 1385: 10.262869,45.797527 + 1386: 10.028494,44.891277 + 1387: 9.903494,44.891277 + 1388: 9.887869,45.500652 + 1389: 10.153494,45.344402 + 1390: 10.809744,45.391277 + 1391: 10.934744,45.422527 + 1392: 11.262869,45.531902 + 1393: 11.184744,46.031902 + 1394: 10.872244,45.813152 + 1395: 11.090994,45.563152 + 1396: 10.731619,46.031902 + 1397: 10.075369,44.000652 + 1398: 9.856619,43.703777 + 1399: 10.059744,44.281902 + 1400: 10.419119,43.813152 + - node: + cleanable: True + color: '#79150031' + id: splatter + decals: + 1444: 35.155014,12.447503 + 1445: 34.811264,12.353753 + 1446: 34.85814,12.744378 + 1447: 35.342514,12.463128 + 1448: 35.155014,12.228753 + 1449: 34.42064,12.572503 + 1450: 34.123764,13.025628 + 1451: 34.17064,13.322503 + 1452: 34.342514,12.900628 + 1453: 33.85814,12.994378 + 1454: 33.79564,13.338128 + 1455: 33.63939,13.838128 + 1456: 33.70189,13.603753 + 1457: 33.311264,13.900628 + 1458: 33.717514,14.306878 + 1459: 34.10814,14.650628 + 1460: 33.936264,15.135003 + 1461: 34.405014,14.947503 + 1462: 33.79564,14.510003 + 1463: 33.70189,14.088128 + 1464: 34.29564,14.541253 + 1465: 34.623764,15.010003 + 1466: 35.26439,15.072503 + 1467: 35.405014,14.931878 + 1468: 34.623764,15.338128 + 1469: 35.592514,14.994378 + 1470: 35.79564,14.447503 + 1471: 36.13939,15.025628 + 1472: 36.436264,14.181878 + 1473: 36.592514,13.869378 + 1474: 35.780014,14.697503 + 1475: 36.467514,14.072503 + 1476: 35.748764,14.588128 + 1477: 36.07689,13.963128 + 1478: 36.092514,13.291253 + 1479: 35.57689,13.103753 + 1480: 35.70189,13.088128 + 1481: 35.38939,12.478753 + 1482: 35.92064,13.260003 + 1483: 36.061264,13.666253 + 1484: 36.217514,12.822503 + 1485: 35.48314,12.650628 + 1486: 35.98314,12.353753 + 1487: 34.842514,12.744378 + 1488: 34.23314,12.853753 + 1489: 34.04564,13.447503 + 1490: 33.51439,13.650628 + - node: + cleanable: True + color: '#DE3A3A28' + id: splatter + decals: + 1436: 34.151947,12.931878 + 1437: 33.542572,13.775628 + 1438: 34.089447,14.588128 + 1439: 34.886322,15.025628 + 1440: 35.714447,14.681878 + 1441: 36.214447,14.119378 + 1442: 35.933197,13.228753 + 1443: 35.026947,12.447503 + type: DecalGrid + - type: RadiationGridResistance + - type: LoadedMap + - type: SpreaderGrid + - type: GridTree + - type: MovedGrids + - type: GridPathfinding +- proto: AirCanister + entities: + - uid: 302 + components: + - pos: 20.5,38.5 + parent: 1653 + type: Transform +- proto: AirlockMining + entities: + - uid: 149 + components: + - pos: 11.5,43.5 + parent: 1653 + type: Transform +- proto: AirlockMiningGlassLocked + entities: + - uid: 492 + components: + - pos: 19.5,43.5 + parent: 1653 + type: Transform +- proto: AirlockMiningLocked + entities: + - uid: 454 + components: + - pos: 3.5,43.5 + parent: 1653 + type: Transform +- proto: AltarFangs + entities: + - uid: 12 + components: + - pos: 35.5,14.5 + parent: 1653 + type: Transform +- proto: BananiumOre1 + entities: + - uid: 147 + components: + - pos: 25.454952,10.460608 + parent: 1653 + type: Transform + - uid: 436 + components: + - flags: InContainer + type: MetaData + - parent: 435 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: Barricade + entities: + - uid: 61 + components: + - pos: 14.5,12.5 + parent: 1653 + type: Transform + - uid: 304 + components: + - pos: 6.5,18.5 + parent: 1653 + type: Transform + - uid: 369 + components: + - pos: 51.5,0.5 + parent: 1653 + type: Transform +- proto: BikeHorn + entities: + - uid: 201 + components: + - flags: InContainer + type: MetaData + - parent: 200 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: Bucket + entities: + - uid: 220 + components: + - pos: 28.080187,14.004396 + parent: 1653 + type: Transform +- proto: CandleRedSmallInfinite + entities: + - uid: 121 + components: + - pos: 10.514658,25.137938 + parent: 1653 + type: Transform + - uid: 123 + components: + - pos: 10.655283,25.247313 + parent: 1653 + type: Transform + - uid: 126 + components: + - rot: -6.283185307179586 rad + pos: 9.436043,27.291958 + parent: 1653 + type: Transform + - uid: 181 + components: + - pos: 9.83762,26.231688 + parent: 1653 + type: Transform + - uid: 182 + components: + - pos: 9.009495,26.278563 + parent: 1653 + type: Transform + - uid: 211 + components: + - pos: 10.467783,25.325438 + parent: 1653 + type: Transform + - uid: 212 + components: + - rot: -6.283185307179586 rad + pos: 9.976189,27.010708 + parent: 1653 + type: Transform + - uid: 213 + components: + - pos: 8.86887,27.028563 + parent: 1653 + type: Transform +- proto: Chainsaw + entities: + - uid: 396 + components: + - pos: 12.278494,46.219402 + parent: 1653 + type: Transform +- proto: Chair + entities: + - uid: 399 + components: + - rot: 3.141592653589793 rad + pos: 19.5,34.5 + parent: 1653 + type: Transform +- proto: ChairPilotSeat + entities: + - uid: 8 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,44.5 + parent: 1653 + type: Transform + - uid: 466 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,44.5 + parent: 1653 + type: Transform +- proto: ChairRitual + entities: + - uid: 127 + components: + - pos: 9.5,28.5 + parent: 1653 + type: Transform +- proto: CigaretteCapsaicinOil + entities: + - uid: 322 + components: + - pos: 31.649122,18.823664 + parent: 1653 + type: Transform +- proto: CigaretteSyndicate + entities: + - uid: 439 + components: + - flags: InContainer + type: MetaData + - parent: 438 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingBackpackDuffelCargo + entities: + - uid: 288 + components: + - pos: 17.527935,7.630492 + parent: 1653 + type: Transform +- proto: ClothingHeadHatFlowerCrown + entities: + - uid: 233 + components: + - pos: 27.441708,39.437607 + parent: 1653 + type: Transform +- proto: ClothingHeadHatGladiator + entities: + - uid: 7 + components: + - flags: InContainer + type: MetaData + - parent: 6 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingNeckCloakTrans + entities: + - uid: 332 + components: + - flags: InContainer + type: MetaData + - parent: 331 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingOuterHardsuitSalvage + entities: + - uid: 432 + components: + - pos: 4.447749,45.58406 + parent: 1653 + type: Transform +- proto: ClothingShoesClown + entities: + - uid: 202 + components: + - flags: InContainer + type: MetaData + - parent: 200 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingUniformJumpsuitGladiator + entities: + - uid: 215 + components: + - flags: InContainer + type: MetaData + - parent: 214 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingUniformJumpsuitMonasticRobeDark + entities: + - uid: 40 + components: + - pos: 36.46349,13.791253 + parent: 1653 + type: Transform + - uid: 99 + components: + - pos: 36.27599,15.338128 + parent: 1653 + type: Transform + - uid: 216 + components: + - pos: 35.46349,15.619378 + parent: 1653 + type: Transform + - uid: 272 + components: + - pos: 34.05724,14.385003 + parent: 1653 + type: Transform + - uid: 273 + components: + - pos: 34.58849,15.213128 + parent: 1653 + type: Transform + - uid: 357 + components: + - pos: 35.58849,13.213128 + parent: 1653 + type: Transform + - uid: 358 + components: + - pos: 34.697865,13.588128 + parent: 1653 + type: Transform + - uid: 443 + components: + - pos: 36.80724,14.744378 + parent: 1653 + type: Transform +- proto: Cobweb1 + entities: + - uid: 190 + components: + - pos: 24.5,10.5 + parent: 1653 + type: Transform + - uid: 289 + components: + - pos: 0.5,10.5 + parent: 1653 + type: Transform + - uid: 290 + components: + - pos: 32.5,16.5 + parent: 1653 + type: Transform + - uid: 384 + components: + - pos: 0.5,36.5 + parent: 1653 + type: Transform + - uid: 385 + components: + - pos: 28.5,32.5 + parent: 1653 + type: Transform + - uid: 393 + components: + - pos: 12.5,22.5 + parent: 1653 + type: Transform + - uid: 418 + components: + - pos: 0.5,40.5 + parent: 1653 + type: Transform + - uid: 458 + components: + - pos: 2.5,46.5 + parent: 1653 + type: Transform +- proto: Cobweb2 + entities: + - uid: 137 + components: + - pos: 33.5,9.5 + parent: 1653 + type: Transform + - uid: 252 + components: + - pos: 26.5,32.5 + parent: 1653 + type: Transform + - uid: 291 + components: + - pos: 34.5,3.5 + parent: 1653 + type: Transform + - uid: 314 + components: + - pos: 22.5,10.5 + parent: 1653 + type: Transform + - uid: 341 + components: + - pos: 20.5,46.5 + parent: 1653 + type: Transform + - uid: 382 + components: + - pos: 14.5,40.5 + parent: 1653 + type: Transform + - uid: 383 + components: + - pos: 32.5,20.5 + parent: 1653 + type: Transform + - uid: 417 + components: + - pos: 24.5,2.5 + parent: 1653 + type: Transform +- proto: ComfyChair + entities: + - uid: 381 + components: + - pos: 13.5,27.5 + parent: 1653 + type: Transform +- proto: ConveyorBelt + entities: + - uid: 101 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,10.5 + parent: 1653 + type: Transform + - uid: 102 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,10.5 + parent: 1653 + type: Transform + - uid: 103 + components: + - rot: -1.5707963267948966 rad + pos: 25.5,10.5 + parent: 1653 + type: Transform + - uid: 104 + components: + - rot: -1.5707963267948966 rad + pos: 29.5,10.5 + parent: 1653 + type: Transform + - uid: 105 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,10.5 + parent: 1653 + type: Transform + - uid: 106 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,10.5 + parent: 1653 + type: Transform +- proto: CrateCoffin + entities: + - uid: 331 + components: + - pos: 16.5,32.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 332 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 435 + components: + - pos: 22.5,32.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 436 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 438 + components: + - pos: 23.5,32.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 439 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 441 + components: + - pos: 20.5,30.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 442 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer +- proto: CrateEmergencyRadiation + entities: + - uid: 364 + components: + - pos: 15.5,36.5 + parent: 1653 + type: Transform +- proto: CrateEmptySpawner + entities: + - uid: 128 + components: + - pos: 4.5,40.5 + parent: 1653 + type: Transform +- proto: CrateFilledSpawner + entities: + - uid: 111 + components: + - pos: 8.5,2.5 + parent: 1653 + type: Transform + - uid: 367 + components: + - pos: 18.5,46.5 + parent: 1653 + type: Transform + - uid: 411 + components: + - pos: 13.5,36.5 + parent: 1653 + type: Transform + - uid: 490 + components: + - pos: 28.5,8.5 + parent: 1653 + type: Transform +- proto: CrateNPCPenguin + entities: + - uid: 474 + components: + - pos: 13.5,25.5 + parent: 1653 + type: Transform +- proto: CrateWoodenGrave + entities: + - uid: 6 + components: + - pos: 27.5,39.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 7 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 200 + components: + - pos: 42.5,39.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 202 + - 201 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 214 + components: + - pos: 28.5,39.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 215 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer + - uid: 231 + components: + - pos: 26.5,39.5 + parent: 1653 + type: Transform + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 232 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer +- proto: CrystalSpawner + entities: + - uid: 129 + components: + - pos: 27.5,35.5 + parent: 1653 + type: Transform + - uid: 131 + components: + - pos: 29.5,34.5 + parent: 1653 + type: Transform + - uid: 132 + components: + - pos: 30.5,35.5 + parent: 1653 + type: Transform + - uid: 172 + components: + - pos: 19.5,21.5 + parent: 1653 + type: Transform + - uid: 178 + components: + - pos: 20.5,20.5 + parent: 1653 + type: Transform + - uid: 298 + components: + - pos: 13.5,38.5 + parent: 1653 + type: Transform + - uid: 300 + components: + - pos: 9.5,40.5 + parent: 1653 + type: Transform + - uid: 301 + components: + - pos: 30.5,36.5 + parent: 1653 + type: Transform + - uid: 308 + components: + - pos: 31.5,36.5 + parent: 1653 + type: Transform +- proto: DoubleEmergencyNitrogenTankFilled + entities: + - uid: 309 + components: + - pos: 21.254128,38.485172 + parent: 1653 + type: Transform +- proto: DresserFilled + entities: + - uid: 413 + components: + - pos: 20.5,44.5 + parent: 1653 + type: Transform +- proto: FenceMetalCorner + entities: + - uid: 321 + components: + - rot: 1.5707963267948966 rad + pos: 20.5,35.5 + parent: 1653 + type: Transform + - uid: 477 + components: + - rot: -1.5707963267948966 rad + pos: 14.5,35.5 + parent: 1653 + type: Transform +- proto: FenceMetalGate + entities: + - uid: 268 + components: + - rot: 3.141592653589793 rad + pos: 17.5,35.5 + parent: 1653 + type: Transform +- proto: FenceMetalStraight + entities: + - uid: 267 + components: + - rot: 1.5707963267948966 rad + pos: 19.5,35.5 + parent: 1653 + type: Transform + - uid: 293 + components: + - pos: 14.5,36.5 + parent: 1653 + type: Transform + - uid: 476 + components: + - rot: 1.5707963267948966 rad + pos: 15.5,35.5 + parent: 1653 + type: Transform + - uid: 478 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,35.5 + parent: 1653 + type: Transform + - uid: 479 + components: + - pos: 20.5,34.5 + parent: 1653 + type: Transform + - uid: 480 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,35.5 + parent: 1653 + type: Transform +- proto: FlashlightLantern + entities: + - uid: 372 + components: + - pos: 16.286905,3.5055985 + parent: 1653 + type: Transform +- proto: FloorChasmEntity + entities: + - uid: 3 + components: + - pos: 5.5,0.5 + parent: 1653 + type: Transform + - uid: 4 + components: + - pos: 6.5,4.5 + parent: 1653 + type: Transform + - uid: 5 + components: + - pos: 6.5,3.5 + parent: 1653 + type: Transform + - uid: 17 + components: + - pos: 9.5,4.5 + parent: 1653 + type: Transform + - uid: 18 + components: + - pos: 4.5,4.5 + parent: 1653 + type: Transform + - uid: 19 + components: + - pos: 41.5,1.5 + parent: 1653 + type: Transform + - uid: 20 + components: + - pos: 44.5,1.5 + parent: 1653 + type: Transform + - uid: 21 + components: + - pos: 45.5,1.5 + parent: 1653 + type: Transform + - uid: 22 + components: + - pos: 44.5,0.5 + parent: 1653 + type: Transform + - uid: 23 + components: + - pos: 45.5,0.5 + parent: 1653 + type: Transform + - uid: 24 + components: + - pos: 47.5,0.5 + parent: 1653 + type: Transform + - uid: 25 + components: + - pos: 48.5,0.5 + parent: 1653 + type: Transform + - uid: 76 + components: + - pos: 15.5,4.5 + parent: 1653 + type: Transform + - uid: 77 + components: + - pos: 14.5,0.5 + parent: 1653 + type: Transform + - uid: 78 + components: + - pos: 14.5,1.5 + parent: 1653 + type: Transform + - uid: 82 + components: + - pos: 12.5,1.5 + parent: 1653 + type: Transform + - uid: 83 + components: + - pos: 13.5,4.5 + parent: 1653 + type: Transform + - uid: 84 + components: + - pos: 12.5,0.5 + parent: 1653 + type: Transform + - uid: 85 + components: + - pos: 13.5,0.5 + parent: 1653 + type: Transform + - uid: 86 + components: + - pos: 13.5,1.5 + parent: 1653 + type: Transform + - uid: 87 + components: + - pos: 46.5,1.5 + parent: 1653 + type: Transform + - uid: 88 + components: + - pos: 46.5,0.5 + parent: 1653 + type: Transform + - uid: 97 + components: + - pos: 14.5,4.5 + parent: 1653 + type: Transform + - uid: 112 + components: + - pos: 7.5,0.5 + parent: 1653 + type: Transform + - uid: 114 + components: + - pos: 10.5,0.5 + parent: 1653 + type: Transform + - uid: 115 + components: + - pos: 10.5,1.5 + parent: 1653 + type: Transform + - uid: 116 + components: + - pos: 11.5,4.5 + parent: 1653 + type: Transform + - uid: 118 + components: + - pos: 11.5,3.5 + parent: 1653 + type: Transform + - uid: 119 + components: + - pos: 11.5,0.5 + parent: 1653 + type: Transform + - uid: 120 + components: + - pos: 11.5,1.5 + parent: 1653 + type: Transform + - uid: 235 + components: + - pos: 49.5,0.5 + parent: 1653 + type: Transform + - uid: 241 + components: + - pos: 3.5,4.5 + parent: 1653 + type: Transform + - uid: 242 + components: + - pos: 2.5,0.5 + parent: 1653 + type: Transform + - uid: 245 + components: + - pos: 10.5,3.5 + parent: 1653 + type: Transform + - uid: 250 + components: + - pos: 4.5,3.5 + parent: 1653 + type: Transform + - uid: 258 + components: + - pos: 3.5,0.5 + parent: 1653 + type: Transform + - uid: 278 + components: + - pos: 40.5,2.5 + parent: 1653 + type: Transform + - uid: 315 + components: + - pos: 1.5,4.5 + parent: 1653 + type: Transform + - uid: 317 + components: + - pos: 5.5,3.5 + parent: 1653 + type: Transform + - uid: 337 + components: + - pos: 4.5,0.5 + parent: 1653 + type: Transform + - uid: 340 + components: + - pos: 42.5,2.5 + parent: 1653 + type: Transform + - uid: 350 + components: + - pos: 42.5,1.5 + parent: 1653 + type: Transform + - uid: 354 + components: + - pos: 12.5,3.5 + parent: 1653 + type: Transform + - uid: 359 + components: + - pos: 15.5,1.5 + parent: 1653 + type: Transform + - uid: 360 + components: + - pos: 15.5,0.5 + parent: 1653 + type: Transform + - uid: 363 + components: + - pos: 12.5,4.5 + parent: 1653 + type: Transform + - uid: 368 + components: + - pos: 43.5,2.5 + parent: 1653 + type: Transform + - uid: 377 + components: + - pos: 7.5,4.5 + parent: 1653 + type: Transform + - uid: 378 + components: + - pos: 6.5,1.5 + parent: 1653 + type: Transform + - uid: 387 + components: + - pos: 43.5,1.5 + parent: 1653 + type: Transform + - uid: 398 + components: + - pos: 41.5,2.5 + parent: 1653 + type: Transform + - uid: 401 + components: + - pos: 5.5,1.5 + parent: 1653 + type: Transform + - uid: 404 + components: + - pos: 5.5,4.5 + parent: 1653 + type: Transform + - uid: 452 + components: + - pos: 2.5,4.5 + parent: 1653 + type: Transform + - uid: 453 + components: + - pos: 1.5,0.5 + parent: 1653 + type: Transform + - uid: 459 + components: + - pos: 44.5,2.5 + parent: 1653 + type: Transform + - uid: 468 + components: + - pos: 3.5,3.5 + parent: 1653 + type: Transform + - uid: 471 + components: + - pos: 6.5,0.5 + parent: 1653 + type: Transform + - uid: 472 + components: + - pos: 10.5,4.5 + parent: 1653 + type: Transform + - uid: 473 + components: + - pos: 9.5,0.5 + parent: 1653 + type: Transform +- proto: FloorWaterEntity + entities: + - uid: 13 + components: + - pos: 27.5,14.5 + parent: 1653 + type: Transform + - uid: 14 + components: + - pos: 29.5,14.5 + parent: 1653 + type: Transform + - uid: 15 + components: + - pos: 28.5,15.5 + parent: 1653 + type: Transform + - uid: 43 + components: + - pos: 26.5,16.5 + parent: 1653 + type: Transform + - uid: 45 + components: + - pos: 30.5,13.5 + parent: 1653 + type: Transform + - uid: 46 + components: + - pos: 29.5,13.5 + parent: 1653 + type: Transform + - uid: 47 + components: + - pos: 28.5,12.5 + parent: 1653 + type: Transform + - uid: 49 + components: + - pos: 27.5,16.5 + parent: 1653 + type: Transform + - uid: 65 + components: + - pos: 29.5,12.5 + parent: 1653 + type: Transform + - uid: 72 + components: + - pos: 25.5,13.5 + parent: 1653 + type: Transform + - uid: 93 + components: + - pos: 24.5,15.5 + parent: 1653 + type: Transform + - uid: 100 + components: + - pos: 27.5,12.5 + parent: 1653 + type: Transform + - uid: 221 + components: + - pos: 26.5,13.5 + parent: 1653 + type: Transform + - uid: 222 + components: + - pos: 26.5,14.5 + parent: 1653 + type: Transform + - uid: 223 + components: + - pos: 26.5,15.5 + parent: 1653 + type: Transform + - uid: 224 + components: + - pos: 27.5,13.5 + parent: 1653 + type: Transform + - uid: 444 + components: + - pos: 28.5,14.5 + parent: 1653 + type: Transform + - uid: 445 + components: + - pos: 27.5,15.5 + parent: 1653 + type: Transform + - uid: 446 + components: + - pos: 28.5,13.5 + parent: 1653 + type: Transform + - uid: 447 + components: + - pos: 25.5,15.5 + parent: 1653 + type: Transform + - uid: 448 + components: + - pos: 25.5,14.5 + parent: 1653 + type: Transform +- proto: FloraRockSolid01 + entities: + - uid: 63 + components: + - pos: 1.4643247,15.527116 + parent: 1653 + type: Transform + - uid: 230 + components: + - pos: 25.553497,34.710487 + parent: 1653 + type: Transform + - uid: 281 + components: + - pos: 7.4866443,6.552367 + parent: 1653 + type: Transform + - uid: 295 + components: + - pos: 0.911531,32.452705 + parent: 1653 + type: Transform + - uid: 303 + components: + - pos: 21.638557,19.381065 + parent: 1653 + type: Transform + - uid: 374 + components: + - pos: 3.5664039,19.498943 + parent: 1653 + type: Transform +- proto: FloraRockSolid02 + entities: + - uid: 64 + components: + - pos: 11.966135,14.804356 + parent: 1653 + type: Transform + - uid: 171 + components: + - pos: 8.535091,20.608318 + parent: 1653 + type: Transform + - uid: 306 + components: + - pos: 12.087021,32.358955 + parent: 1653 + type: Transform +- proto: FloraRockSolid03 + entities: + - uid: 90 + components: + - pos: 23.53006,1.5159609 + parent: 1653 + type: Transform + - uid: 170 + components: + - pos: 1.9101539,21.811443 + parent: 1653 + type: Transform + - uid: 199 + components: + - pos: 44.689724,39.621048 + parent: 1653 + type: Transform + - uid: 243 + components: + - pos: 21.468937,26.614876 + parent: 1653 + type: Transform + - uid: 296 + components: + - pos: 9.355139,30.733953 + parent: 1653 + type: Transform + - uid: 330 + components: + - pos: 35.552525,31.574036 + parent: 1653 + type: Transform + - uid: 361 + components: + - pos: 5.433075,13.527116 + parent: 1653 + type: Transform + - uid: 375 + components: + - pos: 1.5647693,8.536742 + parent: 1653 + type: Transform +- proto: FoodBoxDonkpocketPizza + entities: + - uid: 209 + components: + - pos: 0.9877088,26.184813 + parent: 1653 + type: Transform +- proto: FoodCornTrash + entities: + - uid: 2 + components: + - pos: 26.81556,20.415936 + parent: 1653 + type: Transform + - uid: 109 + components: + - pos: 27.367641,20.311768 + parent: 1653 + type: Transform + - uid: 113 + components: + - pos: 27.388475,19.988852 + parent: 1653 + type: Transform + - uid: 249 + components: + - pos: 27.638475,20.843018 + parent: 1653 + type: Transform + - uid: 254 + components: + - pos: 28.055141,20.301352 + parent: 1653 + type: Transform + - uid: 319 + components: + - pos: 27.482225,20.530518 + parent: 1653 + type: Transform + - uid: 391 + components: + - pos: 26.930141,20.728436 + parent: 1653 + type: Transform + - uid: 475 + components: + - pos: 27.84681,20.634686 + parent: 1653 + type: Transform +- proto: FoodMeatHuman + entities: + - uid: 186 + components: + - pos: 34.42388,40.652298 + parent: 1653 + type: Transform + - uid: 187 + components: + - pos: 34.64263,40.511673 + parent: 1653 + type: Transform +- proto: FoodMeatLizardtailKebab + entities: + - uid: 42 + components: + - pos: 38.036457,12.588582 + parent: 1653 + type: Transform +- proto: FoodMeatRouny + entities: + - uid: 183 + components: + - pos: 36.45513,40.589798 + parent: 1653 + type: Transform +- proto: FoodSnackPopcorn + entities: + - uid: 74 + components: + - pos: 25.648891,21.040936 + parent: 1653 + type: Transform + - uid: 79 + components: + - pos: 25.763475,21.645102 + parent: 1653 + type: Transform + - uid: 81 + components: + - pos: 25.461391,21.207602 + parent: 1653 + type: Transform + - uid: 117 + components: + - pos: 25.857225,21.207602 + parent: 1653 + type: Transform + - uid: 240 + components: + - pos: 25.97181,21.030518 + parent: 1653 + type: Transform +- proto: FoodTinPeachesMaintOpen + entities: + - uid: 208 + components: + - pos: 2.343669,28.087896 + parent: 1653 + type: Transform +- proto: GeigerCounter + entities: + - uid: 228 + components: + - rot: -1.5707963267948966 rad + pos: 2.536777,44.354866 + parent: 1653 + type: Transform +- proto: Girder + entities: + - uid: 351 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,45.5 + parent: 1653 + type: Transform +- proto: GlowstickRed + entities: + - uid: 256 + components: + - pos: 12.648991,38.39441 + parent: 1653 + type: Transform + - uid: 264 + components: + - pos: 22.50236,34.545544 + parent: 1653 + type: Transform + - uid: 271 + components: + - pos: 4.5084944,44.49994 + parent: 1653 + type: Transform + - uid: 294 + components: + - pos: 10.820133,30.586414 + parent: 1653 + type: Transform + - uid: 316 + components: + - pos: 26.3416,18.72954 + parent: 1653 + type: Transform + - uid: 414 + components: + - pos: 1.8548665,32.055164 + parent: 1653 + type: Transform + - uid: 420 + components: + - pos: 22.799234,34.62367 + parent: 1653 + type: Transform + - uid: 421 + components: + - pos: 22.299234,34.608044 + parent: 1653 + type: Transform +- proto: GoldOre1 + entities: + - uid: 134 + components: + - pos: 8.948225,24.854458 + parent: 1653 + type: Transform + - uid: 138 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 139 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 144 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 145 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 191 + components: + - pos: 26.486202,10.538733 + parent: 1653 + type: Transform + - uid: 266 + components: + - pos: 9.448225,25.291958 + parent: 1653 + type: Transform + - uid: 328 + components: + - pos: 8.541975,25.885708 + parent: 1653 + type: Transform + - uid: 379 + components: + - pos: 10.026349,24.557583 + parent: 1653 + type: Transform +- proto: hydroponicsSoil + entities: + - uid: 1 + components: + - pos: 25.5,20.5 + parent: 1653 + type: Transform + - uid: 390 + components: + - pos: 27.5,21.5 + parent: 1653 + type: Transform + - uid: 423 + components: + - pos: 25.5,19.5 + parent: 1653 + type: Transform +- proto: ImprovisedExplosiveFuel + entities: + - uid: 203 + components: + - pos: 36.443645,31.673359 + parent: 1653 + type: Transform +- proto: IngotGold1 + entities: + - uid: 312 + components: + - pos: 10.073225,25.588833 + parent: 1653 + type: Transform + - uid: 313 + components: + - pos: 10.4951,24.791958 + parent: 1653 + type: Transform + - uid: 426 + components: + - pos: 8.385725,25.104458 + parent: 1653 + type: Transform + - uid: 449 + components: + - pos: 10.698225,26.120083 + parent: 1653 + type: Transform + - uid: 460 + components: + - pos: 9.120099,24.323208 + parent: 1653 + type: Transform +- proto: IngotSilver + entities: + - uid: 262 + components: + - pos: 20.52197,46.638992 + parent: 1653 + type: Transform +- proto: KitchenElectricGrill + entities: + - uid: 205 + components: + - pos: 35.5,40.5 + parent: 1653 + type: Transform +- proto: KitchenMicrowave + entities: + - uid: 244 + components: + - pos: 26.5,21.5 + parent: 1653 + type: Transform +- proto: KukriKnife + entities: + - uid: 130 + components: + - pos: 2.508058,45.496773 + parent: 1653 + type: Transform +- proto: LampGold + entities: + - uid: 380 + components: + - pos: 13.291822,27.041958 + parent: 1653 + type: Transform +- proto: Lantern + entities: + - uid: 28 + components: + - pos: 24.446167,4.4534607 + parent: 1653 + type: Transform + - uid: 29 + components: + - pos: 33.45849,0.51596093 + parent: 1653 + type: Transform + - uid: 89 + components: + - pos: 18.58248,0.51596093 + parent: 1653 + type: Transform + - uid: 180 + components: + - pos: 20.497932,21.77169 + parent: 1653 + type: Transform +- proto: MaintenancePlantSpawner + entities: + - uid: 67 + components: + - pos: 21.5,16.5 + parent: 1653 + type: Transform + - uid: 70 + components: + - pos: 17.5,15.5 + parent: 1653 + type: Transform + - uid: 73 + components: + - pos: 21.5,14.5 + parent: 1653 + type: Transform + - uid: 217 + components: + - pos: 22.5,12.5 + parent: 1653 + type: Transform + - uid: 218 + components: + - pos: 16.5,13.5 + parent: 1653 + type: Transform +- proto: MaintenanceToolSpawner + entities: + - uid: 57 + components: + - pos: 39.5,0.5 + parent: 1653 + type: Transform + - uid: 96 + components: + - pos: 51.5,1.5 + parent: 1653 + type: Transform + - uid: 416 + components: + - pos: 7.5,32.5 + parent: 1653 + type: Transform +- proto: MaintenanceWeaponSpawner + entities: + - uid: 31 + components: + - pos: 22.5,0.5 + parent: 1653 + type: Transform + - uid: 32 + components: + - pos: 1.5,3.5 + parent: 1653 + type: Transform + - uid: 51 + components: + - pos: 52.5,0.5 + parent: 1653 + type: Transform + - uid: 292 + components: + - pos: 34.5,31.5 + parent: 1653 + type: Transform +- proto: MaterialWoodPlank + entities: + - uid: 442 + components: + - flags: InContainer + type: MetaData + - parent: 441 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: MedkitOxygenFilled + entities: + - uid: 225 + components: + - pos: 17.973127,40.40886 + parent: 1653 + type: Transform +- proto: MiningWindow + entities: + - uid: 155 + components: + - pos: 19.5,47.5 + parent: 1653 + type: Transform + - uid: 162 + components: + - pos: 3.5,47.5 + parent: 1653 + type: Transform + - uid: 248 + components: + - pos: 11.5,47.5 + parent: 1653 + type: Transform +- proto: OreBox + entities: + - uid: 184 + components: + - pos: 2.5,24.5 + parent: 1653 + type: Transform + - uid: 270 + components: + - pos: 37.5,4.5 + parent: 1653 + type: Transform + - uid: 283 + components: + - pos: 17.5,8.5 + parent: 1653 + type: Transform + - uid: 488 + components: + - pos: 29.5,8.5 + parent: 1653 + type: Transform +- proto: OreProcessor + entities: + - uid: 269 + components: + - pos: 24.5,10.5 + parent: 1653 + type: Transform + - uid: 320 + components: + - pos: 3.5,46.5 + parent: 1653 + type: Transform +- proto: OrganHumanAppendix + entities: + - uid: 148 + components: + - pos: 10.481619,44.360027 + parent: 1653 + type: Transform +- proto: OrganHumanHeart + entities: + - uid: 206 + components: + - pos: 9.478245,26.669188 + parent: 1653 + type: Transform +- proto: PaintingSadClown + entities: + - uid: 122 + components: + - pos: 43.5,39.5 + parent: 1653 + type: Transform +- proto: PaintingSkeletonCigarette + entities: + - uid: 362 + components: + - pos: 32.5,21.5 + parent: 1653 + type: Transform +- proto: Pickaxe + entities: + - uid: 158 + components: + - pos: 21.525682,34.54406 + parent: 1653 + type: Transform + - uid: 179 + components: + - pos: 21.743324,22.05294 + parent: 1653 + type: Transform +- proto: PlasmaOre1 + entities: + - uid: 469 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform + - uid: 482 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform + - uid: 483 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform + - uid: 485 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform + - uid: 489 + components: + - pos: 30.486202,10.491858 + parent: 1653 + type: Transform +- proto: PlushieLizard + entities: + - uid: 41 + components: + - pos: 35.503193,14.666253 + parent: 1653 + type: Transform +- proto: PlushiePenguin + entities: + - uid: 415 + components: + - pos: 13.526197,27.541958 + parent: 1653 + type: Transform +- proto: PortableGeneratorJrPacman + entities: + - uid: 392 + components: + - pos: 37.5,31.5 + parent: 1653 + type: Transform +- proto: PottedPlantRandom + entities: + - uid: 44 + components: + - pos: 44.5,14.5 + parent: 1653 + type: Transform + - uid: 50 + components: + - pos: 45.5,14.5 + parent: 1653 + type: Transform + - uid: 94 + components: + - pos: 42.5,14.5 + parent: 1653 + type: Transform + - uid: 347 + components: + - pos: 41.5,14.5 + parent: 1653 + type: Transform +- proto: PowerCellHyperPrinted + entities: + - uid: 52 + components: + - pos: 31.760115,2.7803574 + parent: 1653 + type: Transform +- proto: PoweredSmallLight + entities: + - uid: 156 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,45.5 + parent: 1653 + type: Transform +- proto: PuddleVomit + entities: + - uid: 229 + components: + - pos: 3.5,45.5 + parent: 1653 + type: Transform +- proto: Rack + entities: + - uid: 276 + components: + - pos: 18.5,45.5 + parent: 1653 + type: Transform + - uid: 334 + components: + - pos: 20.5,45.5 + parent: 1653 + type: Transform + - uid: 335 + components: + - pos: 20.5,46.5 + parent: 1653 + type: Transform + - uid: 352 + components: + - pos: 21.5,34.5 + parent: 1653 + type: Transform + - uid: 365 + components: + - pos: 10.5,46.5 + parent: 1653 + type: Transform + - uid: 403 + components: + - pos: 4.5,45.5 + parent: 1653 + type: Transform + - uid: 410 + components: + - pos: 22.5,34.5 + parent: 1653 + type: Transform +- proto: Railing + entities: + - uid: 260 + components: + - rot: 3.141592653589793 rad + pos: 27.5,9.5 + parent: 1653 + type: Transform + - uid: 261 + components: + - rot: 3.141592653589793 rad + pos: 28.5,9.5 + parent: 1653 + type: Transform + - uid: 277 + components: + - rot: 3.141592653589793 rad + pos: 26.5,9.5 + parent: 1653 + type: Transform + - uid: 327 + components: + - rot: 3.141592653589793 rad + pos: 30.5,9.5 + parent: 1653 + type: Transform + - uid: 376 + components: + - rot: 3.141592653589793 rad + pos: 25.5,9.5 + parent: 1653 + type: Transform + - uid: 467 + components: + - rot: 3.141592653589793 rad + pos: 29.5,9.5 + parent: 1653 + type: Transform +- proto: RailingCornerSmall + entities: + - uid: 371 + components: + - pos: 31.5,9.5 + parent: 1653 + type: Transform +- proto: RandomArtifactSpawner + entities: + - uid: 48 + components: + - pos: 43.5,14.5 + parent: 1653 + type: Transform +- proto: RandomCargoCorpseSpawner + entities: + - uid: 274 + components: + - pos: 11.5,46.5 + parent: 1653 + type: Transform +- proto: RandomServiceCorpseSpawner + entities: + - uid: 400 + components: + - pos: 19.5,45.5 + parent: 1653 + type: Transform +- proto: SalvageMaterialCrateSpawner + entities: + - uid: 481 + components: + - pos: 27.5,8.5 + parent: 1653 + type: Transform + - uid: 491 + components: + - pos: 30.5,8.5 + parent: 1653 + type: Transform +- proto: ShadowTree03 + entities: + - uid: 68 + components: + - pos: 19.477606,14.337568 + parent: 1653 + type: Transform +- proto: SheetSteel1 + entities: + - uid: 457 + components: + - pos: 13.481619,44.391277 + parent: 1653 + type: Transform +- proto: ShellShotgunIncendiary + entities: + - uid: 405 + components: + - pos: 18.58831,45.763992 + parent: 1653 + type: Transform +- proto: ShellShotgunSlug + entities: + - uid: 339 + components: + - pos: 18.603935,45.404617 + parent: 1653 + type: Transform +- proto: Shovel + entities: + - uid: 30 + components: + - pos: 33.425346,4.383849 + parent: 1653 + type: Transform + - uid: 394 + components: + - pos: 31.844257,31.05841 + parent: 1653 + type: Transform +- proto: SignNTMine + entities: + - uid: 253 + components: + - pos: 4.5,43.5 + parent: 1653 + type: Transform + - uid: 326 + components: + - pos: 20.5,43.5 + parent: 1653 + type: Transform +- proto: SilverOre1 + entities: + - uid: 198 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform + - uid: 318 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform + - uid: 484 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform + - uid: 486 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform + - uid: 487 + components: + - pos: 29.423702,10.476233 + parent: 1653 + type: Transform +- proto: SmallLight + entities: + - uid: 336 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,45.5 + parent: 1653 + type: Transform + - uid: 434 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,45.5 + parent: 1653 + type: Transform +- proto: SpawnMobFrog + entities: + - uid: 386 + components: + - pos: 18.5,44.5 + parent: 1653 + type: Transform +- proto: SpearBone + entities: + - uid: 232 + components: + - flags: InContainer + type: MetaData + - parent: 231 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: SteelBench + entities: + - uid: 71 + components: + - pos: 19.5,13.5 + parent: 1653 + type: Transform +- proto: SteelOre + entities: + - uid: 197 + components: + - pos: 28.470577,10.523108 + parent: 1653 + type: Transform +- proto: TableCarpet + entities: + - uid: 465 + components: + - pos: 13.5,26.5 + parent: 1653 + type: Transform +- proto: TableReinforced + entities: + - uid: 246 + components: + - pos: 4.5,46.5 + parent: 1653 + type: Transform +- proto: TableWood + entities: + - uid: 56 + components: + - pos: 39.5,0.5 + parent: 1653 + type: Transform + - uid: 59 + components: + - pos: 51.5,1.5 + parent: 1653 + type: Transform + - uid: 124 + components: + - pos: 34.5,40.5 + parent: 1653 + type: Transform + - uid: 133 + components: + - pos: 5.5,40.5 + parent: 1653 + type: Transform + - uid: 173 + components: + - pos: 20.5,21.5 + parent: 1653 + type: Transform + - uid: 226 + components: + - pos: 36.5,40.5 + parent: 1653 + type: Transform + - uid: 227 + components: + - pos: 35.5,40.5 + parent: 1653 + type: Transform + - uid: 333 + components: + - pos: 36.5,31.5 + parent: 1653 + type: Transform +- proto: ToiletDirtyWater + entities: + - uid: 406 + components: + - pos: 32.5,20.5 + parent: 1653 + type: Transform +- proto: Torch + entities: + - uid: 58 + components: + - pos: 52.617035,4.4522324 + parent: 1653 + type: Transform + - uid: 60 + components: + - pos: 38.654633,2.7959824 + parent: 1653 + type: Transform + - uid: 135 + components: + - pos: 5.4760814,40.63729 + parent: 1653 + type: Transform + - uid: 136 + components: + - pos: 5.6792064,40.621666 + parent: 1653 + type: Transform + - uid: 366 + components: + - pos: 10.669119,46.594402 + parent: 1653 + type: Transform +- proto: TorsoSkeleton + entities: + - uid: 325 + components: + - pos: 32.5085,20.620539 + parent: 1653 + type: Transform +- proto: TrashBakedBananaPeel + entities: + - uid: 210 + components: + - pos: 5.484687,26.403563 + parent: 1653 + type: Transform +- proto: UraniumOre + entities: + - uid: 433 + components: + - pos: 4.487873,46.58196 + parent: 1653 + type: Transform +- proto: UraniumOre1 + entities: + - uid: 192 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform + - uid: 193 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform + - uid: 194 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform + - uid: 195 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform + - uid: 196 + components: + - pos: 27.517452,10.507483 + parent: 1653 + type: Transform +- proto: WallMining + entities: + - uid: 11 + components: + - pos: 13.5,46.5 + parent: 1653 + type: Transform + - uid: 150 + components: + - pos: 18.5,43.5 + parent: 1653 + type: Transform + - uid: 151 + components: + - pos: 17.5,44.5 + parent: 1653 + type: Transform + - uid: 152 + components: + - pos: 17.5,46.5 + parent: 1653 + type: Transform + - uid: 153 + components: + - pos: 18.5,47.5 + parent: 1653 + type: Transform + - uid: 154 + components: + - pos: 20.5,47.5 + parent: 1653 + type: Transform + - uid: 157 + components: + - pos: 17.5,45.5 + parent: 1653 + type: Transform + - uid: 159 + components: + - pos: 4.5,47.5 + parent: 1653 + type: Transform + - uid: 160 + components: + - pos: 2.5,47.5 + parent: 1653 + type: Transform + - uid: 161 + components: + - pos: 1.5,44.5 + parent: 1653 + type: Transform + - uid: 163 + components: + - pos: 5.5,45.5 + parent: 1653 + type: Transform + - uid: 164 + components: + - pos: 1.5,46.5 + parent: 1653 + type: Transform + - uid: 165 + components: + - pos: 1.5,45.5 + parent: 1653 + type: Transform + - uid: 247 + components: + - pos: 10.5,47.5 + parent: 1653 + type: Transform + - uid: 265 + components: + - pos: 21.5,46.5 + parent: 1653 + type: Transform + - uid: 329 + components: + - pos: 20.5,43.5 + parent: 1653 + type: Transform + - uid: 353 + components: + - pos: 9.5,46.5 + parent: 1653 + type: Transform + - uid: 370 + components: + - pos: 5.5,44.5 + parent: 1653 + type: Transform + - uid: 373 + components: + - pos: 5.5,46.5 + parent: 1653 + type: Transform + - uid: 402 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,43.5 + parent: 1653 + type: Transform + - uid: 425 + components: + - pos: 21.5,45.5 + parent: 1653 + type: Transform + - uid: 427 + components: + - pos: 21.5,44.5 + parent: 1653 + type: Transform + - uid: 429 + components: + - pos: 9.5,44.5 + parent: 1653 + type: Transform + - uid: 430 + components: + - pos: 9.5,45.5 + parent: 1653 + type: Transform + - uid: 431 + components: + - pos: 12.5,47.5 + parent: 1653 + type: Transform + - uid: 455 + components: + - pos: 2.5,43.5 + parent: 1653 + type: Transform + - uid: 456 + components: + - pos: 4.5,43.5 + parent: 1653 + type: Transform +- proto: WallMiningDiagonal + entities: + - uid: 166 + components: + - pos: 1.5,47.5 + parent: 1653 + type: Transform + - uid: 167 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,47.5 + parent: 1653 + type: Transform + - uid: 168 + components: + - rot: 3.141592653589793 rad + pos: 5.5,43.5 + parent: 1653 + type: Transform + - uid: 169 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,43.5 + parent: 1653 + type: Transform + - uid: 251 + components: + - pos: 9.5,47.5 + parent: 1653 + type: Transform + - uid: 275 + components: + - rot: -1.5707963267948966 rad + pos: 13.5,47.5 + parent: 1653 + type: Transform + - uid: 397 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,43.5 + parent: 1653 + type: Transform + - uid: 428 + components: + - pos: 17.5,47.5 + parent: 1653 + type: Transform + - uid: 493 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,47.5 + parent: 1653 + type: Transform + - uid: 494 + components: + - rot: 3.141592653589793 rad + pos: 21.5,43.5 + parent: 1653 + type: Transform + - uid: 495 + components: + - rot: 1.5707963267948966 rad + pos: 17.5,43.5 + parent: 1653 + type: Transform +- proto: WallWood + entities: + - uid: 16 + components: + - pos: 31.5,19.5 + parent: 1653 + type: Transform + - uid: 188 + components: + - pos: 43.5,39.5 + parent: 1653 + type: Transform + - uid: 255 + components: + - pos: 31.5,21.5 + parent: 1653 + type: Transform + - uid: 323 + components: + - pos: 33.5,20.5 + parent: 1653 + type: Transform + - uid: 324 + components: + - pos: 33.5,21.5 + parent: 1653 + type: Transform + - uid: 338 + components: + - pos: 33.5,19.5 + parent: 1653 + type: Transform + - uid: 408 + components: + - pos: 32.5,21.5 + parent: 1653 + type: Transform + - uid: 409 + components: + - pos: 31.5,20.5 + parent: 1653 + type: Transform +- proto: WaterTankHighCapacity + entities: + - uid: 219 + components: + - pos: 27.5,14.5 + parent: 1653 + type: Transform +- proto: WeaponShotgunImprovised + entities: + - uid: 412 + components: + - pos: 20.496641,45.467117 + parent: 1653 + type: Transform +- proto: WeldingFuelTankFull + entities: + - uid: 10 + components: + - pos: 2.5,46.5 + parent: 1653 + type: Transform +- proto: WoodDoor + entities: + - uid: 407 + components: + - pos: 32.5,19.5 + parent: 1653 + type: Transform +- proto: WoodenSign + entities: + - uid: 189 + components: + - pos: 1.5555744,26.347673 + parent: 1653 + type: Transform +- proto: WoodenSignRight + entities: + - uid: 62 + components: + - pos: 11.898959,14.345065 + parent: 1653 + type: Transform + - uid: 177 + components: + - pos: 9.503841,22.358318 + parent: 1653 + type: Transform + - uid: 440 + components: + - pos: 25.205534,32.33467 + parent: 1653 + type: Transform + - uid: 451 + components: + - pos: 5.5491443,7.271117 + parent: 1653 + type: Transform +- proto: WoodenSupport + entities: + - uid: 9 + components: + - pos: 10.5,10.5 + parent: 1653 + type: Transform + - uid: 66 + components: + - pos: 38.5,16.5 + parent: 1653 + type: Transform + - uid: 107 + components: + - pos: 8.5,32.5 + parent: 1653 + type: Transform + - uid: 108 + components: + - pos: 1.5,36.5 + parent: 1653 + type: Transform + - uid: 110 + components: + - pos: 0.5,22.5 + parent: 1653 + type: Transform + - uid: 140 + components: + - pos: 34.5,6.5 + parent: 1653 + type: Transform + - uid: 146 + components: + - pos: 24.5,6.5 + parent: 1653 + type: Transform + - uid: 174 + components: + - pos: 13.5,22.5 + parent: 1653 + type: Transform + - uid: 204 + components: + - pos: 2.5,28.5 + parent: 1653 + type: Transform + - uid: 207 + components: + - pos: 0.5,28.5 + parent: 1653 + type: Transform + - uid: 259 + components: + - pos: 20.5,24.5 + parent: 1653 + type: Transform + - uid: 279 + components: + - pos: 12.5,10.5 + parent: 1653 + type: Transform + - uid: 286 + components: + - pos: 22.5,10.5 + parent: 1653 + type: Transform + - uid: 422 + components: + - pos: 22.5,28.5 + parent: 1653 + type: Transform + - uid: 424 + components: + - pos: 22.5,40.5 + parent: 1653 + type: Transform + - uid: 450 + components: + - pos: 0.5,10.5 + parent: 1653 + type: Transform + - uid: 462 + components: + - pos: 53.5,4.5 + parent: 1653 + type: Transform + - uid: 464 + components: + - pos: 36.5,4.5 + parent: 1653 + type: Transform + - uid: 470 + components: + - pos: 8.5,36.5 + parent: 1653 + type: Transform +- proto: WoodenSupportBeam + entities: + - uid: 35 + components: + - pos: 29.5,1.5 + parent: 1653 + type: Transform + - uid: 143 + components: + - pos: 33.5,10.5 + parent: 1653 + type: Transform + - uid: 285 + components: + - pos: 12.5,6.5 + parent: 1653 + type: Transform + - uid: 307 + components: + - pos: 14.5,20.5 + parent: 1653 + type: Transform + - uid: 355 + components: + - pos: 25.5,1.5 + parent: 1653 + type: Transform + - uid: 395 + components: + - pos: 17.5,27.5 + parent: 1653 + type: Transform +- proto: WoodenSupportWall + entities: + - uid: 27 + components: + - pos: 34.5,4.5 + parent: 1653 + type: Transform + - uid: 33 + components: + - pos: 27.5,1.5 + parent: 1653 + type: Transform + - uid: 34 + components: + - pos: 28.5,1.5 + parent: 1653 + type: Transform + - uid: 36 + components: + - pos: 32.5,2.5 + parent: 1653 + type: Transform + - uid: 37 + components: + - pos: 32.5,3.5 + parent: 1653 + type: Transform + - uid: 38 + components: + - pos: 30.5,1.5 + parent: 1653 + type: Transform + - uid: 39 + components: + - pos: 32.5,0.5 + parent: 1653 + type: Transform + - uid: 53 + components: + - pos: 7.5,8.5 + parent: 1653 + type: Transform + - uid: 54 + components: + - pos: 6.5,8.5 + parent: 1653 + type: Transform + - uid: 55 + components: + - pos: 5.5,8.5 + parent: 1653 + type: Transform + - uid: 69 + components: + - pos: 0.5,12.5 + parent: 1653 + type: Transform + - uid: 75 + components: + - pos: 16.5,27.5 + parent: 1653 + type: Transform + - uid: 91 + components: + - pos: 32.5,1.5 + parent: 1653 + type: Transform + - uid: 92 + components: + - pos: 31.5,3.5 + parent: 1653 + type: Transform + - uid: 98 + components: + - pos: 18.5,25.5 + parent: 1653 + type: Transform + - uid: 125 + components: + - pos: 38.5,40.5 + parent: 1653 + type: Transform + - uid: 141 + components: + - pos: 34.5,10.5 + parent: 1653 + type: Transform + - uid: 142 + components: + - pos: 34.5,9.5 + parent: 1653 + type: Transform + - uid: 175 + components: + - pos: 12.5,20.5 + parent: 1653 + type: Transform + - uid: 176 + components: + - pos: 15.5,20.5 + parent: 1653 + type: Transform + - uid: 185 + components: + - pos: 32.5,40.5 + parent: 1653 + type: Transform + - uid: 234 + components: + - pos: 50.5,0.5 + parent: 1653 + type: Transform + - uid: 236 + components: + - pos: 30.5,3.5 + parent: 1653 + type: Transform + - uid: 237 + components: + - pos: 25.5,3.5 + parent: 1653 + type: Transform + - uid: 238 + components: + - pos: 25.5,4.5 + parent: 1653 + type: Transform + - uid: 239 + components: + - pos: 18.5,1.5 + parent: 1653 + type: Transform + - uid: 257 + components: + - pos: 29.5,3.5 + parent: 1653 + type: Transform + - uid: 263 + components: + - pos: 25.5,2.5 + parent: 1653 + type: Transform + - uid: 280 + components: + - pos: 13.5,6.5 + parent: 1653 + type: Transform + - uid: 282 + components: + - pos: 21.5,6.5 + parent: 1653 + type: Transform + - uid: 287 + components: + - pos: 22.5,6.5 + parent: 1653 + type: Transform + - uid: 297 + components: + - pos: 6.5,40.5 + parent: 1653 + type: Transform + - uid: 299 + components: + - pos: 0.5,38.5 + parent: 1653 + type: Transform + - uid: 305 + components: + - pos: 14.5,30.5 + parent: 1653 + type: Transform + - uid: 310 + components: + - pos: 14.5,32.5 + parent: 1653 + type: Transform + - uid: 311 + components: + - pos: 26.5,30.5 + parent: 1653 + type: Transform + - uid: 342 + components: + - pos: 22.5,3.5 + parent: 1653 + type: Transform + - uid: 343 + components: + - pos: 21.5,3.5 + parent: 1653 + type: Transform + - uid: 344 + components: + - pos: 23.5,3.5 + parent: 1653 + type: Transform + - uid: 345 + components: + - pos: 24.5,3.5 + parent: 1653 + type: Transform + - uid: 346 + components: + - pos: 20.5,1.5 + parent: 1653 + type: Transform + - uid: 349 + components: + - pos: 21.5,1.5 + parent: 1653 + type: Transform + - uid: 388 + components: + - pos: 28.5,3.5 + parent: 1653 + type: Transform + - uid: 389 + components: + - pos: 26.5,1.5 + parent: 1653 + type: Transform + - uid: 419 + components: + - pos: 19.5,1.5 + parent: 1653 + type: Transform + - uid: 437 + components: + - pos: 26.5,32.5 + parent: 1653 + type: Transform + - uid: 461 + components: + - pos: 54.5,4.5 + parent: 1653 + type: Transform +- proto: WoodenSupportWallBroken + entities: + - uid: 26 + components: + - pos: 27.5,3.5 + parent: 1653 + type: Transform + - uid: 80 + components: + - pos: 17.5,25.5 + parent: 1653 + type: Transform + - uid: 95 + components: + - pos: 4.5,8.5 + parent: 1653 + type: Transform + - uid: 284 + components: + - pos: 20.5,6.5 + parent: 1653 + type: Transform + - uid: 348 + components: + - pos: 20.5,3.5 + parent: 1653 + type: Transform + - uid: 356 + components: + - pos: 39.5,2.5 + parent: 1653 + type: Transform + - uid: 463 + components: + - pos: 50.5,1.5 + parent: 1653 + type: Transform +... diff --git a/Resources/Prototypes/Procedural/Themes/haunted.yml b/Resources/Prototypes/Procedural/Themes/haunted.yml new file mode 100644 index 00000000000..9a69b4daa35 --- /dev/null +++ b/Resources/Prototypes/Procedural/Themes/haunted.yml @@ -0,0 +1,308 @@ +# Rooms +# Large +# - 17x5 +- type: dungeonRoom + id: Haunted17x5a + size: 17,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 0,0 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted17x5b + size: 17,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 18,0 + tags: + - Haunted + +# - 7x7 +- type: dungeonRoom + id: Haunted7x7a + size: 7,7 + atlas: /Maps/Dungeon/haunted.yml + offset: 0,42 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted7x7b + size: 7,7 + atlas: /Maps/Dungeon/haunted.yml + offset: 8,42 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted7x7c + size: 7,7 + atlas: /Maps/Dungeon/haunted.yml + offset: 16,42 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted7x7d + size: 7,7 + atlas: /Maps/Dungeon/haunted.yml + offset: 24,42 + tags: + - Haunted + +# Medium +# - 11x5 +- type: dungeonRoom + id: Haunted11x5a + size: 11,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 0,6 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted11x5b + size: 11,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 12,6 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted11x5c + size: 11,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 24,6 + tags: + - Haunted + +# - 7x5 +- type: dungeonRoom + id: Haunted7x5a + size: 7,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 0,12 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted7x5b + size: 7,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 8,12 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted7x5c + size: 7,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 16,12 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted7x5d + size: 7,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 24,12 + tags: + - Haunted + +# - 13x3 +- type: dungeonRoom + id: Haunted13x3a + size: 13,3 + atlas: /Maps/Dungeon/haunted.yml + offset: 0,30 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted13x3b + size: 13,3 + atlas: /Maps/Dungeon/haunted.yml + offset: 14,30 + tags: + - Haunted + +# - 11x3 +- type: dungeonRoom + id: Haunted11x3a + size: 11,3 + atlas: /Maps/Dungeon/haunted.yml + offset: 0,34 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted11x3b + size: 11,3 + atlas: /Maps/Dungeon/haunted.yml + offset: 12,34 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted11x3c + size: 11,3 + atlas: /Maps/Dungeon/haunted.yml + offset: 24,34 + tags: + - Haunted + +# - 7x3 +- type: dungeonRoom + id: Haunted7x3a + size: 7,3 + atlas: /Maps/Dungeon/haunted.yml + offset: 0,38 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted7x3b + size: 7,3 + atlas: /Maps/Dungeon/haunted.yml + offset: 8,38 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted7x3c + size: 7,3 + atlas: /Maps/Dungeon/haunted.yml + offset: 16,38 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted7x3d + size: 7,3 + atlas: /Maps/Dungeon/haunted.yml + offset: 24,38 + tags: + - Haunted + +# Small +# - 5x5 +- type: dungeonRoom + id: Haunted5x5a + size: 5,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 0,18 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted5x5b + size: 5,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 6,18 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted5x5c + size: 5,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 12,18 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted5x5d + size: 5,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 18,18 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted5x5e + size: 5,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 24,18 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted5x5f + size: 5,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 30,18 + tags: + - Haunted + +# - 3x5 +- type: dungeonRoom + id: Haunted3x5a + size: 3,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 0,24 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted3x5b + size: 3,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 4,24 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted3x5c + size: 3,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 8,24 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted3x5d + size: 3,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 12,24 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted3x5e + size: 3,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 16,24 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted3x5f + size: 3,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 20,24 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted3x5g + size: 3,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 24,24 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted3x5h + size: 3,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 28,24 + tags: + - Haunted + +- type: dungeonRoom + id: Haunted3x5i + size: 3,5 + atlas: /Maps/Dungeon/haunted.yml + offset: 32,24 + tags: + - Haunted diff --git a/Resources/Prototypes/Procedural/dungeon_configs.yml b/Resources/Prototypes/Procedural/dungeon_configs.yml index 49837507ae5..9e8d3a44095 100644 --- a/Resources/Prototypes/Procedural/dungeon_configs.yml +++ b/Resources/Prototypes/Procedural/dungeon_configs.yml @@ -175,15 +175,15 @@ - SpaceShip - Tall postGeneration: - + - !type:CorridorPostGen tile: FloorCaveDrought width: 3 - + - !type:DungeonEntrancePostGen count: 5 tile: FloorCaveDrought - entities: + entities: - RandomWoodenWall - !type:RoomEntrancePostGen @@ -195,12 +195,12 @@ tile: FloorCaveDrought entities: - RandomWoodenWall - + - !type:ExternalWindowPostGen tile: FloorCaveDrought entities: - RandomWoodenWall - + - !type:WallMountPostGen tile: FloorCaveDrought spawns: @@ -217,7 +217,7 @@ - id: WallMining prob: 0.8 orGroup: content - + - !type:BoundaryWallPostGen tile: FloorCaveDrought wall: WallRock @@ -225,13 +225,13 @@ - !type:AutoCablingPostGen entity: Catwalk - + - !type:JunctionPostGen tile: FloorCaveDrought width: 3 entities: - RandomWoodenSupport - + - !type:CornerClutterPostGen contents: - id: RandomStalagmiteOrCrystal @@ -321,4 +321,41 @@ SouthWest: BrickTileWhiteInnerSw SouthEast: BrickTileWhiteInnerSe NorthWest: BrickTileWhiteInnerNw - NorthEast: BrickTileWhiteInnerNe \ No newline at end of file + NorthEast: BrickTileWhiteInnerNe + +# todo: Add a biome dungeon generator +# Add corridor first gens that place rooms on top +# Add a worm corridor gen (place subsequent corridors somewhere randomly along the path) +# Place room entrances on ends of corridors touching a tile +# Remove all room tiles from corridors +# Fix paths up and try to reconnect all corridor tiles +# Add a postgen step to spread rooms out, though it shouldn't spread into corridor exteriors + +- type: dungeonConfig + id: Haunted + generator: !type:PrefabDunGen + tile: FloorCaveDrought + roomWhitelist: + - Mineshaft + presets: + - Bucket + - Wow + - SpaceShip + - Tall + postGeneration: + - !type:WormCorridorPostGen + width: 3 + tile: FloorCaveDrought + + - !type:CorridorClutterPostGen + contents: + - id: FloraStalagmite1 + - id: FloraStalagmite2 + - id: FloraStalagmite3 + - id: FloraStalagmite4 + - id: FloraStalagmite5 + - id: FloraStalagmite6 + + - !type:BoundaryWallPostGen + tile: FloorCaveDrought + wall: WallRock diff --git a/Resources/Prototypes/Procedural/salvage_mods.yml b/Resources/Prototypes/Procedural/salvage_mods.yml index 4da7a3bf0f5..6c2bf678621 100644 --- a/Resources/Prototypes/Procedural/salvage_mods.yml +++ b/Resources/Prototypes/Procedural/salvage_mods.yml @@ -241,4 +241,10 @@ id: SnowyLabs proto: SnowyLabs biomes: - - Snow \ No newline at end of file + - Snow + +- type: salvageDungeonMod + id: Haunted + proto: Haunted + biomes: + - Caves diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 6d0120aed0e..789b7c92968 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -650,6 +650,9 @@ - type: Tag id: Hardsuit # Prevent melee injectors that can't penetrate hardsuits from injecting the wearer (nettles) +- type: Tag + id: Haunted + - type: Tag id: Head From e5402230b693799b6b65711220483afac2ed85a5 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:19:40 -0700 Subject: [PATCH 004/111] Mirror: Change collision mask of canisters to allow passing through cargo flaps (#231) ## Mirror of PR #26193: [Change collision mask of canisters to allow passing through cargo flaps](https://github.com/space-wizards/space-station-14/pull/26193) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `03b5c21b6e4d0efc70e0172690d9d2ec02d7a711` PR opened by IamVelcroboy at 2024-03-16 20:59:22 UTC --- PR changed 1 files with 1 additions and 1 deletions. The PR had the following labels: - No C# ---

Original Body

> ## About the PR > Title > > ## Why / Balance > Frequently requested feature/QoL > > ## Technical details > n/a > > ## Media > n/a > > - [x] I have added screenshots/videos to this PR showcasing its changes in-game, **or** this PR does not require an in-game showcase > > ## Breaking changes > n/a > > **Changelog** > :cl: Velcroboy > - tweak: Tweaked gas canisters to pass through cargo flaps.
Co-authored-by: SimpleStation14 --- .../Entities/Structures/Storage/Canisters/gas_canisters.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml index 897b7be6ffb..cd44f5f585a 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml @@ -74,7 +74,7 @@ bounds: "-0.25,-0.25,0.25,0.25" density: 190 mask: - - MachineMask + - SmallMobMask layer: - MachineLayer - type: AtmosDevice From 7f1bd0f0925f49dda6cd38f871227f7c88eb44b0 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:22:27 -0700 Subject: [PATCH 005/111] Mirror: Sort agents by success rate in end game summary (#200) ## Mirror of PR #26058: [Sort agents by success rate in end game summary](https://github.com/space-wizards/space-station-14/pull/26058) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `d674be697e83b590db5aaec9f4411dd57c131861` PR opened by Crotalus at 2024-03-12 22:44:16 UTC --- PR changed 1 files with 34 additions and 16 deletions. The PR had the following labels: - Status: Needs Review ---

Original Body

> ## About the PR > Sort the agents by success rate in the end game summary > ## Why / Balance > Fame and glory to the robust > > **Changelog** > :cl: > - tweak: Sort agents by success rate in end game summary > >
Co-authored-by: SimpleStation14 --- Content.Server/Objectives/ObjectivesSystem.cs | 50 +++++++++++++------ 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/Content.Server/Objectives/ObjectivesSystem.cs b/Content.Server/Objectives/ObjectivesSystem.cs index b18668247a4..20205b8b72f 100644 --- a/Content.Server/Objectives/ObjectivesSystem.cs +++ b/Content.Server/Objectives/ObjectivesSystem.cs @@ -12,6 +12,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using System.Linq; +using System.Text; namespace Content.Server.Objectives; @@ -82,29 +83,32 @@ private void OnRoundEndText(RoundEndTextAppendEvent ev) totalInCustody += minds.Where(m => IsInCustody(m)).Count(); } - var result = Loc.GetString("objectives-round-end-result", ("count", total), ("agent", agent)); + var result = new StringBuilder(); + result.AppendLine(Loc.GetString("objectives-round-end-result", ("count", total), ("agent", agent))); if (agent == Loc.GetString("traitor-round-end-agent-name")) { - result += "\n" + Loc.GetString("objectives-round-end-result-in-custody", ("count", total), ("custody", totalInCustody), ("agent", agent)); + result.AppendLine(Loc.GetString("objectives-round-end-result-in-custody", ("count", total), ("custody", totalInCustody), ("agent", agent))); } // next add all the players with its own prepended text foreach (var (prepend, minds) in summary) { if (prepend != string.Empty) - result += prepend; + result.Append(prepend); // add space between the start text and player list - result += "\n"; + result.AppendLine(); - AddSummary(ref result, agent, minds); + AddSummary(result, agent, minds); } - ev.AddLine(result + "\n"); + ev.AddLine(result.AppendLine().ToString()); } } - private void AddSummary(ref string result, string agent, List minds) + private void AddSummary(StringBuilder result, string agent, List minds) { + var agentSummaries = new List<(string summary, float successRate, int completedObjectives)>(); + foreach (var mindId in minds) { if (!TryComp(mindId, out MindComponent? mind)) @@ -114,25 +118,26 @@ private void AddSummary(ref string result, string agent, List minds) if (title == null) continue; - result += "\n"; - var custody = IsInCustody(mindId, mind) ? Loc.GetString("objectives-in-custody") : string.Empty; var objectives = mind.Objectives; if (objectives.Count == 0) { - result += Loc.GetString("objectives-no-objectives", ("custody", custody), ("title", title), ("agent", agent)); + agentSummaries.Add((Loc.GetString("objectives-no-objectives", ("custody", custody), ("title", title), ("agent", agent)), 0f, 0)); continue; } - result += Loc.GetString("objectives-with-objectives", ("custody", custody), ("title", title), ("agent", agent)); + var completedObjectives = 0; + var totalObjectives = 0; + var agentSummary = new StringBuilder(); + agentSummary.AppendLine(Loc.GetString("objectives-with-objectives", ("custody", custody), ("title", title), ("agent", agent))); foreach (var objectiveGroup in objectives.GroupBy(o => Comp(o).Issuer)) { //TO DO: //check for the right group here. Getting the target issuer is easy: objectiveGroup.Key //It should be compared to the type of the group's issuer. - result += "\n" + Loc.GetString($"objective-issuer-{objectiveGroup.Key}"); + agentSummary.AppendLine(Loc.GetString($"objective-issuer-{objectiveGroup.Key}")); foreach (var objective in objectiveGroup) { @@ -142,26 +147,39 @@ private void AddSummary(ref string result, string agent, List minds) var objectiveTitle = info.Value.Title; var progress = info.Value.Progress; + totalObjectives++; + + agentSummary.Append("- "); if (progress > 0.99f) { - result += "\n- " + Loc.GetString( + agentSummary.AppendLine(Loc.GetString( "objectives-objective-success", ("objective", objectiveTitle), ("markupColor", "green") - ); + )); + completedObjectives++; } else { - result += "\n- " + Loc.GetString( + agentSummary.AppendLine(Loc.GetString( "objectives-objective-fail", ("objective", objectiveTitle), ("progress", (int) (progress * 100)), ("markupColor", "red") - ); + )); } } } + + var successRate = totalObjectives > 0 ? (float) completedObjectives / totalObjectives : 0f; + agentSummaries.Add((agentSummary.ToString(), successRate, completedObjectives)); } + + var sortedAgents = agentSummaries.OrderByDescending(x => x.successRate) + .ThenByDescending(x => x.completedObjectives); + + foreach (var (summary, _, _) in sortedAgents) + result.AppendLine(summary); } public EntityUid? GetRandomObjective(EntityUid mindId, MindComponent mind, string objectiveGroupProto) From 999ef0c43b7c3735d334f481e7063050f8217be5 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:32:35 -0700 Subject: [PATCH 006/111] Mirror: Improves Medical Hud interface and functionality (#253) ## Mirror of PR #26027: [Improves Medical Hud interface and functionality](https://github.com/space-wizards/space-station-14/pull/26027) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `8d40bc36a93d3d5c6d3ece6c662ac9747f7837ae` PR opened by DoutorWhite at 2024-03-12 07:00:06 UTC --- PR changed 8 files with 78 additions and 13 deletions. The PR had the following labels: - Changes: Sprites - Status: Awaiting Changes ---

Original Body

> ## About the PR > > There are some changes to the Medical Hud interface: The icon has been changed and now there is one for each mob state, making it easier to recognize whether the mob is rotting, dead or crit. > > ## Why / Balance > > It's more visually pleasing and helps with discerning mob states. > > ## Technical details > > There is a decision structure for determining which icon is appropriate for the mob's state. It's the only relevant code change. > > ## Media > > ![Captura de tela 2024-03-13 230527](https://github.com/space-wizards/space-station-14/assets/68350815/9df6e598-94b7-4efa-81c6-020bf3a724e1) > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > > **Changelog** > > :cl: > - add: Introduce new health status icons. > - tweak: Enhance the Medical HUD to display the health status of players and mobs using the newly added icons.
Co-authored-by: SimpleStation14 --- .../Overlays/ShowHealthIconsSystem.cs | 25 ++++++++++------ .../Damage/Components/DamageableComponent.cs | 16 ++++++++++- Resources/Prototypes/StatusEffects/health.yml | 27 +++++++++++++++++- .../Misc/health_icons.rsi/Critical.png | Bin 0 -> 125 bytes .../Interface/Misc/health_icons.rsi/Dead.png | Bin 0 -> 214 bytes .../Interface/Misc/health_icons.rsi/Fine.png | Bin 1120 -> 139 bytes .../Misc/health_icons.rsi/Rotting.png | Bin 0 -> 135 bytes .../Interface/Misc/health_icons.rsi/meta.json | 23 +++++++++++++-- 8 files changed, 78 insertions(+), 13 deletions(-) create mode 100644 Resources/Textures/Interface/Misc/health_icons.rsi/Critical.png create mode 100644 Resources/Textures/Interface/Misc/health_icons.rsi/Dead.png create mode 100644 Resources/Textures/Interface/Misc/health_icons.rsi/Rotting.png diff --git a/Content.Client/Overlays/ShowHealthIconsSystem.cs b/Content.Client/Overlays/ShowHealthIconsSystem.cs index 6ed9d6a41db..a546cf4d828 100644 --- a/Content.Client/Overlays/ShowHealthIconsSystem.cs +++ b/Content.Client/Overlays/ShowHealthIconsSystem.cs @@ -1,5 +1,7 @@ +using Content.Shared.Atmos.Rotting; using Content.Shared.Damage; using Content.Shared.Inventory.Events; +using Content.Shared.Mobs.Components; using Content.Shared.Overlays; using Content.Shared.StatusIcon; using Content.Shared.StatusIcon.Components; @@ -17,9 +19,6 @@ public sealed class ShowHealthIconsSystem : EquipmentHudSystem DamageContainers = new(); - [ValidatePrototypeId] - private const string HealthIconFine = "HealthIconFine"; - public override void Initialize() { base.Initialize(); @@ -45,18 +44,20 @@ protected override void DeactivateInternal() DamageContainers.Clear(); } - private void OnGetStatusIconsEvent(EntityUid uid, DamageableComponent damageableComponent, ref GetStatusIconsEvent args) + private void OnGetStatusIconsEvent(Entity entity, ref GetStatusIconsEvent args) { if (!IsActive || args.InContainer) return; - var healthIcons = DecideHealthIcons(damageableComponent); + var healthIcons = DecideHealthIcons(entity); args.StatusIcons.AddRange(healthIcons); } - private IReadOnlyList DecideHealthIcons(DamageableComponent damageableComponent) + private IReadOnlyList DecideHealthIcons(Entity entity) { + var damageableComponent = entity.Comp; + if (damageableComponent.DamageContainerID == null || !DamageContainers.Contains(damageableComponent.DamageContainerID)) { @@ -66,10 +67,16 @@ private IReadOnlyList DecideHealthIcons(DamageableComponent var result = new List(); // Here you could check health status, diseases, mind status, etc. and pick a good icon, or multiple depending on whatever. - if (damageableComponent?.DamageContainerID == "Biological" && - _prototypeMan.TryIndex(HealthIconFine, out var healthyIcon)) + if (damageableComponent?.DamageContainerID == "Biological") { - result.Add(healthyIcon); + if (TryComp(entity, out var state)) + { + // Since there is no MobState for a rotting mob, we have to deal with this case first. + if (HasComp(entity) && _prototypeMan.TryIndex(damageableComponent.RottingIcon, out var rottingIcon)) + result.Add(rottingIcon); + else if (damageableComponent.HealthIcons.TryGetValue(state.CurrentState, out var value) && _prototypeMan.TryIndex(value, out var icon)) + result.Add(icon); + } } return result; diff --git a/Content.Shared/Damage/Components/DamageableComponent.cs b/Content.Shared/Damage/Components/DamageableComponent.cs index f8ba661a665..be66d51e3bc 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -1,6 +1,9 @@ using Content.Shared.Damage.Prototypes; using Content.Shared.FixedPoint; +using Content.Shared.Mobs; +using Content.Shared.StatusIcon; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; @@ -62,7 +65,18 @@ public sealed partial class DamageableComponent : Component public FixedPoint2 TotalDamage; [DataField("radiationDamageTypes", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List RadiationDamageTypeIDs = new() {"Radiation"}; + public List RadiationDamageTypeIDs = new() { "Radiation" }; + + [DataField] + public Dictionary> HealthIcons = new() + { + { MobState.Alive, "HealthIconFine" }, + { MobState.Critical, "HealthIconCritical" }, + { MobState.Dead, "HealthIconDead" }, + }; + + [DataField] + public ProtoId RottingIcon = "HealthIconRotting"; } [Serializable, NetSerializable] diff --git a/Resources/Prototypes/StatusEffects/health.yml b/Resources/Prototypes/StatusEffects/health.yml index 0a1df020c05..12c16e57f05 100644 --- a/Resources/Prototypes/StatusEffects/health.yml +++ b/Resources/Prototypes/StatusEffects/health.yml @@ -4,4 +4,29 @@ icon: sprite: /Textures/Interface/Misc/health_icons.rsi state: Fine - locationPreference: Right \ No newline at end of file + locationPreference: Right + +- type: statusIcon + id: HealthIconCritical + priority: 1 + icon: + sprite: /Textures/Interface/Misc/health_icons.rsi + state: Critical + locationPreference: Right + +- type: statusIcon + id: HealthIconDead + priority: 1 + icon: + sprite: /Textures/Interface/Misc/health_icons.rsi + state: Dead + locationPreference: Right + +- type: statusIcon + id: HealthIconRotting + priority: 1 + icon: + sprite: /Textures/Interface/Misc/health_icons.rsi + state: Rotting + locationPreference: Right + diff --git a/Resources/Textures/Interface/Misc/health_icons.rsi/Critical.png b/Resources/Textures/Interface/Misc/health_icons.rsi/Critical.png new file mode 100644 index 0000000000000000000000000000000000000000..779874eaaeb3c64047fc7f01bc618725d36d2e7b GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqE}kxqArezt`*({nC~z?IhaZ}G z=j7Z1HJzG&89UT`g_;<4tQ4ML#j;?>N@Iq%dv-aiswuB@JlEN=PImjkukq#1-&{|z Y1hPvq8@V+r1I=UbboFyt=akR{06Re@u>b%7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Misc/health_icons.rsi/Dead.png b/Resources/Textures/Interface/Misc/health_icons.rsi/Dead.png new file mode 100644 index 0000000000000000000000000000000000000000..beceebd05cf3cb07497ad0a16f286074c94c1a12 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^20+Zg!3HGvYuC5~skxpmjv*Gk$tej52?hoqew=S$ zjoGoGxp2d2V=0M>KlKHVnanELSb3S*fS~Q5&iNLd4~d7E*KiefK4vB>{Ma|bSQ(T LtDnm{r-UW|I{QlO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Misc/health_icons.rsi/Fine.png b/Resources/Textures/Interface/Misc/health_icons.rsi/Fine.png index 8d07f93496e64642ba31441fa4f9881f5ca27c42..45725aa73c819040ef7f9209ce2df68bff32c47b 100644 GIT binary patch delta 111 zcmV-#0FeLS2#W!bBWM6pNklx zuRG~JIs=e2m=F=xB@K56;J6+D?sHGiXtQLc*JP4<1C|XfH_PrvFB=U0Z@#wF7|rZT Ry&?br002ovPDHLkV1fYBDqa8p delta 1100 zcmV-S1he~#0pJLbBYy*qdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+O3yslIti8 zh5u_6vjj^*JeGqERLu@%`E$U;d318SZ`+|_up+}jpOCw${`YUAfAEn-BRLDvC+`=0 zTyjY=265Rxd(Vp-*GF5wf3nl@gTSQdb-(p>`e)ef{y=ckzJEU3DQt6|I48QTJSWt? zvS2X%;+#ljxAVNGG@r}vLHhizW!h}-UhiE%Fp6P56_To~3$C%RqW!Cy(Fa^v1x~C9 zW2b)D<$dhv7`_DW7`?=9$4(yeCBDS2wGvya z`|h&yh?J+fsejv6#t4opLaF01j~4JXjKgRNEnQj zX~#sZ_0(lv;t?z8lAbk?(aH5Iya0sTjH!+Ijz$l8vwu8*RS>ih=7T0M*rDQ7I2F?Gh%86G*Wvg+zqTm2f=xTZC4NT1DZ zw)rh=aZ6h+QncXs7heLESW?NAD^jVtYSq_JV@)+Ty81k~6%oWh+L z2)fE*jSqHra)0DT=KhMCd?H63-4*1hqnqTua(hFq6DCzp3cZQWYxs1U3c|4uJm zAZF&#c`-u^T_EP3M<>M$Ep&mHr#$+dn1?*3vvuf}$8@$1-9*s^#c?nG7Zk@Kims{H zy{D4^000SaNLh0L01m_e01m_fl`9S#00007bV*G` z2j>S25iSD9jze_-002`-L_t&-(}j=04S*mJ1m}n?SQ15G2|TtK5-fotu(5@FKU;{YL>opGFfn^~8v>a(U&hhEXg8khrrPvMef+**P SP(L960000|*$lNmf+{an^LB{Ts5NEt6f literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Misc/health_icons.rsi/meta.json b/Resources/Textures/Interface/Misc/health_icons.rsi/meta.json index 9bc63271451..fb584d6b7f3 100644 --- a/Resources/Textures/Interface/Misc/health_icons.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/health_icons.rsi/meta.json @@ -5,10 +5,29 @@ "y": 8 }, "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/tgstation/tgstation/blob/master/icons/mob/huds/hud.dmi", + "copyright": "Taken from /tg/station at commit https://github.com/tgstation/tgstation/commit/20ae083f140ac5b4da7e8bc40f95349001b6c086", "states": [ { "name": "Fine" + }, + { + "name": "Critical" + }, + { + "name": "Dead", + "delays": [ + [ + 0.125, + 0.125, + 0.125, + 0.125, + 0.125, + 0.125 + ] + ] + }, + { + "name": "Rotting" } ] -} \ No newline at end of file +} From 6d736aec7bd592d8c2d6a38194787f0d9bdefc93 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:41:03 -0700 Subject: [PATCH 007/111] Mirror: make traitor syndicate reinforcements get the traitor role (#279) ## Mirror of PR #25400: [make traitor syndicate reinforcements get the traitor role](https://github.com/space-wizards/space-station-14/pull/25400) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `a7d95c3b13bfa64fe08a8f855515cdc1d258808a` PR opened by Dutch-VanDerLinde at 2024-02-20 00:35:08 UTC --- PR changed 1 files with 15 additions and 4 deletions. The PR had the following labels: - No C# - Status: Needs Review ---

Original Body

> > > > ## About the PR > traitor syndie reinforcements get the autotraitor component, like traitor syndie monkies > > ## Why / Balance > syndie monkies can see the codewords, so why cant the more expensive human reinforcement see the codewords aswell? > this also makes it so they are listed as an antag with admin vision > > > ## Technical details > made syndicate base for human reinforcement > ![image](https://github.com/space-wizards/space-station-14/assets/45323883/4959010a-b867-4563-aa74-7232931f298c) > > gives traitor reinforcement the autotraitor component > > ## Media > https://github.com/space-wizards/space-station-14/assets/45323883/5ada01f9-d098-46e5-baea-487e2215ba58 > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > no > > **Changelog** > no >
Co-authored-by: SimpleStation14 --- .../Prototypes/Entities/Mobs/Player/human.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index b864984a7f3..6197c82c021 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -9,9 +9,9 @@ #Syndie - type: entity parent: MobHuman - id: MobHumanSyndicateAgent + id: MobHumanSyndicateAgentBase name: syndicate agent - suffix: Human + suffix: Human, Base components: - type: Loadout prototypes: [SyndicateOperativeGearExtremelyBasic] @@ -22,9 +22,20 @@ - Syndicate - type: entity - parent: MobHumanSyndicateAgent + parent: MobHumanSyndicateAgentBase + id: MobHumanSyndicateAgent + name: syndicate agent + suffix: Human, Traitor + components: + # make the player a traitor once its taken + - type: AutoTraitor + giveUplink: false + giveObjectives: false + +- type: entity + parent: MobHumanSyndicateAgentBase id: MobHumanSyndicateAgentNukeops # Reinforcement exclusive to nukeops uplink - suffix: NukeOps + suffix: Human, NukeOps components: - type: NukeOperative From cc41b007572611ef19ef02034e48548d7482556d Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:43:39 -0700 Subject: [PATCH 008/111] Mirror: Unify `Content`'s `EntitySystem` logging (#240) ## Mirror of PR #26216: [Unify `Content`'s `EntitySystem` logging](https://github.com/space-wizards/space-station-14/pull/26216) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `eeaea6c25b496106eb741e93738f2ab8503949ba` PR opened by LordCarve at 2024-03-17 20:05:08 UTC --- PR changed 13 files with 43 additions and 82 deletions. The PR had the following labels: - Status: Needs Review ---

Original Body

> > > > ## About the PR > > Log things via `Log` with generated sawmill name rather than an explicitly set one for all Content `EntitySystem`s, except the ones with `Rule`s. In all cases the explicit `_sawmill` was redundant. > > ## Why / Balance > > - Bringing consistency to logs (all logs originating from `EntitySystem` should be recognizible in the logs `system.something`). > - Logs' sawmills match system class name to assist with debugging. > - Less likelihood of someone building a new `EntitySystem` to copy-paste the unnecessary `_sawmill` and instaed use the appropriate inherited `Log` instead. > > ## Technical details > > This addresses **_just_** `Content`'s `EntitySystem`s. > > `GameRuleSystem` **and all classes inheriting from it are excluded.** I want to include both the calling system name and the rule name in the sawmill name - this however requires engine changes. I thus opted to cut out that part and made this a `Content`-only PR. > > Also, even with the rule changes, the `GameRule`s themselves will be excluded pending antag refactor, because currently they are a _hot-hot_ mess and I'm sure it's preferable by everyone for me to wait for it to cool down before introducing merge conflicts unnecessarily. > > Log Sawmill changes: > **System class | current master sawmill | this PR's sawmill** > `VaporSystem.cs`: `vapor` -> `system.vapor` > `DeviceListSystem.cs`: `devicelist` -> `system.device_list` > `ForensicScannerSystem.cs`: `forensic.scanner` -> `system.forensic_scanner` > `MappingSystem.cs`: `autosave` -> `system.mapping` > `MechSystem.cs`: `mech` -> `system.mech` > `LagCompensationSystem.cs`: `lagcomp` -> `system.lag_compensation` > `NpcFactionSystem.cs`: `faction` -> `system.npc_faction` > `EmergencyShuttleSystem.cs`: `shuttle.emergency` -> `system.emergency_shuttle` > `EventManagerSystem.cs`: `events` -> `system.event_manager` > `VendingMachineSystem.cs`: `vending` -> `system.vending_machine` > `SharedAnomalySystem.cs`: `anomaly` -> `system.anomaly` > `SharedDeviceLinkSystem.cs`: `devicelink` -> `system.device_link` > `ThirstSystem.cs`: `thirst` -> `system.thirst` > > Manually tested most (all that I had doubts about) and confirmed that `LagCompensationSystem`'s `Log.Level` is getting correctly set like this. > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > Log sawmill name changes. Any analyzers/other software that processes logs needs to be adjusted to new sawmills. Full list of changes in PR - section Technical details.
Co-authored-by: SimpleStation14 --- .../Chemistry/EntitySystems/VaporSystem.cs | 6 ++---- .../DeviceNetwork/Systems/DeviceListSystem.cs | 7 ++----- .../Forensics/Systems/ForensicScannerSystem.cs | 10 +++------- Content.Server/Mapping/MappingSystem.cs | 14 ++++++-------- Content.Server/Mech/Systems/MechSystem.cs | 6 +----- .../Movement/Systems/LagCompensationSystem.cs | 8 +++----- Content.Server/NPC/Systems/NpcFactionSystem.cs | 16 +++++++--------- .../Shuttles/Systems/EmergencyShuttleSystem.cs | 9 +++------ .../StationEvents/EventManagerSystem.cs | 18 +++++++----------- .../VendingMachines/VendingMachineSystem.cs | 7 ++----- Content.Shared/Anomaly/SharedAnomalySystem.cs | 15 ++++++--------- .../DeviceLinking/SharedDeviceLinkSystem.cs | 6 ++---- .../Nutrition/EntitySystems/ThirstSystem.cs | 6 +----- 13 files changed, 45 insertions(+), 83 deletions(-) diff --git a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs index 2c23b8f0390..d945c1f818b 100644 --- a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs @@ -31,12 +31,10 @@ internal sealed class VaporSystem : EntitySystem private const float ReactTime = 0.125f; - private ISawmill _sawmill = default!; - public override void Initialize() { base.Initialize(); - _sawmill = Logger.GetSawmill("vapor"); + SubscribeLocalEvent(HandleCollide); } @@ -128,7 +126,7 @@ private void Update(float frameTime, Entity ent, Entity reagentQuantity.Quantity) { - _sawmill.Error($"Tried to tile react more than we have for reagent {reagentQuantity}. Found {reaction} and we only have {reagentQuantity.Quantity}"); + Log.Error($"Tried to tile react more than we have for reagent {reagentQuantity}. Found {reaction} and we only have {reagentQuantity.Quantity}"); reaction = reagentQuantity.Quantity; } diff --git a/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs index 978dbc0ed93..a8d40882c4d 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.DeviceNetwork.Components; using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; @@ -12,8 +12,6 @@ namespace Content.Server.DeviceNetwork.Systems; [UsedImplicitly] public sealed class DeviceListSystem : SharedDeviceListSystem { - private ISawmill _sawmill = default!; - [Dependency] private readonly NetworkConfiguratorSystem _configurator = default!; public override void Initialize() @@ -23,7 +21,6 @@ public override void Initialize() SubscribeLocalEvent(OnBeforeBroadcast); SubscribeLocalEvent(OnBeforePacketSent); SubscribeLocalEvent(OnMapSave); - _sawmill = Logger.GetSawmill("devicelist"); } private void OnShutdown(EntityUid uid, DeviceListComponent component, ComponentShutdown args) @@ -154,7 +151,7 @@ private void OnMapSave(BeforeSaveEvent ev) // TODO full game saves. // when full saves are supported, this should instead add data to the BeforeSaveEvent informing the // saving system that this map (or null-space entity) also needs to be included in the save. - _sawmill.Error( + Log.Error( $"Saving a device list ({ToPrettyString(uid)}) that has a reference to an entity on another map ({ToPrettyString(ent)}). Removing entity from list."); } diff --git a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs index be44f9e203b..0d3168fd4e0 100644 --- a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs @@ -28,14 +28,10 @@ public sealed class ForensicScannerSystem : EntitySystem [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly MetaDataSystem _metaData = default!; - private ISawmill _sawmill = default!; - public override void Initialize() { base.Initialize(); - _sawmill = Logger.GetSawmill("forensics.scanner"); - SubscribeLocalEvent(OnAfterInteract); SubscribeLocalEvent(OnAfterInteractUsing); SubscribeLocalEvent(OnBeforeActivatableUIOpen); @@ -57,7 +53,7 @@ private void UpdateUserInterface(EntityUid uid, ForensicScannerComponent compone component.PrintReadyAt); if (!_uiSystem.TrySetUiState(uid, ForensicScannerUiKey.Key, state)) - _sawmill.Warning($"{ToPrettyString(uid)} was unable to set UI state."); + Log.Warning($"{ToPrettyString(uid)} was unable to set UI state."); } private void OnDoAfter(EntityUid uid, ForensicScannerComponent component, DoAfterEvent args) @@ -180,7 +176,7 @@ private void OnPrint(EntityUid uid, ForensicScannerComponent component, Forensic { if (!args.Session.AttachedEntity.HasValue) { - _sawmill.Warning($"{ToPrettyString(uid)} got OnPrint without Session.AttachedEntity"); + Log.Warning($"{ToPrettyString(uid)} got OnPrint without Session.AttachedEntity"); return; } @@ -200,7 +196,7 @@ private void OnPrint(EntityUid uid, ForensicScannerComponent component, Forensic if (!HasComp(printed)) { - _sawmill.Error("Printed paper did not have PaperComponent."); + Log.Error("Printed paper did not have PaperComponent."); return; } diff --git a/Content.Server/Mapping/MappingSystem.cs b/Content.Server/Mapping/MappingSystem.cs index 0678dab7ce2..28bb3afbe10 100644 --- a/Content.Server/Mapping/MappingSystem.cs +++ b/Content.Server/Mapping/MappingSystem.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.CCVar; @@ -32,7 +32,6 @@ public sealed class MappingSystem : EntitySystem /// private Dictionary _currentlyAutosaving = new(); - private ISawmill _sawmill = default!; private bool _autosaveEnabled; public override void Initialize() @@ -44,7 +43,6 @@ public override void Initialize() "autosave ", ToggleAutosaveCommand); - _sawmill = Logger.GetSawmill("autosave"); Subs.CVar(_cfg, CCVars.AutosaveEnabled, SetAutosaveEnabled, true); } @@ -69,7 +67,7 @@ public override void Update(float frameTime) if (!_mapManager.MapExists(map) || _mapManager.IsMapInitialized(map)) { - _sawmill.Warning($"Can't autosave map {map}; it doesn't exist, or is initialized. Removing from autosave."); + Log.Warning($"Can't autosave map {map}; it doesn't exist, or is initialized. Removing from autosave."); _currentlyAutosaving.Remove(map); return; } @@ -79,7 +77,7 @@ public override void Update(float frameTime) var path = Path.Combine(saveDir, $"{DateTime.Now.ToString("yyyy-M-dd_HH.mm.ss")}-AUTO.yml"); _currentlyAutosaving[map] = (CalculateNextTime(), name); - _sawmill.Info($"Autosaving map {name} ({map}) to {path}. Next save in {ReadableTimeLeft(map)} seconds."); + Log.Info($"Autosaving map {name} ({map}) to {path}. Next save in {ReadableTimeLeft(map)} seconds."); _map.SaveMap(map, path); } } @@ -105,17 +103,17 @@ public void ToggleAutosave(MapId map, string? path=null) { if (!_mapManager.MapExists(map) || _mapManager.IsMapInitialized(map)) { - _sawmill.Warning("Tried to enable autosaving on non-existant or already initialized map!"); + Log.Warning("Tried to enable autosaving on non-existant or already initialized map!"); _currentlyAutosaving.Remove(map); return; } - _sawmill.Info($"Started autosaving map {path} ({map}). Next save in {ReadableTimeLeft(map)} seconds."); + Log.Info($"Started autosaving map {path} ({map}). Next save in {ReadableTimeLeft(map)} seconds."); } else { _currentlyAutosaving.Remove(map); - _sawmill.Info($"Stopped autosaving on map {map}"); + Log.Info($"Stopped autosaving on map {map}"); } } diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index eef9bcb8ecd..1012b9727df 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -39,15 +39,11 @@ public sealed partial class MechSystem : SharedMechSystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly UserInterfaceSystem _ui = default!; - private ISawmill _sawmill = default!; - /// public override void Initialize() { base.Initialize(); - _sawmill = Logger.GetSawmill("mech"); - SubscribeLocalEvent(OnInteractUsing); SubscribeLocalEvent(OnInsertBattery); SubscribeLocalEvent(OnMapInit); @@ -343,7 +339,7 @@ public override bool TryChangeEnergy(EntityUid uid, FixedPoint2 delta, MechCompo _battery.SetCharge(battery!.Value, batteryComp.CurrentCharge + delta.Float(), batteryComp); if (batteryComp.CurrentCharge != component.Energy) //if there's a discrepency, we have to resync them { - _sawmill.Debug($"Battery charge was not equal to mech charge. Battery {batteryComp.CurrentCharge}. Mech {component.Energy}"); + Log.Debug($"Battery charge was not equal to mech charge. Battery {batteryComp.CurrentCharge}. Mech {component.Energy}"); component.Energy = batteryComp.CurrentCharge; Dirty(component); } diff --git a/Content.Server/Movement/Systems/LagCompensationSystem.cs b/Content.Server/Movement/Systems/LagCompensationSystem.cs index 0576fe8f255..8496a8a9b90 100644 --- a/Content.Server/Movement/Systems/LagCompensationSystem.cs +++ b/Content.Server/Movement/Systems/LagCompensationSystem.cs @@ -18,12 +18,10 @@ public sealed class LagCompensationSystem : EntitySystem // Max ping I've had is 350ms from aus to spain. public static readonly TimeSpan BufferTime = TimeSpan.FromMilliseconds(750); - private ISawmill _sawmill = Logger.GetSawmill("lagcomp"); - public override void Initialize() { base.Initialize(); - _sawmill.Level = LogLevel.Info; + Log.Level = LogLevel.Info; SubscribeLocalEvent(OnLagMove); } @@ -87,13 +85,13 @@ private void OnLagMove(EntityUid uid, LagCompensationComponent component, ref Mo if (coordinates == default) { - _sawmill.Debug($"No long comp coords found, using {xform.Coordinates}"); + Log.Debug($"No long comp coords found, using {xform.Coordinates}"); coordinates = xform.Coordinates; angle = xform.LocalRotation; } else { - _sawmill.Debug($"Actual coords is {xform.Coordinates} and got {coordinates}"); + Log.Debug($"Actual coords is {xform.Coordinates} and got {coordinates}"); } return (coordinates, angle); diff --git a/Content.Server/NPC/Systems/NpcFactionSystem.cs b/Content.Server/NPC/Systems/NpcFactionSystem.cs index 3458025f193..a96067c5cf3 100644 --- a/Content.Server/NPC/Systems/NpcFactionSystem.cs +++ b/Content.Server/NPC/Systems/NpcFactionSystem.cs @@ -15,8 +15,6 @@ public sealed partial class NpcFactionSystem : EntitySystem [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly IPrototypeManager _protoManager = default!; - private ISawmill _sawmill = default!; - /// /// To avoid prototype mutability we store an intermediary data class that gets used instead. /// @@ -25,7 +23,7 @@ public sealed partial class NpcFactionSystem : EntitySystem public override void Initialize() { base.Initialize(); - _sawmill = Logger.GetSawmill("faction"); + SubscribeLocalEvent(OnFactionStartup); SubscribeLocalEvent(OnProtoReload); @@ -70,7 +68,7 @@ public void AddFaction(EntityUid uid, string faction, bool dirty = true) { if (!_protoManager.HasIndex(faction)) { - _sawmill.Error($"Unable to find faction {faction}"); + Log.Error($"Unable to find faction {faction}"); return; } @@ -91,7 +89,7 @@ public void RemoveFaction(EntityUid uid, string faction, bool dirty = true) { if (!_protoManager.HasIndex(faction)) { - _sawmill.Error($"Unable to find faction {faction}"); + Log.Error($"Unable to find faction {faction}"); return; } @@ -214,13 +212,13 @@ public void MakeFriendly(string source, string target) { if (!_factions.TryGetValue(source, out var sourceFaction)) { - _sawmill.Error($"Unable to find faction {source}"); + Log.Error($"Unable to find faction {source}"); return; } if (!_factions.ContainsKey(target)) { - _sawmill.Error($"Unable to find faction {target}"); + Log.Error($"Unable to find faction {target}"); return; } @@ -256,13 +254,13 @@ public void MakeHostile(string source, string target) { if (!_factions.TryGetValue(source, out var sourceFaction)) { - _sawmill.Error($"Unable to find faction {source}"); + Log.Error($"Unable to find faction {source}"); return; } if (!_factions.ContainsKey(target)) { - _sawmill.Error($"Unable to find faction {target}"); + Log.Error($"Unable to find faction {target}"); return; } diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index 47aad6a6036..f8d995b8a4b 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -64,8 +64,6 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem [Dependency] private readonly TransformSystem _transformSystem = default!; [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; - private ISawmill _sawmill = default!; - private const float ShuttleSpawnBuffer = 1f; private bool _emergencyShuttleEnabled; @@ -75,7 +73,6 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem public override void Initialize() { - _sawmill = Logger.GetSawmill("shuttle.emergency"); _emergencyShuttleEnabled = _configManager.GetCVar(CCVars.EmergencyShuttleEnabled); // Don't immediately invoke as roundstart will just handle it. Subs.CVar(_configManager, CCVars.EmergencyShuttleEnabled, SetEmergencyShuttleEnabled); @@ -391,7 +388,7 @@ private void AddCentcomm(StationCentcommComponent component) { if (component.MapEntity != null || component.Entity != null) { - _sawmill.Warning("Attempted to re-add an existing centcomm map."); + Log.Warning("Attempted to re-add an existing centcomm map."); return; } @@ -416,7 +413,7 @@ private void AddCentcomm(StationCentcommComponent component) if (string.IsNullOrEmpty(component.Map.ToString())) { - _sawmill.Warning("No CentComm map found, skipping setup."); + Log.Warning("No CentComm map found, skipping setup."); return; } @@ -491,7 +488,7 @@ private void AddEmergencyShuttle(EntityUid uid, StationEmergencyShuttleComponent if (shuttle == null) { - _sawmill.Error($"Unable to spawn emergency shuttle {shuttlePath} for {ToPrettyString(uid)}"); + Log.Error($"Unable to spawn emergency shuttle {shuttlePath} for {ToPrettyString(uid)}"); return; } diff --git a/Content.Server/StationEvents/EventManagerSystem.cs b/Content.Server/StationEvents/EventManagerSystem.cs index 8942bdaf500..261e8ca46dd 100644 --- a/Content.Server/StationEvents/EventManagerSystem.cs +++ b/Content.Server/StationEvents/EventManagerSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.GameTicking; using Content.Server.StationEvents.Components; using Content.Shared.CCVar; @@ -19,8 +19,6 @@ public sealed class EventManagerSystem : EntitySystem [Dependency] public readonly GameTicker GameTicker = default!; [Dependency] private readonly GlimmerSystem _glimmerSystem = default!; //Nyano - Summary: pulls in the glimmer system. - private ISawmill _sawmill = default!; - public bool EventsEnabled { get; private set; } private void SetEnabled(bool value) => EventsEnabled = value; @@ -28,8 +26,6 @@ public override void Initialize() { base.Initialize(); - _sawmill = Logger.GetSawmill("events"); - Subs.CVar(_configurationManager, CCVars.EventsEnabled, SetEnabled, true); } @@ -43,13 +39,13 @@ public string RunRandomEvent() if (randomEvent == null) { var errStr = Loc.GetString("station-event-system-run-random-event-no-valid-events"); - _sawmill.Error(errStr); + Log.Error(errStr); return errStr; } var ent = GameTicker.AddGameRule(randomEvent); var str = Loc.GetString("station-event-system-run-event",("eventName", ToPrettyString(ent))); - _sawmill.Info(str); + Log.Info(str); return str; } @@ -59,7 +55,7 @@ public string RunRandomEvent() public string? PickRandomEvent() { var availableEvents = AvailableEvents(); - _sawmill.Info($"Picking from {availableEvents.Count} total available events"); + Log.Info($"Picking from {availableEvents.Count} total available events"); return FindEvent(availableEvents); } @@ -71,7 +67,7 @@ public string RunRandomEvent() { if (availableEvents.Count == 0) { - _sawmill.Warning("No events were available to run!"); + Log.Warning("No events were available to run!"); return null; } @@ -94,7 +90,7 @@ public string RunRandomEvent() } } - _sawmill.Error("Event was not found after weighted pick process!"); + Log.Error("Event was not found after weighted pick process!"); return null; } @@ -118,7 +114,7 @@ private Dictionary AvailableEvents(bool { if (CanRun(proto, stationEvent, playerCount, currentTime)) { - _sawmill.Debug($"Adding event {proto.ID} to possibilities"); + Log.Debug($"Adding event {proto.ID} to possibilities"); result.Add(proto, stationEvent); } } diff --git a/Content.Server/VendingMachines/VendingMachineSystem.cs b/Content.Server/VendingMachines/VendingMachineSystem.cs index 9443b0b3948..b5fa611a396 100644 --- a/Content.Server/VendingMachines/VendingMachineSystem.cs +++ b/Content.Server/VendingMachines/VendingMachineSystem.cs @@ -41,13 +41,10 @@ public sealed class VendingMachineSystem : SharedVendingMachineSystem [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly AdvertiseSystem _advertise = default!; - private ISawmill _sawmill = default!; - public override void Initialize() { base.Initialize(); - _sawmill = Logger.GetSawmill("vending"); SubscribeLocalEvent(OnComponentMapInit); SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnBreak); @@ -86,7 +83,7 @@ private void OnVendingPrice(EntityUid uid, VendingMachineComponent component, re { if (!PrototypeManager.TryIndex(entry.ID, out var proto)) { - _sawmill.Error($"Unable to find entity prototype {entry.ID} on {ToPrettyString(uid)} vending."); + Log.Error($"Unable to find entity prototype {entry.ID} on {ToPrettyString(uid)} vending."); continue; } @@ -193,7 +190,7 @@ private void OnDoAfter(EntityUid uid, VendingMachineComponent component, DoAfter if (!TryComp(args.Args.Used, out var restockComponent)) { - _sawmill.Error($"{ToPrettyString(args.Args.User)} tried to restock {ToPrettyString(uid)} with {ToPrettyString(args.Args.Used.Value)} which did not have a VendingMachineRestockComponent."); + Log.Error($"{ToPrettyString(args.Args.User)} tried to restock {ToPrettyString(uid)} with {ToPrettyString(args.Args.Used.Value)} which did not have a VendingMachineRestockComponent."); return; } diff --git a/Content.Shared/Anomaly/SharedAnomalySystem.cs b/Content.Shared/Anomaly/SharedAnomalySystem.cs index 6cdcdf305bb..a3bb1e14679 100644 --- a/Content.Shared/Anomaly/SharedAnomalySystem.cs +++ b/Content.Shared/Anomaly/SharedAnomalySystem.cs @@ -35,8 +35,6 @@ public abstract class SharedAnomalySystem : EntitySystem [Dependency] protected readonly SharedPopupSystem Popup = default!; [Dependency] private readonly IRobustRandom _random = default!; - private ISawmill _sawmill = default!; - public override void Initialize() { base.Initialize(); @@ -45,8 +43,6 @@ public override void Initialize() SubscribeLocalEvent(OnAttacked); SubscribeLocalEvent(OnAnomalyThrowStart); SubscribeLocalEvent(OnAnomalyThrowEnd); - - _sawmill = Logger.GetSawmill("anomaly"); } private void OnInteractHand(EntityUid uid, AnomalyComponent component, InteractHandEvent args) @@ -98,7 +94,7 @@ public void DoAnomalyPulse(EntityUid uid, AnomalyComponent? component = null) component.NextPulseTime = Timing.CurTime + GetPulseLength(component) * variation; if (_net.IsServer) - _sawmill.Info($"Performing anomaly pulse. Entity: {ToPrettyString(uid)}"); + Log.Info($"Performing anomaly pulse. Entity: {ToPrettyString(uid)}"); // if we are above the growth threshold, then grow before the pulse if (component.Stability > component.GrowthThreshold) @@ -135,7 +131,7 @@ public void StartSupercriticalEvent(EntityUid uid) AdminLog.Add(LogType.Anomaly, LogImpact.High, $"Anomaly {ToPrettyString(uid)} began to go supercritical."); if (_net.IsServer) - _sawmill.Info($"Anomaly is going supercritical. Entity: {ToPrettyString(uid)}"); + Log.Info($"Anomaly is going supercritical. Entity: {ToPrettyString(uid)}"); var super = AddComp(uid); super.EndTime = Timing.CurTime + super.SupercriticalDuration; @@ -161,7 +157,7 @@ public void DoAnomalySupercriticalEvent(EntityUid uid, AnomalyComponent? compone Audio.PlayPvs(component.SupercriticalSound, uid); if (_net.IsServer) - _sawmill.Info($"Raising supercritical event. Entity: {ToPrettyString(uid)}"); + Log.Info($"Raising supercritical event. Entity: {ToPrettyString(uid)}"); var ev = new AnomalySupercriticalEvent(uid); RaiseLocalEvent(uid, ref ev, true); @@ -179,8 +175,9 @@ public void EndAnomaly(EntityUid uid, AnomalyComponent? component = null, bool s { // Logging before resolve, in case the anomaly has deleted itself. if (_net.IsServer) - _sawmill.Info($"Ending anomaly. Entity: {ToPrettyString(uid)}"); - AdminLog.Add(LogType.Anomaly, LogImpact.Extreme, $"Anomaly {ToPrettyString(uid)} went supercritical."); + Log.Info($"Ending anomaly. Entity: {ToPrettyString(uid)}"); + AdminLog.Add(LogType.Anomaly, supercritical ? LogImpact.High : LogImpact.Low, + $"Anomaly {ToPrettyString(uid)} {(supercritical ? "went supercritical" : "decayed")}."); if (!Resolve(uid, ref component)) return; diff --git a/Content.Shared/DeviceLinking/SharedDeviceLinkSystem.cs b/Content.Shared/DeviceLinking/SharedDeviceLinkSystem.cs index 2ac525d154d..83aa7085897 100644 --- a/Content.Shared/DeviceLinking/SharedDeviceLinkSystem.cs +++ b/Content.Shared/DeviceLinking/SharedDeviceLinkSystem.cs @@ -13,7 +13,6 @@ public abstract class SharedDeviceLinkSystem : EntitySystem [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - private ISawmill _sawmill = default!; public const string InvokedPort = "link_port"; @@ -25,7 +24,6 @@ public override void Initialize() SubscribeLocalEvent(OnSinkStartup); SubscribeLocalEvent(OnSourceRemoved); SubscribeLocalEvent(OnSinkRemoved); - _sawmill = Logger.GetSawmill("devicelink"); } #region Link Validation @@ -386,12 +384,12 @@ public void RemoveSinkFromSource( if (sourceComponent == null) { - _sawmill.Error($"Attempted to remove link between {ToPrettyString(sourceUid)} and {ToPrettyString(sinkUid)}, but the source component was missing."); + Log.Error($"Attempted to remove link between {ToPrettyString(sourceUid)} and {ToPrettyString(sinkUid)}, but the source component was missing."); sinkComponent!.LinkedSources.Remove(sourceUid); } else { - _sawmill.Error($"Attempted to remove link between {ToPrettyString(sourceUid)} and {ToPrettyString(sinkUid)}, but the sink component was missing."); + Log.Error($"Attempted to remove link between {ToPrettyString(sourceUid)} and {ToPrettyString(sinkUid)}, but the sink component was missing."); sourceComponent.LinkedPorts.Remove(sourceUid); } } diff --git a/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs b/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs index b070cee2831..29218f57198 100644 --- a/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs @@ -18,14 +18,10 @@ public sealed class ThirstSystem : EntitySystem [Dependency] private readonly MovementSpeedModifierSystem _movement = default!; [Dependency] private readonly SharedJetpackSystem _jetpack = default!; - private ISawmill _sawmill = default!; - public override void Initialize() { base.Initialize(); - _sawmill = Logger.GetSawmill("thirst"); - SubscribeLocalEvent(OnRefreshMovespeed); SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnRejuvenate); @@ -156,7 +152,7 @@ private void UpdateEffects(EntityUid uid, ThirstComponent component) return; default: - _sawmill.Error($"No thirst threshold found for {component.CurrentThirstThreshold}"); + Log.Error($"No thirst threshold found for {component.CurrentThirstThreshold}"); throw new ArgumentOutOfRangeException($"No thirst threshold found for {component.CurrentThirstThreshold}"); } } From cd0be961a109069a5abc2c062be0346765b4dfff Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:44:08 -0700 Subject: [PATCH 009/111] Mirror: Thrown soap/banana/(etc?) will fail to slip until it lands (#280) ## Mirror of PR #24494: [Thrown soap/banana/(etc?) will fail to slip until it lands](https://github.com/space-wizards/space-station-14/pull/24494) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `e061cb3f8c9dc8ddc26624ead2086dfb41465aae` PR opened by Errant-4 at 2024-01-25 00:04:36 UTC --- PR changed 1 files with 21 additions and 1 deletions. The PR had the following labels: - Status: Awaiting Changes ---

Original Body

> ## About the PR > Thrown objects can no longer slip until they have landed. For a succesful slip, the attacker must now calculate how to throw the soap in front of/on the target. If the target is chasing and very close, it might be more effective to drop the soap/banana rather than throw it, but then this choice is another decision that must be quickly made to carry out the slip (also you can mess that up and slip yourself) > > A "MISS" popup is displayed mostly just to communicate that this was not a glitch until players get used to the idea. This popup can be removed later if we don't want it > > I tested what I could think of, but might have missed something, more eyes would be good on this one > > fixes #18027 > > ## Why / Balance > Slips are too easy for how annoying (or potentially lethal) they are. Currently, slip throws are heavily slanted to succeed at short range, where they will nearly always hit. As the range increases, it becomes more and more possible to dodge. But it's basically impossible to _fail_ the attack, the question is, will the target be able to anticipate and slow down to dodge it. This change is intended to make thrown slips, especially at short range, difficult for the attacker too, not just the target. > > If the argument for the current state is that the target should git gud, why should that not also apply to the attacker? > > > (Also if we want to talk about what's "realistic", it also makes very little sense to yeet a banana peel at someone and have them fall over from that, unless one tacitly agrees that the attack automatically always hits right under their feet (yet keeps flying anyway) ) > > ## Media > > https://github.com/space-wizards/space-station-14/assets/35878406/9e548b2d-ab99-4cbf-98b8-9ecd7cd14711 > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > > Make sure to take this Changelog template out of the comment block in order for it to show up. > :cl: Errant > - tweak: Thrown objects can no longer slip while they are still in flight. >
Co-authored-by: SimpleStation14 --- Content.Shared/Slippery/SlipperySystem.cs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Slippery/SlipperySystem.cs b/Content.Shared/Slippery/SlipperySystem.cs index 1f602b9b52b..d20495cfa6c 100644 --- a/Content.Shared/Slippery/SlipperySystem.cs +++ b/Content.Shared/Slippery/SlipperySystem.cs @@ -1,9 +1,12 @@ using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.Inventory; +using Robust.Shared.Network; +using Content.Shared.Popups; using Content.Shared.StatusEffect; using Content.Shared.StepTrigger.Systems; using Content.Shared.Stunnable; +using Content.Shared.Throwing; using JetBrains.Annotations; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; @@ -30,6 +33,7 @@ public override void Initialize() SubscribeLocalEvent(HandleAttemptCollide); SubscribeLocalEvent(HandleStepTrigger); SubscribeLocalEvent(OnNoSlipAttempt); + SubscribeLocalEvent(OnThrownSlipAttempt); // as long as slip-resistant mice are never added, this should be fine (otherwise a mouse-hat will transfer it's power to the wearer). SubscribeLocalEvent>((e, c, ev) => OnNoSlipAttempt(e, c, ev.Args)); } @@ -52,6 +56,11 @@ private static void OnNoSlipAttempt(EntityUid uid, NoSlipComponent component, Sl args.Cancel(); } + private void OnThrownSlipAttempt(EntityUid uid, ThrownItemComponent comp, ref SlipCausingAttemptEvent args) + { + args.Cancelled = true; + } + private bool CanSlip(EntityUid uid, EntityUid toSlip) { return !_container.IsEntityInContainer(uid) @@ -68,6 +77,11 @@ private void TrySlip(EntityUid uid, SlipperyComponent component, EntityUid other if (attemptEv.Cancelled) return; + var attemptCausingEv = new SlipCausingAttemptEvent(); + RaiseLocalEvent(uid, ref attemptCausingEv); + if (attemptCausingEv.Cancelled) + return; + var ev = new SlipEvent(other); RaiseLocalEvent(uid, ref ev); @@ -107,7 +121,13 @@ public sealed class SlipAttemptEvent : CancellableEntityEventArgs, IInventoryRel } /// -/// This event is raised directed at an entity that CAUSED some other entity to slip (e.g., the banana peel). +/// Raised on an entity that is causing the slip event (e.g, the banana peel), to determine if the slip attempt should be cancelled. /// +/// If the slip should be cancelled +[ByRefEvent] +public record struct SlipCausingAttemptEvent (bool Cancelled); + +/// Raised on an entity that CAUSED some other entity to slip (e.g., the banana peel). +/// The entity being slipped [ByRefEvent] public readonly record struct SlipEvent(EntityUid Slipped); From a7923808070f0f11d1dafb66394cf07d0a6bd326 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:44:51 -0700 Subject: [PATCH 010/111] Mirror: Fix some invalid damage types (#288) ## Mirror of PR #26295: [Fix some invalid damage types](https://github.com/space-wizards/space-station-14/pull/26295) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `b34777177ca2b379c67fb5d0d117f95b8809f43e` PR opened by Tayrtahn at 2024-03-20 19:10:30 UTC --- PR changed 7 files with 8 additions and 8 deletions. The PR had the following labels: - No C# ---

Original Body

> > > > ## About the PR > > Corrected the names of a few damage types in various DamageTypeSpecifiers. > > ## Why / Balance > > This might have some balance implications, as a few things will be doing damage they didn't previously. > > - Space bears now do some blunt damage along with the usual slash. > - The Throngler does massive structural damage. > - RobustHarvest does a little heat damage to non-plants. > - Fresium does a bit of negative heat damage. > > All of these effects were presumably intended by the authors of various PRs that added them, but were nonfunctional due to using an invalid name. If it's decided that these additional damage types are undesired, they should just be removed instead of relying on a bug to ignore them. > > I also changed a few entries that were doing 0 damage in invalid types. They now do 0 damage in valid types, for whatever that's worth. > > ## Technical details > > I haven't figured out how to get the YAML linter to properly catch these issues, but I got it to spit out a list of these errors while messing around with it, so I figured I'd go ahead and fix them. > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > >
Co-authored-by: SimpleStation14 --- Resources/Prototypes/Entities/Mobs/NPCs/space.yml | 2 +- Resources/Prototypes/Entities/Objects/Tools/cowtools.yml | 2 +- Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml | 2 +- Resources/Prototypes/NPCs/Combat/melee.yml | 4 ++-- Resources/Prototypes/NPCs/utility_queries.yml | 2 +- Resources/Prototypes/Reagents/botany.yml | 2 +- Resources/Prototypes/Reagents/fun.yml | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml index 39460be3f3c..0a294805cfd 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml @@ -52,7 +52,7 @@ animation: WeaponArcClaw damage: types: - Brute: 5 + Blunt: 5 Slash: 10 - type: Tag tags: diff --git a/Resources/Prototypes/Entities/Objects/Tools/cowtools.yml b/Resources/Prototypes/Entities/Objects/Tools/cowtools.yml index ddd3592d49f..977a8a931b5 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/cowtools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/cowtools.yml @@ -14,7 +14,7 @@ wideAnimationRotation: -90 damage: types: - Pierce: 0 + Piercing: 0 attackRate: 2 - type: Tool qualities: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml index b9d6de85944..426be1386a9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml @@ -175,7 +175,7 @@ attackRate: 10 damage: types: - Structure: 150 + Structural: 150 Slash: 20 #Horror Blunt: 20 Heat: 20 diff --git a/Resources/Prototypes/NPCs/Combat/melee.yml b/Resources/Prototypes/NPCs/Combat/melee.yml index 282e794ee77..2facfaa5427 100644 --- a/Resources/Prototypes/NPCs/Combat/melee.yml +++ b/Resources/Prototypes/NPCs/Combat/melee.yml @@ -11,7 +11,7 @@ - type: MeleeWeapon damage: types: - Brute: 0 + Blunt: 0 invert: true tasks: - !type:HTNCompoundTask @@ -34,7 +34,7 @@ - type: MeleeWeapon damage: types: - Brute: 0 + Blunt: 0 invert: true tasks: - !type:HTNCompoundTask diff --git a/Resources/Prototypes/NPCs/utility_queries.yml b/Resources/Prototypes/NPCs/utility_queries.yml index d62e1a7e8cf..3d5385ecbcd 100644 --- a/Resources/Prototypes/NPCs/utility_queries.yml +++ b/Resources/Prototypes/NPCs/utility_queries.yml @@ -129,7 +129,7 @@ - type: MeleeWeapon damage: types: - Brute: 0 + Blunt: 0 - type: Item considerations: - !type:TargetMeleeCon diff --git a/Resources/Prototypes/Reagents/botany.yml b/Resources/Prototypes/Reagents/botany.yml index f6c55cf3946..a03c3826a4d 100644 --- a/Resources/Prototypes/Reagents/botany.yml +++ b/Resources/Prototypes/Reagents/botany.yml @@ -143,7 +143,7 @@ damage: types: Asphyxiation: 1 - Burn: 2 + Heat: 2 Poison: 1 Medicine: effects: diff --git a/Resources/Prototypes/Reagents/fun.yml b/Resources/Prototypes/Reagents/fun.yml index 9597627e876..befa8d82968 100644 --- a/Resources/Prototypes/Reagents/fun.yml +++ b/Resources/Prototypes/Reagents/fun.yml @@ -249,7 +249,7 @@ damage: types: Cold: 0.01 # slightly nips directly, other cold damage comes from the temp change - Burn: -3 # ghetto burn chem. i don't think anyone would use this intentionally but it's funny + Heat: -3 # ghetto burn chem. i don't think anyone would use this intentionally but it's funny - !type:PopupMessage conditions: - !type:ReagentThreshold From 3e66b812456209fa374eb9d4111f34238885c58d Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:45:54 -0700 Subject: [PATCH 011/111] Mirror: Split smoke grenade sound into two parts (#198) ## Mirror of PR #26095: [Split smoke grenade sound into two parts](https://github.com/space-wizards/space-station-14/pull/26095) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `696f97f78ecfb86e4483148588a52e39bf27073c` PR opened by Tayrtahn at 2024-03-13 23:58:41 UTC --- PR changed 4 files with 7 additions and 2 deletions. The PR had the following labels: - No C# ---

Original Body

> > > > ## About the PR > > Split Smoke-grenade.ogg into separate prime and detonate sounds. Also converted them from stereo to mono to stop client errors from playing a stereo sound at a position. > > ## Why / Balance > > Smoke-grenade.ogg covers both the priming sound and the sound of the smoke being released, separated by a few seconds of silence. This is inefficient, and inflexible for changing the fuse length. Separate sounds keep it better synchronized with the action. Additionally, the smoke release part played alongside smoke.ogg, which made a lot of noise. This swaps smoke.ogg for the smoke release part of Smoke-grenade.ogg so there aren't two overlapping sounds. > > ## Technical details > > I also moved the sounds from Audio/Effects to Audio/Items, since it seems more appropriate, and updated the attributions.yml files accordingly > > ## Media > > I don't have audio recording with my screen recording setup... > - [ ] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > Nah
Co-authored-by: SimpleStation14 --- Resources/Audio/Items/attributions.yml | 5 +++++ Resources/Audio/Items/smoke_grenade_prime.ogg | Bin 0 -> 6184 bytes Resources/Audio/Items/smoke_grenade_smoke.ogg | Bin 0 -> 40075 bytes .../Objects/Weapons/Throwable/grenades.yml | 4 ++-- 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 Resources/Audio/Items/smoke_grenade_prime.ogg create mode 100644 Resources/Audio/Items/smoke_grenade_smoke.ogg diff --git a/Resources/Audio/Items/attributions.yml b/Resources/Audio/Items/attributions.yml index 8942e41db23..e63b678ef81 100644 --- a/Resources/Audio/Items/attributions.yml +++ b/Resources/Audio/Items/attributions.yml @@ -102,3 +102,8 @@ license: "CC-BY-SA-3.0" copyright: "Taken from tgstation, modified by themias (github) for ss14" source: "https://github.com/tgstation/tgstation/tree/85a0925051bb00e7a950ee66cb7f87982cd22439/sound/effects/shovel_dig.ogg" + +- files: ["smoke_grenade_prime.ogg", "smoke_grenade_smoke.ogg"] + license: "CC0-1.0" + copyright: "Bhijn and Myr (github username deathride58)" + source: "https://github.com/space-wizards/space-station-14/pull/23476" diff --git a/Resources/Audio/Items/smoke_grenade_prime.ogg b/Resources/Audio/Items/smoke_grenade_prime.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1c6cbcd25ab32f7f468ea2be6a8ea091b41739a7 GIT binary patch literal 6184 zcmai22|UzY_rH^EENL(_N;PB~TSk;oo{%X9VHjB}!&t^r#@0qth7ht$(vZh8Lnd27 z@l=nJ3E5?&y;PKXTeNBY-x)p6)BpYdKkxhd+~1x1yXW3>?m6ds?mc&0Lqk2l0`T)m z`aO1!sCg;RZ#7~$B4HxeZoH8V9`Yif?wC)0xCgTkXjvBcuVU!WVw^&wVWis6# z5M-~s*A0rUYOaci9>D1!7y3v6XfhiI%~Uj5R8iA4(=f0)tikBktS({58JsFRBxlx* zO>s7R#x2-l_3Tt-j@5Jh<{>+I;1~7OurkT0IzL zhZM0-$5j*?cWrex+ko2)#bMxHar_Yt;27qw7ry;voP5hlrlCa8A|#DIq?EwEtdg!nzHB z4YcL87>#Q&+C;MUHHMLl*uvca`qYMO)WtC09BY0pc0DYc}2O1{8!|}ps(d=^yFzfHEFwy81=t3cbzpKRw25ZyLhMu46DYE zs?j{w1dLkHMk%zh1lmL^&F@^2PwUTsnGc)$ljwnR52sx7u`I7%cPMLnrBg>qX zj``X?`MP@wLo+xvCrY2yRLK2X3HQFCb6V*scFuo60%h00{)+C^J?Bk@nQrOFA?=d?;5HVS@&Msz8>*rLxHb zxTm?~Ui=dcGKo-K;xRx#E@SoLrB9}ya6Ao<0o*kWR-f&Yl9VA^eE_f>2>9CRn+FpC zN)J5Pr9D_+?u6EHQXvkaY2zv`fth>N};q;Cf-L;3X>kjQ3AHoCO%Sp)RO(iQy+dv zdWaEm9v_Q`)IcFE@Lc?T{cuh=z2X#~qtEBp@LQw!^>uy~)BFm4Z&N70zP7ii;dFiE z45Zed;x`%b`9`OkYQOM}W?E12+v|Fp8jI^s&$Pah?=+fe-^H)5Ki%{~L~XB|5yZ^2 zo9?f|U9UR*yuGHqJ$j}+rmr8g2-*%;AM{;7a**#r)GVP0@y(wKI0^ zl%#-TwEJrVd=^LFUz_7Mo?XFz-fnRH5)_2LBiO0&hp9%u?KO~avZ+o!DX9CS>|n%g zLChDc$q(_B4GOZ?jzVl8MA%U2wJFy$T)?zM0BOxBvHTS#3R zY&Q~JlYPTLfc4CA>@F!#CWYbHBV?I!o*OBmoGm0roT<7&eTn6&k;0AHBfj(+!42Om zr682q6gPOlQI^*%B0yGCWn4u&5|4{^A{l%2K_FL-*gDj3l|3A5S|BSPSIvopZ$ zUV>D+O4{sz)STEaOQL8?ri)l20Pl9m^;8l@y3rrR0ztajp3z zXSga7=}aowHxe%_AxB!kRY6wyq)20dub*>EJjz#IysEkuuLydb01DUPVVp>3TGS$< z@lThK!s|rBYr53@a-eXJ2#YEqT}1GUvKDe;Np->-ZY2)TtmvcMiju>cGA9cgtQCS?f2MF*j@co^sx9y$ox z789#zXP_Q5V5^T~xseQTsVI`84iDzOavCt7iyUHmYrqA~?;|@Ds0#QrY@DZ=ffCD^ zq*rqgTC^@6LV?%S=S#0^zG;K3OBI?q=|Cui)Lkv|H3Z-VT+j>gKB5D1Wq=K)63Qin zqNsg@X$^C@GitCD4Fn}Aigrj2-w=tqY3qRF34MRtvO0+#!V2BNjqmdGH{57hpOx#-ttNp1m^sKYuR2T{k%gXjM|ojK6oj_B7rGNbM-+R1RB!~1+gS?pscZD2=6Z` z`B>RZPC@P(D|RGY0-#vk3VG??3d$<{gB4UO;O)PoTZXBSo!xvye%h=OLd6sFl8$mvJUCmbhk}RZ8a4nx3qdb8XE>WRK~dJ^kBY=N^uo z_wI1RsD@_w`WH^qM(5K$8wX08jP^VEZ{B5c$odG{;^AKU?1dk8BgaaEhqZAp3-k48|cbcIxCd zoX!f|7vSHLa3#`m8`~ry2iMF)KPCq4Y0^(j+GaW1d%^cB^NVoh@BM@8ooW2nGkn_a zbf3+o2iJ@lJiB6T@^;~oWhXm}C$4t4POJC+*&H)s@*%5czfP+PkFhklA?KCaxz{uM z$gJpm%x^}U#@4EINW?vn`-a6!X`6k#D8Xd~c9h zUv8(qFD_8>uzvF1%5rW`giV+xb!U6*XywjOGsfij={4y+F`omEXqR&|qtJ5ZIiG_! zsg)i~rPH1jl+LXDqrRitxVq3OGOw}0~6*EaUa9g}=@7sKtz4Tl}5Zh?kaCTD+|out6& zkMhHX8Rz{~3ZF)$A1NuD)+z~_@cSyK|5EVA7kT|1<2W%Bxvg3w#5FJB#KrZW-n>)o z+W>%7t`~)P(%#h_F!veDqvhHpY8`n6Pbh%BOjEr^R6}v|;Hcik@`} z|4ZPKT|`x&7+Pnc8FA|Of!DSjL@OL+YK)@VhE zqe1%y)~(KXEFWZ3?><`bDoOEci@6u=EHzGN_~ce8Gnb{#J^LH%hhK8CnajgcxH{X+ zM-{hhoJl^SYVQ8A@m62LnJ=CZ(UHg{YwFWRU%pHS1xQx51cPh6Zp(k+s(Z4OG|bndE6hi{#q?5N$hQ|~!5cE!}=$8uHLLv-AirtPk-H2ph7 z6hWK4miOk+xs1}`cud9^YOT)&>6kZ4tKRIVPglK{)P3F;S|7jBLeDR$Gv%{cBG{Io zy*hpz^J?zh8Pfav(oRo;r2WV2Bu15U0}owlJwhI~>POpH+{_0y3_`FR|I$oO$CjS+ zq=iC(Q(3YU2z$^GlcYRu$`+UBa|wh`uZoDSB;ukV|j zhljWBU^dD_a!cno-qgg3)5zDgI{)fHn?4YlT1dTJd2rosPn}9j*~+_(4j`GPeaxfc zW%c*bhWO8kd(SL0m}~5~zrg@;UT4P+CC?9tX&bdga<37GjLcSp=5ddu(gV+ivwasF zHz47B+Icr>4rO~>ym%Ja+|ZQ+&hp@uv)VoxP$mmH&Z)*7XazP!k0rq+$ck7?c36~LmQRpw-B3-np`0(Pe#<|Q;jmD`VV9{*aPO?&^&N~qx<60 zwCKEkZ1l`lql0v`Z|KhhKjsqmdt)AKs u+UqafGY5umH)x6e(|#ab?L-I6i7|PNLDR&kqYaXG?jjP#kPp;`5dQ=1{7V4< literal 0 HcmV?d00001 diff --git a/Resources/Audio/Items/smoke_grenade_smoke.ogg b/Resources/Audio/Items/smoke_grenade_smoke.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7603869d1748f1e3dd23826c6af298318c9a54bb GIT binary patch literal 40075 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 Date: Sat, 11 May 2024 20:46:06 -0700 Subject: [PATCH 012/111] Mirror: Round start Ion storms (#223) ## Mirror of PR #26165: [Round start Ion storms](https://github.com/space-wizards/space-station-14/pull/26165) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `23e6d537a44d8aaea781462ce600292811ac4998` PR opened by Plykiya at 2024-03-16 01:37:52 UTC --- PR changed 1 files with 0 additions and 1 deletions. The PR had the following labels: - No C# ---

Original Body

> > > > ## About the PR > > Changed the earliest start for ion storms to be at shift start > > ## Why / Balance > > Ion storms rarely happen, and it adds more variety for borgs if it does happen early on, also Discord discussion... > https://discord.com/channels/310555209753690112/1218041638115348500 > > ## Technical details > > Changed earliestStart from 20 minutes to 0 minutes in the yml > > **Changelog** > > > > :cl: > - tweak: Ion storms now have a chance of happening from the start of shift.
Co-authored-by: SimpleStation14 --- Resources/Prototypes/GameRules/events.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index db99266cbaa..6812ca14f70 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -463,7 +463,6 @@ components: - type: StationEvent weight: 10 - earliestStart: 20 reoccurrenceDelay: 20 duration: 1 - type: IonStormRule From 4b53cdf5e5e2fdeb1becb2c19158288659bbb4b4 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:47:38 -0700 Subject: [PATCH 013/111] Mirror: fix eggsplosion (#218) ## Mirror of PR #26146: [fix eggsplosion](https://github.com/space-wizards/space-station-14/pull/26146) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `d87be642ee9ec81064eff22389705755ab557b54` PR opened by deltanedas at 2024-03-15 15:46:48 UTC --- PR changed 1 files with 2 additions and 1 deletions. The PR had the following labels: - No C# ---

Original Body

> ## About the PR > how does this shit not make yaml linter fail so many bugs have been caused by it > > ## Media > > ![15:49:11](https://github.com/space-wizards/space-station-14/assets/39013340/7a642926-4197-435c-a886-871808b59d7a) >
Co-authored-by: SimpleStation14 --- Resources/Prototypes/Recipes/Construction/Graphs/food/egg.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/food/egg.yml b/Resources/Prototypes/Recipes/Construction/Graphs/food/egg.yml index f5eea53bcc2..3c3bca2585a 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/food/egg.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/food/egg.yml @@ -15,7 +15,8 @@ completed: - !type:DamageEntity damage: - Blunt: 10 + types: + Blunt: 10 steps: # egg explodes some time after the water in it boils and increases pressure, guessing ~110C - minTemperature: 383 From 89d5d17770f0c2f16713c7506507218faf624dc5 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:51:14 -0700 Subject: [PATCH 014/111] Mirror: Fix borg charger error (#252) ## Mirror of PR #26230: [Fix borg charger error](https://github.com/space-wizards/space-station-14/pull/26230) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `29887636e5614f4f91b968107875722293f0c8b4` PR opened by Tayrtahn at 2024-03-18 12:52:09 UTC --- PR changed 1 files with 7 additions and 7 deletions. The PR had the following labels: ---

Original Body

> > > > ## About the PR > > Borg chargers can now charge borgs again. > > ## Why / Balance > > Bug fix. > > ## Technical details > > An oversight in #25871 caused ChargerSystem to call BatterySystem's SetCharge with the wrong EntityUid. > > SearchForBattery has been given another out argument which gives the found battery's uid so it can be passed to SetCharge. > > To the author of #25871: get better at testing your code! > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > :cl: > - fix: Cyborg recharging stations are able to charge cyborgs again.
Co-authored-by: SimpleStation14 --- .../Power/EntitySystems/ChargerSystem.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Content.Server/Power/EntitySystems/ChargerSystem.cs b/Content.Server/Power/EntitySystems/ChargerSystem.cs index b6b718455d8..db16dfa008e 100644 --- a/Content.Server/Power/EntitySystems/ChargerSystem.cs +++ b/Content.Server/Power/EntitySystems/ChargerSystem.cs @@ -6,7 +6,6 @@ using JetBrains.Annotations; using Robust.Shared.Containers; using System.Diagnostics.CodeAnalysis; -using System.Linq; using Content.Shared.Storage.Components; using Robust.Server.Containers; @@ -179,7 +178,7 @@ private CellChargerStatus GetStatus(EntityUid uid, ChargerComponent component) if (container.ContainedEntities.Count == 0) return CellChargerStatus.Empty; - if (!SearchForBattery(container.ContainedEntities.First(), out var heldBattery)) + if (!SearchForBattery(container.ContainedEntities[0], out _, out var heldBattery)) return CellChargerStatus.Off; if (Math.Abs(heldBattery.MaxCharge - heldBattery.CurrentCharge) < 0.01) @@ -199,27 +198,28 @@ private void TransferPower(EntityUid uid, EntityUid targetEntity, ChargerCompone if (component.Whitelist?.IsValid(targetEntity, EntityManager) == false) return; - if (!SearchForBattery(targetEntity, out var heldBattery)) + if (!SearchForBattery(targetEntity, out var batteryUid, out var heldBattery)) return; - _battery.SetCharge(targetEntity, heldBattery.CurrentCharge + component.ChargeRate * frameTime, heldBattery); + _battery.SetCharge(batteryUid.Value, heldBattery.CurrentCharge + component.ChargeRate * frameTime, heldBattery); // Just so the sprite won't be set to 99.99999% visibility if (heldBattery.MaxCharge - heldBattery.CurrentCharge < 0.01) { - _battery.SetCharge(targetEntity, heldBattery.MaxCharge, heldBattery); + _battery.SetCharge(batteryUid.Value, heldBattery.MaxCharge, heldBattery); } UpdateStatus(uid, component); } - private bool SearchForBattery(EntityUid uid, [NotNullWhen(true)] out BatteryComponent? component) + private bool SearchForBattery(EntityUid uid, [NotNullWhen(true)] out EntityUid? batteryUid, [NotNullWhen(true)] out BatteryComponent? component) { // try get a battery directly on the inserted entity if (!TryComp(uid, out component)) { // or by checking for a power cell slot on the inserted entity - return _powerCell.TryGetBatteryFromSlot(uid, out component); + return _powerCell.TryGetBatteryFromSlot(uid, out batteryUid, out component); } + batteryUid = uid; return true; } } From b872c15092b0d19feafd9788926a51b428a658bd Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 20:51:32 -0700 Subject: [PATCH 015/111] Mirror: Fix blunt melee weapon hitsound (#282) ## Mirror of PR #26286: [Fix blunt melee weapon hitsound](https://github.com/space-wizards/space-station-14/pull/26286) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `205edfe6d74c14b288fae27db7530e3bed4f5511` PR opened by Dutch-VanDerLinde at 2024-03-20 13:23:56 UTC --- PR changed 14 files with 36 additions and 0 deletions. The PR had the following labels: - No C# ---

Original Body

> > > > ## About the PR > most blunt weapons sounded like you're not doing any damage > > ## Why / Balance > quietly gibbing people is bad > > also helps #25929 partially > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > no
Co-authored-by: SimpleStation14 --- Resources/Prototypes/Entities/Mobs/base.yml | 2 ++ .../Entities/Objects/Specific/Hydroponics/tools.yml | 2 ++ .../Prototypes/Entities/Objects/Specific/Mech/mechs.yml | 2 ++ .../Prototypes/Entities/Objects/Tools/flashlights.yml | 3 ++- .../Prototypes/Entities/Objects/Tools/jaws_of_life.yml | 2 ++ Resources/Prototypes/Entities/Objects/Tools/tools.yml | 8 ++++++++ Resources/Prototypes/Entities/Objects/Tools/welders.yml | 4 ++++ .../Entities/Objects/Weapons/Melee/baseball_bat.yml | 2 ++ .../Prototypes/Entities/Objects/Weapons/Melee/cult.yml | 2 ++ .../Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml | 2 ++ .../Prototypes/Entities/Objects/Weapons/Melee/mining.yml | 2 ++ .../Entities/Objects/Weapons/Melee/sledgehammer.yml | 2 ++ .../Prototypes/Entities/Objects/Weapons/security.yml | 2 ++ .../Prototypes/Entities/Structures/Furniture/chairs.yml | 2 ++ 14 files changed, 36 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index d4e9a561c5e..ac9aabbeadb 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -102,6 +102,8 @@ - type: CombatMode - type: MeleeWeapon hidden: true + soundHit: + collection: MetalThud damage: groups: Brute: 5 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml index 00224fd3182..727c75c8794 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml @@ -106,6 +106,8 @@ types: Blunt: 8 Piercing: 2 # I guess you can stab it into them? + soundHit: + collection: MetalThud - type: Item sprite: Objects/Tools/Hydroponics/spade.rsi - type: Shovel diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml index 0e132541e1e..5a2587ff710 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml @@ -48,6 +48,8 @@ types: Blunt: 25 #thwack Structural: 20 + soundHit: + collection: MetalThud - type: Puller needsHands: false - type: InputMover diff --git a/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml b/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml index cbc42b7587f..d22e9190921 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml @@ -111,7 +111,8 @@ damage: types: Blunt: 10 - bluntStaminaDamageFactor: 2.0 # DeltaV - seclite is now a viable nonlethal takedown tool against unarmoured targets. + soundHit: + collection: MetalThud - type: Item sprite: Objects/Tools/seclite.rsi - type: PointLight diff --git a/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml b/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml index bb8545d91ff..8e2b7597970 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml @@ -47,6 +47,8 @@ damage: types: Blunt: 10 + soundHit: + collection: MetalThud - type: entity name: syndicate jaws of life diff --git a/Resources/Prototypes/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/Entities/Objects/Tools/tools.yml index c0a6a6a980d..f1bf2ff98e7 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/tools.yml @@ -114,6 +114,8 @@ damage: types: Blunt: 4.5 + soundHit: + collection: MetalThud - type: Tool qualities: - Anchoring @@ -151,6 +153,8 @@ damage: types: Blunt: 8 + soundHit: + collection: MetalThud - type: Tool qualities: - Prying @@ -504,6 +508,8 @@ damage: types: Blunt: 14 + soundHit: + collection: MetalThud - type: Item size: Normal sprite: Objects/Tools/shovel.rsi @@ -544,6 +550,8 @@ damage: types: Blunt: 7 + soundHit: + collection: MetalThud - type: Tool qualities: - Rolling diff --git a/Resources/Prototypes/Entities/Objects/Tools/welders.yml b/Resources/Prototypes/Entities/Objects/Tools/welders.yml index 42b16ba0538..9bf3f2e2cb9 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/welders.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/welders.yml @@ -47,6 +47,8 @@ params: variation: 0.250 volume: -12 + deactivatedSoundOnHitNoDamage: + collection: MetalThud activatedDamage: types: Heat: 8 @@ -70,6 +72,8 @@ damage: types: Blunt: 5 #i mean... i GUESS you could use it like that + soundHit: + collection: MetalThud - type: RefillableSolution solution: Welder - type: SolutionContainerManager diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml index b7fae7acede..8ba643a1155 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml @@ -13,6 +13,8 @@ types: Blunt: 10 Structural: 5 + soundHit: + collection: MetalThud - type: Wieldable - type: IncreaseDamageOnWield damage: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml index db24d3e2cd0..ecb6479de70 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml @@ -67,6 +67,8 @@ Blunt: 10 Slash: 10 Structural: 5 + soundHit: + collection: MetalThud - type: Wieldable - type: IncreaseDamageOnWield damage: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml index b46ee096336..93765ec40c3 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml @@ -21,6 +21,8 @@ Blunt: 5 Slash: 10 Structural: 10 + soundHit: + collection: MetalThud - type: Wieldable - type: IncreaseDamageOnWield damage: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml index eee65a1ca78..ccf45bf59aa 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml @@ -49,6 +49,8 @@ types: Blunt: 10 Slash: 5 + soundHit: + collection: MetalThud - type: Wieldable - type: IncreaseDamageOnWield damage: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sledgehammer.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sledgehammer.yml index e566f90968e..0c75015d9aa 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sledgehammer.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sledgehammer.yml @@ -13,6 +13,8 @@ types: Blunt: 10 Structural: 10 + soundHit: + collection: MetalThud - type: Wieldable - type: IncreaseDamageOnWield damage: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 15741609196..9ac737e9cbb 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -96,6 +96,8 @@ damage: types: Blunt: 20 + soundHit: + collection: MetalThud bluntStaminaDamageFactor: 1.5 - type: Item size: Normal diff --git a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml index a8534997f03..518ff2f066e 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml @@ -339,6 +339,8 @@ damage: types: Blunt: 8 + soundHit: + collection: MetalThud - type: Construction graph: Seat node: chairFolding From 7f3c8fdf2fc89c9c74b440e50b497800859248e1 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:02:02 -0700 Subject: [PATCH 016/111] Mirror: Recolor paper-stamp detective (#230) ## Mirror of PR #26194: [Recolor paper-stamp detective](https://github.com/space-wizards/space-station-14/pull/26194) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `0ea4c5ca7c6045e715446b50990bd08cc651bffe` PR opened by Awlod at 2024-03-16 22:18:06 UTC --- PR changed 1 files with 0 additions and 0 deletions. The PR had the following labels: - No C# - Changes: Sprites ---

Original Body

> > ![old-paper-stamp-detective](https://github.com/space-wizards/space-station-14/assets/159960340/e0f3e7fb-34ca-47c9-a4c1-b26e334b3ea4) > ![Paper-stamp-detective](https://github.com/space-wizards/space-station-14/assets/159960340/52c2d314-3c1b-4925-a171-eb7eaea3f9a2) > the old seal of the detective on paper has been changed to a new one > > > > > ## About the PR > Due to the fact that the color of the detective's seal has been changed. However, the printing on the paper has not been changed > > ## Media > > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > - The color of the detective's stamp on the paper has changed > > >
Co-authored-by: SimpleStation14 --- .../bureaucracy.rsi/paper_stamp-detective.png | Bin 115 -> 134 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/paper_stamp-detective.png b/Resources/Textures/Objects/Misc/bureaucracy.rsi/paper_stamp-detective.png index 097234f2830988431b5619c52ac14a5be7246de2..284d01c6ddde87ba24115678161abf805294ab03 100644 GIT binary patch delta 104 zcmV-u0GI!Bh5?WyVgYkfM?wIu&K&6g002NqL_t(oh3(M62>>7v#K3#ofOUvPSdsOg zFF||@0m(FwWg{d>(gSm}MB}}dL`Li=GUAS64`BD7Be1w6=?e?^u^e5v6OX?D0000< KMNUMnLSTYbVku$( delta 85 zcmV-b0IL6n0dtTfPdZ6NK~#90?a;vq05A;0K<$~8yHoNil)ejwqFX@5AW4!QSkTdU rK}SaHXk^44jXe;%{~QsEOOn1YCc7H#?r5V|00000NkvXXu0mjf9fl*3 From a34a1eb8d280f8abc7c2cbab9d4b7b30b5709cb0 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:02:18 -0700 Subject: [PATCH 017/111] Mirror: Small performance optimization. Don't do String.Trim() second time (#219) ## Mirror of PR #26161: [Small performance optimization. Don't do String.Trim() second time](https://github.com/space-wizards/space-station-14/pull/26161) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `3425444c5383f73c830f6299885e44cb4bcab46a` PR opened by CrafterKolyan at 2024-03-15 21:45:04 UTC --- PR changed 1 files with 1 additions and 1 deletions. The PR had the following labels: ---

Original Body

> ## About the PR > Super small performance optimization > > ## Technical details > Obvious change
Co-authored-by: SimpleStation14 --- Content.Server/Disposal/Tube/DisposalTubeSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Disposal/Tube/DisposalTubeSystem.cs b/Content.Server/Disposal/Tube/DisposalTubeSystem.cs index b7d8455d85e..20aa8b6d2c5 100644 --- a/Content.Server/Disposal/Tube/DisposalTubeSystem.cs +++ b/Content.Server/Disposal/Tube/DisposalTubeSystem.cs @@ -122,7 +122,7 @@ private void OnUiAction(EntityUid uid, DisposalRouterComponent router, SharedDis if (trimmed == "") continue; - router.Tags.Add(tag.Trim()); + router.Tags.Add(trimmed); } _audioSystem.PlayPvs(router.ClickSound, uid, AudioParams.Default.WithVolume(-2f)); From 371c2a5b01381f450a100c527249a7092b8cfa88 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:02:38 -0700 Subject: [PATCH 018/111] Mirror: Fix store refunds (#226) ## Mirror of PR #26173: [Fix store refunds](https://github.com/space-wizards/space-station-14/pull/26173) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `f8d023f286bdf1b38bb69349e1c474792a950f51` PR opened by metalgearsloth at 2024-03-16 11:25:11 UTC --- PR changed 1 files with 4 additions and 2 deletions. The PR had the following labels: ---

Original Body

> Index out of range + error log + cleaning up boughtentities. > > :cl: > - fix: Fix store refunds.
Co-authored-by: SimpleStation14 --- Content.Server/Store/Systems/StoreSystem.Ui.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index 207f0c7373d..281d8f57267 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -321,7 +321,7 @@ private void OnRequestRefund(EntityUid uid, StoreComponent component, StoreReque if (!component.RefundAllowed || component.BoughtEntities.Count == 0) return; - for (var i = component.BoughtEntities.Count; i >= 0; i--) + for (var i = component.BoughtEntities.Count - 1; i >= 0; i--) { var purchase = component.BoughtEntities[i]; @@ -330,7 +330,7 @@ private void OnRequestRefund(EntityUid uid, StoreComponent component, StoreReque component.BoughtEntities.RemoveAt(i); - if (_actions.TryGetActionData(purchase, out var actionComponent)) + if (_actions.TryGetActionData(purchase, out var actionComponent, logError: false)) { _actionContainer.RemoveAction(purchase, actionComponent); } @@ -338,6 +338,8 @@ private void OnRequestRefund(EntityUid uid, StoreComponent component, StoreReque EntityManager.DeleteEntity(purchase); } + component.BoughtEntities.Clear(); + foreach (var (currency, value) in component.BalanceSpent) { component.Balance[currency] += value; From 10f5e66cdb3c0d63c249df506c2019eb9a24811f Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:02:50 -0700 Subject: [PATCH 019/111] Mirror: Convert "IgnoreWeatherComponent" into "BlockWeatherComponent" (#220) ## Mirror of PR #26135: [Convert "IgnoreWeatherComponent" into "BlockWeatherComponent"](https://github.com/space-wizards/space-station-14/pull/26135) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `4aa72af574cc7a3370085fb70831fbde1df29077` PR opened by TheShuEd at 2024-03-15 09:30:10 UTC --- PR changed 10 files with 12 additions and 11 deletions. The PR had the following labels: ---

Original Body

> ## About the PR > inverting the logic of the component. Now inversely, tagging an entity with this component will cause it to block weather if it is attached to the floor. Previously, this conversely excluded the entity from weather checking, and only applied to trees on planets. > > It now blocks rain on walls, windows, airlocks. > > ## Why / Balance > 95% of the structures in the game should not block weather. Railings, tables, chairs, fences all logically allow water to pass through. We're making a map under rainy skies, and it's annoying. > ![image](https://github.com/space-wizards/space-station-14/assets/96445749/d383e2c1-17a3-4c83-8620-e558f3ba9b3c) > ![image](https://github.com/space-wizards/space-station-14/assets/96445749/f872d0ca-aac2-43b0-a2c4-ba0ed29443f5) > ![image](https://github.com/space-wizards/space-station-14/assets/96445749/4b225631-0ec6-45d7-911d-76aa35128b35) > > this will also be useful for the visual part of expeditions or something with planets when weather is added there in the future
Co-authored-by: SimpleStation14 --- ...reWeatherComponent.cs => BlockWeatherComponent.cs} | 4 ++-- Content.Shared/Weather/SharedWeatherSystem.cs | 11 +++-------- .../Prototypes/Entities/Objects/Decoration/flora.yml | 1 - .../Doors/Airlocks/base_structureairlocks.yml | 1 + .../Structures/Doors/MaterialDoors/material_doors.yml | 1 + .../Structures/Doors/SecretDoor/secret_door.yml | 1 + .../Entities/Structures/Doors/Shutter/shutters.yml | 1 + .../Entities/Structures/Furniture/bookshelf.yml | 1 + .../Prototypes/Entities/Structures/Walls/walls.yml | 1 + .../Prototypes/Entities/Structures/Windows/window.yml | 1 + 10 files changed, 12 insertions(+), 11 deletions(-) rename Content.Shared/Weather/{IgnoreWeatherComponent.cs => BlockWeatherComponent.cs} (51%) diff --git a/Content.Shared/Weather/IgnoreWeatherComponent.cs b/Content.Shared/Weather/BlockWeatherComponent.cs similarity index 51% rename from Content.Shared/Weather/IgnoreWeatherComponent.cs rename to Content.Shared/Weather/BlockWeatherComponent.cs index 8b8d004ee2a..2ca8ba1aaac 100644 --- a/Content.Shared/Weather/IgnoreWeatherComponent.cs +++ b/Content.Shared/Weather/BlockWeatherComponent.cs @@ -3,10 +3,10 @@ namespace Content.Shared.Weather; /// -/// This entity will be ignored for considering weather on a tile +/// This entity will block the weather if it's anchored to the floor. /// [RegisterComponent, NetworkedComponent] -public sealed partial class IgnoreWeatherComponent : Component +public sealed partial class BlockWeatherComponent : Component { } diff --git a/Content.Shared/Weather/SharedWeatherSystem.cs b/Content.Shared/Weather/SharedWeatherSystem.cs index c907137d840..45a2afe7cd9 100644 --- a/Content.Shared/Weather/SharedWeatherSystem.cs +++ b/Content.Shared/Weather/SharedWeatherSystem.cs @@ -19,13 +19,13 @@ public abstract class SharedWeatherSystem : EntitySystem [Dependency] private readonly MetaDataSystem _metadata = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; - private EntityQuery _ignoreQuery; + private EntityQuery _blockQuery; private EntityQuery _physicsQuery; public override void Initialize() { base.Initialize(); - _ignoreQuery = GetEntityQuery(); + _blockQuery = GetEntityQuery(); _physicsQuery = GetEntityQuery(); SubscribeLocalEvent(OnWeatherUnpaused); } @@ -57,13 +57,8 @@ public bool CanWeatherAffect( while (anchoredEnts.MoveNext(out var ent)) { - if (!_ignoreQuery.HasComponent(ent.Value) && - _physicsQuery.TryGetComponent(ent, out var body) && - body.Hard && - body.CanCollide) - { + if (_blockQuery.HasComponent(ent.Value)) return false; - } } return true; diff --git a/Resources/Prototypes/Entities/Objects/Decoration/flora.yml b/Resources/Prototypes/Entities/Objects/Decoration/flora.yml index a2dda827be7..f35d222d39c 100644 --- a/Resources/Prototypes/Entities/Objects/Decoration/flora.yml +++ b/Resources/Prototypes/Entities/Objects/Decoration/flora.yml @@ -38,7 +38,6 @@ description: Yep, it's a tree. abstract: true components: - - type: IgnoreWeather - type: SpriteFade - type: Clickable - type: Sprite diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index a185d453533..5fca0819984 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -147,6 +147,7 @@ - Airlock # This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor - type: PryUnpowered + - type: BlockWeather placement: mode: SnapgridCenter diff --git a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml index d3b8521a9bc..4b6f72de934 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml @@ -56,6 +56,7 @@ key: walls mode: NoSprite - type: Occluder + - type: BlockWeather - type: entity parent: BaseMaterialDoor diff --git a/Resources/Prototypes/Entities/Structures/Doors/SecretDoor/secret_door.yml b/Resources/Prototypes/Entities/Structures/Doors/SecretDoor/secret_door.yml index 154467213a7..2c54d3cd418 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/SecretDoor/secret_door.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/SecretDoor/secret_door.yml @@ -64,6 +64,7 @@ - type: ContainerContainer containers: battery-container: !type:Container + - type: BlockWeather - type: entity id: BaseSecretDoorAssembly diff --git a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml index 87fd8ef0106..e38ba1fd667 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml @@ -97,6 +97,7 @@ messagePerceivedByOthers: comp-window-knock interactSuccessSound: path: /Audio/Effects/glass_knock.ogg + - type: BlockWeather - type: entity id: ShuttersNormal diff --git a/Resources/Prototypes/Entities/Structures/Furniture/bookshelf.yml b/Resources/Prototypes/Entities/Structures/Furniture/bookshelf.yml index 86f6719f77e..792f0766799 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/bookshelf.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/bookshelf.yml @@ -68,3 +68,4 @@ - type: Construction graph: Bookshelf node: bookshelf + - type: BlockWeather diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml index a6b6b02361e..53d9a5224ef 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml @@ -49,6 +49,7 @@ price: 75 - type: RadiationBlocker resistance: 2 + - type: BlockWeather - type: entity parent: BaseWall diff --git a/Resources/Prototypes/Entities/Structures/Windows/window.yml b/Resources/Prototypes/Entities/Structures/Windows/window.yml index 03d7622a23c..fca0b975e98 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/window.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/window.yml @@ -88,6 +88,7 @@ sprite: Structures/Windows/cracks.rsi - type: StaticPrice price: 100 + - type: BlockWeather - type: entity id: WindowDirectional From 087681459d7e8410df108dd0e3008d0455897feb Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:04:58 -0700 Subject: [PATCH 020/111] Mirror: fix legally distinct visor man plush name. (#287) ## Mirror of PR #26299: [fix legally distinct visor man plush name.](https://github.com/space-wizards/space-station-14/pull/26299) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `b06d40e8531250b2e7e391ea02e5c17e219a343a` PR opened by PJB3005 at 2024-03-21 01:33:59 UTC --- PR changed 1 files with 1 additions and 1 deletions. The PR had the following labels: - No C# ---

Original Body

> am in vr. approved by real spaniard. > >
Co-authored-by: SimpleStation14 --- Resources/Prototypes/Entities/Objects/Fun/toys.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index 7d9de4ac3df..794af663539 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -1229,7 +1229,7 @@ - type: entity parent: BasePlushie id: ToyAmongPequeno - name: among pequeno + name: among pequeño description: sus! components: - type: Sprite From a734bca6bdc17e69e216414d93f797ab6fd84737 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:05:49 -0700 Subject: [PATCH 021/111] Mirror: Make fireaxe & shotgun cabinets destructible (#187) ## Mirror of PR #25962: [Make fireaxe & shotgun cabinets destructible](https://github.com/space-wizards/space-station-14/pull/25962) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `6574681bcb88e9c524b998c525d1980e88884e96` PR opened by Gyrandola at 2024-03-10 12:10:09 UTC --- PR changed 1 files with 19 additions and 1 deletions. The PR had the following labels: - No C# ---

Original Body

> > > > ## About the PR > > Makes fireaxe and shotgun cabinets destructible. > > ## Why / Balance > > Fixes #25525. > > ## Technical details > > Simply added the component to the fireaxe cabinet base entity. > Glass breaking sounds regardless of state. > Damage thresholds: > min: 200 > max: 300 (The axe will be destroyed as well). > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ![Screenshot 2024-03-10 123916](https://github.com/space-wizards/space-station-14/assets/62253058/2ef7f962-8bac-4f6d-b97e-99efc3205b86) > > ![Screenshot 2024-03-10 124912](https://github.com/space-wizards/space-station-14/assets/62253058/984b8d3d-d073-4fe8-a66f-b7db18b23725) > > > > ## Breaking changes > > > **Changelog** > > > :cl: > - add: Fireaxe and Shotgun cabinets can now be destroyed. > >
Co-authored-by: SimpleStation14 --- .../Structures/Wallmounts/fireaxe_cabinet.yml | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/fireaxe_cabinet.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/fireaxe_cabinet.yml index 070c6e526d4..acd865aa625 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/fireaxe_cabinet.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/fireaxe_cabinet.yml @@ -3,9 +3,27 @@ name: fire axe cabinet description: There is a small label that reads "For Emergency use only" along with details for safe use of the axe. As if. components: - - type: Damageable # adding destructible causes the entity inside to be deleted when the cabinet is destroyed :( + - type: Damageable damageContainer: Inorganic damageModifierSet: Glass + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 200 #20ish crowbar hits + behaviors: + - !type:EmptyAllContainersBehaviour + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + collection: MetalGlassBreak - type: MeleeSound soundGroups: Brute: From 3d0c9ff7f17c114a0795caa882d7dc84311eea03 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:06:23 -0700 Subject: [PATCH 022/111] Mirror: Add "Juice that makes you Weh" to moths eating Lizard plushies (#152) ## Mirror of PR #26003: [Add "Juice that makes you Weh" to moths eating Lizard plushies](https://github.com/space-wizards/space-station-14/pull/26003) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `6d1f07a375a5d3f973d279a5d356b1f185d07cd5` PR opened by SlamBamActionman at 2024-03-11 15:42:49 UTC PR merged by web-flow at 2024-03-11 23:05:25 UTC --- PR changed 1 files with 18 additions and 0 deletions. The PR had the following labels: - No C# ---

Original Body

> > > > ## About the PR > > > Eating a Lizard Plushie as a moth now also makes you consume 10u _Juice that makes you Weh_. > > ## Why / Balance > > > 10u was chosen for 2 reasons: > > - Just finding and eating a plushie shouldn't be as rewarding as having to go through the additional process of juicing the plushie. 10u Wehjuice lasts for 40 seconds, while 30u Wehjuice lasts for 2 minutes. See it as juicing the plushie gives a higher, purer yield. > - Each bite removes 5u of the food's reagents. Having 10u fiber, 30u Wehjuice would take a whole 8 bites to get through. 10 fiber, 10u Wehjuice takes 4 bites, which is more manageable. > > ## Technical details > > > Just edits the SolutionContainer for those plushies. Plushies can't be drawn/injected with a syringe. > > ## Media > > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > :cl: > - tweak: Moths eating lizard plushies will now start to Weh! >
Co-authored-by: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> --- .../Prototypes/Entities/Objects/Fun/toys.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index 794af663539..bf45a44582b 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -279,6 +279,15 @@ reagents: - ReagentId: JuiceThatMakesYouWeh Quantity: 30 + - type: SolutionContainerManager + solutions: + food: + maxVol: 20 + reagents: + - ReagentId: Fiber + Quantity: 10 + - ReagentId: JuiceThatMakesYouWeh + Quantity: 10 - type: entity parent: PlushieLizard @@ -322,6 +331,15 @@ reagents: - ReagentId: JuiceThatMakesYouWeh Quantity: 30 + - type: SolutionContainerManager + solutions: + food: + maxVol: 20 + reagents: + - ReagentId: Fiber + Quantity: 10 + - ReagentId: JuiceThatMakesYouWeh + Quantity: 10 - type: entity parent: BasePlushie From d3ad07a6c5e66fa6c56212dd073a03d68ae109d5 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:07:01 -0700 Subject: [PATCH 023/111] Mirror: Slimes can drink fourteenloko (#116) ## Mirror of PR #25889: [Slimes can drink fourteenloko](https://github.com/space-wizards/space-station-14/pull/25889) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `a846966515e3051c131f00dc56743c360a91766e` PR opened by Nimfar11 at 2024-03-06 21:30:38 UTC PR merged by web-flow at 2024-03-07 20:50:10 UTC --- PR changed 1 files with 4 additions and 0 deletions. The PR had the following labels: - No C# - Status: Needs Review ---

Original Body

> ## About the PR > > Slimes can drink FourteenLoko not 1 time or even 2, but as much as they want. Their stomachs can process this obscure slurry without harming their bodies. > > ## Why / Balance > > Strange finding legal poison, that way they'll have at least one consumer in them. Interesting feature for the slime people. > > ## Media > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > :cl: Nimfar11 > > - tweak: Slimes can now drink FourteenLoko without harming their bodies. >
Co-authored-by: Nim <128169402+Nimfar11@users.noreply.github.com> --- Resources/Prototypes/Reagents/Consumable/Drink/soda.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml b/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml index bcbd877ea87..63ae5b25d5b 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml @@ -162,6 +162,10 @@ Poison: effects: - !type:HealthChange + conditions: + - !type:OrganType + type: Slime + shouldHave: false damage: types: Poison: 1 From c89418d51de0e32e7b7dd55ed6de8ad5f6c2dd8b Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Sun, 12 May 2024 06:26:54 +0200 Subject: [PATCH 024/111] Vents Resprites (#399) # Vents Resprites This PR provide new sprites for Vents that in my opinion are more better looking with the up to date style then old TG. Those vents were first imported in Frontier Station in this PR: https://github.com/new-frontiers-14/frontier-station-14/pull/404 I am now importing it here as i will import a bunch of new/others sprites in the future. Also those vents sprites uses less space! --- # TODO - [x] Sprite Import. ---

Media

![image](https://github.com/Simple-Station/Einstein-Engines/assets/45297731/789f8a6e-66b2-4384-b519-27bdbb13be0b) _(Not Centered because i forgot the "NotRot" before testing)_

--- # Changelog :cl: - tweak: Better looking Vents Sprites! --- .../Structures/Piping/Atmospherics/unary.yml | 3 +++ .../Atmospherics/scrubber.rsi/meta.json | 17 ++++++----------- .../Atmospherics/scrubber.rsi/scrub_off.png | Bin 1002 -> 181 bytes .../Atmospherics/scrubber.rsi/scrub_on.png | Bin 20683 -> 468 bytes .../Atmospherics/scrubber.rsi/scrub_purge.png | Bin 7441 -> 514 bytes .../scrubber.rsi/scrub_welded.png | Bin 2012 -> 974 bytes .../Atmospherics/scrubber.rsi/scrub_wide.png | Bin 10949 -> 478 bytes .../Piping/Atmospherics/vent.rsi/meta.json | 14 +++++--------- .../Piping/Atmospherics/vent.rsi/vent_in.png | Bin 1595 -> 521 bytes .../Piping/Atmospherics/vent.rsi/vent_off.png | Bin 1117 -> 174 bytes .../Piping/Atmospherics/vent.rsi/vent_out.png | Bin 2926 -> 525 bytes .../Atmospherics/vent.rsi/vent_welded.png | Bin 1958 -> 243 bytes 12 files changed, 14 insertions(+), 20 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml index c2f8fa339da..06f2fb2d181 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml @@ -60,6 +60,7 @@ - type: Sprite drawdepth: FloorObjects sprite: Structures/Piping/Atmospherics/vent.rsi + noRot: true layers: - sprite: Structures/Piping/Atmospherics/pipe.rsi state: pipeHalf @@ -101,6 +102,7 @@ - type: Sprite drawdepth: FloorObjects sprite: Structures/Piping/Atmospherics/vent.rsi + noRot: true layers: - sprite: Structures/Piping/Atmospherics/pipe.rsi state: pipeHalf @@ -151,6 +153,7 @@ - type: Sprite drawdepth: FloorObjects sprite: Structures/Piping/Atmospherics/scrubber.rsi + noRot: true layers: - sprite: Structures/Piping/Atmospherics/pipe.rsi state: pipeHalf diff --git a/Resources/Textures/Structures/Piping/Atmospherics/scrubber.rsi/meta.json b/Resources/Textures/Structures/Piping/Atmospherics/scrubber.rsi/meta.json index 191aa398a96..6528705be2d 100644 --- a/Resources/Textures/Structures/Piping/Atmospherics/scrubber.rsi/meta.json +++ b/Resources/Textures/Structures/Piping/Atmospherics/scrubber.rsi/meta.json @@ -5,30 +5,25 @@ "y":32 }, "license":"CC-BY-SA-3.0", - "copyright":"Taken from https://github.com/tgstation/tgstation at commit 57cd1d59ca019dd0e7811ac451f295f818e573da", + "copyright":"Taken from https://github.com/ParadiseSS13/Paradise/", "states":[ { - "name":"scrub_off", - "directions": 4 + "name":"scrub_off" }, { - "name":"scrub_welded", - "directions": 4 + "name":"scrub_welded" }, { "name":"scrub_on", - "directions": 4, - "delays": [[0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08], [0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08], [0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08], [0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08]] + "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]] }, { "name": "scrub_purge", - "directions": 4, - "delays": [[0.2, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04], [0.2, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04], [0.2, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04], [0.2, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04]] + "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]] }, { "name": "scrub_wide", - "directions": 4, - "delays": [[0.2, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04], [0.2, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04], [0.2, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04], [0.2, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04]] + "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]] } ] } diff --git a/Resources/Textures/Structures/Piping/Atmospherics/scrubber.rsi/scrub_off.png b/Resources/Textures/Structures/Piping/Atmospherics/scrubber.rsi/scrub_off.png index efc173d893669b4ff418f61ae32ccd3d92ffd3fd..9752342e2d884ee73dd117145eba5ebf99de6d20 100644 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv{s5m4*8>L*L`FtRNlEGI>YAIG zp8E1c8z{wC666=m;PC858jus>>EaloF)=wo!a{+Ak;%Yr@d6VU* literal 1002 zcmVl*O7=|C$od|F^psYA>5N~k^Gx1;;@L+rKV59~AMS;!%@|!vqC^QL$mN*7D_!Ys>XLI~0{ z#TY}=G*neZUDpU92!a6L_whWBJkP1?dZj^FC;!PEkY(9ye}CWJJO~1+s$z0mFrH|3 zcOrYOQp!#en5`lR>*oLP6kG^l;gj2fyQxA-$#|jx7*8}(O75nL$!$TN=Xjon5W?o` zYZkw5{?Y)HWl5T*7CxS6hNBCbrs3@L5P-AOLz<>xIJ#gw(RLDPnm#I2ZPW#SVF0o$ zn7U8 zs;c7cyFCk=Pv-5rJ({MmpO21D@O>Ypl>Pnr`FWf5cg9~BfU+!^PQUWy%R|BW^RK@- zJ3Zv+_yhpo_qn;gvJ>ma4|zBoUD(28%ulV;pez2;8URq&wJkWq(FJ!?^$31*eTDD) z77h=Esjll*3-6l$WB`N^Hlp*KYnsNw=i6|elK{Ir5kiPo3+|e~Fa^ReB#yVazYhR- z|I4p5O=EMgA4?0rn<}){937wV@xvZUDS{xN*V{(xu+_r5;x8?Nd7dMs1mNcS%5E`$ zek{4UzM>yXwAPF#n(^ch`!D&vPoC$k7T+a*VG0ZegRP<{@H~&Is?b{7v7_S?n{#(l zWeXF4)|#rS@H~&AC|W-fcg0`21Hv%04;6DoQH1aN_TLzeF8KIikF(Q5wASprN$kVR zyi04VF8E7};9xM=s_PnK3~8FO^CqDmOO#T!FzxO{D5dDf(!z}~D`|+j;6K?6eZR@0 zZfvffd*P#Qtk>(Uyc=9M|JjqA_v1;DEbPaNqF~+c16Ix7_%}jMPEJlvPEJlvPEJl6 zsg3UjTloXhG-W#dYRBSun>^1u^9QVw@B9JJfjfVI^9MM8z-Iabq?EScv^k%bQgV5D z*=GI!;rC<7@4u~{ztkV#c^*os*5~uRUhh@@fG+sXAMn%#8|@F67a(YNK5vX^eL&h3 ze`yg^O1aQ*c_kC2dt96@o$8joSdAToHkhB Y0J!73`lX51o;L3hX96q z&3hw(Vw?pYk;M!Qe1}1p@p%4<6re?ho-U3d5$$KQ9|jpT5? z=z4ti8^g9|>#}cgz1nbZ&b4u>R``)m-mwnBy7MID+er z9q#$QvEg@_?$5GwKd$Is3;!T*#_{-;?Wf>)$9WHK1)I&!1CoEPRkC_GxG_ENW__~U z|IwNHf3`C!LhIjaJ20i45WX>woAuTYu6O^Vdw8Dr)=NLh-q*x>Yg+5BjA!;%vFJX# q>f2nt)I7pFf5WtU39_$$vA@d6EjuqUV;L|+89ZJ6T-G@yGywojw8-oL literal 20683 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 NE?>J;a?#?!{{!f+=`#QT diff --git a/Resources/Textures/Structures/Piping/Atmospherics/scrubber.rsi/scrub_purge.png b/Resources/Textures/Structures/Piping/Atmospherics/scrubber.rsi/scrub_purge.png index 75ba6d6de046aae288fa21c5aa213a07c35a64a6..e0e3e44556be0515c9fa3a7ff112d2f91c21ba8c 100644 GIT binary patch literal 514 zcmeAS@N?(olHy`uVBq!ia0vp^3xHUGgBeIJTG)IXNHG=%xjQkeJ16rJ$YDu$^mSxl z*x1kgCy^D%mk96)agB_Ol#-It)z$T5V(4aOn8?gvZe|LUv|*4E0#Y0$L4LviA%Njt z^WI3H7-xY;WHAE+-yslY6xHx*09q99>Eaj?;r=%4_PWCgJk3G3{{Me$c`$O9>7^}& zeGeEH_nq)--nk{#O8vOejqcP9;-?ez=doSZK4Eo28U;6Pw_EyVN16%GW!;8-xzX3! z>@*BKwlh@eRg1o1{kXQ_PNdh#9ZS4cycWovV}DuK!RcmZLVN211|bW^DIFy#C;nQw zths!^d>1R{YxSk7jDaB!9<$uyiJE!i0Kf1C2KOzm?k$|!mF#toVQ
  • NzZ5Ci2xw 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 literal 2012 zcmV<22P622P)jUdUwc5DOtN3XX%d(j|VVqxn|7HZ- zd|#CRs}WGI*RLv-iZbrvJZE)nol>c!eiMcvXM=>rC0#iQxSE9%B!7}5j7B3o&%?HD z0May7{PKAeMN}%4!u)^x8o6N@%6P|dc>dxg)oK;nw$&&!8VxqLws9PXKYsrWP17(8 zL(SK3F<$b+^+*dLNYj)wO|fm8!-IXYEK_Y9$013Q!u)qSKnQ{Bx^y}n9LG_M4M4Zs zB}o$1A=|dGEQ`&pZK5c`b=`?Dod)Clp699W2_Xo>Q2ov@4E2A@vdFTmF#oL%sMqUP z<#L(PXhfw_!Llq45B7oU&`XkpEXz1OJtYVNQ?GK=!x83C^AlIJ-9?RJ|d%MPtp3){9aO_NHcf^FOQzK?C&?C$Q8 zrYW0S+vItU>$=m}{sq71d8BEI5CY4xsMTtirb!rvn5GH9?(VMYYq?x5%zvu`gb)k{ zpBWB^SeC`BSFb3QO8CA{tJOl+bxw|t&~=?SjtPQ*i}PGX$#6JiF!((6G#KZXk#%x> zL>$M&ag46(T%2DU9LF)9=W#YjXti2gUS1aF|LQIv7Z@4h0KV@N1OcmS>zo`PvAVWS zwOR#y-oAN_5P~erSX`XS_AmIm-7Y7`M?8P=58Xmq=PzEWouS=s7vle_ z0}R6;2m$~;fBMMg);4h*s}WgUTPM$Rf*{~*kf=^3Niwa?U+`O&#mVszZ{NJ;$+815 z;rt*7@O>Wu+qOy5bYfw=3%5=I%d%Kret>D3EG#V0Y&Lna>=1^bIs+^&>EwA%sZ^p= zDzUn@uC^%CG+ADLFtKyo2jlzzn_Jr~F6sEbPpMQQ&vWJcX0u5U1jKR7&dv@(h{F7L zE`m`Mq3b&Rejfl`*J(5w!1WyWJdfdUNW0xu3zTi!gkgxT>qJpBmGL+E4-fXSZJS1; zL7Jv&*Xi|o42MI~G^N>WayCe))oQA*Mfh)Zz~0{8Fa3TWP1CR}i!@ECR;#3GN*IP* zoabsy`19nY&IDPOp=lcZet+sC@i_nDl0I?x@qM3_l@)a_kp0-)+C~ULuh%Qgf9D!t zSr$gbH0#bpS}v-fys-A=GA^J~u5qbEL5JGTrd^B+vDawEE z+u*EkWB28s^=-6pC*^&-TrS^wAMf}3eD8d~toeWXjL;l&%rVCtbIdWv9COSu$4`l$ z{x&$3KEQQd27}M)-SYASqA2=d`hZ#T|Ig_IX3am9K45cen^LKS5Mm-zoMjms8ynwE zAJFM^kXfP2%S)94m(!us>D-(D&L50>{*T{(V{>a;RbFHbP?n?Q^YOCvw?=~G2UK}p zCShBxmMV$u?Cemh)l^dUKDo&|BR~kDQp_?X4Jad@zj(>pH?P$@A%v>qYnsNpckiaP zeS-hlvuEmAx7#Jpb3T9isGR=v=~E65_SxLp22iQ=BK(E)0T<`F@_w48G#U+6qkFRK zDCLIiw9MzvLLU%Ckt&MF;>>V3RK~(}O8)tam)N#VwOYNGKH<*NnBzF)`E?#%8ZXOI za6K9lQnVl)m1P-@<4j}w1b>!ggkea#-6jk}(lo{MJmNT3{b@Fvs!xEb85ZHcQy-vd znyLZH!Uv%0^W*ve!!RZ)!m|Ch=mTVX&-3{8(L*lIbHXqrj$;6VAYf%>g&+tB!%z)~ zWmyb|!$SOp^#O8$`S9U`GG3Ob$7L$O#AwV4vg|%yn;b8ZzkmN;4S>`M6+t0=0Q^;h zOOiyDrcX~#)mk7s1x(D(S>WalW11$8<4oui9zT9OA>^8gK43H&VVb52qiVH^=Xv

    zbh};BH0AA^*AwOG!-IWH(^L{Q`OkITndk$g-cOFC+;Yzb*T$U<5_WfYmGMFd7MJwd z>I3A-3a;mOyWPh3ebO}L!NW&tDvX!NW&3Y|3^#0000adXIU6c)bD#GXn!dv0M9gAjMc5^UpmIN^LJN`?+M5^^HWmiSa=j_bmR?@_J+A z)1UjMKQEoR`e)$(yD^Jy%c@m1`Rn7-iNHJh<+s-Z(RBqUNJ|1pHGY$??dTlxwZybPYMelF{r5}E)5X3jwX literal 10949 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 diff --git a/Resources/Textures/Structures/Piping/Atmospherics/vent.rsi/meta.json b/Resources/Textures/Structures/Piping/Atmospherics/vent.rsi/meta.json index 0d11425210b..16ab91ee5c0 100644 --- a/Resources/Textures/Structures/Piping/Atmospherics/vent.rsi/meta.json +++ b/Resources/Textures/Structures/Piping/Atmospherics/vent.rsi/meta.json @@ -5,25 +5,21 @@ "y":32 }, "license":"CC-BY-SA-3.0", - "copyright":"Taken from https://github.com/BeeStation/BeeStation-Hornet at commit 4ccd79de285e79e504308bcd6fa5908d6b7685f7", + "copyright":"Taken from https://github.com/ParadiseSS13/Paradise/", "states":[ { - "name":"vent_off", - "directions" : 4 + "name":"vent_off" }, { - "name":"vent_welded", - "directions" : 4 + "name":"vent_welded" }, { "name":"vent_out", - "directions" : 4, - "delays":[ [ 0.08, 0.08, 0.08, 0.08 ], [ 0.08, 0.08, 0.08, 0.08 ], [ 0.08, 0.08, 0.08, 0.08 ], [ 0.08, 0.08, 0.08, 0.08 ] ] + "delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ] ] }, { "name":"vent_in", - "directions" : 4, - "delays":[ [ 0.08, 0.08, 0.08, 0.08 ], [ 0.08, 0.08, 0.08, 0.08 ], [ 0.08, 0.08, 0.08, 0.08 ], [ 0.08, 0.08, 0.08, 0.08 ] ] + "delays":[ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ] ] } ] } diff --git a/Resources/Textures/Structures/Piping/Atmospherics/vent.rsi/vent_in.png b/Resources/Textures/Structures/Piping/Atmospherics/vent.rsi/vent_in.png index cf1b050c0246a699f147b5c266fe21f404b4f2fe..2a7787aa4b749f9fa5bc77fcc8af755e859ce371 100644 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K56gZfHHf=`26kJKRuK$wBDDW z^Lcum7elPfK0DKgMt&>Sh<*6Q%yx9=zks*DuC&PTaz5P@ci<)exu5-YYszY~_|!QR zlLEr(?h0=ZbTHKT?cXu$FsD<;xu2zfdl}}P3IF_zZ_VFb)^EPgTe~DWM4fK6Kw~ literal 1595 zcmY*a3pmqj82^ux4Q13iIl@pO!#qz%bj*ebDO5riA@@rZ$&zNail|gt(q&st&!J@N zI4p#@9TcJxl4CBJ>)giJ^54#X)v4z^&-cCG<$b^3@ArPs_q^X_Pj}}vDq1Q40IYF! zaoi7$WO+v@LAD+r*a84b3a*a!Uc~!?`$s%Jh60!TwTxA^WSi<~Zat`#S>hHEV3Kw_ z;(=k2o0SPGu{;xGfn>km6DX|xrS6fIN*D{R(mh)dZrjvR5rY<;+DWxjy@vQz@N^;G zM_;pl=4$ow?2fa51493Tx`Rv9o6x0}@$vB|65oBOZkZR#Nif&idgX+Yu-%ILk9qRx z(TqoS)Bx`Uk#t(=xL0)-i~gc@9)<| zP&|d@Ji6>MNZr)8Y&|mG6GG!cfkQ2p$){#G`t3M1d-d6c4|yW@1x(8Mc=*VEWxzdH zv19%qy`6pkPzvZfF+M{?XjW+KH2rxePJi(Aqp^}5D5u)6Y^Ubpsj{Mtohu8o>4Tpd zGl&jv`(dLu*v2Xj0>R#QyfX?Yl~vKB$Wz3`6yQ{WjKPlN*ftC>~*0B_kB`a}{gROU2 zRS?MQz{PWLENEtA_vg{Z#zBp)Uh}}uvR^bkTv*rai%o-y1Z%geWqF$B*lyswVkfNT zyuvPJR*y_B0rr!z<&M^P{IT^;8YxB9rBza|H;e~H*;Jw=TI2bpwVtR|LZOhJVj2ai zc*ivueYy$fbt;Q1FNDWxQuI2j)bsfMFM54^q@{)Dt3MTjZD9lM;aQP4|ZzTOV*4!{k@bVz7+ zR)2Nvtxi&!`t{Px9!wx<^o2clZBK#Jn@#POa?Sy+H=l8R8m6*0^y+NICf09ut*fh} z2!Kldx$=!&=_|~|MBGo0(wwztOcKr{4ARFd4kQvJUS%(>!WappZA+s@lsg_@%E1pq zQJGQV5b+>jM)x3)n;?vQbWK{aQ1k9%0tlFYeuuOp03ZOhq%k-XO(p>n*ciM_otKp_ zU(|~h6g$3#e4UU5&`w$N7pDY9k$^Hq)$ diff --git a/Resources/Textures/Structures/Piping/Atmospherics/vent.rsi/vent_off.png b/Resources/Textures/Structures/Piping/Atmospherics/vent.rsi/vent_off.png index 6208c59db793f9026125288653ea9d2ffe249a05..e7634ef5a297809e7f84050ce18be45e3b2a3217 100644 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvp#Yx{*8>L*L`FvH>gtM#iE(mr znwy!bwGWf@C?{DK)Ap4~_Ta=biU978lFCMQT(C~z<`8Q3jeAjF};b%?cPN^FnM zoT&m#s}?SFT)1#yR{>+H_yR8R^rHvYGac4{u`ji?tzE;W!AVhp!C&H%6a&Mt_i{y6 T%<%_-rZRZC`njxgN@xNAJxMT* literal 1117 zcmV-j1fu(iP)3`LKn`vq_TpW_V8cRC6C)|GJva#o3Bnd>F}4ZG56GqDSjeHbUV3Q>gky{z>E1K@ccIOmaXrq$dB=NvO%oe5oM zQu;#!AcTNn7-)Am+8qvie$JQw`02BO_3q!hD_bo8^@T`%cM|#|yTC%8fiZ@eoZ%Z> z9{%#v&XU)^_}mX^B&JdJ*0M!D_d)81)CZ{rO!Fw}y=JZ-7y#FG(b(Ao09?O%1;78cgI=$Pw}1UB%ly~t z0YKmJc4z!A7! z)*l)Gns3z>c<{sbp)Oh-iPd>K3R&p~J^{9E!g!0FIZX?D;v&m9$A(KXd>FZ9p={P`-I1ws;iM(vLL@5QSn%j>cKe0!iw} zng!ICi}kft2q7|^1(MVcCJNT3*Jfk$L90|Vb-5N14{zaj-_QI@BRV@QVc+vyj}niT|CIn{psuaCL1b6xL3 zktJ%&4fyZc7OSeqc68=t&9P(1+WdtvVD?h}hFdzf8Sa#CV2exO-E%;yqS5pNQ}zSa zYX`X3G>YGN5IT3a7za%v6Y zFTXk~>DSa}-N}s!u-xNtx8_8gy+FXKz4oSga=gN`PJd)w^-P~_Ld1LF%B)(Q@L(Iq zic_^p=j|EiH58rj_V1YWi1SeJza)mp*PlNxEZ95ijI7_&pVl>I|2GIv_%CTc`@67% z!_Ti(rc=vb{1OiMrMpnAnEloLr{|w7y)TqyRQ}-C?mste%K8H)?_|FI{=-e1N~V8* zw*T4v`NZaySx+-FE5$z7o$J>Z_%yZPY=7kg<<{9 literal 2926 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 literal 1958 zcmV;X2U+-uP)t7RNt&s8b-6fX6pTG$1ZqY!68Wfq{v6+k@@pE))<-L-hcQ0g?=U1ADGX{iJN=y}|qfhA7J9_uO;OIrrXk4rIuX zAw!1Ci`={)A3S()D%U{}q<*PoS^E0bt5@FikVH0055T$mQvI zl<>depQ!*rr`-Zz`(_oTRQ$yNbUV8MRJLznSr$PM&}p|A^aHkUR+kcb7XQu{Ut-&K z;=b?u+A3tmTdkIsuhVX&;-9Mkr4+;AkbC!Q0932d3**ALu8Z&c`hE}u7=}Tw*F!0l zYLN5zi={Jj7M^i;knfJ;=t&q3hpG5yDj*1ggxPi4Eeylp!@H55ZQHi_`KKSXko9^U z%d)gpOcOROguh;|wHu@g;x$@jJKg+)ZfzV1JJvzJE%wWKpS9Xf~TEhdZ4=j%(L%;JPjl zS;jPefl?|J|6B$1`=3XC=Q!Hm0g5FHr4+qhk5(&MCBo4OVHg6ivAM-?IHceIe90kC z@>>=(8Vx?4=IFFr9PIC5jLcKwFFFT8JFHz}9PTDJJAlm@93Af_*Sf?~;HV{?l) zubXUaZlRP)Sb&i)P^;D0+q+l{h$9R`y%HJuLV_R8_A9RIE)@vpDxg$)PZ+Lizu&%D z)v>_$eZtWR)oN7-DbMrhc6RmBRVuwd*I?uPy&fDN9a1ir^(r*Z9|Qr8<0NL^EUu^G zpR0gwx2pq@_+C8f8u^0uK{$)R@#imsZnw*owa@tWyQjQ({tTrQN-4eS82JJ(fBTh3 zkDmZ%yF*#EF1!kurl~g;KtlU4xyk6XTdd{I)^5`@&%F_n=Z}vL@qM4KzWxT!^Cn~% zmq#{X;vOs62tl;0h!w=w{XsuqEf*cy)^d^QiD0Wj^W`tpb{^uoE{#S*^FDg~Br)q( zuIBY->CNkO%kNADNaR00I>d1t?Q4)YY3b|n9hnFkKbkIs_;XjT<_UrT+qNgpBerd0 z+qVAy@flylKi2{r$Ih+H$dDmJh76Yym;N-k zbbr8bIHXdkB#IuT(tEnyZlaj_srmy}&7Z12AYS7um&=JPORZK*eA>26qtQrRpHIs# z`F|Z~wC=_*l3qtW2-@DR`QmUe+Szhzmv`{Q7LPnXEzg;L2C#!Ki*sfGOi zSR{yLS-7sN%VS2qpaqc6%Jwatk{%A;E>)Xb1f>)~5D<<|uq;a#Mmy~mp6BuNPe1Cc zaAo@zhGAe?R_gAQg$f9QK&QFI3@yvTFbp87*}JZbkuR()5gLcMlaVjz?DKf4+w(lF zgb(jV0I8Fr3l$J=cd>1oK|jjR%S^~;92cnu&BCA`B&tEhlEuOPUZRHxB5PcxD6>!j zLMQ?hOO_TyqHf&eKc40$?p*|;%xTS1y1$kopy_Gbb{x3x?mcH zq2>>QfO@^YR4`l^1RckTHX>oDJ1+p;l_3a6CsCVhzM#o3+A1rsZ5y+=&T#OS5AQ~Q zTVqZ)WXY$r$gHGCNCqK?n(doax}9CEgdhm?F46Nm-M=Hfy5sLz7V?~!^>|-^^dA`c z0>?*(eEZ!~eBY<}@)xdL%@c+p#ges}{($%?>)!p^#A(bduH!h4Hv8kFLrl|LNq@l0 z-+rZ7vUKBBTp`i~Su9z+c>YZ93;63lpRPYZ8mHn-h~ww+jm@ppThX-qGUM@lK)GB^ s@XHAm(r<+?eMTrlh71`pWVpomFVlds1Eg$( Date: Sat, 11 May 2024 21:27:46 -0700 Subject: [PATCH 025/111] Mirror: Church Bells (#388) ## Mirror of PR #26030: [Church Bells](https://github.com/space-wizards/space-station-14/pull/26030) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `a0cc87c2673bc0930adafe9ab8650700d8ecf2e3` PR opened by SphiraI at 2024-03-12 08:33:08 UTC --- PR changed 9 files with 68 additions and 0 deletions. The PR had the following labels: - No C# - Changes: Sprites - Status: Awaiting Changes ---

    Original Body

    > > > > ## About the PR > - Adds a church bell to be used with station chapels > *idea and sprites by Kezu, proto/sounds put together by me.* > > > ## Why / Balance > "if the jani gets their jani light for convenience and rp, the chapel gets a church bell to signal for sermons" -Kezu > RP purposes, and to give something to chap similar to something like Clown's horn. Would let Chaps use it to get passerby's attention and whatnot. > > > ## Media > ![image](https://github.com/space-wizards/space-station-14/assets/145869023/565ced49-0eb7-4a34-a5e9-da06ec67aa29) > > **_There is a .ogg sound added, but I'm not sure how to make it play nice with git, please someone bwoink me with how_** > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > > > :cl: Sphiral&Kezu > - add: Added Church Bells! You may hear otherworldly chimes near your local chapel soon... >
    Co-authored-by: SimpleStation14 --- Resources/Audio/Effects/attributions.yml | 5 +++ Resources/Audio/Effects/church_bell1.ogg | Bin 0 -> 17616 bytes Resources/Audio/Effects/church_bell2.ogg | Bin 0 -> 17566 bytes Resources/Audio/Effects/church_bell3.ogg | Bin 0 -> 17108 bytes Resources/Audio/Effects/church_bell4.ogg | Bin 0 -> 16712 bytes .../Structures/Specific/church-bell.yml | 41 ++++++++++++++++++ .../SoundCollections/church_bell.yml | 7 +++ .../Specific/church-bell.rsi/church-bell.png | Bin 0 -> 2517 bytes .../Specific/church-bell.rsi/meta.json | 15 +++++++ 9 files changed, 68 insertions(+) create mode 100644 Resources/Audio/Effects/church_bell1.ogg create mode 100644 Resources/Audio/Effects/church_bell2.ogg create mode 100644 Resources/Audio/Effects/church_bell3.ogg create mode 100644 Resources/Audio/Effects/church_bell4.ogg create mode 100644 Resources/Prototypes/Entities/Structures/Specific/church-bell.yml create mode 100644 Resources/Prototypes/SoundCollections/church_bell.yml create mode 100644 Resources/Textures/Structures/Specific/church-bell.rsi/church-bell.png create mode 100644 Resources/Textures/Structures/Specific/church-bell.rsi/meta.json diff --git a/Resources/Audio/Effects/attributions.yml b/Resources/Audio/Effects/attributions.yml index a5f91ef10c6..90445a31d1c 100644 --- a/Resources/Audio/Effects/attributions.yml +++ b/Resources/Audio/Effects/attributions.yml @@ -93,6 +93,11 @@ license: Custom source: https://gdc.sonniss.com +- files: ["church_bell1.ogg", "church_bell2.ogg", "church_bell3.ogg", "church_bell4.ogg"] + copyright: '"the bell of my schools church.wav" by fonografico https://freesound.org/s/636113/". Pitch variations created via edits by Sphiral.' + license: "CC0-1.0" + source: https://freesound.org/people/fonografico/sounds/636113/? + - files: ["pop.ogg"] copyright: '"pop.ogg" by mirrorcult of GitHub.com' license: "CC0-1.0" diff --git a/Resources/Audio/Effects/church_bell1.ogg b/Resources/Audio/Effects/church_bell1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9713bd3d256d9b9b7fdc4e2b1d73200f105df7de GIT binary patch literal 17616 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 I{jCW8AG<2{Jpcdz literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/church_bell2.ogg b/Resources/Audio/Effects/church_bell2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1d0f58b74d1367d38cf7c8f8d8b85fc1033d6981 GIT binary patch literal 17566 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/church_bell4.ogg b/Resources/Audio/Effects/church_bell4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c6f6aab9ddbdc0611f274c971ffd60da8acf40cb GIT binary patch literal 16712 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 literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Entities/Structures/Specific/church-bell.yml b/Resources/Prototypes/Entities/Structures/Specific/church-bell.yml new file mode 100644 index 00000000000..837a7bc0b3d --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Specific/church-bell.yml @@ -0,0 +1,41 @@ +- type: entity + id: ChurchBell + name: church bell + description: You feel your soul grow ever closer to the realms beyond for every chime this bell tolls... + placement: + mode: SnapgridCenter + components: + - type: Transform + anchored: true + - type: Sprite + noRot: true + sprite: Structures/Specific/church-bell.rsi + layers: + - state: church-bell + - type: InteractionPopup + interactDelay: 1 + successChance: 1 + interactSuccessSound: + collection: ChurchBell + - type: Clickable + - type: Rotatable + - type: CollisionWake + enabled: false + - type: Physics + canCollide: false + bodyType: Static + - type: Fixtures + - type: InteractionOutline + - type: Damageable + damageContainer: Inorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + collection: MetalBreak diff --git a/Resources/Prototypes/SoundCollections/church_bell.yml b/Resources/Prototypes/SoundCollections/church_bell.yml new file mode 100644 index 00000000000..909bb9f4c4b --- /dev/null +++ b/Resources/Prototypes/SoundCollections/church_bell.yml @@ -0,0 +1,7 @@ +- type: soundCollection + id: ChurchBell + files: + - /Audio/Effects/church_bell1.ogg + - /Audio/Effects/church_bell2.ogg + - /Audio/Effects/church_bell3.ogg + - /Audio/Effects/church_bell4.ogg diff --git a/Resources/Textures/Structures/Specific/church-bell.rsi/church-bell.png b/Resources/Textures/Structures/Specific/church-bell.rsi/church-bell.png new file mode 100644 index 0000000000000000000000000000000000000000..dc95f2cdac126c14b7b93e1ed2c21076c1d4b0b7 GIT binary patch literal 2517 zcmV;`2`cu9P)Px;k4Z#9RCt`_nr&=T*BQruw+_xtjO~yY*GXI)$O=xOgqLKX(m{f?4K|IwNv*W> zOVoB#I;oo`?E_QAhkS{qNo?(h?ZaAis@lDLXiKMNlxcxLwMp~^+JUIMjCKYB)Xod` z#rBP3=j?-Xjcx4Y-W$gZ^)Frdp5t?#=Q+=P&U4Oro+Dub_te*l!n#XSamfs=+l?wS zo$8%6*zI;yH4VV*Y@AC|@v;h5DVS0KfY&KuZL*O}&X7=LKKY`YVpR^N%y!=`xT2)7+cRaaQzB6<6TV)#DNs%yWLN?3jZI6PYZ`>t zDPgr%GZt1+6cvZ*$z&WGJu3;T)d0w{1w~Oz`yf+dx7aNNBLYyf7T|Q)0mO1o1I+?A zdaAHmt4StjIH#DWcbCx)`!>166(yZ52P1+D6RLR$Od=Q&jD=N#5kZUHVw#R&1swTT zNGitgm61Tj9AJyxg4Zc=Z<7o_?gudn!wPtO767KA3Buv&>@yWj0I*}v{mW(vgFOzhW6%BcKi-r#1vCp7 zdcK#sbuEUKV8{Y&tqx-2Q2^q}+3cgip4`WkU_}yziHAQPt3m6{g6t3>IS?>>^M6QyEPm+jFl1j~zO3f=l zP7?}T#{c-vvRT1kk3;w$-$^KN8RVODJ$DM^`heJY6j%3J-Bz%u1=#EAS+UYebJuo) zBPU9>v)HRZ0aOdNM&rxTLa;SDh+U3>oW^3W$~%l{c;?ANJm0@9yBgT*>UGgxQ~|q& zj!P#G^omAb#`~vdLL}Acyf(3`8JC<6q)?gRFTXj$!O>`0&ITDeN5qZ?HX~Dut<{k? z1#;o_?*<@xCd96xwg9n2lu{WN&PXN@^)F4+|sj|wXk}B#|E0zHhLU65h;aFzL+${*Yrl{-M3zpatB{Y6x#=w#gZa<&C$OB@Mw3d z0C@9*@nu)Wqus6I!h~AX37Wx@6ySEdd9+&*l^D2&H$NDcI@dImZKt{9vp^*Wp9?K3 zwN%`3hanBJY(5a0i#t{U6VRZV5f@fq_cQmI&;Ef*U-D>--h zM&5g=Iv`tL2&1{XQgY?;SxmNKV&Nw4`fXB!+&2gq=2q< z_lQDAw-BFFvXvT(hPxJ;M^CeO2^67&1s+!6Ro$G}rmnKs#P3?W_ z+NQUj!f$RkFzs4O(5{Z?X0n9>x&9o}j6Y ztn!M{FUGr2zTEO>7pHDzBwHl0zPV1UZm1QqMG}xX)dBSTeWKs*E9xT-^!4QZcc8DQ z=zF;N86M)e51ZrC3IjY4nzLm@fFC@c( zK6g=CbJ>+ zA67cs%#bsLmCiOcaEU*ki}K?icJkNp6|~3Bv%-4o=0^_<9fq_^3Kpz%Jh7ckwoLb* z{d^mT;LNPN~F^b8fHdg{kAP%jY3B9?i=aLMAhl zhveR1xB^B_>NI>fM`$VbDPT`l<(qol?t<{lD%`e8k za1T%j-BUpG{tjRLEzEO~PS4T)#OAWD2EzlLqWy`@*_3=S*qUo``05R>2F9jbY@cMVN?)zKIVg(wF_-8lc7TVo}!Y7rQh5409uNCOF05ulHK|O1F*Ae>g zT8UPft7@7h*z5kQmwZXs>*{I#P8&7O^^00oOo`(1dFY{*(PO7{(buJbgQHPtkWa<_ zZEeiN5(_SMHzuzmC9Qn^$D@YQ)TOX%=(u!}Ug6jhFY5gA;U;!9&gijIx>NMJE#Tm2 zRBEX^F1G#P>&z;}1B?Jz;ltnmqpWH2T|>vEH=eprw14}4ZYbde+kW(i_YK`oFysWE zJ{*!>;(f8Ip|Rv00j-@8x_a=~%jcyxpz`+<7K#h(edIZ@dFMl7?<3Du Date: Sat, 11 May 2024 21:28:18 -0700 Subject: [PATCH 026/111] Mirror: Make parrots talk like parrots (#381) ## Mirror of PR #26340: [Make parrots talk like parrots](https://github.com/space-wizards/space-station-14/pull/26340) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `cd4eda44b88a75d7498efca42c464dd4c73c5684` PR opened by Tayrtahn at 2024-03-22 17:22:18 UTC --- PR changed 8 files with 168 additions and 0 deletions. The PR had the following labels: ---

    Original Body

    > > > > ## About the PR > > In the rare cases that parrot become controlled by players, they now sound a bit more parrot-y. > > - Added the parrot squawk sound as a speech sound, so they no longer speak silently. > - Gave parrots a speech verb set, so they "squawk", "tweet", and "chirp" their messages, instead of just "say"-ing them. > - Parrots can "scream" now (which just plays the squawk sound). > - Parrots have their own accent that gets applied to everything they say! It adds some random squawks to the beginnings and ends of messages. Sometimes they repeat the longest word in a message. RAAWK! Sometimes! > > ## Why / Balance > > There are a lot of animals, but very little that sets them apart from each other. This makes parrots a little more interesting (though there's plenty more to be done). > > And no, I've never seen a player-controlled parrot in the game either. But it could happen! And when it does, now it'll be cooler. > > ## Technical details > > Added a few components to the parrot entity prototype, and made EmoteSounds, SpeechSounds, and SpeechVerb for parrots. > > Added ParrotAccentComponent/System, which handle the accent. > > ## Media > > > https://github.com/space-wizards/space-station-14/assets/85356/a863f384-8244-4d03-b9bb-2c0394b44488 > > Sorry for the lack of audio; blame Apple. There are squawking noises whenever the parrot chats or screams. > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > :cl: > - add: Parrots now sound more like parrots when they talk. RAWWK!
    Co-authored-by: SimpleStation14 --- .../Components/ParrotAccentComponent.cs | 47 +++++++++++ .../EntitySystems/ParrotAccentSystem.cs | 79 +++++++++++++++++++ Resources/Locale/en-US/accent/parrot.ftl | 8 ++ .../en-US/chat/managers/chat-manager.ftl | 4 + .../Prototypes/Entities/Mobs/NPCs/animals.yml | 7 ++ .../Prototypes/Voice/speech_emote_sounds.yml | 7 ++ Resources/Prototypes/Voice/speech_sounds.yml | 9 +++ Resources/Prototypes/Voice/speech_verbs.yml | 7 ++ 8 files changed, 168 insertions(+) create mode 100644 Content.Server/Speech/Components/ParrotAccentComponent.cs create mode 100644 Content.Server/Speech/EntitySystems/ParrotAccentSystem.cs create mode 100644 Resources/Locale/en-US/accent/parrot.ftl diff --git a/Content.Server/Speech/Components/ParrotAccentComponent.cs b/Content.Server/Speech/Components/ParrotAccentComponent.cs new file mode 100644 index 00000000000..5c4e01527c0 --- /dev/null +++ b/Content.Server/Speech/Components/ParrotAccentComponent.cs @@ -0,0 +1,47 @@ +namespace Content.Server.Speech.Components; + +/// +/// Makes this entity speak like a parrot in all chat messages it sends. +/// +[RegisterComponent] +public sealed partial class ParrotAccentComponent : Component +{ + /// + /// Chance that a message will have a squawk sound added before the first character. + /// If it fails, the message with have a squawk as a postfix instead. + /// If the longest word is repeated, no pre- or postfix will be added. + /// + [DataField] + public float SquawkPrefixChance = 0.5f; + + /// + /// Chance that the longest word in the message will be repeated as an + /// exclamation at the end of the final message. + /// + [DataField] + public float LongestWordRepeatChance = 0.5f; + + /// + /// The longest word must be at least this many characters long to be + /// repeated. This prevents repeating short words, which can sound weird. + /// ex: "How are you? AWWK! How!" - bad + /// ex: "Look out, it's the captain! RAWWK! Captain!" - good + /// + [DataField] + public float LongestWordMinLength = 5; + + /// + /// Strings to use as squawking noises. + /// + public readonly string[] Squawks = [ + "accent-parrot-squawk-1", + "accent-parrot-squawk-2", + "accent-parrot-squawk-3", + "accent-parrot-squawk-4", + "accent-parrot-squawk-5", + "accent-parrot-squawk-6", + "accent-parrot-squawk-7", + "accent-parrot-squawk-8" + ]; + +} diff --git a/Content.Server/Speech/EntitySystems/ParrotAccentSystem.cs b/Content.Server/Speech/EntitySystems/ParrotAccentSystem.cs new file mode 100644 index 00000000000..10437c235d6 --- /dev/null +++ b/Content.Server/Speech/EntitySystems/ParrotAccentSystem.cs @@ -0,0 +1,79 @@ +using System.Linq; +using System.Text.RegularExpressions; +using Content.Server.Speech.Components; +using Robust.Shared.Random; + +namespace Content.Server.Speech.EntitySystems; + +public sealed partial class ParrotAccentSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAccentGet); + } + + private void OnAccentGet(Entity entity, ref AccentGetEvent args) + { + args.Message = Accentuate(entity, args.Message); + } + + public string Accentuate(Entity entity, string message) + { + // Sometimes repeat the longest word at the end of the message, after a squawk! SQUAWK! Sometimes! + if (_random.Prob(entity.Comp.LongestWordRepeatChance)) + { + // Don't count non-alphanumeric characters as parts of words + var cleaned = Regex.Replace(message, "[^A-Za-z0-9 -]", string.Empty); + // Split on whitespace and favor words towards the end of the message + var words = cleaned.Split(null).Reverse(); + // Find longest word + var longest = words.MaxBy(word => word.Length); + if (longest?.Length >= entity.Comp.LongestWordMinLength) + { + message = EnsurePunctuation(message); + + // Capitalize the first letter of the repeated word + longest = string.Concat(longest[0].ToString().ToUpper(), longest.AsSpan(1)); + + message = string.Format("{0} {1} {2}!", message, GetRandomSquawk(entity), longest); + return message; // No more changes, or it's too much + } + } + + if (_random.Prob(entity.Comp.SquawkPrefixChance)) + { + // AWWK! Sometimes add a squawk at the begining of the message + message = string.Format("{0} {1}", GetRandomSquawk(entity), message); + } + else + { + // Otherwise add a squawk at the end of the message! RAWWK! + message = EnsurePunctuation(message); + message = string.Format("{0} {1}", message, GetRandomSquawk(entity)); + } + + return message; + } + + /// + /// Adds a "!" to the end of the string, if there isn't already a sentence-ending punctuation mark. + /// + private string EnsurePunctuation(string message) + { + if (!message.EndsWith('!') && !message.EndsWith('?') && !message.EndsWith('.')) + return message + '!'; + return message; + } + + /// + /// Returns a random, localized squawk sound. + /// + private string GetRandomSquawk(Entity entity) + { + return Loc.GetString(_random.Pick(entity.Comp.Squawks)); + } +} diff --git a/Resources/Locale/en-US/accent/parrot.ftl b/Resources/Locale/en-US/accent/parrot.ftl new file mode 100644 index 00000000000..4d4e0dc7e3e --- /dev/null +++ b/Resources/Locale/en-US/accent/parrot.ftl @@ -0,0 +1,8 @@ +accent-parrot-squawk-1 = SQUAWK! +accent-parrot-squawk-2 = SQUAAAWK! +accent-parrot-squawk-3 = AWWK! +accent-parrot-squawk-4 = AAWK! +accent-parrot-squawk-5 = RAWWK! +accent-parrot-squawk-6 = RAAAWK! +accent-parrot-squawk-7 = BRAAWK! +accent-parrot-squawk-8 = BRAWWK! diff --git a/Resources/Locale/en-US/chat/managers/chat-manager.ftl b/Resources/Locale/en-US/chat/managers/chat-manager.ftl index a0cc5cf634c..fab815b4f90 100644 --- a/Resources/Locale/en-US/chat/managers/chat-manager.ftl +++ b/Resources/Locale/en-US/chat/managers/chat-manager.ftl @@ -109,6 +109,10 @@ chat-speech-verb-large-mob-2 = growls chat-speech-verb-monkey-1 = chimpers chat-speech-verb-monkey-2 = screeches +chat-speech-verb-parrot-1 = squawks +chat-speech-verb-parrot-2 = tweets +chat-speech-verb-parrot-3 = chirps + chat-speech-verb-cluwne-1 = giggles chat-speech-verb-cluwne-2 = guffaws chat-speech-verb-cluwne-3 = laughs diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index d56bab16455..380f7801710 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1866,6 +1866,13 @@ spawned: - id: FoodMeat amount: 1 + - type: Speech + speechSounds: Parrot + speechVerb: Parrot + - type: Vocal + sounds: + Unsexed: Parrot + - type: ParrotAccent - type: InteractionPopup successChance: 0.6 interactSuccessString: petting-success-bird diff --git a/Resources/Prototypes/Voice/speech_emote_sounds.yml b/Resources/Prototypes/Voice/speech_emote_sounds.yml index ee76fa33d2c..01fabbadf30 100644 --- a/Resources/Prototypes/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/Voice/speech_emote_sounds.yml @@ -380,3 +380,10 @@ sounds: Chirp: path: /Audio/Animals/nymph_chirp.ogg + +- type: emoteSounds + id: Parrot + sound: + path: /Audio/Animals/parrot_raught.ogg + params: + variation: 0.125 diff --git a/Resources/Prototypes/Voice/speech_sounds.yml b/Resources/Prototypes/Voice/speech_sounds.yml index eb47b5363b6..2e7e7bf989a 100644 --- a/Resources/Prototypes/Voice/speech_sounds.yml +++ b/Resources/Prototypes/Voice/speech_sounds.yml @@ -70,6 +70,15 @@ exclaimSound: path: /Audio/Animals/monkey_scream.ogg +- type: speechSounds + id: Parrot + saySound: + path: /Audio/Animals/parrot_raught.ogg + askSound: + path: /Audio/Animals/parrot_raught.ogg + exclaimSound: + path: /Audio/Animals/parrot_raught.ogg + - type: speechSounds id: Lizard saySound: diff --git a/Resources/Prototypes/Voice/speech_verbs.yml b/Resources/Prototypes/Voice/speech_verbs.yml index 1cdda32ece1..26e9370c017 100644 --- a/Resources/Prototypes/Voice/speech_verbs.yml +++ b/Resources/Prototypes/Voice/speech_verbs.yml @@ -113,6 +113,13 @@ - chat-speech-verb-monkey-1 - chat-speech-verb-monkey-2 +- type: speechVerb + id: Parrot + speechVerbStrings: + - chat-speech-verb-parrot-1 + - chat-speech-verb-parrot-2 + - chat-speech-verb-parrot-3 + - type: speechVerb id: Cluwne speechVerbStrings: From abe7f55db684608994d7b9144a2178af9d145d12 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:30:00 -0700 Subject: [PATCH 027/111] Mirror: Fix RUN_THIS.py so it would be cross-platform and it would be possible to use it from cmd on Windows (#153) ## Mirror of PR #26017: [Fix RUN_THIS.py so it would be cross-platform and it would be possible to use it from cmd on Windows](https://github.com/space-wizards/space-station-14/pull/26017) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `7ed94f8824d455cab2c712eb952312c4e8fd7c52` PR opened by CrafterKolyan at 2024-03-11 22:02:53 UTC PR merged by web-flow at 2024-03-12 00:02:41 UTC --- PR changed 1 files with 1 additions and 6 deletions. The PR had the following labels: - No C# ---

    Original Body

    > ## About the PR > I'm not sure why it was decided to do this weird setup with `py -3` on Windows cygwin when there's `sys.executable` which contains the full absolute path to the current python3 that executes the current script. > > ## Technical details > Everything works correctly: > ``` > Hooks need updating. > Copying hook post-checkout > Copying hook post-merge > $ git submodule update --init --recursive > Submodule 'RobustToolbox' (https://github.com/space-wizards/RobustToolbox.git) registered for path 'RobustToolbox' > Cloning into 'C:/Workspace/SpaceStation14/space-station-14/RobustToolbox'... > Submodule path 'RobustToolbox': checked out '2b6381c332793b6207db2d865234674f36824bbe' > Submodule 'Lidgren.Network' (https://github.com/space-wizards/lidgren-network-gen3.git) registered for path 'RobustToolbox/Lidgren.Network/Lidgren.Network' > Submodule 'NetSerializer' (https://github.com/space-wizards/netserializer) registered for path 'RobustToolbox/NetSerializer' > Submodule 'Robust.LoaderApi' (https://github.com/space-wizards/Robust.LoaderApi.git) registered for path 'RobustToolbox/Robust.LoaderApi' > Submodule 'XamlX' (https://github.com/space-wizards/XamlX) registered for path 'RobustToolbox/XamlX' > Submodule 'cefglue' (https://github.com/space-wizards/cefglue.git) registered for path 'RobustToolbox/cefglue' > Cloning into 'C:/Workspace/SpaceStation14/space-station-14/RobustToolbox/Lidgren.Network/Lidgren.Network'... > Cloning into 'C:/Workspace/SpaceStation14/space-station-14/RobustToolbox/NetSerializer'... > Cloning into 'C:/Workspace/SpaceStation14/space-station-14/RobustToolbox/Robust.LoaderApi'... > Cloning into 'C:/Workspace/SpaceStation14/space-station-14/RobustToolbox/XamlX'... > Cloning into 'C:/Workspace/SpaceStation14/space-station-14/RobustToolbox/cefglue'... > Submodule path 'RobustToolbox/Lidgren.Network/Lidgren.Network': checked out '45f89ca2639ec05d4700691a1160fccd79cb4c86' > Submodule path 'RobustToolbox/NetSerializer': checked out '7f51deaecab8498a8953f7fb3e551b9892c5dff4' > Submodule path 'RobustToolbox/Robust.LoaderApi': checked out '99a2f4b88077629f69fb66f74f50e88dbe43e0e8' > Submodule path 'RobustToolbox/XamlX': checked out 'dca5a5f8c2759b940a87449584724ec71aa0dd19' > Submodule path 'RobustToolbox/cefglue': checked out 'e265d67a21d0e526178f72326bd45f36d85ad6ca' > ```
    Co-authored-by: Nikolai Korolev --- RUN_THIS.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/RUN_THIS.py b/RUN_THIS.py index b7a8fcaa35e..6ea9f8e707d 100755 --- a/RUN_THIS.py +++ b/RUN_THIS.py @@ -5,14 +5,9 @@ import sys import subprocess -IS_WINDOWS = sys.platform in ("win32", "cygwin") - version = sys.version_info if version.major < 3 or (version.major == 3 and version.minor < 5): print("ERROR: You need at least Python 3.5 to build SS14.") sys.exit(1) -if IS_WINDOWS: - subprocess.run(["py", "-3", "git_helper.py"], cwd="BuildChecker") -else: - subprocess.run(["python3", "git_helper.py"], cwd="BuildChecker") +subprocess.run([sys.executable, "git_helper.py"], cwd="BuildChecker") From d3798519fc09f71d1ec203400feed108b6c6715e Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:30:25 -0700 Subject: [PATCH 028/111] Mirror: Fix barotrauma pressure protection (#256) ## Mirror of PR #26236: [Fix barotrauma pressure protection](https://github.com/space-wizards/space-station-14/pull/26236) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `db81438d30f83a542abe6c81c2ce4a5040aa3ddb` PR opened by PJB3005 at 2024-03-18 15:16:25 UTC --- PR changed 1 files with 4 additions and 2 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > Oops > > In #26217 I re-organized the logic for the calculation. Part of that was moving the logic for GetFeltLowPressure and GetFeltHighPressure to be done before we actually check the hazard thresholds. What I didn't realize is that, with how our pressure protection is set up, these functions can return values so extreme they rebound into the other category. > > For example, according to the math, when you're wearing a hardsuit in a low-pressure environment you have "felt" pressure of 1000 kPa. Yeah that's not right. > > Now these functions clamp their result to OneAtmosphere, in the appropriate direction (101.3 kPa). > > Fixes #26234 > > :cl: > - fix: Fixed hardsuits in space causing high pressure damage
    Co-authored-by: SimpleStation14 --- Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs index 023ac287634..fc77a1c8d94 100644 --- a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs +++ b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs @@ -149,7 +149,8 @@ public float GetFeltLowPressure(EntityUid uid, BarotraumaComponent barotrauma, f return Atmospherics.OneAtmosphere; } - return (environmentPressure + barotrauma.LowPressureModifier) * (barotrauma.LowPressureMultiplier); + var modified = (environmentPressure + barotrauma.LowPressureModifier) * (barotrauma.LowPressureMultiplier); + return Math.Min(modified, Atmospherics.OneAtmosphere); } /// @@ -162,7 +163,8 @@ public float GetFeltHighPressure(EntityUid uid, BarotraumaComponent barotrauma, return Atmospherics.OneAtmosphere; } - return (environmentPressure + barotrauma.HighPressureModifier) * (barotrauma.HighPressureMultiplier); + var modified = (environmentPressure + barotrauma.HighPressureModifier) * (barotrauma.HighPressureMultiplier); + return Math.Max(modified, Atmospherics.OneAtmosphere); } public bool TryGetPressureProtectionValues( From ce7eea355015b1e28a46eeab5e17dc224a15f0b6 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 12 May 2024 04:31:37 +0000 Subject: [PATCH 029/111] Automatic Changelog Update (#399) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index dfdbfa45110..69a5a67bc06 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4054,3 +4054,9 @@ Entries: victims when colliding with them. id: 6107 time: '2024-05-11T01:23:00.0000000+00:00' +- author: FoxxoTrystan + changes: + - type: Tweak + message: Better looking Vents Sprites! + id: 6108 + time: '2024-05-12T04:26:55.0000000+00:00' From 959dca1df710fe85d47b89e5f2554e63a7504c47 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:32:55 -0700 Subject: [PATCH 030/111] Mirror: add decoy syndicate bomb to uplink (#236) ## Mirror of PR #26034: [add decoy syndicate bomb to uplink](https://github.com/space-wizards/space-station-14/pull/26034) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `90be67e67956c7dd0348ddd0688d7d3ab614cb99` PR opened by Ilya246 at 2024-03-12 10:07:47 UTC --- PR changed 3 files with 26 additions and 1 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > adds a decoy syndicate bomb to uplink for 4 TC > in all ways similar to a real syndicate bomb, but only explodes as hard as a training bomb > > price has been discussed on discord several times and seems good > > *also fixes syndicate bomb description saying their timer is 120 seconds, when it's actually 180 > > ## Why / Balance > a lesser distraction (no huge hole and dead people if it blows) for a lesser price, and allows syndicate bombs to be more effective for more TC if you buy one together with decoy bombs to draw attention > why 4 TC? anything above that just doesn't seem like it'd be worth it; yes, a syndicate bomb will likely cause nearby people to vacate the place, but it will also draw at least one person to go defuse it and you will be very sus if you're spotted nearby and aren't defusing > > ## Media > > ![image](https://github.com/space-wizards/space-station-14/assets/57039557/1b619411-cdd4-4f53-972c-7b9704bbd4b5) > ![image](https://github.com/space-wizards/space-station-14/assets/57039557/373dd1b2-ba85-4c14-b219-a8e71e11142d) > ![image](https://github.com/space-wizards/space-station-14/assets/57039557/c6488260-2f35-4a77-9f4b-c769c71899a1) > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > > > :cl: > - add: Syndicate decoy bombs may now be purchased from the uplink. > - fix: Syndicate bomb description no longer lies about their minimum detonation time. >
    Co-authored-by: SimpleStation14 --- Resources/Locale/en-US/store/uplink-catalog.ftl | 5 ++++- Resources/Prototypes/Catalog/uplink_catalog.yml | 10 ++++++++++ .../Entities/Structures/Machines/bombs.yml | 12 ++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index e8340394297..70eb998bb40 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -64,7 +64,10 @@ uplink-exploding-pen-name = Exploding pen uplink-exploding-pen-desc = A class IV explosive device contained within a standard pen. Comes with a 4 second fuse. uplink-exploding-syndicate-bomb-name = Syndicate Bomb -uplink-exploding-syndicate-bomb-desc = A big, anchored bomb that can create a huge explosion if not defused in time. Useful as a distraction. Has an adjustable timer with a minimum setting of 120 seconds. +uplink-exploding-syndicate-bomb-desc = A big, anchored bomb that can create a huge explosion if not defused in time. Useful as a distraction. Has an adjustable timer with a minimum setting of 180 seconds. + +uplink-exploding-syndicate-bomb-fake-name = Decoy Syndicate Bomb +uplink-exploding-syndicate-bomb-fake-desc = A training bomb carefully made to look just like the real thing. In all ways similar to a syndicate bomb, but only creates a tiny explosion. uplink-cluster-grenade-name = Cluster Grenade uplink-cluster-grenade-desc = Three explosive grenades bundled together, the grenades get launched after the 3.5 second timer runs out. diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 21627a46188..7f64ebbd23c 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -254,6 +254,16 @@ tags: - NukeOpsUplink +- type: listing + id: UplinkSyndicateBombFake + name: uplink-exploding-syndicate-bomb-fake-name + description: uplink-exploding-syndicate-bomb-fake-desc + productEntity: SyndicateBombFake + cost: + Telecrystal: 4 + categories: + - UplinkExplosives + - type: listing id: UplinkClusterGrenade name: uplink-cluster-grenade-name diff --git a/Resources/Prototypes/Entities/Structures/Machines/bombs.yml b/Resources/Prototypes/Entities/Structures/Machines/bombs.yml index 580253f1189..89cadab6b1f 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/bombs.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/bombs.yml @@ -127,6 +127,18 @@ intensitySlope: 3 maxIntensity: 400 +- type: entity + parent: SyndicateBomb + id: SyndicateBombFake + suffix: fake + components: + - type: Explosive + explosionType: Default + totalIntensity: 5.0 + intensitySlope: 5 + maxIntensity: 4 + canCreateVacuum: false + - type: entity parent: SyndicateBomb id: DebugHardBomb From 3b2eb1348ebf819751d15d36a544a82a717307da Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:33:33 -0700 Subject: [PATCH 031/111] Mirror: SlowContactsSystem to SpeedModifierContactsSystem mini rework (#235) ## Mirror of PR #26110: [SlowContactsSystem to SpeedModifierContactsSystem mini rework](https://github.com/space-wizards/space-station-14/pull/26110) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `c35ff87e146f0cda7c10782f4ab80b784b51e5fe` PR opened by TheShuEd at 2024-03-14 09:45:33 UTC --- PR changed 9 files with 42 additions and 34 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > ## About the PR > system and components are renamed. It can now be used including to accelerate entities > > ## Why / Balance > more reusability for the system > > ## Technical details > Now the system calculates the arithmetic mean of all the entities that affects your speed.
    Co-authored-by: SimpleStation14 --- .../TileReactions/SpillTileReaction.cs | 4 +- .../Fluids/EntitySystems/PuddleSystem.cs | 8 ++-- ....cs => SpeedModifiedByContactComponent.cs} | 2 +- ...t.cs => SpeedModifierContactsComponent.cs} | 4 +- .../Systems/FrictionContactsSystem.cs | 2 +- ...stem.cs => SpeedModifierContactsSystem.cs} | 46 +++++++++++-------- .../Entities/Objects/Misc/kudzu.yml | 6 +-- .../Entities/Objects/Misc/spider_web.yml | 2 +- Resources/Prototypes/Entities/Tiles/water.yml | 2 +- 9 files changed, 42 insertions(+), 34 deletions(-) rename Content.Shared/Movement/Components/{SlowedByContactComponent.cs => SpeedModifiedByContactComponent.cs} (80%) rename Content.Shared/Movement/Components/{SlowContactsComponent.cs => SpeedModifierContactsComponent.cs} (83%) rename Content.Shared/Movement/Systems/{SlowContactsSystem.cs => SpeedModifierContactsSystem.cs} (59%) diff --git a/Content.Server/Chemistry/TileReactions/SpillTileReaction.cs b/Content.Server/Chemistry/TileReactions/SpillTileReaction.cs index 49fdaa5c7ee..8f8b0626a28 100644 --- a/Content.Server/Chemistry/TileReactions/SpillTileReaction.cs +++ b/Content.Server/Chemistry/TileReactions/SpillTileReaction.cs @@ -45,9 +45,9 @@ public FixedPoint2 TileReact(TileRef tile, ReagentPrototype reagent, FixedPoint2 var step = entityManager.EnsureComponent(puddleUid); entityManager.EntitySysManager.GetEntitySystem().SetRequiredTriggerSpeed(puddleUid, _requiredSlipSpeed, step); - var slow = entityManager.EnsureComponent(puddleUid); + var slow = entityManager.EnsureComponent(puddleUid); var speedModifier = 1 - reagent.Viscosity; - entityManager.EntitySysManager.GetEntitySystem().ChangeModifiers(puddleUid, speedModifier, slow); + entityManager.EntitySysManager.GetEntitySystem().ChangeModifiers(puddleUid, speedModifier, slow); return reactVolume; } diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs index c03e6f593c6..e3481f98da3 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs @@ -54,7 +54,7 @@ public sealed partial class PuddleSystem : SharedPuddleSystem [Dependency] private readonly SharedPopupSystem _popups = default!; [Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly StepTriggerSystem _stepTrigger = default!; - [Dependency] private readonly SlowContactsSystem _slowContacts = default!; + [Dependency] private readonly SpeedModifierContactsSystem _speedModContacts = default!; [Dependency] private readonly TileFrictionController _tile = default!; [ValidatePrototypeId] @@ -435,13 +435,13 @@ private void UpdateSlow(EntityUid uid, Solution solution) if (maxViscosity > 0) { - var comp = EnsureComp(uid); + var comp = EnsureComp(uid); var speed = 1 - maxViscosity; - _slowContacts.ChangeModifiers(uid, speed, comp); + _speedModContacts.ChangeModifiers(uid, speed, comp); } else { - RemComp(uid); + RemComp(uid); } } diff --git a/Content.Shared/Movement/Components/SlowedByContactComponent.cs b/Content.Shared/Movement/Components/SpeedModifiedByContactComponent.cs similarity index 80% rename from Content.Shared/Movement/Components/SlowedByContactComponent.cs rename to Content.Shared/Movement/Components/SpeedModifiedByContactComponent.cs index eafefefee18..4f791e13cab 100644 --- a/Content.Shared/Movement/Components/SlowedByContactComponent.cs +++ b/Content.Shared/Movement/Components/SpeedModifiedByContactComponent.cs @@ -7,6 +7,6 @@ namespace Content.Shared.Movement.Components; /// Exists just to listen to a single event. What a life. ///
    [NetworkedComponent, RegisterComponent] // must be networked to properly predict adding & removal -public sealed partial class SlowedByContactComponent : Component +public sealed partial class SpeedModifiedByContactComponent : Component { } diff --git a/Content.Shared/Movement/Components/SlowContactsComponent.cs b/Content.Shared/Movement/Components/SpeedModifierContactsComponent.cs similarity index 83% rename from Content.Shared/Movement/Components/SlowContactsComponent.cs rename to Content.Shared/Movement/Components/SpeedModifierContactsComponent.cs index 00cbc55d198..73bb0690fdc 100644 --- a/Content.Shared/Movement/Components/SlowContactsComponent.cs +++ b/Content.Shared/Movement/Components/SpeedModifierContactsComponent.cs @@ -6,8 +6,8 @@ namespace Content.Shared.Movement.Components; [NetworkedComponent, RegisterComponent] [AutoGenerateComponentState] -[Access(typeof(SlowContactsSystem))] -public sealed partial class SlowContactsComponent : Component +[Access(typeof(SpeedModifierContactsSystem))] +public sealed partial class SpeedModifierContactsComponent : Component { [DataField("walkSpeedModifier"), ViewVariables(VVAccess.ReadWrite)] [AutoNetworkedField] diff --git a/Content.Shared/Movement/Systems/FrictionContactsSystem.cs b/Content.Shared/Movement/Systems/FrictionContactsSystem.cs index b104c549e69..b086bc0e05f 100644 --- a/Content.Shared/Movement/Systems/FrictionContactsSystem.cs +++ b/Content.Shared/Movement/Systems/FrictionContactsSystem.cs @@ -10,7 +10,7 @@ public sealed class FrictionContactsSystem : EntitySystem [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly MovementSpeedModifierSystem _speedModifierSystem = default!; - // Comment copied from "original" SlowContactsSystem.cs + // Comment copied from "original" SlowContactsSystem.cs (now SpeedModifierContactsSystem.cs) // TODO full-game-save // Either these need to be processed before a map is saved, or slowed/slowing entities need to update on init. private HashSet _toUpdate = new(); diff --git a/Content.Shared/Movement/Systems/SlowContactsSystem.cs b/Content.Shared/Movement/Systems/SpeedModifierContactsSystem.cs similarity index 59% rename from Content.Shared/Movement/Systems/SlowContactsSystem.cs rename to Content.Shared/Movement/Systems/SpeedModifierContactsSystem.cs index 1ee145075f6..f9f6b82bb18 100644 --- a/Content.Shared/Movement/Systems/SlowContactsSystem.cs +++ b/Content.Shared/Movement/Systems/SpeedModifierContactsSystem.cs @@ -5,7 +5,7 @@ namespace Content.Shared.Movement.Systems; -public sealed class SlowContactsSystem : EntitySystem +public sealed class SpeedModifierContactsSystem : EntitySystem { [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly MovementSpeedModifierSystem _speedModifierSystem = default!; @@ -18,10 +18,10 @@ public sealed class SlowContactsSystem : EntitySystem public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnEntityEnter); - SubscribeLocalEvent(OnEntityExit); - SubscribeLocalEvent(MovementSpeedCheck); - SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnEntityEnter); + SubscribeLocalEvent(OnEntityExit); + SubscribeLocalEvent(MovementSpeedCheck); + SubscribeLocalEvent(OnShutdown); UpdatesAfter.Add(typeof(SharedPhysicsSystem)); } @@ -39,18 +39,18 @@ public override void Update(float frameTime) foreach (var ent in _toRemove) { - RemComp(ent); + RemComp(ent); } _toUpdate.Clear(); } - public void ChangeModifiers(EntityUid uid, float speed, SlowContactsComponent? component = null) + public void ChangeModifiers(EntityUid uid, float speed, SpeedModifierContactsComponent? component = null) { ChangeModifiers(uid, speed, speed, component); } - public void ChangeModifiers(EntityUid uid, float walkSpeed, float sprintSpeed, SlowContactsComponent? component = null) + public void ChangeModifiers(EntityUid uid, float walkSpeed, float sprintSpeed, SpeedModifierContactsComponent? component = null) { if (!Resolve(uid, ref component)) { @@ -62,7 +62,7 @@ public void ChangeModifiers(EntityUid uid, float walkSpeed, float sprintSpeed, S _toUpdate.UnionWith(_physics.GetContactingEntities(uid)); } - private void OnShutdown(EntityUid uid, SlowContactsComponent component, ComponentShutdown args) + private void OnShutdown(EntityUid uid, SpeedModifierContactsComponent component, ComponentShutdown args) { if (!TryComp(uid, out PhysicsComponent? phys)) return; @@ -71,48 +71,56 @@ private void OnShutdown(EntityUid uid, SlowContactsComponent component, Componen _toUpdate.UnionWith(_physics.GetContactingEntities(uid, phys)); } - private void MovementSpeedCheck(EntityUid uid, SlowedByContactComponent component, RefreshMovementSpeedModifiersEvent args) + private void MovementSpeedCheck(EntityUid uid, SpeedModifiedByContactComponent component, RefreshMovementSpeedModifiersEvent args) { if (!EntityManager.TryGetComponent(uid, out var physicsComponent)) return; - var walkSpeed = 1.0f; - var sprintSpeed = 1.0f; + var walkSpeed = 0.0f; + var sprintSpeed = 0.0f; bool remove = true; + var entries = 0; foreach (var ent in _physics.GetContactingEntities(uid, physicsComponent)) { - if (!TryComp(ent, out var slowContactsComponent)) + if (!TryComp(ent, out var slowContactsComponent)) continue; if (slowContactsComponent.IgnoreWhitelist != null && slowContactsComponent.IgnoreWhitelist.IsValid(uid)) continue; - walkSpeed = Math.Min(walkSpeed, slowContactsComponent.WalkSpeedModifier); - sprintSpeed = Math.Min(sprintSpeed, slowContactsComponent.SprintSpeedModifier); + walkSpeed += slowContactsComponent.WalkSpeedModifier; + sprintSpeed += slowContactsComponent.SprintSpeedModifier; remove = false; + entries++; } - args.ModifySpeed(walkSpeed, sprintSpeed); + if (entries > 0) + { + walkSpeed /= entries; + sprintSpeed /= entries; + + args.ModifySpeed(walkSpeed, sprintSpeed); + } // no longer colliding with anything if (remove) _toRemove.Add(uid); } - private void OnEntityExit(EntityUid uid, SlowContactsComponent component, ref EndCollideEvent args) + private void OnEntityExit(EntityUid uid, SpeedModifierContactsComponent component, ref EndCollideEvent args) { var otherUid = args.OtherEntity; _toUpdate.Add(otherUid); } - private void OnEntityEnter(EntityUid uid, SlowContactsComponent component, ref StartCollideEvent args) + private void OnEntityEnter(EntityUid uid, SpeedModifierContactsComponent component, ref StartCollideEvent args) { var otherUid = args.OtherEntity; if (!HasComp(otherUid)) return; - EnsureComp(otherUid); + EnsureComp(otherUid); _toUpdate.Add(otherUid); } } diff --git a/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml b/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml index 5de1f0b7f93..657201912e8 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml @@ -82,7 +82,7 @@ - type: AtmosExposed growthTickChance: 0.3 spreadChance: 0.4 - - type: SlowContacts + - type: SpeedModifierContacts walkSpeedModifier: 0.2 sprintSpeedModifier: 0.2 ignoreWhitelist: @@ -123,7 +123,7 @@ - type: Kudzu spriteVariants: 5 spreadChance: 0.01 - - type: SlowContacts + - type: SpeedModifierContacts walkSpeedModifier: 0.8 sprintSpeedModifier: 0.8 ignoreWhitelist: @@ -237,7 +237,7 @@ Heat: 3 growthTickChance: 0.3 - type: AtmosExposed - - type: SlowContacts + - type: SpeedModifierContacts walkSpeedModifier: 0.3 sprintSpeedModifier: 0.3 ignoreWhitelist: diff --git a/Resources/Prototypes/Entities/Objects/Misc/spider_web.yml b/Resources/Prototypes/Entities/Objects/Misc/spider_web.yml index af65ac95a8a..e1f4d086d45 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/spider_web.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/spider_web.yml @@ -72,7 +72,7 @@ Flammable: [Touch] Extinguish: [Touch] - type: SpiderWebObject - - type: SlowContacts + - type: SpeedModifierContacts walkSpeedModifier: 0.5 sprintSpeedModifier: 0.5 ignoreWhitelist: diff --git a/Resources/Prototypes/Entities/Tiles/water.yml b/Resources/Prototypes/Entities/Tiles/water.yml index e2c0421aef3..2fd1c8547de 100644 --- a/Resources/Prototypes/Entities/Tiles/water.yml +++ b/Resources/Prototypes/Entities/Tiles/water.yml @@ -32,7 +32,7 @@ Quantity: 100 - type: DrainableSolution solution: pool - - type: SlowContacts + - type: SpeedModifierContacts walkSpeedModifier: 0.5 sprintSpeedModifier: 0.5 - type: Physics From e7709bd037c4ea80a47f52f791bad3c199596051 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:35:00 -0700 Subject: [PATCH 032/111] Mirror: Gives glue tag to crazy glue (#234) ## Mirror of PR #26154: [Gives glue tag to crazy glue](https://github.com/space-wizards/space-station-14/pull/26154) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `209846b18a0b22e60c520ee98f7afcfa08a102a8` PR opened by Adrian16199 at 2024-03-15 18:05:23 UTC --- PR changed 1 files with 3 additions and 0 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > > Gives the tag of glue to crazy glue. > ## Why / Balance > > -Glue but clown advertised. > -Cant be used to craft stuff like stunprod or someother stuff even tho its same thing as space glue. > -Suffer. > ## Technical details > > > ## Media > > > - [ ] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > >
    Co-authored-by: SimpleStation14 --- Resources/Prototypes/Entities/Objects/Fun/toys.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index bf45a44582b..6697aa711e0 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -1465,6 +1465,9 @@ Quantity: 100 - type: TrashOnSolutionEmpty solution: drink + - type: Tag + tags: + - DrinkSpaceGlue - type: entity parent: BaseItem From 71299f60192de423463cefc9f5043152c895c981 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:39:00 -0700 Subject: [PATCH 033/111] Mirror: Fix presetidcard extended access throwing (#232) ## Mirror of PR #26195: [Fix presetidcard extended access throwing](https://github.com/space-wizards/space-station-14/pull/26195) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `677fd3c6db4550431d8801203c03aa2ab5075c29` PR opened by metalgearsloth at 2024-03-17 00:47:51 UTC --- PR changed 1 files with 4 additions and 2 deletions. The PR had the following labels: ---

    Original Body

    > Resolves https://github.com/space-wizards/space-station-14/issues/25798 > > :cl: > - fix: Fix ID cards sometimes not loading properly.
    Co-authored-by: SimpleStation14 --- Content.Server/Access/Systems/PresetIdCardSystem.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Content.Server/Access/Systems/PresetIdCardSystem.cs b/Content.Server/Access/Systems/PresetIdCardSystem.cs index 4073b4baa28..696b7a1dcfd 100644 --- a/Content.Server/Access/Systems/PresetIdCardSystem.cs +++ b/Content.Server/Access/Systems/PresetIdCardSystem.cs @@ -50,8 +50,10 @@ private void OnMapInit(EntityUid uid, PresetIdCardComponent id, MapInitEvent arg var station = _stationSystem.GetOwningStation(uid); var extended = false; - if (station != null) - extended = Comp(station.Value).ExtendedAccess; + + // Station not guaranteed to have jobs (e.g. nukie outpost). + if (TryComp(station, out StationJobsComponent? stationJobs)) + extended = stationJobs.ExtendedAccess; SetupIdAccess(uid, id, extended); SetupIdName(uid, id); From 6465a4370acc2d8060c94d4c15dea805b431606e Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:39:33 -0700 Subject: [PATCH 034/111] Update custom drinks (#96) ## Mirror of PR #993: [Update custom drinks](https://github.com/DeltaV-Station/Delta-v/pull/993) from DeltaV-Station [DeltaV-Station](https://github.com/DeltaV-Station)/[Delta-v](https://github.com/DeltaV-Station/Delta-v) `be0d84458adc156a7f2bcb6305a7d6dbb5042c10` --- PR changed 0 files with 0 additions and 0 deletions. The PR had the following labels: - Changes: YML - Changes: Localization - Changes: Sprite ---

    Original Body

    > > > > ## About the PR > > Gives all the DeltaV and Nyano drinks new empty and fill sprites. > Fun. > > ## Why / Balance > > Looks better. > > ## Technical details > > Fixes #985 > > ## Media > > > - [ ] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > :cl: > - fix: Fixed our custom drinks not having different fill levels.
    Co-authored-by: Fluffiest Floofers Co-authored-by: VMSolidus --- .../en-US/deltav/flavors/flavor-profiles.ftl | 2 +- .../Objects/Consumable/Drinks/drinks.yml | 60 +++++++------ .../Prototypes/DeltaV/Flavors/flavors.yml | 4 +- .../Reagents/Consumable/Drink/drinks.yml | 44 ++++++--- .../Objects/Consumable/Drinks/drinks.yml | 85 ++++++++++-------- .../Reagents/Consumable/Drink/alcohol.yml | 45 ++++++++-- .../Reagents/Consumable/Drink/drinks.yml | 16 +++- .../Consumable/Drinks/arsonist.rsi/fill-1.png | Bin 0 -> 540 bytes .../Consumable/Drinks/arsonist.rsi/fill-2.png | Bin 0 -> 811 bytes .../Consumable/Drinks/arsonist.rsi/fill-3.png | Bin 0 -> 1113 bytes .../Consumable/Drinks/arsonist.rsi/fill-4.png | Bin 0 -> 1204 bytes .../Drinks/arsonist.rsi/icon_empty.png | Bin 0 -> 249 bytes .../Consumable/Drinks/arsonist.rsi/meta.json | 43 ++++++--- .../Consumable/Drinks/daiquiri.rsi/fill-1.png | Bin 0 -> 188 bytes .../Consumable/Drinks/daiquiri.rsi/fill-2.png | Bin 0 -> 252 bytes .../Consumable/Drinks/daiquiri.rsi/fill-3.png | Bin 0 -> 267 bytes .../Drinks/daiquiri.rsi/icon_empty.png | Bin 0 -> 323 bytes .../Consumable/Drinks/daiquiri.rsi/meta.json | 38 +++++--- .../Consumable/Drinks/dulleavene.rsi/icon.png | Bin 716 -> 0 bytes .../Drinks/dulleavene.rsi/meta.json | 14 --- .../Drinks/greengrass.rsi/fill-1.png | Bin 0 -> 228 bytes .../Drinks/greengrass.rsi/fill-2.png | Bin 0 -> 339 bytes .../Drinks/greengrass.rsi/fill-3.png | Bin 0 -> 410 bytes .../Drinks/greengrass.rsi/fill-4.png | Bin 0 -> 475 bytes .../Drinks/greengrass.rsi/fill-5.png | Bin 0 -> 527 bytes .../Consumable/Drinks/greengrass.rsi/icon.png | Bin 1026 -> 631 bytes .../Drinks/greengrass.rsi/icon_empty.png | Bin 0 -> 357 bytes .../Drinks/greengrass.rsi/meta.json | 44 ++++++--- .../Consumable/Drinks/gunmetal.rsi/fill-1.png | Bin 0 -> 186 bytes .../Consumable/Drinks/gunmetal.rsi/fill-2.png | Bin 0 -> 261 bytes .../Consumable/Drinks/gunmetal.rsi/fill-3.png | Bin 0 -> 314 bytes .../Consumable/Drinks/gunmetal.rsi/fill-4.png | Bin 0 -> 351 bytes .../Consumable/Drinks/gunmetal.rsi/fill-5.png | Bin 0 -> 374 bytes .../Drinks/gunmetal.rsi/icon_empty.png | Bin 0 -> 385 bytes .../Consumable/Drinks/gunmetal.rsi/meta.json | 44 ++++++--- .../Drinks/healthcodeviolation.rsi/fill-1.png | Bin 0 -> 170 bytes .../Drinks/healthcodeviolation.rsi/fill-2.png | Bin 0 -> 213 bytes .../Drinks/healthcodeviolation.rsi/fill-3.png | Bin 0 -> 254 bytes .../Drinks/healthcodeviolation.rsi/fill-4.png | Bin 0 -> 306 bytes .../Drinks/healthcodeviolation.rsi/fill-5.png | Bin 0 -> 342 bytes .../Drinks/healthcodeviolation.rsi/icon.png | Bin 0 -> 420 bytes .../healthcodeviolation.rsi/icon_empty.png | Bin 0 -> 318 bytes .../Drinks/healthcodeviolation.rsi/meta.json | 32 +++++++ .../Consumable/Drinks/kvass.rsi/fill-1.png | Bin 0 -> 198 bytes .../Consumable/Drinks/kvass.rsi/fill-2.png | Bin 0 -> 222 bytes .../Consumable/Drinks/kvass.rsi/fill-3.png | Bin 0 -> 282 bytes .../Consumable/Drinks/kvass.rsi/fill-4.png | Bin 0 -> 325 bytes .../Consumable/Drinks/kvass.rsi/icon.png | Bin 0 -> 219 bytes .../Drinks/kvass.rsi/icon_empty.png | Bin 0 -> 295 bytes .../Consumable/Drinks/kvass.rsi/meta.json | 29 ++++++ .../Drinks/lemondrop.rsi/fill-1.png | Bin 0 -> 183 bytes .../Drinks/lemondrop.rsi/fill-2.png | Bin 0 -> 246 bytes .../Drinks/lemondrop.rsi/fill-3.png | Bin 0 -> 262 bytes .../Consumable/Drinks/lemondrop.rsi/icon.png | Bin 746 -> 388 bytes .../Drinks/lemondrop.rsi/icon_empty.png | Bin 0 -> 364 bytes .../Consumable/Drinks/lemondrop.rsi/meta.json | 38 +++++--- .../Drinks/mothamphetamine.rsi/fill-1.png | Bin 0 -> 279 bytes .../Drinks/mothamphetamine.rsi/fill-2.png | Bin 0 -> 389 bytes .../Drinks/mothamphetamine.rsi/fill-3.png | Bin 0 -> 449 bytes .../Drinks/mothamphetamine.rsi/fill-4.png | Bin 0 -> 520 bytes .../Drinks/mothamphetamine.rsi/icon_empty.png | Bin 0 -> 324 bytes .../Drinks/mothamphetamine.rsi/meta.json | 41 ++++++--- .../Drinks/atomicpunch.rsi/fill-1.png | Bin 0 -> 174 bytes .../Drinks/atomicpunch.rsi/fill-2.png | Bin 0 -> 200 bytes .../Drinks/atomicpunch.rsi/fill-3.png | Bin 0 -> 222 bytes .../Drinks/atomicpunch.rsi/fill-4.png | Bin 0 -> 257 bytes .../Drinks/atomicpunch.rsi/icon.png | Bin 453 -> 383 bytes .../Drinks/atomicpunch.rsi/icon_empty.png | Bin 0 -> 319 bytes .../Drinks/atomicpunch.rsi/meta.json | 15 ++++ .../Drinks/brainbomb.rsi/fill-1.png | Bin 0 -> 201 bytes .../Drinks/brainbomb.rsi/fill-2.png | Bin 0 -> 258 bytes .../Drinks/brainbomb.rsi/fill-3.png | Bin 0 -> 319 bytes .../Drinks/brainbomb.rsi/fill-4.png | Bin 0 -> 350 bytes .../Consumable/Drinks/brainbomb.rsi/icon.png | Bin 491 -> 494 bytes .../Drinks/brainbomb.rsi/icon_empty.png | Bin 0 -> 355 bytes .../Consumable/Drinks/brainbomb.rsi/meta.json | 15 ++++ .../Drinks/bubbletea.rsi/fill-1.png | Bin 0 -> 171 bytes .../Drinks/bubbletea.rsi/fill-2.png | Bin 0 -> 225 bytes .../Drinks/bubbletea.rsi/fill-3.png | Bin 0 -> 278 bytes .../Drinks/bubbletea.rsi/fill-4.png | Bin 0 -> 312 bytes .../Drinks/bubbletea.rsi/fill-5.png | Bin 0 -> 327 bytes .../Consumable/Drinks/bubbletea.rsi/icon.png | Bin 533 -> 508 bytes .../Drinks/bubbletea.rsi/icon_empty.png | Bin 0 -> 367 bytes .../Consumable/Drinks/bubbletea.rsi/meta.json | 18 ++++ .../Drinks/circusjuice.rsi/fill-1.png | Bin 0 -> 220 bytes .../Drinks/circusjuice.rsi/fill-2.png | Bin 0 -> 254 bytes .../Drinks/circusjuice.rsi/fill-3.png | Bin 0 -> 310 bytes .../Drinks/circusjuice.rsi/fill-4.png | Bin 0 -> 338 bytes .../Drinks/circusjuice.rsi/fill-5.png | Bin 0 -> 405 bytes .../Drinks/circusjuice.rsi/icon.png | Bin 633 -> 596 bytes .../Drinks/circusjuice.rsi/icon_empty.png | Bin 0 -> 500 bytes .../Drinks/circusjuice.rsi/meta.json | 18 ++++ .../Drinks/clownblood.rsi/fill-1.png | Bin 0 -> 182 bytes .../Drinks/clownblood.rsi/fill-2.png | Bin 0 -> 193 bytes .../Drinks/clownblood.rsi/fill-3.png | Bin 0 -> 229 bytes .../Drinks/clownblood.rsi/fill-4.png | Bin 0 -> 250 bytes .../Drinks/clownblood.rsi/fill-5.png | Bin 0 -> 264 bytes .../Consumable/Drinks/clownblood.rsi/icon.png | Bin 428 -> 414 bytes .../Drinks/clownblood.rsi/icon_empty.png | Bin 0 -> 407 bytes .../Drinks/clownblood.rsi/meta.json | 18 ++++ .../Drinks/graveyard.rsi/fill-1.png | Bin 0 -> 186 bytes .../Drinks/graveyard.rsi/fill-2.png | Bin 0 -> 217 bytes .../Drinks/graveyard.rsi/fill-3.png | Bin 0 -> 279 bytes .../Drinks/graveyard.rsi/fill-4.png | Bin 0 -> 322 bytes .../Drinks/graveyard.rsi/fill-5.png | Bin 0 -> 335 bytes .../Consumable/Drinks/graveyard.rsi/icon.png | Bin 499 -> 411 bytes .../Drinks/graveyard.rsi/icon_empty.png | Bin 0 -> 341 bytes .../Consumable/Drinks/graveyard.rsi/meta.json | 18 ++++ .../Drinks/orangecreamcicle.rsi/fill-1.png | Bin 0 -> 1459 bytes .../Drinks/orangecreamcicle.rsi/fill-2.png | Bin 0 -> 1479 bytes .../Drinks/orangecreamcicle.rsi/fill-3.png | Bin 0 -> 276 bytes .../Drinks/orangecreamcicle.rsi/fill-4.png | Bin 0 -> 306 bytes .../Drinks/orangecreamcicle.rsi/icon.png | Bin 500 -> 483 bytes .../orangecreamcicle.rsi/icon_empty.png | Bin 0 -> 388 bytes .../Drinks/orangecreamcicle.rsi/meta.json | 15 ++++ .../Drinks/pinkdrink.rsi/fill-1.png | Bin 0 -> 168 bytes .../Drinks/pinkdrink.rsi/fill-2.png | Bin 0 -> 215 bytes .../Drinks/pinkdrink.rsi/fill-3.png | Bin 0 -> 236 bytes .../Drinks/pinkdrink.rsi/fill-4.png | Bin 0 -> 248 bytes .../Consumable/Drinks/pinkdrink.rsi/icon.png | Bin 400 -> 350 bytes .../Drinks/pinkdrink.rsi/icon_empty.png | Bin 0 -> 333 bytes .../Consumable/Drinks/pinkdrink.rsi/meta.json | 15 ++++ .../Drinks/sakeglass.rsi/fill-1.png | Bin 0 -> 175 bytes .../Drinks/sakeglass.rsi/fill-2.png | Bin 0 -> 179 bytes .../Drinks/sakeglass.rsi/fill-3.png | Bin 0 -> 210 bytes .../Drinks/sakeglass.rsi/icon_empty.png | Bin 0 -> 350 bytes .../Consumable/Drinks/sakeglass.rsi/meta.json | 18 +++- .../Drinks/sapopicante.rsi/fill-1.png | Bin 0 -> 171 bytes .../Drinks/sapopicante.rsi/fill-2.png | Bin 0 -> 241 bytes .../Drinks/sapopicante.rsi/fill-3.png | Bin 0 -> 283 bytes .../Drinks/sapopicante.rsi/fill-4.png | Bin 0 -> 381 bytes .../Drinks/sapopicante.rsi/fill-5.png | Bin 0 -> 431 bytes .../Drinks/sapopicante.rsi/icon_empty.png | Bin 0 -> 381 bytes .../Drinks/sapopicante.rsi/meta.json | 18 ++++ .../Drinks/silverjack.rsi/fill-1.png | Bin 0 -> 226 bytes .../Drinks/silverjack.rsi/fill-2.png | Bin 0 -> 293 bytes .../Drinks/silverjack.rsi/fill-3.png | Bin 0 -> 320 bytes .../Drinks/silverjack.rsi/fill-4.png | Bin 0 -> 393 bytes .../Consumable/Drinks/silverjack.rsi/icon.png | Bin 515 -> 472 bytes .../Drinks/silverjack.rsi/icon_empty.png | Bin 0 -> 272 bytes .../Drinks/silverjack.rsi/meta.json | 15 ++++ .../Drinks/sojuglass.rsi/fill-1.png | Bin 0 -> 191 bytes .../Drinks/sojuglass.rsi/fill-2.png | Bin 0 -> 219 bytes .../Drinks/sojuglass.rsi/fill-3.png | Bin 0 -> 223 bytes .../Drinks/sojuglass.rsi/fill-4.png | Bin 0 -> 277 bytes .../Drinks/sojuglass.rsi/icon_empty.png | Bin 0 -> 349 bytes .../Consumable/Drinks/sojuglass.rsi/meta.json | 21 ++++- 147 files changed, 595 insertions(+), 188 deletions(-) create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/fill-1.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/fill-2.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/fill-3.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/fill-4.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/icon_empty.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/fill-1.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/fill-2.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/fill-3.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/icon_empty.png delete mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/dulleavene.rsi/icon.png delete mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/dulleavene.rsi/meta.json create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/fill-1.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/fill-2.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/fill-3.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/fill-4.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/fill-5.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/icon_empty.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-1.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-2.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-3.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-4.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-5.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/icon_empty.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/fill-1.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/fill-2.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/fill-3.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/fill-4.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/fill-5.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/icon.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/icon_empty.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/meta.json create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-1.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-2.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-3.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-4.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/icon.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/icon_empty.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/meta.json create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/fill-1.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/fill-2.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/fill-3.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/icon_empty.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/fill-1.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/fill-2.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/fill-3.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/fill-4.png create mode 100644 Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-5.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-5.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-5.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-5.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-5.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/icon_empty.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/fill-1.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/fill-2.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/fill-3.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/fill-4.png create mode 100644 Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/icon_empty.png diff --git a/Resources/Locale/en-US/deltav/flavors/flavor-profiles.ftl b/Resources/Locale/en-US/deltav/flavors/flavor-profiles.ftl index d4602b99398..98e04f2818d 100644 --- a/Resources/Locale/en-US/deltav/flavors/flavor-profiles.ftl +++ b/Resources/Locale/en-US/deltav/flavors/flavor-profiles.ftl @@ -25,5 +25,5 @@ flavor-complex-lemondrop = refreshingly tart flavor-complex-greengrass = like a holiday in the sun flavor-complex-daiquiri = fashionable flavor-complex-arsonistsbrew = like ash and flame -flavor-complex-dulleavene = ominous +flavor-complex-healthcodeviolation = ominous flavor-complex-pumpkin = like pumpkin diff --git a/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Drinks/drinks.yml b/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Drinks/drinks.yml index 8f05f0f55fe..4e3b3e938ed 100644 --- a/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Drinks/drinks.yml +++ b/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Drinks/drinks.yml @@ -1,7 +1,7 @@ - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkHealthViolationGlass - name: health code violation + suffix: health code violation description: Allegedly it's a cocktail. The warning cone motif seems apt. components: - type: SolutionContainerManager @@ -11,13 +11,14 @@ reagents: - ReagentId: HealthViolation Quantity: 30 - - type: Sprite - sprite: DeltaV/Objects/Consumable/Drinks/dulleavene.rsi + - type: Icon + sprite: DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkGunmetalGlass - name: gunmetal glass + suffix: gunmetal description: A cloudy mix of rum, cream, and... is that welding fuel? Probably tasty. components: - type: SolutionContainerManager @@ -27,13 +28,14 @@ reagents: - ReagentId: Gunmetal Quantity: 30 - - type: Sprite + - type: Icon sprite: DeltaV/Objects/Consumable/Drinks/gunmetal.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkLemonDropGlass - name: lemon drop + suffix: lemon drop description: A martini glass filled with a translucent mix of refreshing lemony goodness. components: - type: SolutionContainerManager @@ -43,13 +45,14 @@ reagents: - ReagentId: LemonDrop Quantity: 30 - - type: Sprite + - type: Icon sprite: DeltaV/Objects/Consumable/Drinks/lemondrop.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkGreenGrassGlass - name: green grass + suffix: green grass description: An odd green cocktail, topped with oranges, ice, and a plastic straw. Curious. components: - type: SolutionContainerManager @@ -59,13 +62,14 @@ reagents: - ReagentId: GreenGrass Quantity: 30 - - type: Sprite + - type: Icon sprite: DeltaV/Objects/Consumable/Drinks/greengrass.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkDaiquiriGlass - name: classic daiquiri + suffix: classic daiquiri description: Rum, lime, and simple syrup. Such class, such refinement. components: - type: SolutionContainerManager @@ -75,13 +79,14 @@ reagents: - ReagentId: Daiquiri Quantity: 30 - - type: Sprite + - type: Icon sprite: DeltaV/Objects/Consumable/Drinks/daiquiri.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkArsonistsBrewGlass - name: arsonist's brew + suffix: arsonist's brew description: It's probably not concerning that it's glowing faintly. Or bubbling. Or smoking. No, not at all. components: - type: SolutionContainerManager @@ -91,13 +96,14 @@ reagents: - ReagentId: ArsonistsBrew Quantity: 30 - - type: Sprite + - type: Icon sprite: DeltaV/Objects/Consumable/Drinks/arsonist.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkKvassGlass - name: kvass glass + suffix: kvass description: A cool refreshing drink with a taste of socialism. components: - type: SolutionContainerManager @@ -107,13 +113,14 @@ reagents: - ReagentId: Kvass Quantity: 30 - - type: Sprite - sprite: Objects/Consumable/Drinks/kvass.rsi + - type: Icon + sprite: DeltaV/Objects/Consumable/Drinks/kvass.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkMothamphetamineGlass - name: mothamphetamine + suffix: mothamphetamine description: A strangely... Fuzzy drink. It has a chaotic aura. components: - type: SolutionContainerManager @@ -123,5 +130,6 @@ reagents: - ReagentId: Mothamphetamine Quantity: 30 - - type: Sprite + - type: Icon sprite: DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi + state: icon diff --git a/Resources/Prototypes/DeltaV/Flavors/flavors.yml b/Resources/Prototypes/DeltaV/Flavors/flavors.yml index f3c7876a8af..382868db630 100644 --- a/Resources/Prototypes/DeltaV/Flavors/flavors.yml +++ b/Resources/Prototypes/DeltaV/Flavors/flavors.yml @@ -87,9 +87,9 @@ #Delta V - type: flavor - id: dulleavene + id: healthcodeviolation flavorType: Complex - description: flavor-complex-dulleavene + description: flavor-complex-healthcodeviolation - type: flavor id: gunmetal diff --git a/Resources/Prototypes/DeltaV/Reagents/Consumable/Drink/drinks.yml b/Resources/Prototypes/DeltaV/Reagents/Consumable/Drink/drinks.yml index 816aa574448..c568c1bc757 100644 --- a/Resources/Prototypes/DeltaV/Reagents/Consumable/Drink/drinks.yml +++ b/Resources/Prototypes/DeltaV/Reagents/Consumable/Drink/drinks.yml @@ -4,11 +4,14 @@ parent: BaseDrink desc: reagent-desc-healthviolation physicalDesc: reagent-physical-desc-strong-smelling - flavor: dulleavene + flavor: healthcodeviolation color: "#ff7f00" metamorphicSprite: - sprite: DeltaV/Objects/Consumable/Drinks/dulleavene.rsi - state: icon + sprite: DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -41,7 +44,10 @@ color: "#994422" metamorphicSprite: sprite: DeltaV/Objects/Consumable/Drinks/gunmetal.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -67,7 +73,9 @@ color: "#fff789" metamorphicSprite: sprite: DeltaV/Objects/Consumable/Drinks/lemondrop.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 3 + metamorphicFillBaseName: fill- metabolisms: Drink: effects: @@ -87,7 +95,9 @@ color: "#66aa55" metamorphicSprite: sprite: DeltaV/Objects/Consumable/Drinks/greengrass.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- metabolisms: Drink: effects: @@ -107,7 +117,10 @@ color: "#ddffdd" metamorphicSprite: sprite: DeltaV/Objects/Consumable/Drinks/daiquiri.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 3 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -127,7 +140,10 @@ color: "#fff789" metamorphicSprite: sprite: DeltaV/Objects/Consumable/Drinks/arsonist.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -158,8 +174,11 @@ flavor: bread color: "#381600" metamorphicSprite: - sprite: Objects/Consumable/Drinks/kvass.rsi - state: icon + sprite: DeltaV/Objects/Consumable/Drinks/kvass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false - type: reagent id: Mothamphetamine @@ -171,7 +190,10 @@ color: "#2fa1ef" metamorphicSprite: sprite: DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Consumable/Drinks/drinks.yml b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Consumable/Drinks/drinks.yml index 45706fe447f..567c5ff52c0 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Consumable/Drinks/drinks.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Consumable/Drinks/drinks.yml @@ -1,24 +1,25 @@ - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkSakeGlass - name: sake glass + suffix: sake description: Wine made from rice, it's sake! components: - type: SolutionContainerManager solutions: drink: - maxVol: 50 + maxVol: 30 reagents: - ReagentId: Sake - Quantity: 50 + Quantity: 30 - type: Drink - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkOrangeCreamiceGlass - name: orange creamcicle glass + suffix: orange creamcicle description: Orangy, creamy goodness. components: - type: SolutionContainerManager @@ -28,13 +29,14 @@ reagents: - ReagentId: OrangeCreamice Quantity: 30 - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkSilverjackGlass - name: silverjack glass + suffix: silverjack description: Reminds you of family. components: - type: SolutionContainerManager @@ -44,13 +46,14 @@ reagents: - ReagentId: Silverjack Quantity: 30 - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkBrainbombGlass - name: brainbomb glass + suffix: brainbomb description: Toxic to about anything alive, especially your liver. components: - type: SolutionContainerManager @@ -60,13 +63,14 @@ reagents: - ReagentId: Brainbomb Quantity: 30 - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkClownBloodGlass - name: clown blood glass + suffix: clown blood description: Security Officers favorite drink after a long day. components: - type: SolutionContainerManager @@ -76,13 +80,14 @@ reagents: - ReagentId: ClownBlood Quantity: 30 - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkCircusJuiceGlass - name: circus juice glass + suffix: circus juice description: Honkmother would be proud. components: - type: SolutionContainerManager @@ -92,13 +97,14 @@ reagents: - ReagentId: CircusJuice Quantity: 30 - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkSapoPicanteGlass - name: sapo picante glass + suffix: sapo picante description: Tastes nothing like a toad. components: - type: SolutionContainerManager @@ -108,13 +114,14 @@ reagents: - ReagentId: SapoPicante Quantity: 30 - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkGraveyardGlass - name: graveyard glass + suffix: graveyard description: For those shifts that never seem to end. components: - type: SolutionContainerManager @@ -124,13 +131,14 @@ reagents: - ReagentId: Graveyard Quantity: 30 - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkAtomicPunchGlass - name: atomic punch glass + suffix: atomic punch description: Will NOT make you immune to bullets; Isotopes included! components: - type: SolutionContainerManager @@ -140,13 +148,14 @@ reagents: - ReagentId: AtomicPunch Quantity: 30 - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi - + state: icon + - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkPinkDrinkGlass - name: pink drink glass + suffix: pink drink description: Entire civilizations have crumbled trying to decide if this drink really tastes like pink... components: - type: SolutionContainerManager @@ -156,13 +165,14 @@ reagents: - ReagentId: PinkDrink Quantity: 30 - - type: Sprite + - type: Icon sprite: Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi + state: icon - type: entity - parent: DrinkGlassBase + parent: DrinkGlass id: DrinkBubbleTeaGlass - name: bubble tea glass + suffix: bubble tea description: Big straw not included. components: - type: SolutionContainerManager @@ -172,5 +182,6 @@ reagents: - ReagentId: BubbleTea Quantity: 30 - - type: Sprite - sprite: Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi \ No newline at end of file + - type: Icon + sprite: Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi + state: icon diff --git a/Resources/Prototypes/Nyanotrasen/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Nyanotrasen/Reagents/Consumable/Drink/alcohol.yml index 3d79c0bc079..972fc08239e 100644 --- a/Resources/Prototypes/Nyanotrasen/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Nyanotrasen/Reagents/Consumable/Drink/alcohol.yml @@ -8,7 +8,10 @@ color: "#DDDDDD" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 3 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -28,7 +31,10 @@ color: "#DDDDDD" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -48,7 +54,10 @@ color: "#efaa16" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -68,7 +77,10 @@ color: "#978647" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -88,7 +100,10 @@ color: "#6f7a2c" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -121,7 +136,10 @@ color: "#94001c" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -141,7 +159,10 @@ color: "#c47872" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -164,7 +185,10 @@ color: "#c0501a" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -186,7 +210,10 @@ color: "#4f1b1b" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: diff --git a/Resources/Prototypes/Nyanotrasen/Reagents/Consumable/Drink/drinks.yml b/Resources/Prototypes/Nyanotrasen/Reagents/Consumable/Drink/drinks.yml index eb306d8c3c3..24d83be9431 100644 --- a/Resources/Prototypes/Nyanotrasen/Reagents/Consumable/Drink/drinks.yml +++ b/Resources/Prototypes/Nyanotrasen/Reagents/Consumable/Drink/drinks.yml @@ -8,7 +8,10 @@ color: "#d04949" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: @@ -28,7 +31,11 @@ color: "#d04949" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + metabolisms: Drink: effects: @@ -45,7 +52,10 @@ color: "#d2b18c" metamorphicSprite: sprite: Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi - state: icon + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false metabolisms: Drink: effects: diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/fill-1.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..992465a8ca7f0402d3cf40e883646dfaf0674388 GIT binary patch literal 540 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+825R)IEGZ*dUJcPUvq#6`-ft^NfKF7>f(hH zSbXUD*4Ha9G5sr=a<%=o0=jEU4849c|NCuVHHQgRO0G@o=*qoI&5q3Zb?o~0&v_az zLT8mcw0Zsg^Rg3P thNh2;pqym^?{={D7@jcm zU8g(${kwTn_8u&&yJB6p?_*o)^?xgWndiKVwQpCqWz|a$C`w|EROV1^2;jJ{%(r^$ z_B93!hq+jtPNr@=JkiJMxn<6SIl4b5?%O{h;NsqCw|asyB|gt!+|ruY{PWG`!sw*G zf(a#sg^Z>dD_(FITrDFJ$@aZ(T8$eKbj#W95OyBMbO>zKOIi^P0A$ zPoB+tt5{TLgHN}(7+c+)y1NN~uixlu@Y$|6_uyiknaqqu6`Q{9%P#rs)f!uOa~t=A z^4#vQd9km5dF?UjezmLrnwX=s-?OP@QE@iETo z&K1^{UB# z6LYzGf@+t>nEhS3?)RxL0wz9SMf0?RBr zyR$QMulLMj!4-BHn2C=)zc3k?`#5vId(PdRITt3Sghm#J1{VP!00e*l5C8%|00;m9 zAOHlQF{Rh5z!(F3V!YV7C(>i%^}bOSwqJ?zmk;PoJ%i5eQ*APv!oKSDC!t_VICE!& z#p(fXrj|bbD0SsOYvs{6Zec&l8?UC1b#PEdr*O?5AMp}~#kAK2K5O>4Q%XLmmM7QY9Gpv$5& z_j~m@Nlhvjch!RDxN5-z-=L`$gIU2LCw%uWn^tLGzabOxfKY9FTYtGY@^XyLZ-MAIyt@XeWZ)tYgpP5T;6gdQv7-Uqb zfwJH`Ot|EuD+o34$e%?^@_>I?^~OgJLj-^T5C8%|00;m9AOHk_01yBI(1@!0KHz`f zMn@q)00;m9AOQ3+SVObj2Uj=s43-|B+b`Fr`CLMB@y|_|u>>5uHT+w}<-B1|dVfG& z0L8p1n$&q>#)gf}8l-g&e35|&FH0*_T{pHF!uOq`3?1!DRae9p z0#?y-@O=9IC>x(DL2jl9hEaq(9{G}g82&XZ!#Y?O+l+VZSaFCc``&1-JRD^oCvEsK zQ--O08K&`=4UW8j4a=|&)(z~l6?;HS@7oH_X`>AKDgi0ZK*yB$y!^bQ$lF4~beS*M zcDeei_6Hax0c&jAOHJEe&M=H^-~BN~ZMdn#7OX$AKcHGSJ2uM=nhUrdhUswJ7l4kM zb2T{sWCHW^o4L-v?tJh~taK6l>-GmsSQ~7y8v&>)Z3sQrgfiIQmbxLk2sW7-V^v<(WYkz>U?<5uiwKQ-f zlfnCGe`YQ?`*DOo9s7~@2P_MKGQT%CaGc zRT2C+saZ7cZdi%_2aDbpyr?LMqFy8y4-yETlwB5b@U*bvMOb!^-rS&MadFXj()BaO z&m@zcq-Xl8%6iq^$s{Dx-AQ$3W$KZlhOSrj`u*y?*VX-A2jf4%Cjj;`a9 zcF`9Nfa}M)h5V$=<&sx<40t?|UiU1#NmQ-aa#Mf0*y#nPKAE?W~6aW+qiEtdqz!9773joRD40Yl>;>WaZ3dY)mKWKcSlrgzQ*Qw*TC(cT{a)DTN#nxA0}=52Kmbu{~b|w_(^jVKJv{rzJ`Q8P~#MSz4vrh=-&rQo4fIrYn&AuV|{rSVWZJZ|L=NV_vdF83H4~b2$ z4{-YTw_|_fcz5cY`%=8ip{CadxQ8Mr0YdD5H$Q#KgE4F~mgHLARoU~jp+ZnV`0w$)!>+va(?!5VqsXhufy*^;fF~FxxMEbe>d?1376;OE3!tm?bPPzM*#qzKM)%5|H0T>v5 zCAaZn&n8|XVYHv&23#7RJAC-Hpq7^#{C4j@DW_3=fROL!<^qjqxVKou`{^07Su@@S zms20GEC7Tc8d*S$UMR SWj7!I0000~)nP$y(KtaGI_G4J4PO(n^)Jtm5japqzR4i6E z38YykCeHgUId#gUNXctDd`toj3@im}Sp;|T-|oBltn!3OLwiL-u_MQ7f&Q*jZd;=K zZf;^=_Q`MLJMce;_p?LghcwIlR|1zfKboyLWgo<7Z}fBOR^g&CGtij~p00i_>zopr014|@8UO$Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/meta.json b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/meta.json index 313980abcc3..1d7812ab2db 100644 --- a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/meta.json +++ b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/arsonist.rsi/meta.json @@ -1,15 +1,30 @@ { - "version": 1, - "license": "CC0-1.0", - "copyright": "Original work by TJohnson.", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon", - "delays": [[0.25, 0.25, 0.25, 0.25]] - } - ] -} + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC0-1.0", + "copyright": "Original work by TJohnson.", + "states": [ + { + "name": "icon", + "delays": [[0.25, 0.25, 0.25, 0.25]] + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/fill-1.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..00e60a6d6dc68f1ba1298674e64c816cd7311177 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gah@)YAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-3;`(P3VB)%tNpb;1=!WQ~IF85$Uv Z8RqneSU;F5^BrgtgQu&X%Q~loCIDACL~Z~8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/fill-2.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e70ad2618f1f74e2bc628e5bbc0dcafb75a354ed GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G^E_P~Ln>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<5FqSiL zTh5xc&$d3krTP2w+4A#m?*I4uE4#|Ev&TL@eZ5}ZCUeoVRVL*P*W?3_evY4S`#dcv z`Pawi*YhVxOn9~>HE4?BRUNmYRmpB{Zf(W-a>g-#{(rfAI)48D#v^xbn6mV!q)2+0 v_7`rk1zHx!-eZ+;g%NCjM>&H-10zG6q4D&TH>-XDUCQ9;>gTe~DWM4fukU6S literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/fill-3.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f56ad32ad25885096aa329f4c666c2c05995b6 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GYdu{YLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<1h!vUW z{;l}9=Nf;abIHeSnf&wapI=K~y2Hp*|BrLeqo0M3&-R~x6aWA3FJ_@fX^($=`g)yT zZdXggHTl4!pX2A-K2J+Z{`K+s_52AE6P|5J4Vt2ORmZJpRkE9#TU)WdoN>&b|6eYj zj-UU(@yMMUrYt=wDUu$h{e@d>4PG?_viDdeTww$|r=y&~p@EUXx!&4fp^$Pm(BTZ8 Lu6{1-oD!M}1{rUgj{;&g+S{ozVVm^t|11p%>?l9^s$x28` zIif9Zto>KBBW{ve@T?h5eXTO#^Q%ApkTm-^(^|bFGHX^ItI<@+G{XiNCErqZ2i^W7 zYTqA!|86S8^odX3&c=q}$t(fUMN6)+K99F+v`nxR%iLh0p^|p&`=$#zToZH-b2&`A ztRpVrdBW@A2U`xE_EVS5q@}t}Cls@soHltX+l0-^MR^C(ECbV;MJ6_No}F}LmTibP0l+XkK`bl`k literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/meta.json b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/meta.json index 4c0b620dfd6..f1449ce61ae 100644 --- a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/meta.json +++ b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/daiquiri.rsi/meta.json @@ -1,14 +1,26 @@ { - "version": 1, - "license": "CC0-1.0", - "copyright": "Original work by TJohnson.", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - } - ] -} + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC0-1.0", + "copyright": "Original work by TJohnson.", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/dulleavene.rsi/icon.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/dulleavene.rsi/icon.png deleted file mode 100644 index 49aa80be1dbea17ac21614f0d0d0622f266d9991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcmV;-0yF)IP)VsJ(qLeAI~|@%Q?>hXC$ZRt&Sk%3q>;;4rxovE1LTa zHy#G)L5u5_F}E-qqwV;9z@h4WK=o?BujS}TrYs#CUBZ*PVHSm_g(I6qL-DR~zn+aJ zg^z{(rW{cCM(K$fzbeku_*1bNi_U;k_0%#=oM>V_YvzT=gnjv3Nw1$r-NchBEG|eL zk~xe;lrSMQ5|mgcN0ETkf@Id(7p(f`*$|H|e}ginI5K3#>ld{oT~kuiqNn7`QC7MC z&(lgzjMut*LeTkQ+aDv~-h4!K~yMHV`PAWITy~}gt2kaDF(*sAUQ@5 z0oAaKkS3sf6i6c@NQ1$&G_?y^vu+X6WN;Fw&V1G_7LY;?adrlfMr2JOF%bA6^AjO_ z7RWS5bsmGo+FZCsm}29!nG9ba++kSpQ5EbGn7`mAft-3~rtyCe{{R0B7+0#*lx9EN^uHh~m_ yFem}v#O6#CoA9J|aO#Fxi5^cN35^>bP0l+XkKw9i*3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/fill-2.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f596e55cfa070c7c00e9d24c8f7266c03b3fd823 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GUp-wMLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hV&7 zC0t>2zR#F`F8|;D^i1ZPZ>`*dZnb=ro_(P{k)M6V-z3Lo1PpV`}+S%mRufX2iEVemyqghl8pGb*+s2;%GyWO=`Tdpk;fnhGk`g!m85eBW)cDl#RmLO^ j_tT9a&oqcJC>&s5iwJ%t(9szO3;+gCS3j3^P6|BWuWvP^b0gZk-c#%2i|`*h zIGbYd#^w+cL%-X=$@Jh_4wknmOHW%zD<$xBcY~{PDVc`|mBeGafs1l6DgMC`ya_^S z!G$+jg$M|}`xcHTMiEJ#)_#tx(b|FPj7u>KR4iT+IY-TLfCvz;0(RlM)yk|(Ljinc zw^>KgF2J!ldV!Cv%4+(3zk81NJZYx5p$RF;snFPVpl0T@8ufKLGi0NH4C*DEBoq5uE@07*qoM6N<$ Ef-`YaB>0XP5$-~b%p{{s|?M>K!1`D0JtySeUpzT~Ib zeqozVib*Jscc_fTF(IYCpWw2X^B~kx0g3b!a~bmI0E%tl{oxAb@geWL(Qd-2lwhW3 z8HfRy64>mh*^OWlcvhQOn9gFJN;s_Nk*vPrd?W_z;~vW|ZK$l~bU4aLt5^#Hz_I{G zaNuYy&*ugstht7eEa5m2{VMXehI|328o|!f8RBvbMu$LWV`Fp)lo0HeFM|IH7E@Vb zb%2&`vWa21-gGRyDK*b`hg%m&0aX#-&1IH?d*7|=RfPYTZ~zX_Z-7q$1^_QXibT;^ Rr=tJ>002ovPDHLkV1f%c(4+tW literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/fill-5.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..a697bbbf6d67b109df666427c8a20b11025dfe4e GIT binary patch literal 527 zcmV+q0`UEbP)K^XLhmlfK=!cGy|0X8`cV@lWdyN2& z?+UrCzJoT10o-2{+J+1Qv~dm%lS}=&m^BM}Li_VQ5NV}p)yt|g0>>k;J#OnDREO(P z`4`c`=rW<He zgQ}=d0!8Re*p>suQ010jYi1U!x%D5@%MVZJhVb(^DQ`ji9LEG=0y6L|zyR>Cv6L;! Ryv+ar002ovPDHLkV1h4*=BfYy literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/icon.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/icon.png index 0852b6bdf9bf0d40703818da8cb80beb078cf8ee..e558e125e0f86518d4a9753266921d51fcbd8be7 100644 GIT binary patch delta 607 zcmV-l0-*hZ2=@e#BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! z8A(JzRCwC#R!d79K@k3WUal*sXowmJxS|JLVT}=Tlf`2~a>*?y2>Ju^6TJB+l7Em~ zqTcl+_y{KGUX(zx2vMS=yK(2yGt-&wo%IkR>4u#wgsq|I>VN5;s&DGi)r2vIR+5Gm zQyV}VfHZ)$@-8EUK!v4S;``VO4&EH>-w9%Q>M>E#No0FLBdfXb`+XtKFZC5ZAFz+-hfX&h9!$PoO}4Hy zK*;D;0+9Uq=70BcxtPo4-~_?%+cuN2$U(^HHdJF)h)#Ud#Xk1M+?~k7g(v1={G^ftZ$Eux8r>H1c=izt$H&>p z7JA3$#5?=*dcE}WPsDhx4P&V=O_~~lYDmR+=pKSH3V-ro5ZQ>va)2*mL+H_a&<_(A z;SXuwDgijDRm9kBMessj@Nwl5Gyw+i^>RH|`U=elKodJOb}S9+T&p@TGseF;h-ywf zq$VTq0s=SSa}$J`@B^A|JLYvgJNyhZF8!abAAe{Gne+9vb1QS^`(#fJ;m?X<;~CQeUsq{J t%FU?JkYu`HQ=3uyR@?^g-van0zyM7zi|hpYWb+bsH_L8<1Y5zzLa-2Rd=>r!Z3SBeK~Mw{J9}S^g!PUQBBHa*-j6eL zE;DDqKV|5qTQ>xzRdiy}h&G>C&>Ej;po1Vigp#^zPtQ)q`G0r3-{4dAdQkQHf8U=Y zn9jI5_?m=Ab=xTlj|)$&6m7*D!tHuKnHJs`9&qGHIK{Dsr575vpt9+C9|xXS zIfTGHoLM!0L2?><6MeI$h4-Ls4NlH$T520k*P-*yPCCgiDIn9I&BF6Bv?d^Q1_VUHZ(I5V?p0_4x5O9k00009aDPZya{vGf5&!@T5&_cPe*6Fc z0y;@VK~z`??N!Zd6HyTVWp}eNYe-9K1;K-n^k8F2{Q%KZw3njPi#I{=;Mt4+K>q=BBZgT4T(v=vYUOoS$AG`(-tJW2Nps1!P}X6^JeC^znNu$ zXhjS}41WkR@N#|06TEsn*K%{W|1JP}t$&gQMW$gd?j>V?ngvY;!1Tifd8~G{WUKGLJC0e z=8K!vYB8J5!gQQ|$%E%&pcX|zNVR~H7kV4T^MCs*h-;^y*e&Sr&@L~-n7m5vVyFBO zm5X;t7g|z7NEw^uC7jIPf?+2B&*ru@nTLfgw_UhGg~Ln2Egic2qljmx@n4kB%kYQe6{c=D1}0`nMZ=@f4En6EqdK5+&k>IlXVN7HQp zf`8mf0a)woZ~$q&hpua*n__rxuA*%<`8h!TD%T5{LU1-*NC9Ad0>J#nF~8NcD_b=f z8GU$_Azmo}9kV|&aW96h6NBY%Boi>yF*No<7KT*&jZ1h4DV7HD-P&uM&~zmHy>0FB zly=*OK6=2yOzw`*08+3N0~FBO-$7DKaApuKYnP7T&mGcQ8nx|u- z+JRU{u#k~+XGzG)&SK^Gwe0&BrYIb09B5t=E}6fUD&-K-Q2-5o6d&{P{9E=3cPK0) zCK@QJ3#bta6gj{zG&Bkn3IkdjQW^>rJAl$qAld=Y1htIFP*_H6IY5;L2_>OGwH6V% zX@RV|0KGgwD;F4ORu`Z-Vqj{+(PsIm1BRUg00ImEdNts*4Zdt700000NkvXXu0mjf DwNZw_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/meta.json b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/meta.json index 4c0b620dfd6..33757931876 100644 --- a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/meta.json +++ b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/greengrass.rsi/meta.json @@ -1,14 +1,32 @@ { - "version": 1, - "license": "CC0-1.0", - "copyright": "Original work by TJohnson.", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - } - ] -} + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC0-1.0", + "copyright": "Original work by TJohnson.", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-1.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..138c83559702e223c834f46d9c8084ec861c4645 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GF`h1tAr-gYTw5sEU?AXf(YC{rT_fj|x2dMaT9=EAY|kXT zJkHGA|Ln>=o1M?zb)8xE0H_HHJhYcab=eQ=@ X&}=1W{V;CsE|7?)tDnm{r-UW|bXz@e literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-2.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c11695450c79456dce5a2e02155993efe6852216 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G%ROBjLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hV&7 zC0t?DS(4>p68z`9vdZxfk1q$a@!4gvEvtVo5x4ixVFk5whdzAy$lqpqJ>U3}3CoRr zg+_mV*UfMIEY5%U|9pPQeKvp2Dd>Icet3CrzQZr|lZppC{AL@($Nv2<-}#& z2tWV=5P$##uuTulCS#o>62+o}S1XmGT=o!#*LSzNJ!WzrGhImfowoKHK4dK5xcuFp z9Cv4of+@@N1#aSi)4qiGvW8o!!%|1=ws%x(_7f0i{|B6iLx}~r^q`X^u1kShRpK&_ zo}Cy2*f%@jpxM-SU%=jQyc(+l&`2>1R_reTngawN009W_%RB@a04-KiRmfoKqW}N^ M07*qoM6N<$g7_kS`v3p{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-4.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..d3133dc9e3a1c8d33970a2a2353280754e8098ba GIT binary patch literal 351 zcmV-l0igbgP)I^_nZvwJOm&B0SG_<0+`pn(C@Y+=K{8EA#IWzkk1zoMQhdPTHVkJ=)AU3e)5pD zZ0rQTcs3g{G-`Fd8wi6?RcvEeIY;$8-^*Y9XTY!cSh9)wc-qhT7tBng>Uu@}fRDEU zvX4F%vyrOno>o8pQJoH$et@-cki>I1q5#Pm)+|QJ6Ii`(PUTkvj9dN*U#eBP_hXo$ xgR}@9fXV^QUSRwSfNnwp5P$##_{%v8FaSldUvUve%-R3|002ovPDHLkV1nN^lNkU2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-5.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..690e598921ee35b18054fef196668da962eac7b0 GIT binary patch literal 374 zcmV-+0g3*JP)kdX zQ`atB0#3m#I1NYO7A#x=6}42Pm4gr=QY%1C+!zuQTk607Qc;~OewSymzDJ*5$+mJyhP9Qe{h#G-5vOAcq=7*inCvb$M;146{Jb3$hQpMQJ}cXCVSVv zfoL2dBMUWL@_F?N*UlBg;YkZu@GwR1IKoR)M#(U2RzH7Je4G;f0$vfIW-A1I08tW9 z!Y~?gd@PHG`xnys&!6yeG7(=9gPR7BMB)JB3Rky@)rx?5jEsO0Fak#4kogv102F|S U!snHj3jhEB07*qoM6N<$f_Lba7ytkO literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/icon_empty.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/gunmetal.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..0651b3e9523be7e9ac80181404240e9895fc345a GIT binary patch literal 385 zcmV-{0e=38P)d)13eQHP9>(e*5;FpqlSQs2R|vtlUq`DgKWhGRR={!exw*`hm(07%hlK9Wd&E fQ3ucp00bBSv3q}a@Wl;hkc7k zW}M{BzS&E6$N*J?!2xRq&(l}#ElR0;_qS})4^Bp)=!5D50tpO;Iy@;aIhVwMlzF=P KxvXFO&dG6(taxUnm^U$Or1 zkNx74S)7MNTn~OeKVP$t>DWcHhY0g3*cn(P7%uZhu~_DvS_^angQu&X%Q~loCIDk* BN}d1! literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/fill-3.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8344cfdc41132b30b6bc1d7cbc7218eb60a47f GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G3p`yMLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hVt& zV2Mol$dHs5$J4{{mr)M3Vk(9s_=IkYU-eXPD z4CaKs4H2_{%g=tg#Hyk7&Vt=6TVz=B?(I6N;O!~X5aZ3`#=an6Mfroj{EJSS3b$x_ wwVb!FUuGd_)VGb(9b#>dRl*T#289C*m-m$zopr0BY1=I{*Lx literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/fill-4.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4178c0cdc4083ce10aaf26960b13b91a3b9a8f GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GS3F%DLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<5FqSiL zZ{&I&XT!cs_u8{V+3V$v>)Ua{G8F8 znVEm&TY%;<9}CY~`>*+kr>SsD~M7yF%Y^fmynX; z!pRyCazN+*G}CUwqX#5ZSys$ryKr#n^a(%qSH2c&)=^zK;fhIv4A)n_JsO4neo_lG vr0xFynfWN^gvBj28Mt!=-!n8YFf*vio@!b7}1{rUgj{;&g+S{ozVVm^t|11p%_WDOqhB`AhH zyje2&zxbv!L!qGb0;9M43vWrft+H-#o-_AgLe#DL5<`I>il2o~E;Zq56h1il;J!@} zv$@Mz&LlnFGLt7>{!U`V$H1u*56YZSKgzn`)&vP2=3>1$sTRhUf7o;U|6kA6v;Iod zU-r()S!x`cCrmCdx#K0dLo`HU-L;9od%KP*czfEZnDQ#LJMCrG_qsEAGMk20$GrM~K821)EN-dE kK)v*;LGV380|PU|v;WsV&3`Wu2MhxSPgg&ebxsLQ02DHZjQ{`u literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/icon.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..67afd251437e25fe7c930e4795f0cee395dec83f GIT binary patch literal 420 zcmV;V0bBlwP)^Z{$#jCra2@<0eUEaq5@|5x2##WVA&5j1gM$_(ZQvckodoO>lTA7 zxrUIF29QIc-huZ&uEL2Jb15#0pMU;LnE{l90HLCpE+IfEpd=T-nBXE8m;$$@3FQ6Xc7XWZNgCp3|j{P1Q-B+V?_X*zv!j_ O0000P)!xA7ViE!wZ10Y|b zCq{JN52=C(99M)euB>_B@yj$^g%dI6g7DA{0YXLdkO={j%K@m*VN7t53(NsnLx7gK z;3gDhX8 Q8UO$Q07*qoM6N<$f_GAP9{>OV literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/meta.json b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/meta.json new file mode 100644 index 00000000000..1fbe3932696 --- /dev/null +++ b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/healthcodeviolation.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC0-1.0", + "copyright": "Artwork by Leonardo_DaBepis. https://leonardo-dabepis.tumblr.com/", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-1.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..db910a5a1f51eb199194a175f350a5403b280b97 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G8J;eVAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R_Ugc!J2O2ygk`T76t#od(!Y%O-gDcn>SR@#36v=TjzIomX PbPI#0tDnm{r-UW|r&LrS literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-3.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..befe1fee89f2c657578c74a73e4bd4a202bd2066 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GdpunnLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hV&7 zHMGk3n(N8^(^pYoOWR*t)bAMK*7@*mdpM8OuWdagg$MrY$4lH}GF0a0pTWOLM#YUU zL1nA!m-p}0+59d4{g-d}W?0C;%V5c&RsQE`z1yy(jA;v=)*SfoxV24Do_p@4hOHv@ zHx4VTulv_5@c&Euxt$D8KL5Y)K>hmn6ibG*o9bFW=B?5A@u79sQ-;SG`xCA(0v-5~ ckAcI0A(+L?RBpRd7SJCIp00i_>zopr0Q-z=-~a#s literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-4.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff9030f023d21967921a610b269f43133e2efab GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G&pllnLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<1hy|JM zsjB$=e>eYni58Y42mWmLe`m;XTEnp6h{=~+$;@{R^Md^sPP1w4+F)#8)4XB#7f*gh zx1j99_4W3KcWeqp)^tv6Z-4lIx_&{_hWz5dDNbr^oXJBZ^MP-@&A_BiZnDZ z@G~D?ZqGb}J7L=AjS4a@;p`1MY^>HN6nl84w6fiN%3#cXL~)PKiiM7!O%iljJsT9} z*Z*sl)Ggs=oN(Sz@27v``;$csXEynVe6WoS{P2*w^flA5i**OVo_Hk7AdtYY=Z#NV UqW5egpqCjuUHx3vIVCg!00L8gUjP6A literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/icon.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..58a6f2157621e53c398a386d9100cca4be13cadd GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvl>na**8>L*RBSs@x@zys2RE)? zICSmEw!eQqn(;AMh%p>|{L)Q|!BUK2j+(C`P(5QwkY6x^!?PP{Ku)Tsi(`n!#N-5t zq=vwN00CErn>VkxFh)9fczSv=L^|kPxhm?~A5rPrsC>kgdPhIpX<%lU^j7Rj>3Qi0 PpoI*cu6{1-oD!M}1{rUgj{;&g+S{ozVVm^t|11p%_WDOqhB`CUn zJlM=GxozLC?#*w$i6y7GJiC4ScJOsZh10RUA%&;s@BS-)S1_cM!IgBpJt2 z_6b6N7PAUQ@*SAU{J^rYg~cPxOl1ml0_VgVTMjtAm2t>&QaR3OymBUYgvZ&W1DD>} pZ`EOEJa)0~B-oi3_!u}07>?vR-}qgpW(o8ZgQu&X%Q~loCIC&mbkqO< literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/meta.json b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/meta.json new file mode 100644 index 00000000000..46e82013433 --- /dev/null +++ b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/kvass.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/TauCetiStation/TauCetiClassic/commit/c449d65dff642f44f3e0d8a312f70aec43ab2eae modified by Floofers", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/fill-1.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..971a973332e4575087ad800b4c0f913bb26417cd GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gk)AG&Ar-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-6Q#*pz> Vz&h>Nx@e#!44$rjF6*2UngCFxKVSd= literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/fill-2.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..47265766105cf0a735bcf56da4e3515e53c60f86 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GGdx`!Ln>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<5FqSiL zuaq)-XMZ+fq5kjx_wW1j=+C>G^x%1VdP3slM2q^*+>7@w);!6Vpt9901qg0zcrVht zbKaT%`SaHs)cpA|`Qb(D!eb2T#%x7dVVh(am=xSSKH2>K|EF8zMv=gRZf3XQgHXEy m*?X)Kt}q@x$H>6Q#xQNVk#X7uc_yG689ZJ6T-G@yGywoFyIgbt literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/fill-3.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..e734aa69dce93f3a920b04532c6dfb5f42881b49 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GD?D8sLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<1hy|JM z`TghH|MT+slK=kyJ@Vo4@oF|cK1Tyxg`6V_N3_p)d={{%c_ybUY%I^LEKvXFhj5N1 z_iUbsIdcRORJNL>0Ktt7??sw-&O7rzfByOg*^e*gS|m42mSnax)sEz2V4R?=QaSH$ y{XbW(97~Q1M;RC2EV#mmV(1%v~TBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz zCP_p=RCwBA{Qv(y!$1Nih5-hn4j6U7r~_DtRmjN5NR+yh7wq5#i@CueMuO!GNC7dJ zSj+$YfBOH)i~0LOG>A{gTozJ-Ys0=%2k^;1f5&j}*~?x3rCr3`9Dp=PtpnB40MzpR z<^~$_+N$!PAlZ+MLE^leyX?HwG{%=KjKzkR;K@bTkM zhDYzjv06@y1IW$=AV-`$wc$UZgh|j`O0pp#%ZYKoXi+@sfB|;^+2sJbJh|ln<7l&d k)B&Ro7p4d+5i9m delta 698 zcmV;r0!96V1L_5kBYy#JX+uL$X=7sm04R}lkvmHRK@^3*tdEFBQYa!~ks>|{1EL_7 z5PbVI&8WtIEyJe|z&kk>sBg@#AheeD7NHdMA;_w&$o zD@RcG0Oy6Oe?@W{eHVSJs)hF(XB*IYZ>8+iw^S!n%Vgl?1X`2Ob`8x7 zURFQr9N$4=O`hlqcK4uH_6HZg0NR{q`Eq~Vvj6}934d@%S#tmY3labT3lag+-G2N4 z00ALML_t(o31eUw1*0J_8UiCd1Q@9u04Fcl{fC)pZg7a|=EKa!N`ox__y6htCoksj z2hqrm!Kwi$$bw4(oA`!(rw(8fhlxFZ$8hl3%U%Da#N8Z#G)S!jOb!>#gi8Wl9BTP~ za{~=|ZB12qP%!UD#vpNC&RzCru4yxZEC)FP-3)AelHv&D2wM{+`=3AFGW`GhiQ&hO z_Y52yf?!%e*ofiqnR^E%g-YyU77>#MNOAzkV2~q`{~Tg~Sx!?LB&07*qoM6N<$f@>Z*yZ`_I diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/icon_empty.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/lemondrop.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..5db51797e798538acbe372814a8aed1bc688c5a8 GIT binary patch literal 364 zcmV-y0h9iTP)A{gTozJ-Ys0=% z2k^;1f5&j}*~?x3rNrGFfHX+01J%+1)bjo21{(6(s`8*9*^i7t;=G)@?9W`&W&~Ld zas*LPOKk9h(g4U2Ad9|y{r=!H>#qi6c}X_@1t%}ucql1UVoypMAjtu+kN`R2`LB-& zFgf1eYz}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hV&7 zC0t6s^nOp6a^ozB#c;5f}^-r0b7xyt7UisdKr~I_2q{yp$BZK0NjW-Px zCYDWW?3~-`IQ>8K;bU6CZmU`k{1NeVD+|nPvyZPkq+4@g#kmjPZ|k%Dyd^C$O?|ee zVUQ_Hg2Udgf)O7Nhw-wlywhD!7-m;yu=d~&p`4xjS936Ld}h>Fb{6QY3w#V51`K&i W%*FMc`-Op?VDNPHb6Mw<&;$UB*JRCwBA{Qv(y!$1Nih5-hn4j6U7 zr~^hFFzSF&2aGyk)B&Ro7;p!$5Tj_*p0^B}Ui|xi<{vAVZ_fRn;pA6FxcrR_DF)@v z`wV|R{bW%7{D>jLMU&CbMVNXau=d8c|A!xbXZZc`CsxZr;BL7hTx{;Cd;h5#1^@p1 z1=AoO{{8+3Z0X-0f52FE!XvPpeDw{mY1e)TQ$G!`@US!deEpTdN}QEpNt!%Z>~?`1 z!@r+@!59?$Ad`N+{K~+@&O&_$1S+sGvWs#v{Q2^eK_cxeSWKb*Cd1!vzrbSOpMHW{ zuFL;{A=ylckyr;X64NtcWMpL6xcd!5>B+BP#lL}3fecvr*uk_0<4dsR{;nbn#P+xt jN4sXD4j5<$00bBSY43I>XJ$*200000NkvXXu0mjf)vd4q literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/fill-3.png b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd5c81f4c123d309885fe8c9df4eb92b2d82123 GIT binary patch literal 449 zcmV;y0Y3hTP)&MzDonzx@Z(APfR`xMdmUUwZT(q>koMV9x!Y0pt+6 zr2&wyHof@wAD5*!GNc%OfBeaC?Yl6;j6K&$3I(DZu=d8c|A!xb2U~*fdywTIaJO6$ zE;jenz5i5oz`s9`c>eS0C&S;zCItcd za~W7236kZ-frc2T&pdGwSP#I&Z$PB!F0tnGWz(<}2sA)A1!$@S)yzBSok}3A8R%0q z3Mt3r zkZpPw{&WiFy%ZS8za2xC)!Ca(e-n+b4}($EA*T9a|MIb^U2p_&5?APTMn#dI*)wrw z&s!5U-@)w*brrxit93R@I#`v)W1^O3;+Wpc;#_Duj;qBqzxyQ+x+T!xWmpJ`a2yGt zFR?KWwr=5=+D+j~dR_*PB)AW-67D3@pcl+99fl(J=nL;Wfu)qur@oeI;}1{rUgj{;&g+S{ozVVm^t|11p%>?l9`Kh!_|d zC3WQ9`TOkPQ{&$cYhs1n+3LduSxZWfh!pj-h%B^bNcp+>_;kr7DWwmS4D5C(cN8*k z?{s9}B*M0@{;%796NXQ!o8CK4)6Sle+}m_9#=u6F;WVqkfs<#C7JNVExxwPBY(tJE zzqz%ssf=OCA_m(R7a4ahbO_^UX!?Kp`uzHrVoWVH{+=2FYq-tcR(2;@8t!YK+E=G{ zi0klbnFVQggx@lJIn^$pu(e2Om#u@3lgsuwuXu%$g3LFaU-_uv;;n)k)(i><7~YFd Ul1W_o8{}gKPgg&ebxsLQ0H8O1X8-^I literal 0 HcmV?d00001 diff --git a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/meta.json b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/meta.json index 507c921294a..531f1903f07 100644 --- a/Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/meta.json +++ b/Resources/Textures/DeltaV/Objects/Consumable/Drinks/mothamphetamine.rsi/meta.json @@ -1,14 +1,29 @@ { - "version": 1, - "license": "CC0-1.0", - "copyright": "Artwork by @Leonardo_DaBepis. https://leonardo-dabepis.tumblr.com/", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - } - ] -} + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC0-1.0", + "copyright": "Artwork by @Leonardo_DaBepis. https://leonardo-dabepis.tumblr.com/", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-1.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..626b771591227e7e0106c4931565f3c37974c58c GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G0iG_7Ar-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R_Ug&M3IT4j9Qb8|Lqd%8X3yV17lS^R4S5@g=a0IOks%h15U%%CE|ZT)^>AP>-N N22WQ%mvv4FO#pW*I9C7w literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-2.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..94362120a817e7ea646afd2984efac41d09e5600 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GS)MMAAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R^V=1Wj?zkJ_*zT~+omPICN|Ns0vykX~_$s6xpp7V{bA+m$#-{Oy%uN(e9iT0Rk tQgGf#TY47DP6ivWK$bxuf#E%~Y+;@IbyuLR44$rjF6*2UngHynOOpTq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..2fed2373f7ccb7c1985266a47c3e01d3ee8e91b6 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G4W2HJAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z5)Q~7aOzt&``|%|wKL@J?{Cihn|oU#^Bu#CRAqDC7dcTUe|)~K&zAD%>uvKk(Vbs= zN<5hrK0H4!FY>S6#4cC%!~7cVl|roQGPeKuXS}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hVt^ zvftt1`)B|Bldc7CaN($bLY zta|9G$F#}JCyE$$PUD^LvSM?l>f`hA`z0oPyqzopr06EcL A>i_@% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/icon.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/icon.png index 95e24bc9cff48440b64b8a27b62e3b2c5c504769..c3cd7597e6b6b093054418a3d3af5ec68a88b1ca 100644 GIT binary patch delta 285 zcmV+&0pk9}1OEb$NdX~|N+y2?Dg><0U;hht3=x2Z6vGc5Jjk%)JI6C@a)+KcNy6Ai zQ@%11YbHq!*z)S{GapOEPuLy60Cs>C|K{hUm`RcYSa`V^ECje!YPO$zg)RrP7^H?~ z4uAn4OPvN}e)&q3nJ~7a_U`92&jk|snKO~;&hR_w3y--nfH0|mtPp>AF>!i2j21{s zn90G(2^RnH{X2ae0P{H*P+&RP4j|XEpuN6Ndae(N+y44;edk&4}vix5a4vg`Rjk-jv)dtl2R0dEZ_R-FNTJH z|Nk)@|KyKiE{Hgq@|B>OETn`0$Z{V`9Sm`hCywugh5-L&hNB;Si8hlY2Qc$+GZ={o zFf?sGf+GI){aXeDh6QjnN0l@g8H~^Tr@8|`fRmk-0Tv2BfBs}(XJ>zBC|julmv{UR z3<@GGCo32H`}>taJU^4+*82|(a%BZzI>qe_!@^^(VEmtfktFk2$jNSp8`|NtX?Xzy z2PY?(|Kt0220R&rdJeE{s6>hrgyrM_k{!TEfn`I#DE8p`!C1TdDud3Zl?*?B{X)TC zzkOp^kz3CYF}abE=4n>|1pfT_gIXA&@oDRT|F|vG-?okRY2bvT=kQ5{B-e%@u;UvC zh9)M)e++J%zfcmOy}dnk9WdG?8+E|2bO1nr0RVdHk9j;>@yY-I002ovPDHLkV1jCd Bqpkn| diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/icon_empty.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/atomicpunch.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2bbc94ace6cd21c87286523c179e8e42e44c78 GIT binary patch literal 319 zcmV-F0l@x=P)<0U;hht3=x2Z6vGc5Jjk%)JI6C@a)+KcNy6AiQ@%11 zYbHq!*z)S{GapOEPuLy60Cs>C|K{hUm`RcYSa`V^ECje!YPO$zg)RrP7^H?~4uAn4 zOPvN}e)&q3nJ~7a_U`92cK|x*48M~OWAC_fzhSf>8g&589N@wELkg4yfmv}H)^g(b zl?ITS(I}v~15SMSnl)@ffaH>}JJd<4a>vPMxa3GRk8!kTH0pp6?*M=R0|1@KLirta R9Gd_D002ovPDHLkV1gd7fLQgAcO`*!cuDDL&lHu0~1UNUSe pI;XYNW|zYQeFlaH-y6Ie7#SptC38Q@AH4?B@9FC2vd$@?2>|*|MnwPs literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-2.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..728c1477ce314c06dde5d97c28bf3628ee953275 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GOFUg1Ln>~)xo*gH$UuVi!E~)O0WTxbqLw>OclJ0RsIFq) zuBUg?ONq}hN+ozp7kj`4*_!-6ihJIl|JEJE^~|SrrZWR0i+}@|IPmE*d;8;kcRq=J zy_FzQwdP5-+%4TX#gCphY^-Vg6&v+lv2cM3~gu9x;d;<^^KWQsuY z95#bzdvni8-mA`7d(q@|2q BV!Z$W literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6e21f7447c362b735484e3ce4f788299c5fb43 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G4?SHRLn>~)nQq8+$Uvm+|Ed{X0k>98P%inxrlc2lOuLec zRXtyUFV;mvZ=>kMC>^t{5~eR$tz52r-^Oz2``-ED9y&`!>>_z(AaRnI_)3}Q{ZRQs|%v-h4Z~E(V zvkL;eoQ*d`^j?*o_dI>?^|S+p#s-rQxTfuTto~=iJLSIQf^!ddt&?o5wO~r-aq3{- z(Wt;NVVUM66~l7wdw0Dw1ziPg&NsjRy_H4hm-qw*&Odt(#5OQ8+};(!ciz~1Inc8V Mp00i_>zopr00sSh)c^nh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-4.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/brainbomb.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..df040cd99e652ab1a41965db9a00d78b7f61904f GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@j0~PGjv*Dd-b_E+b;v-Z)ql>vlMP$AHNOb{5^J`OKeqjo z;IXydGkeb*>eWa!n;Yihwe`xDqdx2VHp`2@JXEbPf#uN8bG}TS0bUEezh2lV(ZC2n zR_q4+@L_t(|+G70w|3AY(0w#t52BQubb-<_thLi*TGcYp#2h#)O z07i!Y{~5tF#357xETn2ETfOgp7qIvS(dcqrp-zmXn#V{=T>!Gw)kqc0c2$vM*nQ^_ ziu~?#w@G#cNg=?@!_8nREzZ!i`3M8oz2^+O&s@Whr+E}`vVXHOcw6eE{{gZKH!hfY ztD`3!Cb#4A{h2g(z`ws=84P$Y%>4E14+HCz7zP8z3t&q@{2dI!^eG2^{P@nm%E|)F z48Iv*mb0<3&?gsw00##r*byL_f#Em9)#uw8e*gIbWM|So1Q?+{hFH$PaQ@+ThEHFg z(XSi;fveBAfqyOKvupP#@! z23h{*mLtQ97cUs3q@)-G1O({gfLB+&7}(j_8J<0R2DF%oK}$=E;lqay3@=~4WMGgM zqfa&j`4;5spFe*x+`oSxEG8~4PF4solG-n*+;I}8hA4Iqb4HpwV6;g#>VQ!PP#XXQ Z7yzi9k`dNkeenPQ002ovPDHLkV1fy~%k}^O delta 428 zcmV;d0aO0&1M35jNq>z=L_t(|+U!>`Pr^VLeTRiY2!zCFlLr3)(dgjf)EF0I-24?z zP7eG6evGS1CnJMVCNY7jyiFYKJh#*)%i2ZK_3rtVNFMn~~EYkw(LcaJwVV390 zhY5!mh7p{A^NSmLytj!`!$u*yj?#O3u6}u6rN+;wf)JpjlAOdN`=cK02p9?{ySTF) z7#o`C#4OBeJ$L~eJE;mj+E>_)RwkPQ7!JoUu_|X5IL-jksKUrcQ}S3$k+2IUh{qE` z1Ydy>YRw`><9{AIKb6w~?${#-9^Z=S_AN;{AfkXW$Jc^1oz#W%6{InAB_-kQ)7g}~ z-|vZgF%|fFIgrzVf!h_1Ir-=FK3c67bX`X#laV8!T|0uRs<14J5l4{A<t6V1nihNq_{YY~ZqZkMvG(h>IVDr~D}aPQCZT{(z_JB=3orn^ WjgM)jVlgHF0000=Mjqh?sK1q`vGY7UHqA(Ol zb^t~aPfs7%q8OA2)dYEG(#-)!Uwp&#G6kVPmCA^cP@rCINMz=8>RiaP>a4zlj)_`$4r zz1(+FiuvTXML^XsP{IG;-K#*8?XI!AtC>9hFflOfW9MOHV@U54U8vG`^)N`Cr>mdK II;Vst0BXNA3jhEB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-2.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..16ca3cbdc5bcc76331ec3f7038bedfe8bc041d8b GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G&7LlfAr-gYT;IsqU?9MHA^48&-UkXw7e!gP1DW*{&9X{( z4PVa)Hfm~h{Imbpbs7G3yBcPmOn3Su1Jn!y``8VlHVQQLuT5WUef_)Z#z@iqOebb_ zt}z==Lxi;_pyag-RwJx`$*zStl_Uqz2hI&Q@hCgxzoCXYEc4{wd5Vbe} OGS1W0&t;ucLK6VLzfmm! literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..11a86987cc9f3b2f959bfde0039d12900bddd5ea GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GJ3L(+Ln>~)xo*gJ$bg6S!uuuMF|FMSZYt*jLj$TeFKK=5U%jTUr@47r*zUP5&qXoEI{y6wA&|J?K%kysMalQGA zmgnq{i^w{5J87Nk`I1`Kg5))`#m*$&P+RlL*z71%YHjE5O)vNDYJU@-z`*>+_JQsJ ZhLSonO^!()Rs#LN;OXk;vd$@?2>|ReXV3ru literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-4.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..9673504e305597fe0f32fd69357310788bebedc7 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gw>(`OLn>~)nZBRvkOR-L{kvCt)r!U+IqLesa!JNpZH}g+ zkDk2H(VNP(uidVr**RA@nY~hLEP4KUW`UpFMAZLJjwHg{^C3?QIKo zznK}aBUa-c-$}K0MK+?1)kK?|lnssWZ(rf_AfGF3QH5yl(ie?${8!}4ck8eR zzAfjO{G}n)#Bq+??CLq9_D2nW=?5^d{-|!4&cMv@_N0qJLT*7l(3cFJu6{1-oD!M< DKtOoV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-5.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..d47c0694e22e4ae1161f5bd5a8000c99f12a0d1d GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GFFjoxLn>~)nQqJFWXN;;f9C2%(?3f2@ijdc`1qQuX@N#w z-nmDgt{lwfkUMg+|GUs(;W;rSFQk1GmdalGH|bBNW+z9NNqf^-2A%_8w4k8jLoP$Q z_?&O6`|~UI-dwC9DiGc{p_%(>xY(3ua%)-T!Y6!I*w?tnDIkT{qQlC0#)BVxg7W^% z`FV8>&Z3j@C%ug53U2&dsH=18?P{sFhO^XfaRvJR@X)<5<@aglx*g9&F8eWSwpK{J z$UHVV&%0Z$WS{f1ED1d!gY-iEMHh3L3%B VKD$ox?*V$6!PC{xWt~$(696jghE)In literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/icon.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/icon.png index 1494632f2d91d2d90f8d3fcd98e2bdab9db42e16..293ae99a1c5c445d05cc3edaf0ef048ff5ba0cea 100644 GIT binary patch delta 420 zcmV;V0bBl+1pEV#NdcabN*#YQFf#r}qKN{GR4EBT7XJUwNRCz(QZKn}JaQEC?APp+Ichlb;5F#+OXl2DY5}-yep)d=G{{ zjF5l?B|Z=aB}AI#f?}YLy9rfKdkwv;!Cb0t^6vCzW`;`@Q7= O0000xj|6Rb4Py;&XInV)A4*_N# zZiX$#uV6}KR5LID#X<5kjRFwp2r^+f^85#im_&Re!wX;tY`=UT92I}2?b)~p8O~P z8ecMH8`yH@e}5SI@;w;-FhT+nl=wgxln{wc3nV+B80h2f!XRLvvjEv!82&PGF_cZ( z%<%8uU$DibSWZ!GSl+*ep`$RAp|pP;m|r?+8(F!4k(7P`uF5e82F^{WW2~yGg7b-~ nj2K5dCZi4*b-+M703g5sx>cU}=d>t{00000NkvXXu0mjf+0fB> diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/icon_empty.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..cba7f74b94b08a948a10052897f7a8d4d62bc86a GIT binary patch literal 367 zcmV-#0g(QQP)Yjv&ba%sku-meS%3O`DIPh;!Y0&anH;HLyI*qkxm0mBHImCmmT#siI`2 zcSle9j?4FFR&GD}zunWEk!HEz-`}s8f-`5rnV!0e3?N6)HyfrS0%ZH;`y@GnIu1Yz z0aAjWEC(Zuc-JxiVrL?U;-@VAKHv?EruP0{}^)XYig2+ui^G N002ovPDHLkV1l@(n27)Y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/meta.json b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/meta.json index 3e33d3ec6a6..acb41d36dd7 100644 --- a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/meta.json +++ b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/bubbletea.rsi/meta.json @@ -9,6 +9,24 @@ "states": [ { "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-1.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..db884c3d25791fa80429150deac70acd77755d25 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gb)GJcAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvJTUjKbgxd zo5d{Q-u)<$y~iryh;>7&jPLsRIe*TdIdt;CxnHs`SQ**c>g6T&G0u#+!^CrE&#NAj z@&h(A1=c)zt|o50?o7z?T9F2wLuzLF$BMUT$U#gtc*QV@(V>Bn;qE_K)ni|EZUSAx N;OXk;vd$@?2>|GxPrU#D literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-2.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..ccf14afe99a96bb03b660e683c3dd9b0ca96a7aa GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G3p`yMLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WF4k4e=?U_ zHj7!pz57uhJI@y8h!Yo0rUr_opE~>R|BONhrw8K3%6~UKyxy<=|Noz}oN536exBRN zeI!LF;m6O<>dg~6&}EM zuhnCSZ1K&B>v^6LX!EKekiEw$;R>S)a{~i2gTiV(71?LJsX(_fc)I$ztaD0e0sz2; BVO9VD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..c56db9fe56c80f0a6fdcc0b34c23c0884d9f86c4 GIT binary patch literal 310 zcmV-60m=S}P)Z0AmP9`e6g;2mk;807*qo IM6N<$g6v^?%m4rY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-4.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbe1c22f956837b9cb13b24a7c5766e67c0c9d1 GIT binary patch literal 338 zcmV-Y0j>UtP)lY{gfBgu=pKtyLiQQaiLb6#bl(?RYlY!yqZ%&54e?EZu z>hWjj>wr~);Rw$9#X~aO5mOdc>wwzl4;vir; z0P)EIWTk;Qyc$@8O^t!!Kg0jWj02JeelauBFAae5J}B5h;P0RBkaWN#!0_|uPX-|o zJ=%u=EWX)Uzr)kPx33=<*xA|XlLqF=gkTjvH@TQ`Wu`jqa{-_)plbzw~Peu?IMEvJw|Ifh3{*!?(@CqZ%LxA1&BqPZ3-+%wZF^FHw zG@X%T!$1WQsW@-LA%-8Hzc4IkQT`9ZAhE~GjYu|&g_8Jle!P@{ixU)%0u0CZy@Evv z?b84ZfGq#{o0H-1pATTZdi)vsI$)JxID)f&@zBhMjO5gYKfios`1AM5|8L(R(EtNg z2YxY5^tYu?2!Ji;7JxVim<~XEx)nrocr~yFn;I}zGyH$dI3Q`@7c(RM(!ke`C;x+j z9R&XV`3^4&e*XN)AS9wk`w)P|H#_Thcsls@^#cPtJ3D>Sz&x1{tm5Y;7c;KRRHuC| z09k}hY+j5febT^ai)hpVqYfB#z_4-vK!5=N9QeS0c$!Iv00000NkvXXu0mjfN071c literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/icon.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/circusjuice.rsi/icon.png index 41bd94c3ef420ad8c51c7999548eabf9c04996b5..67fb208946ab4b39a7de3c600740c78024fcfb12 100644 GIT binary patch delta 535 zcmV+y0_gqu1k?nONPhwLNkl$w(Ci>el zl42esDcNw!lqvsH6A~GI?lx!m^pl<8>rY087Ye=;3gP=5$M$Z#e7Bg1kQ<^Ldh znm|9v!4C$YC?Ez;o;>+KEV}YG9Qyy`^Oygxo}c*tjxAyG|dIbV3lAvg0p@xeaZoRJ|xxmM5h5*oE|uE03QFKxQC|! zC8=MZl)1f3>_krnum$MPW99|8q@@gP88Sv~u(Pw%HVp&`{9}w; zJo~>RB93RwebK^8E3YG@3G zevn>}8Du#iC@APZuB-^6T~-`m5MI9lB3L((q50@_hH2N%|0l&Pybf5mZXM&kefzM= z>Gbu&Ef2qWAB?^ury$AZ%>;h*=VzT)B(fN0RRC8 Z06RI-d=L;IEY$!2002ovPDHLkV1g@$@RtAp delta 572 zcmV-C0>k~(1o;GzNPhwwNkl;@ zx(`f*N-oBU{9`zDohSeS)yEeZ%YXJV{O<}r$go~e9~>$m z;`o~R45i--7&kB^{-;$U{0|LoIB(G#7`8}-!^LudiF8;NMDX~(Evx^(%h`zG&)+KyKF?M%guRF0 zHU~CP4uK^=qJPr?*&*=lJ1`A!3xL_+bnu-HB_YiBb9gnd%Bz9Oi4Ds@g%u-Rase{< z#mq>v5WvX)2_M#ggB=9^{`n5hjtoo!3_pMVWN1A4kpV3oFyhM@OytHt2(Yt$ho=Kj zS-{TDPTMp9Du&}0pZ#x?+ly8H+~i`0>7h=Hu=0Q=xqra+FAF2cB5an=i}7S6H58ag zjeigTh5*p7=+hv zfC$u01dEmbd5l&4zJ2>}n#G8#YX)=xJOrGaoKVUFoxWa#AhgBA2(}(0^50r-4ZUc8nlL{QUCuKf2|l20s{pqJS7YdGh4{u;>C=_T%#x z3HXX&EwxPoIF2#Xul?^%AfgRYL$* z{7Xm~Gk_d1+dklbxTxZPkmXZDV;IOu2RI!N6cqFyS5^ekE-MZ&2(RA&5v-fY(0ued z!?bJX|C3@CUI(mOw~le&zI|BbbozSXmWSWG55_N^oyDpaWCqAAsI5aRa X9O~n@Zv3VKatMQ`tDnm{r-UW|zUDru literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-2.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..247b3cfabaa2f15a325c87be836bc5e6eba5bcf8 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G$(}BbAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R`nJjr;KKJoC)9<4v0J0?C;{LuZ--t$oiKV!_axwB)=cuY5GIIA>ahHIYu$uz^h jZC&nAy%p>XED{VXbHr|GUv_*4w2r~k)z4*}Q$iB}K$=8O literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffeba8e6d16e99601c72629878405acdf36a907 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G?Vc`J@vVoxbY=bmJN|CLYq&#Rlccn>|)qQs11Ve85$Uv84{MM VT+(vXJPULZgQu&X%Q~loCIGh8RN4Rl literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-4.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..210fa67f279982048afcce66cc4d4f870e12e911 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gb39!fLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<1Y?7I< z|D(a-^ZN0U&x|$yv?oruF@cBCttiWR!u#nTGm|s+Y^XDQ>{1^+=}eO1^{4m${g>S# zFyoX)cX05x|HpfnC$ZHT8c$l<-#TmB#K#<)oF0fDuAg)ya}vkK$g;d5L*-Z}hS{zP uhTV7Uem!ZrxGUibBiQy0MGOuNj0~a+%~m8mxEBa?CxfS}pUXO@geCx&5n_P= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-5.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..00d78b7074dcea037739af9bfa622c1b40c7b707 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gt2|vCLn>}1{rUgj{;&g+S{ozVVm^t|11p%@mN9=amrMKc z^Qrb>uCS^94S0l@FFEV8L}-{k_o2^FDW}_Wlu}fdo3W@KNUgagA*H`2 z{*1-N`_t?)AKd=GpIMwKSTeOR>(syhGYTCp9nep6`<3b(Gi~Byj!jMv#1Gd`I+8hw zV`F4lUXh`4tP{g*R|UiFJ9fXGG+lgEafK1=mJLM=4h@V9hTQhMZp%$S4Rkewr>mdK II;Vst0Pz`R+W-In literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/icon.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/icon.png index 05147c65ad37bed558981358fd5eea6aacbae46d..7d08454a16246e25ec8e3f8a11a01b5ecaab6857 100644 GIT binary patch delta 350 zcmV-k0iph^1D*qrNq;~|L_t(|+G70w|3AY(0w#t52BQubbpQ*g8uB+D#+z*>`r9(n z%mE_hyMTg{N+Ek@&hDCs(B-$5zASW z;g}rDL3n88f`bPSGN1?j_rHI@7+DS7vLUj?bSnq&`H)oKlYixabsw0(S#cSkHj21G zU@TaU<^>T9eEa{G{)rIg`#HQCSmo6MqDT$}s%67p%#38|W1*&HjA7k9&*>KCy@wv&xU^O%ifh;XUMvz7503-&Iqe~P>NEw4I6tV`=f-GS6)X*6E zl!UNs=Ca}dgIDnS4G_V)i44t0uQN=$cK$zILO`dl7jAj@&HG^d;@MfULV%H!jtQ)+ wM=orTErz85SnG)D4j65gk2+vjIshQR04?w@a6Rw}-v9sr07*qoM6N<$g0tnLeEsq^|?M|NR5TAb$|?`wo4xA~) z!7@H=6mf&VSXeHgT|tBlzWx78{}6!reh#k&R(Z96C}K)V+N6PB%#38|W1*&H?;UybXu`|M>jnKeqA% zBuA=wBs&0R5y%mgS`NZPD;FF*c#wfm(G5~FyvqT6J|xxmWI15n2PSY<U{8`ipzuE2G!1U;n4O1F-o#Y+65U6Je0RKgPJl zv%zr}EX)Yb1u)v~-y66Znub7@mLX&K^a=mb>xb;sOTcn;i2?~JV+N2TX4?n+4;NMZ z53+n}XbgSQ0IaZaS#f|tc>M;5VBJK9=A+jcrd>NvpMprIuNQ84_|5xZ{NmYJvO<87 zl#U6ktVb?#ku8R$0a)vZ>JAufmXA7MSULb8zyMBhb;N^#by5HT002ovPDHLkV1m%p Bty2I1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/meta.json b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/meta.json index 3e33d3ec6a6..acb41d36dd7 100644 --- a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/meta.json +++ b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/clownblood.rsi/meta.json @@ -9,6 +9,24 @@ "states": [ { "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-1.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d93b5da40caaf82ce75de4d7d28b0764bf075d78 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GF`h1tAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R_Ugc!JYO2zNp^YQ=t`}=tmc$kbfRrQn*tYG@f7|@~liqL~yI6M+tn-m9 bgFphqWHwP7D-~@~pgjzpu6{1-oD!M<%cMUR literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-2.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..24cc104349041c0bd6158696fcd5f9eeb3acc103 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G)t)YnAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R^V=1Wj?zx+8p{J${}{Q3J^yeHAYEv$c{9^Z_rf4q-dk6id~KS5`E#HP-TuG8WI z4;(qvkYlOZFmX=W&h8BcVZPP(_N6ZAW_H{B5Nz-o83us_2DJbc&5!R6=m4F;;OXk; Jvd$@?2>@+QPtgDX literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..e89d6ac3c9b08531ac75c91bd4f2e4656475c384 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GJ3U<-Ln>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hV&7 zB^;1F;Iyjk`T2GK($mt?e*FHfKZAdfV~qgA#r<`ElO{~On!IEtb3=n*hGv`cgr}KO zObQdS9(08MVZWfrt@mbmuGEaecd9p(at>5oj5@}XEPl&s!Nud92a_&Zxy|TLypiy* z>e%MaLyDg5e^{r&gvUj`V>%*+gC!)P&a4Mv)U0La2@3s1OZFfo`o z%wfa=Mp7Fjp^A$CfB*iCSIveePZ(+D01)sI6Z_A?#s=sA`Sptd#0Sw^UcF+ZX(Igf z_aEF+7>4nG0E53~`%&8Fg4XQ^z!qTx){E9MUWgB*tpgf;oER(?tpf)$$RRLnuy8%& z*~BoMj-zflz{G;nqCIcl($)c>I6e{MhmmqYV!%)!*)NQv{en>kj5=V%I{+ZS02O<0 U)i0n5xc~qF07*qoM6N<$f^6r73IG5A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-5.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..9707e28b252260605c14977bbf6d3e32e45bd1bf GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GA3a?hLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<5FqSiL zuat`0yN7Yz-hco8o@Q7)bLPy0ITE^R>kfKs7GQ{+k^7KyJC7QhFneMUgYwF&g)0^* zb+z5!UvIo&)22l$B5VKKy>((pQ8eP+EOVqian>@%39T>s7GR6W;wJU@Paz>$O+ zfn1whGi6_AhPy#2|M(M}{+vAJep?{pZXH98pjpD+4Bf}AKOAmZEx35R^I+0Ns{(^& z8K%Q*+}Dlg`SKioY4K`Wi;s?l?yb+?baQ0`HviQ)+$mw-bBI}mjfZv8-$NF+^dTPF d!_2_M!ytXQBFe}`yawob22WQ%mvv4FO#rxIf>!_l literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/icon.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/icon.png index dd62bd08da44b60e9c2849f4c1195d8131bf470b..cf58cd4e06912114b026e0434df372b7b8498bec 100644 GIT binary patch delta 319 zcmV-F0l@zA1DgYoNdY~PN+5p&<^Yi8Z@zwIh_|sJ$`LH2T2QunA5Me+&goGE`8QML}8EKLTK^A6Pc*1`zgNeb!L6{Uk zaw5#L_5sr{i+=z9&A`gaO22XdWFayQvmC^SVVZ^j$U<~SPy$HG1+awZFD}l&!o~&{ z|MTk?m=B_L7i}gw0g@F0$d;n>e?W5v%|ZYc3a6vJ7&wq}0Su7pd$Jq=bHwF1Ulbpk zF5O15rrNdc9SN+5qgOq5y{T3G((>sJsHRKhV*%>f4w9t6`{Uj2QBOU=JI zosv+?8HqKQq!0jE?qjKg)d8E5V~s(Ui{&>xe>Jg=fhG_8nJS(-6k_Yks{{71UqnVkR!E7Kc38H`dYkEPUBt?^4 z0J1RK!V_*OObjLt!lVF_b3vZ95158o^!xX323A&9`jrD93z2D<v+xN39y>s{TpI^UF+D{ka14TDHc|yBH*y!WLZLw(G zClDLt5EwRCxc<%A#4vtbj-zgE$i(s$i$&lRx##U$+B%?S`_X47V*Di0#X(}gPHHV$EYA)pA!O zRjhJ5vQog7i|03yVm&O#g%LJV~F3sa0*N-8km9Uu23gNsym=^$I1UK?q&=} zp1w{;7QeV?-pnsQe=%66X28XFT)989-NT%b=7|uS<#fx2)Ucdv2T;p$vK&B7%Sp}! zxDp~tb|fJI4!ybnW^d$K|RWC6$`YFIurt7A|?^w3enNQ59UkQ~i(0kP3U n69Ht~*fB*vkK#q&Zb>}_n00000NkvXXu0mjfj!TV^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/meta.json b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/meta.json index 3e33d3ec6a6..acb41d36dd7 100644 --- a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/meta.json +++ b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/graveyard.rsi/meta.json @@ -9,6 +9,24 @@ "states": [ { "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-1.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf061e463f7bd7e0de9cf1572a2437d16a576ac GIT binary patch literal 1459 zcmbVMOK22H7;Yhm&x0uJA}B@Y5?A{dk|o2%dyx54$Y59^AmPM?nu>1QEOh5fAD`K}6B&c{D1~pbgda`s(}N|8L`C z``548yhf6w^`&BALd+l;t5%9XYqegAX?0jU!X#FJu3Y_5lKP%|#oVk;t(t+6t0&0x!w z_v{8kO(+O_!Vzftjex$(o|mTF;) zvo6^IOx-j!J);>}#W0{b2n`E#KUs*2+$x+X{M;2LcD7vSJcODS$FUk`R2tPZ!?G+* zH#O5#1VUkR0Y^gZ@t(@S%%~YKaM%l68nbO5Js<_d zi7kt$WfeW6m`2$&p=rQucDrssUGG30>U!0=rJz{@=01groN*CH%Yt1Dt2FYFFxc}^ zjc8#|lR@f6I6@mV5`u+xnYI>=14{wpD8Qstuw`Mh>Ul2AnL901bqAGdo@A7KE?ZS9 zm8zv6Glww36@4d0z4rx*XOqbG-n-xU{+GxTrG*;b&65;dk`l1!F%hh}ZbeLzW8GE5 z1MMt;2q)QX%Qy)uapmr@_uU@o(8hHlNWT*94vf(%k5NR1Yrm-e7ikZ@v=>i;2T?&UJ<3l1nUAo_s%YTlef{3=|NZ}Z zZuZ0NTi@O)2*UQ#OmQA&l#MNKz(4JD{)6ewc;-|p2-|jKV?_Ar=Yk+?eB_rG`J!_i z6Bf#@$0}5Ag)yK7;mCL^cF8j3s6uOgWQ&ilUK5e;+2YBAj_SmdwC>Mz61vctEtAeN zu{?47C_2)@KoC;yqE;A0DQ?+fj~Bx_J61&0gYacroX7;CMQ098vV@{BS(AvWs%XrT zEkcOt(E~_VbzM;nMKdK$!}=ktS!nQyATIH$c)mD25C%J2taBb?MQJvha?_AmQd2a` zvJ_QUbX@|3l(r-8wxlTCJ7g%*lq7!4eHNjN(XFrsw?$C3Z$lX8v{5?n6L?H%xv`?j zYGzXp=#d;3Hx?)QdZ?nH=z?X@YYMyNde`RtPcBj zD9@VMyIWJULpU^oY?-$p*yK%&M$owuXi+PTrEj6VeNie-lo!vFC*AJ&&0`yW8M*TL zKO>jkDm1SDIy(K1`e5b6W@tsfUA%Pv;U9Oqy9$NEYIpU<^;>_A?!5QI@7}(D4@@V! z_ceFkTD`Y)ZsVN`r@MvkckKBtutrBWomdI1cUOYV=#%4@AMYyc|7ydhXGi|tw1!;} Ze*A0CHw*3CA7`z$G&Nhi{K3+f{{sUo*R%it literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..c014db520a843683925bf2ae7315e192a7714dfa GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G+dN$yLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hQ|K zuvZEapbr>4UHx3vIVCg!03p$EKL7v# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-4.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7b5ab8fe64f84a931dcec4b9d14ee6db75816b GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GS3F%DLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<1hy|I} z)RxJ_RsQ+^x3zKNRCd>S(WfR&T&BpdNrY{JE_5Donb@Mrn3nZr`rT+N;-u&?S z`~M{?p4`7|#@nFdxJ`nk?$00AWj7-wGv{-#D$h5n`+fQ}!=d>4;sqAVy6df#&&pod z@Y|@_<45T+`ThSIeJQ355wp89%&xyY8CJGB9VnVWg%57zvex|0c8l|7vc| z@aNAr1`akx2KM8Z7?^T@GSV#s7}*6Fe*gN$F!9ekh9X0ChNd?c7#Mb(e1=a?yN9_H z)g18e-(Ln+HZBH+KMcSS_{&hE_YWj2367fIUl?igT`W*BE~N z_|5>c6dpQAmV?BR<*1qn!3hr%?2^Avgkwe%6D!02f4>=i{syKeksY+nhG0vOECzue zKYxK~c2-8}=K^F<2@Hh>S6#_BD>dO_T+E-rj^bcvW9a1F^qiCgNU{Td{{6<#u=_ID z5l;D zg^ejVDu7&ZAb#n=`2%dZy}dnsDx(uePBTC)gJg1C%FG}kiN+uPH}0g-_ee?Y}2 zBi%xPkzIh{_pfgZ6aUO(C^A(4*YxHB6T^3gXFGPBL~$n&e+Oc25U1V4T#9-j@b51J zD;pOB!yg6)cGiDPHF_Ys7$m__^ZN?}BP$Pz`j$&f USnV6Uvxz1f<`1RvE1I$u* z=pb1R5=WM!UKFIgWMBrx`Hqv%e?UI}eIguF4HGNF|9`(3e*Oj~50M?T&4yr0kSqp) zA3uMAX?9jd+LZ$yoIj)*_gs1|82Oap+h1NV{`#8(#W7v{+nV1&;KT@V$R8etPToz=%Rl=`(XAxpV1sCfIfQOSF({9NLIK(0ITCB0V5htYkrD`f zNs?KNq_hbS9z2M`-|?LTlq)J4MjbHF4gd%+0Ka~p8JAc}82|tP07*qoM6N<$g2w)^xc~qF diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/icon_empty.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/orangecreamcicle.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd85f3127be4a8c33327970b8dae48f82077bd0 GIT binary patch literal 388 zcmV-~0ek+5P)JGB9VnVWg%57zvex|0c8l|7vc|@aNAr1`akx2KM8Z z7?^T@GSV#s7}*6Fe*gN$F!9ekh9X0ChNd?c7#Mb(e1=a?yN9_H)g18e-(Ln+HZBH+ zKMcSS_{-p-qqqd0`W;v9J5x0gg5sR(+%<+@KfVuKE`TPy=Oeou041!3-It$RNbG$~48W)W z6-MGf{L+K-2iS6Zdwcrif)hthGe9kcTR!rt;~n2Qo*~mTt&Xu-j7(+JYD@< J);T3K0RYEmQE~tP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..bb9631211d17a6755f7704b27405bb4f9d74d2d0 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GeV#6kAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z8d_z1?f2KD{t(&m{lEV)d!9G{BPIS788sbMHT!9FNteZ8+TjE9<@dAeaXsLx{NDYK zkAcbP0l+XkK9jsbJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/fill-4.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7df6b2f3ee427ea63fda7eff835b9ed9c5a141 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GvpiiKLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<5FqSiL zTh6Mh`+4evU6#C?uG+?v(FgTe~DWM4fmziPA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/icon.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/icon.png index d06532d6d8fdb085c13164dc145459614ffb19f4..a0afde5f2d26f13e6b787ea7998c01ab16d6337a 100644 GIT binary patch delta 286 zcmV+(0pb3T1Kt9VNq+!IL_t(|+G70w|3AY(0w#t52BQubb-<_tSg2)?Qv(;gK-t&u zjge@Lpn`}}>{!qFpIp6+u}_|Glr*>4{~W|__b`{Dc@&hc-uKMMQs)!G z0SuBJI*OlQa^0a$QZ#h{3ojRwg#foo&GwV8Kzu#*MGRYxUw`3)$5{bWMm>~(jR)3+e^Ygxj zZ;W(x0Mv3ux`e>Ng9jOoa?8PeyJw3wgNx5q5c5Bf%}9F({1N(JXQIf6Z~($$2iueX z>zs8NY3cwLejbLOU%vkDJb8}+YAM+FFgdy3`5K8!~^#ti;Hv*hmh6 zpYNXlNii_nPbLH|zV6O)2FBk%=@0_YB<8Ie3Z}Q-UJa&$R3aJv{{KUJ2e1psp!gc( z5D*P^8zUqA(g60*p@Red{QL^{Jt){=!4HlKMkd-PLS{BDNL2i1fyX~a0-J%C?7(ouph$$w%xts|0qd`i80Sqe!dm3n1La5#(b0av ir~^hFFyb8m5MTgcrE1y4_lYS00000E z$k(u72hrq)0>x1PN&_P^3I?<~KJnq}9UxT!&W8F~3@|o1fa2N^8IV&OGLCjkMjbHf ffPr=ZK!5=NhmN+=4*6_L00000NkvXXu0mjfApL~? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/meta.json b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/meta.json index 3e33d3ec6a6..17d033b1678 100644 --- a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/meta.json +++ b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/pinkdrink.rsi/meta.json @@ -9,6 +9,21 @@ "states": [ { "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/fill-1.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..39a89a7c4252e94a91798402f19351fd506cf6d4 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gfu1goAr-gYTwBP?puppDaoPrsNgEv6-y5-<6i8(dS=IFa zud4q%x0aMJ6-%IUFlZ=osFmHZdyCyV`R&(3jH}r+<_mx%_OZ(_vN2Rn|9XG&ukO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/fill-2.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa4dd5e066a5d11e201c9716b5f8198e2c75730 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gp`I>|Ar-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R`nJjvMg`-`QUu~%f&q=|Zp8`96qt$C#GH%CF6MZ*1d3qs2ySq6awhS&vs#|xJg R$^tE5@O1TaS?83{1OTL$IynFU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..30fbfc3478e0498de4793e131ba80282bb04a970 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GC7v#hAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z5)Q~7a9Y(SZJuYa;nSzX(S~Q%zlGkCiCxvXK|WxK5ERt7d{2%8SxD8u!@~o11c*ik zqDsmPUoKswPd1d1kpWu>N)I4hlNZ8pWBp0`L;=X+_gCLC{C@YAAt%lS%$~An4}-A2 z2ziMBlnaQ(AYf%6^BjhDm}&|CZ=1LR w%>H@z2Lrn@2Ym{n(aLDl0izC}1po*z01g?hMgII+C;$Ke07*qoM6N<$f;Pd2%K!iX literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/meta.json b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/meta.json index 94c898e78ca..69ca3b34121 100644 --- a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/meta.json +++ b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sakeglass.rsi/meta.json @@ -1,14 +1,26 @@ { "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Hyenh#6078", "size": { "x": 32, "y": 32 }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Hyenh#6078", "states": [ { "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-1.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f7784a53479fcd562d4c1dc6008de0c4a9674b GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GzMd|QAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R_Ug&M3IT4j7+&#m0J?J4v3x-^+0#RC?%3?)H|*={j1FtRZ`6Xmj=t^Ji7XfT7P LtDnm{r-UW|!sa&! literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-2.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f1ed4e31627d1cab054286fb4312ecf56381243c GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GlRaG=Ln>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hV&7 zC0t=#%$K0(9{jX#GSAi|_y6^k-+LP8PM+O3_o=<}+}=jTyR+8_B&aM8-E%jZXU)s|_v;?L+pd-a{qpzQ{gqN= k-p&A9!~B+^fq|J}=O@iRg9(ZaK<6=dy85}Sb4q9e09%_};{X5v literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a110b19a2849420b8674b7533a60481c408e1e GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gdp%toLn>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hV&7 zC0t?Dd6M;~Y~B0+)636G+_2m!c_Z?l@t;9(w;4k4h@yYgOw&crcYuv-EEi3A$j|K{PS~8Sllv{1UZiF e79#^A8^e+fPRFBHTzv)f2!p4qpUXO@geCyL+;*t| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-4.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..8956c55b2e0c251fc831475f04f860ede3970fe6 GIT binary patch literal 381 zcmV-@0fPRCP)79u_5e0E9zhWAu(bzRv=9VAv=js{p^c@u?8wX}nLIOF+3w(GEbK4vaE?*xC7h7q95{b?h0zw;=YYKf!(oBP(;GUvnuGyZRP}0i z?eZ(b-=O^**YpMkor{^w0N$_HUa5Feum5CQ&D bKLQK@f<|V50%o~v00000NkvXXu0mjfR*9V> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-5.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/fill-5.png new file mode 100644 index 0000000000000000000000000000000000000000..abda666bd66fbfbad98990112134ee6d0eff381e GIT binary patch literal 431 zcmV;g0Z{&lP)^F%X4MHp%`X*UCo_ zdODh{2dn-%f;@#bBe$B3p?OnXN7MUj1Og`qE znS?m!u*^uXtfErxqFW7`+~> zJ1I5FJV)KsU?~Hq9Gp{ZT)dHmcc9lTPbq5Az$FAiXjo>U4GSZIau#*lfmjd2C>qg$ zRT+$wVN9qx1)~jm^%4)GwS>|(+!VChA)ySyUo1UH>OG*e4hOJx{Z71lk+T$?wMYm> zk)^mjydpt7(1&ye6a>~f%wz|f&~P0%d3b^HV<@G9^BpM53XexOWcPAE48T__hI6pp zuQgIDGk2{~i|Br5ZAh}lBlvu&f5z|W_>P?KZ7<#fLbU($F>Ye;MBb Z3;;S|jsb`8KU4q!002ovPDHLkV1fX(tbG6g literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/icon_empty.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..14d2fbf21de24c5d6b84c52a4b50288154dcfc53 GIT binary patch literal 381 zcmV-@0fPRCP)-2MMzW1LOCIzHvp9XNH^sm4FlAftaZ53DUIQh&&M-gjDxcc<KlqG`osHqwpFa#7tgOH~f)SQTrD&c8M%#p=4j6V0 b00=Mud^2Cz0wn3X00000NkvXXu0mjf>_e46 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/meta.json b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/meta.json index 3e33d3ec6a6..acb41d36dd7 100644 --- a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/meta.json +++ b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sapopicante.rsi/meta.json @@ -9,6 +9,24 @@ "states": [ { "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" } ] } \ No newline at end of file diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-1.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c639c4c838aa9dece84a29d02f5f3bbc931a69c GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GEuJopAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R^Zzhe*!5($52adJUv`LF-$=f@fR`84zJfekxnH1>W}W_Es{)Y0^{kjI}VTQb^a zO{O^0d;2=}=o80Iu|50$>-_lx2RN2of9iBYMe3x*Ee%}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hV&7 zB^;1F;MDa<@~zze`hRIGn= z7iYPZUHi}TCXrk6M#RknN%i&hjJw(z8!NrVm_6S07TPJFb$W2T-i$5Jj&FNF z#Q*;(c|*e9s3v;e5d|%+Lmxz6%&1o}`xxQTyZO8PerC@)3;8D;VrD6YmnMlm&RAS> ig%RpZwp)x0j6h#A8z1%iQ=Sj>5`(9!pUXO@geCxpKW|n5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..d0eae4000242eb60e46d14e696aae22d54a7eab8 GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gk33x*Ln>}1{rUgj{;&g+S{ozVVm^t|11p%_WDQ<51hVt& zV2<#(YOwfjbHd-bfjgTgswsZ>{ye)a-#${J?)SOmA8(DPH_n{OuJiA+`GtK4Tm^hi z3(UAH{(HVQQ{u_{_u~)rC8Ym2bbz6x`M`gF9(j)v7Eiv4%#gDh`|RG?YlyhGx=QSG zl4WE%Gkddy9mCD@J+CArO^#$t=BWRZp8Vk17jT7g{MW0i1)k@+n{0|PU|)_HDMnY1q) Q1^Sl3)78&qol`;+0Lo;6wEzGB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-4.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/fill-4.png new file mode 100644 index 0000000000000000000000000000000000000000..6de8ef9f60f3f6313be25acbc7c8bbb6456606fe GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@jM|46o@Zn6fi8W_tN zxHY@dw^R$n7N>^1OIT9Hu|!Na?a#N#t&Ow&n;K_MW$$r(@I2pbgM|I9i5rpsjsN`k*V;JqrT!g3lVS$v2ao>e{IBP1oH55n zhUfmi+SCO8=r8~EPZUNQN&f%$&&ito%sZetTzLWvKc#Xs#rY4%FPOk^`1yYMnq|iS zqoyDB*c|iW(u!GvIUnuQ3g$F3+&KO^Nzy)FFF7$n{`8My7V`r?#mMK%e0XdxeIqHr z>c_8_tcTbC|C3M{u&21dN$82a(CiA8<&EFv_cMFeS;#-(5Hm|DRBPL_YO2fZ;}*9x jWZ|LESjOPcz{pUgl{kNyWZErY*fMy!`njxgN@xNACa0oJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/icon.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/icon.png index 25dd13a6af6052c56b5cd3b48c6a009adc1fac47..87a1bffde3c78bc9c5668d03c38595ce4b5bf103 100644 GIT binary patch delta 309 zcmV-50m}Y^1lR+RNdbD1N@suS4!FKJZYI%+4I7_REf;uj{*bENaZ)Oya>vK;R+Ja*!UXhX4q0vHxNC;4<+mi2ZwcG&dJJ0|Ptje}*65 zzc4T}{e?S%s@V_)1TOy1`u`Ufh{?gj!SLyxI2gWt`^vx`w&?#~kmG;0WHSE!{e?CT zU}X5uGP^Gp6x@s;KFHT#OSyO${sKh=7(V~~;4_{1*SZ`=nv{fX9u{IRjjDfuE&j(0 zj&pG01o?PfEaT_RWh@NqV;SEV=YNzu*C$1F2Y|qj|7`C;7K75k*H14Pe*NbMi-Y2w zgAvj&zH{I$lC|zm ymy**-1ha{$3m8XR#iI@wb-<_tM!W+60t^5yGMC|yC8?4C0000<|{Ln>}1{rUgj{;&g+S{ozVVm^t|11p%>?l9^c(Xguc zpm2Cvc>Vl|NgMhlHc#2R*S1uKVbh)CLG3E+IhJ)#B`;KIuCi!ooj&_uoLkSrlCO4} zi<-q&v}Xk}@P~QNWlOsHZb#An#2-(X_|M4)O||y(VqC1)8*#t+OV2dskn#fu)z_!- z&R}*Z^zu2SruwhlFR+L065AQZ3mFw|9=w`qMt$45++_`3H3YKvRIoF!NHC;NHgEf| Tlr*<{an^LB{Ts5a++oi literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/meta.json b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/meta.json index 3e33d3ec6a6..17d033b1678 100644 --- a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/meta.json +++ b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/silverjack.rsi/meta.json @@ -9,6 +9,21 @@ "states": [ { "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" } ] } \ No newline at end of file diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/fill-1.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/fill-1.png new file mode 100644 index 0000000000000000000000000000000000000000..44cbfbf3b732ef1cc02958142213769f5119395a GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GiJmTwAr-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z60R^hpJz1Pecr&P;{QimE4I$b%n=?}KfJ!2ZczLEZaU+P8Jh&&v(Kc74G%%1Xb`ThSKQQn-F?O5vm{`8(?aaDH1_h-s%CHD^> zc`3xY->#PJa{2vQv4&1f?vHg1os+pF+@+TyjK09fz+u4fdzog>=Xr(gK!-4Ry85}S Ib4q9e0N1Tj8UO$Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/fill-3.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/fill-3.png new file mode 100644 index 0000000000000000000000000000000000000000..8d027fe94f2288905a4a932abb7bd256e5332b58 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gjh-%!Ar-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-lA>6}?=$k#Cj@}t|J>6z7?B0! z)wLMxxqiN9VBioW)i6dGKD4IR!y}!Qr0^o__x$NQyYs9q{YV zUy{VB?tr~FA2DEye~>s`a>1`ppCS4F-Dd%qn6eP>2beg`bHQj`FzSF&2aGyk)B)56 b009O7e>FX;qZ)XT00000NkvXXu0mjfXGC$X literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/icon_empty.png b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/icon_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..fe6fd09e9ebc02ceb0a1ccdd94acf5b08882f5a2 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G|2}1{rUgj{;&g+S{ozVVm^t|11p%_WDhuXCAqn| z8Q6Y5`Cb1-(Mh8@HVU(@Oqx1Tgja#RK_~p@|BrIJ?yP&=KQ-#EPo+mGgQsG^-q$8K zKK3cg96*a`^S6 zfFJ)g|C%v7%b%5HVEUG2^iqTAzx_pB=_39L%L9jw*i05FT$O&fmOuVqa#GR>hv~n+ z_b0YZ-eV!W^5%pm0ynBZUo;OovT`0reeEwEKlb{%e_0LEht6GN5MEv>(%|rNR;|RW sUCwhPGUG)0!;V9}*S3_Ifr*FVk#B;$ap(ejU{El4y85}Sb4q9e055Nm3;+NC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/meta.json b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/meta.json index 94c898e78ca..7d54c4e15ef 100644 --- a/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/meta.json +++ b/Resources/Textures/Nyanotrasen/Objects/Consumable/Drinks/sojuglass.rsi/meta.json @@ -1,14 +1,29 @@ { "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Hyenh#6078", "size": { "x": 32, "y": 32 }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Hyenh#6078", "states": [ { "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" } ] -} +} \ No newline at end of file From 151b5e1007bd3f99659735a6f76729f583bd54b9 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:40:56 -0700 Subject: [PATCH 035/111] Mirror: Fix SCRAM implant not working while cuffed. Incidentally fix freedom implant working while dead/crit (#266) ## Mirror of PR #25978: [Fix SCRAM implant not working while cuffed. Incidentally fix freedom implant working while dead/crit](https://github.com/space-wizards/space-station-14/pull/25978) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `22e9d6562f21bdd4f0962d6e3b6fcdd81bb4c253` PR opened by nikthechampiongr at 2024-03-10 19:33:05 UTC --- PR changed 13 files with 142 additions and 3 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > fixes #25662 > > > > > ## About the PR > > This pr makes it so you can use the SCRAM implant while cuffed. Also fixes the freedom implant working while you are in crit, or even dead. > > ## Why / Balance > > The implant is made so you can escape horrible situations. It should as such work while in crit. > > ## Technical details > > ActionBlockers now has a specific check to see if someone is conscious. It is also used in the Interaction check now. Actions can now use that check if the bool is set. The bool is now set for the freedom and SCRAM! implant actions. Additionally the SCRAM! action now ignores whether the user can interact in order to be able to use it while cuffed. > > ## Media > > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > :cl: > fix: You can now use the SCRAM! implant while cuffed. > fix: The freedom implant can no longer be used while in crit, or dead.
    Co-authored-by: SimpleStation14 --- Content.Client/Actions/ActionsSystem.cs | 1 + Content.Server/Bed/Sleep/SleepingSystem.cs | 8 +++ .../ActionBlocker/ActionBlockerSystem.cs | 21 ++++++ Content.Shared/Actions/BaseActionComponent.cs | 11 ++- Content.Shared/Actions/SharedActionsSystem.cs | 4 ++ .../Events/InteractionAttemptEvent.cs | 8 +++ .../Systems/MobStateSystem.Subscribers.cs | 2 +- Resources/Prototypes/Actions/crit.yml | 5 +- Resources/Prototypes/Actions/diona.yml | 1 + Resources/Prototypes/Actions/types.yml | 9 +++ .../Entities/Mobs/Player/guardian.yml | 1 + .../Prototypes/Entities/Objects/Fun/pai.yml | 2 + Resources/mapping_actions.yml | 72 +++++++++++++++++++ 13 files changed, 142 insertions(+), 3 deletions(-) diff --git a/Content.Client/Actions/ActionsSystem.cs b/Content.Client/Actions/ActionsSystem.cs index 31d092b25d1..b992e772563 100644 --- a/Content.Client/Actions/ActionsSystem.cs +++ b/Content.Client/Actions/ActionsSystem.cs @@ -95,6 +95,7 @@ private void BaseHandleState(EntityUid uid, BaseActionComponent component, Ba component.Container = EnsureEntity(state.Container, uid); component.EntityIcon = EnsureEntity(state.EntityIcon, uid); component.CheckCanInteract = state.CheckCanInteract; + component.CheckConsciousness = state.CheckConsciousness; component.ClientExclusive = state.ClientExclusive; component.Priority = state.Priority; component.AttachedEntity = EnsureEntity(state.AttachedEntity, uid); diff --git a/Content.Server/Bed/Sleep/SleepingSystem.cs b/Content.Server/Bed/Sleep/SleepingSystem.cs index 5d1def7cec1..685b1087d70 100644 --- a/Content.Server/Bed/Sleep/SleepingSystem.cs +++ b/Content.Server/Bed/Sleep/SleepingSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Examine; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; +using Content.Shared.Interaction.Events; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Slippery; @@ -45,6 +46,7 @@ public override void Initialize() SubscribeLocalEvent(OnInteractHand); SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnSlip); + SubscribeLocalEvent(OnConsciousAttempt); SubscribeLocalEvent(OnInit); } @@ -173,6 +175,12 @@ private void OnSlip(EntityUid uid, SleepingComponent component, SlipAttemptEvent args.Cancel(); } + private void OnConsciousAttempt(EntityUid uid, SleepingComponent component, ConsciousAttemptEvent args) + { + args.Cancel(); + } + + private void OnInit(EntityUid uid, ForcedSleepingComponent component, ComponentInit args) { TrySleeping(uid); diff --git a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs index 6dff8161eef..a914a8f267d 100644 --- a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs +++ b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Bed.Sleep; using Content.Shared.Body.Events; using Content.Shared.DragDrop; using Content.Shared.Emoting; @@ -5,6 +6,8 @@ using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Item; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; using Content.Shared.Movement.Components; using Content.Shared.Movement.Events; using Content.Shared.Speech; @@ -67,6 +70,9 @@ public bool UpdateCanMove(EntityUid uid, InputMoverComponent? component = null) /// public bool CanInteract(EntityUid user, EntityUid? target) { + if (!CanConsciouslyPerformAction(user)) + return false; + var ev = new InteractionAttemptEvent(user, target); RaiseLocalEvent(user, ev); @@ -98,6 +104,21 @@ public bool CanUseHeldEntity(EntityUid user) return !ev.Cancelled; } + + /// + /// Whether a user conscious to perform an action. + /// + /// + /// This should be used when you want a much more permissive check than + /// + public bool CanConsciouslyPerformAction(EntityUid user) + { + var ev = new ConsciousAttemptEvent(user); + RaiseLocalEvent(user, ev); + + return !ev.Cancelled; + } + public bool CanThrow(EntityUid user, EntityUid itemUid) { var ev = new ThrowAttemptEvent(user, itemUid); diff --git a/Content.Shared/Actions/BaseActionComponent.cs b/Content.Shared/Actions/BaseActionComponent.cs index cce7b912c76..6d9242acc1d 100644 --- a/Content.Shared/Actions/BaseActionComponent.cs +++ b/Content.Shared/Actions/BaseActionComponent.cs @@ -1,4 +1,5 @@ -using Robust.Shared.Audio; +using Content.Shared.Mobs; +using Robust.Shared.Audio; using Robust.Shared.Serialization; using Robust.Shared.Utility; @@ -118,6 +119,12 @@ public EntityUid? EntityIcon /// [DataField("checkCanInteract")] public bool CheckCanInteract = true; + /// + /// Whether to check if the user is conscious or not. Can be used instead of + /// for a more permissive check. + /// + [DataField] public bool CheckConsciousness = true; + /// /// If true, this will cause the action to only execute locally without ever notifying the server. /// @@ -177,6 +184,7 @@ public abstract class BaseActionComponentState : ComponentState public NetEntity? Container; public NetEntity? EntityIcon; public bool CheckCanInteract; + public bool CheckConsciousness; public bool ClientExclusive; public int Priority; public NetEntity? AttachedEntity; @@ -204,6 +212,7 @@ protected BaseActionComponentState(BaseActionComponent component, IEntityManager MaxCharges = component.MaxCharges; RenewCharges = component.RenewCharges; CheckCanInteract = component.CheckCanInteract; + CheckConsciousness = component.CheckConsciousness; ClientExclusive = component.ClientExclusive; Priority = component.Priority; AutoPopulate = component.AutoPopulate; diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index a3bfa071308..e909f0a8a30 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Interaction; using Content.Shared.Inventory.Events; using Content.Shared.Mind; +using Content.Shared.Mobs.Components; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.GameStates; @@ -370,6 +371,9 @@ private void OnActionRequest(RequestPerformActionEvent ev, EntitySessionEventArg BaseActionEvent? performEvent = null; + if (action.CheckConsciousness && !_actionBlockerSystem.CanConsciouslyPerformAction(user)) + return; + // Validate request by checking action blockers and the like: switch (action) { diff --git a/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs b/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs index 46dfd20c34d..0024811c369 100644 --- a/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs +++ b/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs @@ -15,6 +15,14 @@ public InteractionAttemptEvent(EntityUid uid, EntityUid? target) public EntityUid? Target { get; } } + /// + /// Raised to determine whether an entity is conscious to perform an action. + /// + public sealed class ConsciousAttemptEvent(EntityUid Uid) : CancellableEntityEventArgs + { + public EntityUid Uid { get; } = Uid; + } + /// /// Event raised directed at the target entity of an interaction to see if the user is allowed to perform some /// generic interaction. diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs b/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs index 51991332539..0c2fcc05794 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs @@ -28,7 +28,7 @@ private void SubscribeEvents() SubscribeLocalEvent(CheckAct); SubscribeLocalEvent(CheckAct); SubscribeLocalEvent(CheckAct); - SubscribeLocalEvent(CheckAct); + SubscribeLocalEvent(CheckAct); SubscribeLocalEvent(CheckAct); SubscribeLocalEvent(OnSpeakAttempt); SubscribeLocalEvent(OnEquipAttempt); diff --git a/Resources/Prototypes/Actions/crit.yml b/Resources/Prototypes/Actions/crit.yml index bdd09d697ec..705ee6ee6b3 100644 --- a/Resources/Prototypes/Actions/crit.yml +++ b/Resources/Prototypes/Actions/crit.yml @@ -1,4 +1,4 @@ -# Actions added to mobs in crit. +# Actions added to mobs in crit. - type: entity id: ActionCritSuccumb name: Succumb @@ -8,6 +8,7 @@ - type: InstantAction itemIconStyle: NoItem checkCanInteract: false + checkConsciousness: false icon: sprite: Mobs/Ghosts/ghost_human.rsi state: icon @@ -22,6 +23,7 @@ - type: InstantAction itemIconStyle: NoItem checkCanInteract: false + checkConsciousness: false icon: sprite: Interface/Actions/actions_crit.rsi state: fakedeath @@ -37,6 +39,7 @@ - type: InstantAction itemIconStyle: NoItem checkCanInteract: false + checkConsciousness: false icon: sprite: Interface/Actions/actions_crit.rsi state: lastwords diff --git a/Resources/Prototypes/Actions/diona.yml b/Resources/Prototypes/Actions/diona.yml index 1215276f283..11db30386a5 100644 --- a/Resources/Prototypes/Actions/diona.yml +++ b/Resources/Prototypes/Actions/diona.yml @@ -10,6 +10,7 @@ state: brain event: !type:GibActionEvent {} checkCanInteract: false + checkConsciousness: false - type: entity id: DionaReformAction diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index b2038b04b75..b91b26e3570 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -29,6 +29,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false icon: Interface/Actions/zombie-turn.png event: !type:ZombifySelfActionEvent @@ -66,6 +67,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false itemIconStyle: BigAction priority: -20 icon: @@ -82,6 +84,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false itemIconStyle: BigAction priority: -20 icon: @@ -143,6 +146,7 @@ noSpawn: true components: - type: InstantAction + checkCanInteract: false charges: 2 useDelay: 5 itemIconStyle: BigAction @@ -186,6 +190,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false icon: Interface/Actions/harmOff.png iconOn: Interface/Actions/harm.png event: !type:ToggleCombatActionEvent @@ -256,6 +261,7 @@ - type: InstantAction clientExclusive: true checkCanInteract: false + checkConsciousness: false temporary: true icon: { sprite: Objects/Tools/multitool.rsi, state: icon } event: !type:ClearAllOverlaysEvent @@ -279,6 +285,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon } event: !type:SleepActionEvent @@ -291,6 +298,7 @@ - type: InstantAction icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon } checkCanInteract: false + checkConsciousness: false event: !type:WakeActionEvent - type: entity @@ -328,6 +336,7 @@ event: !type:ToggleEyesActionEvent useDelay: 1 # so u cant give yourself and observers eyestrain by rapidly spamming the action checkCanInteract: false + checkConsciousness: false - type: entity id: ActionToggleWagging diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index d892b31fac3..c7cd40988d4 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -253,3 +253,4 @@ event: !type:GuardianToggleActionEvent useDelay: 2 checkCanInteract: false + checkConsciousness: false diff --git a/Resources/Prototypes/Entities/Objects/Fun/pai.yml b/Resources/Prototypes/Entities/Objects/Fun/pai.yml index 36e20c22a9c..537562f4618 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/pai.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/pai.yml @@ -138,6 +138,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false icon: Interface/Actions/pai-midi.png event: !type:OpenUiActionEvent key: enum.InstrumentUiKey.Key @@ -150,6 +151,7 @@ components: - type: InstantAction checkCanInteract: false + checkConsciousness: false icon: { sprite: Interface/Actions/pai-map.rsi, state: icon } event: !type:OpenUiActionEvent key: enum.StationMapUiKey.Key diff --git a/Resources/mapping_actions.yml b/Resources/mapping_actions.yml index 0dda6b38a52..9498c3062a3 100644 --- a/Resources/mapping_actions.yml +++ b/Resources/mapping_actions.yml @@ -3,6 +3,7 @@ entity: ReinforcedWindow keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -17,6 +18,7 @@ entity: WallSolid keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -31,6 +33,7 @@ entity: WallReinforced keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -45,6 +48,7 @@ entity: Window keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -59,6 +63,7 @@ entity: Firelock keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -73,6 +78,7 @@ entity: Grille keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -86,6 +92,7 @@ icon: Interface/VerbIcons/delete.svg.192dpi.png keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -104,6 +111,7 @@ entity: GasPipeStraight keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -118,6 +126,7 @@ entity: GasPipeBend keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -132,6 +141,7 @@ entity: GasPipeTJunction keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -146,6 +156,7 @@ entity: GasPipeFourway keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -160,6 +171,7 @@ entity: GasVentScrubber keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -174,6 +186,7 @@ entity: GasVentPump keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -188,6 +201,7 @@ entity: AirAlarm keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -202,6 +216,7 @@ entity: FireAlarm keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -216,6 +231,7 @@ entity: APCBasic keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -230,6 +246,7 @@ entity: CableApcExtension keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -244,6 +261,7 @@ entity: CableMV keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -258,6 +276,7 @@ entity: CableHV keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -272,6 +291,7 @@ entity: SubstationBasic keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -286,6 +306,7 @@ entity: Poweredlight keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -300,6 +321,7 @@ entity: EmergencyLight keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -314,6 +336,7 @@ entity: SMESBasic keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -328,6 +351,7 @@ entity: TableWood keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -342,6 +366,7 @@ entity: Table keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -356,6 +381,7 @@ entity: ChairWood keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -370,6 +396,7 @@ entity: Chair keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -384,6 +411,7 @@ entity: ChairOfficeLight keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -398,6 +426,7 @@ entity: StoolBar keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -412,6 +441,7 @@ entity: Stool keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -426,6 +456,7 @@ entity: Rack keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -440,6 +471,7 @@ entity: ChairOfficeDark keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -454,6 +486,7 @@ entity: LampGold keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -468,6 +501,7 @@ entity: DisposalPipe keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -482,6 +516,7 @@ entity: DisposalBend keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -496,6 +531,7 @@ entity: DisposalJunction keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -510,6 +546,7 @@ entity: DisposalJunctionFlipped keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -524,6 +561,7 @@ entity: DisposalRouter keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -538,6 +576,7 @@ entity: DisposalRouterFlipped keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -552,6 +591,7 @@ entity: DisposalUnit keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -566,6 +606,7 @@ entity: DisposalTrunk keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -580,6 +621,7 @@ entity: SignDisposalSpace keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -594,6 +636,7 @@ entity: Windoor keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -608,6 +651,7 @@ entity: WindowDirectional keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -622,6 +666,7 @@ entity: WindowReinforcedDirectional keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -636,6 +681,7 @@ entity: PlasmaWindowDirectional keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -650,6 +696,7 @@ entity: Railing keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -664,6 +711,7 @@ entity: RailingCorner keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -678,6 +726,7 @@ entity: RailingCornerSmall keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -693,6 +742,7 @@ name: RailingRound keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -706,6 +756,7 @@ entity: AirlockMaintLocked keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -720,6 +771,7 @@ entity: AirlockGlass keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -734,6 +786,7 @@ entity: AirlockServiceLocked keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -748,6 +801,7 @@ entity: AirlockSecurityLocked keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -762,6 +816,7 @@ entity: AirlockCommand keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -776,6 +831,7 @@ entity: AirlockScience keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -790,6 +846,7 @@ entity: AirlockMedical keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -804,6 +861,7 @@ entity: AirlockEngineering keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -818,6 +876,7 @@ entity: AirlockCargo keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -837,6 +896,7 @@ state: bot_left iconColor: '#EFB34196' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -857,6 +917,7 @@ state: delivery iconColor: '#EFB34196' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -877,6 +938,7 @@ state: warn_full iconColor: '#EFB34196' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -897,6 +959,7 @@ state: halftile_overlay iconColor: '#EFB34196' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -917,6 +980,7 @@ state: halftile_overlay iconColor: '#334E6DC8' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -937,6 +1001,7 @@ state: halftile_overlay iconColor: '#52B4E996' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -957,6 +1022,7 @@ state: halftile_overlay iconColor: '#9FED5896' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -977,6 +1043,7 @@ state: halftile_overlay iconColor: '#DE3A3A96' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -997,6 +1064,7 @@ state: halftile_overlay iconColor: '#D381C996' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -1017,6 +1085,7 @@ state: halftile_overlay iconColor: '#A4610696' checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -1031,6 +1100,7 @@ icon: /Textures/Tiles/steel.png keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -1044,6 +1114,7 @@ icon: /Textures/Tiles/plating.png keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True @@ -1059,6 +1130,7 @@ icon: /Textures/Tiles/cropped_parallax.png keywords: [] checkCanInteract: False + checkConsciousness: False clientExclusive: True autoPopulate: False temporary: True From 144ee9c417ee00d64c0eb336b41fe4570805dfa6 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:41:12 -0700 Subject: [PATCH 036/111] Mirror: spawn panel rock crab suffix (#276) ## Mirror of PR #26264: [spawn panel rock crab suffix](https://github.com/space-wizards/space-station-14/pull/26264) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `c28cbe40c31f3f45d1127b88bc2c306acebd76f3` PR opened by IProduceWidgets at 2024-03-19 16:44:28 UTC --- PR changed 1 files with 2 additions and 2 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > > > That's a crab. > > ## Why / Balance > > When youre placing a crab, its good to know its a crab. > > ## Technical details > > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > no changelog only crab.
    Co-authored-by: SimpleStation14 --- Resources/Prototypes/Entities/Structures/Walls/asteroid.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml index d1a6587d199..a8cb0b1cb8a 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml @@ -214,7 +214,7 @@ - type: entity id: AsteroidRockTinCrab parent: AsteroidRockTin - suffix: Iron + suffix: Iron Crab components: - type: OreVein oreChance: 1.0 @@ -299,7 +299,7 @@ id: AsteroidRockMining parent: AsteroidRock name: asteroid rock - suffix: higher ore yield + suffix: higher ore yield .33 description: An asteroid. components: - type: OreVein From e967bd245101f9c25899ca68837fb67f52fbb105 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:41:27 -0700 Subject: [PATCH 037/111] Mirror: Zombies can very slowly regen heat and shock damage (#264) ## Mirror of PR #25925: [Zombies can very slowly regen heat and shock damage](https://github.com/space-wizards/space-station-14/pull/25925) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `3884c2d2d2e8c907a33cbef28a55bda701cc4963` PR opened by shampunj at 2024-03-08 05:06:55 UTC --- PR changed 1 files with 3 additions and 1 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > Zombies have learned to regenerate burns very slowly > ## Why / Balance > > Make zombies stronger, make it possible to get up from crit when severely burned > ## Technical details > > n/a > ## Media > > > - [ ] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > :cl: > - tweak: Zombies now passively heal 1 heat/shock damage every 50 seconds
    Co-authored-by: SimpleStation14 --- Content.Shared/Zombies/ZombieComponent.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Zombies/ZombieComponent.cs b/Content.Shared/Zombies/ZombieComponent.cs index 85e1599e48a..be3fdbdd01a 100644 --- a/Content.Shared/Zombies/ZombieComponent.cs +++ b/Content.Shared/Zombies/ZombieComponent.cs @@ -110,7 +110,9 @@ public sealed partial class ZombieComponent : Component, IAntagStatusIconCompone { { "Blunt", -0.4 }, { "Slash", -0.2 }, - { "Piercing", -0.2 } + { "Piercing", -0.2 }, + { "Heat", -0.02 }, + { "Shock", -0.02 } } }; From b8ad6e48d090793a8e7b4bf9582e720fd7036b39 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:41:43 -0700 Subject: [PATCH 038/111] Mirror: Monkey and gorilla melee weapon fix (#281) ## Mirror of PR #26288: [Monkey and gorilla melee weapon fix](https://github.com/space-wizards/space-station-14/pull/26288) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `3836da964cab669e2c2ddbd071a666e93eeb4ec4` PR opened by Dutch-VanDerLinde at 2024-03-20 13:38:25 UTC --- PR changed 1 files with 11 additions and 0 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > when they hit things it made the no hit sound, this fixes it > > ## Why / Balance > more realistic > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase >
    Co-authored-by: SimpleStation14 --- Resources/Prototypes/Entities/Mobs/NPCs/animals.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 380f7801710..48f369f05ed 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1031,6 +1031,8 @@ bloodMaxVolume: 300 # if you fuck with the gorilla he will harambe you - type: MeleeWeapon + soundHit: + collection: Punch damage: types: Blunt: 20 @@ -1221,6 +1223,15 @@ path: /Audio/Animals/ferret_happy.ogg interactFailureSound: path: /Audio/Items/wirecutter.ogg + - type: MeleeWeapon + soundHit: + path: /Audio/Effects/bite.ogg + angle: 30 + animation: WeaponArcBite + damage: + types: + Blunt: 3 + Piercing: 3 - type: Butcherable butcheringType: Spike spawned: From 3c06ff16151b750c517696744f9d80396c1d5a73 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:44:41 -0700 Subject: [PATCH 039/111] Mirror: Attempt at a more noticably whispered bubble (#171) ## Mirror of PR #25602: [Attempt at a more noticably whispered bubble](https://github.com/space-wizards/space-station-14/pull/25602) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `4f698a6e0d74d28713e2dabbfb20969477538e11` PR opened by maylokana at 2024-02-26 14:44:39 UTC PR merged by web-flow at 2024-03-13 08:03:32 UTC --- PR changed 2 files with 10 additions and 1 deletions. The PR had the following labels: ---

    Original Body

    > > > > ## About the PR > > Added a bigger difference between talk bubbles and whisper bubbles > > ## Why / Balance > > Because (at least for me) it was a little difficult to see when someone was whispering vs when someone was normally speaking. There is a small change between borders, but it is hard to tell between a lot of bubbles at once > > ## Technical details > > There is probably a better way to do this > One new line in `SpeechBubble` checking if `speechStyleClass` is `"whisperBox"`, if true manually formats `bubbleContent` > > ## Media > > Screenshot showing new differences between the two bubbles > ![hellotest](https://github.com/space-wizards/space-station-14/assets/88361930/3fb9cedf-c9fa-4f1f-945a-0fe9109cf94d) > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > None that I know of > > **Changelog** > > > :cl: > - tweak: Italicized whisper bubbles >
    Co-authored-by: maylokana <88361930+maylokana@users.noreply.github.com> --- Content.Client/Chat/UI/SpeechBubble.cs | 3 ++- Content.Client/Stylesheets/StyleNano.cs | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Content.Client/Chat/UI/SpeechBubble.cs b/Content.Client/Chat/UI/SpeechBubble.cs index 82eccbcec84..68c937a7885 100644 --- a/Content.Client/Chat/UI/SpeechBubble.cs +++ b/Content.Client/Chat/UI/SpeechBubble.cs @@ -252,7 +252,8 @@ protected override Control BuildBubble(ChatMessage message, string speechStyleCl var bubbleContent = new RichTextLabel { MaxWidth = SpeechMaxWidth, - Margin = new Thickness(2, 6, 2, 2) + Margin = new Thickness(2, 6, 2, 2), + StyleClasses = { "bubbleContent" } }; //We'll be honest. *Yes* this is hacky. Doing this in a cleaner way would require a bottom-up refactor of how saycode handles sending chat messages. -Myr diff --git a/Content.Client/Stylesheets/StyleNano.cs b/Content.Client/Stylesheets/StyleNano.cs index e1f32a9e5e5..13ba259dbcd 100644 --- a/Content.Client/Stylesheets/StyleNano.cs +++ b/Content.Client/Stylesheets/StyleNano.cs @@ -926,6 +926,14 @@ public StyleNano(IResourceCache resCache) : base(resCache) new StyleProperty(PanelContainer.StylePropertyPanel, whisperBox) }), + new StyleRule(new SelectorChild( + new SelectorElement(typeof(PanelContainer), new[] {"speechBox", "whisperBox"}, null, null), + new SelectorElement(typeof(RichTextLabel), new[] {"bubbleContent"}, null, null)), + new[] + { + new StyleProperty("font", notoSansItalic12), + }), + new StyleRule(new SelectorChild( new SelectorElement(typeof(PanelContainer), new[] {"speechBox", "emoteBox"}, null, null), new SelectorElement(typeof(RichTextLabel), null, null, null)), From c23aff04818f44ab46544032ce0b5442ce0d8b84 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:45:01 -0700 Subject: [PATCH 040/111] Mirror: Remove butchering popup when clicking own sprite with a knife (#169) ## Mirror of PR #26051: [Remove butchering popup when clicking own sprite with a knife](https://github.com/space-wizards/space-station-14/pull/26051) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `4e57f1977e3d3e8a48e0d054bf0043af40abc048` PR opened by Gyrandola at 2024-03-12 19:13:34 UTC PR merged by web-flow at 2024-03-13 03:52:20 UTC --- PR changed 1 files with 1 additions and 1 deletions. The PR had the following labels: ---

    Original Body

    > > > > ## About the PR > > Prevents a useless butchering-related popup when one clicks themselves with a knife. > > ## Why / Balance > > Fixes #26025 > > ## Technical details > > Simple (target != user) check > > ## Media > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > > :cl: > - fix: Clicking yourself with a knife no longer triggers a butchering popup > >
    Co-authored-by: Gyrandola --- Content.Server/Kitchen/EntitySystems/SharpSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs index dfd3bc613cb..2c5f88baec7 100644 --- a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs @@ -63,7 +63,7 @@ private bool TryStartButcherDoAfter(EntityUid knife, EntityUid target, EntityUid if (TryComp(target, out var mobState) && !_mobStateSystem.IsDead(target, mobState)) return false; - if (butcher.Type != ButcheringType.Knife) + if (butcher.Type != ButcheringType.Knife && target != user) { _popupSystem.PopupEntity(Loc.GetString("butcherable-different-tool", ("target", target)), knife, user); return true; From 7c55b6afc6d9bdddc3fec310347f4ae9b2383518 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 21:47:42 -0700 Subject: [PATCH 041/111] Mirror: Fix mailing units turning into disposal units while recharging. (#387) ## Mirror of PR #26383: [Fix mailing units turning into disposal units while recharging.](https://github.com/space-wizards/space-station-14/pull/26383) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `94e4755a8de6885c97fac1cfb767144e8e07981a` PR opened by nikthechampiongr at 2024-03-24 11:57:45 UTC --- PR changed 2 files with 14 additions and 3 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > fixes #18275 > > > > ## About the PR > > This fixes mailing units appearing as disposal units when flushed. > > ## Technical details > > The states were hardcoded. > > Now they are not. > > Bug seems to have been introduced in #17803 as a part of a larger refactor on disposal units. To my understanding, this was made in error with the logic that no other objects would ever have a different animation when flushing and charging but I am not sure. > > ## Media > > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > > > > :cl: > - fix: Mailing units no longer spontaneously turn into disposal units when flushed.
    Co-authored-by: SimpleStation14 --- .../Disposal/Systems/DisposalUnitSystem.cs | 15 ++++++++++++--- .../Entities/Structures/Piping/Disposal/units.yml | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs index 344bd2ec979..8c40c784219 100644 --- a/Content.Client/Disposal/Systems/DisposalUnitSystem.cs +++ b/Content.Client/Disposal/Systems/DisposalUnitSystem.cs @@ -22,6 +22,9 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem private const string AnimationKey = "disposal_unit_animation"; + private const string DefaultFlushState = "disposal-flush"; + private const string DefaultChargeState = "disposal-charging"; + public override void Initialize() { base.Initialize(); @@ -101,12 +104,18 @@ private void UpdateState(EntityUid uid, SharedDisposalUnitComponent unit, Sprite sprite.LayerSetVisible(DisposalUnitVisualLayers.Base, state == VisualState.Anchored); sprite.LayerSetVisible(DisposalUnitVisualLayers.BaseFlush, state is VisualState.Flushing or VisualState.Charging); + var chargingState = sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseCharging, out var chargingLayer) + ? sprite.LayerGetState(chargingLayer) + : new RSI.StateId(DefaultChargeState); + // This is a transient state so not too worried about replaying in range. if (state == VisualState.Flushing) { if (!_animationSystem.HasRunningAnimation(uid, AnimationKey)) { - var flushState = new RSI.StateId("disposal-flush"); + var flushState = sprite.LayerMapTryGet(DisposalUnitVisualLayers.BaseFlush, out var flushLayer) + ? sprite.LayerGetState(flushLayer) + : new RSI.StateId(DefaultFlushState); // Setup the flush animation to play var anim = new Animation @@ -124,7 +133,7 @@ private void UpdateState(EntityUid uid, SharedDisposalUnitComponent unit, Sprite // Return to base state (though, depending on how the unit is // configured we might get an appearance change event telling // us to go to charging state) - new AnimationTrackSpriteFlick.KeyFrame("disposal-charging", (float) unit.FlushDelay.TotalSeconds) + new AnimationTrackSpriteFlick.KeyFrame(chargingState, (float) unit.FlushDelay.TotalSeconds) } }, } @@ -147,7 +156,7 @@ private void UpdateState(EntityUid uid, SharedDisposalUnitComponent unit, Sprite } else if (state == VisualState.Charging) { - sprite.LayerSetState(DisposalUnitVisualLayers.BaseFlush, new RSI.StateId("disposal-charging")); + sprite.LayerSetState(DisposalUnitVisualLayers.BaseFlush, chargingState); } else { diff --git a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml index c5f04d80a14..1193182d09f 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml @@ -16,6 +16,8 @@ map: [ "enum.DisposalUnitVisualLayers.Unanchored" ] - state: disposal map: [ "enum.DisposalUnitVisualLayers.Base" ] + - state: disposal-charging + map: [ "enum.DisposalUnitVisualLayers.BaseCharging" ] - state: disposal-flush map: [ "enum.DisposalUnitVisualLayers.BaseFlush" ] - state: dispover-charge From 42145993f831f7c3da0260c84431b02a4e5affde Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 12 May 2024 01:22:03 -0400 Subject: [PATCH 042/111] Fix Double Trade Station Bug (#351) # Description This fixes a bug introduced inadvertently by https://github.com/Simple-Station/Einstein-Engines/pull/344 by adding a CVar that makes it a choice to be made by our downstreams. Also, welcome to our new CVar standard where they should be included in other systems. --------- Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> --- .../Cargo/Systems/CargoSystem.CVars.cs | 26 +++++++++++++++++++ .../Cargo/Systems/CargoSystem.Shuttle.cs | 5 ++-- .../Prototypes/Entities/Stations/base.yml | 1 + 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 Content.Server/Cargo/Systems/CargoSystem.CVars.cs diff --git a/Content.Server/Cargo/Systems/CargoSystem.CVars.cs b/Content.Server/Cargo/Systems/CargoSystem.CVars.cs new file mode 100644 index 00000000000..9072362fb46 --- /dev/null +++ b/Content.Server/Cargo/Systems/CargoSystem.CVars.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Configuration; + +namespace Content.Server.Cargo.Systems +{ + public sealed partial class CargoSystem + { + [Dependency] private readonly IConfigurationManager _cfg = default!; + } + + [CVarDefs] + public sealed class CargoCVars + { + /// + /// Determines if a trade station spawns in its own FTL map. + /// + /// + /// Set this to true if and only if you are disabling the normal spawning method. + /// Otherwise you get two trade stations. + /// This does NOTHING to the trade station that spawns on the default map. + /// To change that, in Resources/Prototypes/Entities/Stations/base.yml; + /// comment out the "trade:" section. + /// + public static readonly CVarDef CreateCargoMap = + CVarDef.Create("cargo.tradestation_spawns_in_ftl_map", false, CVar.SERVERONLY); + } +} diff --git a/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs b/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs index 44e2b2c7d05..3e39440da56 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs @@ -19,6 +19,7 @@ using Robust.Shared.Audio; using Robust.Shared.Physics.Components; using Robust.Shared.Utility; +using Robust.Shared.Configuration; namespace Content.Server.Cargo.Systems; @@ -27,7 +28,7 @@ public sealed partial class CargoSystem /* * Handles cargo shuttle / trade mechanics. */ - + [Dependency] private readonly IConfigurationManager _confMan = default!; public MapId? CargoMap { get; private set; } private static readonly SoundPathSpecifier ApproveSound = new("/Audio/Effects/Cargo/ping.ogg"); @@ -369,7 +370,7 @@ private void OnStationInitialize(StationInitializedEvent args) if (!HasComp(args.Station)) // No cargo, L return; - if (_cfgManager.GetCVar(CCVars.GridFill)) + if (_cfgManager.GetCVar(CCVars.GridFill) && _confMan.GetCVar(CargoCVars.CreateCargoMap)) SetupTradePost(); } diff --git a/Resources/Prototypes/Entities/Stations/base.yml b/Resources/Prototypes/Entities/Stations/base.yml index ae8d1313d0e..2502243e0ce 100644 --- a/Resources/Prototypes/Entities/Stations/base.yml +++ b/Resources/Prototypes/Entities/Stations/base.yml @@ -49,6 +49,7 @@ trade: addComponents: - type: ProtectedGrid + # If you comment out the tradestation, make sure to also set cargo.tradestation_spawns_in_ftl_map to TRUE - type: TradeStation paths: - /Maps/Shuttles/trading_outpost.yml From c51af1b4dd021c9bae3fd20ca059fc9d712242d6 Mon Sep 17 00:00:00 2001 From: stellar-novas Date: Sun, 12 May 2024 01:31:34 -0400 Subject: [PATCH 043/111] Remove glibc from shell.nix (#401) Change just for the nix devenv, Currently it pulls glibc from 23.11, which breaks the devenv if the rest of your system is on a different version, such as unstable. --- shell.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/shell.nix b/shell.nix index da363feda9c..9a1b0ca4290 100644 --- a/shell.nix +++ b/shell.nix @@ -12,7 +12,6 @@ let SDL2 libGL openal - glibc freetype fluidsynth soundfont-fluid From 763da782d4e4929d8f09d7292a3b8312c3656b6c Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 22:36:24 -0700 Subject: [PATCH 044/111] Mirror: Spray Paint (Review Ready) (#258) ## Mirror of PR #23003: [Spray Paint (Review Ready)](https://github.com/space-wizards/space-station-14/pull/23003) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `e4d5e7f1aebfc37b1bc3453fdb39578f3897b6a1` PR opened by brainfood1183 at 2023-12-26 12:15:46 UTC --- PR changed 41 files with 1008 additions and 11 deletions. The PR had the following labels: - Changes: Sprites - Status: Needs Review ---

    Original Body

    > Added - new spray paint sprites and entities. > Added - paint system which lets you paint over entities. > > https://github.com/space-wizards/space-station-14/assets/113240905/b1b30678-b9c5-45e2-83a7-d146d02c3751 > > - [x] Spray paint can paint objects. > - [x] Spray paint can come in different colors. > - [x] Spray paint can be removed. > - [x] Add a doafter for removing paint. > - [x] Stealth objects will keep their post shader. > - [x] Sprite outlines work after object is sprayed. > - [x] Add doafter for applying paint. > - [x] Add a blacklist for items that should not be painted. > - [x] entity sprites in icon slots appear colored correctly. > - [x] Add verbs for paint and remove paint for painting containers. > - [x] Spraying an entity with inventory slots. Now any items in inventory slots are also painted. > - [x] Spray paints now use fewer entities (no cap, open and closed entities) instead they use OpenableComponent and visualizers. > - [x] Spray paints must be opened to use them and can be resealed. > > What Can Be Painted > > Everything with the following exceptions, Mobs with humanoidAppearanceComponent, Items with RandomSpriteComponent, BlackListed Entities such as Holograms, Entities which go under the floor, Entities that are already painted. > > How it works > > Painting an entity will attempt to add both a greyscale shader and color to each layer of the entity. This will fail if the target has humanoidappearance, is already painted, has randomspritecomponent, is an under floor entity or is blacklisted from being painted. > > when paint is applied each layer is shaded and colored only if there is no existing shader. > The icon, inhands and clothing sprites are recolored and shaded. > > When an entity is painted it cannot be painted over without first removing the current paint. > > To remove the paint you use soap on the painted entity. When soap is used on the entity the color is removed (if the layer had a color prior to removal it will revert to that color, seems like it is color + color then color - color to end up back at original color) from the layer provided the current color of the layer matches the color in paintedcomponent. The shader is also removed provided the current shader matches the one in paintedcomponent. > > bugs & work arounds > > Currently entities with RandomSpriteComponent cannot be sprayed, these include screwdrivers and wirecutters (essentially sprites that have a random color on spawn. Entities that have a specific color on spawn work fine.) The paint system checks for RandomSpriteComponent and provides the all ready painted response. > > Entities and clothing in hand or equipped if sprayed or paint removed will not update their visual status until interacted with. > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > > **Changelog** > :cl: > - add: Added Spray Paints. > >
    Co-authored-by: SimpleStation14 --- Content.Client/Paint/PaintVisualizerSystem.cs | 120 +++++++ Content.Server/Paint/PaintSystem.cs | 180 +++++++++++ .../EntitySystems/SpawnItemsOnUseSystem.cs | 6 +- Content.Shared/Paint/PaintComponent.cs | 60 ++++ Content.Shared/Paint/PaintDoAfterEvent.cs | 9 + Content.Shared/Paint/PaintRemoverComponent.cs | 24 ++ .../Paint/PaintRemoverDoAfterEvent.cs | 9 + Content.Shared/Paint/PaintRemoverSystem.cs | 96 ++++++ Content.Shared/Paint/PaintedComponent.cs | 41 +++ Content.Shared/Paint/SharedPaintSystem.cs | 11 + .../SprayPainter/SharedSprayPainterSystem.cs | 3 + Resources/Locale/en-US/paint/paint.ftl | 8 + .../Prototypes/Catalog/Cargo/cargo_fun.yml | 10 + .../Prototypes/Catalog/Fills/Crates/fun.yml | 48 ++- .../Prototypes/Catalog/Fills/Lockers/misc.yml | 4 + .../Markers/Spawners/Random/crates.yml | 1 + .../Markers/Spawners/Random/maintenance.yml | 5 + .../Prototypes/Entities/Mobs/NPCs/carp.yml | 1 + .../Entities/Mobs/NPCs/revenant.yml | 3 + .../Entities/Mobs/Player/guardian.yml | 2 + .../Entities/Objects/Fun/spray_paint.yml | 292 ++++++++++++++++++ .../Objects/Materials/Sheets/glass.yml | 1 + .../Objects/Materials/Sheets/metal.yml | 1 + .../Objects/Materials/Sheets/other.yml | 3 + .../Entities/Objects/Materials/materials.yml | 1 + .../Entities/Objects/Misc/tiles.yml | 3 + .../Objects/Specific/Janitorial/soap.yml | 1 + .../Objects/Weapons/Melee/e_sword.yml | 4 + .../Structures/Decoration/bonfire.yml | 3 + .../Structures/Holographic/projections.yml | 3 + .../Entities/Structures/hydro_tray.yml | 3 + Resources/Prototypes/tags.yml | 3 + .../Textures/Interface/VerbIcons/paint.svg | 39 +++ .../Interface/VerbIcons/paint.svg.192dpi.png | Bin 0 -> 15653 bytes .../VerbIcons/paint.svg.192dpi.png.yml | 2 + .../Fun/spraycans.rsi/clown-inhand-left.png | Bin 0 -> 20773 bytes .../Fun/spraycans.rsi/clown-inhand-right.png | Bin 0 -> 20783 bytes .../Objects/Fun/spraycans.rsi/meta.json | 19 +- .../Fun/spraycans.rsi/spray-inhand-left.png | Bin 0 -> 21199 bytes .../Fun/spraycans.rsi/spray-inhand-right.png | Bin 0 -> 21213 bytes .../Objects/Fun/spraycans.rsi/spray_cap.png | Bin 246 -> 0 bytes 41 files changed, 1008 insertions(+), 11 deletions(-) create mode 100644 Content.Client/Paint/PaintVisualizerSystem.cs create mode 100644 Content.Server/Paint/PaintSystem.cs create mode 100644 Content.Shared/Paint/PaintComponent.cs create mode 100644 Content.Shared/Paint/PaintDoAfterEvent.cs create mode 100644 Content.Shared/Paint/PaintRemoverComponent.cs create mode 100644 Content.Shared/Paint/PaintRemoverDoAfterEvent.cs create mode 100644 Content.Shared/Paint/PaintRemoverSystem.cs create mode 100644 Content.Shared/Paint/PaintedComponent.cs create mode 100644 Content.Shared/Paint/SharedPaintSystem.cs create mode 100644 Resources/Locale/en-US/paint/paint.ftl create mode 100644 Resources/Prototypes/Entities/Objects/Fun/spray_paint.yml create mode 100644 Resources/Textures/Interface/VerbIcons/paint.svg create mode 100644 Resources/Textures/Interface/VerbIcons/paint.svg.192dpi.png create mode 100644 Resources/Textures/Interface/VerbIcons/paint.svg.192dpi.png.yml create mode 100644 Resources/Textures/Objects/Fun/spraycans.rsi/clown-inhand-left.png create mode 100644 Resources/Textures/Objects/Fun/spraycans.rsi/clown-inhand-right.png create mode 100644 Resources/Textures/Objects/Fun/spraycans.rsi/spray-inhand-left.png create mode 100644 Resources/Textures/Objects/Fun/spraycans.rsi/spray-inhand-right.png delete mode 100644 Resources/Textures/Objects/Fun/spraycans.rsi/spray_cap.png diff --git a/Content.Client/Paint/PaintVisualizerSystem.cs b/Content.Client/Paint/PaintVisualizerSystem.cs new file mode 100644 index 00000000000..6c99b2d35f0 --- /dev/null +++ b/Content.Client/Paint/PaintVisualizerSystem.cs @@ -0,0 +1,120 @@ +using System.Linq; +using Robust.Client.GameObjects; +using static Robust.Client.GameObjects.SpriteComponent; +using Content.Shared.Clothing; +using Content.Shared.Hands; +using Content.Shared.Paint; +using Robust.Client.Graphics; +using Robust.Shared.Prototypes; + +namespace Content.Client.Paint +{ + public sealed class PaintedVisualizerSystem : VisualizerSystem + { + /// + /// Visualizer for Paint which applies a shader and colors the entity. + /// + + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly IPrototypeManager _protoMan = default!; + + public ShaderInstance? Shader; // in Robust.Client.Graphics so cannot move to shared component. + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnHeldVisualsUpdated); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnEquipmentVisualsUpdated); + } + + protected override void OnAppearanceChange(EntityUid uid, PaintedComponent component, ref AppearanceChangeEvent args) + { + // ShaderPrototype sadly in Robust.Client, cannot move to shared component. + Shader = _protoMan.Index(component.ShaderName).Instance(); + + if (args.Sprite == null) + return; + + if (!_appearance.TryGetData(uid, PaintVisuals.Painted, out bool isPainted)) + return; + + var sprite = args.Sprite; + + + foreach (var spriteLayer in sprite.AllLayers) + { + if (spriteLayer is not Layer layer) + continue; + + if (layer.Shader == null) // If shader isn't null we dont want to replace the original shader. + { + layer.Shader = Shader; + layer.Color = component.Color; + } + } + } + + private void OnHeldVisualsUpdated(EntityUid uid, PaintedComponent component, HeldVisualsUpdatedEvent args) + { + if (args.RevealedLayers.Count == 0) + return; + + if (!TryComp(args.User, out SpriteComponent? sprite)) + return; + + foreach (var revealed in args.RevealedLayers) + { + if (!sprite.LayerMapTryGet(revealed, out var layer) || sprite[layer] is not Layer notlayer) + continue; + + sprite.LayerSetShader(layer, component.ShaderName); + sprite.LayerSetColor(layer, component.Color); + } + } + + private void OnEquipmentVisualsUpdated(EntityUid uid, PaintedComponent component, EquipmentVisualsUpdatedEvent args) + { + if (args.RevealedLayers.Count == 0) + return; + + if (!TryComp(args.Equipee, out SpriteComponent? sprite)) + return; + + foreach (var revealed in args.RevealedLayers) + { + if (!sprite.LayerMapTryGet(revealed, out var layer) || sprite[layer] is not Layer notlayer) + continue; + + sprite.LayerSetShader(layer, component.ShaderName); + sprite.LayerSetColor(layer, component.Color); + } + } + + private void OnShutdown(EntityUid uid, PaintedComponent component, ref ComponentShutdown args) + { + if (!TryComp(uid, out SpriteComponent? sprite)) + return; + + component.BeforeColor = sprite.Color; + Shader = _protoMan.Index(component.ShaderName).Instance(); + + if (!Terminating(uid)) + { + foreach (var spriteLayer in sprite.AllLayers) + { + if (spriteLayer is not Layer layer) + continue; + + if (layer.Shader == Shader) // If shader isn't same as one in component we need to ignore it. + { + layer.Shader = null; + if (layer.Color == component.Color) // If color isn't the same as one in component we don't want to change it. + layer.Color = component.BeforeColor; + } + } + } + } + } +} diff --git a/Content.Server/Paint/PaintSystem.cs b/Content.Server/Paint/PaintSystem.cs new file mode 100644 index 00000000000..c6718aced68 --- /dev/null +++ b/Content.Server/Paint/PaintSystem.cs @@ -0,0 +1,180 @@ +using Content.Shared.Popups; +using Content.Shared.Paint; +using Content.Shared.Sprite; +using Content.Shared.DoAfter; +using Content.Shared.Interaction; +using Content.Server.Chemistry.Containers.EntitySystems; +using Robust.Shared.Audio.Systems; +using Content.Shared.Humanoid; +using Robust.Shared.Utility; +using Content.Shared.Verbs; +using Content.Shared.SubFloor; +using Content.Server.Nutrition.Components; +using Content.Shared.Inventory; +using Content.Server.Nutrition.EntitySystems; + +namespace Content.Server.Paint; + +/// +/// Colors target and consumes reagent on each color success. +/// +public sealed class PaintSystem : SharedPaintSystem +{ + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SolutionContainerSystem _solutionContainer = default!; + [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly OpenableSystem _openable = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInteract); + SubscribeLocalEvent(OnPaint); + SubscribeLocalEvent>(OnPaintVerb); + } + + private void OnInteract(EntityUid uid, PaintComponent component, AfterInteractEvent args) + { + if (!args.CanReach) + return; + + if (args.Target is not { Valid: true } target) + return; + + PrepPaint(uid, component, target, args.User); + } + + private void OnPaintVerb(EntityUid uid, PaintComponent component, GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess) + return; + + var paintText = Loc.GetString("paint-verb"); + + var verb = new UtilityVerb() + { + Act = () => + { + PrepPaint(uid, component, args.Target, args.User); + }, + + Text = paintText, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/paint.svg.192dpi.png")) + }; + args.Verbs.Add(verb); + } + private void PrepPaint(EntityUid uid, PaintComponent component, EntityUid target, EntityUid user) + { + + var doAfterEventArgs = new DoAfterArgs(EntityManager, user, component.Delay, new PaintDoAfterEvent(), uid, target: target, used: uid) + { + BreakOnTargetMove = true, + BreakOnUserMove = true, + BreakOnDamage = true, + NeedHand = true, + BreakOnHandChange = true + }; + + if (!_doAfterSystem.TryStartDoAfter(doAfterEventArgs)) + return; + } + + private void OnPaint(Entity entity, ref PaintDoAfterEvent args) + { + if (args.Target == null || args.Used == null) + return; + + if (args.Handled || args.Cancelled) + return; + + if (args.Target is not { Valid: true } target) + return; + + if (!_openable.IsOpen(entity)) + { + _popup.PopupEntity(Loc.GetString("paint-closed", ("used", args.Used)), args.User, args.User, PopupType.Medium); + return; + } + + if (HasComp(target) || HasComp(target)) + { + _popup.PopupEntity(Loc.GetString("paint-failure-painted", ("target", args.Target)), args.User, args.User, PopupType.Medium); + return; + } + + if (!entity.Comp.Blacklist?.IsValid(target, EntityManager) != true || HasComp(target) || HasComp(target)) + { + _popup.PopupEntity(Loc.GetString("paint-failure", ("target", args.Target)), args.User, args.User, PopupType.Medium); + return; + } + + + if (TryPaint(entity, target)) + { + EnsureComp(target, out PaintedComponent? paint); + EnsureComp(target); + + paint.Color = entity.Comp.Color; // set the target color to the color specified in the spray paint yml. + _audio.PlayPvs(entity.Comp.Spray, entity); + paint.Enabled = true; + + if (HasComp(target)) // Paint any clothing the target is wearing. + { + if (_inventory.TryGetSlots(target, out var slotDefinitions)) + { + foreach (var slot in slotDefinitions) + { + if (!_inventory.TryGetSlotEntity(target, slot.Name, out var slotEnt)) + continue; + + if (slotEnt == null) + return; + + if (HasComp(slotEnt.Value) || !entity.Comp.Blacklist?.IsValid(slotEnt.Value, EntityManager) != true + || HasComp(slotEnt.Value) || HasComp(slotEnt.Value)) + return; + + EnsureComp(slotEnt.Value, out PaintedComponent? slotpaint); + EnsureComp(slotEnt.Value); + slotpaint.Color = entity.Comp.Color; + _appearanceSystem.SetData(slotEnt.Value, PaintVisuals.Painted, true); + Dirty(slotEnt.Value, slotpaint); + } + } + } + + _popup.PopupEntity(Loc.GetString("paint-success", ("target", args.Target)), args.User, args.User, PopupType.Medium); + _appearanceSystem.SetData(target, PaintVisuals.Painted, true); + Dirty(target, paint); + args.Handled = true; + return; + } + + if (!TryPaint(entity, target)) + { + _popup.PopupEntity(Loc.GetString("paint-empty", ("used", args.Used)), args.User, args.User, PopupType.Medium); + return; + } + } + + private bool TryPaint(Entity reagent, EntityUid target) + { + if (HasComp(target) || HasComp(target)) + return false; + + if (_solutionContainer.TryGetSolution(reagent.Owner, reagent.Comp.Solution, out _, out var solution)) + { + var quantity = solution.RemoveReagent(reagent.Comp.Reagent, reagent.Comp.ConsumptionUnit); + if (quantity > 0)// checks quantity of solution is more than 0. + return true; + + if (quantity < 1) + return false; + } + return false; + } +} diff --git a/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs b/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs index c49bfdec931..0b4b13d6e4b 100644 --- a/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs +++ b/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs @@ -80,11 +80,6 @@ private void OnUseInHand(EntityUid uid, SpawnItemsOnUseComponent component, UseI _adminLogger.Add(LogType.EntitySpawn, LogImpact.Low, $"{ToPrettyString(args.User)} used {ToPrettyString(uid)} which spawned {ToPrettyString(entityToPlaceInHands.Value)}"); } - if (component.Sound != null) - { - _audio.PlayPvs(component.Sound, uid); - } - component.Uses--; // Delete entity only if component was successfully used @@ -97,6 +92,7 @@ private void OnUseInHand(EntityUid uid, SpawnItemsOnUseComponent component, UseI if (entityToPlaceInHands != null) { _hands.PickupOrDrop(args.User, entityToPlaceInHands.Value); + _audio.PlayPvs(component.Sound, entityToPlaceInHands.Value); } } } diff --git a/Content.Shared/Paint/PaintComponent.cs b/Content.Shared/Paint/PaintComponent.cs new file mode 100644 index 00000000000..ad09f4ca730 --- /dev/null +++ b/Content.Shared/Paint/PaintComponent.cs @@ -0,0 +1,60 @@ +using Content.Shared.Chemistry.Reagent; +using Content.Shared.FixedPoint; +using Robust.Shared.Audio; +using Content.Shared.Whitelist; +using Robust.Shared.Prototypes; +using Robust.Shared.GameStates; + +namespace Content.Shared.Paint; + +/// +/// Entity when used on another entity will paint target entity. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedPaintSystem))] +public sealed partial class PaintComponent : Component +{ + /// + /// Noise made when paint applied. + /// + [DataField] + public SoundSpecifier Spray = new SoundPathSpecifier("/Audio/Effects/spray2.ogg"); + + /// + /// Solution on the entity that contains the paint. + /// + [DataField] + public string Solution = "drink"; + + /// + /// How long the doafter will take. + /// + [DataField] + public int Delay = 2; + + /// + /// Reagent that will be used as paint. + /// + [DataField, AutoNetworkedField] + public ProtoId Reagent = "SpaceGlue"; + + /// + /// Color that the painting entity will instruct the painted entity to be. + /// + [DataField, AutoNetworkedField] + public Color Color = Color.FromHex("#c62121"); + + [DataField, ViewVariables(VVAccess.ReadWrite)] + public EntityWhitelist? Blacklist; + /// + /// Reagent consumption per use. + /// + [DataField] + public FixedPoint2 ConsumptionUnit = FixedPoint2.New(5); + + /// + /// Duration per unit + /// + [DataField] + public TimeSpan DurationPerUnit = TimeSpan.FromSeconds(6); +} diff --git a/Content.Shared/Paint/PaintDoAfterEvent.cs b/Content.Shared/Paint/PaintDoAfterEvent.cs new file mode 100644 index 00000000000..0851f1541b4 --- /dev/null +++ b/Content.Shared/Paint/PaintDoAfterEvent.cs @@ -0,0 +1,9 @@ +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.Paint; + +[Serializable, NetSerializable] +public sealed partial class PaintDoAfterEvent : SimpleDoAfterEvent +{ +} diff --git a/Content.Shared/Paint/PaintRemoverComponent.cs b/Content.Shared/Paint/PaintRemoverComponent.cs new file mode 100644 index 00000000000..54d0ed7a71b --- /dev/null +++ b/Content.Shared/Paint/PaintRemoverComponent.cs @@ -0,0 +1,24 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Audio; + +namespace Content.Shared.Paint; + +/// +/// Removes paint from an entity that was painted with spray paint. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(PaintRemoverSystem))] +public sealed partial class PaintRemoverComponent : Component +{ + /// + /// Sound when target is cleaned. + /// + [DataField] + public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Effects/Fluids/watersplash.ogg"); + + /// + /// DoAfter wait time. + /// + [DataField] + public float CleanDelay = 2f; +} diff --git a/Content.Shared/Paint/PaintRemoverDoAfterEvent.cs b/Content.Shared/Paint/PaintRemoverDoAfterEvent.cs new file mode 100644 index 00000000000..940b1aa513c --- /dev/null +++ b/Content.Shared/Paint/PaintRemoverDoAfterEvent.cs @@ -0,0 +1,9 @@ +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.Paint; + +[Serializable, NetSerializable] +public sealed partial class PaintRemoverDoAfterEvent : SimpleDoAfterEvent +{ +} diff --git a/Content.Shared/Paint/PaintRemoverSystem.cs b/Content.Shared/Paint/PaintRemoverSystem.cs new file mode 100644 index 00000000000..ac1cc624cfe --- /dev/null +++ b/Content.Shared/Paint/PaintRemoverSystem.cs @@ -0,0 +1,96 @@ +using Content.Shared.Popups; +using Content.Shared.Interaction; +using Content.Shared.DoAfter; +using Content.Shared.Verbs; +using Content.Shared.Sprite; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Timing; + +namespace Content.Shared.Paint; + +/// +/// Removes paint from an entity. +/// +public sealed class PaintRemoverSystem : SharedPaintSystem +{ + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInteract); + SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent>(OnPaintRemoveVerb); + } + + // When entity is painted, remove paint from that entity. + private void OnInteract(EntityUid uid, PaintRemoverComponent component, AfterInteractEvent args) + { + if (args.Handled) + return; + + if (!args.CanReach || args.Target is not { Valid: true } target || !HasComp(target)) + return; + + _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.CleanDelay, new PaintRemoverDoAfterEvent(), uid, args.Target, uid) + { + BreakOnUserMove = true, + BreakOnDamage = true, + BreakOnTargetMove = true, + MovementThreshold = 1.0f, + }); + args.Handled = true; + } + + private void OnDoAfter(EntityUid uid, PaintRemoverComponent component, DoAfterEvent args) + { + if (args.Cancelled || args.Handled || args.Args.Target == null) + return; + + if (args.Target is not { Valid: true } target) + return; + + if (!TryComp(target, out PaintedComponent? paint)) + return; + + paint.Enabled = false; + _audio.PlayPredicted(component.Sound, target, args.User); + _popup.PopupClient(Loc.GetString("paint-removed", ("target", target)), args.User, args.User, PopupType.Medium); + _appearanceSystem.SetData(target, PaintVisuals.Painted, false); + RemComp(target); + Dirty(target, paint); + + args.Handled = true; + } + + private void OnPaintRemoveVerb(EntityUid uid, PaintRemoverComponent component, GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess) + return; + + var paintremovalText = Loc.GetString("paint-remove-verb"); + + var verb = new UtilityVerb() + { + Act = () => { + + _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.CleanDelay, new PaintRemoverDoAfterEvent(), uid, args.Target, uid) + { + BreakOnUserMove = true, + BreakOnDamage = true, + BreakOnTargetMove = true, + MovementThreshold = 1.0f, + }); + }, + + Text = paintremovalText + }; + + args.Verbs.Add(verb); + } +} diff --git a/Content.Shared/Paint/PaintedComponent.cs b/Content.Shared/Paint/PaintedComponent.cs new file mode 100644 index 00000000000..a6ee7377e11 --- /dev/null +++ b/Content.Shared/Paint/PaintedComponent.cs @@ -0,0 +1,41 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Paint; + +/// +/// Component applied to target entity when painted. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class PaintedComponent : Component +{ + /// + /// Color of the paint. + /// + [DataField, AutoNetworkedField] + public Color Color = Color.FromHex("#2cdbd5"); + + /// + /// Used to remove the color when component removed. + /// + [DataField, AutoNetworkedField] + public Color BeforeColor; + + /// + /// If paint is enabled. + /// + [DataField, AutoNetworkedField] + public bool Enabled; + + /// + /// Name of the shader. + /// + [DataField, AutoNetworkedField] + public string ShaderName = "Greyscale"; +} + +[Serializable, NetSerializable] +public enum PaintVisuals : byte +{ + Painted, +} diff --git a/Content.Shared/Paint/SharedPaintSystem.cs b/Content.Shared/Paint/SharedPaintSystem.cs new file mode 100644 index 00000000000..10185817b86 --- /dev/null +++ b/Content.Shared/Paint/SharedPaintSystem.cs @@ -0,0 +1,11 @@ +namespace Content.Shared.Paint; + +/// +/// Colors target and consumes reagent on each color success. +/// +public abstract class SharedPaintSystem : EntitySystem +{ + public virtual void UpdateAppearance(EntityUid uid, PaintedComponent? component = null) + { + } +} diff --git a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs index 529e321f8da..fa04a50f8b0 100644 --- a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs +++ b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Doors.Components; using Content.Shared.Interaction; using Content.Shared.Popups; +using Content.Shared.Paint; using Content.Shared.SprayPainter.Components; using Content.Shared.SprayPainter.Prototypes; using Robust.Shared.Audio.Systems; @@ -129,6 +130,8 @@ private void OnAirlockInteract(Entity ent, ref Intera return; } + RemComp(ent); + var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, painter.AirlockSprayTime, new SprayPainterDoorDoAfterEvent(sprite, style.Department), args.Used, target: ent, used: args.Used) { BreakOnTargetMove = true, diff --git a/Resources/Locale/en-US/paint/paint.ftl b/Resources/Locale/en-US/paint/paint.ftl new file mode 100644 index 00000000000..200b1f6e3f3 --- /dev/null +++ b/Resources/Locale/en-US/paint/paint.ftl @@ -0,0 +1,8 @@ +paint-success = {THE($target)} has been covered in paint! +paint-failure = Can't cover {THE($target)} in paint! +paint-failure-painted = {THE($target)} is already covered in paint! +paint-empty = {THE($used)} is empty! +paint-removed = You clean off the paint! +paint-closed = You must open {THE($used)} first! +paint-verb = Paint +paint-remove-verb = Remove Paint diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml index 2d5acf5c90f..d84fedd543f 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml @@ -68,6 +68,16 @@ category: Fun group: market +- type: cargoProduct + id: FunSprayPaints + icon: + sprite: Objects/Fun/spraycans.rsi + state: death2_cap + product: CrateFunSprayPaints + cost: 2000 + category: Fun + group: market + - type: cargoProduct id: FunParty icon: diff --git a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml index 1db0c3121ed..cc5e3b1d174 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml @@ -292,14 +292,21 @@ contents: - id: SnapPopBox - id: CrazyGlue - amount: 2 - id: PlasticBanana + - id: FunnyPaint + orGroup: Paint + prob: 0.5 + - id: FunnyPaintYellow + orGroup: Paint + prob: 0.5 - id: WhoopieCushion - id: ToyHammer - id: MrChips - orGroup: GiftPool + prob: 0.5 + orGroup: Dummy - id: MrDips - orGroup: Giftpool + prob: 0.5 + orGroup: Dummy - id: RevolverCapGun - id: BalloonNT - id: ClothingShoesClownLarge @@ -332,6 +339,41 @@ amount: 15 prob: 0.05 +- type: entity + id: CrateFunSprayPaints + name: spray paint crate + description: a crate filled with spray paint. + parent: CratePlastic + suffix: Spray Paint + components: + - type: StorageFill + contents: + - id: SprayPaintBlue + amount: 2 + prob: 0.33 + - id: SprayPaintRed + amount: 2 + prob: 0.33 + - id: SprayPaintOrange + amount: 2 + prob: 0.33 + - id: SprayPaintBlack + amount: 2 + prob: 0.33 + - id: SprayPaintGreen + amount: 2 + prob: 0.33 + - id: SprayPaintPurple + amount: 2 + prob: 0.33 + - id: SprayPaintWhite + amount: 2 + prob: 0.33 + - id: DeathPaint + amount: 2 + - id: DeathPaintTwo + amount: 2 + - type: entity name: dartboard box set description: A box with everything you need for a fun game of darts. diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml index 78a4ea3082e..f4083f42574 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml @@ -142,6 +142,10 @@ prob: 0.25 - id: StrangePill prob: 0.20 + - id: DeathPaint + prob: 0.05 + - id: DeathPaintTwo + prob: 0.05 - id: DrinkMopwataBottleRandom prob: 0.20 - id: ModularReceiver diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml index ae7e5bcf762..883182aae8d 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml @@ -44,6 +44,7 @@ - CrateMaterialPlastic - CrateMaterialWood - CrateMaterialPlasteel + - CrateFunSprayPaints - CrateFunArtSupplies - CrateEngineeringCableLV - CrateEngineeringCableMV diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml index 879c1689291..10fb034d0d5 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml @@ -174,7 +174,12 @@ - MaterialCloth10 - MaterialWoodPlank10 - ResearchDisk + - DeathPaint - Plunger + - SprayPaintBlue + - SprayPaintRed + - SprayPaintGreen + - SprayPaintOrange - TechnologyDisk - PowerCellMedium - PowerCellSmall diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml index 73082674736..3e6c603626b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml @@ -70,6 +70,7 @@ tags: - Carp - DoorBumpOpener + - NoPaint - type: ReplacementAccent accent: genericAggressive - type: Speech diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/revenant.yml b/Resources/Prototypes/Entities/Mobs/NPCs/revenant.yml index 28355bb459e..ec1ed3a58f6 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/revenant.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/revenant.yml @@ -97,3 +97,6 @@ - RevenantTheme - type: Speech speechVerb: Ghost + - type: Tag + tags: + - NoPaint diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index c7cd40988d4..9f0d54ee64a 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -104,6 +104,7 @@ - type: Tag tags: - CannotSuicide + - NoPaint # From the uplink injector - type: entity @@ -212,6 +213,7 @@ tags: - CannotSuicide - FootstepSound + - NoPaint - type: Inventory templateId: holoclown - type: Hands diff --git a/Resources/Prototypes/Entities/Objects/Fun/spray_paint.yml b/Resources/Prototypes/Entities/Objects/Fun/spray_paint.yml new file mode 100644 index 00000000000..1b417f6cde0 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Fun/spray_paint.yml @@ -0,0 +1,292 @@ +# Base Paints +- type: entity + parent: BaseItem + id: PaintBase + name: spray paint + description: A tin of spray paint. + noSpawn: true + components: + - type: Appearance + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + state: clown_cap + layers: + - state: clown_cap + map: ["enum.OpenableVisuals.Layer"] + - type: Paint + consumptionUnit: 10 + blacklist: + tags: + - NoPaint + - type: Item + sprite: Objects/Fun/spraycans.rsi + heldPrefix: spray + - type: SolutionContainerManager + solutions: + drink: + maxVol: 50 + reagents: + - ReagentId: SpaceGlue + Quantity: 50 + - type: TrashOnSolutionEmpty + solution: drink + - type: Sealable + - type: Openable + sound: + path: /Audio/Effects/pop_high.ogg + closeable: true + closeSound: + path: /Audio/Effects/pop_high.ogg + +# Paints + +# funnypaint +- type: entity + parent: PaintBase + id: FunnyPaint + name: funny paint + description: A tin of funny paint, manufactured by Honk! Co. + components: + - type: Paint + color: "#fa74df" + - type: Item + sprite: Objects/Fun/spraycans.rsi + heldPrefix: clown + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "clown"} + False: {state: "clown_cap"} + +- type: entity + parent: PaintBase + id: FunnyPaintYellow + name: funny paint + description: A tin of funny paint, manufactured by Honk! Co. + components: + - type: Paint + color: "#d5e028" + - type: Item + sprite: Objects/Fun/spraycans.rsi + heldPrefix: clown + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + state: clown2_cap + layers: + - state: clown2_cap + map: ["enum.OpenableVisuals.Layer"] + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "clown2"} + False: {state: "clown2_cap"} + +#death paint +- type: entity + parent: PaintBase + id: DeathPaint + components: + - type: Paint + color: "#ff20c8" + - type: Item + sprite: Objects/Fun/spraycans.rsi + heldPrefix: spray + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + state: death_cap + layers: + - state: death_cap + map: ["enum.OpenableVisuals.Layer"] + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "death"} + False: {state: "death_cap"} + +- type: entity + parent: PaintBase + id: DeathPaintTwo + components: + - type: Paint + color: "#ff2020" + - type: Item + sprite: Objects/Fun/spraycans.rsi + heldPrefix: spray + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + state: death2_cap + layers: + - state: death2_cap + map: ["enum.OpenableVisuals.Layer"] + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "death2"} + False: {state: "death2_cap"} + +#Sprays + +#Blue +- type: entity + parent: PaintBase + id: SprayPaintBlue + suffix: Blue + components: + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + layers: + - state: spray + map: ["Base"] + - state: spray_cap_colors + map: ["enum.OpenableVisuals.Layer"] + color: "#5890f7" + - type: Paint + color: "#5890f7" + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "spray_colors" , color: "#5890f7"} + False: {state: "spray_cap_colors" , color: "#5890f7"} + +#Red +- type: entity + parent: PaintBase + id: SprayPaintRed + suffix: Red + components: + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + layers: + - state: spray + map: ["Base"] + - state: spray_cap_colors + map: ["enum.OpenableVisuals.Layer"] + color: "#ff3b3b" + - type: Paint + color: "#ff3b3b" + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "spray_colors" , color: "#ff3b3b"} + False: {state: "spray_cap_colors" , color: "#ff3b3b"} + +#Green +- type: entity + parent: PaintBase + id: SprayPaintGreen + suffix: Green + components: + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + layers: + - state: spray + map: ["Base"] + - state: spray_cap_colors + map: ["enum.OpenableVisuals.Layer"] + color: "#73f170" + - type: Paint + color: "#73f170" + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "spray_colors" , color: "#73f170"} + False: {state: "spray_cap_colors" , color: "#73f170"} + +#Black +- type: entity + parent: PaintBase + id: SprayPaintBlack + suffix: Black + components: + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + layers: + - state: spray + map: ["Base"] + - state: spray_cap_colors + map: ["enum.OpenableVisuals.Layer"] + color: "#3a3a3a" + - type: Paint + color: "#3a3a3a" + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "spray_colors" , color: "#3a3a3a"} + False: {state: "spray_cap_colors" , color: "#3a3a3a"} + +#Orange +- type: entity + parent: PaintBase + id: SprayPaintOrange + suffix: Orange + components: + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + layers: + - state: spray + map: ["Base"] + - state: spray_cap_colors + map: ["enum.OpenableVisuals.Layer"] + color: "#f6a44b" + - type: Paint + color: "#f6a44b" + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "spray_colors" , color: "#f6a44b"} + False: {state: "spray_cap_colors" , color: "#f6a44b"} + +#Purple +- type: entity + parent: PaintBase + id: SprayPaintPurple + suffix: Purple + components: + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + layers: + - state: spray + map: ["Base"] + - state: spray_cap_colors + map: ["enum.OpenableVisuals.Layer"] + color: "#c063f5" + - type: Paint + color: "#c063f5" + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "spray_colors" , color: "#c063f5"} + False: {state: "spray_cap_colors" , color: "#c063f5"} + +#White +- type: entity + parent: PaintBase + id: SprayPaintWhite + suffix: White + components: + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + layers: + - state: spray + map: ["Base"] + - state: spray_cap_colors + map: ["enum.OpenableVisuals.Layer"] + color: "#f2f2f2" + - type: Paint + color: "#f2f2f2" + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "spray_colors" , color: "#f2f2f2"} + False: {state: "spray_cap_colors" , color: "#f2f2f2"} diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml index 59d8ed19220..2e0eec7a658 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml @@ -15,6 +15,7 @@ - type: Tag tags: - Sheet + - NoPaint - type: Material - type: Damageable damageContainer: Inorganic diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml index 82b9f62837a..3a887848bf5 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml @@ -15,6 +15,7 @@ tags: - Sheet - Metal + - NoPaint - type: Damageable damageContainer: Inorganic damageModifierSet: Metallic diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml index dfb51336289..9dc87a9117d 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml @@ -12,6 +12,7 @@ - type: Tag tags: - Sheet + - NoPaint - type: Damageable damageContainer: Inorganic - type: Destructible @@ -110,6 +111,7 @@ - type: Tag tags: - Sheet + - NoPaint - type: entity parent: SheetPlasma @@ -132,6 +134,7 @@ tags: - Plastic - Sheet + - NoPaint - type: Material - type: PhysicalComposition materialComposition: diff --git a/Resources/Prototypes/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Entities/Objects/Materials/materials.yml index e71a163b5d0..96fddefa3ec 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/materials.yml @@ -12,6 +12,7 @@ - type: Tag tags: - RawMaterial + - NoPaint - type: Damageable damageContainer: Inorganic - type: Destructible diff --git a/Resources/Prototypes/Entities/Objects/Misc/tiles.yml b/Resources/Prototypes/Entities/Objects/Misc/tiles.yml index 78bbd32f174..99f9ccaa874 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/tiles.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/tiles.yml @@ -17,6 +17,9 @@ sound: /Audio/Weapons/star_hit.ogg - type: Stack count: 1 + - type: Tag + tags: + - NoPaint - type: Damageable damageContainer: Inorganic - type: Destructible diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml index 5678de6bafc..56786057d57 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml @@ -62,6 +62,7 @@ solution: soap - type: DeleteOnSolutionEmpty solution: soap + - type: PaintRemover - type: FlavorProfile flavors: - clean diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index bc376df5eab..ccbbcc2de84 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -78,6 +78,9 @@ malus: 0 - type: Reflect enabled: false + - type: Tag + tags: + - NoPaint - type: IgnitionSource temperature: 700 @@ -156,6 +159,7 @@ - type: Tag tags: - Write + - NoPaint - type: DisarmMalus malus: 0 diff --git a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml index 7777153bbac..f82fe8b51bb 100644 --- a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml +++ b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml @@ -31,6 +31,9 @@ sound: path: /Audio/Ambience/Objects/fireplace.ogg - type: AlwaysHot + - type: Tag + tags: + - NoPaint - type: entity id: LegionnaireBonfire diff --git a/Resources/Prototypes/Entities/Structures/Holographic/projections.yml b/Resources/Prototypes/Entities/Structures/Holographic/projections.yml index d2a5853fcb0..b8717cf6cc9 100644 --- a/Resources/Prototypes/Entities/Structures/Holographic/projections.yml +++ b/Resources/Prototypes/Entities/Structures/Holographic/projections.yml @@ -25,6 +25,9 @@ behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] + - type: Tag + tags: + - NoPaint - type: entity id: HoloFan diff --git a/Resources/Prototypes/Entities/Structures/hydro_tray.yml b/Resources/Prototypes/Entities/Structures/hydro_tray.yml index 1ab1fd5b2fd..43b8bd197a5 100644 --- a/Resources/Prototypes/Entities/Structures/hydro_tray.yml +++ b/Resources/Prototypes/Entities/Structures/hydro_tray.yml @@ -92,6 +92,9 @@ - type: GuideHelp guides: - Botany + - type: Tag + tags: + - NoPaint - type: entity parent: hydroponicsTray diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 789b7c92968..2694cbeaf39 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -877,6 +877,9 @@ - type: Tag id: NoBlockAnchoring +- type: Tag + id: NoPaint + - type: Tag id: NozzleBackTank diff --git a/Resources/Textures/Interface/VerbIcons/paint.svg b/Resources/Textures/Interface/VerbIcons/paint.svg new file mode 100644 index 00000000000..78a56e3570a --- /dev/null +++ b/Resources/Textures/Interface/VerbIcons/paint.svg @@ -0,0 +1,39 @@ + + + + + + diff --git a/Resources/Textures/Interface/VerbIcons/paint.svg.192dpi.png b/Resources/Textures/Interface/VerbIcons/paint.svg.192dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..b7bd88245f2ab069dbf5a39850a866af0c5dc174 GIT binary patch literal 15653 zcmeI3Ym6J!6@c$%At6fwD^Z{%uuL393Tejkve)auHrd!ob^#~b&7$l^6=XbfZ4a?$ zoSE^icLQO0mqGyXgEvtlDvC%zAkn5$c`8a@KR`fGMTH1e8(?XniJ&}$1l*bN^RD+2 zK_vcM%O3mObI&>Ve&?R!`7^f-ZQQW9Ye^RXVDaEUY8ZX5aX+WcN7pCx9q*v8g{6Tp z8-NRLbw3?<9X$>KxOkO5GU|+`FPBxb7*sSf1A~=f3C#u|c1fkAsN12#WMED=;(`DD z@x=h6Yw^IAaGFn-k}$6iOj&UA)W#8YYP%ZM0+%GZVig%VC_+bJD#e0f%awS*^DCp@ z?l2c%yeZE1c%a`6$c(0kn51bzCLHW#RlYaEM4~|<9EpS?s~M3O!W=Jg63>c~9OC7W z$W&i}L>KxMv$U){oLXNEhopEQ?>Hry<0d91f)i5Ev~rvfjYc_Mg|JMlok4OD+s_f;&_0~vOe9iqrploBTdd9Iz2rq*pr zWvk#VO;b5ofJJCHHnJ1i+LiLAW7>Ihj*xZroPkkJhV@+DvFq{MuG#YDv|R%7kWQ1W zi^aBugabg z<-_PbBJ|3l^fO+NdA`YmKMiw`HZ?svS#uC#dC_&i^Kv*OhoW13^QK9-IjTHOag^_J z&^)clg{I0`(<&-XLN6*g$d!y-jB5hvH6m++G<$_}5;(-dQ z!K_j)IDtem$umRcOhH$flvz}CgGoV6R~4^5tLI5|^Q4bMRC+}d9SOJEOP-D9nQ&9k zGQAYXIJcw=dg~he(blDTdz-b5SiQ{Tq**X6L>nfg7}svNiAcTl%>G|h4MqM=|}ffstSqQ-{9s>Eth6fBd;s;r=9#7L-5vzZbuw8|-Se054j$BE zT+3)#&A8*Rs9&9t~OehxY&!OXSB8|`Y+G>Wo zZ(n&QB@4DP{=;%`VkPxGa?qwn|9Ba2S^Lq|JnFKj3vsoBTN^mBr1`0At*Ba+&aS|i z`?oBk>P3gi>)Ht+#?2aQME2*8x>Z;xdsQYxMIOC4!M#>(oAtQu*mu}A>v7wL=@o|V zB*bbsY`DqFy?gNg3pS%$WtivVor!L$??281k9Tx33&mg2&IkVT4%%m>p_To@3tNO6(*U|Na`140%lE;1iXOL1X9 z$Rfo>=7VV|E({1+q`1g@FfGM}0U?VN7nu*HrMNI4WRc<`^TD(f7Y2kZQe0#{n3m$g zfRIIsi_8bpQd}4ivPf}}`CwX#3j;zHDK0V}OiOWLK*%D+MdpKPDJ~2MS){ngd@wD= zg#jUp6c?Efrlq(rAY_r^BJ;tt6c+}BEK*!#KA4u`!hn!PBCf8+1F+CQPrXi{$6Mb! zmwOC78q25y!)XAfRsb-4BLH81gT7|~DDwb(xD5dLegMuj@44#GdH_1ggQ@`d;nH-J03Zr|Ct&;EP&wwn%Znb)2De;!;OJaeCP>1qFb`z&qb zg)8@-^X`%LZ){q!ck-1BpXgZqbmESl&P`|DK7V@ADIfoI-Z{G~r|l^uJHXQD`dFJrr zYaZS8?4R>VcFlroKUneXvSrhEzG~gOYt5<*A7mc6YOA>XZxXv~Xw}p^pRE1e-k*Ri zrS~5^-uH*Y_pQ)xy78qiuK-iITc3L1-+S`XlSgL0{?D<$Ja+2N$%Dtaf!HnY9TInZ z)bZ|<2bV7FeDvz;xy2v6_Sfs5(R#+um`?6F@bIGFb{so;PtTRY>VL&{pML1-rJp4h p2EWO5KELuJFpt6C3+_AuIgtw=ow{Om$WDZhO1a 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 Lg-7S^{K9_#hzGN8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Fun/spraycans.rsi/clown-inhand-right.png b/Resources/Textures/Objects/Fun/spraycans.rsi/clown-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..27b68e2cfe5d2b364b379707b887bdfcb115eeb8 GIT binary patch literal 20783 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Fun/spraycans.rsi/meta.json b/Resources/Textures/Objects/Fun/spraycans.rsi/meta.json index 0f883ee2801..f34820cec45 100644 --- a/Resources/Textures/Objects/Fun/spraycans.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/spraycans.rsi/meta.json @@ -58,9 +58,6 @@ { "name": "spray" }, - { - "name": "spray_cap" - }, { "name": "spray_cap_colors" }, @@ -70,6 +67,22 @@ { "name": "equipped-BELT", "directions": 4 + }, + { + "name": "clown-inhand-right", + "directions": 4 + }, + { + "name": "clown-inhand-left", + "directions": 4 + }, + { + "name": "spray-inhand-right", + "directions": 4 + }, + { + "name": "spray-inhand-left", + "directions": 4 } ] } diff --git a/Resources/Textures/Objects/Fun/spraycans.rsi/spray-inhand-left.png b/Resources/Textures/Objects/Fun/spraycans.rsi/spray-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3ad959de4138922ea09c84316ad9369fedf403 GIT binary patch literal 21199 zcmeI4eT*bU6~G%61ILFZ5K;bdTr`SUJN3~YRm1GS-tL`u35)0667CKYuDYsvuVr_7 zn3=oXJBb1O!)S=2Mx!SZC4MAEi5mFBaK=P}e+c}c5s4o$l3-MVL5+!GqWF4xW~ygy z_O6-RC?q|}?$&m{_p18$>f^mPllj=b8{d1$jw^RKj&sT0J&Vim_xkkbg4e_EZ^pO( z7XDn=+H)H5wvKAci@W>X!GCizN4nisty(^2iX)s2&8CABNV z6sw!ERVA~yI!Q^Zp-$^)d#yJ#t*U0ttea-H1A1hlUh7EGO*%)CExH`u-m+ux$7;) zVJE$_B?Pk>Z=sgn$<%stDsy!mpw$-IMs}0-N|LNKvgx{S;ET$_LT`Fj-gR@_)X7HY z>Uwot#ZDY+%`D2UX;2Jvkzj=B3h`>ptC8RuOllbCjAW8yHkJ|{N5=;?7$Ou=u|oVB zp*6w}W$HPhadlXOT6X2x4CKXfCbX(WNqb#(8}YhaHPu#gwO+LsbCSbJSzAcfk~WOU zG+4bl>GDLa#Y7!VSH*l&nGU$1lXDF?sJHHS%GJ@UgBxpcgY4!zcM6Z~a+%;e7sx!_ zIq!SEhv(;oPj~ZrHC^E#XnXJby?;I1wsfLmU9+RcK9`=N24NF&M2Im+a_S=?IK@n0 z#)LbqX{Ds0U`zQN<_0kug&2M*-(Vt`%dt>Xnq~nDa3lmWzKSx_TzMW+t}vWN+NU&} z(zGk7#*s8gxIm>hY929)A`(hXv1>4%7Kq0~!hMR730!x3M;&OUSx6+9R$iaA0X{0= zfuuB&jL<282(664J_Xh$*xpeKqgfP!)zFBrZ`u%o!a&2bP$nX8S~n`J^x zp;j(3A=1B#?)T*)<$2$}XMFp=>+;Y!2; z+22&*6u?MuDLmM4xsiIx84^)K8HX9-`T)GQsY)CHp9mX|F-3!LYSSKtg9^4M7+`;) zzx+|J#t<82M`N!ETaV<@_Yw2_2)UsP2O{PSaiWcc(~`UV?1umZPqP{hThDi;;=&-G z1tDU-3rDPy9@21@D3?eTndq!s2gbq>he}5T$;b$#JvV}*Is_;AAsFMX;lwL!Eb@pJ zF7^=(xkR3XQwdH_j(qAXjTKjc5XFs24l$r2$OknTUOGnum!ODY8YxTxC&WvWf|Ts) zXz-Jdtj-iVrE%!eQf+Uu)0Gfe?Okl7q+-Ah@r&{`48`|!fUtB!Bp6jFfOs+T!yr)F z??soR>Nb4pn;!HIrnd;8VE5#a2ABALZw7*Yg@!nX7&r6{_&WlM**J5?PV4A>?HCeM zxt5a|cs)?y4CQGQ1rbaf=6Wb}!Syh$m`j*zL?8!UOfYj=S9{_#1U)_)EA~Rr{pR-3 zt2PAfrI0Pz?wB+|nwuG9NW+{ni#PjGXD`vJNtGs_4V9)H2A259RXePqW<3*#Pj_cA z1gEKQ-N(ie(>zn!l9}pBZEd8JMBNS9HuI|x+84>FGOMF%@c> zU_KX~z!8SpNVzD7fk9RvTZ_*j2svk`u|RPG6(&R#WL!LiKwd~6PC*rTjC)}erM0rD zoR(HS-L&e-+!~|hPP&ad=~*_ml2&EFnZJ$Po-{Oxg7t9es1?l$24qTXP}F6Xq;x0$ndL-)f+D@?=pJO;(b@yp{H z`{GTrc3?4vcSAdAama_Dsi!l3W1`~0trT-N`ij}I$$bc-=a}p&e8d7i-BBHWyd&o` zyHjp^%RbSzo3;kaPArQ8trAxONLHl8WmyzxmADE(vLYoe%c4N5#8m*26)AC976n=* zt^$y(NQuj`D9|c#6@X+#N?evjfmVsD03<6?;<79Xv`SnBAX$+Tmt|3)RpKfD$%>S? zEQ)qoTJ!ro;&O~wa+`w70IV>eQY<#zOZ+3er5Al&;RnfmpqCu zUi|6)d*4Fux$?-Tp*^Ug1S?#}!7{0M*M3s<-6 zm)Aji^mTaopZYrfLI}hLeU!MjguK)l5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Fun/spraycans.rsi/spray-inhand-right.png b/Resources/Textures/Objects/Fun/spraycans.rsi/spray-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..353e47c56fa71b948a6443d4a3a850de2edcb5c0 GIT binary patch literal 21213 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 From 4ecb00f9ddf0d8050ccdd985cb55d6c39c8e4d6d Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Sat, 11 May 2024 22:36:55 -0700 Subject: [PATCH 045/111] Mirror: Update close-master-pr.yml (#373) ## Mirror of PR #26416: [Update close-master-pr.yml](https://github.com/space-wizards/space-station-14/pull/26416) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `a30fb1fffa107bac79668866fdbf7fb7c6d3f8e0` PR opened by PJB3005 at 2024-03-24 22:47:21 UTC --- PR changed 1 files with 1 additions and 1 deletions. The PR had the following labels: - No C# ---

    Original Body

    > Fix name of "Close PRs on master" workflow >
    Co-authored-by: SimpleStation14 --- .github/workflows/close-master-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-master-pr.yml b/.github/workflows/close-master-pr.yml index 66843d35dd6..51ce874dd07 100644 --- a/.github/workflows/close-master-pr.yml +++ b/.github/workflows/close-master-pr.yml @@ -1,4 +1,4 @@ -name: Close PR's on master +name: Close PRs on master on: pull_request_target: From 255e307fe9d0ce0f99d4c8a008d34752d850303a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 12 May 2024 23:43:13 -0400 Subject: [PATCH 046/111] Update Credits (#403) This is an automated Pull Request. This PR updates the GitHub contributors in the credits section. Co-authored-by: SimpleStation Changelogs --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index f1bef715b7a..ce93c10d338 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, Nylux, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem From 528557383a1cbb09efdf9e6cbac23ae448f04c33 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Date: Sun, 12 May 2024 21:46:57 -0700 Subject: [PATCH 047/111] Loadouts (#45) Description copied from my Wizard's Den PR Resolves https://github.com/Simple-Station/Einstein-Engines/issues/32 # TODO - [x] CVars - [x] Server side loadout point validation - Make tabContainer less bad - [x] Move head clothes to loadouts from lockers - [x] Move job starting equipment to loadouts - [x] Loadout item preview - [x] Fix loadouts duplicating on server restart - [x] Make sure everything is localized -- Components and Tags are an odd thing to display to the player in the whitelist and are very unrealistic to make localizations for, so.. not doing that, what do I do? - [x] Fix all items going into the bag no matter their size - [x] Add min/cur/max points to the bar - [x] Use buttons instead of checkboxes - [x] "Show Unusable" button to hide things your character currently doesn't match the whitelists for - [x] Time whitelist option - [x] Species whitelist option - [x] Trait whitelist option instead of EntityWhitelist for the sake of localization - [ ] More loadouts (filler things while waiting for review) - [ ] - Golden or themed items for Command roles with an undecided amount of playtime on their respective jobs - [x] - Goliath cloak for playing a lot of Salvage - [x] - Senior items for playing a lot of its respective role - [ ] - Varying materials of pocket watches for people with varying overall playtime - [x] Fix loadout selectors not updating to match current preferences

    Media (Click Me!)

    I need to rerecord these https://github.com/space-wizards/space-station-14/assets/77995199/59713874-b043-4813-848e-56b2951b6935 https://github.com/space-wizards/space-station-14/assets/77995199/40180aee-bfe3-4f30-9df8-0f628e7e4514

    # Changelog :cl: - add: Added a new character customization tab for selecting items to start your shift with, loadouts! - remove: Removed some default job equipment in favor of loadouts - remove: Removed several clothing items from Command lockers in favor of loadouts --------- Co-authored-by: VMSolidus --- .../Lobby/UI/LobbyCharacterPreviewPanel.cs | 13 +- .../JobRequirementsManager.cs | 16 +- .../Preferences/UI/CharacterSetupGui.xaml.cs | 3 +- .../Preferences/UI/HumanoidProfileEditor.xaml | 15 + .../UI/HumanoidProfileEditor.xaml.cs | 397 +++- .../Tests/Preferences/ServerDbSqliteTests.cs | 5 +- .../20240505230501_Loadouts.Designer.cs | 1802 +++++++++++++++++ .../Postgres/20240505230501_Loadouts.cs | 48 + .../PostgresServerDbContextModelSnapshot.cs | 41 + .../20240505230431_Loadouts.Designer.cs | 1731 ++++++++++++++++ .../Sqlite/20240505230431_Loadouts.cs | 47 + .../SqliteServerDbContextModelSnapshot.cs | 39 + Content.Server.Database/Model.cs | 18 +- .../Clothing/Systems/LoadoutSystem.cs | 49 + Content.Server/Database/ServerDbBase.cs | 12 +- Content.Shared/CCVar/CCVars.cs | 12 + Content.Shared/Clothing/LoadoutSystem.cs | 35 - .../Prototypes/LoadoutCategoryPrototype.cs | 13 + .../Loadouts/Prototypes/LoadoutPrototype.cs | 45 + .../Loadouts/Systems/LoadoutRequirements.cs | 375 ++++ .../Loadouts/Systems/LoadoutSystem.cs | 149 ++ .../Preferences/HumanoidCharacterProfile.cs | 129 +- Content.Shared/Roles/JobRequirements.cs | 15 +- .../Locale/en-US/loadouts/categories.ftl | 7 + Resources/Locale/en-US/loadouts/eyes.ftl | 2 + Resources/Locale/en-US/loadouts/head.ftl | 2 + Resources/Locale/en-US/loadouts/items.ftl | 13 + .../Locale/en-US/loadouts/jobs/cargo.ftl | 1 + .../en-US/loadouts/jobs/engineering.ftl | 5 + .../en-US/loadouts/jobs/heads/captain.ftl | 12 + .../loadouts/jobs/heads/chiefEngineer.ftl | 3 + .../jobs/heads/chiefMedicalOfficer.ftl | 5 + .../loadouts/jobs/heads/headOfPersonnel.ftl | 4 + .../loadouts/jobs/heads/headOfSecurity.ftl | 10 + .../loadouts/jobs/heads/quarterMaster.ftl | 3 + .../loadouts/jobs/heads/researchDirector.ftl | 3 + .../Locale/en-US/loadouts/jobs/medical.ftl | 3 + .../Locale/en-US/loadouts/jobs/science.ftl | 3 + .../Locale/en-US/loadouts/jobs/security.ftl | 3 + .../Locale/en-US/loadouts/jobs/service.ftl | 7 + .../en-US/loadouts/loadout-requirements.ftl | 13 + Resources/Locale/en-US/loadouts/neck.ftl | 0 .../Locale/en-US/loadouts/outerClothing.ftl | 5 + Resources/Locale/en-US/loadouts/shoes.ftl | 10 + Resources/Locale/en-US/loadouts/uniform.ftl | 1 + .../ui/humanoid-profile-editor.ftl | 10 + .../Catalog/Fills/Lockers/heads.yml | 32 - .../Loadouts/Jobs/Heads/captain.yml | 148 ++ .../Loadouts/Jobs/Heads/chiefEngineer.yml | 46 + .../Jobs/Heads/chiefMedicalOfficer.yml | 68 + .../Loadouts/Jobs/Heads/headOfPersonnel.yml | 104 + .../Loadouts/Jobs/Heads/headOfSecurity.yml | 175 ++ .../Loadouts/Jobs/Heads/quarterMaster.yml | 71 + .../Loadouts/Jobs/Heads/researchDirector.yml | 57 + Resources/Prototypes/Loadouts/Jobs/cargo.yml | 14 + .../Prototypes/Loadouts/Jobs/engineering.yml | 170 ++ .../Prototypes/Loadouts/Jobs/medical.yml | 197 ++ .../Prototypes/Loadouts/Jobs/science.yml | 86 + .../Prototypes/Loadouts/Jobs/security.yml | 89 + .../Prototypes/Loadouts/Jobs/service.yml | 183 ++ Resources/Prototypes/Loadouts/categories.yml | 18 + Resources/Prototypes/Loadouts/eyes.yml | 13 + Resources/Prototypes/Loadouts/head.yml | 125 ++ Resources/Prototypes/Loadouts/items.yml | 90 + Resources/Prototypes/Loadouts/neck.yml | 27 + .../Prototypes/Loadouts/outerClothing.yml | 34 + Resources/Prototypes/Loadouts/shoes.yml | 98 + Resources/Prototypes/Loadouts/uniform.yml | 261 +++ .../Entities/Clothing/OuterClothing/coats.yml | 4 +- .../Roles/Jobs/Engineering/chief_engineer.yml | 1 - .../Jobs/Engineering/station_engineer.yml | 2 - .../Prototypes/Roles/Jobs/Medical/chemist.yml | 2 - .../Jobs/Medical/chief_medical_officer.yml | 1 - .../Roles/Jobs/Medical/medical_doctor.yml | 1 - .../Roles/Jobs/Science/research_director.yml | 2 - .../Roles/Jobs/Security/head_of_security.yml | 2 - 76 files changed, 7105 insertions(+), 150 deletions(-) create mode 100644 Content.Server.Database/Migrations/Postgres/20240505230501_Loadouts.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20240505230501_Loadouts.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240505230431_Loadouts.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240505230431_Loadouts.cs create mode 100644 Content.Server/Clothing/Systems/LoadoutSystem.cs delete mode 100644 Content.Shared/Clothing/LoadoutSystem.cs create mode 100644 Content.Shared/Clothing/Loadouts/Prototypes/LoadoutCategoryPrototype.cs create mode 100644 Content.Shared/Clothing/Loadouts/Prototypes/LoadoutPrototype.cs create mode 100644 Content.Shared/Clothing/Loadouts/Systems/LoadoutRequirements.cs create mode 100644 Content.Shared/Clothing/Loadouts/Systems/LoadoutSystem.cs create mode 100644 Resources/Locale/en-US/loadouts/categories.ftl create mode 100644 Resources/Locale/en-US/loadouts/eyes.ftl create mode 100644 Resources/Locale/en-US/loadouts/head.ftl create mode 100644 Resources/Locale/en-US/loadouts/items.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/cargo.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/engineering.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/heads/captain.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/heads/chiefEngineer.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/heads/chiefMedicalOfficer.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/heads/headOfPersonnel.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/heads/headOfSecurity.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/heads/quarterMaster.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/heads/researchDirector.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/medical.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/science.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/security.ftl create mode 100644 Resources/Locale/en-US/loadouts/jobs/service.ftl create mode 100644 Resources/Locale/en-US/loadouts/loadout-requirements.ftl create mode 100644 Resources/Locale/en-US/loadouts/neck.ftl create mode 100644 Resources/Locale/en-US/loadouts/outerClothing.ftl create mode 100644 Resources/Locale/en-US/loadouts/shoes.ftl create mode 100644 Resources/Locale/en-US/loadouts/uniform.ftl create mode 100644 Resources/Prototypes/Loadouts/Jobs/Heads/captain.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/Heads/chiefEngineer.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/Heads/chiefMedicalOfficer.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/Heads/headOfPersonnel.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/Heads/headOfSecurity.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/Heads/quarterMaster.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/Heads/researchDirector.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/cargo.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/engineering.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/medical.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/science.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/security.yml create mode 100644 Resources/Prototypes/Loadouts/Jobs/service.yml create mode 100644 Resources/Prototypes/Loadouts/categories.yml create mode 100644 Resources/Prototypes/Loadouts/eyes.yml create mode 100644 Resources/Prototypes/Loadouts/head.yml create mode 100644 Resources/Prototypes/Loadouts/items.yml create mode 100644 Resources/Prototypes/Loadouts/neck.yml create mode 100644 Resources/Prototypes/Loadouts/outerClothing.yml create mode 100644 Resources/Prototypes/Loadouts/shoes.yml create mode 100644 Resources/Prototypes/Loadouts/uniform.yml diff --git a/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs b/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs index f9481caa3bb..59a518f2696 100644 --- a/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs +++ b/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs @@ -1,16 +1,14 @@ using System.Linq; using System.Numerics; -using Content.Client.Alerts; using Content.Client.Humanoid; using Content.Client.Inventory; using Content.Client.Preferences; using Content.Client.UserInterface.Controls; +using Content.Shared.Clothing.Loadouts.Systems; using Content.Shared.GameTicking; using Content.Shared.Humanoid.Prototypes; -using Content.Shared.Inventory; using Content.Shared.Preferences; using Content.Shared.Roles; -using Robust.Client.GameObjects; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Map; @@ -126,6 +124,7 @@ public void UpdateUI() _summaryLabel.Text = selectedCharacter.Summary; _entityManager.System().LoadProfile(_previewDummy.Value, selectedCharacter); GiveDummyJobClothes(_previewDummy.Value, selectedCharacter); + GiveDummyLoadoutItems(_previewDummy.Value, selectedCharacter); } } } @@ -162,5 +161,13 @@ public static void GiveDummyJobClothes(EntityUid dummy, HumanoidCharacterProfile } } } + + public static void GiveDummyLoadoutItems(EntityUid dummy, HumanoidCharacterProfile profile) + { + var highPriorityJobId = profile.JobPriorities.FirstOrDefault(j => j.Value == JobPriority.High).Key; + var highPriorityJob = IoCManager.Resolve().Index(highPriorityJobId ?? SharedGameTicker.FallbackOverflowJob); + + EntitySystem.Get().ApplyCharacterLoadout(dummy, highPriorityJob, profile); + } } } diff --git a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs index b8267ea2955..7688a3b3aaa 100644 --- a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs +++ b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs @@ -21,7 +21,7 @@ public sealed partial class JobRequirementsManager [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPrototypeManager _prototypes = default!; - private readonly Dictionary _roles = new(); + public readonly Dictionary PlayTimes = new(); private readonly List _roleBans = new(); private ISawmill _sawmill = default!; @@ -45,7 +45,7 @@ private void ClientOnRunLevelChanged(object? sender, RunLevelChangedEventArgs e) if (e.NewLevel == ClientRunLevel.Initialize) { // Reset on disconnect, just in case. - _roles.Clear(); + PlayTimes.Clear(); } } @@ -63,12 +63,12 @@ private void RxRoleBans(MsgRoleBans message) private void RxPlayTime(MsgPlayTime message) { - _roles.Clear(); + PlayTimes.Clear(); // NOTE: do not assign _roles = message.Trackers due to implicit data sharing in integration tests. foreach (var (tracker, time) in message.Trackers) { - _roles[tracker] = time; + PlayTimes[tracker] = time; } /*var sawmill = Logger.GetSawmill("play_time"); @@ -96,7 +96,7 @@ public bool IsAllowed(JobPrototype job, [NotNullWhen(false)] out FormattedMessag return CheckRoleTime(job.Requirements, out reason); } - public bool CheckRoleTime(HashSet? requirements, [NotNullWhen(false)] out FormattedMessage? reason) + public bool CheckRoleTime(HashSet? requirements, [NotNullWhen(false)] out FormattedMessage? reason, string? localePrefix = null) { reason = null; @@ -106,7 +106,7 @@ public bool CheckRoleTime(HashSet? requirements, [NotNullWhen(fa var reasons = new List(); foreach (var requirement in requirements) { - if (JobRequirements.TryRequirementMet(requirement, _roles, out var jobReason, _entManager, _prototypes, _whitelisted)) + if (JobRequirements.TryRequirementMet(requirement, PlayTimes, out var jobReason, _entManager, _prototypes, _whitelisted, localePrefix)) continue; reasons.Add(jobReason.ToMarkup()); @@ -118,7 +118,7 @@ public bool CheckRoleTime(HashSet? requirements, [NotNullWhen(fa public TimeSpan FetchOverallPlaytime() { - return _roles.TryGetValue("Overall", out var overallPlaytime) ? overallPlaytime : TimeSpan.Zero; + return PlayTimes.TryGetValue("Overall", out var overallPlaytime) ? overallPlaytime : TimeSpan.Zero; } public IEnumerable> FetchPlaytimeByRoles() @@ -127,7 +127,7 @@ public IEnumerable> FetchPlaytimeByRoles() foreach (var job in jobsToMap) { - if (_roles.TryGetValue(job.PlayTimeTracker, out var locJobName)) + if (PlayTimes.TryGetValue(job.PlayTimeTracker, out var locJobName)) { yield return new KeyValuePair(job.Name, locJobName); } diff --git a/Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs b/Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs index f1052086de6..dba96d74b6c 100644 --- a/Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs +++ b/Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs @@ -181,6 +181,7 @@ public CharacterPickerButton( if (humanoid != null) { LobbyCharacterPreviewPanel.GiveDummyJobClothes(_previewDummy, humanoid); + LobbyCharacterPreviewPanel.GiveDummyLoadoutItems(_previewDummy, humanoid); } var isSelectedCharacter = profile == preferencesManager.Preferences?.SelectedCharacter; @@ -229,10 +230,8 @@ public CharacterPickerButton( }; deleteButton.OnPressed += _ => { - deleteButton.Visible = false; confirmDeleteButton.Visible = true; - }; var internalHBox = new BoxContainer diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml index d0dd02a58ad..9a70d678310 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml @@ -85,6 +85,12 @@
    - public List GetSpreadableNeighbors(EntityUid uid, AirtightComponent? comp = null, - (EntityUid Grid, Vector2i Tile)? position = null) + public void ActivateSpreadableNeighbors(EntityUid uid, (EntityUid Grid, Vector2i Tile)? position = null) { - Resolve(uid, ref comp, false); - var neighbors = new List(); - Vector2i tile; EntityUid ent; MapGridComponent? grid; @@ -315,37 +303,40 @@ public List GetSpreadableNeighbors(EntityUid uid, AirtightComponent? { var transform = Transform(uid); if (!TryComp(transform.GridUid, out grid) || TerminatingOrDeleted(transform.GridUid.Value)) - return neighbors; + return; + tile = _map.TileIndicesFor(transform.GridUid.Value, grid, transform.Coordinates); ent = transform.GridUid.Value; } else { if (!TryComp(position.Value.Grid, out grid)) - return neighbors; - tile = position.Value.Tile; - ent = position.Value.Grid; + return; + (ent, tile) = position.Value; } - var spreaderQuery = GetEntityQuery(); + var anchored = _map.GetAnchoredEntitiesEnumerator(ent, grid, tile); + while (anchored.MoveNext(out var entity)) + { + if (entity == ent) + continue; + DebugTools.Assert(Transform(entity.Value).Anchored); + if (_query.HasComponent(ent) && !TerminatingOrDeleted(entity.Value)) + EnsureComp(entity.Value); + } for (var i = 0; i < Atmospherics.Directions; i++) { var direction = (AtmosDirection) (1 << i); - if (comp != null && !comp.AirBlockedDirection.IsFlagSet(direction)) - continue; + var adjacentTile = SharedMapSystem.GetDirection(tile, direction.ToDirection()); + anchored = _map.GetAnchoredEntitiesEnumerator(ent, grid, adjacentTile); - var directionEnumerator = - _map.GetAnchoredEntitiesEnumerator(ent, grid, SharedMapSystem.GetDirection(tile, direction.ToDirection())); - - while (directionEnumerator.MoveNext(out var entity)) + while (anchored.MoveNext(out var entity)) { DebugTools.Assert(Transform(entity.Value).Anchored); - if (spreaderQuery.HasComponent(entity) && !TerminatingOrDeleted(entity.Value)) - neighbors.Add(entity.Value); + if (_query.HasComponent(ent) && !TerminatingOrDeleted(entity.Value)) + EnsureComp(entity.Value); } } - - return neighbors; } } diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs index 7460e08e46f..6a8587ca239 100644 --- a/Content.Shared/Atmos/Atmospherics.cs +++ b/Content.Shared/Atmos/Atmospherics.cs @@ -8,11 +8,6 @@ namespace Content.Shared.Atmos /// public static class Atmospherics { - static Atmospherics() - { - AdjustedNumberOfGases = MathHelper.NextMultipleOf(TotalNumberOfGases, 4); - } - #region ATMOS /// /// The universal gas constant, in kPa*L/(K*mol) @@ -183,7 +178,7 @@ static Atmospherics() /// This is the actual length of the gases arrays in mixtures. /// Set to the closest multiple of 4 relative to for SIMD reasons. /// - public static readonly int AdjustedNumberOfGases; + public const int AdjustedNumberOfGases = ((TotalNumberOfGases + 3) / 4) * 4; /// /// Amount of heat released per mole of burnt hydrogen or tritium (hydrogen isotope) diff --git a/Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs b/Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs index eb0079eb358..f468724db33 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs @@ -66,7 +66,10 @@ public static Vector2i GetGasChunkIndices(Vector2i indices) [Serializable, NetSerializable] public readonly struct GasOverlayData : IEquatable { + [ViewVariables] public readonly byte FireState; + + [ViewVariables] public readonly byte[] Opacity; // TODO change fire color based on temps diff --git a/Content.Shared/Maps/ContentTileDefinition.cs b/Content.Shared/Maps/ContentTileDefinition.cs index ce7980509eb..32f5db0e821 100644 --- a/Content.Shared/Maps/ContentTileDefinition.cs +++ b/Content.Shared/Maps/ContentTileDefinition.cs @@ -81,7 +81,11 @@ public sealed partial class ContentTileDefinition : IPrototype, IInheritingProto [DataField("itemDrop", customTypeSerializer:typeof(PrototypeIdSerializer))] public string ItemDropPrototypeName { get; private set; } = "FloorTileItemSteel"; - [DataField("isSpace")] public bool IsSpace { get; private set; } + // TODO rename data-field in yaml + /// + /// Whether or not the tile is exposed to the map's atmosphere. + /// + [DataField("isSpace")] public bool MapAtmosphere { get; private set; } /// /// Friction override for mob mover in diff --git a/Content.Shared/Maps/TurfHelpers.cs b/Content.Shared/Maps/TurfHelpers.cs index a87b8c97d15..58a5d133b55 100644 --- a/Content.Shared/Maps/TurfHelpers.cs +++ b/Content.Shared/Maps/TurfHelpers.cs @@ -11,22 +11,6 @@ namespace Content.Shared.Maps // That, or make the interface arguments non-optional so people stop failing to pass them in. public static class TurfHelpers { - /// - /// Attempts to get the turf at map indices with grid id or null if no such turf is found. - /// - public static TileRef GetTileRef(this Vector2i vector2i, EntityUid gridId, IMapManager? mapManager = null) - { - mapManager ??= IoCManager.Resolve(); - - if (!mapManager.TryGetGrid(gridId, out var grid)) - return default; - - if (!grid.TryGetTileRef(vector2i, out var tile)) - return default; - - return tile; - } - /// /// Attempts to get the turf at a certain coordinates or null if no such turf is found. /// @@ -67,7 +51,7 @@ public static ContentTileDefinition GetContentTileDefinition(this Tile tile, ITi /// public static bool IsSpace(this Tile tile, ITileDefinitionManager? tileDefinitionManager = null) { - return tile.GetContentTileDefinition(tileDefinitionManager).IsSpace; + return tile.GetContentTileDefinition(tileDefinitionManager).MapAtmosphere; } /// @@ -115,15 +99,6 @@ public static IEnumerable GetEntitiesInTile(this EntityCoordinates co return GetEntitiesInTile(turf.Value, flags, lookupSystem); } - /// - /// Helper that returns all entities in a turf. - /// - [Obsolete("Use the lookup system")] - public static IEnumerable GetEntitiesInTile(this Vector2i indices, EntityUid gridId, LookupFlags flags = LookupFlags.Static, EntityLookupSystem? lookupSystem = null) - { - return GetEntitiesInTile(indices.GetTileRef(gridId), flags, lookupSystem); - } - /// /// Checks if a turf has something dense on it. /// diff --git a/Resources/Locale/en-US/atmos/commands.ftl b/Resources/Locale/en-US/atmos/commands.ftl new file mode 100644 index 00000000000..692908d42ad --- /dev/null +++ b/Resources/Locale/en-US/atmos/commands.ftl @@ -0,0 +1,8 @@ +cmd-set-map-atmos-desc = Sets a map's atmosphere +cmd-set-map-atmos-help = setmapatmos [ [moles...]] +cmd-set-map-atmos-removed = Atmosphere removed from map {$map} +cmd-set-map-atmos-updated = Atmosphere set for map {$map} +cmd-set-map-atmos-hint-map = +cmd-set-map-atmos-hint-space = +cmd-set-map-atmos-hint-temp = (float) +cmd-set-map-atmos-hint-gas = <{$gas} moles> (float) From eb7a08980e85c492789d899b2e18520002233f27 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Mon, 20 May 2024 15:56:20 -0700 Subject: [PATCH 066/111] Mirror: Store keybind priority (#365) ## Mirror of PR #26356: [Store keybind priority](https://github.com/space-wizards/space-station-14/pull/26356) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `f7a1ffd0aab25d70ac185753d596469fc1e87480` PR opened by wrexbe at 2024-03-23 02:49:07 UTC --- PR changed 2 files with 2 additions and 1 deletions. The PR had the following labels: - Changes: UI ---

    Original Body

    > Changed it so the priority isn't lost when you set a binding in the UI. > Also added a priority to MoveStoredItem so it doesn't conflict with Use. > Fixes https://github.com/space-wizards/space-station-14/issues/26142 > Does not fix old keybinds files, so they will need to reset it, and rebind it. > > A better solution might be to change it so the keybinds are always in the order they appear in the default keybinds folder, to prevent the ordering from changing unpredictably based on what the user overrides.
    Co-authored-by: SimpleStation14 --- Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs | 2 +- Resources/keybinds.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs index ce5cf421aef..f0537079b97 100644 --- a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs @@ -403,7 +403,7 @@ private void InputManagerOnFirstChanceOnKeyEvent(KeyEventArgs keyEvent, KeyEvent Mod1 = mods[0], Mod2 = mods[1], Mod3 = mods[2], - Priority = 0, + Priority = _currentlyRebinding.Binding?.Priority ?? 0, Type = bindType, CanFocus = key == Keyboard.Key.MouseLeft || key == Keyboard.Key.MouseRight diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index b8cfc40c1c4..346156159a7 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -167,6 +167,7 @@ binds: type: State key: MouseLeft canFocus: true + priority: 10 - function: RotateStoredItem type: State key: MouseRight From e5314b25a1042b431323d46f21e10302da5de19a Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Mon, 20 May 2024 15:56:51 -0700 Subject: [PATCH 067/111] Mirror: Removed Cannabis from thief objectives (#369) ## Mirror of PR #26412: [Removed Cannabis from thief objectives](https://github.com/space-wizards/space-station-14/pull/26412) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `b44015bd554eb97a2d4762d7b585c71e43865571` PR opened by ChaseFlorom at 2024-03-24 21:40:14 UTC --- PR changed 3 files with 4 additions and 26 deletions. The PR had the following labels: - No C# - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > > Removed the cannabis objective from the thief objectives. > > ## Why / Balance > > > 20-30 cannabis leaves is neither fun for the thief, or for the botanist that they're asking to grow it. It doesn't fit with the heart of the thief objective system, as the only real way to accomplish it is to ask the botanist to grow it for you, or grow it yourself. Neither of which is stealing. > > Resolve [#26321] > > ## Technical details > > Removed the proper .yml code. > ## Media > > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > :cl: > - remove: removed cannabis thief objective.
    Co-authored-by: SimpleStation14 --- .../Objects/Specific/Hydroponics/leaves.yml | 8 ++------ .../Prototypes/Objectives/stealTargetGroups.yml | 7 +------ Resources/Prototypes/Objectives/thief.yml | 15 +-------------- 3 files changed, 4 insertions(+), 26 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml index e87fec22acc..b847416211d 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml @@ -17,8 +17,7 @@ reagents: - ReagentId: THC Quantity: 15 - - type: StealTarget - stealGroup: Cannabis + - type: entity name: dried cannabis leaves @@ -38,8 +37,6 @@ - type: Sprite sprite: Objects/Specific/Hydroponics/tobacco.rsi state: dried - - type: StealTarget - stealGroup: Cannabis - type: entity name: ground cannabis @@ -68,8 +65,7 @@ - Smokable - type: Item size: Tiny - - type: StealTarget - stealGroup: Cannabis + - type: entity name: tobacco leaves diff --git a/Resources/Prototypes/Objectives/stealTargetGroups.yml b/Resources/Prototypes/Objectives/stealTargetGroups.yml index fb1e5e76fc0..006c061666b 100644 --- a/Resources/Prototypes/Objectives/stealTargetGroups.yml +++ b/Resources/Prototypes/Objectives/stealTargetGroups.yml @@ -142,12 +142,7 @@ sprite: Objects/Misc/id_cards.rsi state: default -- type: stealTargetGroup - id: Cannabis - name: cannabis - sprite: - sprite: Objects/Specific/Hydroponics/cannabis.rsi - state: produce + - type: stealTargetGroup id: LAMP diff --git a/Resources/Prototypes/Objectives/thief.yml b/Resources/Prototypes/Objectives/thief.yml index 66258870d61..18154850973 100644 --- a/Resources/Prototypes/Objectives/thief.yml +++ b/Resources/Prototypes/Objectives/thief.yml @@ -142,20 +142,7 @@ - type: Objective difficulty: 0.7 -- type: entity - noSpawn: true - parent: BaseThiefStealCollectionObjective - id: CannabisStealCollectionObjective - components: - - type: NotJobRequirement - job: Botanist - - type: StealCondition - stealGroup: Cannabis - minCollectionSize: 20 - maxCollectionSize: 30 - verifyMapExistence: false - - type: Objective - difficulty: 0.5 + - type: entity noSpawn: true From feb7db5db8edad714fcf89a0555ac2a0bd622bb9 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Mon, 20 May 2024 15:57:19 -0700 Subject: [PATCH 068/111] Mirror: Gives borg industrial welder (#370) ## Mirror of PR #26332: [Gives borg industrial welder](https://github.com/space-wizards/space-station-14/pull/26332) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `1dff97901d5c4ea3f23cf29a9e6f1c2edebdbc27` PR opened by SoulFN at 2024-03-22 09:48:46 UTC --- PR changed 1 files with 1 additions and 1 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > Changes basic welder in borg tool module to industrial welder > > > ## Why / Balance > Basic welder sucks > > > ## Technical details > No > > > ## Media > > > - This PR does not require an ingame showcase > > ## Breaking changes > No > > > **Changelog** > :cl: > - tweak: The borg tool module now has an industrial welding tool. > > > >
    Co-authored-by: SimpleStation14 --- .../Entities/Objects/Specific/Robotics/borg_modules.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 8d195a25bea..e14f29746dc 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -177,7 +177,7 @@ - Screwdriver - Wirecutter - Multitool - - Welder + - WelderIndustrial # cargo modules - type: entity From 156dfb61a88293d99024b784d580fec1ef5a3225 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Mon, 20 May 2024 15:57:56 -0700 Subject: [PATCH 069/111] Mirror: Code cleanup: Purge obsoleted SharedPhysicsSystem methods (#384) ## Mirror of PR #26287: [Code cleanup: Purge obsoleted SharedPhysicsSystem methods](https://github.com/space-wizards/space-station-14/pull/26287) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `964c6d54caae45b205a326143f56d6458a1bbc8a` PR opened by Tayrtahn at 2024-03-20 13:37:25 UTC --- PR changed 16 files with 43 additions and 43 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > Requires https://github.com/space-wizards/RobustToolbox/pull/4979 > > ## About the PR > > Cleans up some obsolete method calls. > > ## Why / Balance / Technical > > Cleaning up obsolete Dirty calls in RT required changing the signatures of some public methods in SharedPhysicsSystem. This updates the calls to those methods here in Content to use the new signatures passing in UIDs. > >
    Co-authored-by: SimpleStation14 --- .../Administration/Systems/AdminVerbSystem.Smites.cs | 12 ++++++------ .../AtmosphereSystem.HighPressureDelta.cs | 8 ++++---- .../Chemistry/EntitySystems/VaporSystem.cs | 4 ++-- Content.Server/ImmovableRod/ImmovableRodSystem.cs | 6 +++--- .../ParticleAcceleratorSystem.Emitter.cs | 2 +- .../Physics/Controllers/ChasingWalkSystem.cs | 2 +- .../Systems/ShuttleSystem.FasterThanLight.cs | 8 ++++---- Content.Server/Shuttles/Systems/ShuttleSystem.cs | 8 ++++---- .../StationEvents/Events/MeteorSwarmRule.cs | 6 +++--- Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs | 2 +- .../Movement/Systems/SharedJetpackSystem.cs | 4 ++-- Content.Shared/Throwing/ThrowingSystem.cs | 6 +++--- Content.Shared/Throwing/ThrownItemSystem.cs | 2 +- .../Weapons/Melee/MeleeThrowOnHitSystem.cs | 4 ++-- Content.Shared/Weapons/Misc/SharedTetherGunSystem.cs | 10 +++++----- .../Weapons/Ranged/Systems/SharedGunSystem.cs | 2 +- 16 files changed, 43 insertions(+), 43 deletions(-) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index 8a819f59420..8ee52ad03e7 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -409,7 +409,7 @@ private void AddSmiteVerbs(GetVerbsEvent args) var fixtures = Comp(args.Target); xform.Anchored = false; // Just in case. _physics.SetBodyType(args.Target, BodyType.Dynamic, manager: fixtures, body: physics); - _physics.SetBodyStatus(physics, BodyStatus.InAir); + _physics.SetBodyStatus(args.Target, physics, BodyStatus.InAir); _physics.WakeBody(args.Target, manager: fixtures, body: physics); foreach (var fixture in fixtures.Fixtures.Values) @@ -424,8 +424,8 @@ private void AddSmiteVerbs(GetVerbsEvent args) _physics.SetLinearVelocity(args.Target, _random.NextVector2(1.5f, 1.5f), manager: fixtures, body: physics); _physics.SetAngularVelocity(args.Target, MathF.PI * 12, manager: fixtures, body: physics); - _physics.SetLinearDamping(physics, 0f); - _physics.SetAngularDamping(physics, 0f); + _physics.SetLinearDamping(args.Target, physics, 0f); + _physics.SetAngularDamping(args.Target, physics, 0f); }, Impact = LogImpact.Extreme, Message = Loc.GetString("admin-smite-pinball-description") @@ -444,7 +444,7 @@ private void AddSmiteVerbs(GetVerbsEvent args) xform.Anchored = false; // Just in case. _physics.SetBodyType(args.Target, BodyType.Dynamic, body: physics); - _physics.SetBodyStatus(physics, BodyStatus.InAir); + _physics.SetBodyStatus(args.Target, physics, BodyStatus.InAir); _physics.WakeBody(args.Target, manager: fixtures, body: physics); foreach (var fixture in fixtures.Fixtures.Values) @@ -454,8 +454,8 @@ private void AddSmiteVerbs(GetVerbsEvent args) _physics.SetLinearVelocity(args.Target, _random.NextVector2(8.0f, 8.0f), manager: fixtures, body: physics); _physics.SetAngularVelocity(args.Target, MathF.PI * 12, manager: fixtures, body: physics); - _physics.SetLinearDamping(physics, 0f); - _physics.SetAngularDamping(physics, 0f); + _physics.SetLinearDamping(args.Target, physics, 0f); + _physics.SetAngularDamping(args.Target, physics, 0f); }, Impact = LogImpact.Extreme, Message = Loc.GetString("admin-smite-yeet-description") diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index b0c823426d6..77b5bf18af2 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -52,7 +52,7 @@ private void UpdateHighPressure(float frameTime) if (HasComp(uid) && TryComp(uid, out var body)) { - _physics.SetBodyStatus(body, BodyStatus.OnGround); + _physics.SetBodyStatus(uid, body, BodyStatus.OnGround); } if (TryComp(uid, out var fixtures)) @@ -75,7 +75,7 @@ private void AddMobMovedByPressure(EntityUid uid, MovedByPressureComponent compo if (!TryComp(uid, out var fixtures)) return; - _physics.SetBodyStatus(body, BodyStatus.InAir); + _physics.SetBodyStatus(uid, body, BodyStatus.InAir); foreach (var (id, fixture) in fixtures.Fixtures) { @@ -94,9 +94,9 @@ private void HighPressureMovements(Entity gridAtmospher // TODO ATMOS finish this // Don't play the space wind sound on tiles that are on fire... - if(tile.PressureDifference > 15 && !tile.Hotspot.Valid) + if (tile.PressureDifference > 15 && !tile.Hotspot.Valid) { - if(_spaceWindSoundCooldown == 0 && !string.IsNullOrEmpty(SpaceWindSound)) + if (_spaceWindSoundCooldown == 0 && !string.IsNullOrEmpty(SpaceWindSound)) { var coordinates = _mapSystem.ToCenterCoordinates(tile.GridIndex, tile.GridIndices); _audio.PlayPvs(SpaceWindSound, coordinates, AudioParams.Default.WithVariation(0.125f).WithVolume(MathHelper.Clamp(tile.PressureDifference / 10, 10, 100))); diff --git a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs index d945c1f818b..7d3f70bc0d8 100644 --- a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs @@ -64,8 +64,8 @@ public void Start(Entity vapor, TransformComponent vaporXform, V // Set Move if (EntityManager.TryGetComponent(vapor, out PhysicsComponent? physics)) { - _physics.SetLinearDamping(physics, 0f); - _physics.SetAngularDamping(physics, 0f); + _physics.SetLinearDamping(vapor, physics, 0f); + _physics.SetAngularDamping(vapor, physics, 0f); _throwing.TryThrow(vapor, dir, speed, user: user); diff --git a/Content.Server/ImmovableRod/ImmovableRodSystem.cs b/Content.Server/ImmovableRod/ImmovableRodSystem.cs index 0fa8f7d292f..31aa39cf03a 100644 --- a/Content.Server/ImmovableRod/ImmovableRodSystem.cs +++ b/Content.Server/ImmovableRod/ImmovableRodSystem.cs @@ -53,9 +53,9 @@ private void OnMapInit(EntityUid uid, ImmovableRodComponent component, MapInitEv { if (EntityManager.TryGetComponent(uid, out PhysicsComponent? phys)) { - _physics.SetLinearDamping(phys, 0f); - _physics.SetFriction(phys, 0f); - _physics.SetBodyStatus(phys, BodyStatus.InAir); + _physics.SetLinearDamping(uid, phys, 0f); + _physics.SetFriction(uid, phys, 0f); + _physics.SetBodyStatus(uid, phys, BodyStatus.InAir); if (!component.RandomizeVelocity) return; diff --git a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Emitter.cs b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Emitter.cs index 46b25163cc0..06f1b6b154c 100644 --- a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Emitter.cs +++ b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Emitter.cs @@ -28,7 +28,7 @@ private void FireEmitter(EntityUid uid, ParticleAcceleratorPowerState strength, if (TryComp(emitted, out var particlePhys)) { var angle = _transformSystem.GetWorldRotation(uid, xformQuery); - _physicsSystem.SetBodyStatus(particlePhys, BodyStatus.InAir); + _physicsSystem.SetBodyStatus(emitted, particlePhys, BodyStatus.InAir); var velocity = angle.ToWorldVec() * 20f; if (TryComp(uid, out var phys)) diff --git a/Content.Server/Physics/Controllers/ChasingWalkSystem.cs b/Content.Server/Physics/Controllers/ChasingWalkSystem.cs index 215e7e3124e..618dd4156fc 100644 --- a/Content.Server/Physics/Controllers/ChasingWalkSystem.cs +++ b/Content.Server/Physics/Controllers/ChasingWalkSystem.cs @@ -97,6 +97,6 @@ private void ForceImpulse(EntityUid uid, ChasingWalkComponent component) var speed = delta.Length() > 0 ? delta.Normalized() * component.Speed : Vector2.Zero; _physics.SetLinearVelocity(uid, speed); - _physics.SetBodyStatus(physics, BodyStatus.InAir); //If this is not done, from the explosion up close, the tesla will "Fall" to the ground, and almost stop moving. + _physics.SetBodyStatus(uid, physics, BodyStatus.InAir); //If this is not done, from the explosion up close, the tesla will "Fall" to the ground, and almost stop moving. } } diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs index f9ceab8f7b1..e4e4534b0c5 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs @@ -371,8 +371,8 @@ private void UpdateFTLStarting(Entity entity) Enable(uid, component: body); _physics.SetLinearVelocity(uid, new Vector2(0f, 20f), body: body); _physics.SetAngularVelocity(uid, 0f, body: body); - _physics.SetLinearDamping(body, 0f); - _physics.SetAngularDamping(body, 0f); + _physics.SetLinearDamping(uid, body, 0f); + _physics.SetAngularDamping(uid, body, 0f); _dockSystem.SetDockBolts(uid, true); _console.RefreshShuttleConsoles(uid); @@ -426,8 +426,8 @@ private void UpdateFTLArriving(Entity entity) _physics.SetLinearVelocity(uid, Vector2.Zero, body: body); _physics.SetAngularVelocity(uid, 0f, body: body); - _physics.SetLinearDamping(body, entity.Comp2.LinearDamping); - _physics.SetAngularDamping(body, entity.Comp2.AngularDamping); + _physics.SetLinearDamping(uid, body, entity.Comp2.LinearDamping); + _physics.SetAngularDamping(uid, body, entity.Comp2.AngularDamping); var target = entity.Comp1.TargetCoordinates; diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.cs index 8d44dae4b2e..7c42753a7de 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.cs @@ -129,10 +129,10 @@ public void Enable(EntityUid uid, FixturesComponent? manager = null, PhysicsComp return; _physics.SetBodyType(uid, BodyType.Dynamic, manager: manager, body: component); - _physics.SetBodyStatus(component, BodyStatus.InAir); + _physics.SetBodyStatus(uid, component, BodyStatus.InAir); _physics.SetFixedRotation(uid, false, manager: manager, body: component); - _physics.SetLinearDamping(component, shuttle.LinearDamping); - _physics.SetAngularDamping(component, shuttle.AngularDamping); + _physics.SetLinearDamping(uid, component, shuttle.LinearDamping); + _physics.SetAngularDamping(uid, component, shuttle.AngularDamping); } public void Disable(EntityUid uid, FixturesComponent? manager = null, PhysicsComponent? component = null) @@ -141,7 +141,7 @@ public void Disable(EntityUid uid, FixturesComponent? manager = null, PhysicsCom return; _physics.SetBodyType(uid, BodyType.Static, manager: manager, body: component); - _physics.SetBodyStatus(component, BodyStatus.OnGround); + _physics.SetBodyStatus(uid, component, BodyStatus.OnGround); _physics.SetFixedRotation(uid, true, manager: manager, body: component); } diff --git a/Content.Server/StationEvents/Events/MeteorSwarmRule.cs b/Content.Server/StationEvents/Events/MeteorSwarmRule.cs index 192a620c9fc..ad56479b379 100644 --- a/Content.Server/StationEvents/Events/MeteorSwarmRule.cs +++ b/Content.Server/StationEvents/Events/MeteorSwarmRule.cs @@ -68,9 +68,9 @@ protected override void ActiveTick(EntityUid uid, MeteorSwarmRuleComponent compo var spawnPosition = new MapCoordinates(center + offset, mapId); var meteor = Spawn("MeteorLarge", spawnPosition); var physics = EntityManager.GetComponent(meteor); - _physics.SetBodyStatus(physics, BodyStatus.InAir); - _physics.SetLinearDamping(physics, 0f); - _physics.SetAngularDamping(physics, 0f); + _physics.SetBodyStatus(meteor, physics, BodyStatus.InAir); + _physics.SetLinearDamping(meteor, physics, 0f); + _physics.SetAngularDamping(meteor, physics, 0f); _physics.ApplyLinearImpulse(meteor, -offset.Normalized() * component.MeteorVelocity * physics.Mass, body: physics); _physics.ApplyAngularImpulse( meteor, diff --git a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs index b58bdf83e49..8172947a039 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs @@ -358,7 +358,7 @@ public bool TryBuckle(EntityUid buckleUid, EntityUid userUid, EntityUid strapUid if (TryComp(buckleUid, out var physics)) { - _physics.ResetDynamics(physics); + _physics.ResetDynamics(buckleUid, physics); } if (!buckleComp.PullStrap && TryComp(strapUid, out var toPullable)) diff --git a/Content.Shared/Movement/Systems/SharedJetpackSystem.cs b/Content.Shared/Movement/Systems/SharedJetpackSystem.cs index abe12b79d1a..8c42511f846 100644 --- a/Content.Shared/Movement/Systems/SharedJetpackSystem.cs +++ b/Content.Shared/Movement/Systems/SharedJetpackSystem.cs @@ -92,7 +92,7 @@ private void SetupUser(EntityUid user, EntityUid jetpackUid) _mover.SetRelay(user, jetpackUid); if (TryComp(user, out var physics)) - _physics.SetBodyStatus(physics, BodyStatus.InAir); + _physics.SetBodyStatus(user, physics, BodyStatus.InAir); userComp.Jetpack = jetpackUid; } @@ -103,7 +103,7 @@ private void RemoveUser(EntityUid uid) return; if (TryComp(uid, out var physics)) - _physics.SetBodyStatus(physics, BodyStatus.OnGround); + _physics.SetBodyStatus(uid, physics, BodyStatus.OnGround); RemComp(uid); } diff --git a/Content.Shared/Throwing/ThrowingSystem.cs b/Content.Shared/Throwing/ThrowingSystem.cs index 54294318315..01682863389 100644 --- a/Content.Shared/Throwing/ThrowingSystem.cs +++ b/Content.Shared/Throwing/ThrowingSystem.cs @@ -160,7 +160,7 @@ public void TryThrow(EntityUid uid, } else { - _physics.SetBodyStatus(physics, BodyStatus.InAir); + _physics.SetBodyStatus(uid, physics, BodyStatus.InAir); } if (user == null) @@ -176,10 +176,10 @@ public void TryThrow(EntityUid uid, { var msg = new ThrowPushbackAttemptEvent(); RaiseLocalEvent(uid, msg); - const float MassLimit = 5f; + const float massLimit = 5f; if (!msg.Cancelled) - _physics.ApplyLinearImpulse(user.Value, -impulseVector / physics.Mass * pushbackRatio * MathF.Min(MassLimit, physics.Mass), body: userPhysics); + _physics.ApplyLinearImpulse(user.Value, -impulseVector / physics.Mass * pushbackRatio * MathF.Min(massLimit, physics.Mass), body: userPhysics); } } } diff --git a/Content.Shared/Throwing/ThrownItemSystem.cs b/Content.Shared/Throwing/ThrownItemSystem.cs index b3b5bcf7870..cc50094e3dd 100644 --- a/Content.Shared/Throwing/ThrownItemSystem.cs +++ b/Content.Shared/Throwing/ThrownItemSystem.cs @@ -93,7 +93,7 @@ public void StopThrow(EntityUid uid, ThrownItemComponent thrownItemComponent) { if (TryComp(uid, out var physics)) { - _physics.SetBodyStatus(physics, BodyStatus.OnGround); + _physics.SetBodyStatus(uid, physics, BodyStatus.OnGround); if (physics.Awake) _broadphase.RegenerateContacts(uid, physics); diff --git a/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs b/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs index e840bd1ddd5..e0696022606 100644 --- a/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs +++ b/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs @@ -74,7 +74,7 @@ private void OnThrownStartup(Entity ent, ref ComponentStar comp.PreviousStatus = body.BodyStatus; comp.ThrownEndTime = _timing.CurTime + TimeSpan.FromSeconds(comp.Lifetime); comp.MinLifetimeTime = _timing.CurTime + TimeSpan.FromSeconds(comp.MinLifetime); - _physics.SetBodyStatus(body, BodyStatus.InAir); + _physics.SetBodyStatus(ent, body, BodyStatus.InAir); _physics.SetLinearVelocity(ent, Vector2.Zero, body: body); _physics.ApplyLinearImpulse(ent, comp.Velocity * body.Mass, body: body); Dirty(ent, ent.Comp); @@ -83,7 +83,7 @@ private void OnThrownStartup(Entity ent, ref ComponentStar private void OnThrownShutdown(Entity ent, ref ComponentShutdown args) { if (TryComp(ent, out var body)) - _physics.SetBodyStatus(body,ent.Comp.PreviousStatus); + _physics.SetBodyStatus(ent, body, ent.Comp.PreviousStatus); var ev = new MeleeThrowOnHitEndEvent(); RaiseLocalEvent(ent, ref ev); } diff --git a/Content.Shared/Weapons/Misc/SharedTetherGunSystem.cs b/Content.Shared/Weapons/Misc/SharedTetherGunSystem.cs index 177cb310d18..3a950bcd29e 100644 --- a/Content.Shared/Weapons/Misc/SharedTetherGunSystem.cs +++ b/Content.Shared/Weapons/Misc/SharedTetherGunSystem.cs @@ -207,12 +207,12 @@ protected virtual void StartTether(EntityUid gunUid, BaseForceGunComponent compo TransformSystem.Unanchor(target, targetXform); component.Tethered = target; var tethered = EnsureComp(target); - _physics.SetBodyStatus(targetPhysics, BodyStatus.InAir, false); + _physics.SetBodyStatus(target, targetPhysics, BodyStatus.InAir, false); _physics.SetSleepingAllowed(target, targetPhysics, false); tethered.Tetherer = gunUid; tethered.OriginalAngularDamping = targetPhysics.AngularDamping; - _physics.SetAngularDamping(targetPhysics, 0f); - _physics.SetLinearDamping(targetPhysics, 0f); + _physics.SetAngularDamping(target, targetPhysics, 0f); + _physics.SetLinearDamping(target, targetPhysics, 0f); _physics.SetAngularVelocity(target, SpinVelocity, body: targetPhysics); _physics.WakeBody(target, body: targetPhysics); var thrown = EnsureComp(component.Tethered.Value); @@ -264,9 +264,9 @@ protected virtual void StopTether(EntityUid gunUid, BaseForceGunComponent compon _thrown.StopThrow(component.Tethered.Value, thrown); } - _physics.SetBodyStatus(targetPhysics, BodyStatus.OnGround); + _physics.SetBodyStatus(component.Tethered.Value, targetPhysics, BodyStatus.OnGround); _physics.SetSleepingAllowed(component.Tethered.Value, targetPhysics, true); - _physics.SetAngularDamping(targetPhysics, Comp(component.Tethered.Value).OriginalAngularDamping); + _physics.SetAngularDamping(component.Tethered.Value, targetPhysics, Comp(component.Tethered.Value).OriginalAngularDamping); } if (!transfer) diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 36b5bbd1927..d3aee5a48e9 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -388,7 +388,7 @@ public abstract void Shoot( public void ShootProjectile(EntityUid uid, Vector2 direction, Vector2 gunVelocity, EntityUid gunUid, EntityUid? user = null, float speed = 20f) { var physics = EnsureComp(uid); - Physics.SetBodyStatus(physics, BodyStatus.InAir); + Physics.SetBodyStatus(uid, physics, BodyStatus.InAir); var targetMapVelocity = gunVelocity + direction.Normalized() * speed; var currentMapVelocity = Physics.GetMapLinearVelocity(uid, physics); From 8d6c536d27fe2fc8c283c89cf343a0f6674fcfb3 Mon Sep 17 00:00:00 2001 From: LovelyLophi <111106265+LovelyLophi@users.noreply.github.com> Date: Tue, 21 May 2024 23:35:11 -0400 Subject: [PATCH 070/111] Alternate Corporate Coats Wave 1 (#392) # Description Edited the corporate coat by Leonardo DaBepis, Thought we could have some more options for assistant gang colors. /j ---

    Media

    ![image](https://github.com/Simple-Station/Einstein-Engines/assets/111106265/2403c399-27ec-42d5-8f3a-2785741cb045) WAOW THEY LOOK SO COOOL RIGHT?

    --- # Changelog :cl: - add: Added a number of new corporate coats to the Clothesmate. --------- Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Co-authored-by: VMSolidus Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> --- .../Catalog/Cargo/cargo_vending.yml | 2 +- .../Inventories/clothesmate.yml | 5 ++ .../Clothing/OuterClothing/wintercoats.yml | 55 ++++++++++++++++++ .../equipped-OUTERCLOTHING.png | Bin 0 -> 8610 bytes .../WinterCoats/cs_corpo_jacket.rsi/icon.png | Bin 0 -> 5930 bytes .../WinterCoats/cs_corpo_jacket.rsi/meta.json | 18 ++++++ .../equipped-OUTERCLOTHING.png | Bin 0 -> 8514 bytes .../WinterCoats/ee_corpo_jacket.rsi/icon.png | Bin 0 -> 6063 bytes .../WinterCoats/ee_corpo_jacket.rsi/meta.json | 18 ++++++ .../equipped-OUTERCLOTHING.png | Bin 0 -> 8310 bytes .../WinterCoats/hi_corpo_jacket.rsi/icon.png | Bin 0 -> 5980 bytes .../WinterCoats/hi_corpo_jacket.rsi/meta.json | 18 ++++++ .../equipped-OUTERCLOTHING.png | Bin 0 -> 9341 bytes .../WinterCoats/hm_corpo_jacket.rsi/icon.png | Bin 0 -> 6169 bytes .../WinterCoats/hm_corpo_jacket.rsi/meta.json | 18 ++++++ .../equipped-OUTERCLOTHING.png | Bin 0 -> 9025 bytes .../WinterCoats/id_corpo_jacket.rsi/icon.png | Bin 0 -> 5955 bytes .../WinterCoats/id_corpo_jacket.rsi/meta.json | 18 ++++++ 18 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/icon.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/meta.json create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/icon.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/meta.json create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi/icon.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi/meta.json create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi/icon.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi/meta.json create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi/icon.png create mode 100644 Resources/Textures/Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi/meta.json diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml index 2165fb4e585..d0ae444bf77 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml @@ -33,7 +33,7 @@ sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base product: CrateVendingMachineRestockClothesFilled - cost: 7245 + cost: 8050 category: cargoproduct-category-name-service group: market diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml index 1dbc412a9c8..04cc2e3e19d 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml @@ -85,6 +85,11 @@ ClothingOuterCoatLettermanRed: 2 # Nyano - Clothing addition ClothingOuterDenimJacket: 2 # DeltaV - Clothing addition ClothingOuterCorporateJacket: 2 # DeltaV - Clothing addition + ClothingOuterCsCorporateJacket: 2 # Einstein Engines - Clothing addition + ClothingOuterEECorporateJacket: 2 # Einstein Engines - Clothing addition + ClothingOuterHICorporateJacket: 2 # Einstein Engines - Clothing addition + ClothingOuterHMCorporateJacket: 2 # Einstein Engines - Clothing addition + ClothingOuterIdCorporateJacket: 2 # Einstein Engines - Clothing addition ClothingShoesBootsFishing: 2 # Nyano - Clothing addition ClothingHeadTinfoil: 2 # Nyano - Clothing addition ClothingHeadFishCap: 2 diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml index 4f0a0d0aafa..d45e8c3f3c2 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml @@ -541,3 +541,58 @@ Quantity: 20 - type: ToggleableClothing clothingPrototype: ClothingHeadHatHoodWinterWeb + +- type: entity + parent: ClothingOuterWinterCoat + id: ClothingOuterCsCorporateJacket + name: Cybersun Corporate Jacket + description: A cozy jacket with the Cybersun logo printed on the back. Merchandise rewarded to stations with a safety factor of uhh... seven. + components: + - type: Sprite + sprite: Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi + - type: Clothing + sprite: Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi + +- type: entity + parent: ClothingOuterWinterCoat + id: ClothingOuterEECorporateJacket + name: Einstein Engines Corporate Jacket + description: A cozy jacket with the Einstein Engines logo printed on the back. Merchandise rewarded to stations with a safety factor of uhh... seven. + components: + - type: Sprite + sprite: Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi + - type: Clothing + sprite: Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi + +- type: entity + parent: ClothingOuterWinterCoat + id: ClothingOuterHICorporateJacket + name: Hephaestus Industries Corporate Jacket + description: A cozy jacket with the Hephaestus Industries logo printed on the back. Merchandise rewarded to stations with a safety factor of uhh... seven. + components: + - type: Sprite + sprite: Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi + - type: Clothing + sprite: Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi + +- type: entity + parent: ClothingOuterWinterCoat + id: ClothingOuterHMCorporateJacket + name: Hawkmoon Acquisitions Corporate Jacket + description: A cozy jacket with the Hawkmoon Acquisitions logo printed on the back. Merchandise rewarded to stations with a safety factor of uhh... seven. + components: + - type: Sprite + sprite: Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi + - type: Clothing + sprite: Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi + +- type: entity + parent: ClothingOuterWinterCoat + id: ClothingOuterIdCorporateJacket + name: Interdyne Corporate Jacket + description: A cozy jacket with the Interdyne logo printed on the back. Merchandise rewarded to stations with a safety factor of uhh... seven. + components: + - type: Sprite + sprite: Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi + - type: Clothing + sprite: Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..73e230e8a5f2088cbea061e045059ab6e5c52140 GIT binary patch literal 8610 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/icon.png b/Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f78a89945c3732976cfac3674fea17d416a0bbe7 GIT binary patch literal 5930 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 Y6YmP{KCGw>f(VDXJ9|4FUK=U<7ye`^m;e9( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/meta.json new file mode 100644 index 00000000000..42d21c3d8ab --- /dev/null +++ b/Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "leonardo_dabepis on discord / @leonardo-dabepis on Tumblr, Edited by heartparkyheart on Discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..983c2534f4ceffdb575394b6b2077e250a9a07e1 GIT binary patch literal 8514 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 C=v7$& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/icon.png b/Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ba72253098481f5f357ad1a0fd752a9c1b23a2d5 GIT binary patch literal 6063 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 NoE=>4&)9BC_#YSooM`|6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/meta.json new file mode 100644 index 00000000000..42d21c3d8ab --- /dev/null +++ b/Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "leonardo_dabepis on discord / @leonardo-dabepis on Tumblr, Edited by heartparkyheart on Discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..f18a64ab9c0c4012305f51ab70dc2710c1131824 GIT binary patch literal 8310 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 B7?S`1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi/icon.png b/Resources/Textures/Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d80b56558a23c7c523173d543ae370b835f48ac8 GIT binary patch literal 6169 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 G68{IREn~+3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi/meta.json new file mode 100644 index 00000000000..42d21c3d8ab --- /dev/null +++ b/Resources/Textures/Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "leonardo_dabepis on discord / @leonardo-dabepis on Tumblr, Edited by heartparkyheart on Discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + } + ] +} From 9d84bbed2d276af7c5a7804dfbbd01078d91003c Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Wed, 22 May 2024 03:35:32 +0000 Subject: [PATCH 071/111] Automatic Changelog Update (#392) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 954f86aa044..60f2d8f14c4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4080,3 +4080,9 @@ Entries: you join when someone leaves. id: 6110 time: '2024-05-13T04:58:39.0000000+00:00' +- author: LovelyLophi + changes: + - type: Add + message: Added a number of new corporate coats to the Clothesmate. + id: 6111 + time: '2024-05-22T03:35:11.0000000+00:00' From f74e16ca39ff59c96d20a143115606a4fe100e6b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 25 May 2024 18:25:02 -0700 Subject: [PATCH 072/111] Update Credits (#419) --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 3aea674fd94..db58663a2b2 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, stellar-novas, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LovelyLophi, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, stellar-novas, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem From d041011584f8d1497e4e464bd2535f0f60b50e8c Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 28 May 2024 19:38:27 -0400 Subject: [PATCH 073/111] 1984'ing GlobalRollforward (#423) GIVE ME BACK THE TESTS. --- .github/workflows/build-docfx.yml | 2 +- global.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-docfx.yml b/.github/workflows/build-docfx.yml index ca1a6f0af12..d37e37026d7 100644 --- a/.github/workflows/build-docfx.yml +++ b/.github/workflows/build-docfx.yml @@ -21,7 +21,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v3.2.0 with: - dotnet-version: 8.0.x + dotnet-version: 8.0.100 - name: Install dependencies run: dotnet restore diff --git a/global.json b/global.json index 391ba3c2a30..2244195a209 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { "version": "8.0.100", - "rollForward": "latestFeature" + "rollForward": "disable" } } From 7876728a5ec15c96666d4379270d3a41829fa293 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 28 May 2024 19:44:39 -0400 Subject: [PATCH 074/111] Listening Post Earlier Start (#409) # Description This was something that always annoyed me back when I made this for DeltaV. One key feature of the Listening Post was that it would have acted to encourage traitors to actually buy the encryption key bundle, since it had the possibility of letting them get radio support from a listening post. At the time Debug insisted it should only ever spawn extremely late in the around, giving it a sufficiently low weight that it would only appear usually an hour into the round. By this point all of the traitors had either been caught or had already done their thing, thus defeating the entire point of it. It also had an absurdly high minimum player count relative to the actual threat the outpost serves, ensuring that it would never appear on lowpop servers. Seriously not even stationwide lethal threats such as Xenos Ventcritters had as high of a minimum player count. # Changelog :cl: - tweak: Syndicate Listening Posts can now appear any time in a round, and can appear on low-pop servers. --- Resources/Prototypes/DeltaV/GameRules/events.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/DeltaV/GameRules/events.yml b/Resources/Prototypes/DeltaV/GameRules/events.yml index 73b0ca6549c..9391756492b 100644 --- a/Resources/Prototypes/DeltaV/GameRules/events.yml +++ b/Resources/Prototypes/DeltaV/GameRules/events.yml @@ -52,9 +52,8 @@ noSpawn: true components: - type: StationEvent - earliestStart: 15 - weight: 5 - minimumPlayers: 25 + weight: 7.5 + minimumPlayers: 10 maxOccurrences: 1 duration: 1 - type: PirateRadioSpawnRule From 68c8a5e9bd8b82ae373ab38c06590ed0f16400c5 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Tue, 28 May 2024 23:45:02 +0000 Subject: [PATCH 075/111] Automatic Changelog Update (#409) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 60f2d8f14c4..ba49523cfde 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4086,3 +4086,11 @@ Entries: message: Added a number of new corporate coats to the Clothesmate. id: 6111 time: '2024-05-22T03:35:11.0000000+00:00' +- author: VMSolidus + changes: + - type: Tweak + message: >- + Syndicate Listening Posts can now appear any time in a round, and can + appear on low-pop servers. + id: 6112 + time: '2024-05-28T23:44:39.0000000+00:00' From 412323652c0e8f3268918c31407e682becd5c66f Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 19:48:38 -0400 Subject: [PATCH 076/111] Mirror: Add Prometheus stats for admin count (#323) ## Mirror of PR #26284: [Add Prometheus stats for admin count](https://github.com/space-wizards/space-station-14/pull/26284) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `a1817a12dbb385275f4273c1abf48fac0a989ddd` PR opened by PJB3005 at 2024-03-20 10:12:29 UTC --- PR changed 2 files with 106 additions and 1 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > Fixes #20828 > > Reports time series for admin count. Counts are separated by state (active, AFK, or deadminned) and admin rank. > > Requires engine master
    Co-authored-by: SimpleStation14 --- .../Managers/AdminManager.Metrics.cs | 98 +++++++++++++++++++ .../Administration/Managers/AdminManager.cs | 9 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 Content.Server/Administration/Managers/AdminManager.Metrics.cs diff --git a/Content.Server/Administration/Managers/AdminManager.Metrics.cs b/Content.Server/Administration/Managers/AdminManager.Metrics.cs new file mode 100644 index 00000000000..2fea931f1b9 --- /dev/null +++ b/Content.Server/Administration/Managers/AdminManager.Metrics.cs @@ -0,0 +1,98 @@ +using System.Diagnostics.Metrics; +using System.Runtime.InteropServices; +using Content.Server.Afk; +using Robust.Server.DataMetrics; + +namespace Content.Server.Administration.Managers; + +// Handles metrics reporting for active admin count and such. + +public sealed partial class AdminManager +{ + private Dictionary? _adminOnlineCounts; + + private const int SentinelRankId = -1; + + [Dependency] private readonly IMetricsManager _metrics = default!; + [Dependency] private readonly IAfkManager _afkManager = default!; + [Dependency] private readonly IMeterFactory _meterFactory = default!; + + private void InitializeMetrics() + { + _metrics.UpdateMetrics += MetricsOnUpdateMetrics; + + var meter = _meterFactory.Create("SS14.AdminManager"); + + meter.CreateObservableGauge( + "admins_online_count", + MeasureAdminCount, + null, + "The count of online admins"); + } + + private void MetricsOnUpdateMetrics() + { + _sawmill.Verbose("Updating metrics"); + + var dict = new Dictionary(); + + foreach (var (session, reg) in _admins) + { + var rankId = reg.RankId ?? SentinelRankId; + + ref var counts = ref CollectionsMarshal.GetValueRefOrAddDefault(dict, rankId, out _); + + if (reg.Data.Active) + { + if (_afkManager.IsAfk(session)) + counts.afk += 1; + else + counts.active += 1; + } + else + { + counts.deadminned += 1; + } + } + + // Neither prometheus-net nor dotnet-counters seem to handle stuff well if we STOP returning measurements. + // i.e. if the last admin with a rank disconnects. + // So if we have EVER reported a rank, always keep reporting it. + if (_adminOnlineCounts != null) + { + foreach (var rank in _adminOnlineCounts.Keys) + { + CollectionsMarshal.GetValueRefOrAddDefault(dict, rank, out _); + } + } + + // Make sure "no rank" is always available. Avoid "no data". + CollectionsMarshal.GetValueRefOrAddDefault(dict, SentinelRankId, out _); + + _adminOnlineCounts = dict; + } + + private IEnumerable> MeasureAdminCount() + { + if (_adminOnlineCounts == null) + yield break; + + foreach (var (rank, (active, afk, deadminned)) in _adminOnlineCounts) + { + yield return new Measurement( + active, + new KeyValuePair("state", "active"), + new KeyValuePair("rank", rank == SentinelRankId ? "none" : rank.ToString())); + + yield return new Measurement( + afk, + new KeyValuePair("state", "afk"), + new KeyValuePair("rank", rank == SentinelRankId ? "none" : rank.ToString())); + + yield return new Measurement( + deadminned, + new KeyValuePair("state", "deadminned"), + new KeyValuePair("rank", rank == SentinelRankId ? "none" : rank.ToString())); + } + } +} diff --git a/Content.Server/Administration/Managers/AdminManager.cs b/Content.Server/Administration/Managers/AdminManager.cs index 4eaa08fe9dd..b1cca46e63f 100644 --- a/Content.Server/Administration/Managers/AdminManager.cs +++ b/Content.Server/Administration/Managers/AdminManager.cs @@ -23,7 +23,7 @@ namespace Content.Server.Administration.Managers { - public sealed class AdminManager : IAdminManager, IPostInjectInit, IConGroupControllerImplementation + public sealed partial class AdminManager : IAdminManager, IPostInjectInit, IConGroupControllerImplementation { [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IServerDbManager _dbManager = default!; @@ -34,6 +34,7 @@ public sealed class AdminManager : IAdminManager, IPostInjectInit, IConGroupCont [Dependency] private readonly IServerConsoleHost _consoleHost = default!; [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly ToolshedManager _toolshed = default!; + [Dependency] private readonly ILogManager _logManager = default!; private readonly Dictionary _admins = new(); private readonly HashSet _promotedPlayers = new(); @@ -49,6 +50,8 @@ public sealed class AdminManager : IAdminManager, IPostInjectInit, IConGroupCont private readonly AdminCommandPermissions _commandPermissions = new(); private readonly AdminCommandPermissions _toolshedCommandPermissions = new(); + private ISawmill _sawmill = default!; + public bool IsAdmin(ICommonSession session, bool includeDeAdmin = false) { return GetAdminData(session, includeDeAdmin) != null; @@ -181,6 +184,8 @@ public void ReloadAdminsWithRank(int rankId) public void Initialize() { + _sawmill = _logManager.GetSawmill("admin"); + _netMgr.RegisterNetMessage(); // Cache permissions for loaded console commands with the requisite attributes. @@ -234,6 +239,8 @@ public void Initialize() } _toolshed.ActivePermissionController = this; + + InitializeMetrics(); } public void PromoteHost(ICommonSession player) From 16fa1cac9e79d3f4f2e393a1b4a931bc1e29611e Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Wed, 29 May 2024 01:59:19 +0200 Subject: [PATCH 077/111] Walls/Windows Resprites! (#402) # Walls/Windows Resprites! Import the changes that i provided to frontier in PR: https://github.com/new-frontiers-14/frontier-station-14/pull/418 to EE, including part of this PR: https://github.com/new-frontiers-14/frontier-station-14/pull/757 Those Walls/Windows LOOK EXTREMLY MORE BETTER then the old TG walls/windows, Common its 2024! We need DRIP IN ALL WALLS! .yml changes are needed for connection to walls/window and prevent connected from doors, shutters, ect... --- # TODO - [x] Import Sprites. - [x] yml changes ---

    Media

    ![image](https://github.com/Simple-Station/Einstein-Engines/assets/45297731/28221333-4c14-44d4-8557-697462d676f2)

    --- # Changelog :cl: - tweak: Better wall sprites. - tweak: Better window sprites. --- .../Doors/Airlocks/base_structureairlocks.yml | 3 - .../Doors/MaterialDoors/material_doors.yml | 3 - .../Structures/Doors/Shutter/shutters.yml | 3 - .../Entities/Structures/Windows/window.yml | 4 +- .../Doors/secret_door.rsi/assembly.png | Bin 305 -> 178 bytes .../Doors/secret_door.rsi/closed.png | Bin 171 -> 117 bytes .../Doors/secret_door.rsi/closing.png | Bin 516 -> 563 bytes .../Doors/secret_door.rsi/meta.json | 24 ++--- .../Structures/Doors/secret_door.rsi/open.png | Bin 219 -> 170 bytes .../Doors/secret_door.rsi/opening.png | Bin 530 -> 582 bytes .../Walls/reinforced_diagonal.rsi/meta.json | 2 +- .../Walls/reinforced_diagonal.rsi/state0.png | Bin 666 -> 5943 bytes .../Walls/reinforced_diagonal.rsi/state1.png | Bin 639 -> 5829 bytes .../Structures/Walls/shuttle.rsi/meta.json | 20 +++- .../Walls/shuttle.rsi/shuttle_construct-0.png | Bin 0 -> 632 bytes .../Walls/shuttle.rsi/shuttle_construct-1.png | Bin 0 -> 652 bytes .../Walls/shuttle.rsi/shuttle_construct-2.png | Bin 0 -> 689 bytes .../Walls/shuttle.rsi/shuttle_construct-3.png | Bin 0 -> 690 bytes .../Walls/shuttle.rsi/shuttle_construct-4.png | Bin 0 -> 675 bytes .../Walls/shuttle.rsi/shuttle_construct-5.png | Bin 0 -> 671 bytes .../Structures/Walls/solid.rsi/full.png | Bin 547 -> 168 bytes .../Structures/Walls/solid.rsi/meta.json | 2 +- .../Walls/solid.rsi/reinf_construct-0.png | Bin 891 -> 225 bytes .../Walls/solid.rsi/reinf_construct-1.png | Bin 863 -> 266 bytes .../Walls/solid.rsi/reinf_construct-2.png | Bin 956 -> 264 bytes .../Walls/solid.rsi/reinf_construct-3.png | Bin 956 -> 262 bytes .../Walls/solid.rsi/reinf_construct-4.png | Bin 963 -> 265 bytes .../Walls/solid.rsi/reinf_construct-5.png | Bin 1016 -> 258 bytes .../Walls/solid.rsi/reinf_over0.png | Bin 1128 -> 481 bytes .../Walls/solid.rsi/reinf_over1.png | Bin 994 -> 395 bytes .../Walls/solid.rsi/reinf_over2.png | Bin 1128 -> 481 bytes .../Walls/solid.rsi/reinf_over3.png | Bin 994 -> 395 bytes .../Walls/solid.rsi/reinf_over4.png | Bin 991 -> 393 bytes .../Walls/solid.rsi/reinf_over5.png | Bin 880 -> 352 bytes .../Walls/solid.rsi/reinf_over6.png | Bin 991 -> 393 bytes .../Walls/solid.rsi/reinf_over7.png | Bin 763 -> 204 bytes .../Structures/Walls/solid.rsi/rgeneric.png | Bin 864 -> 225 bytes .../Structures/Walls/solid.rsi/solid0.png | Bin 782 -> 391 bytes .../Structures/Walls/solid.rsi/solid1.png | Bin 415 -> 274 bytes .../Structures/Walls/solid.rsi/solid2.png | Bin 782 -> 391 bytes .../Structures/Walls/solid.rsi/solid3.png | Bin 415 -> 274 bytes .../Structures/Walls/solid.rsi/solid4.png | Bin 423 -> 280 bytes .../Structures/Walls/solid.rsi/solid5.png | Bin 448 -> 352 bytes .../Structures/Walls/solid.rsi/solid6.png | Bin 423 -> 280 bytes .../Structures/Walls/solid.rsi/solid7.png | Bin 261 -> 204 bytes .../Walls/solid_diagonal.rsi/state0.png | Bin 316 -> 316 bytes .../Walls/solid_diagonal.rsi/state1.png | Bin 297 -> 292 bytes .../Windows/plasma_diagonal.rsi/state0.png | Bin 15748 -> 729 bytes .../Windows/plasma_diagonal.rsi/state1.png | Bin 15665 -> 704 bytes .../Windows/plasma_window.rsi/full.png | Bin 1597 -> 430 bytes .../Windows/plasma_window.rsi/meta.json | 2 +- .../Windows/plasma_window.rsi/pwindow0.png | Bin 2063 -> 762 bytes .../Windows/plasma_window.rsi/pwindow1.png | Bin 1099 -> 735 bytes .../Windows/plasma_window.rsi/pwindow2.png | Bin 2063 -> 762 bytes .../Windows/plasma_window.rsi/pwindow3.png | Bin 1099 -> 735 bytes .../Windows/plasma_window.rsi/pwindow4.png | Bin 1161 -> 734 bytes .../Windows/plasma_window.rsi/pwindow5.png | Bin 1064 -> 680 bytes .../Windows/plasma_window.rsi/pwindow6.png | Bin 1161 -> 734 bytes .../Windows/plasma_window.rsi/pwindow7.png | Bin 247 -> 270 bytes .../reinforced_plasma_diagonal.rsi/state0.png | Bin 15911 -> 764 bytes .../reinforced_plasma_diagonal.rsi/state1.png | Bin 15885 -> 737 bytes .../reinforced_plasma_window.rsi/full.png | Bin 2495 -> 443 bytes .../reinforced_plasma_window.rsi/meta.json | 2 +- .../rpwindow0.png | Bin 2930 -> 776 bytes .../rpwindow1.png | Bin 1696 -> 877 bytes .../rpwindow2.png | Bin 2930 -> 776 bytes .../rpwindow3.png | Bin 1696 -> 877 bytes .../rpwindow4.png | Bin 1745 -> 874 bytes .../rpwindow5.png | Bin 1695 -> 721 bytes .../rpwindow6.png | Bin 1745 -> 874 bytes .../rpwindow7.png | Bin 910 -> 270 bytes .../state0.png | Bin 15734 -> 765 bytes .../state1.png | Bin 15695 -> 739 bytes .../reinforced_uranium_window.rsi/full.png | Bin 2067 -> 452 bytes .../reinforced_uranium_window.rsi/meta.json | 90 +++++++++--------- .../ruwindow0.png | Bin 2366 -> 750 bytes .../ruwindow1.png | Bin 1169 -> 872 bytes .../ruwindow2.png | Bin 2342 -> 750 bytes .../ruwindow3.png | Bin 1138 -> 872 bytes .../ruwindow4.png | Bin 1133 -> 874 bytes .../ruwindow5.png | Bin 1088 -> 704 bytes .../ruwindow6.png | Bin 1129 -> 874 bytes .../ruwindow7.png | Bin 267 -> 270 bytes .../Windows/reinforced_window.rsi/full.png | Bin 2063 -> 437 bytes .../Windows/reinforced_window.rsi/meta.json | 2 +- .../reinforced_window.rsi/rwindow0.png | Bin 2229 -> 758 bytes .../reinforced_window.rsi/rwindow1.png | Bin 1148 -> 620 bytes .../reinforced_window.rsi/rwindow2.png | Bin 2229 -> 758 bytes .../reinforced_window.rsi/rwindow3.png | Bin 1148 -> 620 bytes .../reinforced_window.rsi/rwindow4.png | Bin 1130 -> 615 bytes .../reinforced_window.rsi/rwindow5.png | Bin 1025 -> 706 bytes .../reinforced_window.rsi/rwindow6.png | Bin 1130 -> 615 bytes .../reinforced_window.rsi/rwindow7.png | Bin 272 -> 268 bytes .../reinforced_window_diagonal.rsi/state0.png | Bin 16179 -> 768 bytes .../reinforced_window_diagonal.rsi/state1.png | Bin 16152 -> 741 bytes .../Windows/tinted_window.rsi/full.png | Bin 9436 -> 387 bytes .../Windows/tinted_window.rsi/meta.json | 2 +- .../Windows/tinted_window.rsi/twindow0.png | Bin 10814 -> 2397 bytes .../Windows/tinted_window.rsi/twindow1.png | Bin 8214 -> 2230 bytes .../Windows/tinted_window.rsi/twindow2.png | Bin 10815 -> 2397 bytes .../Windows/tinted_window.rsi/twindow3.png | Bin 8477 -> 2230 bytes .../Windows/tinted_window.rsi/twindow4.png | Bin 8217 -> 2236 bytes .../Windows/tinted_window.rsi/twindow5.png | Bin 6896 -> 2336 bytes .../Windows/tinted_window.rsi/twindow6.png | Bin 8464 -> 2236 bytes .../Windows/tinted_window.rsi/twindow7.png | Bin 4882 -> 1915 bytes .../Windows/uranium_window.rsi/full.png | Bin 1321 -> 432 bytes .../Windows/uranium_window.rsi/meta.json | 90 +++++++++--------- .../Windows/uranium_window.rsi/uwindow0.png | Bin 1688 -> 773 bytes .../Windows/uranium_window.rsi/uwindow1.png | Bin 1225 -> 739 bytes .../Windows/uranium_window.rsi/uwindow2.png | Bin 1688 -> 773 bytes .../Windows/uranium_window.rsi/uwindow3.png | Bin 1225 -> 739 bytes .../Windows/uranium_window.rsi/uwindow4.png | Bin 1216 -> 739 bytes .../Windows/uranium_window.rsi/uwindow5.png | Bin 795 -> 664 bytes .../Windows/uranium_window.rsi/uwindow6.png | Bin 1229 -> 739 bytes .../Windows/uranium_window.rsi/uwindow7.png | Bin 297 -> 270 bytes .../uranium_window_diagonal.rsi/state0.png | Bin 15629 -> 729 bytes .../uranium_window_diagonal.rsi/state1.png | Bin 15604 -> 703 bytes .../Structures/Windows/window.rsi/full.png | Bin 1224 -> 427 bytes .../Structures/Windows/window.rsi/meta.json | 2 +- .../Structures/Windows/window.rsi/window0.png | Bin 1632 -> 714 bytes .../Structures/Windows/window.rsi/window1.png | Bin 1183 -> 518 bytes .../Structures/Windows/window.rsi/window2.png | Bin 1632 -> 714 bytes .../Structures/Windows/window.rsi/window3.png | Bin 1183 -> 518 bytes .../Structures/Windows/window.rsi/window4.png | Bin 1187 -> 523 bytes .../Structures/Windows/window.rsi/window5.png | Bin 800 -> 666 bytes .../Structures/Windows/window.rsi/window6.png | Bin 1187 -> 523 bytes .../Structures/Windows/window.rsi/window7.png | Bin 301 -> 268 bytes .../Windows/window_diagonal.rsi/state0.png | Bin 15988 -> 735 bytes .../Windows/window_diagonal.rsi/state1.png | Bin 15966 -> 702 bytes 129 files changed, 130 insertions(+), 121 deletions(-) create mode 100644 Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-0.png create mode 100644 Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-1.png create mode 100644 Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-2.png create mode 100644 Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-3.png create mode 100644 Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-4.png create mode 100644 Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-5.png diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index 5fca0819984..4bc43b5559e 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -131,9 +131,6 @@ - board - type: PlacementReplacement key: walls - - type: IconSmooth - key: walls - mode: NoSprite - type: PaintableAirlock group: Standard department: Civilian diff --git a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml index 4b6f72de934..644976eb9c4 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml @@ -52,9 +52,6 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - type: Occluder - type: BlockWeather diff --git a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml index e38ba1fd667..7d3af93a64d 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml @@ -73,9 +73,6 @@ behaviors: - !type:DoActsBehavior acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - type: DoorSignalControl - type: DeviceNetwork deviceNetId: Wireless diff --git a/Resources/Prototypes/Entities/Structures/Windows/window.yml b/Resources/Prototypes/Entities/Structures/Windows/window.yml index fca0b975e98..ee2ad6bc28f 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/window.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/window.yml @@ -69,7 +69,7 @@ acts: [ "Destruction" ] - type: Airtight - type: IconSmooth - key: windows + key: walls base: window - type: InteractionPopup interactSuccessString: comp-window-knock @@ -242,4 +242,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: windowDiagonal \ No newline at end of file + node: windowDiagonal diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/assembly.png b/Resources/Textures/Structures/Doors/secret_door.rsi/assembly.png index 6518b7245c721677990edb252828d4ce34c776f5..1a84e526a4a780111960391cd8356bf513b5f17f 100644 GIT binary patch delta 162 zcmdnUw25(oL_G^L0|P^2NcwRg#UJ1k;(Fk~0RsaAXJ=;%3kzRgUmiKR%Rni{k|4ie z28U-i(tw;mPZ!4!jfu$uEsSg$0Zk04&NCQ7;yCmYco@67Rxr7>WiXw}U~)Ug!6>d! z5acGraC2po-hwAKlUM@w^b0yjICj`hFkH;2xyWFVv`~1;;mOPl@A`Git&-N=1e(s^ M>FVdQ&MBb@0K5S)Jpcdz delta 290 zcmV+-0p0$x0kHy*7=H)`0001UdV2H#0004VQb$4nuFf3k0002%NklmWi2xfq_qCQaX_03GfMVH83!6c6PR~u<-Tu)m`y&Ay8b!)5S4FVrp_i zLt}tO1GmANCZ?L6{{amb>^vk2+65nT-)UrEI59QLQE#eD4NyIUr>mdKI;Vst07cCm A)&Kwi delta 154 zcmXS2%{W1#o`a2nfuXpn>I;x!EDmyaVpw-h<|UAm>gnPb64Cnh`bJ&`MFHl6yN^qn zDg?6ro!;cao1(C<$M+3eS#`a=(`^UCv)SO8ZadN?voT!dC=Kv&z0gDHJ zP*SPRDM0R76tH?EKu>7SF+gllz~-p|S^}M^bmW;U0e@5*il+r&l4v2f^E0N#!a%j5 zczOU@j@-`SJ!L1MFE?q1}Ocza|%E$3|Ku9p!TP84tQhZwSZI}Nmw75JmJ=nW7WZZofA8$SVG)Q<`o&VHXi(4;R@40u;x@yn28awv$nd*l(uDafL z{PB_CG9#JQRk^pF>YlAmu?YKm>t)HTic@}V$)W4_-hbb@{0&I(pYI-LlLZV0Tnvke zB$CsnDb9QsaW#AW_3THQ){=dpd%yi{JE#6%6=bp9{PR$Y-`3cP+wZxXC-_|^t53}B z{f8>|_b)!)di+tsX8By6>uX>B0a2 diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json b/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json index 7e8135f2168..c1f0d5e09ec 100644 --- a/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/secret_door.rsi/meta.json @@ -24,12 +24,12 @@ "directions": 1, "delays": [ [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] }, @@ -47,12 +47,12 @@ "directions": 1, "delays": [ [ - 0.2, - 0.2, - 0.2, - 0.2, - 0.2, - 0.2 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] } diff --git a/Resources/Textures/Structures/Doors/secret_door.rsi/open.png b/Resources/Textures/Structures/Doors/secret_door.rsi/open.png index 81862e1eade5b452853842c8baaa21f5413914aa..5f78166d8cf2fe85d2e0d67e1e230415c0af7893 100644 GIT binary patch delta 154 zcmcc3xQcOtL_G^L0|P^2NcwRg#UJ1k;(Fk~0RsaAXJ=;%3kzRgUmiKR%Rni{k|4ie z28U-i(tsRKPZ!4!jfu$uEKH1SDhrk@N$F8y2wBjhl#r97(xSGYM=c?x2ShCZQV&}6 z78q?}H8{kq%wfnZsVsFtnM+w~qpO)$5d%Y^aIwf*Y4I3yps5U=u6{1-oD!MU}oXkrgXR4=*V@O2n+lz)=&58mofxVY2 z+vIIpzrSy>ZG9m5M&$A_&!Bf<)^nBi@b_%JCTypsWT??+J0)lxyV9bU?B5KI1+Z4W zQCylLbwDmD&Sa>L$eziz;k(h*`ZLTn2bgVKfEbJz4oK}eU+j08;akDE zpPxh0-z2`z1!|r5e5YPi_A16V3%{@9`gEh3S>&(Ynl|UXZ9o??c)I$ztaD0e0sx}N51jYoA8Gi!+007eJf;<2K00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z000kAOjJcMFfcecI7352O-)Sz005htS1JGi00neXPE-H?|Nj8{whmJO000SaNLh0L z01mF{QA$e1}c8~hLdECMYJCvWn1Jp(KsU)bdI0Gwt$pvL7X@{BNcRyZ}XjkoU$!Q zGtOg+b9~MB3cmf|rO-uZ)IllRf~-(E;{y-Bw_sZk9DhInVS=az=hzFLkJf%Ri0#-@ z-}&o6Y%h5C`hwVwJq0?0puo3dp9}0e^a}zz_NhPgu8Qu>}+l)8z_?Bq}HscpWcI-d&*rJ)J z;L(FuK{01RR1@0^UjGLPeUC&nu^sz-0vVzj+|9@LZTkYbqCGG~gOK_F0000b=ZN&^=a>}IR_^M|M)jI(J%3XaQkgp6o;ec)3?=6WWL@`mnpgbeX^Bdhe7*MNB!yD&8I4q&LkFI z$o%#FxsI&hvkew6zE+h6Ncy)}>hM*`v_s{86n;?PHDHinV>rx^Ai==H+>pp%z{AkS zcmTKH;#FN`FPy;U?7uG?a!fdpue;f9zGk@de*rL4j-P$%N0%9gA1(N7W4+?X=5?=c ze?MXQYWsPM7u#~xOOrsV4qw@H`Cq2~zGdIn{oDTj+qVt-Za=zMBL4wR=wXq(Kw@~j zN_+e1T8Ea{+KDo9dfyoZ%f7l6RqVLK?sDU*_{oQGMeP51S&8=tSY;0}=DJ_5J+OT5 qk6HJ2|GK~L_U*&J^12c3(Vtkmw&2XHnTvsu%;4$j=d#Wzp$P!4QQz+X diff --git a/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/meta.json b/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/meta.json index 351d5688e44..8bbfa474bf0 100644 --- a/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by SonicHDC (Github) for Space Station 14", + "copyright": "Sprited by erhardsteinhauer (discord) for Space Station 14 New Frontier server", "states": [ { "name": "state0" diff --git a/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state0.png b/Resources/Textures/Structures/Walls/reinforced_diagonal.rsi/state0.png index 10fb9cd49d667800c7d9bc347b4b72a6978307dc..d437ad8b738db68616d680dd195f849583138cf5 100644 GIT binary patch literal 5943 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 HMVbEwwkFzU delta 642 zcmV-|0)73rE}8|9BYy&6Nkl1|$&BdkPQM-t|B}jt=b|J^FjzueKrwY~^zK+c^{;@Is*=2N6JcyWI|7 zfDVsDBH;=!;n8R`JOO@iDVx7Xdo_`szwPdOff_aQwFO5D<<{29^VUo=*G1cP_w$+uRN?+s-_&2^=DJ zk^_Ll-D<&rgi{|F-PQsK&*$?}uh*^FZg7{cTM01XxolQ?-L5s^-rwGqU_NXtzz^PP zwdCURQku;s*MDD*fR{=oF-2@7APD~S_~-!0d zj%UI-(i8tGL&CYqpw1C1NJZ2^981Q>feV$OwO zEkKT2j+snG0Fayy8C+mp$pvVJfa zsHsFEArL?jgkv%=2?<|yq$%WG>Wpz-= z{FcDC#Yi}^J?^^n*-f&bBNcEYVYOOSfY+B78M-hugn_PSg5ujoqamqON<0E|IBzm> z*Anw4vwP60EN2DyiI`5OG8vCOWr))4x_5;?N$3X$$OgBGKz-9%e8Xo7<-T!reEch5 zQ+SXFW;;U!VLH56EY1aN3-=R2xISmXv4J@@IR3cG^;}#ZVXX736VP}SOn`MV z2@a>blb<7xd*CvBW#6&%c}Cu=Gas4&Z4Kia9$t0r)UBh->pWV|pN+8c&irQl$=<$u zXo_k`WJbn1{{znP_D3u2EVupof>*yKX+fLjn+H|}%F4$0iHlcHh%a+{R8#itHQ8e8 z^dA=3y7U&;DwNlCx5(O+YuDW3P|20xK8KZ_oy>M1uct8Sz@$j>4*6;OoQ)fL+d9w3 zN4~14?$umg-86DIVlr+_V(u5K8u2F_r_OCK@k}fTets}0>SFBvI)^O3*r(x(P9?fX zGpE^>rJa>IYHf-wBT*xPDfaplzGgV#2XtV7-Y zRk-0snuu2&&)rl*OQ~G4yEh<(SAuA5n z(u}*;WY2VfukRQq=kFmY3iptd@WJl`ci(BT-Fun-%i3w=ce&w8JKihE`qS#v|JjxJ*%hsF}?^?e&2PQ2N*kjR{q zlvLa)wM-W&U)|%sSh4(Dm#>y=AHB~myCl(Ad3>vP-BFY)7c|UoScXQHWS`-U69--i zJ~Q;zkn0!ucOzVgQ!hL!F2iq`-D71}eCG&>A6?&+Ys$KJe`8{^#n6@xhu!S2wi;cU z=T#E1)a2x|Q;NdS=U$uQ?+3y8KYJXqEx5Jn&=u$Ig?Hy@zUFVb*md*4(2~;MQjVtB z|K8DUG&3d5w}o#!=F)81K&+(L+>oII6d`% zdwqDuzt-C!SJT^XtSIqs+xYyC11lS@5ff&YbSyjkQ^H(cmu%G1l!HsdP^X>N(bX4R zWj&4cwVH%`r9-yg%t~CvoZQ%(8n1b9C4ZeJ;+byb3s~vBwz~S)U z$auV90gv~lg%cWE}4e{Q;cMdbVn;wWR(bYG6;*XMPrhD_}X2kn#8#kXfz97)lC(FzPDh-0?Nc z)lv_6+Oug#t7jF?N($si>V~dyJXN53U3sb<$&#i^CNqNEM*CNMIhVb8W59R1t)4rV zupb&9b2ylL(ldIaU3BC6vf%0tS6RU|`Fu_~b$9<* z^2O%fuS%P468)z4d8lF=Z*Jf=BgQsKR46oV&&Vr_ci?{7Udw!#x@>-)_DV;7QRX#c z0&gMd9?p2xnW*f-`lU_dyE-4=qvijRj9VLl6yCQud=!Tpkt@SmdW0~5Emq3iK}acr z-F0#m*79*Uj+agailbqaAcCbb1(*2bbQzH#gSf|TRw9<$n+TMlVAw23^@cO0h=o zRN%uU>f>cYO0f)L8@`HQm?8G?WRXM=l|`b{Aeh7gKq|?DCStId6c0~`Mj1pUP^eK* zA%^u-7`eL)b=5F=!;Z1b|2^ItY^hF`Y_fdPuO)#0Dz;Ik0C03%Eq8JMeBMI0i%| zN<@y8mrMaEwd!|EVKO-!ih_FCC`^C~Fqss9=E0x?bjCZ-To_SfX|89b0Pa+(VFePi zXJVWnmTodRD22%?h19U1KNvQ)9ZXtKUmX~;VIJEJn}@(4szkz+$`~$DA1y&oX(%cJ zXP{iz0ZOsK&;W)ZeZ>vboHr;X8-^V6$H0GK3XM`~75^L0JLp@M83?LXBGExekZ1`k zMnBH;A@EzK5Uks&Q6ygQH=Ftsj?!x3OQ_AiN}K!p^>`t3lmy_uJNAdx{25fhYndXOMb083;DWRX}*5t9T+L}G{r zF<3D0Cw8?`f@(noo*~6@06S-_xD4k^a2m)z=l7%0M#1{z0;n_+g-QZgVE~m)p|I&R zV*hCqIAnc?eY0DRz6S|~?7@0)^gW6#&?jQ3Mx~08!N~hMy~&&Zf*WK%kfVQRJ{Z<- z%~Pu4u_}&2gS3i|y8i&MpCLddh81e%$3h6c~DMTEuNKZjj#*nLTUdtnY_iN28j z!JmQb`v*N>)SsPvlD?ni`YhKcDey_)&)M}^u1`|nlfa*|>;EQ~*}F$>Sb_cBr^Ozq zk@-jf_Aow7(jsTO82hEW=vK5d1@Tae2o5$$8F8E!6uDSfza2uZMccGxoh@s zwfg_&)(d=QghiaIsGIs_8er*D>+b`e_7+X)OqqHdorwy3TbxWCdzLQpr#zsgJ`i4e z-pM()3e0;pJaW^DRpBo=S8*qd9$vzGo5T&h_*<+!zM6Gy{;?_>Jl{Dxq^{5SVosHf z>4YqGa>^6#t&{RE7B37hHS+6B^vt7`+x9pVP|L@5KTR0X{nWvs^H(G7ZC~^2M>2%L zm)wapXPXw}Z7h`;nRYM1J9i&2TGx4UN|vN-QeJuTsZ^_;J*M>AK|_z<9$_AFq;K1q p^xnOxlX}AO(cPJ*oLiR?@eM3u#xTolY==0Uz&FsRz2VKoI`XOqY?LaSAW18jfT)g#1aq$fA9A_Ai}%duE%z^0KoAl!<-}R^qg>jURo{bE#NpN zoGT-7RvQw|mkjzGIY-!a_-nf@9iy4V<8}v?{Qo8J z?6?w+YR@_${cwsb=#vUKim=n^NWkZGDmD%b18HFBS)jOgI2?++lPXUHR5<@+qQKc& zC_;c3iD1=gW$Xa7E`*;Hp$QHz^xr64QwJkJ5m@Oh?&C3AmG6y{HjE3W5R(X2yJ}P6 zcveQ>Qn*P3;i^rCO96gx7{fx(&D9m&>Tudkwm*9L?c6Kb8H@k`002ovPDHLkV1m-p B8B+iN diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json b/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json index 97ca2aa3b00..9aff20a66c8 100644 --- a/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json @@ -41,6 +41,24 @@ { "name": "state7", "directions": 4 + }, + { + "name": "shuttle_construct-0" + }, + { + "name": "shuttle_construct-1" + }, + { + "name": "shuttle_construct-2" + }, + { + "name": "shuttle_construct-3" + }, + { + "name": "shuttle_construct-4" + }, + { + "name": "shuttle_construct-5" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-0.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-0.png new file mode 100644 index 0000000000000000000000000000000000000000..dde7f67085c33178ecb82b20793d7e242ce38b19 GIT binary patch literal 632 zcmV-;0*C#HP)9K}pVm;=nMt*LGqJ_Ao4JqnfvI{;?+{d@NqCQh9MmXMYb z$EpA6vzJ)qh|!auoyVZ4qy*Lvas=D~Aj@+L3mC3my2PNZrw67%0K~=yVDd0ILh4{< zg6PTp6TprDJHXV!@jr-DP+Y*Uaoq;E$PtuS4s$Wg5wNISxnU23y`3dt2iVyAknMBy-~u_~ z$iXdO;i2Pz*hFA~p{M}&j3ls#77`U@c=!4>LHapbaeM#%1BS)(Aq5=KA%N}xPyqt6 zoDcvx61|Wj$^oE)2viQh5+Sw_09g*Q00clG0s}A~!yHH`1hAF^u#ymz4M6}`2*9EN z*%I{V!50FcY>2ZY1Qo@&902n%C@S{s+{xhL?hX$D7$0Uaz7QbW0kAYc$N_}X0ND

    2xG!1~VA9K}pVm;=nMt*LGqJ_Ao4JqnfvI{;?+{d@NqCQh9MmXMYb z$EpA6vzJ)qh|!auoyVZ4qy*Lvas=D~Aj@+L3mC3my2PNZrw67%0K~=yVDd0ILh4{< zg6PTp6TprDJHXV!@jr-DP+Y*Uaoq;E$PtuS4s$Wg5wNISxnU23y`3dt2iVyAknMBy-~u_~ z$iXdO;i2Pz*hFA~p{M}&%+iIk7@jKfMM}`NC8K52%tNl zv$d9?ytM2Ig0+Ipuj?Af^!ZikDzJ401* z4$crlcL3IM09F!$vLOhdI{+jGN=%^Q`rYf-49}5jHA!F%DkLfjE@H7|S!4%*vLVir z5L6Tsa)73mCIiSqbO(U=*RNe4bpT}{fG-hJD-D3MA9K}pVm;=nMt*LGqJ_Ao4JqnfvI{;?+{d@NqCQh9MmXMYb z$EpA6vzJ)qh|!auoyVZ4qy*Lvas=D~Aj@+L3mC3my2PNZrw67%0K~=yVDd0ILh4{< zg6PTp6TprDJHXV!@jr-DP+Y*Uaoq;E$PtuS4s$Wg5wNISxnU23y`3dt2iVyAknMBy-~u_~ z$iXdO;i2Pz*hFA~p{M}&%+iIk7@jKfMM}`NC8K52%tNl zv$d9?ytM2IT{Kn5>bxe;Dcg7~1)EiT+2 zY$vu5LU#bxasXBmg0dk9pgRC021-nz;u>VxmD`UQ&Ye5QU}R*(pra}ab`+?H#g=7} z9RSLPI7>oMQB24IAPZs>62O*rPME<^UXTHH%;E(Lzz(E~13*Fk99XY|EC)G464-_S z72$Mq0L?-GUm~Pd8USTOoRtxBQB2ERKvYpo_i_MK8zP4QdR;(CNjNm?f&rk^x&qAOLGlW7I@w0%SGGV3pB;HA)ApSq|$N4OquyP;|{eX=p$@r^tzz-raKm X_sHm<;lFx500000NkvXXu0mjf_TU|m literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-3.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-3.png new file mode 100644 index 0000000000000000000000000000000000000000..7098ec309a42368ab631fc9bca706b12cd0010e4 GIT binary patch literal 690 zcmV;j0!{siP)9K}pVm;=nMt*LGqJ_Ao4JqnfvI{;?+{d@NqCQh9MmXMYb z$EpA6vzJ)qh|!auoyVZ4qy*Lvas=D~Aj@+L3mC3my2PNZrw67%0K~=yVDd0ILh4{< zg6PTp6TprDJHXV!@jr-DP+Y*Uaoq;E$PtuS4s$Wg5wNISxnU23y`3dt2iVyA5cGLxYb`^0 zbu+=x0XgEx!7X5QRC55#a$+1omIGoFfdz)50^D~?7tUgM^5ij`kL+`hBVa&AMwTHu zJ`E*Q?%#jFuy{VCfFn8t&>ev6V_?~V5$vZ=><32&wh$r80ic2iR1UxrAvOoVYz0{a z3RYO|0I@+1K$b^#A-V&wmIJVo5R?r;0Gk6qK1a3`oegscdcs6@04N*cED1qHF*XOl zf)!)|GC+0!OdKSJ9t{*Z0NF6)V8@pCkmZr}QRD!SMaUt5uT+FNfb0+;lnBvNKei}< z0S9K}pVm;=nMt*LGqJ_Ao4JqnfvI{;?+{d@NqCQh9MmXMYb z$EpA6vzJ)qh|!auoyVZ4qy*Lvas=D~Aj@+L3mC3my2PNZrw67%0K~=yVDd0ILh4{< zg6PTp6TprDJHXV!@jr-DP+Y*Uaoq;E$PtuS4s$Wg5wNISxnU23y`3dt2iVyA5cGLxYb`^0 zbu+=x0XgEx!7X5QRC55#a$+1omIGoFfdz)50^D~?7tUgM^5ij`kL+`hBVa&AMwTHu zJ`E*Q?%#jFuy{VCfFn8t&>ev6Q;?6)0W6_n3lX9m04j(; zaRAnG09F!$vLOgya{#c^#A+$b0U-MHiTxM}6FCGx*$`(*2r7!PIRNG>^q@x$0a%oP z#Lz>5A_t(yJ-$K-S5#2s0Fcj+Lx30ukR1Yq5+NuJAOmbsKqw7>vLVjO2)QVxWiBA9 zD5iTk0ICgk^x&qAOLGl z6KVjE)g*&eMg!I;9k6COtY9K}pVm;=nMt*LGqJ_Ao4JqnfvI{;?+{d@NqCQh9MmXMYb z$EpA6vzJ)qh|!auoyVZ4qy*Lvas=D~Aj@+L3mC3my2PNZrw67%0K~=yVDd0ILh4{< zg6PTp6TprDJHXV!@jr-DP+Y*Uaoq;E$PtuS4s$Wg5wNISxnU23y`3dt2iVyA5cGLxYb`^0 zbu+=x0XgEx!7X5QRC55#a$+1omIGoFfdz)50^D~?7tUgM^5ij`kL+`hBVa&AMwTHu zJ`E*Q?%#jFuy{VCfFn8t&>ev6Q;?6)0W6_n3lX9m04j(; zaRAnG09F!$vLOgya{#c^#A+$b0U-MHiTxM}6FCGx*$`(*2r7!PIRNG>Y(bALD$qlL zA_t(yJ+@#+4gqXwfg%The25$Z#5jQL5FnHYL1};xAe06`*$`)Cgj^KUG8Yh46w|#N z0M&-bA%I>NP*M_-RTLAdjA&jL5K|o!TM>a8CPY=opw`NOHb`(b$$+gQ5P&tO31vmH znq;ubXuuk!1J*2u^^69rV=^eZW}rkhpq*3XR88;hIRKrH<)7+nnU|+kc>VxTlL_h{V+7 zga*cqp$P`9j!cKb69c$doB7y|u2ir()9h#{dZdHJNXfA$L_s;{KM*Wyl2{+MHi|c? zrMYLPRRGTp;|F}r)}rq!W|TjWYpIr$<1k=gIJh}S&|aRg? BGI{_2 delta 534 zcmV+x0_pvz0iy(v7=H)`0001UdV2H#00HVrL_t(|ob8uOj;cTuhQ9(->hcJTn6dzS z>i+l8E}#+@009((JnrC13AYvKj_K}!e^P;PUVl!(Uk9<vNx(1+>blm~N3bkQ`?qa7&N0RMS(wW8kid80 zMc_r?_Ye?5=zj&wiqL1!b=|1OYPHffEkv&C-dGt1m&;{VUYDY}T#!N~zlxWLbt~Sr~?a z5CSRX^E$9vQI;iL*U`2uP16tr0q|XC!9*v2&u91|@P8ukKb|VZ6SfaCVcWKtritJ- z%RNF>Rjk)*eSL)fBfKZYqY7z~5QHIrq+B$XODQSKlFeqramL?u9P*+dO_I@AuD77b zbKbUF(j*}-3c9YFT|>Hwv=0lZN&o-=07*qoM6N<$f)tJY#sB~S diff --git a/Resources/Textures/Structures/Walls/solid.rsi/meta.json b/Resources/Textures/Structures/Walls/solid.rsi/meta.json index 85b809570de..246ebe31b94 100644 --- a/Resources/Textures/Structures/Walls/solid.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/solid.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/c34c1b30abf18aa552e19294523924c39e5ea127/icons/turf/wall_masks.dmi and modified.", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-0.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-0.png index 828730d9f3d82e3f4e25ee4b0e4f0dd50970d037..1e2da3352b75d4ada2d78b93cfa36e15d6fefaf6 100644 GIT binary patch delta 209 zcmV;?051Rg2H^pa7=Hu<0001iRAaWak4ml12lVI9d_X*1v<=D| zToX_p2aKM+K!H1;?kfuX>kZMm8t!9!wII1dwPYEC3`#|*!j`%L;+izORVftD00000 LNkvXXu0mjf(}+h4XG$mU_Z$^w`bp7&Ua^@G8_&wd?K`b zLMeT5F=Gsr(iiD#z!=*YKq*BShFHWgEJ9j0QA#l$kKy}%D}N2c@L9#Vj@)3i$QTR; zSi~_@Rc#y>=jU)7rJAlq^>i1>b!ick49( z;LFZVjoP-2D2k9}^{^tA1ppY0MkOz6#YMZe{pgJ(0kJGp#jKx{f1?yx16{AzFio?j zTzQh2>kvXT8-D-*s`_{;8Gwg}hnleWK+`lSyQmz%CI+fd{)+0CWwjdcQTRU%I5;?{ z{io|XZfW_=jQ-`Zns-=S^i~&5EzC5!!R~qm!<#!&N+f0z~SLx z&A_Y6OIb&bPfnxVdDW3q{#vaNF5d(d2=<`}?_B;mKJis}} z&97gL9%#*iBuPql!JlM-wzUP*vKq5M)&bx5aXXn{yW2&YB(?gT=Q-yblgXquIOnZ( zKv5K=NrLTe7q^p%R1Oqk;QIO+w&Ng*A{Y%Nq|*!E`!prAPgK>s}#5Nkn+avq?ljR49>ckxdGOFbsubboRdD0n(y-!3(H(fT1w=zsjW54yBowMZ*XAX&zCl z&V@>Tq)wEseF{x@BxV3CDKrrw?mXap3Vp`}955Xz0G|OorgMGRhXW2baPyUQ`U1{- z=3Ky3wm33aYtSp;`3fQJ9Kv4VpU;txy%4xSt632YMy)9HA?*Yeg z3Ke+QZhxaFFEb79A0D`zOrBqXmzsn}M@KJPfh0*vJ+KRRcXxdI`t{E$kbUPt5YXv# zN~A#$5QZVH>y{ev&Ees%SKx!=ki>Cmey@M$K@gOla@QPC6on*?c~h(5d0wFc%3v@^ zg%Dg_U2$-5fU2tbBz&l-!0$}LLrp`k*YSNHDSstWN={BrRu#xpX7GIr^P({6Wbtdz3Ak)g05*@wSz eI8|Qzc>V*Yqj)Xq?1mr!0000X&{1 diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-2.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-2.png index cf8936fdcee3e3571a19b1105186d7052b6edef5..23367ae824af90f4e119191de1f31c1aa39b52d7 100644 GIT binary patch delta 248 zcmVn+au}MThR49>ckxdGOFbsubboRc|1Ej^-3tm8_2N;C8|5YZfR-~Et77ZVy`6Fu8 zx%f~RsS~AhpRECp#0-EXTLTf|E&wiM>pN!P0Ka7ep#TK_n}}dDFqM delta 946 zcmV;j15Nyh0=x&17=H)`0001UdV2H#00Ve%>&x{ul}aVkPA8MhwW_KfaYTqefo>R#$74$6G9|-cv)vvk zR}_U$mc{*k55R{)Az{nqGPk$4gkiF*3|$9cJRToqId}L_sa*b%4bQ{SbxyJjIMSf*?p20HCTrzDfu@K0YRby#={kE{=Uj4m{VuDU@GA{d%lS z0ly3HE+A0@0QGtu|EXvqj7B3|*TpnV+U<5?&1?R8z0Q0-PZtnPu<2yNMYc+%rG@8xC5QF2Af*E4W_ex4c7_x+fBFc`c@4sdaC@#`|M+wB+(2K0J8G);>?hi%)L z0`Bha`1{+p)C?${PA5F0=QPg#O&*S@U z$8x!h3o(&_PnL!6d5QUb*yq#fH1$oh=76Fo_@2if`8-m}^bFkG+;DbwhN`OZBz#E8 zz*{Eac`k=mEHax19%2uC%rUajK$Fbt0_ zfNHf0JfCV#ZRAf|o5pb@z}s$VwOXuKE7qG$B1jMf{N*@&-|YZW?N=!Yf*`Rr3`5qN z4eQk^aWIJmLn+auSrBfR49>ckzEdiAPj_S@c<6-0EM{kBwhfGCotLjUu6r5F?44hXuhQMkEqw+ z<4a+pL6jy}tN~BN41lFr0}Lw_i9N^|U9KWp(ek+^nXyFeb#NL-}+eQen*S-g~ZEph*LNK4tS$}yRC0)-QB!plxnP8e` zuAR^4JBdS%Fkm&>(Q36=c^;~&WCcxJ{`wNwX5)|O7(i3r^iRC)oO|yz;#`^-L51#KYu@$k6{=9bi3VHkWoCW*Ho)j zo*o~m*XvRVRoE(=UM};z*>IS#lmIR+E&!<4>i{$w4H}I`sy_>d#Ujs}4SKoEWHOPG zEi+)6ChqMmwrw+;PBWbthC#dCmR}sj+1XiUdx+U|if!Atx3`$4nVkXS_!uDsjb<}8 z*s?4+=YRA0oXgA06hYWF7z{ECv(aoKgupmHj%7fLX5h#5H2{S|fm*F5$@~5O)=?zo z$+p>S20*{xXEYko>-Az82$l5v$;tiEXc~^=d@KV|xUP%qy0qKv+<(42trT?kjld&qa;Q`_-p$suPql%3kn z?tfo`oeb-YUGXDG*3-@aeBY<6>+%r!U!3KQS$ZC2U1u3Nj)#cVz;dyWzk?u%Jpk2e z71-Wtk~Zv5j*YIcC`T-S^=d_{)nd6=u=Ko?6W{mwdotni=?Ngy{$tztzMmQ!1OZFW zW4TzQE+#U7@M2QZbtx9f=ljVC_xJa?wky$W=8pA!KgJOvwi)fi|8Y50e)skKUr6y> UQ2<)w+5i9m07*qoM6N<$f*;z|)c^nh diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-4.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_construct-4.png index bf9dad0013f7c80f7cd856b24f31a2ff7e92741b..515b40760d8e7146dccd850215a3937cfaa29631 100644 GIT binary patch delta 249 zcmVn+avPnciR49>ckzEdiAPj_S@c<6-0Htx?NxXm>Phhh5zseSrje^q$nlI_lAEH{F z*PFsXofwTSg(W-?GXRzpmWU8{0q`M(y+Z;X7}pd)$N&N3(sD2T3Xc=`Y0uh10o(cK zRKQreSTl%s;0*AztEQe+_f0M!vy1a_fr#FK>Ch#YWI!%b0Zqxf$Gzk<{T%btgXQ6& zUz7els@9v~UdC@0RIjjEa(#ySP|YcuW7qltZ6P+1f5Ab700000NkvXXu0mjf277AT delta 953 zcmV;q14jIb0>cN87=H)`0001UdV2H#00W9iL_t(|oW+;VZsJG~#(%b$v1S7XgdA}| z(+5}|2vWo$Z-8>*&NFi7Xyp}9B$5M*4@`Wp(n8^1cI0ei?_tsgW1D1>8OovNrXFj(#H&m zS#LH8&oxcsZ`M7gm4QMpq25smE@vsB{H zOz=YfRS2RC8Gi%;#bPlTMp%B~NCkJ*pa0u;} zP`_>~*MYadah#8+f6M{Lap?E^A9f;@0|51UoyV7?QMkUoMoJm~9}EVu91e%^d&{yo zKR?g3>HB`R1FD0$vl(B7NRb0bDY?A7L`sS0d0bsxC4Wezlv=mjjmG0~=1d>ATWYl$ z-{y0gtybI#b=Y+{vs~sW2sp_oCFO)=Su`3A48x$=Y|?BtF${xlw;NfOm8l1CQY`Wm z1eoPA)9EyB*>MDH+vfJ>1^~k_sMqT$BdX25%s4S-Sr&P-2XJSzxR12Y&axw5ot`3u zpxJ6Alz$z^iPv08$?ffJia@;^3!0L(qlLzKNbN^9Y}-_sR;bH*NPp-!Llq2!${3sQ@@I_Y>8#dk%BIO`?>MfI$br>z8UK!= zDDeQ)YBgYYt2vZv{7`ql!uB~54s16YI-L%y<&xEUoiY-JA^%LL{QLboK&JdQpA&{* zN;irkR_isZn+at4TybR49>ck?ReGAPj{oIDm&Z05lFj;sQXNz{LGmxdr9MP|x{6^Cc~P5RIA~ zzZ4dlywGT?B`^ya1Hkxd3A`sW1;B-Bd6xz3NYKjTzh6dihqFLZQRcXM9cz2C#ROu0NF?#sFd#-?-W(^vj$%x{?`~< sSHpdbuNE|}P%U{p!+0olN_Ff}KWq;+kt06!Pyhe`07*qoM6N<$f+Ip+rvLx| delta 1006 zcmVXWQ7tY_Zr z?9A-0(Cv0J{6k3eg%EP`W6$$I2stS~0?+ey4iG}%`##oD1b;@a5v7AZxW6=JPqSte94+q5uFUlSwYh(*8%)TJ1d=aST;aaA+pk zl7A%x8Am2bf`3Y-QXm($HYrD%rhEqgKos9sB?IvG_Es?VJCG!a+1@7yu*-o%2!Dk7 zw5?JHJ_5&a&QU+l0mpIB@AuDkqL2ds&}cNU*(MFe{rx?{Fl4_6g8`GaZL|M%UB}JM z4cBH61bhc*2YYl~d?lnn4gg^o;_mJaVHm>qeT+t<9DivThC-*)$;RU`ccz;-M!jCg zH_wC7YOziz0=o{UR;zeT5?pdhi8`U{I-1QUWLbt~S+Fb%vMi(1>14XDbM*k=vQoio zl0dCiF`La;%VrTUO%v0H2LOO9%V;zj1tYZ0ZfBeu({&wXvj>1j*JXXgy1r%+5W3xN zMkAnU8h^fAT;Q@&!6uIJW7`KD$H8DQz-TmrEX$=NNs{39_7=8nqu1-P|366*v-$ny z1&hT3rfKf>0vdtv`5B();n8)OGR<}h!!TeN2KSwUR~?V83(xZqK0h;Z;2;O|t1A#f zV6RevrA1bQGLgcNe%$6hOT90$6tpIm}4 z3=8C+Bnd$faC6{f1ojbzp`hzJEX#VI)!q_VmW5`sS?XL_1PVFuS(dShV{ZSZr8XXq zkt7MG(FEhIO~ZUX=XS!wGNYXk0BqZ4Wm)FLWu<~3 z2!Bx1H2A*HPDHE~3&L*BK@dPWXhw(a)wXT)`+aW0@xW`tz}{xWJH;FWt&We7AH!MO z@wwzc$!^F7rK7`t1Vt{9E?KW1+C00>XFp{Pz{-4e8{pAG!xbmCl zAx+bQZkAuEdT%j07*qoM6N<$f~?Qn#sB~S diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over0.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over0.png index 8141637bd69025bf356c13441bf9d5b704d9f3b7..f6b33bcb1896a6421fb770b714c9f611c4ea85ea 100644 GIT binary patch delta 466 zcmaFC@sN3fWIZzj1H;_yjcNS%G}f0G|+7 z0|NsK3kzpwXLWUTUteD%BO{>9flrG5K#IL2$S?Rm7%)hAGrIwWI14-?iy0XB4uLSE zsD@Vq&=Mz47srqY_p8&p`I;4Y>Rl_({{R1E>lZJP1uh~c%iZ2 zail=9RZ~H-!-Nm_BjaYSP-qp=R_yFrq2S4z=JDwyXM%?7Jr46@ENL35EMW>y#hD)- z+pyrm<%}lV`GP5?6)Z;ojmnhQ}Ybs|o3VO_%x}METVRn0|p`iiO-F+qE ztCx6$6sQO>{rTP(UGQ_?^GuG-4m@ANac?etk30vjG9OyC0tj z{w&+BclvpM?TPEW?Uoh0`u9csVr-E<-^AB)aNA!-&f|WuI_X?_z))uJboFyt=akR{ E0L$CGF#rGn delta 1118 zcmV-k1fl!k1Lz2l8Gi-<0063Kaozv`1TRTMK~#90?OWSUB0&%>$RfDFFvKkJMTuFL z#Kl+RPx!h1gyB{8!MHJq4+cU|F3X^aY)&slniddK&CmmTl1||;0##GfbvZRLS~Jeh z&PI}7P^nZzI(%8T0T{(%@xya!wVFClmr^)k04VeD@Ic*8hkvr3xA451n;R;XN)uVB zR7Bq$7yY+IK>5?tQzhf^_{{aITBUqGKP9Db#sIkT*VosS^L@&B9>rp@sRaZ4D3$2z z?yfqYr4-KW0RWT-y1gEG+3eJN=}d?u17&ZNRfa(>_5 z(qXYkFT)|-*X!@jJvus~ySuxoW7TRk`l&Eyc(~$F9wF}J=54(;%4pgP(Gbbt7QXDdBC?qL4Rd<@BkWzJ~BK2fb#u*-^zDK z&I4>iya`@hT#Rr<8jXfp=jZ2>_kzJd$(PqxC6UVh84Rf1ZYzbMxU`;^LhJ#iJF=Ua zfID;Q`mkAIKp?d@&uV)A1V{S`LEdjRM3ESDiU zN$c@P-T(2{=So#crD-e5t z&e!|CPpww#T`EjkI=pdVQ0MDW4}jL{*mAAlJENPTAU43Nc>A!hlBOuy<79M&u}Pv?;u^%XRJmN9#JpMjJ%f3H z`&vy^jhqBUo*F9@3QB?*g7P0RLtZYoSpUh#slj0 zx|$t8KLI5*Hp*EZV9p~*;moKk9*STfWzJ?Y)Y3|6POojlnQCxW7by%xrW{_?9D2@ct(No;p+nbt4*vLm_6p5P2C^i}U0xukIHk;}=@>d0x zQaELRb<7SpV}M?_t4I?VVcsOkQ@c%xL_*CYu$02N2PYxt%@^<-f-a?SCKX=x;c0Uo kK?-N0z_Q9%okJj^zuW-DBb&$^4*&oF07*qoM6N<$g7GUA2mk;8 diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over1.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over1.png index 6f2bcb665a352d0023c9ef17c2fc5fb6c7cb60d9..a7800d9dcc3075ae1afa8be8f379d8627587d222 100644 GIT binary patch delta 379 zcmaFF-pxEgvYwfNfno0U#y3EUu{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$g*fKQ04 zk&%&sfq|2gle4q4y1KfBg@v!LFHrL2()T_H%&Z+J4{$blSa2D>4IJX_mstQ4?(A)eM#Lg1F=4FMenJDLn60i$b(gN!7B} znqJR>tKTR6Vqvhps+<=zpCMuOeEWlS%ol%7Z7N|FN@GcTDK(vIS@e&Ik{MsuuUT^W zP|(2=?s}W%NlzNyawZuma8w(6vtHJ{V_Z-dWpMKlJB#>?#@pB5Y-hRsjp57wgsm2j Su4n>%&EVSqHAKuN_~d)9HxwRp!ET0q*bb9e+B{NCqOhB72dwv>#hBk&*!ODtBKE&xiC%u#Ce3cVzIbp0qArj z5}~*fI-AVNkZ}Sa)FHkj#BK8O=sc_hhYlDg0OtF!0NUUKq}hvMGMQ+(pYJR{H`x0D z<#Kt6C(`ft#c_9cxB6{9n+bk?c@YffCTDdL)oPX127mjSVOOv%z;2Eod1sh2p6b`j zOYSYTf-L}^IxrfI1n+7AUPGGzWQ)^w=w7 zYytj^Mt_t{r3CvCTAX0WTC^Oc0OrwL#SAd?k#J{kcMiNw}(FfaH!9*fU%cx1C#Bg8sQg$-zfr#K0~ zy#U7duZIW0y0)tK3AO-gz8*;pnbtZQ0Z7TyZ+}W>nGUu9YQCP7WX915;CHYEa4T=W zFSxRGlgs4ktmAMo6^)l*GeX;%{~fkn;>g8(lEQ0(!lk$S@5C1IlDF!clIr0DC4iW diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over2.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over2.png index 8141637bd69025bf356c13441bf9d5b704d9f3b7..f6b33bcb1896a6421fb770b714c9f611c4ea85ea 100644 GIT binary patch delta 466 zcmaFC@sN3fWIZzj1H;_yjcNS%G}f0G|+7 z0|NsK3kzpwXLWUTUteD%BO{>9flrG5K#IL2$S?Rm7%)hAGrIwWI14-?iy0XB4uLSE zsD@Vq&=Mz47srqY_p8&p`I;4Y>Rl_({{R1E>lZJP1uh~c%iZ2 zail=9RZ~H-!-Nm_BjaYSP-qp=R_yFrq2S4z=JDwyXM%?7Jr46@ENL35EMW>y#hD)- z+pyrm<%}lV`GP5?6)Z;ojmnhQ}Ybs|o3VO_%x}METVRn0|p`iiO-F+qE ztCx6$6sQO>{rTP(UGQ_?^GuG-4m@ANac?etk30vjG9OyC0tj z{w&+BclvpM?TPEW?Uoh0`u9csVr-E<-^AB)aNA!-&f|WuI_X?_z))uJboFyt=akR{ E0L$CGF#rGn delta 1118 zcmV-k1fl!k1Lz2l8Gi-<0063Kaozv`1TRTMK~#90?OWSUB0&%>$RfDFFvKkJMTuFL z#Kl+RPx!h1gyB{8!MHJq4+cU|F3X^aY)&slniddK&CmmTl1||;0##GfbvZRLS~Jeh z&PI}7P^nZzI(%8T0T{(%@xya!wVFClmr^)k04VeD@Ic*8hkvr3xA451n;R;XN)uVB zR7Bq$7yY+IK>5?tQzhf^_{{aITBUqGKP9Db#sIkT*VosS^L@&B9>rp@sRaZ4D3$2z z?yfqYr4-KW0RWT-y1gEG+3eJN=}d?u17&ZNRfa(>_5 z(qXYkFT)|-*X!@jJvus~ySuxoW7TRk`l&Eyc(~$F9wF}J=54(;%4pgP(Gbbt7QXDdBC?qL4Rd<@BkWzJ~BK2fb#u*-^zDK z&I4>iya`@hT#Rr<8jXfp=jZ2>_kzJd$(PqxC6UVh84Rf1ZYzbMxU`;^LhJ#iJF=Ua zfID;Q`mkAIKp?d@&uV)A1V{S`LEdjRM3ESDiU zN$c@P-T(2{=So#crD-e5t z&e!|CPpww#T`EjkI=pdVQ0MDW4}jL{*mAAlJENPTAU43Nc>A!hlBOuy<79M&u}Pv?;u^%XRJmN9#JpMjJ%f3H z`&vy^jhqBUo*F9@3QB?*g7P0RLtZYoSpUh#slj0 zx|$t8KLI5*Hp*EZV9p~*;moKk9*STfWzJ?Y)Y3|6POojlnQCxW7by%xrW{_?9D2@ct(No;p+nbt4*vLm_6p5P2C^i}U0xukIHk;}=@>d0x zQaELRb<7SpV}M?_t4I?VVcsOkQ@c%xL_*CYu$02N2PYxt%@^<-f-a?SCKX=x;c0Uo kK?-N0z_Q9%okJj^zuW-DBb&$^4*&oF07*qoM6N<$g7GUA2mk;8 diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over3.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over3.png index 6f2bcb665a352d0023c9ef17c2fc5fb6c7cb60d9..a7800d9dcc3075ae1afa8be8f379d8627587d222 100644 GIT binary patch delta 379 zcmaFF-pxEgvYwfNfno0U#y3EUu{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$g*fKQ04 zk&%&sfq|2gle4q4y1KfBg@v!LFHrL2()T_H%&Z+J4{$blSa2D>4IJX_mstQ4?(A)eM#Lg1F=4FMenJDLn60i$b(gN!7B} znqJR>tKTR6Vqvhps+<=zpCMuOeEWlS%ol%7Z7N|FN@GcTDK(vIS@e&Ik{MsuuUT^W zP|(2=?s}W%NlzNyawZuma8w(6vtHJ{V_Z-dWpMKlJB#>?#@pB5Y-hRsjp57wgsm2j Su4n>%&EVSqHAKuN_~d)9HxwRp!ET0q*bb9e+B{NCqOhB72dwv>#hBk&*!ODtBKE&xiC%u#Ce3cVzIbp0qArj z5}~*fI-AVNkZ}Sa)FHkj#BK8O=sc_hhYlDg0OtF!0NUUKq}hvMGMQ+(pYJR{H`x0D z<#Kt6C(`ft#c_9cxB6{9n+bk?c@YffCTDdL)oPX127mjSVOOv%z;2Eod1sh2p6b`j zOYSYTf-L}^IxrfI1n+7AUPGGzWQ)^w=w7 zYytj^Mt_t{r3CvCTAX0WTC^Oc0OrwL#SAd?k#J{kcMiNw}(FfaH!9*fU%cx1C#Bg8sQg$-zfr#K0~ zy#U7duZIW0y0)tK3AO-gz8*;pnbtZQ0Z7TyZ+}W>nGUu9YQCP7WX915;CHYEa4T=W zFSxRGlgs4ktmAMo6^)l*GeX;%{~fkn;>g8(lEQ0(!lk$S@5C1IlDF!clIr0DC4iW diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over4.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over4.png index 3fe7b22905750d1d114672b453d087f53cd4a22c..9e8e9dd40ad31ec3840a47e52400f19a1171c665 100644 GIT binary patch delta 377 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 u19YwcN5_cW1HcpDIg-i% diff --git a/Resources/Textures/Structures/Walls/solid.rsi/reinf_over6.png b/Resources/Textures/Structures/Walls/solid.rsi/reinf_over6.png index 3fe7b22905750d1d114672b453d087f53cd4a22c..9e8e9dd40ad31ec3840a47e52400f19a1171c665 100644 GIT binary patch delta 377 zcmcc5-pM>cvYwfNfno0U#y3EUu{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$g*fKQ04 zk&%&;laqyog|Dx#v$M0hy1IdZ0Z@|nAH!cD#ZeOE7yKUr816OijRcBu7I;J!GcfQS z24TkI`72U@g3ml%977`9-%h(&&vjUV$JI3J*Z=xGQ{r+~u>_uOIm=vm@|N=?$DneP zf_oDMlpL%+^ExIe%@Zu>QPdIj*}kEQO=dakWZgXqH;iB8F`kcof8w^s>>Ev+KWqsx zxO-?GBg?*DdzV~16m+nJ`*nK3ypWx1JZA6FPk6v^NiB_4P9Zlae1gz@!yv}fd}oRr zTef)WDs*Z6Vm11^Aj#o?%sUA|5ulRu3m7sd>;CX{AIp{5k zDzs6m(7CDD829h{)#>2w7rQg?KSx zxx+8u#?SSpe*o_6!MHJ^ZVbc#E(nN$&Fj#UVVsrOt;Xpd=OvSu;Cyt|yy>p4DkH?i zYPDkBpjNA`%H=ZM-Q7_%8WjidC6l4W>+9C*FD@=vHbglW2Y&&f12h2#W6 zdwcZj{@!9PjB!9Nm!p^YoYI*L#p7{{xiCrrH#awe=kxgnb6|`E_G2-MM5Aw*i*ORu zU<{s+NG8Q;PUd1yM`I5T4g^EyMCy!ngBGDM7~$~Gt1Bv%%VM_g-rl}B_vGY+uCK2* ze(Q8PEE}{?0Dp|Xyu74*K5s2`l}hD}0$QyWB@zkBX0z6{olb}KY%Lss5@d$`;sDM@q_*yJdDwz}tAeT7+3ZQjFIGIe8Jli-0s0MoyY&M%Kypdk7 zCysi(ZvAaGoeF+gECf%+V|t!WX)qWFgJF2P-DZs;5`W>Dz*c}$j#8#hK+ZCB{a&qF zVXfa_I{_q|i-lYNp;{aN((|=Py>G+uT<8fhhpcH^N4x{ZX;Z(rG!vp2= zd6ECa%pV8^xS`waZv2Ym#qaTW7ms2i+zoPXAZ6}kQxGbEdjmPaIoT8_QGkruvDBFc zwgV8{Ab-LGW1Sxkheo-8y$qs$_wDddu$Nk%ZU`qq4aVRrKD`6jbHHdc`mgH(vl)_` z8atZ=wgcqeUNUxipUMG9Wh0k|geLO($y7?s$UX>c2c*^+TQEx4kB^V8#S(4-Wmn+m z1a0+tM1v@6O*Gy6yFp1pL?$~?&O$}Uq==9m2Y=Y>^<>)^nSxIr2(cZotGfM1VJAt^ zQmG`^nHAP?tIRHqRjXBNeRHedOUSx_v#5D~er|SYtXM1xMr8=bZ>tRH1|<%VZ*?}C zZLJL=d7=~84uJ9Y0_ipd=oTX=p9D=)fbUIGjYebR1}LMw*CB#W&i>h*ot>HABxMJ3 z3V+)=MC50u0@^tM36=L0Ao~yk)gxqwh!w_Tp#-M_WSoK3MisPk0NyO}3TUEmQ-HG{ zfeS5LW!*w%8D6VKxEs`944$y7J_O%C0j&F8fM^mMDlp~-$z1sEfYEwcbAx@ShaRIs zp|DYn4*b8&Aj*`-a=D~_zb_ny6ue|E!c9p~gE4rNS%G}E0G|+7 zXJ=<1b62E@JCI^33Gxg6&+v4+ffta+S>O>_%)r2R7=#&*=dVZs3OahaIEF;Hzdd8f z#o)lhbnwal`F1QDIa*#H&eJryIzQ`)r3oX0M#Joe`jelf7#f%u0vH&$9;g{?o@}Ge fz`$C-@S<+&dmcuqW!?5b(-=Hm{an^LB{Ts5HSak) delta 750 zcmVVi|K~#90?OVZa;xG^$5HwU&h!cmc3gXD- z1NZ`Nd@eWm0X~2;f~tGqgb=8tRATk4I&w|6OEpe2CVo;hNQA`m{NfpBh6*upKA%|^ z7>!1(3(RISmJe0Vk8c5i00Cnt6kZX~Y&NN0tI?mAm(+6M4SxaccAMUkgqjZz6h%>L zx$sH>tJO-`BuPG54!j}Yu3o1~wR&N>2#cVAFN*8SlmwU@1K4@olaR}s8o0^uoYm-@n5Smu> zDxhdMBY>G3hXe5#0Kdtth6NO8iYkqz!(Ze zAV9zv3Pm75z!(ZeAb@)TvtIA&RrODTO@LXiM^QtUwMs((8TIVu{e&?R#(&omdj=4dAcrO7d5>vjdeO5Wl^YT z8x$~xtB_Y8LQsH!FaWak4ml12lVI9d_X*1v<=D| zToX_p2aKM+K!H1;?kfuX>kZMm8t!9!wII1dwPYEC3`#|*!j`%L;+izORVftD00000 LNkvXXu0mjfy?s#@ delta 853 zcmV-b1FHPt0pJFZ7=H)`0001UdV2H#00SpUL_t(|oW+;TZ{j)>#ebxQ&`Ai1sv;I` zqiXuHXxSqE|7G`d7QBus4=f_8DiD%a0#Z7Q)&}wcnR(OBk*t&4*uGaM*VlHf-|xTj z7jY~fT-QC=SqOpax(B%mgbe=auqgGTG}``j7!@ z+aG$p9*ZzU)3n0&?fxFeaZ367!$av4RttdPaJZxL@ph-SZNI4zMQVVAVVcBIgkhTKx?ad} z6w&Q=iK8el{eQcyZQG=2s_a^}qo!?4%Op_^Hi?tGzi0W!c$^z2$7bg)4WJB-dYzi4 z?Pb~TS5P^Ck3!`Dn(xV0m8;^o$k^?60dO4WwJ?wgLcg6!G873qcUzc^*QDT?M|~-vglQI!TgH zD_Az2P6xvvRq(0ALsfaU843x8JKM zAomR+#D7}=LI^z1tE9jo$RIydfqnQC1>!i)<-n&Y5Wa7v+fD&x|5XKYt3YnKLWrCK zf1(cjI~wgMpz6SQJm%==2u;&eB`i{4Fc=)+T z^1QW`%JNzTSrwYPuFeBlD2biPft=C*$T(DZNY1He5 zEWdA$`(FWUA50ff#OdiNaTJjxNg+3M9pCqJzcYKj+#5iernD`K`PR`H-g4yW=?Q?d zPKS9Ia@Oe(%w~$q5X@#cww;?3GC45cGs&Mq)`topS}f@Gddz3D!bkyTK|sA;=V>}s ztWN8?;$*ojy_C$ukojzuyO^i|kBs#fR__ fm($wczMlUCaU6w_?t%9p00000NkvXXu0mjf@qezW diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid0.png b/Resources/Textures/Structures/Walls/solid.rsi/solid0.png index fe570c054fac195b1de49c70d9a0856eb79ebc8f..3849504b6ff74b96092fbd1ca668480707dba2e7 100644 GIT binary patch delta 375 zcmeBUYiFJySC^ma`xE7FNEeY}q{tpBUzqj!P0|ht>JR*x382Ao@Fyrz36)8Z$ z51uZLArbCxr@!TEHsEmm{q^5@8;$b%9uvdV4Jos}{Mj=xd1_bGv9?VO5jVNBa>b5x zIbSHqW8An&e9NU(j2j;bhGaXe*}-zHA>t!v50EbspuVdiqL904N3T-Fb$Q0dh@A@= zj&D7e8nV~=u;87@3(q+^ISkCBA`X-an=N6NU1Zt+Xg1$K76c%X8{?TXRO-YIuaU2NCS_WPHh6Z$L{O@pKmvRWpw;?eY$mm!{H{nil{7 delta 769 zcmV+c1OEJn1C9oe8Gi-<0063Kaozv`0@X=GK~#90?VDe2qc9N0KN|vgfe4=R$^p{X zoFK=}33%Ne04WCu0umy^pMA)ZW>?!luxoo8eiBk!*_q+%I36HM&5Prh%dQpzL{WtOevdrM;4hb>=lQ7{;he z1lkDTFPHfF{*E9F;d>qkA%m9)v{(W?K^Ou6PGt$tbuskqSXC9bO|1j~07|bx*#W5Q zdem4hd)%M!MTiOTVYC%M7PA1V9Z=0IfNBR+GYg>Ffu6rJJgy_+6KInNd7gLsnNo_& zP@bYFzip5)hN`OI{=UI~L2#}4 z1J@paF@HIOEVu=z>l&2OhqZjuyqckuYIh!x^Gr~Nk%_!~9xw}_+5y$f0;qOCHM0OR zjPzCEzW%>hEM%A+g_PoGb-92srd<*QXpp1y?+Y--Zhs?$z;T?xPEi2Z?RNkF`vOrE zAx+cU?=m|?v=9IQvMhsXnxK?|5CX>7s0iRi+j?DK?iH5AEP!eUR5J^p+5y#QE5OUO z%J#Hv3&Su#@bN71GrrwRQ|aM=APn(?F%$#+2Ed=`^Hj810!5zVZM{Z%I3O>I!G44L zzGEJ=iGcgw0hx6JEd)rCL|OB+76Jh3s>Qzm*(C^1fyPf~00000NkvXXu0mjfg`Q$I diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid1.png b/Resources/Textures/Structures/Walls/solid.rsi/solid1.png index 4374ed1e1011027c4388033aad7d9985000188ba..9ac2271692b8f0116025dbc2b68c5e44b53d8e06 100644 GIT binary patch delta 257 zcmbQwJc((7WIZzj1H;_yjcNS%G~10G|+7 z0|NtRXJ-ow3twMfpjd%duQ-rmEeY}q{tpBUzqj!P0|ht>JR*x382Ao@Fyrz36)8Z$ zYEKu(kO=p;R}HxiCZ=!HT&UYt2 z#VWSt;<;yZ(yZ+(CUO19%Jm4;nl<6rffj*HDK$MCC-!WgbTItEUh&?3!>(hG8Moy+ zKR?b~65D>RpFKnBqP7kj|Ap_iR`zlaEci1WWu29u(+NvgHejtf%`%RLsWy? zA7#6~#TmBtzQVgCcKj7yfFj9!fyv~Ntz-7bTvx%Q-?jJGe>fn(ej;*<$N@oi56#$z zjf#8^<_P!Be;&C?!AT||avHaZ#SzA~#2=q$wQqg)_^Xj+dhxvFo|=-+V?;mZ{g(%u zUJtTcgfrmt{-lWvZxmyE#j&+um&(4*h)t$Cfb zX6v%t{qH>g*Ub8E?>Euwy!f4eoELx^e5W#c)#C^ma`xE7FNEeY}q{tpBUzqj!P0|ht>JR*x382Ao@Fyrz36)8Z$ z51uZLArbCxr@!TEHsEmm{q^5@8;$b%9uvdV4Jos}{Mj=xd1_bGv9?VO5jVNBa>b5x zIbSHqW8An&e9NU(j2j;bhGaXe*}-zHA>t!v50EbspuVdiqL904N3T-Fb$Q0dh@A@= zj&D7e8nV~=u;87@3(q+^ISkCBA`X-an=N6NU1Zt+Xg1$K76c%X8{?TXRO-YIuaU2NCS_WPHh6Z$L{O@pKmvRWpw;?eY$mm!{H{nil{7 delta 769 zcmV+c1OEJn1C9oe8Gi-<0063Kaozv`0@X=GK~#90?VDe2qc9N0KN|vgfe4=R$^p{X zoFK=}33%Ne04WCu0umy^pMA)ZW>?!luxoo8eiBk!*_q+%I36HM&5Prh%dQpzL{WtOevdrM;4hb>=lQ7{;he z1lkDTFPHfF{*E9F;d>qkA%m9)v{(W?K^Ou6PGt$tbuskqSXC9bO|1j~07|bx*#W5Q zdem4hd)%M!MTiOTVYC%M7PA1V9Z=0IfNBR+GYg>Ffu6rJJgy_+6KInNd7gLsnNo_& zP@bYFzip5)hN`OI{=UI~L2#}4 z1J@paF@HIOEVu=z>l&2OhqZjuyqckuYIh!x^Gr~Nk%_!~9xw}_+5y$f0;qOCHM0OR zjPzCEzW%>hEM%A+g_PoGb-92srd<*QXpp1y?+Y--Zhs?$z;T?xPEi2Z?RNkF`vOrE zAx+cU?=m|?v=9IQvMhsXnxK?|5CX>7s0iRi+j?DK?iH5AEP!eUR5J^p+5y#QE5OUO z%J#Hv3&Su#@bN71GrrwRQ|aM=APn(?F%$#+2Ed=`^Hj810!5zVZM{Z%I3O>I!G44L zzGEJ=iGcgw0hx6JEd)rCL|OB+76Jh3s>Qzm*(C^1fyPf~00000NkvXXu0mjfg`Q$I diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid3.png b/Resources/Textures/Structures/Walls/solid.rsi/solid3.png index 4374ed1e1011027c4388033aad7d9985000188ba..9ac2271692b8f0116025dbc2b68c5e44b53d8e06 100644 GIT binary patch delta 257 zcmbQwJc((7WIZzj1H;_yjcNS%G~10G|+7 z0|NtRXJ-ow3twMfpjd%duQ-rmEeY}q{tpBUzqj!P0|ht>JR*x382Ao@Fyrz36)8Z$ zYEKu(kO=p;R}HxiCZ=!HT&UYt2 z#VWSt;<;yZ(yZ+(CUO19%Jm4;nl<6rffj*HDK$MCC-!WgbTItEUh&?3!>(hG8Moy+ zKR?b~65D>RpFKnBqP7kj|Ap_iR`zlaEci1WWu29u(+NvgHejtf%`%RLsWy? zA7#6~#TmBtzQVgCcKj7yfFj9!fyv~Ntz-7bTvx%Q-?jJGe>fn(ej;*<$N@oi56#$z zjf#8^<_P!Be;&C?!AT||avHaZ#SzA~#2=q$wQqg)_^Xj+dhxvFo|=-+V?;mZ{g(%u zUJtTcgfrmt{-lWvZxmyE#j&+um&(4*h)t$Cfb zX6v%t{qH>g*Ub8E?>Euwy!f4eoELx^e5W#c)#NS%G~10G|+7 z0|NtRXJ-ow3twMfpjd%duQ-rmEeY}q{tpBUzqj!P0|ht>JR*x382Ao>Fr%o3R|8P6 z(bL5-B*OjeRY$G{10I))SHAsAzjmO$e1g{tr|`^sMHl>C1EjgHz1i`FEp4R(YYb}< z+m3am``_-GZ5h(YwS(&k&y5yKk$De}$^81y^6!QJnT0)#c8Pp@nfBNw@`Wm-C%C!K zSjtq*@?#yxW*z35n=O%L93R?+(<0d_st@VN`x_kNJXvJQ7%IJ^8R!}YPgg&ebxsM4 FO#r~nUo8Lt delta 408 zcmbQiw48Z@WIY=L1H-D!!g~x1jCr0ejv*Cu-p=;UI&2`qFkibov4*YD|Do`Y8~4~t zxEk{k3N~*n2wxW9WmoIA*ew6sDQPt&vCc~zXDs@D8}LjD5_&$z;<<~2133TFEdd|lF(lMRc zgB91>1-5W$U16*b@=C8rSivk49`#S_6@zbc-O}Z5vJ2k-HnuUi!YH@%WT>%zJ>Lef z(GX8KB!e9MN8$g8zfI9M{D?=Ne|tq!NP9xz@jb$$Mr@x|%M6%BKY tt>pP1>7V?sTyq!PdPL6pGB6GpJYD@<);T3K0RWGKt~USx diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid5.png b/Resources/Textures/Structures/Walls/solid.rsi/solid5.png index d4f50d419fb8f69add5073a70b824eeec4e1212c..3c0b42ddbf73d53c54c8da7192a85975e452677a 100644 GIT binary patch delta 336 zcmX@W{D5hKWIZzj1H;_yjcNS%G~10G|+7 z0|NtRXJ-ow3twMfpjd%duQ-rmEeY}q{tpBUzqj!P0|ht>JR*x382Ao@Fyrz36)8Z$ zlb$Y)ArbCxr$_TO8}P8aRrzjT{5GXNb!&*4R(H#kG&}J!mkO51TP%T^ZlMhpGq^&! zC9bnRs(r?_=Dcnq#}vVuFY7t){o2pHs(Dj0Q2GM50DJU?Wem?*JA$_*R65@G7Fa%q zW0lzL^8(ACFugZ!x|q&#EuHnB|8J{074aYXTLtv}`k zB_-V3B3QLgY>MQWtuUGCor0Ih)=V$g-+n6hB;B08zdG?O+1k+{_WIOqxu!hLNjmkNB3{?q}CCb}dPixKI=0&?9*EIBU!^n`!;ayt8Jp z0XaU}@4o!!{3o)Ykgt28V6IN!=6vGhPaE$c=YX+R* zbB*QY)cfu;Or?)s)Or;@gOlUopHusFx4 zPiAnjcrKkYo%dPgH_d`ZJ86Z+>gMwXe^i|rmri-Tc!Hg9LHEz<1Dp4X&f2>0JY!9J zXM^eTy&7fzOG`z>;30v)7^ds6o-SoQq%eE=|QcHN28SV5^Uz~ z`y=Lb;q}9WN&VbEYT_2G%1Kw%d+;s4_{cKOI^i>x+RuBQ0!{V3#J^F=Exq`bBrh;# O7(8A5T-G@yGywqjI>0*s diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid6.png b/Resources/Textures/Structures/Walls/solid.rsi/solid6.png index 95e408947910600e79ff7adc7072d615c27f7b37..a5a6dd285664fb8a9cf14cf963f055b368a6b75c 100644 GIT binary patch delta 264 zcmZ3^JcDV1WIZzj1H;_yjcNS%G~10G|+7 z0|NtRXJ-ow3twMfpjd%duQ-rmEeY}q{tpBUzqj!P0|ht>JR*x382Ao>Fr%o3R|8P6 z(bL5-B*OjeRY$G{10I))SHAsAzjmO$e1g{tr|`^sMHl>C1EjgHz1i`FEp4R(YYb}< z+m3am``_-GZ5h(YwS(&k&y5yKk$De}$^81y^6!QJnT0)#c8Pp@nfBNw@`Wm-C%C!K zSjtq*@?#yxW*z35n=O%L93R?+(<0d_st@VN`x_kNJXvJQ7%IJ^8R!}YPgg&ebxsM4 FO#r~nUo8Lt delta 408 zcmbQiw48Z@WIY=L1H-D!!g~x1jCr0ejv*Cu-p=;UI&2`qFkibov4*YD|Do`Y8~4~t zxEk{k3N~*n2wxW9WmoIA*ew6sDQPt&vCc~zXDs@D8}LjD5_&$z;<<~2133TFEdd|lF(lMRc zgB91>1-5W$U16*b@=C8rSivk49`#S_6@zbc-O}Z5vJ2k-HnuUi!YH@%WT>%zJ>Lef z(GX8KB!e9MN8$g8zfI9M{D?=Ne|tq!NP9xz@jb$$Mr@x|%M6%BKY tt>pP1>7V?sTyq!PdPL6pGB6GpJYD@<);T3K0RWGKt~USx diff --git a/Resources/Textures/Structures/Walls/solid.rsi/solid7.png b/Resources/Textures/Structures/Walls/solid.rsi/solid7.png index a880e87e0e001365eb01e4fbc7bcacb119635fcf..b4bc95f4f0d177ba63d815287f9152514b148456 100644 GIT binary patch delta 187 zcmZo=I>R_YvYwfNfno0U#y3EUu{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstUx|nfKQ04 zv$Hdhxhqn{9Y`^i1o;L3XL!2ZzzfLZEbxddW?S0SpXW57Z1cPqtBK eU|=m^cu_a?JrASQvTl2zX$+pOelF{r5}E+rfH=Yc literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=XFOdTLn`LHopq46*+AgHy3qF1 zCvvXy6?$yz`pa*4t(K|s?4;sz-vsZUee`-)*!vInbpEk(DHJ$pHXLAF%D}`vg^5EZ z07c+D@9g#GJ{xcTr?&CoN8td5MrJQY7CsGD0gDA94i6fFNE5hIXrJ)AUVd-BdHi-m-=zuCEe#l;%t)I3q2aD>@YnDx{W%%*Ncl9!C?|(X8u;i$cXMXPd;4XXf?u0LP4EI=1 z+-9f}PWaz+;QoW%@#f_h?yQ&QK2`VT+ml6~ufATaoEpdU>etsD@00qP9{nz4v|KJL T)$qsD3*=-^S3j3^P6f zoe?>4DJ8N5EciH%=>s;n5NQMUcv+U|0&F;dGyz9A09-f$S_5EQ!Gb^g z{t#yiSmTej#iW!K2Y`b5Q@nrdlTx@hjTI*kaM}5O$W{=7lLdt0BmpsabU-W~6+nRp z2T yq{e~OJCFm{S|xu2a^X@+h_jyt%CX_YFyI5HZw?UUZBdH3sBPRm&{)v#ZeOE7yKUr816Oijhv_`QQzq4;uvD# z-+Iwe=zszTi=)q!KmU(AZd6jr`DPUxvw*$7jzN@XMT~&Qe!&-enGCELZWS-syOrn6 zxj774q18-FPFM9GEVpOe=AQ7H@y2h?82g6zax!-tH@{bSA>FZyHPKw*9kYoyg$n>gTe~DWM4fZKYy6 delta 281 zcmV+!0p|Xs0;vL!8Gi-<0047(dh`GQ010qNS#tmY3ljhU3ljkVnw%H_007%bL_t(o zg~iv+4TCTYhT)H-S9&T7WC2u({fD3%WPorlhxA0%M1khVcD%sz3QJfSy!Yre%d&XY z6F0`7OTd9!Yvlt1Tq)Ur7}r|M1*C8QG682e0Ni@v_i^M8xPQXm`woC{1qc3G*HfG= z;1_?+GdAavH~>Ndj8%=73hbDS!g64xqxT z0x0p~0BXD_fCJAC;KH*4IPt#$xhIt+pyZ^sO!69*o>bBR?w!XItUwwM0(#)zfL=HN fsH;bV#C!lqTN3j#Z6XfW00000NkvXXu0mjf9&&e` diff --git a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state0.png index 60d1c0421b3fecf74c453715810e8e5ffcf32774..84f71e4833af719f7573047e0912d80edf61c378 100644 GIT binary patch delta 687 zcmV;g0#N;gd)Wn$BYy#eX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKpe$iQ$>+VQ9BfI z$WWauh>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JW zDYS_3;J6>}?mh0_0Yam~RI_UWP&La)#baVNw<`9$B7iW07=OT^#7sSrUd+IAeBHyx z*Sjds@;>+H=vVS41AHR!9McVpc!PLm)6zNb6NgwyQi#uq#|^q5@gvt|m)|%S9Ts?I z$jGGTi9^ITl3X&m%3$PJKou$^#}EDozq>UHQ{5*!IUL z(6b9P>$d%UY}?Hf!2b+fX>EVC0nC1qUT4l)$$E+a0rYQDSO@H-6Or7z5RQp)!z?k5pttbR*U}t z000JJOGiWi8UPvq8b846fRP~=e*gz`Nliru=L{GV2?-KDxy0M>y?nqYewZA0MicipAZQ{^9p)f5#UPgNG2# zMiXaQK?+X3f>fL|AO|N4$i+zlO7P-@#Fw%JSl(!j}G9%qXIZ_ ztgGJv+_<%N{6{2#&lc0+3rOLY)9pJz68BBp{}D;!y%lKS?-gj_+s9^aG;u_P7i^Cp V9h$cs_jFzd0QSnQR(GoVYcXnbs zFV0i6R@y)BB>Vh*-}n7~-}`*u_v`!Tp0BN0a!=6@iU@+Zr@G2h2kr*_Q&<4L)y~cv z;5Ic<)ua+c@l5?Qg?P2MlpweRa($!L==}*NC?OLsDn7{+4@JOif^aQ}M|h!C(hNQ+ zAcxD0SKr-dG{|C^v4Qo{-blIBB3E@rrKO!U^+IQ>;1rDu+(oW92ONYXjW@(Y!LZ83 z%Zy3C9QdsdQ$|B_iq=|YT%-pyG&PsDu#xQaj-9_M+D=PZAI#1B^sd2PN$Qi8H!;@ zFoRS(!WthZ!|L3WlTkk&Nfn}UM3a@ULHEo1ls2u*Xw(CxuaSL)BI!V3b%Y(DNX7XG zWj4`NE+bJ$+eF%;!Q|3Jfs%q!ND6Bzuruehi?k@3qP8d#giNa^3=DGO^`>LzTyH3p zGqkEzv;zbqNOM}M^&Jt3s*_ZuEh=4)Fnrii86$Dl?chGkvPKawVul!LlT`#YN>B&S~XQgf{(H zFA58i3X-8_B?+V|S-6Y&z}V4IMNoF9+J>kIvdCqEI;?(&)hYQ&J1sg$vssczr@-1s ziFJs))9-NF^jzr03tVK@rTa~ej*XbT9n^aDW8n32)nQfR!FH-WZZKey!O8@QcKFRs zmUPgdM~P0Wll0jvHqvT!SRGD*w$cofJR4)pGbY`beI&SnRy$V`*L*-AfKP z<3d%*dfq#rH0ZfmDyJ8aiRG@T8s+8F? z9W@5tJH5+)|8DTkszIo#^AbeoJc4-US%SDV4DJ^RqKzhqubRQ@uCEZpY-RJ$4pkCF z-XqnXMfLH)gUg<7Jylz}@~r*niGjbo$cXc2iYJ%9>%4R*(!K0jN&I4W>8cz3-roMc zf|MVvDkM7AyO#`~XA)QL+hJ;O&_Akde&<+l)0TXycj5KleRlTr zf`W!EwkN+_ecv45Vv^LhTup{}U7yZ21~K=Gf0;_f-B_x#4^+xPT;@Jajk z_BXZM-dr00+pjG<*DPllbK}r&?W^7%e1Ds^=aDy;B^sXbUs=egU)MgpYtGi*!~2Ri z%;q+BCDiQ&#MJZu>Mz{9^|PAGiO*lJyt`ts?{MAh!W&hW?#+|WZ(Z`>+$qB**P6BW z@7;Lkf!eynVPad^ild%l;^5(hhSMFtfB#VaqruzppWohjqJyzB91x_`0>zZhF=aZ|^e=T{wGR;a|V**|lMK8ZrOGfdb#NbU!$9M0G`t Kr*Cods{aE2tbMlt diff --git a/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state1.png index 1ae08dba8877a734110a8725e09d327a12edf277..3655b4b9d1598142be19b4db57ba0aaeb3fed4ff 100644 GIT binary patch delta 661 zcmV;G0&4xSdcXycBYy#eX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKpe$iQ$>+VQ9BfI z$WWauh>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JW zDYS_3;J6>}?mh0_0Yam~RI_UWP&La)#baVNw<`9$B7iW07=OT^#7sSrUd+IAeBHyx z*Sjds@;>+H=vVS41AHR!9McVpc!PLm)6zNb6NgwyQi#uq#|^q5@gvt|m)|%S9Ts?I z$jGGTi9^ITl3X&m%3$PJKou$^#}EDozq>UHQ{5*!IUL z(6b9P>$d%UY}?Hf!2b+fX>EVC0nC1qUT4l)$$E+a0rYQDSO@H-6Or7z5RQp)!z?k5pttbR*U}t z000JJOGiWi8UPvq8b846fRP~=e*gz`Nliru=L{GV3IPN_*4_XB0KG{>K~z}7#na0P z0znXj;c75}Wdu)pGJuKCB#gtf+@lOKw*?P+6UAM39^GA?!1q(o0P$jsPhsLA1PBvP zDftI{;^)ofBuqSwcfSSZZ~#65OL*812Vvs7;g*goby$fXSm51)Zpr0 zP>ZVuwBTw1t++}+58fTni+2TR;LQPAcvFBTULBx~R|Qz$#Q|1$QGg}B8eon84e-Dh v1HACr08jiUz#IPxVBqfn77hTy!~x(14wUkwK{{2*00000NkvXXu0mjfpVcXg literal 15665 zcmeI3eQ;FO6~J$>WNa{$wsfS-w5|&bvGwJB?Dy;LhL8Klv-{q5 z-`nga2B8(FRw{msbnt^@94gNALpwreXsHb|L9MnFN-Y)BYAA}ph|-ZMR;%>B{m#wi zPNq8JKljb-zCHKcbI!fLbI;lL&--C}+qY|L7S;d&YFk@E9q4YeK37(wZ)0%qBD#G( z(b8=IFz3tGrwTms*a85=F}1VH>fMaYxji?b8ICe zMK0PTQps3$X^PCk7>q;BG>{!%(Jm3yP2Gs<(}XOlrwxp95)Kz*S6pvAUNN*`Huob0 zd88FBjn07tWILdtr;;*k?nhf$RB8978Yv}bk|#?u?b=~RoyN@46K0zz9;Q}$HZ>ei~7qNk1P{48!#%6G{d3`r&o3Y_3zI5#6WJ9)S0 z^oqRmn;b84T$z*HOw31ESJcQr$p?=Pw9v^rM3-B1xXXQ%&BT46`cWiPnvs|Cxn+J7 zS&Zn(xMT*^xYP^Tgx2e4OM_)Ii>FF#(qnoOEei%6ezwwZMXQi5r>tY$sL9Yk$uP>2 zgi@6)+~rd5A!K~A%gsQSSCM=Xug`7e z!YW?mqO>l{Z+3KY#PaQs)@vPua9C{B3{yheX$=L@K)s4q=J0V5UQv9E!1r(r^f=v2 zk6ZRKG7kk9k$HjVmF(G=Y+hPf-gO~5a$R}jZja*RdjzkwacSC(=hj)~Y)YV;k}7KF zQmkx_wHF2LMRF<;xrcKxPM1qy+|cP{Bw2Pc5!vT-IG`kWojrxURB$sTREuimeE>^? zm77)YyOT#tdCxZ9gp@R()m8%bLSHF%YBaTY`Lpdwlw_-A2W6}3A;LXrw6rYTOr4s} znIXveFEgJ$Mmh>LQrF12%FdeJiJ?c#w3LL6y{MjM($I2VC!68!D_03(l&#E|`Uw(Y zNd2EI4Ku5%|0@lZ8}DbA1`BvDx*V0XUZ@1w!T~M}%q(-cd`_;cLbXn%k!RueAz2!@{83<#M?EEIy1|w5u5y>k6spU(2xii33H-+TeCIHAq1RE<=)KeV?CJlacUEn3 zOGg-h!6g7}xf6i@Tt@e^0Hino&fSV$cijoV)%t@QpIZSy)tS~%V`t{oLu>xfHok0r z;L`S`&u%u6X9L&Z~JR%s0IxFx;s7BCb!*x?v>H* zKkZ&LuXS#neV#abLfHJfn{T@Ea}O?<1-`f|U41Yzd}zhMqLWWPb7#v-59|j=@15m- z?~TK6|MQxEtnB~#(RVL)zayMKcW7hc_cw1{e)~NSFR49$@)uY9a`e4_-8Z47zBcmA zPfnhOr_L^w?>_VQO;5V!ymagx;q_y$tFxEw*thw8yZl1mpN)rqeASIN{6#yqZ@g*U z-h*(%>VK~R`-lJbz(=E1^HT?I5mvXwfj0J)9V>U7aw*#vyYFc_zV5^(Ft+~0oY=&k z+PCiAx^azgg1hw7zQ*1A-rD+9fAzvAo>ii6UiHfG&*aN{_9+V=TR;1@^zF6Bp8&BV zFYKK-c?6nA_q=@k diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/full.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/full.png index b20d5ebd5efacbed1185a649c410e9eee61d80c5..41d24e9d2c47761eb99532452d5d92a59c25810a 100644 GIT binary patch delta 405 zcmV;G0c!re46Xx^BYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0YgbdK~z{r?U%ud!Y~kqtGH0;p-9-HK0_bFH}JkEuU>tCy?XWJ z-8b-gy2m9*4~4=Cnt!%aZNxUQE%A^ahS+v8^JOArGD?!<5`Q=p0fb>l4^b4+IJELS zr?DuC8vv3^De1$|5<(C}1%MYwz8A+`mSyls$+LgW<2Vk!}%OWgHY)J_YzqhgVhAYw z{GicR#qS@DoPQj@bpU+}9)#ow^op5)Hv({SwF3M%tjz?XwE`?`jg6Vg7+@%Q01w~+ zJb(u<2EZ|DW2R~Z;L}X?1?UZ|jZf1iwN`*3Ua_|1(EGJy%D+mE3I8FwNn23b)ROg{ z96~I_L~Ny6w_U4%vx|xItC{o5DLpw+5L^KS;%bH*st!1P00000NkvXXu0mjf?ijG! delta 1581 zcmV+|2GaSi1HBB8BYy@2NklZ@qG_2qqxZnY} z;0bvJZV(TExaStMf*lEI(b^t%);pe4Rb@tSkyYJ2?HO~3R;#FbPyg^c z9udbK(0r+b+cFHtF>JXPkL=~({#G);&wlvxw~`9bK?JBv$A9KNIiTv36J>iw2kIXjGv zWO!Gm;k-^;TYu-@)r-^t4Ci%Py-3~aW$pmd#&X_R0vO(u{_4wNjWq-Ee1w4f5%z8s(U zZTOafh~~T5@;)8w65_SGz>-#==H*#@Xt9(xdy6f?LVv^v5U!Oh1_%Om%948v!g}jT zozhl;yf$07z=J@i^)k+YQ^JRtq%H^(I*epLxXwfrV0o@5d`zFEp6cWN#>@I%+3`AE z`dvEKDnGFtjgB)SUL!d$sKX#8HCKHsfueG>y`FUdw*L7nN|U(NM}U6NKezB0W9hGL2%mx27HL#NAJdq+UR&_P`oyQ07Vs&i z37}HC{k=-9Iw?oYEX>|9Ofs!r=8hme3jBz_>updz)Gb& zq5p%`hv19l(5T-B58nk|I%+WaX-WV$^-7sQfGbD3dsANiFW}=vnV{2w zRex6Aivf>V!b^s4(uwDpvyW&Gu~JYE*L{e-Tvy76dJi0SKJT^4htB~-#g(95*MdYxV9NyVt~UV)Y_*B;63Lf-bpl07tL#J49_YT@fV` za5saWj2C4*1P3TFl}~{085rKWXl&PZRDa2Qe)1#h$BS~}LySIpe+d35%ahs7ZVh4D zwQ$odurb3}=x9}HQMPrp{|DTpX&)R~8bX^Hly-_(vsoFByn2~Cd~u68k1xJeVzxcfE*1d^$&Py1scJRAgs4m`1({9)a4{~&y$XRlvn+W^iknie4b=S zhu~$ZclW@h5kN_|`?QM~eQH6Ij#aE{ie?~`6y?$dFnwQdtg{W$*F>D=r|FA4w}$|w zM$1xOr~WuC9WJ*1o@uuuJBnc`a(_BgjxKL3`4pj~Z7-0uiJ+EiFZ~aaK@3E^7K~{3 zF)2*?O46BNY_oa$SZ6DlzL7|RPSC{=|5&nVW<~jl zYKeKOwNBnVf~#Y)tWs_RWgo(MmX6Fo1yDXQx0S|vQ_rD|eby;OVK@?vsxHr{rdPj~FiFZyo3kgZSq?I^drlmLw9b!{t#Iv483z!ao4L?!<9 z$Lr6d1eipdp!z7xlMKPb(|^+C-J8;U?NOCfhx2OI>069v)&c1I`F-Mqx!GO%d&@xd z&vG5#m#TzGlC6vY#TfVyV>k|Ys}0dvpYX8)st}{33J{f|q%i{0N{SkulD)T;6jPWo zPooe%x~H{uC-%&9Z!7-#_rILXmfUMZK4;bZ8Xmy0Ve(yd-Li4xS0=W$&31k;cCBYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0*^^VK~#8N?VB-612GiGPf;jzC~}IEodnko4zAM04P#3DrzAo)h4fo3y#ev9&mizovWJ#9j~vC^b#Gew#KxT|9(OcH&~8F2;x z(*$UJb2U?3M1LA!Qd?V&MlbJ~;v(7roxJJ|=n+=YN1YMh12pEyZ;DH4444(c0E*rc z44~*O>|*F<{r-fSW2jXc7BNjsW&NjDjM(Xvh3m&32WPqf;#PB9!XrS@TY>=;y(Jhx z(HV^DHkAdo0hsEtq^mi}unjkr%PL@=?{(rsEsUC~D?D0(t+W@TaCP}gh zYyGFMuitc?0?>Fx2HA$$%9H5Q1tOO zm$?jrk_nFhMQ6Mp1n;&Vty^Llphk!elf9$LY>BBwPA)0ZjhL z^rp%J+kmnY44~*O!2pWhQfMIp%$KDvmab3r41yIT7E_o?F{NhBEc^YP>bxvn1i=7` z-VzL;=q;r&K+OtPaS?5Rt|l9ncMr7aqt1x$0bJUIEO8NOfa=<~yXj66WPA5Oi;Fk| z%;eST@7KEqKSf`2Mw$U*$!J2002ovPDHLkV1mglQS$%* delta 2050 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 diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow2.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow2.png index fe379e2fef50ab07c64a4f9ff75b663ada0ee10f..a4adc74bb5e0771858117099462f9ab51715dd47 100644 GIT binary patch delta 739 zcmV<90v!F15c&m>BYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0*^^VK~#8N?VB-612GiGPf;jzC~}IEodnko4zAM04P#3DrzAo)h4fo3y#ev9&mizovWJ#9j~vC^b#Gew#KxT|9(OcH&~8F2;x z(*$UJb2U?3M1LA!Qd?V&MlbJ~;v(7roxJJ|=n+=YN1YMh12pEyZ;DH4444(c0E*rc z44~*O>|*F<{r-fSW2jXc7BNjsW&NjDjM(Xvh3m&32WPqf;#PB9!XrS@TY>=;y(Jhx z(HV^DHkAdo0hsEtq^mi}unjkr%PL@=?{(rsEsUC~D?D0(t+W@TaCP}gh zYyGFMuitc?0?>Fx2HA$$%9H5Q1tOO zm$?jrk_nFhMQ6Mp1n;&Vty^Llphk!elf9$LY>BBwPA)0ZjhL z^rp%J+kmnY44~*O!2pWhQfMIp%$KDvmab3r41yIT7E_o?F{NhBEc^YP>bxvn1i=7` z-VzL;=q;r&K+OtPaS?5Rt|l9ncMr7aqt1x$0bJUIEO8NOfa=<~yXj66WPA5Oi;Fk| z%;eST@7KEqKSf`2Mw$U*$!J2002ovPDHLkV1mglQS$%* delta 2050 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 diff --git a/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow4.png b/Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow4.png index 051ddb5681d8fd7b09d02ae046234981b17298eb..06f42755835f65ce3e62fe4024c3599f4a5ad172 100644 GIT binary patch delta 711 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 O0000!lvI6;>1s;*b3=DjSL74G) z{)!X^2Bu<97srr_xVN*n-OQUOXRFRjS{9=9(rMuWtGRu<=I-Bqq4NLN>t7EYyeoXvx%$fYvhbsYdkpvd zQ{Nn|o_`=}VzX5@3qz?GC&McpA%-iFDhw+&doTo~Ph?ndPKnWBZflL)hLD(s8zC)z$|_+V3~qQ@61^udsscLe|!Z^C~Hv4s%_Z8nByJXva{bAE!6n z{*ct<;GJd0S;&T#En~wqmbZT2>5!9kJIZ9)@O0(# z?hVIYg#4dTTl`DQ3#jCdeEi?nGwUDhU$FJvHT%%~g(;2uxGS=blvUKGw%ITrdi6^- zB6*YQ2HU?ypNv2n_N?9h9%!lB%WoUok9uoFD(E-n-SJ*?e0yBe?G29e82$U!$2OX( z`Idh7Dfy!2C6*%I5HhSf zm|fd&zG1^Izgdh2yOozn9*{fG%)GidGC1cipT+NoEH7mb>|@yy*13pB>CfH+S2kDr zSMCmw3a+osV!X!njUj95%&k7h9N4B>_J;Sby)R#TgPEgg!T-{mznC*6+Lojz@Gl5j n=@Ru?$t!u0hE)4jhn4e>om6P>`JQD8OqdLwu6{1-oD!M6!xN<~_!~=u~VJS$!X05Q<$oOMEx;WUzGwZM2?V0r8_7P$7qp%aa7U99Hhks0S-3M2%fBa+b8yEe? z<>C^dn!@B|Iu#>Eq4%~F*Mk6yQMI$N2vJd}&0M8hw(5Ei0HLN5W<#5rP!N!%XvGCe zC7~_^G$hnudY&dWQB}~Ts9*uGW*=}tJqR!u5hKm}VT2MCg#`=fQnCevW!~(zFp*q$ zAxd3+sDTAoY=34Gy_AsA@uSAEs*VNv%N{E(uy=caur&;>xWEADl%?D|0V6vMw}-(3 z7ExeWmVWO9v`xpdH4GM9pu@gJfsq{=wuZri3$)n7Jzz%|T)}=>0PG5b1s5oF1B5yd zpa@_kRGFNmYdREM07~2dp$-H9sO~cR1xn8ZWp|hD_Q&AI%QMIb67zs5MF;+s*6thX@8_q*$+>2fU9DO*u)$}|~ zn)kyf=$H`T=p=0Z^ILqrNybyx5xBvbfOwFe&VOeOLY7=)Vp9brQL9!&PB+P1^}E8E z0Dp6AROd9Pc( z+U5@>T0nj>yUPA2zQ8;00%fHlx%?l1F|$L=?iJa(vR9O80r{^t@{_;%bXc3oLpcQG zC!Mb^&hiIq+G~TV_kdE*@~gl*zX^JOFMq$``+{p@U;Z!P4F>{z55PC-LO^%TZ}$fB zTca)nKrwL|vzkQhlHUq7cq_MdrCThI*LKOBPy-9dAD^u&?~=Qr4i4kRh;3-m?qF9 z8nYpUk%uRD`n@|(+IK%${?Yh((c7N&H{N|ss5#oRRfHj1li^wr!@Z;)KA6 z=1CK0C@U{b;Y~~A5chA|eJ_6bQ(> diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state0.png index 8ad1f325b352c75d7f7b998f9cb704bbdf06410a..3e5ebf50361addbf92ffd0ae571791fd467800b6 100644 GIT binary patch delta 722 zcmV;@0xkWgeEbEFBYy#eX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKpe$iQ$>+VQ9BfI z$WWauh>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JW zDYS_3;J6>}?mh0_0Yam~RI_UWP&La)#baVNw<`9$B7iW07=OT^#7sSrUd+IAeBHyx z*Sjds@;>+H=vVS41AHR!9McVpc!PLm)6zNb6NgwyQi#uq#|^q5@gvt|m)|%S9Ts?I z$jGGTi9^ITl3X&m%3$PJKou$^#}EDozq>UHQ{5*!IUL z(6b9P>$d%UY}?Hf!2b+fX>EVC0nC1qUT4l)$$E+a0rYQDSO@H-6Or7z5RQp)!z?k5pttbR*U}t z000JJOGiWi8UPvq8b846fRP~=e*gz`Nliru=L{GV6*!h3P)Gm(0QpHoK~z}7#n&+k z!Y~+y;V%WDG?RpkdWKFtj;o8i(9xmj5nLQRPLJUlic`8c)IpSrEjCU5{22q`c?k(5 z0OQE>yc3+bQVN0-x7H%z!keanlrnBWA5YU10OAGo@$Is#-}4Cv-rW`ee-P&kjNt&F zwWhrVWB65{3avHTwxtW0f*+boDL8SG9dN+`gbi@Tg9gmOg9XgRg9P~C-T}V2S3n4S zc0ee6RzOJHIUqFd6hMJb4xqv(1yJID1E}%iYF7zPJj=4-9f*Y+V}1i-;v2KC1t

    z2wCv;;}tOUW9dJgsqpi?Bq~JzqbQ~PEV9;;<4P$!0TpTkfuT94W&i*H07*qoM6N<$ Eg5tSH8UO$Q literal 15911 zcmeI3Yj6|S6@V9#0(KH=T&Bh)xT;LjB(U0tp1UK77@O245g1!Brh_S~-Icv#Nh`E# zTbP!RKu9U2G$BC8JQAL1fTV*lPAI`JlaOX`ikZMbdC$-~G^NH6nt%tp^sZ!E^0j=2 zNix$vyQ9}R=bm%!{m#8d`)5}a&-mFR=|4)xFzk_{!h#a;ZP4DMMu1PHzWzVpD=l0& zN5Qa%exSXFVGSF{VHo?N=RAVU>JMXNU#^A%%^)jIp>Z z_^qi4qaij#t#%pnw1kFoPq86ij)(@U$%gZ!&2F$WCdz8JTkMk!G)Y+r(oC31oHnx- zlC{u=-plAt2fv&V!OxZyJky&FNG@ZQs)kvDsH>|p)tOClq>`W*h9O9rplKY8z?Fp| zm5bsbB{v?VFHV7|@DVAjN^;1c#pQf*jp{NQwM6|_@4ABF{zM_AmmQ!;M7c0QnMfj) zlfd`;gli&!*wh4`5CdXR45^yf}F-(WChYDJw^ z3lQ`oP3ft47luWmL{#LO2ro{n1xv|IwR%Fy^hKp8*z%hOY zW7BG(9bOP3F)uA{Ogk`R@^Vn~)wY4h!xn`Ul>^HuDsTgZNdhzDL?0;%JcIlElm+K3 z76;DQd_LUg^U)47=MZS#AKM!P-4iqG4c(U=gigJ18)K&^#=(Gvi^7l#kIyqH*q}r+ zBNAxmTp($TwiW@bg(9sMlJVJbJ0n;FU6akQ>m0OevKe+wcs?JJ zR5#t54N@n0X*UM(f2~q*4=cKDR;$_SBw#h{Q7lEpKzV@#{XZFl?7RGtSkZSG6^f-NfqbM{vXi>+7<^x%ETo4ensN+KOfvh?%2nbr#aiRG@Rvi}v1TE^g(0m}P zjtc^U7Ij=`K9E(%1pz^eIxaLH$g1OlfS^Sk7n%=b)p0>U(4vkD%?GmTxF8^CQOAYm z16g%k5D>Je<3jU+tU4|T2wK!}q4_{o9Tx-yE$XaHx?DW?RYOhL>MUcI^KjK`D?i+A%U<4b zrR>ed*2b$FR%Kx6^1R;zZS&Pdr}yoD`kZ_AmQ7tfzS9>+Pu(Bs%E|sA7~7ru-^m%Z z+YU8~ul)JW5&Mmdj;vQ^cf5HFFWYK8aJ_5uv=PC(b6?*1*=TG}L3Q5RtR3%{);0(y znp-#TZra`1m>G<=R5Hz_<3}yq)v>l>UCnz-Pkb`2Vo{FwK>O>P{Kf63*Vs?2tZlnJ zxnkqlrZnu+oqs)Y_2qlZZ|rS)_C_X__VF9e?;Wa|x%bc~)0s=*h_O6r11ILD4__U>=XTqHi$bIyy3vPD@F1Gu@Yd9CUOE2kk zHTHCFoV4Wa`P7Eyv6ze*(vME8XkF2|X2!&eE-?M&8CyF8otd!&M1nQ3!>e0FiCbLIlWnDto|t!Z^_ZM%xcXFqUx@#5gUZ0wFt;;I+! Sxvf3QT{LY*!MjuEzw|%x_1DV) diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state1.png index e724d3b9f78d115d79ca3ded3230db216cfe4056..7bd92db59f70ce83df278ad44857a3797ff47877 100644 GIT binary patch delta 695 zcmV;o0!aOheBlLEX>4Tx04R}tkv&MmKpe$iQ$>+VQ9BfI z$WWauh>AE$6^me@v=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JW zDYS_3;J6>}?mh0_0Yam~RI_UWP&La)#baVNw<`9$B7iW07=OT^#7sSrUd+IAeBHyx z*Sjds@;>+H=vVS41AHR!9McVpc!PLm)6zNb6NgwyQi#uq#|^q5@gvt|m)|%S9Ts?I z$jGGTi9^ITl3X&m%3$PJKou$^#}EDozq>UHQ{5*!IUL z(6b9P>$d%UY}?Hf!2b+fX>EVC0nC1qUT4l)$$E+a0rYQDSO@H-6Or7z5RQp)!z?k5pttbR*U}t z000JJOGiWi8UPvq8b846fRP~=e*gz`Nliru=L{GV6gZCrVF>^L0NzPNK~z}7#n&+o z!XOlY;h!cZO_)r>Jvwo7I(5CTmt+!Lagl%=JUbv4&kB&hcLzw}y8?k&PDHLkV1m#LJ~99R literal 15885 zcmeI3Yj6|S6@V8?c^Gi0)ABMTvJ#v$j8*CC8V>@7I3tsQ8?2RR@(5@}n zF2s;93~5s!#A!_3m}wJ+S4;<}sY3`!!(&K!wFxD`h6Fl=g6nu1V!+Tq?@G2LU(0ux zBs2Z9JEN7(J@=e*?|1Gw+CRItAb-yIgsBM_hK(BveXzAU~%$gTDBMYZ|GY;7fLc*!Zga?$FXW7U$i(hxf`7up{Hz`6@(Nlq$p_LPpd>1_n8CIwP^;uGiy<8(NZc zssVyNq;V~!;u;^17xI!=k!VYARt2xrI+ z_DW~@c}5of#iHnTgil#PKSE7bR_Ih|9$zSUIWZvp*p9;{(R@d}@!5>bJ1BxO=m@ip zG8U6&+GwRoV;Vuy1QFvTJQMQa6gk0F6ZJuY15GJDNRp<^u|8sE!ahL#aE#2{mzUVN zF@89fc8PuuBRd2SQ_kZ)Z@C?h4#v!koGLm?bc=qlEZ$+T$T4jrDm2#{zy(}+* zWJobd0;viW?kuK!;Ap?XEjYq$gA-YSqoYBsMwiuS<6Sxn!C7@A$@4lJYclJ2la*s^ zF00L~3Gs;(3M#kQb$<%GJ?0d7!&6TosEI!(UtYN?vD;!$KN<*;fyX9TLw1Hb3<-Cyv`VB zg96R-3!t4d?wC2sUO2E9lhtA%ZDvMCxR^4X(FXQn1$|v-;!I^^nTw)Wi>-ezaoh|F zl`ANDuYuB_cJYL5nIbG#^N-;(~ynMHLsC z52RIbK|s)=iVMvL(yF*1AZSs=h2{fkRa_7dw5Z}j^MSM~E(i!(RB@sCKw1?S1OzRr zxX^qct%?f*f)-U=Xg-iu#RUODiz+TOA4sd>f`Fh!6&IQhq*ZZ2K+vL!3(W`8s<$5<^yR}To4ensNzENfwU?v2nbqKaiRG@S``-r1TCt#(0m}RiVFgQ7Lm9TqHm`1 zUhq0<0K9jax?s#P@Xo4+%`J3dSnUi9tA8HDdhdbns~A>AVA!=%@Ve`37&b|KdFkQV z7&iP+UUp`2@Z6z>ne*B+CLejYxqiYM6O*Pc`}L7$x$?xM=>>1<8ww`PKB9NePrFf_ z)m2`4@%dNUl8e$dG)fh-xD zx;Dp@y*4|O`~@%+fjKc$9c|stOwi!7c%g3 zZAU#tO}39mVV4V*2C2Hr(c;|w!|{>pOTRo>bov)JMzmiCj`HqlZ)WaK$zQa=Tzsl~ z@34*4Kic(Tban+;k4d?%}bxQiA*PEEcuMY=m zPU_n3zGU9)-u2wXtN-j;eX>e=XwB2cE0;%N8EZe=`u*D*60nDxm#5S{)A&Vd%jKrJ zj{KxauODxlaTeTrnpUmYbAFoXK;euQzoz!&%b9%LG-~mg+BdfZe>mIePd<0TJ;~H) zd9G#ctv_%4)Z6*S!q&9UTaMk>VO#fv^IyH=q>7@Y-6Jl(@OIv+uBR?<+j8@r&ZapH zoAw&k%*DFej!JWYRsMwhpEfPIbm^<4rJWb#aSV4SseWGi?ytL>D(kP7l55N+tbP8O z2ZnuKdav}^>dSxauD#yA_qWUa+-l~NKx<%3W9x#pu2)<98DpAF_{ooN-@STsS~5Ou y7&iaCo(*01ny!pVJaj4V?5V%6E18Df9fxt$((UVe$6r!j*v`wz&u*Djy6S)8Ho|uR diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/full.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/full.png index 4cfc4c45da5178cb9fb00132bd47b9570301ad6b..a1c5c2115fc19c9b01bc5e8eb039ffff5e143553 100644 GIT binary patch delta 418 zcmV;T0bTyT6T1VDBYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0Z>UqK~z{r?U%o5!!QuWmC}N1PsMocGkD75B#@=(Joq$9(|`1+96|zuAfQPUMKlgg zQ4};*RrM_Z$@4s?jiHI-m_(cfU;)W_V|qW|>a)G_v40)&MLB0p09OJcCfTA_5u4W0R<~Axr-$YC_<2`z=mS~R(c?kA?bc&s1sELUO2CpN z>16EB$#wV|Mt=d4Fbq{$mYoc~P2B3y2q$0V?@PVZif1)jBgVB)*;oPQ@^(#Ti?x8E z@B+L5FTe}%0;~n#r_#o3F*YQCn-T8{tL)vL%CMS=Pze zAF+PxF@H29GI?K}@kV{c#5h$~no<{S`TuyBIDeWse;b_A%n3@J09E5*n6`{(^8f$< M07*qoM6N<$g2jQit^fc4 delta 2486 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 delta 2924 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 delta 2924 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 Yzrx(A<|rn?4FCWD07*qoM6N<$g7_;%tN;K2 diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow5.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow5.png index 8ebeed21a9fceba5d6cd550f7ab6d33888cecb9d..f16d149ec46e25f3824cdb7562a002cdee1321cc 100644 GIT binary patch delta 698 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 Yzrx(A<|rn?4FCWD07*qoM6N<$g7_;%tN;K2 diff --git a/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow7.png b/Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow7.png index 4d0ff4bf7318bde3f96e034058039551ad57141a..4ad14d62d1dfd47f73faee41599f42863653e457 100644 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!Nr~~jv*CsZ)Y3wHaG|zkUKI#fhADGLBz=; z;BXMDfx(v8s^ZD=?c)RZTeYZ)dZ(?Lz5ns{gQWkdhbxhwD2J_$Zi z($2FJaBeCy5`siYk)439sXV!X0rn)s@_8TG2>`+*XsZ@~f1||X$Vc&cAAKOe0Dud8 zw{(*-fJ=p2cYiNB3E2s7DGzRx8?WsU@aW=1X{#2}{<9N6qZ;z>Gdf`2*8V@pP5>Dn zn%ZY{00|}$vJ>F>_tBIdg%03wQ+okC`uE^4~&FvZ8D0{}OrnSUqK z0XNbwVDUk-$%z&=kpBga;IDd)Ao`I!z(X>92zPS*C0OQ~A z#EtRVPW(J4!~`($VgMK#U9ewvC~!GqvK!4ICcqajzJXOyH+}MXA5nrJ7cZf9$_5*= zik`=%h(Z7tFQIlC`H;5HjVLjI2Q{ArXRzV2mPm+E&r1;{27skGw_vdZP;Sg>c~{=A z0l>*x0Dr*q=?m-L-AVhG;z@M?8PDM_enjYBgjhPj&-J7OI&1ksxWFYk03C}T(*C7L zq67M>0f0n0;Hhf)7)YW6fcC|Y82w8SZ3e)lKsbMAe*yNJKK5~9?%o@A8f4}00YgoL zM`$aDuW9g_2K$F=8jSHJ=hC40^Xuhc)8HlLaDO>{_8s2RHuh1Bl*9aaz9&H1 zzZA*KVcy<{z?ifg4zy1-Pml{(*@Lmeo!`S|Wy!%1!_W zjd3inSBsjt=|41Z4p- zURyP1BR~8D6CD1c$r&9mi~|#d(4xsG4ou*BaPoR^@_KNxZP6r!4)_Po4zi-ku!6Aw O0000%&aN^ diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state0.png index facbfda3ade6a6c2884f9a596e976a4b6da0a329..fa6f83797c15f9e0a8fa44c37e4c6406d1f6d8be 100644 GIT binary patch delta 723 zcmV;^0xbRZdi@2EBYy#fX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKp2MKrbE=X9p)m7b)?( zq|hS9JC1vJ?|WbFz5|3tg{fxOB%o@Rk&4H}Y;IKyyh1=f&3|zS5;OHgdNBjf@pTU$ z-|r$k%e(H+(Wm512KYqcDANs#c!PL$)6zNb6NgwyQi#uqCk(nE@gvt|m)|%S9Ts?I z$jGGTi9^ITl3X&m%3$PJKou$^#}EDozk6#Irl;JbU<~MfvF(ph zAg~KG>$d%UY}?Hf!2b+fX>EVC0nB}pUT@*Z%x0}MUsk|8;gpO#Q4 z0Pkn?O*vrj7U*4b`_?+g=>w3VUM=4M2Zz8|k+Ro4-Xz`A*|&ddTK)S0Md5Ol8b}Lg z00006VoOIv0RI600RN!9r<0K(7k>Z;bV*G`2j~J04mlGnc=mDt008+(L_t(o!^PJz z3c@fH#_=zrP@73Yz{$x2bn1b;gwO*Nyo3kp8JwJiQk+r;1sz1GXr)cw%gY!Dzds>? z1P~lqmfe*kZj6DF#GP}PNa0P>Kx-X0po=F-0s!#>y7;LQ8R)|S zz*@_D3;OWe&gRxyv~9~5Fa)3Pn?gzAEITj;2S6Jz7AFnx!N~%Aagu-#JUAc}4+@~b zy#uIluK-GXbO1FzDu4qY9KeMS3gE=kH2ojIjbApVRFZh_4#dLiy8aG`iBGq6r6lo> zTOffiud8RkuOCbI>CA;6$|Q5Hx*tWY^?RXnjvY6~-~k(D`iq@-gqZ*U002ovPDHLk FV1h0lLiPXv literal 15734 zcmeI3eQ*=U6~NCpfnwt_3yf`I(?Z~Ux3bTcbc*hT zWQV$rDGf~^VUo1O5QjExr!aJgo5l@=I8KUj5~dv}g@#Gfw59DhCQcp7M-r1X-IHud zUdub4CNuqKZ$>)3ef!?q{k?rp_s@N=a`oMLIk)9d6qQ$A=Ba{ro%Z>{O!%#|wqAj^ z*`c!a3Pt7KtbMYmy-&@jDDJpaQ>WH>D>y+86!D^54~k-e5S&d>&gHQXFEj&HR}UJb zpi4h;tWU3#M3=tS;x&3hrJzwNYYl_y*3~saYqQ`G^~>Ek&KL(B1c1uxVgY|p;bJa* z+%E@zYs0i&7oVawyYwYmKwX`;QdcU6fzDE7H3&wlO=oiyF&3N6Y+I&djf{mhnrM^J zz?wL-ku$Tpu}kmHfxnz#(Z^MJ?ivdRC6~TYRYM$2N2AfAsHsQ}H_(j3;h>Ey&9VkK z!=SVTRX%12Dg_BA<9<9q5yDbPmE@pK^UK%E5!I#FYk`v2*uDaxWT2oj#tu@XV|<8a zii~t7BT-1&gd$;od}*RU13w6WpsGMSCZk=bQC4N8QJx}XQaxp0m=muz89U>81A&a8 z6?N4Xh+qt9MoXopB?RaypvaN109I{*TPeu2dsXtKk~6`RrkQf>ASO*=rfCvp@uQH) zkQ45eD-8o)mBTf%>~|+lS>-rFU1@3jROyz~NE=l4#8qI0E=DZ z9X`9ms^vl}Ug#pVF3oRzbYjHx?cmm{9RshID-S9v54Th9al?Tk39ig;wVUe&J1__g z58D?oTMfKPG#OaYWOdkhqmOq$Xp_uSD;sk?9v!;Qym7NwZ?*wmfE)LLDL0-7l;&(w zpfzC$wsYQ}Hb>iw2=`*H7X_05Sc9E0I}G)#*>2!%5HKT{M8@i1MOF~T_maWQq)=s& zmiHDU4O(uh!F>})Q+ba!-Vh&FfYw%A`tiP!?9^~-@^Z%86UPf$%XSM|)dSH$Gb0N8JAfL9_%H0t7D-TzEc+mf%8w;6;K9&j-;G zTnG@nNO0l#AX4T@FKy5=YwboE(8c(#Nx_Hy_pJv@O9KEeD8Fy z|Csjjt4=7Z@={dmS1GD}8%2HeDZCF+RK!S87dOM#U7w_=eEG3WC+?!C8HRFCNlom{ z{yl5HzOZEe!2XtBemMBV!09EUSvkdn*1Smml{3{N9q-n5@9B8(p4?l1G%I)AJB#1R zpSOMZk6+q;x})LJ+7NcTO5wy#|_Fn{=; zAGI5w0raU^Jw4p{?%A((z2V-FO*Jkm-n97TJAbqP6NfWoHw(t`{9$FwigTj`t;2eeVu=L{QT0zOIK`rwl{je?ex7GgN`Ki~6zWbKa(eUikBiSp0tgY?+f6EJ~4RtLu4CuYc(e6+0H%UUm)k6&4)o zh5jz~@4BsW?ZcMNSWk5H(F!g8r9$D`z3<)`Ty$g3G2OD;E1G}&gU$y$XWzQa-f;E# z%V+P_{i62Ie}DDB)g7*$tc`J}yS6UBkiFpa#)I7t9dRGs`o=-GI%Ywymr z**D$4MBmg`HS5+9$BjAH&)@RYCug1=@D>a&ZaO$;(KFXZ*DMgKyKVc*mj34-^U8+L zojCOB0oP{RSKdC?e)!GOdB3mj?cE=_e(6f?)z+Wx*y&D?qT!d$i7 z_QDHucONY;{C;fb;jfi!ZCBg+D%UQ2{&?j07fU{fM4p>b_~pE#S!dK&UcdK3{+5xU soEfjzHeIKr4I8S@Zv9#3r#9;1kq362+?{((do#Lx)oRb-m76>M3mj%}1^@s6 diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state1.png index 3799df51bf9225b991de796f1ca3d2d663373420..c40b161092bf1688a7c328fd6fab6c2df6b94fdf 100644 GIT binary patch delta 697 zcmV;q0!IDMdgBFEX>4Tx04R}tkv&MmKp2MKrbE=X9p)m7b)?( zq|hS9JC1vJ?|WbFz5|3tg{fxOB%o@Rk&4H}Y;IKyyh1=f&3|zS5;OHgdNBjf@pTU$ z-|r$k%e(H+(Wm512KYqcDANs#c!PL$)6zNb6NgwyQi#uqCk(nE@gvt|m)|%S9Ts?I z$jGGTi9^ITl3X&m%3$PJKou$^#}EDozk6#Irl;JbU<~MfvF(ph zAg~KG>$d%UY}?Hf!2b+fX>EVC0nB}pUT@*Z%x0}MUsk|8;gpO#Q4 z0Pkn?O*vrj7U*4b`_?+g=>w3VUM=4M2Zz8|k+Ro4-Xz`A*|&ddTK)S0Md5Ol8b}Lg z00006VoOIv0RI600RN!9r<0K(7k>Z;bV*G`2j~J04mljW$Lr$&007@fL_t(o!^PJz z4#FT5fZ?AeCN)f^;RYU{lZWdKyo3kx7)~yXbTZM&24kx&ya$Xhe18Ze02N2y_fJz3 z@460C6AvNK)WW^@SZm7$#CY4b0ObN={5Tx0@A;+%e&5{y%AA2E9KboJdw&a-@W& z#y16M;Hv|)@Kpht_}>6+{AWN3d@-ODJ{wRH{|YFLe+1OPr+~R1OZ;@!!U0VDQMA@h f3n2t`9N-1PCdA8BN8=m-015yANkvXXu0mjfL83K% literal 15695 zcmeI3eQ*=U6~NcVb*U+Cnx+$I1}fx+gtVtSeM=Wv*s(}#il{KAwn<4i-L2#UNhfq? zOLn1nNJ49zvefQB}Iz|f#1puui(Fe2x08k}yE+3s}OoZm56IJ2GQtgMw| zELPse@ivPgdl|h|=$9uUh4^OQ?b&chsx@|KTAXLuWHM<=T1`qK%$nV9H_KUAi-kcm z7_~d52`MI~)?}Pa`tdO-uMku^wOXT550tyI`-;YMfnsWw9iqslgg9$9 zacnUoNzB>AI}?%g(j<|E5g3IrO+|L*qIU5PMN`xcr9{Y_x@2IK6Td$fyXbnO(W0SM zZCMvWkVRV5Qf=vuL$(>JN@qfZ%ev53YKrY%lSBFBO!1^^O0FHIo#KYny`F!WSL7$*OuZ6Q%8P362 zY%OL7Z*%cx+qXG0&v6A#GBYtBenpZ)-FY8obf7IQX5_%mn_Y!I3TEOyQ2j`PCd|l7 z;oJg0lE{aYL{!kca#RRIHXaLm*!*C@%-pHs8Zvvc%_ux@;kr%?(40lapMG*$g4$7VQoO+Fg?1 z4!PV8Jr{cMA{Y5}>3-9rQzI5`hqPY(82J5sQ%uzaw4ElO7Y&$Xv@(}N3ZnP|Bbqro znw0KEztK8 zGHT~Sq+pJ|7YXgf4Mm&if)WEQPBRlU+Z>FGa|D@CP!Qa1Xbn0Y&h$A)dnw{(TBt@@ z&wDqP20b^c;ijph`MjqaZ(K;IP;V=>#>u{t>(pp!?((GD6EBE*%l3+T)kDd{P8rQF z3pbOer*mcqGX4w9OUFodz!<4(WL%|Zm3E>kAuTB+V0{?X(@Yv##_Low+TPY%p1bD4Zjt*psvonDC^ z{XbW)VsxT}boH1$?6k3bG@6zhc4Eve`ZY!)wpRp*|boNo8~Ro#AMBD z$wtG53#{}TgUr9yYIF|^y$-wGYWJ}CFm4f$Q!vuzlhMDHs`nEsij=m&6-5o(OBog@ zvWA&d72Iv6n_*@Y-OHleXf}5rJ*`jXy4dIWBfq21(<|nS2El-kMT(2e2h&nq7!a~Z zagq68T8aw;LKZ15G9OG!abZBnBE?1KgJ~%)3Vor!L$??281k9Tx33&mg2&IkVT4%%m>p_To@3tNO6(*U|Na`140%lE;1iXOL1X9 z$Rfo>=7VV|E({1+q`1g@FfGM}0U?VN7nu*HrMNI4WRc<`^TD(f7Y2kZQe0#{n3m$g zfRIIsi_8bpQd}4ivPf}}`CwX#3j;zHDK0V}OiOWLK*%ByS5^MWR2V~#qbAXFrw<)D zg`R5#2C=c(4?xe20QBAiz=v1S_uBw;asa%u9zE{*3jnTHcHaHx+W{!AZ1UB&q)tD- z=fv`(b=TeZ(u#(mp|$;ME|uLYJwEbkh4#j=BkMPR;mqvVmG<4+`m1jFZ^fT}a`W(0 zru+7tT^so7-_|s}a4@!a-q_n$zjfm9KR2uAYm?_63_abqY4g3;>>q3I53cyt;lYtx zzUXLtwfe%Y)`=k${^z^CxvH*dpKa@cg8ER^Isc#S3TmhDVOXyUH3OD?bvespx-^&`Sf zKX@HndD*bm0G)gPP;uqq(}(M}FRBJhXMwAOt4@6~zwdSZk>{pmD}7Jgwtn0H04k+k A9{>OV diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/full.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/full.png index 10342c5705897d15d15cec6e6e15d43900b21769..a1c44f239f04f38430c1b7d52c090dca8a4f54e1 100644 GIT binary patch delta 426 zcmV;b0agB!5X1wJB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000ic z000ic0Tn1pfB*miSxH1eR9HvtmrIJmKoExGFhWdL5&|w{R&#)?JkT7$jgSKb+;{{J z?j#0bwAe;W6=%gQ2e^oEKdlW^{#eW$P65zTn{rJ95ZQta1 zPHkD1cL4~VWf=|hO%Mbm;wAtc2+jlZcF)^G}dKM4G0}E5KB6gFjB`Zx9^k3h<$b U03mOCK>z>%07*qoM6N<$f~`xgk^lez delta 2053 zcmV+g2>SQL1CtPtB!3BTNLh0L01FcU01FcV0GgZ_000NYNkl^G~7zLDP_ay*ecJtI=*Ya~` zz?BX`%tTL%A z3Z>(CwrV-PpE1>G_bUL1Y_Fi*|G5a38%IOm-;_1$lOpYMMSP^Xc~a>3;;a1-X$Qj3 zF`@@XtEDshSc!XZf*=sNTIAehePEG*N9x2Qbuw1&sDH}te9f3(I7CXg_b?v6pI9zI zWq~8?5|fGJGsZ~e?tt0rk*GRcs=Ag9)7>%IPaMA<}1%Qx1Y1yWc{iR|(t!KxZFR6n|FJDDW z`5+tvJcmM3hO|QDRLFCA_J{)j`Z1l2+$ZJjp2#`OwUTRsGzd{oJAF>k_J9k7O~PA~BvKYA>|t!ZC4#Tt!TevrxSz)m~_)xkXNMizuoH zauc-fP)K{K;R$Eb!63mkLIHpTRzx=W%Y5ovPgjwrgHPHu$Ja>g@?l-wTNEMZJ>3a( z#cthjCqo*a6;$P0bKC&1E4l{&Q2cg*JAdo^JAJMkM?*Am#RPz&ckED{!-UBimNeoe~~`$lZ42&0Ap#=x~D6^d*Y`_ZAXv~t%;fXkv^I!LD#}7*5hwH zOU^gOtZb9tL`UtQ*xb6s)loaBZnk9vP|Aqc?Z!QhpMVhOtGmb!9`;n-+#|*XP=88F zcKftfR{aWj-FaD=dS6DB9$-}m3;6matF4R2Ml*(_RwOL-k93X(DN6NX+&`~W7QgPx zx(U5II5!)W2>U0J(HcXPZ4J7uNLW&D_b@RYF>CtDxdQOD~0I9Wx z;q4wKnc-%HDgc=1F25@!V1y_DAb&Tm>bj;h0HCSr2}=J!*8m_PQUHMJU1dDm0?1Lu z0A$=hyS3OOYKu(jYL8Om5yN)cpq+`IQ|~wL&GX6916tNaL|Y85<}0UZ(sGSG$c1ko)y%oYDzgqmNm7Npg#dt? zX*QdPFEgx$K)IVU%0{{1$$v%C=AU0DUzqc0VZor*UGu?BTq9A=|A^c#x{hvpA0RA-c(f zscn9ooY;e@oq_cEMMC_xZ;QY`{SI&=JPfUgnE=a-*wmc``uV1~(0>3qV{fUaYsp2+ zBMUPNSm^pUPoprjOVFklRKz zyYWWsGGIx^Q7Wc{yMHWCCo>NecrVWwvrm?d@j(4qHm=xEy&fMHceKq(N_J=|qpD7d8FJJ9N-l+s_UTxYwXxuzFXx}F6f71W9F=l1WKU-l(zNnTp} zOxg{NRpwW^2qEO2A3S`k)$*oy zCT{4@eL3B_T&89$L z<4=C@CKLKmtAEv4F^I|l1Jd7Q0<2Idgc=u-0@!4;S+Cu0hZ+}=LjYhHpobCU#Bp=q zf7pfd+4=!BV{0Uvn7`k)^A-3;qw&4A zpL(D1?klfLX6oba=D4^aKwd3Q0P<>a0+5dl-tyfnDSxo1pmMn!TGoaT*s$0ouGCF~ z!JfD6H+E~ohAjXVIbnvL|LYpxps>?#C|r*1nOJg>J6f!o2;zlee@fPGRM zG}Hv7!%n~T$70um5uoB=q+8F!l7jlBuoHm1TATpn)$*@X5QzGjT-eNVv3RHBGr3{m z1R$>#Cjfc1Bt`)H)Y&#JqNhRB5)fps%@z07m{0f&K=8p{w~dQP0qhzgEco4lZCu0+ z0aH4UT1HFNt+7Fa{|!WC06cPkWUIuvH7m2jOV07*qo IM6N<$f>@(TkpKVy delta 2355 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 ba3J&-iPJcFc2Y^e00000NkvXXu0mjfk!^nm delta 1148 zcmV-?1cUqN29XJnB!3BTNLh0L01FcU01FcV0GgZ_000C-Nkl5TNpusmge|4ggN=!8IvaOeXXnqG=b=WE!>+=M^M4jHpX2`K@%znpe*4~+ z_a5P#LngaZd(WDW#(3h}-<6HOul4QpjfE-!fO_%U#T#ct@~a|)w*oVN$iWxCX_ete z9OkpXzedaFrnY*fxe5T7GWEJ~0hE7#~)d+(mUWi`)gkvTT#7d z+il=3z&OQYimi^VM7-n8cFw)T)bUcyxM+Uq9k4sK_kV4X@wbaNUKSZIy#xBsXTOn| zU-~K_n@|AR1;{28Kz0GL2?dZ{fNZwC0K!J-g`eIyCNln`hhMuWT7wANz5_x5WEUWt zPypEl$R-p(b^)^4_5uiRiOJs55=Gbvnjfd_e>OD%a83b09a~Y?H!aoil3p(^6JY^f z)Spmr5`X^m;+(!|+xnUNEC3{{_bSnov6^x5R}e$^FYrgz9w}8VELBVlP7LF&Z6SZ} z-~yWtHfqF^iG?s zdj&CsSAn8($1i^QGcEVT-CL~6na{A8W=`|uEq{%{^BFwUi*LnCh_Dr_fYjq{QG_SK z{`1*O0DxC&KQr-M?s4_0o3u54ggw&J;J(Y2mB&N&C z>QTe(C?L|+-i2g=$Gj75UQqd^3$V_WZa4$^)5OZe0`&+DBY;6PvO|wyA8R5Ygmnd# zw;=?e3MJmGsg3rJfL^l$tx387YlnCFZ0e@kc5siEj2r0d?D5qL%iCuXH0CXWBZhsI zR6NF*U*(n`O2A3S`k)$*oy zCT{4@eL3B_T&89$L z<4=C@CKLKmtAEv4F^I|l1Jd7Q0<2Idgc=u-0@!4;S+Cu0hZ+}=LjYhHpobCU#Bp=q zf7pfd+4=!BV{0Uvn7`k)^A-3;qw&4A zpL(D1?klfLX6oba=D4^aKwd3Q0P<>a0+5dl-tyfnDSxo1pmMn!TGoaT*s$0ouGCF~ z!JfD6H+E~ohAjXVIbnvL|LYpxps>?#C|r*1nOJg>J6f!o2;zlee@fPGRM zG}Hv7!%n~T$70um5uoB=q+8F!l7jlBuoHm1TATpn)$*@X5QzGjT-eNVv3RHBGr3{m z1R$>#Cjfc1Bt`)H)Y&#JqNhRB5)fps%@z07m{0f&K=8p{w~dQP0qhzgEco4lZCu0+ z0aH4UT1HFNt+7Fa{|!WC06cPkWUIuvH7m2jOV07*qo IM6N<$f)tZUc>n+a delta 2331 zcmV+$3FP+f1*Q^^B!3BTNLh0L01FcU01FcV0GgZ_000QsNkl1YitzP75?VV z%+Ab?7q9UPdu^|fU9eIc7Gj$fm78Fr#1)SimxLBoph8lpqVS_q)c{gy)CQwgO)E!f zjffK&wKPy_r~nBNHX)YKf(e+|N`NjxYkU2`I9{{f*F5g@2Y;AAMIq|Y87q80ujbBo z=bLlSx%ZxP8N)DOCm4o-^itIhsVn?dJZb98R;`ZdeP7q}|3XG@+mhGD=k z3=G3Sho>{O^JELh5<=EK_o7yvyO^IXc}$Z}2LS*olYh<3Vzx&eFxDsDp%?;zrjCJ| zK|l$MqyhhxJTc_Er2xPm+7GhZ7am9gz_|aIDQerN001DWvY#FbW6!$Aq`#xsjr0@; z7eqKABaJ$}=bTcYV#FBYbTY*0Bv=(S($DB@go`m|sqMFb1^Fm^Pe$36Y(`O1e4zLW z#RoF8xqrehw{1N_03ZP%XU~J(?zIKY(c3NncV*1z|E(kWA$svE!7XemdS2VT`V+nF zhew1LkJp|4fAdd|DR2jbB`mW$et}v_Y9-mj5G~6xiVmg;0MOq52>@W$Uor%%_-z+J z>I##-hM4N>EO3NK*HfqFEDNw3Ui;o8^wt$k3Oh@a+ zw+&xsfx}APN5N7j7_1&j^bGZ)yLvz=YJZdYM5V{lo!`S?ofG`gcnSb&3%?5h=vzIR za`oOaeWGI)mQI09&I+R6ng6!``6-w_5js(Ke97aUX=q$Qn-2!~-Ag~lPu)M!e~dEe zRMY21tTfYh3otFf&5sHb-gc3MYLgHARd2gULd#+d0NQMvRxywA{?pGejtW8TJ%2gM z^}qflX4Z|Fr8f=JQ^2js#>8{1UUJ^W$rOnJ)3MTd>#%~&?1%D{K^l}maO0T6OP&%3blG-ni{h3|q`}J)AK)QY# zbRq?0Nb^tS%(}cPbiMj;aen8DFBAZ_uLn#|fe1fFWMG@sfs3)2>mvwnh)%mvMU`G0o${q185 z`B?7qL=gb!$rRH!zh9gAP9z-wCK18ikAKT7zggJ28%zB2yq)v_oKT|&W2I712$WM`7o$vlGrOE z{8!4;kj!;Jaq_+{uNYdZrhjnLosF0qNKn#UJ2E)GZB7OZA?7_Sv%y!x$^%s)HsOhe zLH5jXmrg0&wrrzTQ&63LHw`;ev?t6zA_KcJEo&nEdom7>M4f^|2e~!{874rAOxP0W>tOa5P^C zsDY(dpeQN6?1gM*xM|dgEwJqP|G&bt0ADAE-&S{I3H~-i-8AEQHbZdpAEGybEjn^m zj)`XZ&BD@k!0z}3%6}4;v6}Z$uclSmy*=WWn#xr}@$>=u0$>J1lZa)zg$0xSR8zs(%5{8j`BB$Ns#4>G}Y( z$So=U-OZx~iif6=t0f2dZK1bPP4Nzz^ZhaD>nyVNmb_=GSlIS36fe&*xHgdozN#IV zswJ=jwhQ1mA0}FTQe#hZ++boDfxsXc-WW?+#c#U+002sjf!e70#{ON1%!@o-rLt3? zR5#+O6t1yR1Am5L*;aYl2;l21aI|iG+bHSCwDgq7b^#KV9$M5U^WD`0O3zR)g4IKb zr^*SsdT%j(t0y0*9hj;mumZLVa382nbz_sW!qPF>eq%%{&14FjcyZ~LXPEI+MBUx@ zF~KQ`G&HWDZFNT;TYG>YOf7_L7XX(A(chSf-jkz-V}HG%`mdL=feoJ<&C2N*4(Ia# zi1(OmJhcAcKid8m*e?J8xOn~9RUY=Wy<5e=_il_LBFNCxBseIbgbgi9h<4PQ)JrJs=nIhAy_ptNUFK9EF&A2aO(Y~Kz$>lXolZP(}j4HP9zx)x2KNm~E_002ovPDHLkV1l!9 BU^f5& diff --git a/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow3.png b/Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow3.png index e10cff828eaca524427883090f88e0a16bbc1ae8..7977b29f0cc6fdce99b0fa912ebe23b2a3fe692a 100644 GIT binary patch delta 849 zcmV-X1Frn?232wxgW$ zfy4KAt}xF1c=dSBnSwYI4u^G&@dR{jqwD%BsARdobECGH+p&Lprmt(pI?gB!g zP{rsPe$UASU< z+TQ`mWU^v~zu&V@CX->h2kru9=M!aX5T~GPn^#X(jzdWWcL8&y=>?4NICO3EGF(bQ zNdv)F z#kJA?2+Yh*+x`wPO^lk`JDStstZwKVqb(pFk5kP8z3nUoRr9(0XbT{Rn^4+EMKyh0 z4?>R%%mV(mAK>wLQ0taAO|n+2!PP$Pb{l!UUVl_?)Y0bqP3AGMa43r*a>Kijy47m+ zYHLN%OP(Bx0GG>!oOfzP($1t#6y0t&yuu&39EKDYDF9MfqyR`^kpduvMGAlv7AXKy zScDhAeLWfs1~J(iXfzs#tQ5a$UwYR&_k9tc&xe}LCUQS$q)7gY?9|q1|CbnVqyR`^ zkxBv}g+&U06c#A}Qdpz_NMVrzAcbXU1ds#M&*>i#vI-<^?}6$;GBg6nfhjpe-DPim ba3J&-iPJcFc2Y^e00000NkvXXu0mjf$CiNq delta 1117 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 a*Z&1WAAozTG^8U=G(fAZq3j za5#w7z+g*kRqAzPCHhZ-yrUl@PsgY{#|1s$tkh+4{1mvGRt5$Ie7Pgg&ebxsLQ E06wu-kpKVy literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP;jrO zi(^Q|oVT|(@*XmfU`=eg(NZ|0(N6hddRxz7owSbqKU9jY+rKU;dVJ`1)N8fM`tR3M z>TT?wr_|5y`QONt!RX7lrC}LEltVCs?gGsQu?r#&+!gTe~DWM4fngUnA diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/full.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/full.png index 34c51d7c3d6a3b995f8df92ed1176e988a2ad8cb..73b05e9b2a0e57f6bbbf74c2203f6a234ab05f53 100644 GIT binary patch delta 412 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 diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow1.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow1.png index ba95fde9e59c54dacd0eda155231ef640db07f41..defff91bc0186ab4955ad1c16e520e2a4d9e1945 100644 GIT binary patch delta 596 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 diff --git a/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow3.png b/Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow3.png index ba95fde9e59c54dacd0eda155231ef640db07f41..defff91bc0186ab4955ad1c16e520e2a4d9e1945 100644 GIT binary patch delta 596 zcmeyv@rGrBaylaqHE8@!#WJ5w=>1Icja#Hr@s53SCOm&p$Vu)N{t3ajI9Uja2WQWA6&ZojZ4| zlFwOmT1k{`!n!Ht5o~wjuDPF<@(iNW-R&wKFCvnH~6E7}ix$bf1$~^U=x2OVWZKnanU*s_JU< zGe!M|qq*SvyT6TA<}>T?INfCF_Fm)Wt-#wMZ=Y9atk>@89UWAEWb$hM=6$Dc2OXLG ze=7fi(tqD7ip5wOUw{8C@wf3>{lb8P=7R@zGa7d?UDmgGb@`V+x3OV^nN7&wrEaMO z?_wMNANU4z56DgEc!l|a*O7A;w0O;tUNAZ7$H#xRevyxpHoiDyP;&bA@8utVgOMhtD2Tdy13hj@jttp$flx3}@yVSk+ zoO@;_ezz@r$eZx9nG>Gx%ei-cXU^|;e#|hR`Q>M>vi^E z_UiAJ?ZEhFL%8RYDv1&{X-NqW-@Rd(rb!uNgm$!q(uzuB%pi;zge0h5d`d^U)2Y*iz$8pHd6`N&yS2tNaJDYIMrC}IsFnea&*w1?kR9?8b8?K#Ax0pF) zx^M`Uk-JSHb7p=7+NY(DWwv3k!R*Jktk{Y1uYC%%Jna*;C#qR^a<=oI5V0utB>ifh z^Q7*4$ce?|pO1QZB0JW{?rZibDGo(5)Z= zK8Qi9f&};=2CWJb;DZ>nYQ!f1O@cemG_At)|7FdB-!T0t#l6Ca9|1uEd=P_H1qtv$ z3|bW=zy~pC)re038ic0Kn2joFb+xykN?KSDLYKsfw(fVH)t)ocOV`9VF{G3RT%j#( z$;x=!i+}px?L>B+LQjFbi7BjP<2Pc|qfUDaV^)%3QhD#Tol*R?Yg-nbHF>;|$gVp9 z=m1_v9Mr}}M(P;c#s+c6tCnS*_>mRG(SOrkq+gmMs+AmlkNztr~F z?GHy~gmWo8p?&y+lqCRI0IpYCJLBK`uGiS(GIG(In^-AJz?UVfJ+G}fIVUTVz$%ck zXn%R^pRU{5QCw*N$#V+aU#kw&0ZXKIDN6vQl-op7+qMZ~OgjO-lhP63{rwmFzI+3D z)!bDNC@&RCogfE9oll=)TVD3Rdhfng1R z5r7qx`c~=eLjo26CIB`7MgUd-W>Do{djg;)0JQ z6*;7$Tg*BaI4*U}(9bY!pSJu$z`S4bDIzcS-l(iP$6i1E{|~m-`Q`6-exLK2hja4D zlzYJ|MM|w?y;OuMez{uBU1q?OSy=qspr-QJWk)^#)5kgH&S>qr{I+c6_16!Dd5=6+ zF=JDi>=||YUcO%HcDv)}wge#c zZ1#^9aohd-txmd`HiWHKjhehclOeQQ5-XO~zVo6cCoaA6gXaY4g@q5}d4Ak`@ni;& zdGNQ+xxck7ejeAE_te|WKVK~wu==XnZHDXS4c8gxaS8utdlPz2n!~+G+&PZ_)z@Ds z(gF24p>ud1^c>L2ZTMB&u>JSWm~)xD5B44m@o98g_+TpQs;jS3q!-xne%pLteec9X zOYQenu_a$p`Cgs*bn4Zy=pSC|9xp5`ZeK5S(62dQ>kP(#tvCDxw2sAp=Wa{Q`lqkZ z3iCsS*aSPDPHBbOIb!AxyA~+rF-*U*=+g`j?tQ9TBP0$;-BppD`p>UGcA@YzwuOs6 zh&-@9qIX#QqvnCNTUYo#Ys$~|y~FS|Gho|Zzb}j$k5BD?a^q7pFo7_5y85}Sb4q9e E0C52bHvj+t delta 1110 zcmV-c1gZPy1nLNoBYy-jNklVH1q?ZSg zxV(@Mad{wdOC(hAfCsmdNIZD(fJP$W#Vz8Y)sQOEHk6_&w1iTWmT=D5%go4MsgO8Z zOf$36{a*HD|FiqeerM-=|34Ru1i?8MxWA;2I)=C3E;Hft z%?C}L=RQ97vO#KU6MGhz~PVYg)-CAklRofKe%wdD~n&b0A0XiCfR#Sj^X%; zxwcGR-v~em!GES{A`@|pF{aXZWf6G+9{x*RwXt#S66C&kDz#0@1sIeunYC3_=tT7NsnC<{V2Fzi<8npe>rF;b*O%m{d}k zWWPg@2LyS*cLaGrkOu^LfRa2wcsyX|xth7%eW!Hm%70liHXpVMGSl?Mc_WSDv(($@0#xXBIdyK9MxT39zf`*ij!iXph(3H2vk>Ny`!ykbY<2|Bk4#A*rlyft@zOO#JB1!V z^?#UP{hM}He(EF%56iGVGv-98%klUe>vhG&kmWf1(aSdK6&K|fMNhauiOBWMjrGMM z*DH5{KUvD=XZUG)TnPdJe9#7^2n6s!8g$*Z|Ed zF3PXG76?aep^25WPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0#`{yK~#8N?V2G>LopDBAE;$^%#wgcOpsZ`+$55O1c5*iEQpB- zumpubkdPpea}(GFiG~C_W?$w;{>OEB>)K^uxx0?`OD@+ucYojddfToWnKF$=V^XWt zve9UiRVo#F`b)iD&+FG48N7ZL>31vE$kC`U^YKsj1g zZi7eXU2hv(hE?0xs-#zda?&LI|)5m`->d5<(HdCctcQmxOX?!@2`p z670}MWPdQS=!efk=j8tnMz9lnp^b=ukVyh4M@tewIa<`O$!Xs&NUs3pXh{MnM@tew zSq=P9@`VKIZLrm9O=vm8ve)I;z73jt0_6bH$ujd!P#0kC377zq5`s7c&CmpEp9C&~ z>Ho%u1u&^3=eq(D9|DXksyy!sBIbSbjBPK zH-@5S$hl)?zGai?f99Wib7$`T4?|=kNs_ETXt>gRC$HvMbbo3-AfCuI6~6uyn#fDH zu&o#C`Nn(C`u}wOtuy7Fa`ag_7w-u6l8s^aJBIKfHsYUO-ldCjd*T0d)f!Za;R>)Th4;QbsdC0X0xXGe7|~ zP(?F90X0xX^#;h^54icV@06VDou|uWea|zDyjxKH2!GHFP(Te-(F{;P4OGz#P(Te- zQN00ZJ3?)j>dSur4fg(>r$=PH2+0M-0J!;+H}10=te(kEHB~IEg*{7yJ$y<|0gs`- z9Vk-(o^*0BkZcqLLo6mH@V-fsw9g)sIFr0{wH*L$3fM9;QoMaV!LW}EG&R;qp>3axg5{s*kNW?dkh@rn7+Is+o2&@9* z(=%+UDT#p$0O1*S*geJ=?Ijx+`rCmv0^rOa&VT+P0{~e7$OJ$(082j}Xsdu@f8lO# zUw5$iV|Spbv5t(-F6#2K(y-*?f@T1m`5WyA1dG*N+48h=NJzEuZ>Lv8RV;(B3c#5^ zoc%)v0I~p(34m+>hW>V-?Fz^H82UUpa!roD++AU`DS#Dt_*Yc_9-tYZfEuWx8K8g~ zsDGjvpnw{vqIv_U_X{{X`eo${{{Maf%4h~Cpa!aF1}LBgs%Qo%pa!a_-T>+yBkkAE z)o#@vq?(qQqZgd~+Vo_it+bL$OEEfTRzkgrq9DN@B8CanrvPLGAS(cw0mu$Oh5)hz zSe>KPN5J`72e;WcnN<;MX?s2Zo5dOBm1Sl^RMI%<@-B$W!H6{2`-Z)G`K+bQ?OpPW zj-lKpmdHB aLVg18pkNYXZ|aHw0000 z6*;7$Tg*BaI4*U}(9bY!pSJu$z`S4bDIzcS-l(iP$6i1E{|~m-`Q`6-exLK2hja4D zlzYJ|MM|w?y;OuMez{uBU1q?OSy=qspr-QJWk)^#)5kgH&S>qr{I+c6_16!Dd5=6+ zF=JDi>=||YUcO%HcDv)}wge#c zZ1#^9aohd-txmd`HiWHKjhehclOeQQ5-XO~zVo6cCoaA6gXaY4g@q5}d4Ak`@ni;& zdGNQ+xxck7ejeAE_te|WKVK~wu==XnZHDXS4c8gxaS8utdlPz2n!~+G+&PZ_)z@Ds z(gF24p>ud1^c>L2ZTMB&u>JSWm~)xD5B44m@o98g_+TpQs;jS3q!-xne%pLteec9X zOYQenu_a$p`Cgs*bn4Zy=pSC|9xp5`ZeK5S(62dQ>kP(#tvCDxw2sAp=Wa{Q`lqkZ z3iCsS*aSPDPHBbOIb!AxyA~+rF-*U*=+g`j?tQ9TBP0$;-BppD`p>UGcA@YzwuOs6 zh&-@9qIX#QqvnCNTUYo#Ys$~|y~FS|Gho|Zzb}j$k5BD?a^q7pFo7_5y85}Sb4q9e E0C52bHvj+t delta 1110 zcmV-c1gZPy1nLNoBYy-jNklVH1q?ZSg zxV(@Mad{wdOC(hAfCsmdNIZD(fJP$W#Vz8Y)sQOEHk6_&w1iTWmT=D5%go4MsgO8Z zOf$36{a*HD|FiqeerM-=|34Ru1i?8MxWA;2I)=C3E;Hft z%?C}L=RQ97vO#KU6MGhz~PVYg)-CAklRofKe%wdD~n&b0A0XiCfR#Sj^X%; zxwcGR-v~em!GES{A`@|pF{aXZWf6G+9{x*RwXt#S66C&kDz#0@1sIeunYC3_=tT7NsnC<{V2Fzi<8npe>rF;b*O%m{d}k zWWPg@2LyS*cLaGrkOu^LfRa2wcsyX|xth7%eW!Hm%70liHXpVMGSl?Mc_WSDv(($@0#xXBIdyK9MxT39zf`*ij!iXph(3H2vk>Ny`!ykbY<2|Bk4#A*rlyft@zOO#JB1!V z^?#UP{hM}He(EF%56iGVGv-98%klUe>vhG&kmWf1(aSdK6&K|fMNhauiOBWMjrGMM z*DH5{KUvD=XZUG)TnPdJe9#7^2n6s!8g$*Z|Ed zF3PXG76?aep^25WQx{jql1nxza8-i#ZjF(v4-9*E*<*eb%1t;ulh z(@(h%-|hZSoyTx3hyjNhED|r6zr=&}W6CY<`N)v;l&3B*C{zLHSO!m5KbLh*2~7YR Cu2;wa literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=*F9YvLn`LHoxPEl$xz_HznPrN z7BqHNs5P}|CM-|y(9UVR8~-FCQ%Li*QOf=A7nyEt{{3SSad^-W#L&p>#mK^^!75;} ofJA}6;xl;uGvU>Ee3MSRaj8(EX>4Tx04R}tkv&MmKp2MKrb<;R4t5Z6 z$WWbH5EbbtRV;#q(pG5I!Q|3EXws0RxHt-~1qXi?s}3&Cx;nTDg5VE`tBaGOiPeENGIZAF25=UUJ*n;&3_1D5;OH=W-$xT@pTU$ z-|wP4%e(H+F{l(w2KYqcIi?#H@dokirloV> zj5;c)!a|gGjeisqX*!R4_(vUoid-_eDq!STKn*G+#}EDozk6#Ir>EScU>xXuvF(p> zAg~Lx8n*p?Y}>69!2b+fX&ry93B*20Z*;Wq5iqn3TwHfFc@MbU0Y;v5$&eh$PfI8k zf%h}|raUlw3ke?Z;bV*G`2j>h42`(Cj+33gs008_+L_t(o!^PJz z4uUWg#__LAgg4gN!P$Yqa0o|F;pprEoV|m)qq{5d44SY4V_9{AU<5l#E9HlUBkaSQN2aN|}1KJdu_zVJx_KJjF+{2$;Of88%9C5b0VGQ0z!@Ukp_1481f zY?~`d{A&s%@NNo*ZY=$yvnMb7aXn|Me^Df&?!$KN6W3bf1FKOJy7*C8<^TWy07*qo IM6N<$f+QD8Hvj+t literal 16179 zcmeI3e{37o9l$TG=pa?9($F^Q2C-a~Qql9B&pz9Cb=;+Kx@6!Gl5}wjqnz)a?MrN* z>pM4g*0HKlSK0vsRsjh`8e4||X<6HK6x6b@t=-lFRXPfzzlkC}#@_k2 zU+lMR@W(VgONsq`-}n7~-}`*O_kDMN+@9W^&onizXrw5rsk_VH2fr=m-{lM7e|>E1 z&+zMtWY>^RQ45>RzXob@e+xxq-Y^v%fyp#Hq@=pBqezS7?u!- zsEIb~JI8)twWvy)b&wCRfn*1Ws$F9#&_C8QAdij6f?{3oYxHJB=pYUZ$&!i361tda zv*!GY@V7b4SS`6J#z>pB-3(|626`67eZ`ZdKncCT4pL+?Qj)RT zSf-YdBA0BE=~OJYG(~1W48%dg(4n2Zrd=|s8JZr|>Vzz*>js872?R>9YpypQuNhi5 zI=4Xt1*A1C^?_^>FnvJR(kU5qZi8D{S!?%(8ZIZN%9E+7yLOOK>zJ9EyjiXk@)`2N zy^0+vAQ@U}K+|Hre3kVU5n4Jra#dxyZct4q+Ni$9%b+IZe3!iezhnR($8rvub6Y&wy6g8YJ`>?};whwTe$nv6tuk=wd6ZHYFA4M{xIeDp^ zTj58M#juu&ONLL4OA){%6A>>{9;}#Isw%NVi)ksiEZ}o^nOeg&t^AstHp{v_Ap;#I zL$62@OjYi}-5^D(M~jM>>dUtcMUz!UEC+S7f=h9+EbV5UPTFn1iKW91w@31XSVi&hxw5M^FK@cwx)>e0uDx-=p@hP6 z*bO(%^L00#UuT80S%Gd!sqmzbVij}Dy(n-m0Pw&Wb^uxe9vC77b0^t3xEG%11ljHa zA-Aizml|$nh3ZnxlFC+RI9F2rU~BbgxukMEJt?JhV0NrFYq4dO4uO1?6lx{c`9w)J zPXnK9HWZ+EnX1w9vPzcT`~-D&I_HL9mU;acqfwB+HKe?&+^qUebS-R*N-5ADftTuB zdS%{gwHfOE-(7$oArZQ??W3h3q_7^AlX#kycn{4hPB$$miVQ1Jv4`CbmqYMK#WYuB z5#6F$RTY49=R%>Uvm)<=w<^V+UNNh_lWLxGII`xFhVmNasFa8R#m5wPRvbWA^uL_B zx%I<5nEx(w$Z7n4khy$5t9xRx&(7|lUh_swg#8!x0x8$`>|SQpSh;5M^Mhs|jiqz* z-5d))jNSZSFs)RhrbBqsN;PU)w%n9Z4IfvCh74C&nRko%TbX|NU;}(Eo_E0W6CFk^ zdesbw1^p_#mC?y;nW^#d9aS4}N|6-7oL$SaZR$ z)Ohm9qfZ~%x9q)z2i8xYI<#-m8Ee;9j2o_YTv)QZ&+&?-Cw+MQ-e-F6U$T759{YC! zUweOY-L;JH{{Am4a_HXR^r_>oy#3Wd*UnqN_1e50k=0K>@kGn6liR1K*4 z+;UsnJSsWzoNXQT>9ze`OU@q(?)zE##KP_CZt0UJHvH+$schF&^ZBuI2ezxk%+9hd%C)ATnUyZ-ROJF~yJa`ErZJf6L;Ejd4N%iRxL>|FZZ^V>r$UwUr$ zX6Ez5#sTo_-9i70=LWpY@Qo{iM_#@(cB;Sec#KapWqvt)$HMH^V-J4&C$}~no%rx{ zYj9hi_Va%To3EX@_|#-;@)xbm+{Haou;=LC@1FeRUl;u9gMZF6Y(5ulZEk<4`L2mi zL~nlm)i+Lmm)n2!8<)0kd3fU9W#4N*cFz#E`tW?p-@Il%MV)JhO$=$4&3$9 l_=#(Lr@p^<=lc27*_POjMO!!SGGA-&?(FeTZMc2szW}LG%sl`A diff --git a/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state1.png b/Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state1.png index 65254207165b957f648e77219eb234caf994a8b2..4130608cea1b0074f870bd6a0abf28dfa6bec2fb 100644 GIT binary patch delta 699 zcmV;s0!00oe&q#_BYy#fX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKp2MKrb<;R4t5Z6 z$WWbH5EbbtRV;#q(pG5I!Q|3EXws0RxHt-~1qXi?s}3&Cx;nTDg5VE`tBaGOiPeENGIZAF25=UUJ*n;&3_1D5;OH=W-$xT@pTU$ z-|wP4%e(H+F{l(w2KYqcIi?#H@dokirloV> zj5;c)!a|gGjeisqX*!R4_(vUoid-_eDq!STKn*G+#}EDozk6#Ir>EScU>xXuvF(p> zAg~Lx8n*p?Y}>69!2b+fX&ry93B*20Z*;Wq5iqn3TwHfFc@MbU0Y;v5$&eh$PfI8k zf%h}|raUlw3ke?Z;bV*G`2j>h42`(`zWf6z~007}hL_t(o!^PJz z4#FT5fZ?A`P2SjRICL-`!qHPWI(sk=(L*?NZb!Q6)COa#1s>3iGJJmsBmf1!wryXg zB;GU)rX+5yr7DGw*oJe349uQfINF(3kML9w11~y3x9Tx zlZargO&72SKb)_3QxczsUVjCAa6mV}7gr4k!PNpnag~4=JUSp2j|$Mhg9Ehipa4zW zJ3t%v3P^$P4oHRX3P_3n4M>gu49J0R2IRt519IYD0lD#yfD-r;u=Zkcug1uH-#$QX2umL1PlNG002ovPDHLkV1nsgG$jB4 literal 16152 zcmeI3e{2)i9l$R@3r&^^sZ5_|c-2|(qg|*c-I&~UrrLrQ%Cic$f zALke6EgSt~nx3V^{=V<~e!uU1zTf-4yFYGgU+?PH=9`)+ifZlYj`qWEm-V;kTKL~6 z7B9fB>$2TL21T{pVEr{wJ0?CwQQ_aH1B2#Z>`qbE(jH0C;=of#XW?w9TT#eL@+dG} zagbCq?e6!F9e2A_rQN+jh_SJ3Cm2?{i#k|e>>ZGcqjE@buZT2<3nFxo2BzdHq*EC~ zEVR2zent4(8fM(C(iC&F-Mz{R=o*amxjHo+xCD=%mRWzm6$p7aArSBdZg=r4Cors+ z@v=1U6@9Ge<6Y&CJJJk)g>@w%_DAn1hl5hPd)PFyBE#hKc~9Q!(exz4g+d{QRrRcaVNPPPYV3yVO{W`% zHq5Ruh@gzLp`|e}o&`)lFtnU5gRU{SmF10gZ>ot}a_T%;npxKl3hFFomc}+Km4cn2 zFx;!ysRPN>^Z`vvMeHi;s~~iBc9yEjb=w9tqiA{Kb72NGspY%o4MZgqM0l3>(yX86 zeFL0d^aVxE*T!-p%Q~FcGZ7y#O;Ho$H6I)-Xl{V#MK&n%oYRM6Ch7xTKZ;~ZbMoSx z>+qwDyqpjtE^XLWMIH# z7>*>tRFy8=4k=kbT2Z9bh}||6O;#1L7Bs+y{EDAt=>Y5V(HsW=9g+n<4TPW~g%ZIK z)P))A;)O11>nhhqdAzY}$(M*HSOr+F4=2&}C;9dX_fG^<%v;=|z&BbBvB#vk4gdp%Cne&5qz+c%*12;25b*olM zjn`+mR8s4~m+D7rB~|L_SxGm5)v?;$m6laK1nep)*Gj4LiIQxc1`*k6C_o7_b)&Uq zRV~Bz1a)RQ=Z0X0`Rp(t_d(&>=;UVI?YDBH;CVLqVyMW=9s$Em~FO09-m3$~~PG z1s}Xssq}Qmtl6E^^PIzxHJ3Eh)+i54nIupmOl4=40dz(G%bA;7KeWO8cbP*@D6s!`J+ zys1--n$|4u&ZuUDFGoX$9ah%eqJ1l~9zNKBh+h!A@ccxFQHwsc08)cd72e7i)=A)n zkxDkGqM_l?Y=#a++0agv;}N8EjM<~`0S7)?G1Z5w87Exz{P{S4)OPf7dPRJZAP5k= zNO0l#AX4T@FKy5=YwboE(8c(B)IT=5G}!l0Ktm{7oHEICAbhE zc#+`3^Fg!(7Xkz?5?pvbh?d|&fZ#=f3(p795?lxnyhw22`5;#*YSW_>b?FNHevhJZEJgi!BSnc%QPhpvcOHE0 z4vK2}QBQQ$K;gHq-hF)Z#L6WPFZ(O_2oZTMyqJHV&A74Co?xDB0 z>|OJd^I!hsL3iJ1{?z7?KeT}BuBSE~T=1FP=f@9eAFMxD?0Q)^dH?(AYfnsB-}|mP zJeL0irAgU04zN>ej<&xi@Ac*O&_8(PcbES1MDe+ax6iiEr@EJ~oW7pw+wEWT>KIh( z-%`Hv{reB^?Kr%ySX}zn6Gr?C|Jtr+eEjE^T?~$(Ef>_nf(B?XmqIExRyzdC#I3 zpLzEe$=8DC_T0Df$%X5Vx&9PB^1`i)5C3{F^!N`SeQxS_VCRGHtWB=Vv_Aj$M~-ia zMt^SH{*Mi3zP9+W>5-n~*0yWH_r-2%dTZadLyO-ywB^}tZ;pB9ojG**+1{>QSI&nY znH*Tq5!xV}d}!i%*zhmQ9{{^4i$?5zlCjnr09MUc0end*r-fcs%-p8{Zh>#{`ISVVuV*Rc z;=_vu2-bSB3bC)P_}AZG2t#S`7r5M>)f_fsy0m?|4?)lkDzFxvbLb}O4s17Q zj0pjl8A_??X!Ze8K{5BVQ;iC-%Jx~F~s2(i5p#iblP00000NkvXX Hu0mjfh8dyu literal 9436 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 nXYAxZ&0s4b(PK|I`T=@cMw+$i_EG->@F4?q diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json b/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json index 30517fd0ac6..cdbfb466b44 100644 --- a/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json +++ b/Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/ f141c349e063f7318d8c8a2417d840f0b2d06600, modified", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/ and modified by FoxxoTrystan", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow0.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow0.png index 414ffd9f3ee92a394adcaab92ef34f74bbb1afd5..5539fa6154e17c821e8867ca5f77bccaacec935b 100644 GIT binary patch delta 1468 zcmdlNa#v`AvN2;@rn7T^r?ay{Kv8~LW=<*tgU0!(6Ky>X2Z*%#2QLlMY7!GEJP|Ng zr=zQ5vfDxqQLo9F@>=yP9<(0+ZSj8Y;o9$vPHT^ttWM^+P;%Snn2O=tNKxkX9~R0x zo>>r{HqCIl$B~QM_Pu*)b~ScN`osFGYtwYuez-h}Oq*f$k?rG^Ww{0S)cH0ytr40p z+&}Az!bj!nqW$+Rp2vz+q}}jQecpNaNYcL6sbXoY!OHVg`c};H`{{Hmd20P&7_qq0s#aH12|9N6w`quAc^QoT{mzy4y?>WA_xAkqJ3k$NF*XSnt<^s=p_ze!fwRCPvY3H^TNs2H8D`CqU|?W* zGg(N;pOJTRqL2$SFPFmPWkOCYKw4q)OCkBmJi>aD?S$wV{EYk%f{%NoHD_m48uYYF0REKV#-O;LghCTAq(rKhIY zD(Ndt))RA>Tq341d6AfUy@EcHNjCcErrYRaa|lG8OKNd)QDyE=aCEi0!a<8;s>x;OD-ZN2N+5Ee&;F2`1er$v@I;j6D+c<;3S`ssECjyj{60r^Em6B)Ng z>GH_cSfK%4D>_(8!?8hzn<*d<;7?*)$8c&vuPXET%U?C z%wUs9Wce9sQO#j}{lmv!e_YOntT@l$T=JyX(^8Ug(;-fWdr@;3>YuE2-NR#c>uz<{ zKjzoppT2r7SZ5>GK3n>WK9}oy6KV6am(*>~dKLyZ?AdC;cp|!6xS=NN!<6{+orsi@qGIO8%wlkJ(vGVy``Q=;J2y!?0`prpv!XNwiwrJt6pXPJRvyL6guFw8j2{BLllB1Z=lm)1p?v=xmtW33KWpl~Xe#{s=zBUrhC}X&Q-g`* zfx_btl^-u-_<1Gbzd+8G-O=VwY;PDh@FX!$ncXX}fA#$owTj9AqAX508|)HYmM7YA zdHvO_+*-C74>qbETW1iS-uR-{)|};B^YZ$@)(D2WU}@7UEL)WQ_OHIZd#ku|{eiCT ziKWW?)}nlyxH67G0_Dltrz^Y#JbulJxpT_s)&3hFXT^j;J-=t`oF0Zh*JjQZxq4b5 zi<6`1@vfkeUEISxHUHx3vIVCg! E0BoaL-~a#s literal 10814 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 ZYxlTu#$ZI33;lct)RncBDiy54{s+=SrBna_ diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow1.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow1.png index 90131a48bf96cc8117ce389ac97229626c1ca243..a7a0cad53aff9f936f9dc456b55d44b57fc39e4f 100644 GIT binary patch delta 1282 zcmbQ{uuX7+vN2;@rn7T^r?ay{Kv8~LW=<*tgU0!(6Ky>X2Z*%#2QLlMY7!GEJP|Ng zr=zQ5vfDxqQLo7wQd;#Z9<(0+ZSj8Y;o9$vPHT^ttWM^+P;%Snn2O=tNKxkX9~R0x zo>>r{HqCIl$B~QM_Pu*)b~ScN`osFGYtwYuez-h}Oq*f$k?rG^Ww{0S)cH0ytr40p z+&}Az!bj!nqW$+Rp2vz+q}}jQecpNaNYcL6sbXoY!OHVg`c};H`{{Hmd20P&7_qq0s#aH12|9N6w`quAc^QoT{mzy4y?>WA_xAkqJ3k$NF*XSnt<^s=p_ze!fwRCPvY3H^TNs2H8D`CqU|?W* zGx;KqKO^sC1zs0sUM_{nsk}}sKw4q)3SRlir+M`z|K+ux?7*ipxqwe?@+>~>$tU?V zCx7MhnC!ssFu9rEWAZtEF;xY3Pu~D5#{f@TB_llpB?vblC$S_gzbMyM$tN?fv_fgJ zkbsgnL@F$`s5mn}52V`AK+niRX>y=|=;TZR*%Xk~AYfCGTj1+!<&jxjl3!G52NMQL z6s4qDIVGke2|)#OG8KwTT+2$V5|c~7h8HK6rKTuB1(P!p^U_mOY?bttCchPMm~1Sl zF*#9Cy1+|e?Xi8Du=wXHE<)0gXgN6*@s>TCa#F}OOEROvL!WL7+;eDY*dE*Z z^XGv&7(`WhoXywl-@`WDPeQ>n-Kk+7ll-*Psr&CUUVb@cDr?&2$o;$l^V!a?%gZzT z`snM+kBq_kN8+1Y12?dVe~moA)3E9&5Vy`{^VeS=nfWH&_^?-Uj1J3!EJJ26zULBn zMC#Ip%L~4gP2;XEeA&b%{_Ro7r9)flMSUfEqAxu<6lb&ZM4UmcYec=D$5P%6It*Xa zqzw z@x0A9JERLH=xq3XXtCwd`f!U5#xDnhS>3gzuCRT#<^CXlqnsf`Hw_7w!8osY1@3kW zhXiD1F>eXZIrl&4szu-9`;!yiAN+WCpK#)x&#Yoh0b6G4w}Cm3!PC{xWt~$(69BuH0%QOH literal 8214 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 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow2.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow2.png index ae12f39860f52ffc274a700f9d45e285625ff1f8..5539fa6154e17c821e8867ca5f77bccaacec935b 100644 GIT binary patch delta 1728 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 diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow4.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow4.png index b79db5f7893ce7908127d271a29bd3d13c6e8fb8..ea4706b1911f1825e785f39c9bfe83f1f3defead 100644 GIT binary patch delta 1570 zcmZuxYfuwc7~PbIA_tN#C!$W4cm9K#tEP!>Pn~$b{p>z~LP2pP#s#G9UY}a(+?y0DHpcnn%%X z;e&LRk+>f3_h46hhrHEN$|4++eJXtSR+lGCNBx17nx3$fH7V$xuxaP$)B^m#-}O7( z+QG8o!nqC}%vI(+OCO1su}Tbq4HK@-ukD+dI*+!l6NNl}SM8#guG@OAc1yq68n@VK zBtQ3H5z4M}9yq%9Nx_)#>HKqV=<7zMrY6UDQ_1?A%zZvpO0UL7b!NA>w#kkj;(2me zOG#x}al%E~xN=JBSvAg@Tf14Gb@1*KEw=C2u;5(VVz}hU*i&Tuai;ZV<)&NHk^j=n z?z$RINAXtx061x5Q}qDgJl_TyP=0U$0N9U_gY-ligA8Cu>=^UdWG*Ahhgzu-qEirJ z39iR1KQL}9^D%Wf@gn}S>jS)yXxrCGPE&*h|%M$Xii~l^fF(+HC7aMc5STh%XEhKq!pLAq0_&FfNSA6+wKEjCb|&gN1Ur zkcYq!EW+dvpFm*8&O;Qz1k6K(3W{0e>XU(RgZLOO42FbU6o>dCISL7Jo(NKi z%{cOK2#J7%&;k`+`G z!ZF$&NDgj5ZBe*Ui(*;0fsLybp(aoVhKKdfQ?~*D?OvQDGR3(5(f5}U&db~^n$+SX z>AK=pdw-Ur(^^GbzIOpo;N70ovYH>*Jn6TPwIppJ>ngosi5xy}9bzh5@7<>l@{acL!CPdec`ipZ~RH zI6cYBF0H0)tz-go|2UxY*^N5?OstSe04dP>FqR*ogvBcxqnI&|tMkwJUOL&+$0(}c zn0I8|Pd(mE`$4t5oUHQ$R)6jJUJNcv8KGZ1?QLQ-J0&fy4}7_c_NB9xnM`f##)ngG zuN<)$!U|ta-qCjP*l{JVkaL?HFNZ~Zj*cs-!doI5J?cICx53tg7)FN1d}(qp>*eY> zU7G4QE*Xhux1Aktm=kc8ky&SdowKN@^H_2Q@4(n;+QXu@yT6}mu{Q>4C$YRZ|<&ZULj) zcQ?}ZCmrp_!nDbm4RB%oL*K!&sW4IGh{gJWY}E!Qnd^z(A+XiHx_(XRh5Vtis~rrP giQZjy&H4gxSv#WnG=1xS+Xn^2#Uw~-qcY6@0o+YhW&i*H literal 8217 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 Dt^%_Y diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow5.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow5.png index 83797163f225f940ae731ded308e1418c5611567..b26c7be0b2da6c07fc5f962d1858683c3a6cd74f 100644 GIT binary patch delta 1449 zcmZuxdsLEV82<=jaxt$^*~-t)dnMo{;~;pKutX_c&Xpx0AO%Q3MyrHTnpPV6m6h{? z?vkgxO}nVwbn0emQ=6`xoRzjp3pL8NoVEtq+3D=;J?A~|d49L&dH#7{tkK)*oP80Q zqOdSdWLOx;k*5koVm<(P^qk6Luv$6x88NZnY+9)$+VAe*6tB)YnguhBg*&dz)hKw;4m06-bw35ytnCCtEtBQ3EYti^<)OfLwxV;td83<-9?2EmEg)o>2h z4Zeb11wX-h!nQaToQMmC^*B}ln9QRwQ{@t_k^zY%Tp^z(EL0Y! z5vWi`q$z1!-h3|wH;tbRy$5+IT&a+s%z(%cjI|7gIhG!9x~01sB!3V^C;vB|PX511 z=5^tG1y3%LnVZdJ%%hvanWoC*qnVr%zLIOMf>bgtZx>$)@};H`*$tbT5A4Qj|Vj7%H< zCLX!D!>Zl^EKv;w6!}f3FQ&HVHX&-&FRfqI6;9n-_)}+@6cF#^@UL^|mie zP0oJgq|icI3}vO4p0rAq2^&Q5t#64X5=R4y?66 z<;6F9dopqA&ZUIKc|Tc(ZVU~?Py!8h>i7>^BHFlakJFVu6aFA=hzRp9Y0i& zHM$%?FaRpyuG$9F+u|R~p5c0#Q;V91@1U-_GLbgOic!&*)(Z@1PIebR)S}iQDPG04 z3-#9C25iTDTJVxj_iDOO0T*pNk5|qNKN=gJc(<6jbyZARP8Pxm#y5ZLbqnb3E5Gk{ zZfLvi{i<`Du6cMYpX|a>qt|`4@mMRtpDQ{2U|QIFV`w#QDM|l7M literal 6896 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 UmuXw}IWH(c7MmcgiB7lv3lLLlQUCw| literal 8464 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 K>J(`?NB$R18wZsD diff --git a/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow7.png b/Resources/Textures/Structures/Windows/tinted_window.rsi/twindow7.png index 17304ce1044032ee392be2dcc63be90d6580eef0..a422e8c1526371137e017ed0c42b0ec483f2f93f 100644 GIT binary patch delta 966 zcmbQF_M2~lvN2;@rn7T^r?ay{Kv8~LW=<*tgU0!(6Ky>X2Z*%#2QLlMY7!GEJP|Ng zr=zQ5vfDxqQLo8&1+?l{JZL@s+v5G)!?oWToz@;PS)I&tq2#vDF%`qPk)q7&KP;4Y zJhLD?ZJOb9k0Tei?R)pq>}u?k^oR9V*QV*R{cw2{nKr}hBiqL-%W@0usq<}aS|c=H zxPR6ag^$YDMf>ktJdYKtNW0;q`n>b-k)(aCQ^nF)gO%s0^sSiX_tWWC^3?jzV(Du` z5_|1_ayv)Xrp|o5rA^?l(zFQ;9IT=ufla*{Z>==NCY9)I{m8%TAInaWBGH2^YCWFnU~E^T_+-H?i1H{>q{=S(R07vOlZ#ucqaSzMA|RA~nj21*pAq**y7rXvYK1#>bd=d+6nDHNBumX%l~XC&sOr>58{ z=_^fM#O^Tp1-r&%F%I>51$`u)Hu~tM+2~`l7^2Q4wK%ybvjF5?uo)21AQv|v52()y zs53XUBoV~3uP8`N&Q2{+NX-K}p-9Qz?%iYEaA2g=FZOhC45^5FJKK=A!9n1F+!KXH z*+2~k5o@6fhl5xR47S8p6;GCbH);N{^E$7$8Si_v?_BdoQR8bt3~QD$M0hi9n8uW# z%X%P+t6{4ML-x-a{vXxz|9kl}WNR|uP=g|23DNz9@s~c>02E2ET+p!!hF4-dbuSO~ R*8v^O;OXk;vd$@?2>>aBXYBw0 literal 4882 zcmeHLX;c$g77i)|*%W0}gfh5-*%PufkzENIhyfK`W~fvup_D9UAwfV91x0Z~2Nh{V zdk|$56|iM#+-Mg@)OKra8(hFfToKz5RKR`-h-tv*m{di@>kH@oQ-T&c)cWdpO+Cxyz%XwIWy#snkj-7LP*OL=_65226^> z8ScK=u~_}c%O?GP%(-c2vPX`(bSAd=rQOTdk5d~PpX}jZZ}+v^ZZ^~jpOO}S_U*@& zysp5e5b?St`RXuhQ9V@?P`iWokC^MDWSmIfj8`jedz1{#A_WjX{HqA*DcniQZ&h;Bz)@_$EW3&t3>HPUR)R( zw7RmiKHRyvUYDKa87bQ~P2lG1ebjpSyW;eg(!_&sNlSF4{eIdRm&=fWzEIR5Xikui(Rhv^K7Zd+|GlvHQVeUdQx;xOXQ0|z?j zp+DOVRoUmvTQ}a!Oz1f$tlXu{{>)Z8fAi}xgd>oDaRZe7UFeXpkB>2?Q*$F@TpP{0 zE9(6NCuXh^4SXE&=%refs-l@nXam(2HoUE}C+sBLWWiwX0Sf1Y){mtS# z=Jzt~)I}BM8}tpGMUT$m*mdga}>djnj*3 zeycg&Wc8tTJ8o6k@U~?1HuRN)^^)PSK?yOh(Hw`x3!V7*~A77nX^>OS& zpz3t*IdPVeccb04$HRSxD*VFh1h*7dcVK_Yai)hhqpV#sY17}{d*^N3)6v{&t#}yU zmCV|7GNoosgihO~qxD?wvORaS&b3r9PYnid3c7DCHzrq7i zGpJx>DXN9Us0>r^2yNA;2oNUW5#}=m6oD!Tjl)8htI^2i;Zex)r3gnt@SASsYv2L^ zIjV&rgFIfL;Tm`Z6D}8A8^vS-WHQk%q&Y#NvW2RsT>Z6Oreo!G$ODdY7!M%*g#ZhJdF^&7{RCp zQDZ7Crc^*iOjxYcX?X+!&_kc%ldA-Ret3nZj|IR7*#N7^R1$?Omy-v2XtW^-0HiOV zKlRW=fqjZBLN!XA8bL!6P=(fWAcO?z_gCrE@uqYn2pNq><-k+}R;7NiZDjgklO)*h9^-F7g z9BSl=0%n^+CDQ0oG#Z!6;LvQ^vmJ|Kh~gWH4YG0DiqPu)ToY zirl|l^>JpT@h?33YVjAY0H6mK`6_+~=^CW#s~Gqy}O9Ocv+_TL7T$E*ONp|Dg3=5 zSu{u1HcNpnS9nwpWgfkT2jqPHD3A4zp_Kv>ym?p0MIk)$`Y5AE(u>$ake) zKbY8Lc}y6GRBnv9Cd{0i`Q7^BIVb&^OV1{5C|gic+QNHhUCWW9yPlP2Y&lKHfdW&r zyuzl`24*E}bQnFAyE&;7Kkig0Y1g8O6!o-%A&%M2_>Zgamoa}I-K-F??X)NFyuCmf z*pG?-cBYwNbSP4&OD z=jzZl*&9JjL7S81;Y!WY{N^`ip*Id?vreBGPZ1S7*KOA8k6(RpKfk4G1uo5AefU*S zcQSZ5wGhvm8H|$|KeIhJM#*qhXp9DjvmR~yn&EQuT!0X-PO~y4UtJG}3=g$!^GN=doN@d&_xGEFC9o$>`{w_{e-%6G2Y8UwEZ{^S%6C z@4Uyk1J3~m`&j3PmG^81NdCv=^bL*pqvQv}zf`CGR&yc8W(9WV1?Vmujvo>pToM?Y F_6HOSG7bO$ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/full.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/full.png index f7b6e10f869a9ba3ee1d2f09f066f153b5e21e5e..5695bc0c26c731ad7753c4817a372db5d7479cbb 100644 GIT binary patch delta 406 zcmV;H0crlJ3a|r^B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000ic z000ic0Tn1pfB*miMM*?KR9HvtmtTs)Fc8M;qEP5V(Xvmny@AkUcmuEC89abz@Cx2w z@8J!)?9@CSsfP57~!&FvPZ#nO`PCCZi-t&VQao5rFUe^biCAjYF#_ z3L49@yaOP4mSyx|Xhl&(5ETGkAo=1m+U0o;pOifNR~&|+cUWd?&M5)J`|%DAfcXCV z>J?%>{h;KCovuz5z}xLRD}@6bG2!;EvmTQRNefdeun{X)Cv?_hRYh!6VEbwd2moRT zXf}DL(Nw?3AAcG-Iex1E>J~f+$q}fH>44V)aB{H%{5OnE2coe8ENqR5=}H@5C^-NJ z-~b$e1JDM*F=}GEss-TFO!Nil4UCOX(>gU)fFasgQ*!A4wPeD-N{$KF5Z$CKD6MPB zdQT1^7Gff{kkoBU6|in+a delta 1302 zcmV+x1?l>*1E~s-B!3BTNLh0L01FcU01FcV0GgZ_000ErNklm1cWW=*sk>-1S_6Ke zxx6sKg~{ImcyRMxB1E|()eV579Io5fm?)0(TKYI?-(rChkO~2?c*g1Cp6M;TnEL=6 z1-?KE3tt0DkTro!@bs5+7h!H~2wd8&B(vJ%ld1DSgn#&yzZ?t-+5=1Qp8EoC@f8?B zUjX14V8Y|~KEb;)XCdW-4;!P2;188(5O2Na-lBwyB{g@efOJ%p0Vq@yL|n3qQFd?H z$!y^Zm=~)6A~EnmDFsCjauHs>d>>~9h8sBkZxvVqAQ#?0cj$gT?7c$4bMRCZW_@T+ z13Cn7ZGXPDCV0h6av*yrC%MjT0NbIH7@Jyd0|PotqbUF> zDad^nBsSk(`mQOCmsQX{zy9?bRDWtIyaEsrL0mTaQC!g|?bcCocMX6L zwCN~MZr?{$ug&lE(JmuFR!H`A@2ay005Wizwz52GbyD=I>kc4=z%VS*kqq5#%Nl@C z2_snfnl%XlI-{F{hH2FUgc~PqR$EgXOCjqG;Xl?{ZS4S%ud1d%G*TVFtUb+Db)#t^ zP=Cr}#-3^nkdbk|`QsD-DG{d`>NZ;V{>l$53dM5uWG;6W{R*Oq`JZs(!L?eX<|7zyLw}$h@bOnVp6=hziKC~Ft%t*BUwVp<=7!jo z?4sb6u$QV3Sq~=|)D9-N{B0@T-*AG%GY9G0 z{s=iMsA&~2UcSbHTj1h9mjQTe+rt?E93k)daka&Bi@NXlD8)@O_N{7 ze&OSeK`PP%e-X$cdiwi@MqXb6t$#U`cz}WV3t+~{xltUWRvVObk=v$pG7 z4r4P5+FP-ix=PuEj4v6*f#@_{bTP&l06lMK!x0FJkb&~g!5PsmGh^7S96rL!b>?aw zYtdQJB{dF0fK0MkCm3TMv?i}5#Fjvrj2UB~b0B5_g8KMY9?$;;gjcr_8V_4L!Ty+<)xbo%zAz4P%15|Gt@d zGqYJqN~YWGK5)~E!C)YYL4^Q~M#Hq5&8G2-(C_!_Apn9O4u{-3Kefn!cDrqY-@Ry` zjz%MNr{<4yaK3YO%uO%euvY)m#)Nl__)%lg~*$>0CKb4`kB0c`M;4akU0 zqc(tkW2 zCzHvf^dTVr=e=HUVF3_4sD%JN8Q>DP!zB}k0DEtOp9H_&etNMGaxewa&6nY~+7v?W zEzNUAxPR548kRB%QXw=`3Y$(Pyv7hX;bty2c*=wnRbj360$F$V))2TGJby(MVgc+u zeU{-&Ks#aq=;_Yf*Sl5)5ei!cs=`uM0nJ1K*au4#fPJu(T7`kEH$?%;XB1OdO0lHo ztt{7{f7Rz@=`x4{un(3f0Q+F6i~#nA>8VLkEoOk-O|~-LJ+Q_f^+tULSP}9}ib??} zwefV#NfIpU-2-b<)K!AiH4UDszZZ|u>Q)IZ6#Q$TN&p)?VNQ?dF)1pBK=41E4gSZ| f-1I`00ZH-*6;1wq5j@1C00000NkvXXu0mjfL?cvp delta 1672 zcmV;326y>|2AB%TZkN08pnU9 zE`9ImPG+VvSuc}TNYsuuWK~#W6c;g|E&&ly9~bsb6hs(sciAWkqO!10`XC5KU0e-b zgUhmB5@862WMd{VF49O9c0^Ri1XoI;F8i!9QeB~rhX7{V0&JgG3lEaZ zXBn_cghF5f0e^6;@i`wK{S+w#S6#H8i}Phx8~w`E@eqInw|m2Em@0G6;6K0(AQTwF zCX_&6P_!fzquQ@m_hZjR7BEwKM~OKe0(chKaLZ+zcxHANkPrj`)O{F8@TVh}vwO#Z&TY4=QO837&*2?=ihqZ!99xQIb~4WH9S5+V?ElOE zn|e9h>KP1Su+y8=%c+&^r;vyyv@hn5X{U~d0FKKLDSne50uu%;ecg(O0KgOu?~i?` zoi{cDBt+!#tqIe3?cX{O4*`T=wM_E+OK!l|9Gt~N03*8TKD)>!yF|U!9Vcf+)Y_O< zfQ*>|^nXr*LUldhnv-|k8g{rwYoxl(ezKpF(++Q~`y2O<|CO)9X)4d=l;e3-C`;Yx z=Hm{nLm&uT=A3DrlpUc}fU?=ge?H$0_&{1G^-n@uFjRHVvWSTx1PdD9^PQm00{YD8 ziC2a<=%QQ^vs05?Ki;GFd#p~~DHC=1Yd)aHa4J<&4RW$V1s{Df-K=e5QGZd-K& z!)Au#K}fXg(OalnKt0V`pe8(~&N1zxj2>}KcqF9-i;zu9Mvv@;43Kt!q$<5Klm+A1@56M`@z}+XK zDPSU;=Fueax8wII?9C=Y?L z2O8&;&W-SzV79lgrG!kIDy&CGqdSH-@4M34twJ0JMb7cU!qBe6kV_ zHC;#tu&@UD90*$cB3^^<4nIa9B!}k@@!8~I0DgPHl_W_roGSz11}@{y2_|Z%cz?L> zHTpuEc~R#VA;2A9M*Ej7;ZU-3oRK~+PVK>#DJ&7CvowL4bio!pg(O#8cp23*ufpkg%)iP43_jlc(SHrx=v=$J zb?X&8S2;qhn!tm@Eg;t5_iI z^@MggXcM4fr6~%7t1hnSqFfQQ31A3;X(lNq3Y5KgOn}gXAuyC&8~w22;eQJ&FNmmO z<9#=cjy=4{I;+G#haTg(nU{Fm+D~a)up%dG--WOLTZKO!4tX1nj9lnhKh(wv` z3||DNew}%O1tZD3pM3;CPUy=Wh>ZaC&_(nhZy*)|2qOo;T~}|>&K(N@q&N$JiA7H8 z&ESuP00fdr;gUD?J4o>mpnnaYfCZs9cOV{LjFWY^JsREr)sAtfu# zOk>F+)`~2r%aIZg~{}xv!5na%s SNQM9a002ovPDHLkU;%<4c>$>a diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow1.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow1.png index 9979f28e945787ba4ffab8d70010c70209c7f274..e395832e8e39f6a7f69e6c36c189a1f45bfbbdef 100644 GIT binary patch delta 715 zcmX@f`IvQrNGZx^prw85kH?(j9#r85lP9bN@+X1@buyJR*x382Ao>Fr%o3 zR|5kBQ-!CCV@O5Z+gS&*g&jqXsh_Oc9Gj&hdYz4BtK8)^GaBT+Jx~>2Sn=VByn

    8g6oNhQZu{wxx-Ib-us)7V~O z-+SGZn>A-{CzhEj&)__4FfGV$;T5&M#|+mvzA-G)c%@-!v*ydnt659_ACPlcDz#42 z(geuYH?56OzQMd=-`u(3;f8HNvzHpnizW0X@GrQ-u}<@*{hBY4mUnk@XS;}<@=%+u z$TR1N#5YNU?Q#3+7a!TtKYwn-POfa0YKHJ#;_oyK`5s(+a{2TIw+-75e0SXBEosqf z_{R9bpIa+md-dcu>8FL|AC`I;#;76PT;d=V@~<&JVD`+}8*X{b{1!j2=Y9R+lt!5YOV1Yb zCvNq;T=Kl|!!tH7u@kxm?|xcdHhk8*`8z`;+nKe~&!#u{l+QcACw(sC69%nbFRtu&H)7W5)=Te~_$xhuS!1eKb$JU{+?t$y+5y^Q|8?fQITpMUOo@wIBv)vSr@8=G$PI6^!L3WFGifb2p> zsIQ@cQmVhtePhIw#p%qg>i3+|s~=zgn2@xq;L8KUk8AI{h%6PtjZlOq~p#u6{1-oD!M&HWrgUS7B7#0x#fMTMv@iNrAN&)<7a>@oC4wOMN0_(xpirp@Emn{O zf?%jkXdW6i*f#g1+1q4xX2*xwT)b_hXE|pi`+1o&yXWlpw}0Q6Gkf^`&Wa!i(8=)C z3o|m~?@#{pn#}l^%-~iq|B(|m>H>~l47(HD#(S0>wk;2E!8gIofd5olU%LVQvEGCB zme|7$0{XF82^{F?1Yj%}fDRylo7Pg;t^syNT3@>X-}FsT@hj}scDViEE&vzvZ}X(| zgtO@vs0VebUVjC{G`X|zBj?ESR{jl=BGnRoq5BzdW$uF+fS=tJVnVQL?1gXm;o%)? zfLl8cA=7aqL?H}Qa;#`ReD>Hys0cQ|7KE|d&N)uECA z0R;Wh`q~ZXxlyABIJo5dum7#5dE~eUbce@DIeqO0*nbnf*L3O|I>n{yJ~hh8NfqLt#G1JHyU%PHk^io(W z^KEv5_aA-2Qhk;Dmx-q1R3N<&I_}Fy9i=Nl->&XX{@N~%jBgzcu+JYf5$WCn+r+fkp*i7#+Ri2|NN@UGA_}X{p04k@zwn@?y zOfSxc=W$1wbTiZ$kbcZ^vWVk(6s!^$(SJxsDvZKn%*}B*e`Y?BJAC zT0I&Q@fm4FE+SF}Y&fgDI0}O+LRl@N+mXk$D zKUOELOsN@-+`#4hCC1zwU@4Q1hAsh?4Qv99{|5Vh^ZqR)8U`HA4b%v82a5Ou_vlqc T5^UWA00000NkvXXu0mjf8ooA= diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow2.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow2.png index 7be507678d49517ac92392e78b96843349952311..31bfc29cf0acfbe6522db842e91025891a0ce052 100644 GIT binary patch delta 749 zcmVy+<)xbo%zAz4P%15|Gt@d zGqYJqN~YWGK5)~E!C)YYL4^Q~M#Hq5&8G2-(C_!_Apn9O4u{-3Kefn!cDrqY-@Ry` zjz%MNr{<4yaK3YO%uO%euvY)m#)Nl__)%lg~*$>0CKb4`kB0c`M;4akU0 zqc(tkW2 zCzHvf^dTVr=e=HUVF3_4sD%JN8Q>DP!zB}k0DEtOp9H_&etNMGaxewa&6nY~+7v?W zEzNUAxPR548kRB%QXw=`3Y$(Pyv7hX;bty2c*=wnRbj360$F$V))2TGJby(MVgc+u zeU{-&Ks#aq=;_Yf*Sl5)5ei!cs=`uM0nJ1K*au4#fPJu(T7`kEH$?%;XB1OdO0lHo ztt{7{f7Rz@=`x4{un(3f0Q+F6i~#nA>8VLkEoOk-O|~-LJ+Q_f^+tULSP}9}ib??} zwefV#NfIpU-2-b<)K!AiH4UDszZZ|u>Q)IZ6#Q$TN&p)?VNQ?dF)1pBK=41E4gSZ| f-1I`00ZH-*6;1wq5j@1C00000NkvXXu0mjfL?cvp delta 1672 zcmV;326y>|2AB%TZkN08pnU9 zE`9ImPG+VvSuc}TNYsuuWK~#W6c;g|E&&ly9~bsb6hs(sciAWkqO!10`XC5KU0e-b zgUhmB5@862WMd{VF49O9c0^Ri1XoI;F8i!9QeB~rhX7{V0&JgG3lEaZ zXBn_cghF5f0e^6;@i`wK{S+w#S6#H8i}Phx8~w`E@eqInw|m2Em@0G6;6K0(AQTwF zCX_&6P_!fzquQ@m_hZjR7BEwKM~OKe0(chKaLZ+zcxHANkPrj`)O{F8@TVh}vwO#Z&TY4=QO837&*2?=ihqZ!99xQIb~4WH9S5+V?ElOE zn|e9h>KP1Su+y8=%c+&^r;vyyv@hn5X{U~d0FKKLDSne50uu%;ecg(O0KgOu?~i?` zoi{cDBt+!#tqIe3?cX{O4*`T=wM_E+OK!l|9Gt~N03*8TKD)>!yF|U!9Vcf+)Y_O< zfQ*>|^nXr*LUldhnv-|k8g{rwYoxl(ezKpF(++Q~`y2O<|CO)9X)4d=l;e3-C`;Yx z=Hm{nLm&uT=A3DrlpUc}fU?=ge?H$0_&{1G^-n@uFjRHVvWSTx1PdD9^PQm00{YD8 ziC2a<=%QQ^vs05?Ki;GFd#p~~DHC=1Yd)aHa4J<&4RW$V1s{Df-K=e5QGZd-K& z!)Au#K}fXg(OalnKt0V`pe8(~&N1zxj2>}KcqF9-i;zu9Mvv@;43Kt!q$<5Klm+A1@56M`@z}+XK zDPSU;=Fueax8wII?9C=Y?L z2O8&;&W-SzV79lgrG!kIDy&CGqdSH-@4M34twJ0JMb7cU!qBe6kV_ zHC;#tu&@UD90*$cB3^^<4nIa9B!}k@@!8~I0DgPHl_W_roGSz11}@{y2_|Z%cz?L> zHTpuEc~R#VA;2A9M*Ej7;ZU-3oRK~+PVK>#DJ&7CvowL4bio!pg(O#8cp23*ufpkg%)iP43_jlc(SHrx=v=$J zb?X&8S2;qhn!tm@Eg;t5_iI z^@MggXcM4fr6~%7t1hnSqFfQQ31A3;X(lNq3Y5KgOn}gXAuyC&8~w22;eQJ&FNmmO z<9#=cjy=4{I;+G#haTg(nU{Fm+D~a)up%dG--WOLTZKO!4tX1nj9lnhKh(wv` z3||DNew}%O1tZD3pM3;CPUy=Wh>ZaC&_(nhZy*)|2qOo;T~}|>&K(N@q&N$JiA7H8 z&ESuP00fdr;gUD?J4o>mpnnaYfCZs9cOV{LjFWY^JsREr)sAtfu# zOk>F+)`~2r%aIZg~{}xv!5na%s SNQM9a002ovPDHLkU;%<4c>$>a diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow3.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow3.png index 9979f28e945787ba4ffab8d70010c70209c7f274..e395832e8e39f6a7f69e6c36c189a1f45bfbbdef 100644 GIT binary patch delta 715 zcmX@f`IvQrNGZx^prw85kH?(j9#r85lP9bN@+X1@buyJR*x382Ao>Fr%o3 zR|5kBQ-!CCV@O5Z+gS&*g&jqXsh_Oc9Gj&hdYz4BtK8)^GaBT+Jx~>2Sn=VByn
    8g6oNhQZu{wxx-Ib-us)7V~O z-+SGZn>A-{CzhEj&)__4FfGV$;T5&M#|+mvzA-G)c%@-!v*ydnt659_ACPlcDz#42 z(geuYH?56OzQMd=-`u(3;f8HNvzHpnizW0X@GrQ-u}<@*{hBY4mUnk@XS;}<@=%+u z$TR1N#5YNU?Q#3+7a!TtKYwn-POfa0YKHJ#;_oyK`5s(+a{2TIw+-75e0SXBEosqf z_{R9bpIa+md-dcu>8FL|AC`I;#;76PT;d=V@~<&JVD`+}8*X{b{1!j2=Y9R+lt!5YOV1Yb zCvNq;T=Kl|!!tH7u@kxm?|xcdHhk8*`8z`;+nKe~&!#u{l+QcACw(sC69%nbFRtu&H)7W5)=Te~_$xhuS!1eKb$JU{+?t$y+5y^Q|8?fQITpMUOo@wIBv)vSr@8=G$PI6^!L3WFGifb2p> zsIQ@cQmVhtePhIw#p%qg>i3+|s~=zgn2@xq;L8KUk8AI{h%6PtjZlOq~p#u6{1-oD!M&HWrgUS7B7#0x#fMTMv@iNrAN&)<7a>@oC4wOMN0_(xpirp@Emn{O zf?%jkXdW6i*f#g1+1q4xX2*xwT)b_hXE|pi`+1o&yXWlpw}0Q6Gkf^`&Wa!i(8=)C z3o|m~?@#{pn#}l^%-~iq|B(|m>H>~l47(HD#(S0>wk;2E!8gIofd5olU%LVQvEGCB zme|7$0{XF82^{F?1Yj%}fDRylo7Pg;t^syNT3@>X-}FsT@hj}scDViEE&vzvZ}X(| zgtO@vs0VebUVjC{G`X|zBj?ESR{jl=BGnRoq5BzdW$uF+fS=tJVnVQL?1gXm;o%)? zfLl8cA=7aqL?H}Qa;#`ReD>Hys0cQ|7KE|d&N)uECA z0R;Wh`q~ZXxlyABIJo5dum7#5dE~eUbce@DIeqO0*nbnf*L3O|I>n{yJ~hh8NfqLt#G1JHyU%PHk^io(W z^KEv5_aA-2Qhk;Dmx-q1R3N<&I_}Fy9i=Nl->&XX{@N~%jBgzcu+JYf5$WCn+r+fkp*i7#+Ri2|NN@UGA_}X{p04k@zwn@?y zOfSxc=W$1wbTiZ$kbcZ^vWVk(6s!^$(SJxsDvZKn%*}B*e`Y?BJAC zT0I&Q@fm4FE+SF}Y&fgDI0}O+LRl@N+mXk$D zKUOELOsN@-+`#4hCC1zwU@4Q1hAsh?4Qv99{|5Vh^ZqR)8U`HA4b%v82a5Ou_vlqc T5^UWA00000NkvXXu0mjf8ooA= diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow4.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow4.png index 9fa452a61bf19f4082c9fbc34586322836957de0..4097d024fc29b07a3490bafc6219ed5d0ca86404 100644 GIT binary patch delta 715 zcmX@W`IvQrNGZx^prw85kH?(j9#r85lP9bN@+X1@buyJR*x382Ao>Fr%o3 zR|5kBQ-!CCV@O5Z+u8fOg&jqXtM9zAvfHgwikIV6eiW8^WWFU>c6)Lu-x%_!Vjw#ofdt&7r(CG zbmd10^R*6}D^W2F0ojF&4r`CHGHewSXFwD9RM{XuZCPTy^V{dG&nu_SjV|jhkFUSS zwRQgczIEm2)iy6SZtz=vxJvEeGIXsdX8mF~QT;J$?KZB}{&8Ox9bM7Y$6CbTDBuy1 zyJSK(_uAIlj7SCc3mLx**VtM9w5$=5bvw>v+3>8pGcqFAXy)IFs!wM_x9Ch@Ua|dj zy=}elAMqtqn#=w^)&+`%H_kcHJ9FBvEn0CWloN`U+Oe0e>^_c?KIGk&wGux zCvNrJT=LlO{)Hl1hKE?EQ$8=&)7Gl<&j#D;7tz45aC@jrcsBarZ#((AO(K}+k+>V{iBzM6({ zta82jam}VpwhhJE%hzdtY@2IW{@rdjLpIBAksEOzj%l>smN;z3q!#{aiD1G16W*6N z68IO~yJx?2U&}{h1)G13UwD4-Pjj5<<@8YP*oOXwXP-MWzv^yVcs1?ck=K$D$~TxZ zOkDn^s#XIHe)wn7$Ir>a-x!({Zq)3~`O~!JYSzR$=4yt0@7;q=2}R{D($G3ArEtW* YeX?HTk(G*Wz|_g$>FVdQ&MBb@0K&LFeE1vt zk;bE2R44HT7c2y+L*yE_lt8;^TDmYPm}JxJ(nWtl>84=XLV_2CLVrZPa~Cb7q!bdG zLb1UVYSP%mix`O}@!gJf8;@o*UCj7GFZSYybEa7DMn}>dy?>t`owqdce9oXJI!6}+9?FEncZW$HcvxT$s0-VqEV1mw+n0=qz%E$ z(p>O7tO4kjIsn;cl+zV#*QI1uAr_51Okorz<4%EV#jC;7>S+Vuc|ooZz-Cwj&@XiW zj9ifG@9Ss{K%=DV0mC=1%*xEyT@R2x7cG1e9)HbS0*=D8y1)tFGp%53x_|?o5v&OB zg{-}_qyhBDdk@B2Vh_jn>BnNlw;|C5z_>pE3BV6)ehGrz!BSWH`Y%ZX_^xk~x>skn zxfAC4Fjjnz=hf$2$i70$Z_#k;#0-P`i$8ObJnt6YCM`13!M8)w$AIheAI$>%>Z}kK zf`8Rm*wqOOyYHI=+}(Ksxy0e5qz8>10Q}b;{=bg_Ggg^(w?!^#-~v4%&vmy2z+L`? z^CsW~=l)C!>M0O_-!E$~EolHfx100;2S54#>;Kr&IP$m$bO(=9vJuEh8o)`nvPE6d zxE|H04glQ&=vD`S?f`VF13-5Gx^?OSNPp)7vU;QR!I;ea-}2v{-v0}Q59y8rmf9(JOuyTw$1@4&340a``RpQ)8kFsQ!0hq6E^EAB4%Ex2bt6&&mnSVVm zXRRH;{j*;lj4v$wh!v0X*3e~=eukG4X8>^h7LQ&$T8R?_GC!> zJ`y%p&jFBkf{sziYhb10WQddXpehc_?niI4d-D1ZQjHbuD*y-@B#sT47A0d78Wxx? zcGJNIHvYExdK>>&s2xD@tFS?WASGy;7z9n0<8G%-9S$WMD}Mn_dR{s7?CW~~0000< KMNUMnLSTZLmN?S@ diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow5.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow5.png index bd46092739e6b3d5f5e7e3eb3806b5feaa456145..5245aa4de55bbd9220be129782e2d81efda2353d 100644 GIT binary patch delta 639 zcmV-_0)YLS2ABnqB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000ic z000ic0Tn1pfB*mjElET{RCr$Pnn6kfK@dep(RGMXTm%Dx2MD6RK-c#<04Y^Te=?<)iblIH$B}6)f)|&@qc*yIT#F@*=*K~Znm!F zcHnULsCj*VZszm(Wcv0fcUQSPdAgF}T5L+Df#O@B&=7KM4qX7=yuAI3uD5InT>z$i zT>P+qFp{A;bO9h$JidPqvJjxe#bW`qCJO;5ysLQZ0AXMRT>uJh2Z)QeTpZ~FP;4B) zqj*3UfI?G&XMY~sBK?=(@$LS(4Ay1(o9uhGX&@LW%XM68QurU*mDjqz%+^+;1(;1K|9!#B^ zAHQL~2BeA)gG?|N08+*0umb=W0U$1Za{6((h%>oG!+%YHqQ#>r8Z|~KxCvMkuFa3- z-jAjz8}}KI8?I}BtOLunpr}tkSx5+H0rXq|8`m{JhD!-J8z8r6xCqduXDlHH%mrw( zGbJGhOa*9@GbJGx5oQ8(il-#BgN^A7NJ)r;jrkhTmXM0@kVx$eNiLQuKytBE0g{WQ zo)VK>EO=Fb1Jtv?6JSAkY z2u{D7CY=(j$U=b9CBc#`1hl7kEWsMO0Gts(yF4Yq1G)e`ClE{Uf-WFxkcNf{LavQz ZnlFM&P>D2+`?3H4002ovPDHLkV1ld#2S)$^ delta 771 zcmV+e1N{7$1)BztB!3BTNLh0L01FcU01FcV0GgZ_0008bNkl1vl z`_r@qQ%WM8EOjXcIypJ1i!OC?=_0tblPE5QK!-rVMXGL{?ciW1Gr5R3=+a4O=~TK% zF-4lvmh}EQoJd7;tB~@2ft+W$+;Dlny!kliz)QvS3t~!n?1vEfFywMv zIEIn7sJwayyqj9Waa}%aeq?TV1tQs!)D2i|y*3vUog01(jEU*18_;leA#6hsLli>d zf?E>PS2v*g%zpuf|GNJ_Gr&clZh+Jm%|m|{P{tadU4S;$0PO;_=_>;~g>w4JfEc+y zLBHrL12pJ)A#{EB{+(W)@AdzDuMB(#h#R0W(4B{PH5vomdGy!Mp@20&y8vyh0ony< zBlbq9U2E36ez1n>LP*4bcCA_8T+AS8ftvsUgdPM%34i%>k$opvG;e!n!%6S~-Ca3A z(t!8?D1#p}y*I_}>P@mF5tGkDwgdc_HIQlk7n~T}mp()M|O;u~nx`YYp z2Fzw>S%F5dYpx?Xef2S5zVv{F@rO+BO_>{!*U1vdpxy!ZcIr^_p@PW{9Iiktr?1`t zlmn9$I897;;6!$_MBRY-tr!n002ovPDHLkV1iYX BW&i*H diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow6.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow6.png index eabc47c84b865b76a0c4cadd8a6c043917b318bf..4097d024fc29b07a3490bafc6219ed5d0ca86404 100644 GIT binary patch delta 715 zcmX@h`IvQrNGZx^prw85kH?(j9#r85lP9bN@+X1@buyJR*x382Ao>Fr%o3 zR|5kBQ-!CCV@O5Z+u8fOg&jqXtM9zAvfHgwikIV6eiW8^WWFU>c6)Lu-x%_!Vjw#ofdt&7r(CG zbmd10^R*6}D^W2F0ojF&4r`CHGHewSXFwD9RM{XuZCPTy^V{dG&nu_SjV|jhkFUSS zwRQgczIEm2)iy6SZtz=vxJvEeGIXsdX8mF~QT;J$?KZB}{&8Ox9bM7Y$6CbTDBuy1 zyJSK(_uAIlj7SCc3mLx**VtM9w5$=5bvw>v+3>8pGcqFAXy)IFs!wM_x9Ch@Ua|dj zy=}elAMqtqn#=w^)&+`%H_kcHJ9FBvEn0CWloN`U+Oe0e>^_c?KIGk&wGux zCvNrJT=LlO{)Hl1hKE?EQ$8=&)7Gl<&j#D;7tz45aC@jrcsBarZ#((AO(K}+k+>V{iBzM6({ zta82jam}VpwhhJE%hzdtY@2IW{@rdjLpIBAksEOzj%l>smN;z3q!#{aiD1G16W*6N z68IO~yJx?2U&}{h1)G13UwD4-Pjj5<<@8YP*oOXwXP-MWzv^yVcs1?ck=K$D$~TxZ zOkDn^s#XIHe)wn7$Ir>a-x!({Zq)3~`O~!JYSzR$=4yt0@7;q=2}R{D($G3ArEtW* YeX?HTk(G*Wz|_g$>FVdQ&MBb@0OtojiU0rr delta 1209 zcmV;q1V;Pg1A#8 zKZf~YhDbj~QfUZQ8ipFHnk)*VYr_z?m(w%hnPdoxdwilIWxKU{@!`!%zwS_`<{D67>4N7$o0|L z`HyxOFka@1b2quRa*IO2#+|HS-|o55XHo<~lRZ%k%Dq}Tf|0+2IP$~Cm1x+ zG(?S=`W&TPLz#6v0HmTXJiGLmgcV|K*~+Zr0l+X=?%HP0^;peR@p5bGtd%)+QY{MO z>c|-5&H#{5W*rXzi6l@4;BI0Cd|#P$JOGH&v#|@9d4F}*vi*R!e!Vt!SXt^$R;KLR zJ(Nl=cLr|p!P+OR1bKz>H+ANvYfNLw~LE~5Q3Tzs%#IHvKg>nPmye>F4a9uO3wkq znH-id*nctgw&L5RB@xn9`~RDi0q8AT3~`=qw@R}fpWHzifKsl(Onr`qs4-}y!BjO}3^#Jrs9RM@Wb63Ci9)Lzk_X9?*kAKd}?612YAYBa2e_W3Sfq-_H$u4l3 z(KwNe#t9E_z&E2A;cv^@OG_F+!8&^|-V#lmFr+|=Qn(9t7Xag7AJ{iOA3e}|;H z*4K+94dBbd6b-*Y)vdH@eR!|xFL^;yk0px5EMq- z(tqcGi6ynuY# z1mJXw=Y|*M`}bIb(>CBl*Zyn(jWh@#EXdkROB%qLsem)U!B4*b`9HR7&;32%RP;J6 z8-bjp0UUNKTig|od{m=O0O$@tw@v`)4u3$mP5|f*K(~%P0O?vlR+m>N#$@*YzJKQU zJ}+<-Isu?N0NpwPpgREFIsu?N0NpzF0JJ|eVQY2j3DCNh^;YW@PiLVvwV z85giH5iAEal18h^+An9V9l*ohPY=cyp5CX+wzx9%Ch0Is-i{ui^1^_H$~-@;E)s?z zH!i-zspQ!g9r8a(dod)QTxu<@_5v`t7cG}92Mv-LgDf`PzMv+aEiJd-X7|(OucQ`M zw9fz_S|D+nkPTQi|AgH%BpjM9G%|tBziqz3(LGnF9YFE3)&j|Mp#*det!-UVa$)5! Xp#Wu4&1DdR00000NkvXXu0mjfVJ$+& diff --git a/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow7.png b/Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow7.png index f75790a41878a5b5e9df599eb3004fc19dc29d2f..f2aec98846cb982515e94d2f3e994d085109e69b 100644 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enaIvS0V@O5Z+u4S^4GsbaAzPCHhZ-yrUl@PsgY{#|1s$tkuz1Q-Cn$6WL%vq2R#lSzZQkYDkJCQ+V6G~_nfO; zeWw1}_rRI+wGaPqV9a2YV!ps+!nT0*-Hhn4!XFIb`xm|DmsjXTlF69%is?(`zEh9? zGeFg5@Ce*jsF}B3XuJ3P=c{}ER@Nb#l)>Y`eLz y`@}0OkOX!d{?4>d{6rE%RKqcbEes&rXX%$%%2g+2GNk~$$>8bg=d#Wzp$PyK^Ji!P diff --git a/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state0.png index 45b3c99189ff93d8928aae08e938c39e47de6c8c..dc5081de2ed0b1a9aa0e4cb968f41085f3ab7ab3 100644 GIT binary patch delta 686 zcmV;f0#W^qdf5e#BYy#fX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKp2MKrbE=X9p)m7b)?( zq|hS9JC1vJ?|WbFz5|3tg{fxOB%o@Rk&4H}Y;IKyyh1=f&3|zS5;OHgdNBjf@pTU$ z-|r$k%e(H+(Wm512KYqcDANs#c!PL$)6zNb6NgwyQi#uqCk(nE@gvt|m)|%S9Ts?I z$jGGTi9^ITl3X&m%3$PJKou$^#}EDozk6#Irl;JbU<~MfvF(ph zAg~KG>$d%UY}?Hf!2b+fX>EVC0nB}pUT@*Z%x0}MUsk|8;gpO#Q4 z0Pkn?O*vrj7U*4b`_?+g=>w3VUM=4M2Zz8|k+Ro4-Xz`A*|&ddTK)S0Md5Ol8b}Lg z00006VoOIv0RI600RN!9r<0K(7k>Z;bV*G`2j~J04+ag7Yl|8H007lVL_t(o!^PH3 z3c@fDhT#e5I@HlsX+iJ+y^VMA0N%wr2|`O(8cWs+x)Y_XZIb!P1)i6I4+5b0s;YV! zO&k%yXyVQ}`G9Y{JS`4J6K}gl?gB$N0LTQ4;dxe+Mibwzcf1#v!takOUw^JUW01j|!l~g9E7Xpa2ehb^sTiXT@{? zCvL6%{~_VVSIf=#1tjpx?K~VHg|}VP|By)Hy%k8~KLHx}XNFpMy?-8!CXR^k2EB0_ UzWfgt^#A|>07*qoM6N<$f<`MZ(f|Me literal 15629 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 diff --git a/Resources/Textures/Structures/Windows/window.rsi/full.png b/Resources/Textures/Structures/Windows/window.rsi/full.png index 5ed08bac4204e8a98d150333a24925dca8310739..897534dd8f6ad77a7169b021cb316555639cc403 100644 GIT binary patch delta 402 zcmV;D0d4-s39AE;BYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0YFJaK~z{r?Uy|gf-n$9qZK2KiZutYqOkT5oWj!D16W&f3Jzgy z?E$DoZE)x`-%f%76~fsDESIHnn||Bnh=?n!W{4 zJdR_!(Kn9ckVGbc0Tf^P+u(7D*ks{GVs5AK+%C_}PT^rAYvu%&Yd^pQNN~EApyJ4V zK8BgVSllG=%f$+yOP7wwilc@YBXRgf7|wePINQfDtePMnGEtkI_1z zOR0eJG|L?@bVGTX{-kmRq(qabDh_^~h}2_LYm{6OK3AQHif6difm~u=&_yLDz$ca- wAX|`0poSPD{^P}D@K>|JUrwnv2#mb|4AL%YCpANW01E&B07*qoM6N<$f?46LSpWb4 delta 1205 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 cv(pcTpp*;28=@nPgg&ebxsLQ08%5>{r~^~ delta 1168 zcmV;B1aJF`1fvO%BYy;HNkl!EKN>NIr{=f(gEf&#I zP(f6D(HDyZB=irk?>_im3%(RYgdqA*d=W)KL8(ZsVk$;#DJ`Lh+G=XrWV83~&b@a= z&fMLyDUudvof+Bv0=WZwXV1Cc&Y79-oVg5|kWy-W!M^7XoPWIQ>6fu33h~PR2k`di zi>PnA6$|r+F*AGUwaxl6#_+}qyFSyg@9A{54PEk`BjB%Qf?O0vZ8||f$QTMpe0S<+ z#9?66wpnYNfYBdg$O;M3=@_%?R0vE>-J`CN?;Eq}3<2cGy?1U?ZC(hYcHIE;;Q0)V zv6@kLoFTy6Z-2fK&Jd8L3Dy&i+iDSt=BhEfP7vS;fhh2i2#KXXu0mAIg@F?U6j4Q8 z7Z=Zf`94Hz&6sT`_5q&ffy)3nZzHQT(30kU7bix5OcQn8xA$R8`U0M|M7w!7K|mBm zXm!{AmBNE4%;^Cq2w3ae_z0dM4$MWS_F#MUgHuo4NPm_t%pZPzX7&(TmzOd3L85oQa(9`%m&F>0~5zy24r1@RS!Wi|1v_5Hm(*CZ%iYKyzfsQh#@rLSqDw#wV>$nxC{k5*S@k#5G=0{%+z&6Z#cGbe01mb|LDVO~8$gvbm1`^)b0YU_^ieK3K(w00(@q ziV*=0_+S-7Pk{CJ1?YT%PX8k>&J6GS0)Kd7tP`-~`8ib}p|m*_P3k;_S09JhN#KudxprUVd*DTZYGq?t{i~1P*Rt=# zad|3`Q0174CLt4$odi2>pTM6I&8gn0svMTKo7nKYt>q z2bi9|A2pAmQ7bD;qL4WE`(>Oze?e)FJ-Z*oE!~%^-qN&hoq#vLC{K*kRgIvEsGVc! z>oeeafiSL>v$Pc5gH`22fB5}{f!TK=1gJnl#ZxMpB+P@)I}m<=qFY?O9@zj7Xj>=X i(kJs}fy4#?{0&-Fd}{Oz diff --git a/Resources/Textures/Structures/Windows/window.rsi/window5.png b/Resources/Textures/Structures/Windows/window.rsi/window5.png index df8dd36cf54e1eeb9e03f2c59d16196a74347996..df4ef650886770bca3ae09bcd7cc067227552802 100644 GIT binary patch delta 642 zcmV-|0)73U2ATzsBYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0xwBKK~#8N?VF)e12GVW4`db4D#SSq>I9mHsN@My3>E|e0hU4W z1js%F8iB&#PM}&q)k62!y~(ACX=nG(O!Cd_?9I9VyCe)rx_?uFX`1GDJRVnz#iBYs zoj&pFj>Ds-`uYB%$96eyyLUd%k2m-HxDmVDVNiHsG^r`2lnHPF^yR5erkB^TudE4N z01f*<_?o*qZ~;UpJk5U#k`Ul92+s?kDyayd;IZ(k3j%Z~+w7FGf8) zk-`+9grQOoPk+D#P{>$Wkjf$mqX^)hEkywLY}tB0;Oye|iXS&(+yCdcrAz_t*-`{> z&z2&9yDFne9W6BK0-TVt>ERa?RRLc3YH$Bwtam) zKqP!Js0$!M;ZyhvK$r+%2H{_44|ne`vvYn0!%{$pgny?)QTJdJg{1%*^YwDx_G6z8 zMbVg#fYh*F1KQOT=+}bWra%Yn_tSB>+zUWsy#{oM1pi750uupp=(%DbAqCV0$YEzl zLJDXL=st5qLJ}g>1UN%{O@do!R7XHaf?sIV*8opKsGz6|AV@;2(3l8FnIeFDwiE%} zvjzTp0ekfQf-(iTXG;;lJzI(Z?l9<_AXXNnFal(A#4i&GZ~<~pz%9l^0$hOH6ObY- zC8V+l_M0Oy30kBgK!{0DBMAZC5Fbd;1}=c^2+(nPNP-1$0dh|uAi)H<0QZ1&`G0pn c%7Ci+18Fi5jjyEM0ssI207*qoM6N<$f@qr%%K!iX delta 778 zcmV+l1NHox1)v6yBYy(tNkl?6Jd8u8Y^* zcX+h;2~Lu*#updh+0y5&Oh$kd$UF~iZ8xv{4dMcP3sXct1(Z zp?kvS`Rg-BtlsAx$F2#L?*Z%rNKAD7U>87QqU%RJ1WJ&DD7643$U&6K3&3_F)SbU} zHTQ>^dsZ7ETUZ33#_vBnhmelEl?&wnP8_4zY;uI}3xDgG;9%P~pQElW!*Qg6EsG$I zF{~VO?!PBl!*u5mbeeL7FNAdxq{g3~n!tyikNYp*WB$ck&hWXg3ZOPN&{jYiMbNGX zfA1(~`23vMBIy(fGK>wjkZBEM8e_kf*}@l5`F#MN0LnGBfARp37l1qg#v33E>smy$ zfARp37k>b0f^h9;wFIErKY0KSw8H8wgY8DcEQ7=kZv;;km$$tEg0S|0^&m8JL0Gk| zFqOayUxwz6a->iQTMv--0Tfa114@vCD7643$U&4^0PcWwX^cDI4pe>!h~F2u_~4C| zzu>>WFCa~Ak`jnnNNti5pcbG6IfzmVP=Xvp5q~ey79EvU=E@BD2J$XVkuV%0hzqdK zcL9IXH?W#+jz}HFZ1KhCfa3?padK+Xcm}XlJRvUu7vepDJOZtuVE{hPOi!4~5qc3@ zeDNMY9s%+SkY|9r1LPs#L|g#l5y-Uh43Kw#JOnfmvH;*Wtb^T!`Dp6<00000NkvXX It^-0~g57m!n*aa+ diff --git a/Resources/Textures/Structures/Windows/window.rsi/window6.png b/Resources/Textures/Structures/Windows/window.rsi/window6.png index 13aaa2107eb3d7196a96e5530e1996c6cbe0b650..30629fcac2aec115a9940cbd378b6039b439491d 100644 GIT binary patch delta 498 zcmZ3?+08ORxt@WsILO_JVcj{ImkbOHEa{HEjtmSN`?>!lvI6;>1s;*b3=DjSK$uZf z!>fUTfpLMSi(^Pd+}qi@9xQ<(t@CgByqdvtnWfvH8153}2Cw#kqEZzcuImpRxfTK1f){K*`Cx%&I5Vr36Lq}@MLyIJ|*Or6vB zCaZ9!Mz$TD`Zn$R#%6yfE92R%)1NPoD6f-w|M1U>t^J#X78~etF)VXsJg`NBVTKqh z!{tQ`2~i>pKHW?WnTFq)!?xertx+v8-*54y&XX%Y6vQ9-^}5kcZvS43JHOvCinu=T=p z_!(n`eaF)!@BKNdDqwD-b69jO6WGdZkT-VNb-LD7?@tK$QqQOi_1cd0O!suRTAgXA z^PQB~#`#_H!QFtBhkGYzHk_AM3}z_Z!Sc)0vrSTM3)g|XiuFwI7%TGE?qq+kcc+&f cv(pcTpp*;28=@nPgg&ebxsLQ08%5>{r~^~ delta 1168 zcmV;B1aJF`1fvO%BYy;HNkl!EKN>NIr{=f(gEf&#I zP(f6D(HDyZB=irk?>_im3%(RYgdqA*d=W)KL8(ZsVk$;#DJ`Lh+G=XrWV83~&b@a= z&fMLyDUudvof+Bv0=WZwXV1Cc&Y79-oVg5|kWy-W!M^7XoPWIQ>6fu33h~PR2k`di zi>PnA6$|r+F*AGUwaxl6#_+}qyFSyg@9A{54PEk`BjB%Qf?O0vZ8||f$QTMpe0S<+ z#9?66wpnYNfYBdg$O;M3=@_%?R0vE>-J`CN?;Eq}3<2cGy?1U?ZC(hYcHIE;;Q0)V zv6@kLoFTy6Z-2fK&Jd8L3Dy&i+iDSt=BhEfP7vS;fhh2i2#KXXu0mAIg@F?U6j4Q8 z7Z=Zf`94Hz&6sT`_5q&ffy)3nZzHQT(30kU7bix5OcQn8xA$R8`U0M|M7w!7K|mBm zXm!{AmBNE4%;^Cq2w3ae_z0dM4$MWS_F#MUgHuo4NPm_t%pZPzX7&(TmzOd3L85oQa(9`%m&F>0~5zy24r1@RS!Wi|1v_5Hm(*CZ%iYKyzfsQh#@rLSqDw#wV>$nxC{k5*S@k#5G=0{%+z&6Z#cGbe01mb|LDVO~8$gvbm1`^)b0YU_^ieK3K(w00(@q ziV*=0_+S-7Pk{CJ1?YT%PX8k>&J6GS0)Kd7tP`-~`8ib}p|m*_P3k;_S09JhN#KudxprUVd*DTZYGq?t{i~1P*Rt=# zad|3`Q0174CLt4$odi2>pTM6I&8gn0svMTKo7nKYt>q z2bi9|A2pAmQ7bD;qL4WE`(>Oze?e)FJ-Z*oE!~%^-qN&hoq#vLC{K*kRgIvEsGVc! z>oeeafiSL>v$Pc5gH`22fB5}{f!TK=1gJnl#ZxMpB+P@)I}m<=qFY?O9@zj7Xj>=X i(kJs}fy4#?{0&-Fd}{Oz diff --git a/Resources/Textures/Structures/Windows/window.rsi/window7.png b/Resources/Textures/Structures/Windows/window.rsi/window7.png index 1a2e65fad78efe662cf60742e0d6afd2088f1e6b..0e02c2e8de00c8cbba348e75dd3a5b8dbce1d31b 100644 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!G)eKjv*CsZ)Y#$ZEz4cAa^WQx{jql1nxza8-i#ZjF(v4-9*E*<*eb%1t;ulh z(@(h%-|hZSoyTx3hyjNhED|r6zr=&}W6CY<`N)v;l&3B*C{zLHSO!m5KbLh*2~7YR Cu2;wa literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Up!qLLn`LHogK(~$bf;>T&0m+ zq(MM{$;p9H?!cu21G~6c<%#A0WA&$-W=}7f=QJ&~Q?8)4uJ7cJ-#n|^vw}0-p ziOeY`I9{^be)tM;zp1UGGK?m6&+hv)*nAU!itCLw)Z4C53gQu&X J%Q~loCIB+RX~6&h diff --git a/Resources/Textures/Structures/Windows/window_diagonal.rsi/state0.png b/Resources/Textures/Structures/Windows/window_diagonal.rsi/state0.png index df5805957d6b0d0b891e10d01cb5a46e4c36e95a..39ffd5be1fd6a117d57e55f02f9ac0cc33eb5ef5 100644 GIT binary patch delta 693 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 T+&>K!JMPxP$~!+ZV$;QnZ1 From 84163c9a17929cb91a0530d4ab75daf65f7544b2 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Wed, 29 May 2024 02:00:50 +0200 Subject: [PATCH 078/111] Radio Resprites! (#404) # Radio Resprites! Radio Respsrites madness changes all the Headset sprites, Radio, Talkwalkies, Beacon and signaller. This also removed the "radio" sprite... well its replace it with the "old-radio". --- # TODO - [x] Sprite Import ---

    Media

    ![image](https://github.com/Simple-Station/Einstein-Engines/assets/45297731/b90d8de8-4ac8-403d-bee4-348175544f59)

    --- # Changelog :cl: - tweak: Radio Resprites, Talkwalkies, Beacon, Headset... - tweak: Radio and uplink radio looks the same, make sure to check what freq the radio is on! --- Resources/Prototypes/Actions/types.yml | 2 +- .../Prototypes/Catalog/uplink_catalog.yml | 10 ++--- .../reinforcement_teleporter.yml | 2 +- .../Entities/Objects/Specific/syndicate.yml | 4 +- .../Clothing/Ears/Headsets/base.rsi/icon.png | Bin 309 -> 387 bytes .../Clothing/Ears/Headsets/base.rsi/meta.json | 2 +- .../Ears/Headsets/base_syndicate.rsi/icon.png | Bin 288 -> 332 bytes .../Headsets/base_syndicate.rsi/meta.json | 2 +- .../Clothing/Ears/Headsets/cargo.rsi/icon.png | Bin 326 -> 402 bytes .../Ears/Headsets/cargo.rsi/icon_alt.png | Bin 516 -> 366 bytes .../Ears/Headsets/cargo.rsi/meta.json | 2 +- .../Ears/Headsets/centcom.rsi/icon.png | Bin 315 -> 307 bytes .../Ears/Headsets/centcom.rsi/icon_alt.png | Bin 469 -> 371 bytes .../Ears/Headsets/centcom.rsi/meta.json | 2 +- .../Ears/Headsets/command.rsi/icon.png | Bin 325 -> 396 bytes .../Ears/Headsets/command.rsi/icon_alt.png | Bin 504 -> 576 bytes .../Ears/Headsets/command.rsi/meta.json | 2 +- .../Ears/Headsets/engineering.rsi/icon.png | Bin 282 -> 405 bytes .../Headsets/engineering.rsi/icon_alt.png | Bin 490 -> 366 bytes .../Ears/Headsets/engineering.rsi/meta.json | 2 +- .../Ears/Headsets/freelance.rsi/icon.png | Bin 799 -> 402 bytes .../Ears/Headsets/freelance.rsi/icon_alt.png | Bin 991 -> 366 bytes .../Ears/Headsets/freelance.rsi/meta.json | 2 +- .../Ears/Headsets/medical.rsi/icon.png | Bin 287 -> 392 bytes .../Ears/Headsets/medical.rsi/icon_alt.png | Bin 469 -> 453 bytes .../Ears/Headsets/medical.rsi/meta.json | 2 +- .../Ears/Headsets/medicalscience.rsi/icon.png | Bin 316 -> 418 bytes .../Headsets/medicalscience.rsi/meta.json | 2 +- .../Ears/Headsets/mining.rsi/icon.png | Bin 396 -> 469 bytes .../Ears/Headsets/mining.rsi/meta.json | 2 +- .../Ears/Headsets/robotics.rsi/icon.png | Bin 296 -> 324 bytes .../Ears/Headsets/robotics.rsi/meta.json | 2 +- .../Ears/Headsets/science.rsi/icon.png | Bin 311 -> 396 bytes .../Ears/Headsets/science.rsi/icon_alt.png | Bin 498 -> 361 bytes .../Ears/Headsets/science.rsi/meta.json | 2 +- .../Ears/Headsets/security.rsi/icon.png | Bin 283 -> 408 bytes .../Ears/Headsets/security.rsi/icon_alt.png | Bin 455 -> 570 bytes .../Ears/Headsets/security.rsi/meta.json | 2 +- .../Ears/Headsets/service.rsi/icon.png | Bin 311 -> 418 bytes .../Ears/Headsets/service.rsi/meta.json | 2 +- .../Headsets/servicesecurity.rsi/icon.png | Bin 294 -> 418 bytes .../Headsets/servicesecurity.rsi/meta.json | 2 +- .../Ears/Headsets/syndicate.rsi/icon_alt.png | Bin 485 -> 515 bytes .../Ears/Headsets/syndicate.rsi/meta.json | 2 +- .../Ears/Headsets/prisoner.rsi/icon.png | Bin 390 -> 317 bytes .../Ears/Headsets/prisoner.rsi/meta.json | 2 +- .../Headsets/securitymedical.rsi/icon.png | Bin 371 -> 408 bytes .../Headsets/securitymedical.rsi/meta.json | 2 +- .../Ears/Headsets/service.rsi/icon_alt.png | Bin 915 -> 576 bytes .../Ears/Headsets/service.rsi/meta.json | 2 +- .../syndicate_listening.rsi/icon_alt.png | Bin 531 -> 515 bytes .../syndicate_listening.rsi/meta.json | 2 +- .../Devices/communication.rsi/beacon.png | Bin 317 -> 447 bytes .../Devices/communication.rsi/beacon_dead.png | Bin 253 -> 274 bytes .../Devices/communication.rsi/meta.json | 36 +++++++++++------- .../old-radio-inhand-left.png | Bin 215 -> 0 bytes .../old-radio-inhand-right.png | Bin 243 -> 0 bytes .../Devices/communication.rsi/old-radio.png | Bin 401 -> 0 bytes .../communication.rsi/radio-inhand-left.png | Bin 311 -> 215 bytes .../communication.rsi/radio-inhand-right.png | Bin 263 -> 243 bytes .../Devices/communication.rsi/radio.png | Bin 536 -> 1365 bytes .../Devices/communication.rsi/signaller.png | Bin 369 -> 456 bytes .../communication.rsi/walkietalkie-off.png | Bin 290 -> 348 bytes .../communication.rsi/walkietalkie-on.png | Bin 116 -> 207 bytes .../communication.rsi/walkietalkie.png | Bin 299 -> 509 bytes .../Objects/Devices/jammer.rsi/jammer-on.png | Bin 0 -> 537 bytes .../Objects/Devices/jammer.rsi/jammer.png | Bin 495 -> 329 bytes .../Objects/Devices/jammer.rsi/meta.json | 16 ++++++-- .../Objects/Devices/signaller.rsi/meta.json | 4 +- .../Devices/signaller.rsi/signaller.png | Bin 280 -> 456 bytes .../Devices/station_beacon.rsi/blink.png | Bin 373 -> 447 bytes .../Devices/station_beacon.rsi/icon.png | Bin 302 -> 274 bytes .../Devices/station_beacon.rsi/meta.json | 2 +- 73 files changed, 67 insertions(+), 49 deletions(-) delete mode 100644 Resources/Textures/Objects/Devices/communication.rsi/old-radio-inhand-left.png delete mode 100644 Resources/Textures/Objects/Devices/communication.rsi/old-radio-inhand-right.png delete mode 100644 Resources/Textures/Objects/Devices/communication.rsi/old-radio.png create mode 100644 Resources/Textures/Objects/Devices/jammer.rsi/jammer-on.png diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index b91b26e3570..22f16bd9568 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -120,7 +120,7 @@ priority: -20 icon: sprite: Objects/Devices/communication.rsi - state: old-radio + state: radio event: !type:OpenUplinkImplantEvent - type: entity diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 7f64ebbd23c..90d2a0e53e7 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -428,7 +428,7 @@ name: uplink-reinforcement-radio-name description: uplink-reinforcement-radio-desc productEntity: ReinforcementRadioSyndicate - icon: { sprite: Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: Objects/Devices/communication.rsi, state: radio } cost: Telecrystal: 16 categories: @@ -444,7 +444,7 @@ name: uplink-reinforcement-radio-name description: uplink-reinforcement-radio-desc productEntity: ReinforcementRadioSyndicateNukeops - icon: { sprite: Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: Objects/Devices/communication.rsi, state: radio } cost: Telecrystal: 16 categories: @@ -476,7 +476,7 @@ name: uplink-reinforcement-radio-monkey-name description: uplink-reinforcement-radio-monkey-desc productEntity: ReinforcementRadioSyndicateMonkey - icon: { sprite: Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: Objects/Devices/communication.rsi, state: radio } cost: Telecrystal: 8 categories: @@ -492,7 +492,7 @@ name: uplink-reinforcement-radio-monkey-name description: uplink-reinforcement-radio-monkey-desc productEntity: ReinforcementRadioSyndicateMonkeyNukeops - icon: { sprite: Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: Objects/Devices/communication.rsi, state: radio } cost: Telecrystal: 8 categories: @@ -724,7 +724,7 @@ id: UplinkUplinkImplanter # uplink uplink real name: uplink-uplink-implanter-name description: uplink-uplink-implanter-desc - icon: { sprite: /Textures/Objects/Devices/communication.rsi, state: old-radio } + icon: { sprite: /Textures/Objects/Devices/communication.rsi, state: radio } productEntity: UplinkImplanter cost: Telecrystal: 2 diff --git a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml index f6d57f53a50..a8489866fc7 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml @@ -7,7 +7,7 @@ - type: Sprite sprite: Objects/Devices/communication.rsi layers: - - state: old-radio + - state: radio - type: GhostRole name: ghost-role-information-syndicate-reinforcement-name description: ghost-role-information-syndicate-reinforcement-description diff --git a/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml b/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml index 2b5762aaef2..883f66816de 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml @@ -57,10 +57,10 @@ - type: Sprite sprite: Objects/Devices/communication.rsi layers: - - state: old-radio + - state: radio - type: Item sprite: Objects/Devices/communication.rsi - heldPrefix: old-radio + heldPrefix: radio - type: UserInterface interfaces: - key: enum.StoreUiKey.Key diff --git a/Resources/Textures/Clothing/Ears/Headsets/base.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/base.rsi/icon.png index 44e093f26ad03f1554ba2c82804912058ee2d74b..76cf88f02e7da24dc4e0c870d0f97c23a378dec1 100644 GIT binary patch delta 360 zcmV-u0hj)@0)qpPB!3BTNLh0L01m_e01m_fl`9S#0003sNklKP6n_}ZAjqfBaOluhu$-iX zB#0u*5md3W+k0tX%N*+gApVWeiB60pf$iVHOjcE=YC&)ZqW1YzK7&+)>Y8 zJSRCpk`)3lN8k`A36Nb7QIhqj;s9!aQ3s4VVAKHv?f?L_T728mW+AZv0000B!B!#L_t(|ob8l7io-AvM!#%2gIozT7f4vL2^iGn7Os32pTHN$ zjRs88smL~)PL~50j)JYH!EnZ0RX8G(+OB>A*Do;B#=_VT8nen^%i(~kC%&u|5~rF=kMbYKc~}O zyi)4AmTlV(@=@JEL_W`R|7ib}QvO!r8G>dY6#{i#|M~W#RDR2&3PUR&RH9Gvm)kY^ gz(pdF$W&Yae-qJPl&6RcZ9f@RAy%7ocSy3GfOt5R29e05fPQr*4AtF3A>w_tgCBm zVQ!Zc5b0y-E3cr&z`)R{tneO436=!;1^-6_4618qCIKZm3p^r=85sDEfH31!Z9ZwB zV5_H#V~B~+I)TxIG^i9L3_v-{Zr2-X>E~x;dy!b zgqnWNhKMhkb3O}Z=qTO!W6Lbj^mVuId!-j9o4&qbUo$u1%5Uzu|7_&yI^B5dflgxZ MboFyt=akR{06h$KCjbBd delta 231 zcmX@Zw18=XW4%g%Pl&68goK)^YJPtH{Q2{ZjEwFsn5&_oaW^wLIyyQqFi>1voPmKM zQAYJLkm4x`@(cct01QI+&z%E`a~60+7BevL9R^{>VQ!P zj5=V{0VF#>UeMq_GXLTG3ygGg0Lb#b0%17+)TuWND~=ibr^FFNI{;?6yom{t=oz2` z-ZD@ENREP@Wu{=dBPfYztOm+*Kwf|qgeqrF|=3xNQ#DomViSR4S zD+U!M6^7?8UvV%zd~gfJa!GLshLntKFu$U#kSO!W$^~D)ePsYy1_bcX0P#WMFpG&z z7bH6XYVdzhwu3qX?x^Q4o|Bv)$qE6OBXEe51jsIkD9L(MaR9Zzr~^hFFzSE-cK`sL Wa(=4DC}uVQ0000}HVG^<>yGDV{+>LgGJN8~_7p9lIII%E}nL zql+lDmpli2`}U1t&6+g~-@bht7zfY-3@r!bx(YH}xpIXe*MC)zfq{X6fsdD$Vh6Ag ztMKIELktokTnt=XKN%!MxEM|zKE&|p^Jj`3Ky*G5)%LGqjdh`%Kzfx;{TByK@1=%4e;^uGR)Zf8gJaw#OKHW ymk&wxIaM7&i6!M^2N%r~+$b0YqhJ)!3jhFIX;GoKhVf|t0000Op#WBRf|Ln!re1{b{SQ7#+Y`t6a|M=aDH$~sP zeO@+6&9r8t$cj5p_!$MiZ#R_-;7AnUyYj1|mEBN?{}5B3pm+>(l3?K>hSZV;U2bb` zG^jE7RSLu}c*#7=f-Q1}>ilLMewR-rjL()beqYX~^O^U>d<(|lV?6=x{LA(=s=2MW zc3!9;h!d-uLy-@Cg4ks?Ly9I;c5Qb^OFim@-`q9d}S5*`y z3IYJ2)9s>BDSy~=C)bY<1;JM(JS*TPtNc#$%e!an9~`4mDZnsIUwKvru*_c`u59yC zsf5$>TL3_#QUD>uvlXELtQJh^7?e^}t5r}+1LX(>005uwZwq5nI^G-rN%5f|LIboq zBajr2VlDwq(@@MM0!rFZ6mn&tvErAW4$F zll%St()f%lv$LaJsOcnHoe`cseggj!JRzJQ%R~ra_ZNrE&(U+rH>D&=Y)=%IewlUk rejA2sl|lpjHFIjM<&G37(x&wb&nUgko0fn-00000NkvXXu0mjfMLO2r diff --git a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json index 1e84b43d94d..84f02032366 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/cargo.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/centcom.rsi/icon.png index 4ee60687d09860657556e171f9ae70c31a1d19a7..070bbfd16a652c755399db14a4928134b3ee8f80 100644 GIT binary patch delta 291 zcmdnZw3%swWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$hcfKQ04 zh^UnDOa=>cJBBmHUY>y_MqUj6jpYRmbajoD;+W(W)aJ}z2~;aRyJ9Pl;w=gC3;vG; z7;IlCwE-nK3p^r=85sDEFfi2f9bufR%_j{Mt?_hm46*Qkdm&n=L4kucU`LwN&i`NA z`lU9kG`sLO;Ns&G9#56+UlcZ&Bv&5I6EHU54i;_~m=-RuxXCj@;QEmTZ;r|;^zS-u zJ8@CdOI~iXG_m?O4PCx*2Y&`SwN)})4BYVEU%}aBLhgLN5Jp@1&~Em%-7jU%&5-}x cJS&K=d96K0x=MVf0wHk3|Jf)u#;oa z)`$qci>2@3W9)lea}OX~VO}8k0NF}dF@=a@rD&mS-0Z?}`MN+R^Gz}tAQFlEcRD_s ziHJqFi*mn*wbm=PHblfK2df;6jbb9=5a%XUllNB^0KoYeOMeB}?><6ER1&zt`50Pj zY*diq{RNzJ=wJfp9F*4W3pBys5;#r`hNAO>_%)r10RLFOPajG_-G*HI|PZ!4!3;(khU-LB^ zaIhw1I9iv!{=NUL-)^gg_v-T04L3gYc3n_2*`CGa&b@0D4vH;)76GsRipm}FxWmb9 z;TBWC+u?eIlX=R;MlGq0Nz7IZ9}LPKahLpP(CRy=amHv~vkJe_FWj7tCj delta 454 zcmV;%0XhEj0@VYM8Gi-<0047(dh`GQ0h~!hK~#90?Uk`g!$26v|8YqxB%%~^P;fFu zAyjCz50Igg&(ZhrF?^3s9lE*o7U>{up_7o5U@^g~Ey6jJ3u$f0C8@gPw}eaXzVDas zyGwwQl9GQ$$-1Cnnj8Qssv6yU9*r``$tBRVEFK?!u2!h1YJYUiBO<+^VVYbd8&4)m zl8|_IPyvxBDM8b+c)S`}BvL1K9EY>z5_8|*>N~LAdm#ZJlfY5hg#KWl99OG9lIxm= zj^jivnEO70FhmfB(MFXa_wH?47S}Zm05F}+P=9biZ5seU?q8v6np7oHE0BaJzeo-M ztu9B`2Haj9L4O!Z#mOzOo18zkKqLdz@))?qet*gz&Em4**bG-C=z*1OTx9 zIb7FGjh{NfFpQ|ip6BhI-!M)7b~=s5XN$|s|AbVDxIf4~2qC=IR=CX3iz97m7zRJl w^}TNVQ!P zj5=V{0VF#>UeMq_GXLTG3ygGg0LXHWoLo5n_St(3496M%Q{o7s9RRaj#zGNA{O)lE ziU7$`VAh`xrcV`4go}xYO8tNH`WacFK#~K3j!$4PsZeF8kAJ_-@cYDlNE85pq=Y1h zBFhm}$pze8++arl9YC^Pk{qzkvVdW8`~(JHO&}Xd{LZ~Q4CDfm8~_S()uaLx%RzwL z_$SE$;H(DBatsXK4AcZ9g#f}4Xkt(xub}q->(?&~+}u12AexwvAvqC#WqHM*qNKv` z{N)RVhYxO{SZgjRF2RtJkqzcolob+X9$C5I>$k5AAj^ON9vUD%NE~J{vFUN5CER{Ka#U6C_z70CNNmagqSp1ra4#k17tJ78rHFr~^hFFyIaV01k3`k;tpE Qi~s-t07*qoM6N<$f>a=vmjD0& delta 299 zcmV+`0o4AC1H}T6BYy!5Nkl1Ka)7S2 zH-koDA%m{9HvK=4 z)-4qM;^N})Z29u#OX`;q5)u;sJwlRj=6`W<@&Cw2Ke~+7|tKwiZ||Q;&Wtx x%ZH@;oT`qX#3XXEgNx<~ZWN4yQ7{VV1pxH%RrLglhgbjr002ovPDHLkV1gqYlHC9R diff --git a/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/command.rsi/icon_alt.png index a01e0c6c13e9e939597ff9f756a3fcaa3073a6d2..51a87cef7994958a1e61f7f23301d9c5201d84ef 100644 GIT binary patch delta 552 zcmV+@0@wZc1Hc53BYyx1a7bBm000ie000ie0hKEb8vp=JZ}D6A|=ODoFO zj<#=bY$d~)RrBH(mf4*-d_QmA+j(O~kJSh00~iJf2B)huet(q9$lhI<{uO}C6^p{& zYh%?YgfxKOoTOG%v?D`1;B*eN@gaB5Qed~);2rlF+65^9G8y%ZvG>>47j!~~i;%XS zqF2>V_HaPiT@VKF4ozuQUulf|-2w#`*gXT#)rAy<5CEA+Qd`(ti`M5T`ba8?-03Zj zceVkK${^e$E`KSAmH^!RFL^=}m`AJuLPo+Vphzj#`KJQ=rgxenfOaGVKt_kjIA%iO zhIyI`BZ2F)o9+VWwf=R2!1g3oHeA2fs4lt=K;{>*OJLB2PDmPnMcyHEVF1c;IGSKN z*Nf)#`KKdUwmY^2$iAJMkcM^$E!H92E;nYESL^1P^nVdl^D|JkqAMpMhsdP0_Uo{+ zf1UmJ`gKjEBBUi;1Kh;x@Ue>s9ly=Co7y$+kRs`jE<)CPDnBQlz5(&O!ra0V0)9Ud zn{l*~G(f5NNM=>40}jEjXY@^Q2m8BF6tQ|R)Q+1$kjOk=$g_3PdN6z+;1CpP9Y9M@ qZC+SyT_MY5BJB!5C)5Y%Ilwm%yYQoVR*XFW0000f+?$q%IC31;IZ-S{%A`?ocTXZLyB6ElLweD-O@0T&UWbOQX2tTaLTj-TQLy z-2ovXA^(ixcR|!J2mq#3)g8MpmwoRumO#ujX|UgWd&88fx_|9BBGL<@hCw1&rCL=+ z35jpNDj))l3J^0*8axd@5}p&2i3B;_E}q-%Pk9GE=Uzwv@Fg(eHQ_FwSEeJ8Z^3m< zLo$(YQ}Enw!?JByw(S%li`D=Wk~ zr~UIQN?%-4JbxZ15D~Ij;+#vJf@cbTqE@eC`|ub5P`Erru~N-2x5{ z`mGNF2~?_8#j0)rX8-T4EK0tNS%Wi?Qio5Ap$ftrA%5P&%XT@1#SS5W)^_3IY~Zf+h15KTBo4Ef z*mOa%1E2=~2W2~`BjApD{^B{w36iW3fH?w(I7xu)f{2o=M->N93yeBo)B&Ro7;pyw Y09Yn{%O~)p!vFvP07*qoM6N<$f~V4+{Qv*} delta 254 zcmV)Yu~@d^1_r`e2H1rglmGw#07*qoM6N<$ Ef-{zO?EnA( diff --git a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/icon_alt.png index f1559927e0c2fbfda565987acf5bcf246f14b74e..98259eb0700d261983bb1064ac563b845e8e7af4 100644 GIT binary patch delta 336 zcmaFG{ElgYWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$hQfKQ04 zuCB4Xf|`Z7otI~zh^UmjpuyYw36FQXdHUvVFVda#@cW7tD~ie*=FDFS)M01)Zx@i_ zFA4Gs{*M9}uH2ci5Gci2;4x8Mu%2PPr;B5Vh5y-$ulWuuaIhu>T-bWI=Kt}#7jKHb zdHcLDyz<1?WMJv0Z5dR^jK0)yq<|M(wLky`U3%cCa z+-Oi^@T(MvU+|K7mIYhn4AuF~I{Yr5N*JFlW&FOJPvQbcRxoK#ty?AOaM13?wep1N_nU+6 YRo~TDe>w4bJkSpep00i_>zopr0Oin(B>(^b delta 475 zcmV<10VMwJ0_p>h8Gi-<0047(dh`GQ010qNS#tmY4#WTe4#WYKD-Ig~00EpyL_t(o zh3%9vPr^VH$N$JsC}~Yd%pD(~Obr7}h;it^#J4aZeijEE^&>Da>f*rQ%w#%&k;w?y zMH-47$aBD6K*9DX=+ghv^zPmLfA`+I0}>@l^v_DkE+`rX0e?V7QN-AzZAU_fwmIg1Man1V)<-N~TH6*^q$<4Xj%hd9xYDjivp>vrO+($XL%=*y%d=zY`yZK-F-C{FzV>9n)B8S|Y|K(@fbV9@+WV86C{dz)>JuxN!21^- R>ka?_002ovPDHLkV1ks9*^~eP diff --git a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json index 1e84b43d94d..84f02032366 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/engineering.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/freelance.rsi/icon.png index 0ff3f2c989362d67e30f45835f939895d8ce6e62..fa790f7e9908db0be117835f39c7dcf37e749983 100644 GIT binary patch delta 376 zcmV-;0f+vd29g7iBYyx1a7bBm000ie000ie0hKEb8vpVQ!P zj5=V{0VF#>UeMq_GXLTG3ygGg0Lb#b0%17+)TuWND~=ibr^FFNI{;?6yom{t=oz2` z-ZD@ENREP@Wu{=dBPfYztOm+*Kwf|qgeqrF|=3xNQ#DomViSR4S zD+U!M6^7?8UvV%zd~gfJa!GLshLntKFu$U#kSO!W$^~D)ePsYy1_bcX0P#WMFpG&z z7bH6XYVdzhwu3qX?x^Q4o|Bv)$qE6OBXEe51jsIkD9L(MaR9Zzr~^hFFzSE-cK`sL Wa(=4DC}uVQ0000(VDLS delta 777 zcmV+k1NQuq1D^(vBYy#IX+uL$X=7sm04R}lk-JO7P!z_0ZG99UDCi*K&_TsPK@`MM zD(F%j+6q=(l9;qYTSJl};wrc}2o9o)ufhL7SHV?55EMbg&E3}`63=Z4710}R&X4cj z?{M-3!il_5aBIe(Q1qPSWIQ&TnTypw(?BD2v=Y?}*PcpEq<{H$ecTdK^=3fz`v2aa zt8vkE4G2YrM-1EXgk>5ME1s=*Q@Gv8X^X-K!u^g6D151OJ>VzB*?`{^JL%*&gjLU2 z_6O@f*vL5r;XdK+LcU~F=22hLWEN*qQafdL;gV#MI5BieERn}!Kx$Dk``b5I_D!=a z9z)(Xt2pAwl7AC#zo;eYYD%?4H|5E*s&fCGr)v!l1>KwCQ2XfnuRTz|4PRTn|9R;9 zUq=vmfb(M2zbrY8zKgz9)w=hgWgSj0s+zt7XB*IQZ)=WLmLjslmIW^-(42v`YiO7c zvZ|bOde+{CvC&A3uF&c=6%|NqR}K2di3jMd|+s zI?Vr{Y`6OV^ZbN#1Mv=kTF1o5 z3T81gP$vx%?Esi}S^jBIeT~7$ zM2CT!i;Kb3M33Rv*^3OHK7AtFVwgsvBT`LG?SFr^?sIU!|6=^lF!!<~!}XiDQS^(8 zi^H?V%a<=v|>}zz}$2I0000LRPF;QB>A2XZ}i{j-9t3f(+*` z3Gxg6j{+F3+?lZuD8*UeQ6E{%z`%C|gc+x5^GO3m*L%7+hFJKYz4)5%umT5bLcoQs zcWeG1zkBhf=$p6C%Ok#$@~MRJ*;2;u%lX1}KJ&hqZ^0OR ztS7*of7!l9wH4RSt9J&j%CcW;$Z-0_>21=*4l6jh&R;joX!xL)aZnKjag++Ws6$)9uO*31E2J?bEmB+s7YD&Xbn$EOALuH$DhPrih`71?wTQ%X zn?gnOhMV*7-uoU--au&5GV)${6!Lb#O->|Yvvc#Y$TN*ZsedO-zh-#ORBAlUzw6_c z8dY!lRImT<{kft`8P9;42H|1DaSOsS4U?+{NAad`n~~F&gb##!T^UgLQt5iYPl~ev zzbSUp$uS72p0Vr?)_<^(bMwMI!tuOSG%E9`FKNoyGbyPZvODoeGC_hEIz^VTD9|U> zmdyV44U~P;tbd5dkhen#R~%V#;_Vf+C|xsBP0=&*Sd>)mzw`9Wp~0YgQv&K9egCx! zBHQq_<@=w9zW;RuwGVJ^SN$uJ)5yE%TU9N-4=w9(dQsK%9XQ*7_IpQjwX#$zJ7k*h zasthB(0UDx3qe+ubB^yIy(Yit3U>FPTkf|kegpOfXnzHIGe))m000SaNLh0L01FZT z01FZU(%pXi0006PNklkcjm+6F}|#GItin2kon2K!Ja(fT$L~r@PytoQ6oGoVtH-P<0(nt}3yww^xF5^468>^l`vC1(;e zUyTZNlu)VtOr=C)H0l74H8p|AaV`-o-Q38J4}U8ADp_9zypn0fM1tDyY!=^>T^RWE zS&myLmO(xpC43c-6bgosE5Ge+7uFrM0txG$gdM&FNe-N$(%ni(9zxo(=>6lH7D)v&JRSakWLBI zq<;V*M1(;8G$+AY9>b^)2{hQ?x`(S~0>*jK277_C#EarIdV1|kW)*%l6ClXEO=4-} z0fV#aSR67dz&Twt5uj_fu-ypDW|1{6aQWPfs0iUKcZRW*V;F|vyA!?v@p!y^k_&}` zYdk$X^B)SJKnnP>7uR|NoO*c75DArtTTK{Uxv%3fOXupT`K~Kc1GrBFnqx87mGRSi zT`Iv#C9d7o?(cJei;0U#{eSuD8Cjt~k^^SXdBI@S=FPAuFqq-mHGc_k6o7!SsU5@F(}&1% z1XXf@yqqGK-nMlG$$Ck0Kx&EvLpjj*Dw;_s;_KEfWFQxih*8BhF^&18eQ4t0ZO-#s;oCtrgzG4Upj%PS@Xe-0j ztCvtLx3lwRFlIJ00Q0NM3yCt1tX%N$(R~JxWk3KA4GA9J zuCX|1d3dCRrqTp@S=554P4iP#ohJ<#$=3IPZ6FW`d^%rqikVsC!vX!}g0^jE^)7~) zwP~91F|)oTJV_EAhG8{{?>WU;mf?8*MVh8dbDtCN-lM82czo|)Bd`VUC19<^-{}X| zS^z*C$NLF5=U|LM6h$z`z&VG$?-vU^d`v_{^E@B_Wm%%G>zjTe8rQPxy7dngGiy;4 zllxCZdM&X!BBDg3A~GqkS@^w>UBairmV`e&D4P#lAP@-b#Xm6GU!qP=N>~5@002ov JPDHLkV1m(#b}|3} diff --git a/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/medical.rsi/icon_alt.png index 1087400c3caa26d484116ed669440cb2ba91cbaf..e68f78e061f33d0ee8d933defe0b6cba6aeb102b 100644 GIT binary patch delta 428 zcmV;d0aO0f1H}W7BYyx1a7bBm000ie000ie0hKEb8vpVTo; z0C_=!{~-F|`wNT%;s8-aDF#t#Wrl~FFHp;V(j4&m{xb$@gQ1lM2HXL#G{A6f02~0y z0iZMh!m!)`0+i+mq8wmi^UzOtlGR876k?~T)QR# zjsg%cHnn3od-@Prj-X05l$TQk)7!SLAXzU-4oFRrU?>OrUPUtrMSR`bg$(2Zk{kdE z^3L8W3~_SfpMN9=fU+7W%hmQ(GEftc6ap|upo_uS+S+>m-@JaqAR;Ql0HTQr8Ilv> z57t)L(=$bEbnVR&x{wy$;tU=3c4Gr zmPG(iDi+n)$7G^?&P4(>+ot{ZuiXx%Vo^OW5lOwFYFQKq^M9t(!a1RM?y3TDpmPCg zwoUul(2+=7*lx8bj3O*otAn}&hqaF-0B8x^B`tUz4hxlX`6#$)7-+Xzsszi`3Y+Z~ zo9$LLY8o!?-kNQbX&3;2&)E#)@mS5(>vfohq1_MKJTw}_IVUM4Nh!&39Ezfdq?E)t zPo0H};hdA_d4DSS^V^yn$5BFQBocezH{ucmL4Ys}F&d2!hN0FOnFIh}Fc=(-1wrt4 z0z!yP5}5^j--i$auIu9cYHe*e060Aq~yMNYvvr*5~a{Wbrmwq%Uay=k8OviRyut%+>&qQ6VQ*LWGm7D0000vHul4>cW2iy=LN|7Z{ZLE%~lh-VgcOy4>-R#`sM5P zp9MgxcCvjYkAE)@k)>D_P!K;o^<11TOCdgBS)-scNoCkWC~{A5OD=+L2W`LcEx9vk z!`s-5;)A`dME7ZJf%p`lWTE0}P)xo`oOCYO0KJPPtz8cyh6*|XdmyzcpdkM6S^3I0kx?hJi%FP z?a2#{^?eNtrf2ZgByA01#o9q!xNxEey|!!E&;7|x{!h#-kVqu{I~PM96OkyT;JruN zwu5H-xEfNvSv31_4LspSrjWQCTE3Mf?pA`$q5%;}6oGHHvVX+G%Pa18w_|(H69^%o zsw#vK;tPCy%E>&tz~ftUGS4mm0M=T(Kd)h}1pp|e;t4qCV2nYQWiZCTIS23kXn{Z9 zF*8e^=Z9RDCF;69n%7z%7NhIBNj|D0h)9Z}kiPrZTFXy~$zf*ES_?Dx3d~miTS=7i ozOpgpXD`a^3mcb6BoeXs0x@t}GjErB1ONa407*qoM6N<$f{v_)_W%F@ diff --git a/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json index 3d37ed54346..37ee397b98f 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/medicalscience.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/icon.png index cdb552f140ec9f1a86c9333d6d16dc47859f7d61..498a0af6885eaf70bafea8842a6431adcecd420b 100644 GIT binary patch delta 444 zcmV;t0YmVTo; z0C_=!{~-F|`wNT%;s8-aDF#t#Wrl~FFHp;V(j4&m{xb$@gQ1lM2HXL#G{A6f02~0y z0iZMh!m!)`0+i+mq8wmi20S&o5W9|JW3Ng;r61gaQ}Ew7;V z|LfN;4BXs23?Q1AkRdq{er0*ZprWM0@ciWqhKCPsp;#^{F2RtJkqzcolob+X9$C5I z>$k5AAj^ON9vUD%NE~J{vFUN5CER{58dMk`p9ZApmm(4sntI*#!|L mS&u3XpcWW)z^DU89RL7+LYE1kW>c;J0000>ucb1jw2+SqM1{G#knKWBq~Y$6a%G@AK}xy8;z4 zD72J9OBJ>McHD&HBMs-qUQzMm1%wb_jQyWL(NqFEX(khq(tkO}-1p&m-c~6BQc5t! zKtyUd=!DLzR4WCDK)f&i9fAqawU1m501a%r@U1}8Z= z38=0?(-xq*hHI%a!QA&V3nZ>_v(Zo&hd)21uTMNYFYq#(t*jS9gx69^nScKfk-ELy zSL^P-5JD|WBq3E3>YU?l{2E#NLNZ@wU505h&s8Ez@QshF@P@0XsHiB5ZxOg<)UVlL Qz5oCK07*qoM6N<$g7S;1RR910 diff --git a/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json index df6ee47d086..9c2f13fda0b 100644 --- a/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json +++ b/Resources/Textures/Clothing/Ears/Headsets/mining.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/robotics.rsi/icon.png index 3d247f05be59b6337a3999eb81040920379ee608..4a67c2aa6e97c830fe27dea40f863cbba9df8282 100644 GIT binary patch delta 308 zcmZ3%bcAVwWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$hQfKQ04 zyr4lxM~A1U=l?Sd5z%WzM5P$c{5LW3THENXt7~jwZddNDFR!3BXZ}i{4imQBtAG@L zNswRge-yxQ<<5+SKq<}wkNU`B1_r((Aj~*bn@<`j+Un`z7-Hf7c0#n!VFeD?kB-eA zcm5Z7E9ENATq1qqXTgpNHkrgf4+Yg68IGRP-^ZxAw8kW+EyT-nyVF`#<|var0rA|a z85b?M@96mNaqtdhT(4fD^lIJ4$Hpa3{eIL;S@7o?3uELLk+|#H3peU^6nuW)qkT1D q@AfUit&P%Q{(OgKy5Ep^%zN{wNyVqb8!dq@V(@hJb6Mw<&;$Tw(Rl*^ delta 280 zcmV+z0q6e20;mFz8Gi-<0047(dh`GQ0PjgeK~#90?UcU`f-n$=e;OwUtapne#Fdnp z$H5h!#2Md)U3~)F%L)nWIjF?M5cyMC?3Xm{aP99Kt_N5wmVak8rkI(<_dL{11FiL_ zyR%_tk+XU(2s4X`ch^J1qbLFZs8n!KIkGH+35h`hFH|bHo_{V#RX#U&nn2sO-Ch*M z@&W*W_+%t_x`1Iu2^R7XW`#M776bQn-e~{QGVWV e7K_EQ6nDZmQxRt|$z0!a=y#&n*+s?D2WQGZ}C!!30~a1?-mq=Y1h zBFhm}$pze8++arl9YC^Pk{n?5&k*c;70o0DhJOh0JNND|kPAq104T`g)F-1@4g%!H zKS>S%Wi?QiV=(Mype7(G1mKQ96N9nk71aKJ{rZK0o12FLL=zJ-BqzeJEUy?;lvEg= zzkI>)@WCw<%W5UXB^XjNvcdd{vO=QFBP$nt{q~gsWEl{^Lj%MIiNh==HeHbH0I0$L zLD>%K2)Lu3zj#h^f+Q;hV2;2cP7)xyAfhDeQN;n&0;3KXb-<_t2HXJvQigqU&FZ8y P00000NkvXXu0mjfY~7m2 delta 284 zcmV+%0ptFR1GfT@B!B)%L_t(|ob8mMZo@DThW|}Pk!I?f$_(xWy5YUUkQKDI7!7S$ zu~|T#WGIgiTqy||FfhG>Y1InSElpxFf9#ih`af`IAdyJ?ckZSbX36vX zoa?$q+qM_;TI=&-48yRiBdjRHmCgN iMOl5}5{X1278NIywOTV4Lxu|g0000RJo2OT9xiv>M=As0Ku zr7v(cs7oIafANLUSB6C)#?o>>Yu>v}m>9q?K@KZ`A31OKFVdQ&MBb@0KzAXEdT%j delta 464 zcmV;>0WbdP0`dcp83+ad0047(di0Tw7k>eyNkl#H4*dX(rc*I=srDtLiI7kmhjY3MwI#eYy6`N7 zyZ_zuW3S_J=6!MjGz^1A@4vQNR78%pnj#EC*tU%@ z3^VOf2mk=S?;iHXX6w{vus8rAq!2`50M~Uv2!Ul;==FNAEGyIcLI4xT5&Hc;hma(R zC-Ss8$6~Qad<_!|R8{3!E|<%L^>tmRx2+ZkA#hz6&% z^`c5msj4bHRg{BI#y-8Dz8{-XVSwLeQ5`kzQl(1$wSE9vn7)JLv0%CY0000Nklt+19Tw>f(u2T!H3X=g6P7X52Ho=0jEXBl^HA)VsF|^?LwHF z4DBXoleu?D&NnwVnF3}k58wejfCpd$ECn_7H~##1pPL#0nSb9d?&#;!(vL|i7l_ON z#(a5u7++!@2R#8iwc#T67VN$br(Cb}C*W+Wzydfb7I1eZ&}=;7Eh*!x6zhCg4Qa4~ z$mJA>qRPOwI!+#G5+4 z5fSnbs{$zmNp_BN=Kbp0mXh)tLM(vBES0fp!um#Cm;dGYVZuDDRMFbo*YU~mVWzdL z0AwOTW&@?yGR2fP###G<4KP|*(Xksrq)<^OVmG8!1q{SLd6uj%BGui$OO8+rgeK()JB zmAa-wQFO2v|DZI_k^~ao=gS{pu~_~c$7C`QX^$~9ZHv0Djn>X_F$oXD5WbX1k_1Gg zPZQ|F0YE8*D2jHISiA#$c%C~*({yX@I)Se10O!+YS$4j_5qSKTfDi)r+Y3Sn0D#BX zxdH&-y6(_#+IF+R;?Lw71lpH!7(c5DkFuPs=bR7EQYp2|M>T diff --git a/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/security.rsi/icon_alt.png index 219918544cc972b58236a8a32cea039364ec37df..b47392ea071f0362afaf541887ac19cad27d8b0a 100644 GIT binary patch delta 546 zcmV+-0^R+`1G)r|BYyx1a7bBm000ie000ie0hKEb8vp`6pHRCt{2mcL5^VHn3B zNie!p^1u|%bV)K4gvN%3XeelCXt$}qp`jrf+S_U=8g*}TYm{Bh5=%+tv;^roqrA#3whhW0-$kWNg&U| zwQm%H8$fRyrF0cABSR7Jcto<6$}c1ZE~gWMp|GJSZ~>r^fV4)QTP+!;A;U$8p-1l( z<%9evAa4|y0fH-Wwd%WLJ@@f?f#2tbYhrGLN%z&&_JAb7-_0`wGfU8z;cJ3iwc0+ns+X0R%H#{G;f1P1nSPp>dowZGQZ3^J#X*!0v0MOf%7$rH^3-|Pq zz?RHA9VY@5-!ir&HX+%qL15##{uDLi$*(pjcJ(vtEPsO~osdE#Yiie%23;?auaBJL z+H3%~m}`I<3A)2%9J{22vEjyXO(!HvI=G9F44>{#$I}lWdRN%nKZMOl1THVmC;lHd zK(q0R#`^jJM6YM~j&Kimw;%{?^h2m1I!%Y8)Jdt5vZpBW&I!4>Z+{hViOwY$g`v$?ql!df z;N5g;w`t1jW^>ecIPSfZ04fP|iUR)L-+R5QtN)VwLU1>oW-WN#Y)FhDF(x~xWvG36 zM`37vApm$@F40&*!XGtHS*Y1EiGMNnWqlC*ub}VE^3Q0MO}l zc!}f6|Aaz`yvQk(QdVni%e;DdN?S@P?X~Zpd@}dxeJ4wjvsG#=@Ncp_-&*dLmX@F9 Y1IM;U>K17H9QfB|3wxOQ3m^!=z=_x(r2PBVGj=z3 zL@yAT0c7!oN*Q^IJ%aVM+tluzEUMV>NKt&ehgw}=0h}EMnAl&zO?4S}o|BG%RB}pW zv>>#vV5x8kcs|_ZZ4X%~L;}Fh!veUdH&Ce_V{Wzv4-FM>Jv~5IybfIZ@DAp?ij#Eb z&jO%RbI&1sEe!Db^4L{;wCG^9 zR!{xyt&L3iw5}lfib2H^scw)@aalO)Ua$c=i3Ocq2SP!$gEo61wK^an{)n@r{SozY mdbt4PB?Djp3_#xjz5#i+fJ79`{QCd^002ovPDHLkU;%>a!mXeH delta 284 zcmV+%0ptFn1GfT@B!B)%L_t(|ob8l5j>0eyhJPp{Ih7?(l@7!Ts<_MrD3c>_0F(=G z6U23L0=8MYsgf;;a7t4kMNoh+d2F%%BugG?tog<-z~k}!cP1{$L}WuDaIR~VW$CoG zGel&WxgA7g|D<>v$F^yj-Xx|j$!VHmvp*n7lCE_>6EMbL`+r-)7&E>=p64&)!3Cly zx=nWL$9OCO0MJ@varuJQ8UPRqF`fW3LrRGt2q2{dGvi#>odw?hOy;whU9MJb{Czy) z=X82luas(^WmQ%Ee^f+dvn+f1{*_YpUg8~`?m#F6ilTUV_JeeO&$A9)JMUGZOYx7l iYw!!_@pwFAaTNvIA7Z2|dw$jc0000;U>K17H9QfB|3wxOQ3m^!=z=_x(r2PBVGj=z3 zL@yAT0c7!oN*Q^IJ%aVM+tluzEUMV>NKt&ehgw}=0h}EMnAl&zO?4S}o|BG%RB}pW zv>>#vV5x8kcs|_ZZ4X%~L;}Fh!veUdH&Ce_V{Wzv4-FM>Jv~5IybfIZ@DAp?ij#Eb z&jO%RbI&1sEe!Db^4L{;wCG^9 zR!{xyt&L3iw5}lfib2H^scw)@aalO)Ua$c=i3Ocq2SP!$gEo61wK^an{)n@r{SozY mdbt4PB?Djp3_#xjz5#i+fJ79`{QCd^002ovPDHLkU;%>Ax~-1@ delta 267 zcmV+m0rdW&1EvCyB!BHmL_t(|ob8l74}vfdhF=^>%G9Jcv1v3q(UCs^zl49u=BA5o zH^B-K#=01y1BA+lgME^wx#XIAu3vz|;rMqvn`9y~fe@(b8bwi9t(^=J8D{PV5t*M9 zkD|!5Z9AL9#wIyQ5}eN-;y9jK_d9{6X#npvuPu;e*E z8UPRov7P`kLrMwX_aUVOGoz~O$pWK4lihY}j;B)>UoRKj?)Q)NN~!KymSs8rM@2*? zP1D}@uaq+H5@WEs1A!38^L+5^7wP<+z7B0WpH*T?@vpaQ@eAj0I2>#71p4-0q*qZX RE&u=k07*qoL0I&vVHg_Y8AAR02$okp_&-?uzWg+V#MCjpt7=H32fTmH<23TIH za@D7K?p9n<>cR*@3joIV_YSCi+fLTteWTuBpw4|KfpAwVMi65G#P}$oAia20Axxy5 z0(gpC2d`az$A27avLkGz1t4K|oCUg?tMOWkd|re10+k!UU$wsd)OFNF?f@{3D2#&0 z9Y9i$m9zkmV{gmjoS%d@$vW25{NqSA?T%vs-rrv0pH(9jLbjW_BOsgBtQ7%)P>o~$ z`#VN5mUaz@k$5X|I|fLa$7t8mA$1~RT!h?w;zlGVo@3g8MGyU5N}J@pAMYh8P*G9w$5=%dG#d>G z0H?OCzdbG%h2xYGXuGb=zJDYMPHkI1%ZL~+Xf_&BC3{*ft$#y8YV1b^RH8!(+O8|J z)hHs7JF(a8%J(?Ndb8Q-JFwe(B>|w2KrL^={lkNGes=aPxkCtg-L7uIdb2?oMF^uv zZ&VXX@7}iSN{0{tz_agzbFRl`vl$#hj4F{^fkUYBKl?s9oettS)?=J=gi&M^r?fye zxgw5Z3`Qd@!G9RbZN*Un4k1X>6lt0Q0B&w?F&+*J#W+d;0Fv#_A9x z5ah-`$(uka)jN5$T73%`1cBucA}{N82qBOp30_}bj75?gLn)P6k$o`6BR{fNNVWLb*-f-5R2{uQ5fOvV4I5VPU{0000R>BeEE%;0OpaPSxg< z1`0NLx;Tbd_`f|L$ah$QqapFgBH>ei*ITbinOr+_7x$O?4AsAj#J>3RORzF9oSZ&C zjiF;l2Pea`IfdMPhZ%mp@Lg~v{OF`85$y-hK4-8+STDFO8?yfcoYiDiy%p`gqHw=!0-ZfbR-yN=0>h`qgyi4 zuAQQv`Fl;e`>(evcs!oJrzcelLP#D20c2SQoO7eIO=y1vli!zIMgYStablt`^?xU7 z@_0vuVvPGDut3W|0VZD`j-?3~7#ToTk8c}Xpl#rMl?zEdZi}{o$yhEnQz2z+iBSvo zBL?&t3q=NDDAWd{78F&ZV*E`Az_~xo zAa9y~G@zQ$!RQ~rXLx>zgf`Jhhf8f8 sQ-PZR000hUSV?A0O#mtY000O800000007cclK=n!07*qoM6N<$f~e4lZU6uP diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/meta.json index 33e08c9522f..d2bd34f4835 100644 --- a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/prisoner.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Resprited by DangerRevolution from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "copyright": "Resprited by DangerRevolution from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428 // Icon Edited by FoxxoTrystan and Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/icon.png b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/securitymedical.rsi/icon.png index 0e1840978dafa6f2c7f52dcaebcc6cc4f1e4b7c4..195117997db22a6b1c73cab9c4749c2bb21e1da8 100644 GIT binary patch delta 381 zcmV-@0fPSX0+<7kB!3BTNLh0L01m_e01m_fl`9S#0003>Nklt+19Tw>f(u2T!H3X=g6P7X52Ho=0jEXBl^HA)VsF|^?LwHF z4DBXoleu?D&NnwVnF3}k58wejfCpd$ECn_7H~##1pPL#0nSb9d?&#;!(vL|i7l_ON z#(a5u7++!@2R#8iwc#T67VN$br(Cb}C*W+Wzydfb7I1eZ&}=;7Eh*!x6zhCg4Qa4~ z$mJA>qRPOwI!+#G5+4 z5fSnbs{$zmNp_BN=Kbp0mXh)tLM(vBES0fp!um#Cm;dGYVZuDDRMFbo*YU~mVWzdL z0AwOTW&@?yGR2fP###G<4KP|*(Xksrq)<^OVmG8!1q{SLd6uj%BGoqB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0003M zNklY2nSUm{stSstz`l35{=!y( zk_SNmYtMr?j^*`aN6;jvD9aMUFdPj+sRk(d_HcnDNv1Et)AIL+a_;d8R5}9{1%74jyU$fX8K5g!7ZewOU4(rQ qU9xlA5cO}l2G9T+U~Yi700RI8zZHRui_7r<0000=JZ}D6A|=ODoFO zj<#=bY$d~)RrBH(mf4*-d_QmA+j(O~kJSh00~iJf2B)huet(q9$lhI<{uO}C6^p{& zYh%?YgfxKOoTOG%v?D`1;B*eN@gaB5Qed~);2rlF+65^9G8y%ZvG>>47j!~~i;%XS zqF2>V_HaPiT@VKF4ozuQUulf|-2w#`*gXT#)rAy<5CEA+Qd`(ti`M5T`ba8?-03Zj zceVkK${^e$E`KSAmH^!RFL^=}m`AJuLPo+Vphzj#`KJQ=rgxenfOaGVKt_kjIA%iO zhIyI`BZ2F)o9+VWwf=R2!1g3oHeA2fs4lt=K;{>*OJLB2PDmPnMcyHEVF1c;IGSKN z*Nf)#`KKdUwmY^2$iAJMkcM^$E!H92E;nYESL^1P^nVdl^D|JkqAMpMhsdP0_Uo{+ zf1UmJ`gKjEBBUi;1Kh;x@Ue>s9ly=Co7y$+kRs`jE<)CPDnBQlz5(&O!ra0V0)9Ud zn{l*~G(f5NNM=>40}jEjXY@^Q2m8BF6tQ|R)Q+1$kjOk=$g_3PdN6z+;1CpP9Y9M@ qZC+SyT_MY5BJB!5C)5Y%Ilwm%yYQoVR*XFW0000-rJANMF6ZIh}diCGe za}1YMn*qKd;#p>Khj^YiyX9Dd_lU<>MJ^Ga5GObtkoZ>UipOt)%N~CT=7rn>;1@lm zau+LI%qrXU zjJ_7?;N&QyLVw-_sWs}VQq@RTY3itp-2dlkYctbc_i!2*e0AN=Ng%inG#jq_d+NH) zGa&E+T$>$#m2#T6jWNfgIywO;=?cPt`XP9pGK$Au#R^2Wn-+Bj*oevupPHiJ0ALSVSr@P~d> zn#+rY4rGC`V~D_bTQ1prJ{P6^exG4Z#|Z(}Nq?>fgTyq=#PdA<^m@G{j$@wVyUtpr zYC$p@jRg7q<5L0=BuGU>;Xjb43^rSq#m3_?i=v3#t$ZHyF#B_r1khp-QFc@o@NM^w zdvd$W6|>3$zylGEu zNOrBq#dB%fV$(0Kd)PYwB4ib!QKcHqzsd;!33!ID2?rX&CW01jnXNoGw=04e|g00;m800000 T0Mb*F00000NkvXXu0mjfu5^_h diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/meta.json index 5dd6839da5b..b62adfa1f3e 100644 --- a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/meta.json +++ b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/service.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428. Modified by TJohnson.", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428. Modified by TJohnson. // Icon Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/icon_alt.png b/Resources/Textures/DeltaV/Clothing/Ears/Headsets/syndicate_listening.rsi/icon_alt.png index 0354a3ad03e1d08370756b4ce6cdc5a866d57846..892f6d12f0e391ba8a708a1639f624d60de62ad1 100644 GIT binary patch delta 489 zcmVDiryi^hqBIBy#)EFa-*xN3`aU2K@H7F4(<8N_tBJ1VCZ6U3 fkcA3>sRR4~DJ}D_3S&RE00000NkvXXu0mjfWXR_b delta 505 zcmVpGs7XXYR9Hvtl`(6=Kp2M4TdW1sG1lF>NXM*#LlG3A&|lcqLP0D@ z2f=?J#i^O+{GMupZm_ch<}unl)vI$NWz%xgZ8AI~r*u7q}tZfZ6EYqb&|^ZDMo19j~o$xE_WE`^oP@5x4?t-y1? zpE=Lv4#E)txqsl61QE>Ppin4itD!ZF0yE~Ix5-3Qt5xcQ!C*iVkeSV9M>AsW0u?Sl z!X3vEtKBj&kU_W!Ckp@$XCTpNx2dmI>tn=QlbX z3P-ChhmOPo01}V&I)y*ATJ)Q#L}G!>W<%F)uSXKR9CD_dybT%b^>VpPeJQ2L2Is|a zIMi-IpdDb__RnGBx^C!r9KV;vBK0BhKAjq!g2q5X6$t~C*lj)Es(Ea{at7j^j|V_vPv8cl7foDVn=TiUVzBXyAHK zl&BT6>h3cm<|)y+uZ#ab*DaXy(%_$c1@ErxefN#_@g8Hy4AGhP>zd8?IaS%mIFt{# zB&zNDbZ-0Ct6O{bojLs1H_0XG!1Jl=1wOMr{oL9pnYQSu>&X(K_bpeA3yzvz(t5o; z;rHF;H}{@=SNQlvUtjy&FN~YM&XacWw+)UIyY~3KeSPYTV1^T`)uQ)rj{a$=E_rel z^O9MmVJ9OP=f%$}+RK(WX^z!_ZH-nAyFo67fDneauMeM{`19{(ABIbF?!CJDVtS51 zJ)6hnQ`cg?KDcr^jeUvV9rxG8hVlkXJ-vPWe>6JJv#TV3dYfP&ukqJPUchI{!5Rfw mhG)z(_-~j5uxEfn;{bbL<^G@f$87F_Z1HsUb6Mw<&;$VXyS-!p literal 317 zcmV-D0mA-?P)F)n?n`R1vLw1LN;PQ>vMY>q!((6a8 zzTbLxdC9vw2tY(cM0BQNyk6$4zsP-oo7+juea5jqKmIYdge+B6jaC2vJU?wl%^$sh z-2Ch-aPIzn0h6H%y!YQ8xwdTwKX2^(%c0>S0sy$0ejJ(-ElaS-A5?&<0sxw(!D2qc z{oQImwtm>|$E{f8C%5IjkE)8gt^ok=efMR~%j+A8qA+oKjKTG!89e+_{puG&9u6{1-oD!M<{Fqr2 delta 236 zcmVW`mv2M5cL85{RdDgsbpCnMgFbw10S+0xxRe`#$-x3&o zO2hF9hT3+280s3t zw%+^9%xIbh0MMs+lR2KwD9ci{3eg0dbD4+`LO=-NX_kn<%sIv=k`S*TrG%=gL^%!O mQ90+tKc2LE!!QivC%6JIdp+WT|L-;c0000yx^~S{`^VmO?PqT7 za$)zoJmpi={yX=6YZ{p^W!(OJt4mtf8n%?wO5pWdm=~oB~#qq=_go#`WYA& z%$oSu;g(&3zw+tkko)+uPHG3uZsRYhO2c z^3|9F%EvaD$X1*JIS&jr)XU|w1)W*F(H}&2aZk86JAz;Oar`Q-4<*JI&MZ_vaQW;3 i^HA0e?d%K;4e|PtD|HXgzpeHHq}kKe&t;ucLK6U7i(c{o diff --git a/Resources/Textures/Objects/Devices/communication.rsi/old-radio.png b/Resources/Textures/Objects/Devices/communication.rsi/old-radio.png deleted file mode 100644 index 23315c58a2c7b98d3587c7696fd24ef507461066..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmV;C0dD?@P)vTFwg z6_IF42&F1$9ZG}9%gZB0>hQklcz5saOgla~JrC`xEYKP5xejB=6acBr94Upr zvJLdB3WzpPEtja4OVSwra0By8t3f_2jzUSG+3+!~GytZRrrGcTsNGxvkX={~jiZnr vqRt&K#w}Ty6tC{!xlZUY>iH$qXf&E{dy$VBeQ!MQ00000NkvXXu0mjfVjZ)E diff --git a/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-left.png b/Resources/Textures/Objects/Devices/communication.rsi/radio-inhand-left.png index ddd9d320f9dea2333626c80bd1963fb726f77038..e1cb184a79c41bc605c32bdce52bfbcf245ce02a 100644 GIT binary patch delta 187 zcmV;s07U<{0@neMB!8YsL_t(|obB4N4Z<)G1yF-ngbi3ALxgcsuowk}$00jFMUxWW zMLFrc0lqBzcmAyb0000{?(_UPV%F93Gx97D) zW{Ru^WM!u`;IS;>2hGTAE$ISYy_d)Y000000HB(Y{Xp72U^Gu7`+@L%z@8$0i_15l p%x)lq2DI_rK=})>8vp>{KVOAWEDy%&U1k6P002ovPDHLkV1oSMQ)B=D delta 284 zcmV+%0ptGH0k;B>B!B)%L_t(|obB2%3IZ_@K+(zS5$tU&1-IJL188AwYbEgjf(P*= zdJ79rB7(4$FtVOtC1c32|G~CdGMOYW836zQ001COj8UyZsH(lbRF&nLw{2@VTo%Fd zC-Y-#u)bGkeOI`QyK zPXC-t1Ms-1Y*wq{C;d0GU8R#Im|TUqwm`9|>hc!wXz&3500000000KYv?}~dnL4$a zYi007QP%;m=tpoJ0E>PE*Jpr5KZ5HFD6Su&?}Mhrqox@3Be=f>Qu`5H2cWoqgxp)e ivL68e004s`A{8IGP~iJo-Tf*60000@0{lu2Lqd!C(ZW}ctcKkszV^kvN1&kp`NEO1E6)9_eu;lTLx!c>*gbQXrziVGNdGghm1IouXnFPpIoZ N-_zC4Wt~$(69Cc*TqOVi delta 235 zcmey&*v>RTrT(0!i(^Q|oVT|OxeghK9Q%0vmhz6>J8rLB%)X*|^Xkb<%wIU#G<1t! zh%WiS73a|6q-OX?Z_>6YlcxXA=Tq5JlX6m>0R;Y}_Y~f8n^G2;vsU)Kitx#rZFlb& zmD}%MI&tzY#tPL3lh&u)l}p+9T13KjAE!Y0?nf5gpLusYTc2_yA zdUrAWm@VEJ{qAxH#8{Bgi^Qwa6F!vZznIIozV3j2loj({VTW`F&-4Y~zh=JV;W?#0 im(hwDsE}iFM-9Wl-L~6zy0`U%bb7k_xvX4nJ@ErkR#;MwT(hLl& z?4B-;Ar*7p&fS}LIY6SV_sFfK_6n&BSdTDFW#GKAXv2mnOw2ktdwKO5t6v;B#^lW^ z%pGd(z_er=GgDNX*M<4gD*{ebCuR_x<}BlEU+^X8%nd1MBjm{0dx*|8n+6GHly! z*0ex?!?yIDO;JjRqXG&br!YtGroLX{d{Rq z|NUe0B^jn~y1mx=;bT%X+q8E01BhuiY1BP%rl^ynOWbRr86n+xnV+ zOU_dYR;a74zt3ZE+wy(MIqA8Yi@&qWwC}yU_fY@Q{MYX}8>%0C>wo|8FSq>l#lNRp zH}5hNeSiDk7WuU~ZWp(|{`}F-{DFyi-quIAFB@O}m-hSl`nh+)m;QMBx7CiL=#tHz zJDztKf2_Uzp8cVH>#f_dy{8H+F7}mO<7@hvE~d8lyZ?Tc&*7DSY#9q)e#n=$F`pmv z>i4p#OYgCVqI0r$(N-E1WGf4$syczNN4pX(>oZ?2cx z@@4t_%4`3$`sx!H>g;z+|9|vI_tYgi-A3$v;P9^3J5^O`sg=qnw|}mEIh)4pTZN7H zkDXUdd?dh7h!O9K4Cumj42AZ886MUBVm$Kq3vWkzV>P!FK`p%rvs~BSMps`=sl5J&OLt^rVH|!iQ&r3Il*)#mxh++thobrWv4#WS4 zF1vra^2J13&w(q+=^v-X4qh65gp?}`|HM_^UVE&u@0=wobbWeVx5A+M$#O;1} zvugLuXLR~1ta4o7(0p^Y$#o4sB&TomyPH${r|6qh<>tDEIfgU738(Zl)-n9~!u&x0 zJt)qI4sLf~Tz;DPlD#1(Q`f}%pth@XSSA$R2F>F}8?Jq+D^YoTZU@?Rm+UMj0^L`eYx;{Ms QEGHQ}UHx3vIVCg!04W4|3jhEB literal 536 zcmV+z0_XjSP)Px$(n&-?R9J=WR=rOGF&uqYhzcwOS#DyGgaL5i%Y@zK28oM_D}$qn6N`(6zraD` zVjPW&VPSDq5(z;J#KZ_L4wZmNBoZZrI^gl)SFQyyQQp#P@7MQxef{0Fz!+ov1vs5f zCOVf4LxA7!7oIy50Y;;7^a6Tquh;9s0`wx2ToJ;2ML&wBOJ;USKnt)2Bvwu`iIqBML0Dyi-ktI5??6gsVe3|^+c z*CSzj#6yOmd|gMQ(Ez0slu|rRlrT9h;rR}zoU;wByqX=z&Q$yQ7K;T2g8{W#O)JHx z5c&@Qz~XTf2h9vj0H!V~D6VY+;4ebW0%i*Z$sQ)m5hS?TZ;vHS#r8uGu)f6+&Lwe$ zTYTNm`)Gb0)|ZnHF+b+Odnk$m_pQ6rKTPci@eFhth7_f*t)v+D76=RQxZQ}w;|M7V zV)3{rjkthxHrq+AIxtcJUpY|C@g0cV0!oQ?f?so>_dHNnK1dC4-(c)v!oIUv}f9BYyx1a7bBm000ie000ie0hKEb8vpVQ!P zkmUd`?}-1~wyt0tFb6z*aE*alU}#3cpmTs_jNN|_eSFCwlG6pr4p5CZ`Ok3X7u-@1 zaBxwFG5?e52$CECvedy*onhYgtqguH=5TReV_h(PV9!kkQhxziQIOQ-jl$o2_A&#x zfFuXlc(XG2>geK>|HFO{m=0*@fFoOfGd#Su9jE-``@b1T1w=dGu$}Jz*mGYQWEHs? zo;`G8Fi-G+%bi@XgF#AuAH#E?Jk1<%@;(y-122UA^3G+Tr3g6?UrL^VEI_maN*-Ti zRM0X8XT6X#c7Gsw3nA&m&T#iGjU502l1AKM`tIE)IOR#LCWcN?tgWs0ADj63N3R(S z)B&Ro Z001=ZcCSkjr3wH5002ovPDHLkV1lbQyT$+j delta 343 zcmV-d0jU1S1MvcoBYy!nNkl1t&6U1T%w^Az9NvM+rp@NfxE)K5J zC5w}P!AblFE{+BNKnI85;G_=XAR=xRTExvEjcG`{I|rvq1@8!oa_{&Z-+K@5-F*jE zR#tyeK@g~-yxgLUepJfo zp=#c^(I96w_q740bO8WV&Es`HAFGuPJm|rR>#DYt--a*(a0dCuhM#KS^Pu!bgb_e{ zXKP};+X*>TO6v%Wo?#NFbUPt&ln_S=XXn=>aZ0qHKOl_~kW#X~y#~P5%{@u~g$wQ| z_Z^0sUPcLwrcfhpk52(;H5<&#&(Uf&j1n*c@JA(oG&CqGDt30x(Kj#yDld#U_76z$l?3?( z|3?N4t_SX%0LpL{ctjR6Fx2xM0jfH}I8~cZ8YsHZ)5S5w!hi3CgF=TCcwC%?S{MEK z|9;oP>W07<2QQX4=G@l_$Q1wMG~vkEle-rbfBD`vql{NAZCR3x_2LA*ck3Q4Hst1P zTGHzvcIfQ;BQseRPbfU`h z@<`CMad|8t@w)AYp7+C(Y!yCDne}FGSbEd-^ecb*{LwtL(U^1okFboltSjehm$L5+ RT@Q3EgQu&X%Q~loCII{0gVO*2 delta 274 zcmV+t0qy?W0-^$t8Gi-<0047(dh`GQ0O?6YK~#90?UXT&!axi~|E#!xPccm*QTiC0 zBWxPZFx854P;dnbE`daW6qFNew}mAd%D)973LWu86zn`{3Xk;duNm7wp-`BC7$d#f zk2#GL1OLZBjFCBwH)fF|R#gIkna$zl`Jz06whzPM5xkq3N`IIt=(d4XO{`C!!`=6C zhjSNDe{pg?_ZM93>Xqi9s_eFbs>;6aIgUN~++&zhLff`TDS1=)P*vLg@dfU&C!eba zetvJG*EG!#d&$~_B9bHb8Q822sA@t)U}g{zR5h_#9kR_l#oUX?ZDKrrFD+gu6yA*8o|0J>k`J4qFk;M!Qe1}1p@p%4< z6rf;=r;B4qgnP0C>*55Fo~A$pF1LdY%x)UKLMQD0zuMo;CO(Cou{y6Nc}A9o+onpN zfLSUZwmlcP;grH7q|81+lBXCP)ttWfmlPw3cYyTs=Zqe*(%_W;u6#3tiv|~p{GJ=%7=$`~8At_WrGd9ShZy#h z*kOnXkzp2D4u5!lYZC)Q52l!^GMyYy7z9jc3=>cVb%5o;MH)Nc{DWrWtatM&q`=P1>s0{|( Z0RZRCzZ#?z%#r{A002ovPDHLkV1gl*$^ZZW delta 272 zcmV+r0q_3(1FHg%B!BWrL_t(|ob8k`4#F@DMSp<{_yEjV=7DA zt~~$}8>klmF~E?G1%w$;t9EOhiUIPZ3_p^cpTss02m}Ve7$e%)(U3-hf&VdJj1iy0 zYclZ(W@Z5Z=iCrpx*sZgh|8mT$sSUf=}Xi%;E+Xfnols_ynpJwVm-pNcp_d(?|iB+ zSX>{t+{Z0_?0**>%q)j25@wdNETyS6`P6M_twoxqu-0l*=wN1XdHV$_t;wgVf%EOt zdP$PhT8q~tBqE=1oq_FYhgmEjA~@$jM3}{b?P}+3rV~RCBDINT`+fEBKp^mQyaC~7 Wcnq&YI#>Vz00{s|MNUMnLSTX_8hg+H diff --git a/Resources/Textures/Objects/Devices/jammer.rsi/jammer-on.png b/Resources/Textures/Objects/Devices/jammer.rsi/jammer-on.png new file mode 100644 index 0000000000000000000000000000000000000000..987e571b263f8b1a1c863755865ddbb5f496cfbb GIT binary patch literal 537 zcmV+!0_OdRP)5+Iv#X1vlY<|@&)`S! zGYHPzoE%+>n}Z;fT1C;N2el0}Q3@%fXY$I0APU|k*E4W`NZ;KBdcT*;y(IqvD3%7$ z09*j=_8uLNr{FkGh7tf7(g67axH=ue-OUh=FBAd%B(^h{cy~x@fKquqZYM#c034n* z!`~*@_LQ=*muC{67pV_i0Lg5>E6RS~-bS#l^YCYo)Jw2y)}gm}$9BUqfcO-6lp26d zE~-rHK!^0@-UBj}Ux4JEuhlAe0JNyoLUiOf81H8Rbi#?)wrhBwI8I;JEOWTu=I|@du*GPpnNi_usHzD~4BO&i5aw0HVyJ$)hMLVSqVZIw3v{;<1(c z0}KK|7GhT+UzLz4$~^gX)U0nnsag(OTU2Tx`qdwBKX9B-6A17rpG%+&K>GvQACMsp bpd8=}cvi=k6xZ2A00000NkvXXu0mjfjHTr1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Devices/jammer.rsi/jammer.png b/Resources/Textures/Objects/Devices/jammer.rsi/jammer.png index 6de27ba924f109e4b6bcf08e517a0ec822575e90..99e0246bfb1acdddf9df6c748233bfd2b808c0bf 100644 GIT binary patch delta 282 zcmV+#0pZEqh?^5kDm)JkL(bdIKZbv8c0e*E&70ADXG3E*#XGDMF-^g zo@57L13FA%3|IcWB3nPj4xq$xsyF}{*b8g^2hj)LUMD&&P=D0{QtXTj&wl%mgsHgxK?*fX^v>*z4`xZ=J{Pve&InW|loJ)QB0v3P9z|3%vfiy65qhLTBuufPQ zOn+ke#vuGt?f(^qzhM4LJ^?UI^SS^TfD#=w07(w`^zj>*Cb!(D*a0_goFcilqpAaF g0Y)7#;0^!)$P*M&!Hni>ga7~l07*qoM6N<$g7i9kt^fc4 delta 449 zcmV;y0Y3i80`CKmIDY}5Nkl6vkf-K{idOLjAg~(YO|O zcmb~<8!d*Vn=aY8GU*vum9SPC5@~{93W-+UglPr?GBs@oreD&`zjnUgn|U*7%rFet zq++mPMF0^%1hBmT2i~0_G^}6tLtX8YJSS}k21OUx%o_|gup98q6R$Z;p@QkQA zt*?Xd4Sh#@!^&v8Jj2NQi*FDe4PR` z-AkoN-5v~9zK7Y5iMTESeF0#WtBOMQ{G?ETR;x8z6-~Ify!N7Ik0L_QzCZv_G~v3P zj@L(*e;GtzHzAGweLRM2Ham}AUpYCCu`d7=8$C_LAUebaAPC$6g#&P}Y2*lsqDb1! rW-~A%U-tlnpzZx3i2x#ie*^Fhk4m}f98Gi-<0047(dh`GQ010qNS#tmY4#WTe4#WYKD-Ig~00DYQL_t(| zoMT}aU@+={Q3sIa059)||J$~%U>q<9JbZACfm&c_M!}$SfMtx`e-M3q$sv-{1<4Lj zjW_wvaOM}>QV?)(QHL@Alj;bP900P^!BL%I-uA5welF&4aerT9T`+xM&rJqW0a;Oy z)a8xB-+cBm1G#`C2iSPCGWhD~;*|fxeh-)qXy||=TYob=ytW;u{Nww-8At_0JK(UL z?*G_xUm0W-xfz~4bYd`1@PNymT(E;dN`4>1bD%uU9B}eJ69WS;g#Gf)WuT=9IS^k; zo`Ebtv;#^WUw>p&&@u*Ry^u6^AbATR>BP=(_b!bc00NRm++h0d-6uHZNv$S^PEo9_ zt@j_B`1wb#84Tq_Y43nHuir56F$jR!W(%G%oJx=aTmEVLGluh?3}ickXa~G}^^8%8 zK?NKN`m(CI{*Path7KUt j5~@0Y+F;ZHqYeN7H12kO>_%)r2R z7=#&*=dVZs3YL1hIEGmGU!CAx&)1;928{u)8H0aHR=D5Vkpy%BgQu&X%Q~k7#wGyW CcVF!Q diff --git a/Resources/Textures/Objects/Devices/station_beacon.rsi/blink.png b/Resources/Textures/Objects/Devices/station_beacon.rsi/blink.png index 53fabd17147d2c566dd0d0980241aeb7f1d65d4e..cd94b9738a05ffbf12b4527479336fabaf91a047 100644 GIT binary patch literal 447 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3HF&`%2dVDb50q$YKTtz9S&aI8~cZnt_3_ z(9^{+q+-t78}{CZ69m{kXmivtI38RXG^gp2f}WH5NB+Ad#Vck%Ps(Ea{at7j^j|V_vPv8cl7foDVn=TiUVzBXyAHK zl&BT6>h3cm<|)y+uZ#ab*DaXy(%_$c1@ErxefN#_@g8Hy4AGhP>zd8?IaS%mIFt{# zB&zNDbZ-0Ct6O{bojLs1H_0XG!1Jl=1wOMr{oL9pnYQSu>&X(K_bpeA3yzvz(t5o; z;rHF;H}{@=SNQlvUtjy&FN~YM&XacWw+)UIyY~3KeSPYTV1^T`)uQ)rj{a$=E_rel z^O9MmVJ9OP=f%$}+RK(WX^z!_ZH-nAyFo67fDneauMeM{`19{(ABIbF?!CJDVtS51 zJ)6hnQ`cg?KDcr^jeUvV9rxG8hVlkXJ-vPWe>6JJv#TV3dYfP&ukqJPUchI{!5Rfw mhG)z(_-~j5uxEfn;{bbL<^G@f$87F_Z1HsUb6Mw<&;$VXyS-!p literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4vh_V(978f1 z-%eSWci2Fn?Z4k_lQf|O))t8tiJ!LH)FswhZ7`RZVG`H-zV^_z1rr!9vs~$VBIL~P zvodUgPT1ShRqvcTOLx7mDd%($U~vSYBdQPnrpXG`i|%e%{(Nfx++xl9)4#u8=-c5n z?|FJQ14B(+PV=AZ3z;;ZE?JN{D>P%@jeom;=LYOsz~-U3H|W)iH{a6!f4<6pSRmxU z&cBZT8J^29ELfMFv6hjccK_kWzZh%xHy888URS-{B=XNy+F;$?2!>>yYqxIRm@(hk z>;HOQ0jG+kB0Yu~x65p-yDBSdt!>0z8+A@UnDaU6_2k(TZtc%t?lIhOt*N+g)he~e z7SAV7wrrj9&sA8+se(b{bWzv=32PtCV_*Isk`H+jaYDvW|KI&TFrR&7-DtCOrf8kX RKVUdAc)I$ztaD0e0st59p{oD@ diff --git a/Resources/Textures/Objects/Devices/station_beacon.rsi/icon.png b/Resources/Textures/Objects/Devices/station_beacon.rsi/icon.png index 67f3f53eb5010a9b612cd02ec21f1d09fb71a651..15c1e94221d6ad947744547dfc7b4a8634b81917 100644 GIT binary patch delta 257 zcmZ3-G>K_~WIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstU$hWfKQ0) zP8VHqF)3|rz0Ax?MP-A|&N*J*5pVYd0p(5Ztpxz|{T;`{9({iY5uxk4q!ywY7;7H|gb?uFFJ@!En+a diff --git a/Resources/Textures/Objects/Devices/station_beacon.rsi/meta.json b/Resources/Textures/Objects/Devices/station_beacon.rsi/meta.json index 771ce4c261a..96aaf12a24a 100644 --- a/Resources/Textures/Objects/Devices/station_beacon.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/station_beacon.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Created by EmoGarbage404 (github) for SS14, based on beacon design from /tg/", + "copyright": "Created by EmoGarbage404 (github) for SS14, based on beacon design from /tg/ // Icon/Blink Taken from Paradise at https://github.com/Henri215/Paradise/blob/27087670280de99e2fceb47194aad29a7b99b280/icons/obj/radio.dmi", "size": { "x": 32, "y": 32 From 068ee52f47497ada24bb8625e93351bb0b110364 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Wed, 29 May 2024 00:05:08 +0000 Subject: [PATCH 079/111] Automatic Changelog Update (#402) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ba49523cfde..976421ab857 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4094,3 +4094,11 @@ Entries: appear on low-pop servers. id: 6112 time: '2024-05-28T23:44:39.0000000+00:00' +- author: FoxxoTrystan + changes: + - type: Tweak + message: Better wall sprites. + - type: Tweak + message: Better window sprites. + id: 6113 + time: '2024-05-28T23:59:19.0000000+00:00' From 08c8a73197d938538e16bc69561d765926cf0667 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Wed, 29 May 2024 00:14:23 +0000 Subject: [PATCH 080/111] Automatic Changelog Update (#404) --- Resources/Changelog/Changelog.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 976421ab857..96983e8124e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4102,3 +4102,13 @@ Entries: message: Better window sprites. id: 6113 time: '2024-05-28T23:59:19.0000000+00:00' +- author: FoxxoTrystan + changes: + - type: Tweak + message: Radio Resprites, Talkwalkies, Beacon, Headset... + - type: Tweak + message: >- + Radio and uplink radio looks the same, make sure to check what freq the + radio is on! + id: 6114 + time: '2024-05-29T00:00:50.0000000+00:00' From 67df38eab15ae138d3b614c0ca049e8b5b70c4a2 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 20:48:10 -0400 Subject: [PATCH 081/111] Mirror: Change Syndie Monkey Price 8-6 TC (#243) ## Mirror of PR #26214: [Change Syndie Monkey Price 8-6 TC](https://github.com/space-wizards/space-station-14/pull/26214) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `6095383ce491e9cb4836662f3bc56ee26eee29f6` PR opened by
    FungiFellow at 2024-03-17 17:55:32 UTC --- PR changed 1 files with 2 additions and 2 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > > I decreased the Price of Monkey reinforcements from 8 to 6, > ## Why / Balance > > Monkies are awful in combat and anyone can take them out with 1-3 shoves and aren't worth 8TC 90% of the time unless the consience piloting it is robust. > ## Technical details > > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > :cl: > - tweak: Changed Monkey Reinf Price to 6TC
    Co-authored-by: SimpleStation14 --- Resources/Prototypes/Catalog/uplink_catalog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 90d2a0e53e7..1e81cdf2dd1 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -494,7 +494,7 @@ productEntity: ReinforcementRadioSyndicateMonkeyNukeops icon: { sprite: Objects/Devices/communication.rsi, state: radio } cost: - Telecrystal: 8 + Telecrystal: 6 categories: - UplinkUtility conditions: From 8629041c94849b4abc8db33a85205add34a00ff0 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 20:48:30 -0400 Subject: [PATCH 082/111] Mirror: Updated the TEG page (#260) ## Mirror of PR #26170: [Updated the TEG page](https://github.com/space-wizards/space-station-14/pull/26170) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `353784bfaed731b8a803a3191e51c9afaf6e5bb4` PR opened by Terraspark4941 at 2024-03-16 05:21:22 UTC --- PR changed 1 files with 166 additions and 13 deletions. The PR had the following labels: - No C# - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > Updated the TEG page to have actual information/meta about setting up the TEG > Ported from guidebook-cleanup branch on my fork > [ This information has been certified by a TEG-setup expert ] > > ## Why / Balance > > It made me angry reading the old page and not getting the information that I needed > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > > > :cl: > - tweak: The TEG page in the guidebook has been updated with proper information! > >
    Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- .../ServerInfo/Guidebook/Engineering/TEG.xml | 179 ++++++++++++++++-- 1 file changed, 166 insertions(+), 13 deletions(-) diff --git a/Resources/ServerInfo/Guidebook/Engineering/TEG.xml b/Resources/ServerInfo/Guidebook/Engineering/TEG.xml index a2a04e03ef0..9e8697a9e13 100644 --- a/Resources/ServerInfo/Guidebook/Engineering/TEG.xml +++ b/Resources/ServerInfo/Guidebook/Engineering/TEG.xml @@ -1,18 +1,18 @@ - + # Thermo-electric Engine (TEG) - The TEG generates power by exchanging heat between hot and cold gases. On station, hot gas is usually created by burning plasma, and an array of heat-exchanging pipes in space radiates away heat to make a cold side. + The TEG generates power by exchanging heat between hot and cold gases. On the station, hot gas is usually created by burning plasma, and an array of heat-exchanging pipes in space radiates away heat to cool down circulated gases. - The TEG relies heavily on atmospherics piping. The only truly special component about it is the generator core, the rest is all off-the-shelf atmospherics equipment. Note that while the exact layout may vary significantly depending on station, the general components and setup are usually the same. + The TEG relies heavily on atmospherics piping. The only truly special component about it is the generator core and circulators; the rest is all off-the-shelf atmospherics equipment. Note that while the exact layout may vary significantly depending on station, the general components and setup are usually the same. ## Generator - The main generator itself is a machine made up of multiple parts: the core generator and two "circulators", in this arrangement: + The main generator itself is a machine made up of 3 major parts: the central generator and two "circulators", in this arrangement: - - - + + + The circulators take in either a hot or cold gas, and pass it through the machine to exchange heat. The gas then gets output on the other end of the circulator. The generator produces the actual power and outputs it over an HV wire. @@ -21,19 +21,172 @@ There is no preference for which side must be hot or cold, there need only be a difference in temperature between them. The gases in the two "loops" are never mixed, only energy is exchanged between them. The hot side will cool down, the cold side will heat up. - ## Burn Chamber + ## The Pipes + + There are 2 major pipenets to worry about here: The Hot Loop (where gas will be burnt for heat), and The Cold Loop (where circulated, heated waste gas will either be removed into space or cooled back down). Make sure that [bold]both pipenets do NOT mix[/bold], as only heat should be transferred between the two through the TEG. + + # The Hot Loop + + As I'm sure a wise person once said: the best way to make something hot is to light it on fire. Well, depending on context, that may not be very wise, but luckily your engineering department has just what's needed to do it wisely after all. + + As stated above, there are many different layouts one can follow to heat up (or cool down) gases; this part of the guide will cover 2 common methods one will often see for the hot loop when the TEG is setup: The Pipe Burn, and the Burn chamber. + + Side note: Plasma fires burn relatively cool compared to, for example, Tritium fires. It may be viable to extract Tritium from an extraction setup (using a 97/3 ratio of O2/Plasma) and react it with Oxygen to get truly hellish temperatures for power. Although, this is just a recommendation; I'm not ya mum. + + ## The Pipe Burn + + Also known as the naive method, this is generally discouraged when working for efficiency. However, if all you need is a smidge of power to run the station, and you don't feel like setting up the burn chamber, this method will do. + + TODO: Remove this section when atmos pipes are updated to have pressure/temperature limits in a future atmos refactor. + + Most (if not all) pipe burns follow this general layout: + + Gas input -> High-pressure pump -> Pipe segment (with heater) -> Low-pressure pump -> Circulator + + + + + + + + + + + + - The Gas input is pretty self-explanatory; this is where you will input the O2-Plasma mix to be burnt. A 2:1 (67/33) ratio of Oxygen to Plasma is recommended for the hottest burn. + - The High-pressure pump serves 2 purposes; first, it prevents the burn from backwashing into the supply pipe, which would be.. bad, for many reasons. Second, it maintains a positive pressure in the following pipe segment, which is important to allow the burn to continue, especially since hot gases expand. + - The Pipe segment is where the burn actually occurs; to start it off, one can use a heater to increase the temperature up to the ignition temperature of Plasma. Afterwards, the reaction should be self-sustaining, so long as the Pressure and Moles supplied remains high enough. Be warned; if you wish to remove the heater, it will carry some of this superheated gas with it, transferring it to the next pipenet you connect it to. Best to space the gas through a space vent, if you must. + - The Low-pressure pump (whose pressure should be [italics]slightly lower[/italics] than the input pump) prevents [italics]all[/italics] the gas from passing through the circulator, which could result in the loss of the Moles required to sustain a burn. + - The Circulator is where this generated heat will flow to the cold loop; afterwards, feel free to space the waste gases. + + Note: Pressure pumps are used here as, while they pump on pressure (not flow-rate, which is comparatively faster), they are a bit easier to control when it comes to the limited Plasma supply on-station. However, the steps shown can be followed with volumetric pumps too. + + ## The Burn Chamber + + The burn chamber is the preferred method for heating up gases, and it is commonly used for other purposes too. (see: Tritium production) + + Most (if not all) stations have the burn chamber separated from the main atmospherics block by a 1-wide spaced grid, presumably to prevent conduction. The chambers consist of 3(+1) important parts: + - The Air Injector/Passive Vent + - The Space Vent + - The Radiator Loop + + Most normal burn chambers don't come with Heat-Exchangers; instead, they have air scrubbers (and optionally, an air alarm) to help filter for Tritium, which is a highly reactive, hot-burning gas that can also be used to heat the TEG efficiently. + However, this is a slightly more advanced setup than just burning plasma, as it needs 2 burn chambers instead of 1 (one for tritium production, one for burning said tritium), so remove the scrubbers and retrofit the burn chamber with a parallel array of heat-exchangers instead. + + The air injector (or Passive Vent) injects air (or allows air to flow) into the burn chamber. Either should be supplemented with a pump before it, to keep pressures high. + There is a notable difference between the passive vent and the air injector; the air injector can only keep injecting air up to 9MPa, which can be reached very easily with a good burn. Ideally, switch out the air injector for a passive vent connected to a volume pump. + + The space vent (designated as a blast door to space on one side of the burn chamber) allows waste gases to be expelled and destroyed. Open this to keep the pressure under control. + + The radiator loop collects heat from the burnt gases and brings it to the TEG. To maximize efficiency, hook up the heat-exchangers [italics]in parallel to each other[/italics], with a pressure pump at max pressure after the array and a volumetric pump before the array. + The pressure of the volumetric pump should be set to ( 200 / number of heat-exchangers ) L/s. For example, having 2 heat-exchangers would mean you should set the pressure to 100 L/s. + Finally, fill the whole loop with (ideally) a high heat capacity gas, like Frezon or Plasma. (Yes, Frezon =/= Cold. Frezon has one of the highest heat capacities in the game; so long as it isn't reacting with Nitrogen, it can actually be heated and can store heat really well!) + + # The Cold Loop + + As with the Hot Loop, the Cold Loop must also be setup in order to operate the TEG. However, the Cold Loop is usually a lot more low-tech than the Hot Loop; in reality, the Cold Loop only has to be "relatively" cooler -- hey, room temperature is technically cooler than the surface of the sun, right? + + There are 3 main methods you will see used for the Cold Loop: The Water Cooler (see: Liltenhead's video on the TEG), the Coolant Array and the Freezer Loop. + + ## The Water Cooler - As I'm sure a wise person once said: the best way to make something hot is to light it on fire. Well, depending on context that may not be very wise, but luckily your engineering department has just what's needed to do it wisely after all. + An equally naive method as the Pipe Burn, this simply involves taking some useless gas (in this case, Water Vapour) and flowing it through the TEG and into space. It's dirt-cheap and simple, at the cost of efficiency and permanant loss of gas. - TODO: somebody fill this out once we settle on a general mapped layout for burn chambers. + Setting this up is so simple, even Hamlet could manage it. Just take an output of a gas (here, Water Vapour), send it through the Cold side of the TEG, and then vent it into space. + + + + + + + + + + + TODO: Remove this section when gas miners are removed in a future atmos refactor. ## Coolant Array - A whole bunch of heat-exchanger piping in space. There's not much to say here: gas goes through and cools down. + This is the default method for the Cold Loop you will see on a variety of stations. Being of moderate complexity and having no losses of any resource, this [italics]should[/italics] be the main method of cooling down the TEG. However, every station at the moment somehow has their heat exchangers hooked up wrong, reducing efficiency greatly. (Thanks a bunch, NT!) - ## The Pipes + To use heat-exchangers properly, they must be setup in [italics]parallel[/italics], not in series (like what you see on most stations). A gas pump at max pressure should be placed after, and a volumetric pump before the heat-exchangers. + The flow-rate of the volumetric pump should be set to ( 200 / number of heat-exchangers ) L/s. - TODO: somebody fill this out once we settle on a general mapped layout for burn chambers. + Simply speaking, the Coolant Array consists of 3 major parts: An input connector port, a few pumps and the heat-exchanger array out in space. It can be setup like so: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - Connector Port: Use this to input a gas with high heat capacity; most of the time, Plasma or Frezon is used to do so, as they both have very high specific heat capacities (although most any gas will do). (Yes, Plasma =/= Hot. You can cool it down, and it acts as a really good heat exchange medium.) + - Input/Output Pumps: Used to make sure gas keeps flowing through both the Circulator and the Heat-Exchanger array. As the gas cools down and heats up (and as it flows through the Exchanger), pressure must be applied for it to keep flowing. + - Heat-Exchanger: Basically, just a bunch of heat-exchanger pipes in space. Not much to say, besides the fact that it cools down the gas inside it. Make sure the heat-exchangers are placed on lattice, not plating! Otherwise, the heat-exchange efficiency will be greatly reduced, as the heat-exchangers aren't directly exposed to space below them. + + ## The Freezer Loop + + Most of the time, you will see this method being used in efficient TEG setups. It's basically just the Coolant array, but replacing the Heat-Exchangers with a freezer. Even though the freezer does use power, it is only a small fraction of what the TEG can generate, and it's better than the default Coolant array at the moment, so go fish. + + Just follow the steps for the Coolant array, but use a freezer in place of the Heat-Exchangers. As so: + + + + + + + + + + + + + + + + + + + + Once again, use Plasma or Frezon in the loop for max efficiency (although most any gas will do). From b7583b3ed8aa1c693065a825d2e581db9c88c1e3 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 20:48:51 -0400 Subject: [PATCH 083/111] Mirror: Red Neck Gaiter (#214) ## Mirror of PR #25891: [Red Neck Gaiter](https://github.com/space-wizards/space-station-14/pull/25891) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `1938768ea69ad2f69758036816142a205552eb63` PR opened by Nairodian at 2024-03-06 22:32:25 UTC --- PR changed 8 files with 41 additions and 0 deletions. The PR had the following labels: - No C# - Changes: Sprites ---

    Original Body

    > ## About the PR > Real simple. Adds a (shameless) recolor of the existing neck gaiter in a red variant and adds two of it to the AutoDrobe > > ## Why / Balance > I felt like a proper red face mask style was missing to go with the new cowboy stuff. > > ## Media > ![image](https://github.com/space-wizards/space-station-14/assets/110078045/bae039ea-7b0c-4d14-8351-c58ea164ad5d) > - [X] I have added screenshots/videos to this PR showcasing its changes ingame. > > **Changelog** > :cl: > - add: Added a new red neck gaiter to the AutoDrobe. >
    --------- Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- .../Catalog/Cargo/cargo_vending.yml | 2 +- .../VendingMachines/Inventories/theater.yml | 1 + .../Entities/Clothing/Masks/masks.yml | 10 ++++++ .../equipped-MASK-reptilian.png | Bin 0 -> 442 bytes .../Mask/neckgaiterred.rsi/equipped-MASK.png | Bin 0 -> 409 bytes .../Clothing/Mask/neckgaiterred.rsi/icon.png | Bin 0 -> 307 bytes .../Mask/neckgaiterred.rsi/inhand-left.png | Bin 0 -> 332 bytes .../Mask/neckgaiterred.rsi/inhand-right.png | Bin 0 -> 349 bytes .../Clothing/Mask/neckgaiterred.rsi/meta.json | 30 ++++++++++++++++++ 9 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK-reptilian.png create mode 100644 Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK.png create mode 100644 Resources/Textures/Clothing/Mask/neckgaiterred.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Mask/neckgaiterred.rsi/meta.json diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml index d0ae444bf77..76ab0499170 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml @@ -34,7 +34,7 @@ state: base product: CrateVendingMachineRestockClothesFilled cost: 8050 - category: cargoproduct-category-name-service + category: Service group: market - type: cargoProduct diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml index 92e4032b0cb..bb21bc36d47 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml @@ -87,6 +87,7 @@ ClothingShoesBootsCowboyBrown: 1 ClothingShoesBootsCowboyBlack: 1 ClothingShoesBootsCowboyWhite: 1 + ClothingMaskNeckGaiterRed: 2 emaggedInventory: ClothingShoesBling: 1 ClothingShoesBootsCowboyFancy: 1 diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index 1f70211caa8..ad738792a73 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -514,6 +514,16 @@ tags: - WhitelistChameleon +- type: entity + parent: ClothingMaskNeckGaiter + id: ClothingMaskNeckGaiterRed + name: red neck gaiter + components: + - type: Sprite + sprite: Clothing/Mask/neckgaiterred.rsi + - type: Clothing + sprite: Clothing/Mask/neckgaiterred.rsi + - type: entity parent: ClothingMaskClownBase id: ClothingMaskSexyClown diff --git a/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK-reptilian.png b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/equipped-MASK-reptilian.png new file mode 100644 index 0000000000000000000000000000000000000000..88542905cfcfe65b7cebca3fe31c4d573ba03577 GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wk0|R4@ zr;B4q#hkadHu^OOh_F3~f6UnX|KM5h52X@ebpCp@BY?F y7w^xTCu(n6=qDVID!sz*$hw}A@!`Oc`yTz+vR@9N{n zE*^&rKbI-pQF$g3n4qU=WUkEKs%MLD#Z zZk_o0`oia5kLkHKS_HqDeqhys2_MZT2w$kTPmxIHy1kW`;j4=Agpkx^x%5@WZ}UID zjAQ(8i~ZJ${@{7Z^|qVerL6bcJLT7dS=>zue^~vm@kOwi|M*%B^e}^`tDnm{r-UW| DT{(Is literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-left.png b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..5a37ace23e68bc693b636d6409220d71466ae9ba GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAQ1G9p zi(^Q|oVT|Oxehr9v_1^f*}}mcrWA2RFSJNJdi})iincBHT(!B6T7@c1Ez91j;K6ct zX2yg6zxH^hi3gqO02%=T9UEur|Cvy9{8r=Zmp;~)Ov3jv?ko<{3)UB^&wBW?Xy&gw zmc7@j4L5R}ojduIXkE2cPg2o0U)xoi4n29r{>nUIs)~|QQBL&KJrjhBwyrc+*l{nv ze(Gh{y^On0M*@wz-ttZV^eb@=h-C~60!!a3y5;OW_=Y{=YH)7DQxIFTBvW=g7$k77w1alox)LiaTPwqe^_Pj7i_IlP#X+b7olx zXaq!g{@X9=w13Z*)CzwVpvgesF!O9qT+6wH#hK?OzU@AJa!chbhFQBhZt7VRp}?mu98-qj^V@HpS1 zujikb?0kJi?7_dva&M82+`QM`1@*hP@jVXKw`~8!ZPGSP9AYs815d+yHW&HVk=u`* z`Y})PMe^QbtQ?lcA8!9HUs`0hz~{xxMxW3p58qXW$lX3IB)3Fy;F)U1Hi&=O7 qrO+2!;}7A+Tnno{eEG+CV4?o;F1P-kci&%v4EJ>Pb6Mw<&;$TKbd<9I literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/meta.json b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/meta.json new file mode 100644 index 00000000000..9094fa918f0 --- /dev/null +++ b/Resources/Textures/Clothing/Mask/neckgaiterred.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Originally sprited by belay5 (Discord) then recolored by Nairod (Github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-MASK", + "directions": 4 + }, + { + "name": "equipped-MASK-reptilian", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} From 6657aeabf1b3bce929acfe4fcd2e7254202b1836 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 20:49:07 -0400 Subject: [PATCH 084/111] Mirror: Add PVS command permissions (#207) ## Mirror of PR #26124: [Add PVS command permissions](https://github.com/space-wizards/space-station-14/pull/26124) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `361092a40b110049b85187e935f4eb531f36a99f` PR opened by ElectroJr at 2024-03-15 03:05:58 UTC --- PR changed 1 files with 1 additions and 0 deletions. The PR had the following labels: - No C# - Status: Needs Review ---

    Original Body

    > Requires https://github.com/space-wizards/RobustToolbox/pull/4958
    Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- Resources/engineCommandPerms.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/engineCommandPerms.yml b/Resources/engineCommandPerms.yml index 15200531e3a..51743c6e822 100644 --- a/Resources/engineCommandPerms.yml +++ b/Resources/engineCommandPerms.yml @@ -67,6 +67,7 @@ - scene - replay_recording_stats - print_pvs_ack + - pvs_override_info - merge_grids From 159ebe44fd7d543990a0513bbec3e01e2d49557a Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 20:49:35 -0400 Subject: [PATCH 085/111] Mirror: fix admin verb to set unspawned ballisic ammo count (#375) ## Mirror of PR #26411: [fix admin verb to set unspawned ballisic ammo count](https://github.com/space-wizards/space-station-14/pull/26411) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `451890b85b49e17a0019d107db4a31a48cdd3518` PR opened by IProduceWidgets at 2024-03-24 21:06:57 UTC --- PR changed 2 files with 15 additions and 3 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > Fixed #26362 > > ## Why / Balance > > > ## Technical details > > I made the UpdateBallisticAppearance function public, I can't think of any reason that's a bad idea. > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > :ADMIN: > - fix: setting ballistic ammo counts for a magazine should no longer be able to crash your game.
    Co-authored-by: SimpleStation14 --- .../Systems/AdminVerbSystem.Tools.cs | 16 ++++++++++++++-- .../Ranged/Systems/SharedGunSystem.Ballistic.cs | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs index c68336deab8..9d66338c8bf 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs @@ -718,9 +718,21 @@ private void AddTricksVerbs(GetVerbsEvent args) Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Fun/caps.rsi"), "mag-6"), Act = () => { - _quickDialog.OpenDialog(player, "Set Bullet Amount", $"Amount (max {ballisticAmmo.Capacity}):", (int amount) => + _quickDialog.OpenDialog(player, "Set Bullet Amount", $"Amount (standard {ballisticAmmo.Capacity}):", (string amount) => { - ballisticAmmo.UnspawnedCount = amount; + if (!int.TryParse(amount, out var result)) + return; + + if (result > 0) + { + ballisticAmmo.UnspawnedCount = result; + } + else + { + ballisticAmmo.UnspawnedCount = 0; + } + + _gun.UpdateBallisticAppearance(args.Target, ballisticAmmo); }); }, Impact = LogImpact.Medium, diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index a8f7ee23956..91aad895821 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -261,7 +261,7 @@ private void OnBallisticAmmoCount(EntityUid uid, BallisticAmmoProviderComponent args.Capacity = component.Capacity; } - private void UpdateBallisticAppearance(EntityUid uid, BallisticAmmoProviderComponent component) + public void UpdateBallisticAppearance(EntityUid uid, BallisticAmmoProviderComponent component) { if (!Timing.IsFirstTimePredicted || !TryComp(uid, out var appearance)) return; From af3d9350c445542fca53a9284eb8b4e85a8e88e6 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Wed, 29 May 2024 03:06:42 +0200 Subject: [PATCH 086/111] Glorious Tools! (#407) # Glorious Tools! Add//Change a bunch of tools sprites that was in the tool category to make them fit better in general, Old TG... please update.exe Anywho here they are! --- # TODO - [x] Import Sprites ---

    Media

    ![image](https://github.com/Simple-Station/Einstein-Engines/assets/45297731/233559ef-0367-4836-a258-d41e481cba4e)

    --- # Changelog :cl: - tweak: New Tools Sprites! --- .../Textures/Objects/Tools/crowbar.rsi/icon.png | Bin 174 -> 371 bytes .../Objects/Tools/crowbar.rsi/meta.json | 2 +- .../Objects/Tools/crowbar.rsi/red-icon.png | Bin 200 -> 446 bytes .../Objects/Tools/drill.rsi/drill_bolt.png | Bin 886 -> 702 bytes .../Objects/Tools/drill.rsi/drill_screw.png | Bin 887 -> 691 bytes .../Textures/Objects/Tools/drill.rsi/meta.json | 2 +- .../Objects/Tools/geiger.rsi/geiger_base.png | Bin 427 -> 467 bytes .../Objects/Tools/geiger.rsi/geiger_on_ext.png | Bin 228 -> 260 bytes .../Objects/Tools/geiger.rsi/geiger_on_high.png | Bin 176 -> 218 bytes .../Objects/Tools/geiger.rsi/geiger_on_idle.png | Bin 173 -> 218 bytes .../Objects/Tools/geiger.rsi/geiger_on_low.png | Bin 176 -> 218 bytes .../Objects/Tools/geiger.rsi/geiger_on_med.png | Bin 176 -> 218 bytes .../Textures/Objects/Tools/geiger.rsi/meta.json | 2 +- .../Tools/hand_labeler.rsi/hand_labeler.png | Bin 273 -> 479 bytes .../Objects/Tools/hand_labeler.rsi/meta.json | 2 +- .../Objects/Tools/multitool.rsi/green-unlit.png | Bin 123 -> 176 bytes .../Objects/Tools/multitool.rsi/icon.png | Bin 359 -> 540 bytes .../Objects/Tools/multitool.rsi/meta.json | 2 +- .../Objects/Tools/multitool.rsi/red-unlit.png | Bin 117 -> 175 bytes .../Tools/multitool.rsi/yellow-unlit.png | Bin 121 -> 174 bytes .../Textures/Objects/Tools/rcd.rsi/icon.png | Bin 638 -> 857 bytes .../Objects/Tools/screwdriver.rsi/meta.json | 2 +- .../Tools/screwdriver.rsi/screwdriver-map.png | Bin 262 -> 310 bytes .../screwdriver.rsi/screwdriver-screwybits.png | Bin 152 -> 225 bytes .../Tools/screwdriver.rsi/screwdriver.png | Bin 227 -> 223 bytes .../Objects/Tools/seclite.rsi/meta.json | 2 +- .../Objects/Tools/seclite.rsi/seclite-on.png | Bin 287 -> 260 bytes .../Tools/seclite.rsi/seclite-overlay.png | Bin 121 -> 279 bytes .../Objects/Tools/seclite.rsi/seclite.png | Bin 286 -> 321 bytes .../Objects/Tools/spray_painter.rsi/meta.json | 2 +- .../Tools/spray_painter.rsi/spray_painter.png | Bin 518 -> 772 bytes .../Textures/Objects/Tools/welder.rsi/icon.png | Bin 290 -> 568 bytes .../Textures/Objects/Tools/welder.rsi/meta.json | 2 +- .../Objects/Tools/welder.rsi/welder_flame.png | Bin 181 -> 255 bytes .../Tools/welder_experimental.rsi/icon.png | Bin 564 -> 907 bytes .../Tools/welder_experimental.rsi/meta.json | 2 +- .../welder_experimental.rsi/welder_flame.png | Bin 295 -> 247 bytes .../Tools/welder_industrial.rsi/icon.png | Bin 345 -> 462 bytes .../Tools/welder_industrial.rsi/meta.json | 2 +- .../welder_industrial.rsi/welder_flame.png | Bin 296 -> 247 bytes .../Tools/welder_industrialadv.rsi/icon.png | Bin 396 -> 548 bytes .../Tools/welder_industrialadv.rsi/meta.json | 2 +- .../welder_industrialadv.rsi/welder_flame.png | Bin 297 -> 247 bytes .../wirecutters.rsi/cutters-cutty-thingy.png | Bin 217 -> 239 bytes .../Tools/wirecutters.rsi/cutters-map.png | Bin 331 -> 411 bytes .../Objects/Tools/wirecutters.rsi/cutters.png | Bin 228 -> 231 bytes .../Objects/Tools/wirecutters.rsi/meta.json | 2 +- .../Textures/Objects/Tools/wrench.rsi/icon.png | Bin 230 -> 484 bytes .../Textures/Objects/Tools/wrench.rsi/meta.json | 2 +- 49 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Resources/Textures/Objects/Tools/crowbar.rsi/icon.png b/Resources/Textures/Objects/Tools/crowbar.rsi/icon.png index a8c6cb3f8da55d48bca152d2e4851161987be7e3..436a75975b342462fdf8cad0071754919d2338ac 100644 GIT binary patch delta 356 zcmV-q0h|7=0rLWo7=H)`0001UdV2H#000SaNLh0L01m_e01m_fl`9S#0003cNkll{#&5lX!-nn|g9 zhv#!v(AOGG7z7F90u1grCDQBmX~$%sdnAxBDj>seublQUwmTi#m8%uu8Dj$cYiDq_ z%A)P~um^N8BA{EjyxAbz-G;~_u?1eOoX^-D(*ANj2}d)Q01ux{rcdE~XY3e;g}+NA z0aNfu0w&=f3tgCoen;h-1sVbgC1MVN2M)YY zX;{?Y=pq=($gDhz$wWIq)|5kpW0AH%prdhPpg`zBaRo+(5;2aK5iBuElru`WV*><}y)L~30k z4<#P@G3^_7WcEk7>KldF?`4<=%jYw@GxIh9D^4sB3;b_^2-kES z(wP*WzrGBh+kIfRb?1>#A|S)JvzbZ#sBnUVM}l0SlH6jC4%{&EaB*JeH6epFHxmg` z0fg`6lCbW=ombB5I2KDKUfVxB@H|5%AmFLZGz`lX_#TbGW^a6zySl+}4}^t8K)`o& z4Qh>BFdg`{3xAjM^xOx($if2h%Kw62nN7g&{`L9cIhqRz$naLD_bXi9^<>8|Dtubz z5}<<5B|r(ES%4ZolYk0%WC2z1NCGP10Reyi#$aQ4cN)n?^^6=I5Wr|sClg())4t(% zJ2gC1;NG(MD7qHHv76Zn-~j>rWx~!i78%z#+;@E{6Dh#BFy@;pOXw+34V@~m%)|mK a7x)1^VdyatfcNqM0000lQ)B~wG&!lQ;BpBG j5H&F1TBIeR!oaZTJ&*r8>HKp*s~9|8{an^LB{Ts5G#oeh diff --git a/Resources/Textures/Objects/Tools/drill.rsi/drill_bolt.png b/Resources/Textures/Objects/Tools/drill.rsi/drill_bolt.png index 6fb3b4ab8e659efb01b14ea9eeced1fc55ef8f2c..d7e908fa9c611ea973be719440c86db90fe95254 100644 GIT binary patch delta 678 zcmV;X0$Kg`2EGN5B!3BTNLh0L01m_e01m_fl`9S#0007TNkl)_bF+d?TN9| zXCVqj7NK~!dG(LJ``Kvk8X=?s_?Sh6RES6}L^dv$QJ@>J_~gUkF+>cALVP1Xp$m~b zwg6d3vFf)?)AZ8mG=@h_w*K^tfB$G>>CrS>F1oZ)9)DIAAj5TCRt}Hq+ejp!*=(jV znT+?@c}I@m6|A7dyii>1cme*hMR_4{G^8SEdEV;2MdPAx;h4se0!XA(^uoWF4}_t- zJj>i)SnoYYD<6n5NHLZ3kAbym68B%nufaTtn81zs4C{B;95*~4NJ=WAxVTO3fo)Q= zS^Lhk|9?edm3upfA!lo9<69D6YO4JR`bL|w@Yp#T5? M07*qoM6N<$f`msr{Qv*} delta 863 zcmV-l1EBoA1@;DzB!2;OQb$4nuFf3k0009pNklInD(2OxQ zts!k}GcG1G$z&$U#4L2-x4Gw@Iro0woO|vA{^LLXGK5Bg`+xiU)zdp3HB55+%5qg6 zj}ube_WS)D9r9X(@>4bE2oY1OiSU#Y0LZc|loR{?ek4gE9*+a?>-(L0nk_hTR3L=g zR)hy&aB#5Pr|Q0NI7~DerK_upa5xM=!LR8Zy57g=#R*eeiP1|Fph8}7b2zYUE5ZXH zNs{3R1Oj9-8Gj^6LQxa|W@cs#yYRD=Fx@Wqm7_3U@-O1zVAnFCVY3KNDwSe#a?&&~ zm&-9eHin`oh@!~1A~`@|4vSrwgOPJjtpdtoQ*)5Xx=FoRHpO@VlF6juh(scQw)W|C z8i3y3USe=qX&srY=8FX-YBqcvxKX?g{8$$#;mT~dS*Yw zdGuHtT5U_#6%ZPBs|Wga*?w~^CCTT$*iNce*bnb6HGUM|I^kA#?s3t+23EJisuozt z*WKDC6jXui0%WrA^11ags#^nDMWuBCR;5WT~U1=C8HLw5x002ovPDHLkV1kCMo$vqv diff --git a/Resources/Textures/Objects/Tools/drill.rsi/drill_screw.png b/Resources/Textures/Objects/Tools/drill.rsi/drill_screw.png index c51ae6332b212cb66cd2b9d58ffe841152d0d747..0951ee8d9b7a5d07f776e4d62489a86da62cd2a9 100644 GIT binary patch delta 667 zcmV;M0%ZO72D1f_B!3BTNLh0L01m_e01m_fl`9S#0007INklTD1rg8#IW}-YVV{Jb3ojv!@(9dhnEUZ=O9wkY1J*3Z;}D6dNfNwM|$B z8%b1huq*`H?aZvZZno=YXEsF&ez2Lp&3xayH*ep&k6Xr_0DoZtV-wTn>TFq>aAr9l z6BfWo?fzssg`w0(De`-5T~JqGxXg z`HsN{(gKb?yoL6@=8PQyWMI@}g!_jD=*4}I{%5>@T0Z0J?DTej#8efI3v4R{fe?lMmYr56I_fOIM0nP@pzfYW*1CRd%_iZCH+$oM z&AmBN~ID@BogL{{+Wj0bF3oA zt&m;3vH~o(1z90-He@1L`-H%R1e%tP^V?c11DYuXt?>WV1Ab6f#<=-2n~mR*st1BL zWEe_WVLk5;PX0v#}Kav!jQU=T|A)Qfdksp_;_yEdKegaT$uzu zf-iK|z>m7sBp$_1!1wsi}dNtxp?k3$`&p{SKE@&31uz>R)HU40? zIix}YHi|8HSM9qhI-1uos%^ax>0(fl z;B6z_h^Vzgu~6D7-l4V@Z@6^bT@_tO1^o$L7a~O(NUY$-Si2~c3L;`9A-eEJg7z3= zZ5!IgHsfMC(`06nOw2+TzMFH-%zM7?nKS1G|Mg#gSyDOXj(?60_4JNMWhXg)d9h%g zDkn+xx}qo??eE6p0XI0PzWBsYiK7i}S2dh(v09$H&l z@pwEmG&JDz`F{{XAcSCabkwM4XH>E?8icttD?6=uv(qZ`lP(T6La@)BXRZQBCXDB;PFNd8z?y~^gKOSacQmg-%hJQDaEawCHzo6jqXl`y+0TPJ> zot>Qw4{I}h@Z_r;R87?@wem}9`PqiLrM9Gf{kzYqC3#T*I}m^y`#)Md+qY=tJ@q<) zKmdSLDrI=zC$UWq4)%ei-(!HhPijG@c5BJbcwP{Fr+K6PsFB?3^%~wn$sGZhK}MF^ z9SdVBz<<^)%bsvT?}wy4(GPb(?*#eu7{xOn!*dbY)}7evU3A=6?euS4|rw)@}CT@>H`h|H+8znqAN2 zhd7TOYh4R1$&vuUKDTdrkbJZoTe4Xmn$ zxlGBWou{lSk)DH}X?XeEdKi_Q18JdBGY2bbAX8RqT`Kc)ke;@GTNI%GYZGhJYmHf5 zUs+%OM+kvI?SQJStz~&LcK`qoi^UK^Fm&m4-gAA~IhB4undNvHS~nYE>nm4|?gRQ= qpb~k#UgJb93qXgc6u>U|KcU}Fxn=bu4hl8^0000{|4DTONe+1a>N!JKhO*_DAplC8AbFZPVBI}thKgyy3>%CfsU8Mkxgul!D%v_gKuD6o z%wrY9zR3b$OOXLc93;vs4?tfV3_}bwhp-P@F&BR{d@(jyho2IRF5fzm3J^`Cjn= O00000fhe31FHj&Ie%SAL_t(|oMT}aU@+={Q3s4VVCXu)+(`F7jD7OlWk$L>0A#tc zf((PQqAbJR`;S3F|H*X($qv|9!}s4SR*AtT@*czi51ud_S+2yeZSlkZ{w<$Kb_7Wd zfLQJbwj2a@?LQ8tLHr}j9T_$<>?hd~B!>Xl=fL2{CSK*mKz}kAdbwb6?G1+5X6)kE z&vMe%0igH=rGrB=o-i=++rh>EeLTdlV-qI>%@ZLEfGlsCB@WJlpqx;b26D`Pa*QHB z4Ztjilml$!8biJVV3vbu28NgPb-;opTN$oh_{Y$m!^}`Qb|fr6=?E{-7{-fw#y`4|*Aa+tdp{jdMj^@T}ox8Y6Y;*Gw?ntnQRo?FV$JhO!> zbFJsE!{y8!9vT2 delta 211 zcmZo+dcrtCvYw5BfuXvubRCdlOY(MiVfYV%3-&Ib3>4uk@Q5sCVBk9f!i-b3`J{n@ z>?NMQuI$e^S%i!%Lb7dM0EG%YT^vI)?!CS4%hjMD(DqQUN$-Iqlk)p|fyF0`cknB2 zsI}*A*XZ~jS!W>6yh~D$;lOd9w+=5;cIf(a8(sTmdg|z5*Jq}#t5~01n`bnA@}6xC zr%!&aW(1ndus_kndGhwBGrlUW+!gZt=cYUxSq6p!$z`2|0#Z`ZHy?u3c)I$ztaD0e F0szMUPVoQ$ diff --git a/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_high.png b/Resources/Textures/Objects/Tools/geiger.rsi/geiger_on_high.png index 15edc91e52938302e7edd8e02013a69dd0304f09..7b160b48d7b2c8cc6397a18f7b7ac306120d6d78 100644 GIT binary patch delta 201 zcmdnMc#Cm@WIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstUx}0fKQ04 zJEPDBA4rj@Q5r1N*@7X#;MwT(m+9H zPZ!4!3;(xg9Jv@2I9vkV_x_*hJlCmL(6#!$TI>8r{K8YtJ20hZt#%0A`1j%LBMdiG rH|$Bc<8}TsQ~Ile2U${^9_(Y#pTWP@hJh;c#Cm@WIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstUx}0fKQ04 zRHRA5{=|hZW=q$a0L2y_<+%r>SWANZg8u^n!|!c;!9W4d0*}aI1_r((Aj~*bn@<`j z=~ t8>$=jB;4^j|CuTM)xm=-sZ9^|G3d|WUu(m_6$>wzucY)XHkaDv_x3l~-)9aVawq}%IV9;TYP-H!5vESq{&?E*=S3j3^P6#WLC0c}brt@5zopr0P09Y!~g&Q delta 159 zcmcb`xPftkWIY=L14D6D)fXVemgMd3!tfsi7wla=87RV8;1OBOz`%C|gc+x5^GO2* z*-JcqUD=;;vIwaPbp;o$01DZ9x;TbJ98OM*M66Z9+7 zHcnXl@|bs`&Z2zx#l>I+Ty6(7fT|@LbQlgTe~DWM4fY=JY) diff --git a/Resources/Textures/Objects/Tools/geiger.rsi/meta.json b/Resources/Textures/Objects/Tools/geiger.rsi/meta.json index 10968b47768..11fbd436814 100644 --- a/Resources/Textures/Objects/Tools/geiger.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/geiger.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8", + "copyright": "Taken from Paradise https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/hand_labeler.rsi/hand_labeler.png b/Resources/Textures/Objects/Tools/hand_labeler.rsi/hand_labeler.png index 9938103840821ec610fa3ff217b4c8a3965985b5..77fbcef30da736b4008b8a3c372a3bc43424dda2 100644 GIT binary patch delta 465 zcmV;?0WSWL0^b9W7=H)`0001UdV2H#000SaNLh0L01m_e01m_fl`9S#0004zNklemU<3GDd$a17H9QfPVo<4NzIH`SS1PK|S+p z05HGt8cI(GA~67)JI+#|@4AgZDp4?r0bo8cIi>W`!?p58o!+l6BNItI1Fn0n0I;&9 zc>xh71%Tt*sqE5rb8}E%I;UjiSHvEyd#@fnKRt>km36gO(|UlB34nZV?TE77VYT{w z2@T0M^3ds*gcK z#QB+7>U8hL;OUBwObYLBY7ytuc0MhCc1U29O3BXS800000NkvXX Hu0mjfc3aR= delta 257 zcmV+c0sj8q1Caud7=Hu<0001iRA0W=jG90004WQchC>1bUyXb7osrRTWf8T3TAh z%$aRnU0rPu+4l1C&c#Y*vu4ej1`z diff --git a/Resources/Textures/Objects/Tools/hand_labeler.rsi/meta.json b/Resources/Textures/Objects/Tools/hand_labeler.rsi/meta.json index 216140cec3c..3c793a97322 100644 --- a/Resources/Textures/Objects/Tools/hand_labeler.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/hand_labeler.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/tgstation/tgstation at commit 44636483b7b2868b3e42c92205539f11f6d7968f. Inhand sprites by Macoron.", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/. Inhand sprites by Macoron.", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/green-unlit.png b/Resources/Textures/Objects/Tools/multitool.rsi/green-unlit.png index fccc17e9193e7371d0b0630e1eb19d25699ad886..d0bac8b61eb217c36e109147a9aef63d1eee1b10 100644 GIT binary patch delta 147 zcmb>4z&Jsrp0PN{-HBn{IhmIX3=Aykj=qiz3>*8o|0J>k`J4qFk;M!Qe1}1p@p%4< z6riB1r;B4qgnP0C>*55Fo~A&9M~uo-)Fe;LH~OJp_1SXD@dF>CVkbRZc$0O~+2p26 r%xr9T7@;b;+zx6;url*VNHBa4V`uyJHVQ!P zknI2k6Nmr)-u?^|8w(lp>-+z2+`5tB!I=Y$baMa*IM|poYy>(4OamQ24j|b9AfLn7 zGv+Knp+R!L?!04o_TduIAwiM@Ko<13w=oQ1VBm+atXRtgeU}zRZprF2sL!2%S zaIdFoI+uEIRNu9ENg<~)QlJyQVO2Y#sQ#22C@ufvA`rThFdnDfl(0*wj2a(qCPSl zS;kL_k>r&FAaLg7KA?^AU_K~Hl6wAuEx&c{GwmGEw|x5=u!7P04+?6Pr8;nNP@+7t zi~($U*P_o1`)=K(O>GDQ>)wkoTwSP!QXzpVDFomq$vm>MVMa;N@Ij92f!S`KqW9VE2B{dj5>gt002SGvy^e9L(~8O002ovPDHLk FV1oM6-}(Rm delta 333 zcmV-T0kZy_1m^;fBYy!dNkl9ReWB7cQ1V z2*l1|m^ej{VaE>A%pp4wQVUR&1_ZBsq1YK@Ibh?)_Y4!K++kqIQGttr_#knbJ3wB3 zCL<^z-napE1QdYy_wV0iaBw)l$iP5{f{0pxYzJs)K(b>*8o|0J>k`J4qFk;M!Qd`Cc-ajG_- zG*HmR)5S3)!aZ4nb#a17Pg9`5BSz&ZYLa^Kfnzk|bp- tk^2+Y$^CLy&Hg}(43Bp`BuUb*fDJgg0_WdhT?zmI002ovPDHLkV1lX&C6oXF diff --git a/Resources/Textures/Objects/Tools/multitool.rsi/yellow-unlit.png b/Resources/Textures/Objects/Tools/multitool.rsi/yellow-unlit.png index f890dbd413ae102ef91ec7bd277c61418e501d93..911fad308880b654934332ff45ebbcf8b58f6059 100644 GIT binary patch delta 145 zcmb*8o|0J>k`J4qFk;M!Qd`Cc-ajG_- zG*Hml)5S3)!u{BlG!?8#U|^qcponco-h=&1UtS7fXn4z?$ xv&{X75ht6?t6i=713feBzTPzf004iIv;nEo2J8>CYB~S_002ovPDHLkV1gJ+CH4RS diff --git a/Resources/Textures/Objects/Tools/rcd.rsi/icon.png b/Resources/Textures/Objects/Tools/rcd.rsi/icon.png index cb62979010f4ddc12341edfdbc08a6cd69426857..3913af251881e2963334cf77daeb8f931c9ab74e 100644 GIT binary patch delta 835 zcmV-J1HAnH1lb0VBYyx1a7bBm000ie000ie0hKEb8vp^i_2mJfr(;6A1|>z^dX3m50yQvLg7P@y-9%zefhAF1R)VdzC?^5 zSRh!stPCt@D4R(_pc$J{!ZO`+W@mIAcXza~9`?X;@7%q2&VTRz&$;K$Cj4Vd1Ec}c z00{w_j+UrW#TM>&j+SwIsdN~}ZUk)`0zl3^XHIj!p|YCW(wsuP2GqX^ku(I~KgirF zW4pO^9FQ5RX<*S%CzYjwH37H}N~+fTl5i0@cY5sDv0q9FkV>&t6(}kyKyxopH89Q3 zli9V*2qXOb09N)%R;>qj+ z9Iy6cWJF}l*Ln`yatK`wxxE{eCqiiJvj9LzNI4LWJ?kKbLINVXph+JL3?UqrV)KSj zSFT{PBMa~q8}plcbNC%?jj)yjG!sct0;o!pX~9D=)f;v|&g?8z=fGc(cB1zTX> zX4U&xQ-3UbXD*D*Oem|q(*$78G*8Of8{$0BjhvH_yp&|_!mUDHg?AYKGz+^c50M|* zX2>}~h{LM}-^-2e4&;k4ycrx8@=kHgDdTaaTW#wL*}M=^iv>lFr9@6< zmMQqqbFmVW_WKKIi?wf4N1A*dyzaOg!xWC^Q4 z-r!eh$^Q;CFy}~9;1^$O1KkLJTj@G$8ljQ6oo${78KPehM{Q?n4v8l3~IZQVyS|O zOe`f+7Pk5iutfX@vmhjtF$*lsT5uay7lDV!K>`m{S-_DTMU`00@Ng2>aS~7 z=RPOz%elvnCCjpyr!LHO_XWTLU;zMJOj`&}^e{R;Q>p-5@_)<7TbA@+08T!^<6T(W zfNt(S084E+IM%~iLZku!w7!YjJNp7a#)IOHfRLs{SlS#9n*cBjBLsM~J^qW=t_pW1 zsov1TaS$UN&@>JEhYIci0C`pPduoGLv+&!6fkTm2uZep6QPiC~@USo*B5@U%rYSj& zgXej?wl!=QPJiDQ`s+Ql(Lc7``0Mi!(33p@;x+|D_roC66CE&3Ge&Dw^$-f=?~2X4 zxl2wH!fFKCaG%XSCnE>cz zOR610WnVviOaMU;jOZ@QHjT^!83fy{-4Czb({zh|uBwGM10Ok(x3+A2KBmwPTod5s;07*qoM6N<$f>`(+ A5dZ)H diff --git a/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json b/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json index 17ec25991ac..47fc7c177ee 100644 --- a/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/screwdriver.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-map.png b/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-map.png index 2bede8bc3b0708beedbacbd88aa4a50e20c463aa..86ac05b87ed63916f9001d1d8653a3dd60ab51ee 100644 GIT binary patch delta 283 zcmZo;+Qu|NrJl3EBeIx*f$smm{q4U4bWFDzvA+^c ztoZqhcg8WMf6CTOM;Ytw?b$9X#OGGFO0wR!-{TN?oF{~xsbAi{VRhx6PmIiV1<$XQ z-ckJU_nMQN-`0wP0=s`bnHS>O40l)w@CJA1X=pMib0xIhKe+0TRoK=k4F{+5y2~Pb d^o5NAIEMm%7|7681arT;-RBP%yt?Emkt zC~BCwL>WFDEMr7g|M_$`R`c)y7HpR1xIl!>jCA1Qr_P;)v*$exMR6#XW+cPU#|OxY zObi$ESvCA;lQ4luvT(u0|Nr@h(-3AJDTcpao-zD-afZQ?_hUF*Tv%8bMV*+K7=xsw zBtv<5Iow{15C8>rs`^nd+sw!qE{-h(zFl7qra>X_=lv~)PsbVsu2pa1{> diff --git a/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-screwybits.png b/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver-screwybits.png index 565ebc24f66a0a622c01e1fca2073a35928b7c33..f018f39ffdf86e95555561dc5ac713ac8238a8b5 100644 GIT binary patch delta 208 zcmbQi_>ggeWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstUx}0fKQ04 zqqApOZG(!MX78jaK(R#+|Ed5f){-E<;Qv6t@Ov9yFi?QAz$3Dlfr0M`2s2LA=92~r zdU?7yhFJK&?eXMdP~c&H`{}=V_AD(=r4Dz&Il;61qW>HaKjH1f*u#C3D>6HtKd&A^y^Ls8q476>gTe~DWM4fk7GtS delta 134 zcmaFJID>J5WIY=L14D6D)fXTY@9E+g649D0!MZp>q^Bv+fXnTm1G8JsxA3sAf9x02 z+>RA&41Rv@(9O4R-$s0$$h;y=fM>_<-T&J+wzjqgJ~?vah=hu&s^qEDryqXftKfi| jpdrDkEMs6`z`(HczYt4S{^YMfs~9|8{an^LB{Ts5L&Y`} diff --git a/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver.png b/Resources/Textures/Objects/Tools/screwdriver.rsi/screwdriver.png index 9d0d820ddaa8a7610582061de5121e0fe779d51c..9e1369973418dd4a0e681f2cb730f43b07e17418 100644 GIT binary patch delta 206 zcmaFNc%N~CWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstUx|bfKQ0) z%$YNLdV0Qp{|*$WEwRm-86?~2mhKo zJtkXy***r!t=_<$R9@M)^z82^?VLw`9{9`1SIWKo>C=$^K!X`PUHx3vIVCg!0Na^N AF8}}l delta 210 zcmV;@04@LD0pkIX8Gi-<0047(dh`GQ0IEquK~z|UV;BXaU=)mkQ7{TdJYd8Y06jfD z|3Ne_FE3o|^XJbfY9u8k8KR@38IjeOl$2mKk0byy3?KOZ{ri6q2B`&M5PQ|CRRr~6 z0~juzIdkTJJ3Bitn}>%7F8<}q7o3JDC@3&Ic<_MX(4j*N=}YP9B!vPCx&SDsH8nNy z8Upe$h@LuiDwv<0oy~Ch@@0}O2Z6zt21das7zLwX6pRA80tN;K0N&L{g44@Iu>b%7 M07*qoM6N<$f+sjqKL7v# diff --git a/Resources/Textures/Objects/Tools/seclite.rsi/meta.json b/Resources/Textures/Objects/Tools/seclite.rsi/meta.json index 86f25b0b7a1..d466ad62d59 100644 --- a/Resources/Textures/Objects/Tools/seclite.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/seclite.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/52cbeaf94322209d4c6596818dda9fb3654729d3 and modified by Swept", + "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/blob/master/icons/obj/lighting.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/seclite.rsi/seclite-on.png b/Resources/Textures/Objects/Tools/seclite.rsi/seclite-on.png index 317e638c18c679b0a0ee848973c731e7a901d786..e02d6ee077424adc4cbf9fc449925864a056d150 100644 GIT binary patch delta 243 zcmbQw)WS4DvYwfNfx%@-*D)Z)SRCZ;#IWw1%u67LCEd~2k%3`jKlh(RRv=#@z$e62 zT3Xu5%F4^jD<~-F>(}Rzk&!q&P}~{DS{O0K>iJy^%mM&H|6fVg?4j zBOuH;Rhv&5D46K!;uvD#|F+*Thwp#_2TS?ZY5)K4P*4qYezj4&eTQOV6W7fGmgnw_ zUFNpo44ZZ&CVuPb(_SZV;eZgUwbeD5)?*qUmU&JNI4CuhtM+~LP0`!#YC8ANY_Pre h<`ECTATm? delta 271 zcmV+q0r38W0-pkq8Gi-<0047(dh`GQ0OmeLU~vc%BofpuCFuov+nQ`66ZA9f9mn#jx=re6cX@>w!K4|ULenNn5Jp{$nv$Hz#H)d5Pw)4U5KK{3F*4dxf6yV zG)=P^zl->8S(Z>$m0gQCOHGgv+z7$EzSZs%VN8-ljIR&{NT5U5ofMIIp1s{f0mc|- zBZ7HxEu166Ff6$g$xY7YK;SLlhmZD%PDHLkV1mdxcBlXV diff --git a/Resources/Textures/Objects/Tools/seclite.rsi/seclite-overlay.png b/Resources/Textures/Objects/Tools/seclite.rsi/seclite-overlay.png index a5e9f773ed55bfbc12fbbdce978c3733689ff043..7ea22fa4c673b9069203b7c9aea6b79030624493 100644 GIT binary patch delta 250 zcmV!4MC`~i)=g%J~3jsh5bb&Id;{c!k3?v077q=rL zhz5lU%|iemU<3lHIA9AS1K3BT09YcVc?htuus~U;fQ?-V>}Z-h;PmO63@cY1W%&N> z0K=q7YeDfpgKk+684OrKGzvz+C>RBU9565d0A?&i+Z#0Exc~qF07*qoM6N<$f>26Z A(f|Me delta 91 zcmbQvR5?K<)WOrmF(jh(?L|W_1_d6LgWdn@m(11os7=aN_HbyC^{CHbVPGhmd3amt vF0Hp;+1IhT^lxIR7mE;#<7Z%4(6)rL*jZtbwErhd1|aZs^>bP0l+XkK{`Vjk diff --git a/Resources/Textures/Objects/Tools/seclite.rsi/seclite.png b/Resources/Textures/Objects/Tools/seclite.rsi/seclite.png index d8ace36de984710ee0aa9095539bc689fc209fa8..1064101c28a568b4dc9acf68e1ff423b8e473014 100644 GIT binary patch delta 294 zcmV+>0oneZ0>J{1B!3BTNLh0L01m_e01m_fl`9S#0002JqVK_WqId6ylbqZBq4mXUkrwWQbkUH{NP{a6AZ00JNY0&s4C zIF9ere$zCULjX8&k|flRqDYlxN#9=~0$1Q(O%sPTthCr);0Y5kH|0#W8)Cf4X&f3j7@3uSO5S307*qo IM6N<$f@ZpRga7~l diff --git a/Resources/Textures/Objects/Tools/spray_painter.rsi/meta.json b/Resources/Textures/Objects/Tools/spray_painter.rsi/meta.json index 056ba0a8563..a7ed6684445 100644 --- a/Resources/Textures/Objects/Tools/spray_painter.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/spray_painter.rsi/meta.json @@ -1,5 +1,5 @@ { - "copyright" : "Taken from https://github.com/tgstation/tgstation at commit a21274e56ae84b2c96e8b6beeca805df3d5402e8.", + "copyright" : "Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/8e92e96d56f231f79dc16f95918d59b2803085aa/icons/obj/painting.dmi", "license" : "CC-BY-SA-3.0", "size" : { "x" : 32, diff --git a/Resources/Textures/Objects/Tools/spray_painter.rsi/spray_painter.png b/Resources/Textures/Objects/Tools/spray_painter.rsi/spray_painter.png index 462e22932c2b9401cd950e8630eb80caf0ea1a80..0c7ebdadccef551b183bb87c0e117d9c80d9e4e0 100644 GIT binary patch delta 749 zcmVA5 zY33`l*SfKbr#7o;zIo2<+im8(=lWLZ55xDq@j2gbzWL^RyMGlnS^p2f;NUenJbWj# zDF7IJDzymJkSBl$e(8Ka^mR4`o&{F`XYhj^hMWr$LJQywj+#!Bsz4|KL~xdJAcTNn z7*&H%0u&dH(P~4u)N4r0RqR1iWz^akIZP(TPjZ_UEZTSG9m&fc)5 zZ-EVAtM^!pW`DkA*PR6|z?F9ca<>x+3y$_Qa$9@1na^Pc2x;OLVGs^29uo?|oWN@W zz~C3dy~T;1IB=iY8WzAVM7u%ZGuB1k>f*smi!?@mUR~hOIv6FuliQzRqTiB!ZghqF zXs;hSDf>XVFu3>|TEif4_*4#FFEwbtBT9g}=f9yg-G2%qov@9Km$tqCV3f7z()Td~ zs#?Hzr%(Ta8nRD&eU$+9jr-x>bQX6hf;xSbaE(9kNy7LB@T2m;Sd1VtwhH)kBS$b03dk^2@w- zH(#4uA;U7zu$lpr^?^(-!a!%hO%-JT(|_-HH)btAhDucNH4GxSD?ow%km>g$adpKt z?CT`HzLZ*k)S?xtOKhjn@NVde*7IRzTd1xM#MKpwkNX4nJOaFWI1mH}1Arjq3gFyr f(1CpcY=r&-6d`W^TIn^;r%VKxW6EsV3o%90*43z$rVDlCJPdOAY==Jjf};z>twU@!=w@14}_h}yf^PV z@4eXsa&mG$I^MjFzVA!jS`Y-z`#KqB1q+5taBu^sUuK?u?SI)>lu#lY zLL_Tp7;61gyDVE(%(5x?(f4TFzK))yQpuz@LA4u?#{kspbpQr~!IW)g2IAn}?`S

    R+>SW-=sx=Xa~}X{6Y(iMk*>dmL`1h2O*FP( z??*K5T@|bwSTkTay($8L&YuE82+HL$#bOcYTLsKyU|x0_vvZAa6RV#!197cyA3`qv z{ZF5Miv8UQ)yf1>98s-6yJL;-)`X^@i?Yx)RO$AhP-d9!f&Nt=u$N(mRud@?(f-;Q zkg1OqV-wCH!jp&4YDQxhhs+ZE`ulpnRS~*(gKBepnfN=Q?Ez(zWOH3cjxRI)oOqLQ j{Qn@$TZ880yenP+m)WPJs1y#N00000NkvXXu0mjfMi}PH diff --git a/Resources/Textures/Objects/Tools/welder.rsi/icon.png b/Resources/Textures/Objects/Tools/welder.rsi/icon.png index a023a035ad47559b1b80b4d2ea46c2531d76eb54..c6917c8ba514fb1471fd732080cdb413c7d5ac6d 100644 GIT binary patch delta 554 zcmV+_0@eMZ0=NW_8Gi-<0047(dh`GQ010qNS#tmY4#WTe4#WYKD-Ig~00HVrL_t(| zob8p%O9D|8#=oFIf}qkxp*=|37@~_7NiL-RfFPj=H}xM_%c4!vI>ANKCO0(%*`|F+ zCAnx}2||#NIHg1?B!s)$Tx+IreB@)ajK0;mkKy~BJLlfhiGLr~Kfpi0?*`}|G!Z_2 zON2UF3P8N;N*D=^RqTYxOvN=6{h}J z!Cv#Ul}Nu|H28(s;Xy^fvL}!Y0=I4-mbTqsHhg%^+Vk_NR0c|ApRi9H^Xt~Bukmtd zAP?vbCQE{p1%J4B0_JQsFg_m^*4EKw&p{U7_%A0638Y0eGYF?`< zUPEent<{prXjCwl?xAyyKz#cUQF96r&gHPljh%#GZ+~=LST9urvI6iBG*jN3uY7Sa zHWh%19`hy#VdBh<20hOFfqeE9YNZtbRDAV|Wl$)vuU31}G)^1~l3SY6g%y`>Fvx-g{laSdQ$g s2KY21k|VJ!s;L*C32L8r;LifQ1C@uwSxGc<%>V!Z07*qoM6N<$f+Q9AIRF3v delta 274 zcmV+t0qy>{1fl|v8Gi!+002a!ipBr{06$PnR7C&)02vt>AS*y7CMGH=DJv=}F)=Yc zJv~H1LPtkONHzdSNJvyvR8><`X=!O{Pyu&$cYIz1jQ{|db`H;<52tCijsO4v0d!JM zQvg8b*k%9#0Fg;VK~y-)-IGZYLLm%9L7PYm%^$-3&*}lbhJS?%tIW1vCFu+){Zjx7 zy?4a=^bRw#Pk@`bk)n~j&FPm6?wyoG@{!&Bxm|lOqgYBQ`8bZZE{rNA^io@_r=0U* zSP18ZI;s>D!PtjzE;8Ue1E30#4X`S-2{z#y03aK}lVJ-14z;iX_i>MbQL$Rpk3Q-J YRQd(HNLK_J01E&B07*qoM6N<$g5soRH2?qr diff --git a/Resources/Textures/Objects/Tools/welder.rsi/meta.json b/Resources/Textures/Objects/Tools/welder.rsi/meta.json index 5f876da9ae0..407f85d4cf6 100644 --- a/Resources/Textures/Objects/Tools/welder.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/welder.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/199fffd989d6f7fd6ea9c5188c875137df4f34b8", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/199fffd989d6f7fd6ea9c5188c875137df4f34b8 // Icon Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/3c5cb36e811725e1479c4c025b04220027230632/icons/obj/tools.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/welder.rsi/welder_flame.png b/Resources/Textures/Objects/Tools/welder.rsi/welder_flame.png index 20aa48abf68c85cebc135633200b994f8efd9c66..6c8ef525ccd7a64c212523ae35c1a3adda12ddf2 100644 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3HF&`%2dVDb50q$YKTtz9S&aI8~cZ8YsBY z)5S5QV$RzedwH1*dD;@AlX$jqcsm>wIqCCJB;>fr%_iHPUY4VsR^d-dC(4^wiYz@@ zKB<`-s56_fs$5?=TuoK%md|p=RmUG1PES)pcW)hV4?82an}9MKV(uae0%BFqJXu-b)bDx3)Jzf1=);T3K0RU-PTd)8C literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!N$PAcy*Sa5Rk)J;1OBOz`zY;a|FVdQ&MBb@089@=M*si- diff --git a/Resources/Textures/Objects/Tools/welder_experimental.rsi/icon.png b/Resources/Textures/Objects/Tools/welder_experimental.rsi/icon.png index 446d4b21bf7742ce04c265fb06bf89a17c91643c..d33656a0be4000ed43d259b1404726e98595ca41 100644 GIT binary patch delta 895 zcmV-_1AzRr1d9id8Gi-<0063Kaozv`010qNS#tmY4#WTe4#WYKD-Ig~00TWqL_t(| zob6goXcIvgeSxKxCP+geQoB~DJ&87ADX0}GQoRU81rPP4;6X%0#go*V2M_*$s3*aj z76dE3T1pUGd(n_8o+MCB6)PcPf2dMf^G!1AcJsTN{Q>uT5Pz~WJ2P+g&Fp+L$x{$; zumA`+SO5eZEP%XFRaK+!EnB-q`t?*IWVcb-Rwk3FyA8ki6i4GrM) z+{e1h`pK_I@?WV!MrW)S$@U4oBNDI1r_dGIjy_irfXIIyy@{1?Nj&*Ji{Y<>NMb@1Fn7c% zsACc{3x!dAyR?3K`^hf^*boOcKEHy)c_o2OVg&4vXS2DIyxT8E^lS5jOZdsJ(DWms zY&@r{F3G7udY5+X?h|?Gr4QosIDHowgPteT5w&SuLB6xO8IL+Tv}|&*H!z=WN{fAvGLs=p64g ze@y{8-}hn~381}@Hpf`%#8Y{lCwFoW;01qG0mSySAL3mj_05et{jh%U*PH>3{5IzV z+~((Bg%NPD00=l(00bN?00Isc009RJATQV-!2W`LW|=eE~8Z`R%ShfcPqT69|zx_6M*(z$(}u zQ0*rB1Hk@(vS5FJ0qhT8e*pUf;1<{)-~m7T18Nmue*pUf*dOp;g9Sjq!2%%Q_zV29 V_Xtar;P3zd002ovPDHLkV1nJ;q!a)E delta 550 zcmV+>0@?kG2ebr`8Gi!+005o0f$RVP08UU$R7JqRz$hpvXlQ6qP*5;1FhD>+I5;?F z0A@1)W@Z4)nE=e0GtA60%v4lVASghY0A>I){{R60005a77#IKmW=Kd#W&i-0007JY z03aYB+w%7O00001bW%=J06^y0W&i*HczRS=bVOxyV{&P5bbo1YZU6vyoKseCa&`Cg zQ*iP1gNKs3ILmWA5}ybnxFsx z0T4+PX{)+vJ9T=g>(?`H=YazU{q6mulxZ_iS9E<@mi~FFw5w0VjRI69F*t|PSe-O8yu7o0LP%gW4;bd5rc4oVR)P%#?1x-3T=pSQ0}A{ z+7RQQ{F@{~pDD&ccXIx3?{FY={#Txql=MvfpqZcFP(PR-?<&|27K2bfSPX*wU`-I{ o2Wx`V4`?N3ItWQ<|33|HvxvXHYaZfQYryHA+84w9GEfV$B6_Wn(<>s z!Ve&skdW}>$B7?5egGvrBz~NjaoNPu7pR`GB*-tA!Qt7BG$5zCDkP%BCAB!YD6^m> zGe3`kp<+&OSV2+g_bJZhXNCOYs3r?@pfj{QT^vI!PA4ZwutqdY;M9sYVVrvYo)P!d`?lO? mSuTp02=lr*mx}OMGBDhmzV=>FAqk0`zoGDgNa-_7|Uz2 zF~Xt{nD(OvvzZa7umZUGdV5FbSI>_Mf(%TW&ttWIe!M~8dHVOE@2d)q<2VOW2!Q6g z0$x%9y1A`x7k>*K7a1D?IOlk=m>wOgd@nbQV1B-4UiVL z=S{mUmJJ!_01rfRz9=13AimjGO^ft@Q^;MsD|4?&?cu q1wj7~GPyHZJp$LJr2(o`1Mm&4YnlqU^tWXI0000V=-0C=2JR&a84_w-Y6 z@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoPXky#FA7XQz{V5ArtmH< c^elw{0LzCCj!+{7kpKVy07*qoM6N<$g4gVLr2qf` diff --git a/Resources/Textures/Objects/Tools/welder_industrial.rsi/meta.json b/Resources/Textures/Objects/Tools/welder_industrial.rsi/meta.json index ab4744aaa63..1a92064078a 100644 --- a/Resources/Textures/Objects/Tools/welder_industrial.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/welder_industrial.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/782006a07ef7f16f70128489b3e78b210ee4bbbe", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/782006a07ef7f16f70128489b3e78b210ee4bbbe // Icon Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/3c5cb36e811725e1479c4c025b04220027230632/icons/obj/tools.dmi", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Tools/welder_industrial.rsi/welder_flame.png b/Resources/Textures/Objects/Tools/welder_industrial.rsi/welder_flame.png index 7814b7485199170ae34cacd3a4ecfe43995e1367..c4cac4606ac872e32a0a3b4df7fdb4540bc5087e 100644 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3HF&`%2dVDb50q$YKTtz9S&aI8~cZ8YsBZ z)5S5QV$RzeYXzAV1==3=&*V7en8!I$lhM;tUGt%eszUIwsSUdwj`*svHtZ;8-H`?N3ItWQ<|33|HvxvXHYaZfQYryHA+84w9GEfV$B6_Wn(<>s z!Ve&skdW}>$B7?5egGvrBz~NjaoNPu7pR`GB*-tA!Qt7BG$5y@DkP%BCAB!YD6^m> zGe3`kp<+&OSV2+g_bOFCU9!Sn=np2f6s_}>U~@8 nvn&@yOoVyeoJ&P`EEyQ?O<+FpeccaPpe_baS3j3^P6uG diff --git a/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/icon.png b/Resources/Textures/Objects/Tools/welder_industrialadv.rsi/icon.png index c187486f2bc9e34736019ee3a74cd4ef72380787..425cf3c4b3f8fb37bcda7ada9e600899acf3caf8 100644 GIT binary patch delta 535 zcmV+y0_gpW1Ed6y7=H)`0001UdV2H#000SaNLh0L01m_e01m_fl`9S#0005jNkl??{i(=5;!D~Q# zP>hJ|u=Li1TBif|whh&OAFN&vjP*QJ?rvZlDO<4^5q~-7JKZiogs{fre9rz^6QltR z1rQ;`CMCj*<17#Wle-Sg0TAr~sFmdI9}~lJAl~X zLIGgmXYy*R+5mKF3g8JKA5dOrfHr`zG+6-j5BZnQ0AB$4A3=xnp#Tg5G;6YI;9mlK Z0T=1hN)URuay9?}002ovPDHLkV1hy&?hpU~ delta 381 zcmV-@0fPRd1dIca7=Hu<0001iRAkc z%p)V88yj&E5kd_OCI<(5dwZxf7Hj|j00DGTPE!Ct=GbNc003`#R9JLGWpiV4X>fFD zZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDSycTa*U0*I5Sc+(=$pS zoZ^zil2jm5sk9(7FQq&+CndE=iHkEOv#1y-YRJWzR+N~V3SlcNxca$(4F>=PKOC-y ziw-XU005XtL_t(2k)@Ea5yCJGMHNqA8^fms-X36Yd=KD&eb zbE9`(Uy_Ob5O(*+s_qbz??~SYdc+J<+Q4+po2H9_nQnmAX;>Z#P79c=XVjV^5D{3l zW;pTYpe^6&;>e*4F%QD?_2#l0EWsDxB(&PzWk XIQ~%k!X785D3GY9tDnm{r-UW|X0lPz literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQYryHA+84w9GEfV$B6_Wn(<>s z!Ve&skdW}>$B7?5egGvrBz~NjaoNPu7pR`GB*-tA!Qt7BG$5z0DkP%BCAB!YD6^m> zGe3`kp<+&OSV2+g_bQ)bPd;iXEW7W+oBs3CF9Gw|9WyWl-B<8QnmON7l zYicRw**Qft=5Ne_X^adU=M#*h`=$22WQ%mvv4FO#pr8dXWGC diff --git a/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-cutty-thingy.png b/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters-cutty-thingy.png index f331df4390e4cd2193af7bf878126a071b8badc7..09cfe9a497ae2b589ee05b3495f7618f3e1e0ec4 100644 GIT binary patch delta 222 zcmcb~_?~fsWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstUx}0fKQ04 zikhaQvuA84rj@Q5sCVBk9f!i-b3`J{n@ z5uPrNAr}5``w#Lp7;rc*eEffZWYm>#m+h(Q!u-|d$FyJSh~+H&u{7aOYues83qL8w z-u4F*SNbrWGoIrnyQXmM+2|GA2J_=~Sg&xo-)Jz)r_L~e`{;A0BaA;D@_pa9B$p9r O34^DrpUXO@geCwJRZhYH delta 200 zcmV;(05|{d0oehN8Gi-<0047(dh`GQ0H8@kK~z|U?UOMM!ypVrosKNbNZi0P_df+U z-~ueHRF2ZfaS|k&sp@|c!XVine}Di00Dxbo>yc9GcF&9x%d7!0#>+y2_kNh0b0(|# zniVgl>;-fz;?B8|_`=LYH%>f)nOFNm2VQ!P zj5=V{0izBWd=5z9=l)NO#=F1&FdY8&laZrUn>d7k^G)U~qKy{EzGi6bC?q z6mJx;SUQ1y0Wt{0M`nWn$YCI`W#d+c$B!SN=)H66I#?~TBQVkc!Fb)fodISsObEnQ zQPcdNnUjrSG00Mo9Eir|V4@NsC~63W0LbUlr%VOMy`{M|!;@!E!43gg4pIkm1hVBA z4#1rVk(8Y|#Cia;5CmdlQ{V=IEQSG)ypO*(iYdS}@E_zboN0jAL?{n*1WY}yTmS+f z%g_PdTmXuHrtfS(9}&)q|2Tg^(#x&uIMv+2BZt)iAaL;iXW|N%ZwyocgRdwab-<_t fMjbHf0D1!eas!}p`@|`?00000NkvXXu0mjflbE8u delta 305 zcmV-10nYxL1Iq%CBYy!BNklZq}6o!9jvcSL;DQ{AyrhZ6db(>kO|<5cF2(TEzbu0-v54VgJBqkxqAZFfH%Mz0207& zadox!ue3?lfPIbUSc*p+PZbsqp*Ozo_9UW%)*4xs`K0tjw|@_)`{#I$Llr=Tb})W? z{a_>IX!ayYyguZ4-V@Q8kPANhskkvFkWyOu-W^l%D2h;)-i)Hwo0{~xLq~t8wZM_==IdNWsK?6oxBG~gpZ-(j)-2JsBZVP}jRTHAe>k$yi00000NkvXXu0mjf DU3ih> diff --git a/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters.png b/Resources/Textures/Objects/Tools/wirecutters.rsi/cutters.png index 3f79cb157cacf02c6412154c488d2af8c68a7928..68c8a3ed715738ad6d3cff7bf54aece317ffea32 100644 GIT binary patch delta 214 zcmaFD_?&TqWIZzj1B1(wu46!ou{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstUx|bfKQ0) zk|j&(>+4URJP8yqdpyAaq^=~$FZloe{|pXVE588woCO|{#S9F5M?jcysy3fAP%y;P z#WBRf|82h^AAB)v%UIhk){-2IL>zexHfcTVfCSHk!OF2W>c3))C+bh4f zy~o-^Y|$iUrgQ4zB`KQ{`*{9!PV!^n(7hOXTzpEj;}RyP``k`{6Lo@t7BG0a`njxg HN@xNA?kPvt delta 211 zcmV;^04)FK0ptOY8Gi-<0047(dh`GQ0INwvK~z|U?UcO@10f8BeNjp}W}v5Y#|+HC z0Ia|cHwkMn12aHHPvl4^CDP?ja&(d6uX(P(etrOgAPB`b@Tf^&}7`lI>Cfe->H zrM|NQ3Kb$kt@XO|J*5nAr~kASG$rA^f2hk`N04-hD4~e|x7+if6O6{Bc1P;s*e`oecm21{q>F7>PnedZ1Lkm@^Os zAvGcaJnxMT9A^e`=(sAE+o#voGcg46BNYI=cxqgqgSj@2Yq{{`T;Q>S2@@GX$4yvyZF>hUko)TsK3$9r$#! zIADr_LBTnz)+9sb=F3thsyb23%TsjqX9=;2g)p+kPv>62q_dC5go)ury8OIUQ5Ghk OwG5uFelF{r5}E+v*+~`v diff --git a/Resources/Textures/Objects/Tools/wrench.rsi/meta.json b/Resources/Textures/Objects/Tools/wrench.rsi/meta.json index a2c8f06819b..ecd76812cd4 100644 --- a/Resources/Textures/Objects/Tools/wrench.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/wrench.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d, storage by EmoGarbage404 (github)", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d, storage by EmoGarbage404 (github) // Icon Taken from Paradise at https://github.com/ParadiseSS13/Paradise", "size": { "x": 32, "y": 32 From 470c75bf60a3549d4e52cfb72ccc32004fdc789d Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 21:07:51 -0400 Subject: [PATCH 087/111] Mirror: new book - Tales of a Tired Janitor (#278) ## Mirror of PR #24441: [new book - Tales of a Tired Janitor](https://github.com/space-wizards/space-station-14/pull/24441) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `0a6921d5ef90ebaaf1e054178f2889889eea661c` PR opened by Boaz1111 at 2024-01-23 09:28:08 UTC --- PR changed 2 files with 22 additions and 0 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > > I added a new book, as requested by someone in the discord. This book is about the life of a janitor working aboard a (presumably NT) space station "14". They describe the things they have to deal with, the disrespect from others, the lack of good equipment. > ## Why / Balance > > More variety in books, especially books indirectly talking about life on a space station, and the jobs on said station. > ## Technical details > > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > no cl
    Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- Resources/Locale/en-US/paper/book-authorbooks.ftl | 8 ++++++++ .../Entities/Objects/Misc/authorbooks.yml | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/Resources/Locale/en-US/paper/book-authorbooks.ftl b/Resources/Locale/en-US/paper/book-authorbooks.ftl index b1981d9e152..ae886e835af 100644 --- a/Resources/Locale/en-US/paper/book-authorbooks.ftl +++ b/Resources/Locale/en-US/paper/book-authorbooks.ftl @@ -253,3 +253,11 @@ book-text-inspiration = As a freelance writer, Sarah was always in search of ins Without a moment's hesitation, Sarah took out her pen and notebook and began to write. She wrote about the beauty of the scene, the peacefulness she felt, and the surreal quality of the moment. She wanted to capture this feeling and share it with others through her words. As she finished writing, Sarah heard the snap of a twig and looked up to see a man approaching her with a camera. He introduced himself as a nature photographer and asked if she had seen the waterfall. They struck up a conversation, and soon they were both laughing and sharing stories of their adventures. As the sun began to set, the two of them packed up their gear and said their goodbyes. Sarah felt grateful for this unexpected encounter and the inspiration it brought her. She knew that this moment would stay with her forever, and she felt a sense of serenity knowing that there was still so much beauty in the world waiting to be discovered. + +book-text-janitor = [bold][color=black][head=3]The Tales of a Tired Janitor[/head][/bold] + Cleaning a space station as a janitor is like being trapped in a cosmic custodial nightmare. You'd think floating through the vastness of space would be glamorous, but no, I'm stuck scrubbing space grime and extraterrestrial goop off the walls. It's a thankless job in a zero-gravity abyss. + First off, let's talk about the mess. Space dust, alien gunk, and who knows what else accumulates faster than a rocket launch. It's not just about sweeping up the crumbs; it's about battling interstellar filth that seems to have a life of its own. You'd hope for a sleek, futuristic space station, but you get a swirling vortex of space garbage waiting for you around every corner. + And the tools they give us! You'd expect state-of-the-art cleaning gadgets, but nope. They raided a dollar store on Earth before launching us into the cosmos. Mops that barely work in microgravity, spray bottles that run out in one use, and don't even get me started on the space janitor jumpsuit. I feel like a reject from a sci-fi B-movie. + Speaking of jumpsuits, the lack of respect is astronomical. The scientists and astronauts zoom past in their sleek suits, utterly oblivious to the fact that I'm the unsung hero keeping this place from turning into a cosmic trash heap. I bet they don't even know my name. "Hey, Space Janitor!" That's what I get. No appreciation for the elbow grease I put into keeping their precious station spick and span. + And let's remember the hazards. Cleaning up alien slime? Yeah, that's a regular Tuesday for me. One wrong move and I'm dealing with an intergalactic biohazard. It's like playing Russian roulette with space critters that could burst out of some hidden nook and cranny. I signed up to mop floors, not play host to extraterrestrial invaders. + Being a janitor on this so-called Space Station 14 is a cosmic joke. Where did the other 13 stations go? It's not all spacewalks and futuristic gadgets; it's scrubbing toilets and battling alien goo. If anyone thinks space is glamorous, they clearly haven't seen the mess we space janitors deal with every single day. It's time they appreciate the unsung heroes of the space station – the custodians of the cosmos. \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Misc/authorbooks.yml b/Resources/Prototypes/Entities/Objects/Misc/authorbooks.yml index c3f5170001a..70d984240ea 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/authorbooks.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/authorbooks.yml @@ -387,3 +387,17 @@ - state: book6 - type: Paper content: book-text-inspiration + +- type: entity + parent: BookBase + id: BookJanitorTale + name: the tales of a tired janitor + description: A clean looking book, smelling vaguely of soap and bleach. + components: + - type: Sprite + sprite: Objects/Misc/books.rsi + layers: + - state: book0 + - type: Paper + content: book-text-janitor + From c21bdce01db87e82012041edede6dbc70897e773 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Wed, 29 May 2024 01:08:28 +0000 Subject: [PATCH 088/111] Automatic Changelog Update (#407) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 96983e8124e..fc0b5c906c7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4112,3 +4112,9 @@ Entries: radio is on! id: 6114 time: '2024-05-29T00:00:50.0000000+00:00' +- author: FoxxoTrystan + changes: + - type: Tweak + message: New Tools Sprites! + id: 6115 + time: '2024-05-29T01:06:42.0000000+00:00' From 4fdfd6fef21def450e2af6617dff0d33d7b1f665 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Date: Tue, 28 May 2024 18:10:56 -0700 Subject: [PATCH 089/111] Add More Suggested VSCode Extensions (#414) Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> --- .vscode/extensions.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 83bca6f97bc..737b90563e8 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,12 @@ { "recommendations": [ "ms-dotnettools.csharp", - "editorconfig.editorconfig" + "editorconfig.editorconfig", + "aaron-bond.better-comments", + "tamasfe.even-better-toml", + "slava0135.robust-yaml", + "slevesque.shader", + "macabeus.vscode-fluent", + "redhat.vscode-yaml" ] } From a22601c7b5ba55b5fe7b5f3a6a7a3e6596567a2d Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 21:18:15 -0400 Subject: [PATCH 090/111] Mirror: Obsolete `Logger` cleanup for `EntitySystem`s part 2 (#237) ## Mirror of PR #26159: [Obsolete `Logger` cleanup for `EntitySystem`s part 2](https://github.com/space-wizards/space-station-14/pull/26159) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `7d275a4b5e4188db424cc417c609dced3f9aca89` PR opened by LordCarve at 2024-03-15 20:15:41 UTC --- PR changed 14 files with 36 additions and 25 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > Part 2 of 2, continuation of #25941 > Gets rid of the remaining obsolete `Logger` method calls from all `EntitySystem`s and uses the expected `Log` to get at the proper sawmill. > > In particular: > 1. Make the `ExamineSystemShared`'s `InRangeUnObstructed` non-`static` (so finally able to use instance-based `Log` rather than `Logger`) and inject dependency to all systems that were using it as `static`. > 2. Adjust 4 more `EntitySystem`s to use `Log` rather than `Logger` that were missed in the previous PR. > > Tested that the game runs and the affected systems direct logs to the correct sawmill. > > ## Why / Balance > > Using Logger directly for logging is marked obsolete. Brings some order to logs (i.e. all `EntitySystem` logs start with a preceding `system.`). > > ## Technical details > > I'm pretty sure `ExamineSystemShared`'s `InRangeUnObstructed` not being `static` is the intended way since it being `static` dodges the IoC entirely. It even has dirty hacks such as getting the occluder system inside to make it happen. I didn't fix any of that as it's beyond the scope of this PR, but it's another thing that needs improving. > > These are the changes to the log sawmills: > `ExamineSystemShared.cs`: BEFORE: `root` -> NEW: `system.examine` > `AtmosphereSystem.Monstermos.cs`: BEFORE: `root` -> NEW: `system.atmosphere` > `TypingIndicatorSystem.cs`: BEFORE: `root` -> NEW: `system.typing_indicator` > `PiratesRuleSystem.cs` BEFORE: `pirates` -> NEW: `system.pirates_rule` > `TabletopSystem.Session.cs` BEFORE: `root` -> NEW: `system.tabletop` > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > Some logs now fall under a different sawmill (more precise). Any software that analyzes logs and makes assumptions on which sawmill do these logs fall to will need to be adjusted.
    --------- Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- Content.Client/CardboardBox/CardboardBoxSystem.cs | 5 +++-- Content.Client/Popups/PopupOverlay.cs | 5 ++++- Content.Client/Popups/PopupSystem.cs | 3 +++ .../UserInterface/Systems/Chat/ChatUIController.cs | 2 +- Content.Client/Verbs/VerbSystem.cs | 8 ++++---- .../Administration/Systems/AdminVerbSystem.cs | 3 ++- .../EntitySystems/AtmosphereSystem.Monstermos.cs | 2 +- .../Chat/TypingIndicator/TypingIndicatorSystem.cs | 2 +- .../GameTicking/Rules/PiratesRuleSystem.cs | 4 ++-- Content.Server/NPC/Systems/NPCUtilitySystem.cs | 5 +++-- .../Abilities/PsionicRegenerationPowerSystem.cs | 3 ++- .../Pointing/EntitySystems/PointingSystem.cs | 3 ++- Content.Server/Remotes/DoorRemoteSystem.cs | 3 ++- Content.Server/Tabletop/TabletopSystem.Session.cs | 2 +- Content.Shared/Examine/ExamineSystemShared.cs | 12 ++++++------ 15 files changed, 37 insertions(+), 25 deletions(-) diff --git a/Content.Client/CardboardBox/CardboardBoxSystem.cs b/Content.Client/CardboardBox/CardboardBoxSystem.cs index 50f9de239d5..90a21d8e41b 100644 --- a/Content.Client/CardboardBox/CardboardBoxSystem.cs +++ b/Content.Client/CardboardBox/CardboardBoxSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.CardboardBox; using Content.Shared.CardboardBox.Components; using Content.Shared.Examine; @@ -11,6 +11,7 @@ public sealed class CardboardBoxSystem : SharedCardboardBoxSystem { [Dependency] private readonly EntityLookupSystem _entityLookup = default!; [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; public override void Initialize() { @@ -55,7 +56,7 @@ private void OnBoxEffect(PlayBoxEffectMessage msg) foreach (var mob in mobMoverEntities) { var mapPos = _transform.GetMapCoordinates(mob); - if (!ExamineSystemShared.InRangeUnOccluded(sourcePos, mapPos, box.Distance, null)) + if (!_examine.InRangeUnOccluded(sourcePos, mapPos, box.Distance, null)) continue; var ent = Spawn(box.Effect, mapPos); diff --git a/Content.Client/Popups/PopupOverlay.cs b/Content.Client/Popups/PopupOverlay.cs index 1305d8bb947..3bfa7278734 100644 --- a/Content.Client/Popups/PopupOverlay.cs +++ b/Content.Client/Popups/PopupOverlay.cs @@ -21,6 +21,7 @@ public sealed class PopupOverlay : Overlay private readonly IUserInterfaceManager _uiManager; private readonly PopupSystem _popup; private readonly PopupUIController _controller; + private readonly ExamineSystemShared _examine; private readonly ShaderInstance _shader; @@ -33,12 +34,14 @@ public PopupOverlay( IPrototypeManager protoManager, IUserInterfaceManager uiManager, PopupUIController controller, + ExamineSystemShared examine, PopupSystem popup) { _configManager = configManager; _entManager = entManager; _playerMgr = playerMgr; _uiManager = uiManager; + _examine = examine; _popup = popup; _controller = controller; @@ -81,7 +84,7 @@ private void DrawWorld(DrawingHandleScreen worldHandle, OverlayDrawArgs args, fl var distance = (mapPos.Position - args.WorldBounds.Center).Length(); // Should handle fade here too wyci. - if (!args.WorldBounds.Contains(mapPos.Position) || !ExamineSystemShared.InRangeUnOccluded(viewPos, mapPos, distance, + if (!args.WorldBounds.Contains(mapPos.Position) || !_examine.InRangeUnOccluded(viewPos, mapPos, distance, e => e == popup.InitialPos.EntityId || e == ourEntity, entMan: _entManager)) continue; diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index cf96c41241a..46c1e0cdf62 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Shared.Examine; using Content.Shared.GameTicking; using Content.Shared.Popups; using Robust.Client.Graphics; @@ -26,6 +27,7 @@ public sealed class PopupSystem : SharedPopupSystem [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IUserInterfaceManager _uiManager = default!; [Dependency] private readonly IReplayRecordingManager _replayRecording = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; public IReadOnlyList WorldLabels => _aliveWorldLabels; public IReadOnlyList CursorLabels => _aliveCursorLabels; @@ -51,6 +53,7 @@ public override void Initialize() _prototype, _uiManager, _uiManager.GetUIController(), + _examine, this)); } diff --git a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs index ff4972d9d08..0ad78f974e5 100644 --- a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs +++ b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs @@ -627,7 +627,7 @@ private void UpdateQueuedSpeechBubbles(FrameEventArgs delta) var otherPos = EntityManager.GetComponent(ent).MapPosition; - if (occluded && !ExamineSystemShared.InRangeUnOccluded( + if (occluded && !_examine.InRangeUnOccluded( playerPos, otherPos, 0f, (ent, player), predicate)) diff --git a/Content.Client/Verbs/VerbSystem.cs b/Content.Client/Verbs/VerbSystem.cs index 329a8977a68..77f46a3fc97 100644 --- a/Content.Client/Verbs/VerbSystem.cs +++ b/Content.Client/Verbs/VerbSystem.cs @@ -20,7 +20,7 @@ namespace Content.Client.Verbs public sealed class VerbSystem : SharedVerbSystem { [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly ExamineSystem _examineSystem = default!; + [Dependency] private readonly ExamineSystem _examine = default!; [Dependency] private readonly TagSystem _tagSystem = default!; [Dependency] private readonly IStateManager _stateManager = default!; [Dependency] private readonly EntityLookupSystem _entityLookup = default!; @@ -77,7 +77,7 @@ public bool TryGetEntityMenuEntities(MapCoordinates targetPos, [NotNullWhen(true bool Predicate(EntityUid e) => e == player || entitiesUnderMouse.Contains(e); // first check the general location. - if (!_examineSystem.CanExamine(player.Value, targetPos, Predicate)) + if (!_examine.CanExamine(player.Value, targetPos, Predicate)) return false; TryComp(player.Value, out ExaminerComponent? examiner); @@ -86,7 +86,7 @@ public bool TryGetEntityMenuEntities(MapCoordinates targetPos, [NotNullWhen(true entities = new(); foreach (var ent in _entityLookup.GetEntitiesInRange(targetPos, EntityMenuLookupSize)) { - if (_examineSystem.CanExamine(player.Value, targetPos, Predicate, ent, examiner)) + if (_examine.CanExamine(player.Value, targetPos, Predicate, ent, examiner)) entities.Add(ent); } } @@ -147,7 +147,7 @@ public bool TryGetEntityMenuEntities(MapCoordinates targetPos, [NotNullWhen(true { var entity = entities[i]; - if (!ExamineSystemShared.InRangeUnOccluded( + if (!_examine.InRangeUnOccluded( playerPos, xformQuery.GetComponent(entity).MapPosition, ExamineSystemShared.ExamineRange, diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index c4754af9340..f5b237b4492 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -66,6 +66,7 @@ public sealed partial class AdminVerbSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly StationSystem _stations = default!; [Dependency] private readonly StationSpawningSystem _spawning = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; private readonly Dictionary> _openSolutionUis = new(); @@ -416,7 +417,7 @@ private void AddDebugVerbs(GetVerbsEvent args) Act = () => { - var message = ExamineSystemShared.InRangeUnOccluded(args.User, args.Target) + var message = _examine.InRangeUnOccluded(args.User, args.Target) ? Loc.GetString("in-range-unoccluded-verb-on-activate-not-occluded") : Loc.GetString("in-range-unoccluded-verb-on-activate-occluded"); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs index f156125b0ff..dcbc1e86ee2 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs @@ -661,7 +661,7 @@ private void AdjustEqMovement(TileAtmosphere tile, AtmosDirection direction, flo // Turns out: no they don't. Temporary debug checks to figure out which caller is causing problems: if (tile == null) { - Logger.Error($"Encountered null-tile in {nameof(AdjustEqMovement)}. Trace: {Environment.StackTrace}"); + Log.Error($"Encountered null-tile in {nameof(AdjustEqMovement)}. Trace: {Environment.StackTrace}"); return; } var adj = tile.AdjacentTiles[direction.ToIndex()]; diff --git a/Content.Server/Chat/TypingIndicator/TypingIndicatorSystem.cs b/Content.Server/Chat/TypingIndicator/TypingIndicatorSystem.cs index 761e9456bcd..c923738930a 100644 --- a/Content.Server/Chat/TypingIndicator/TypingIndicatorSystem.cs +++ b/Content.Server/Chat/TypingIndicator/TypingIndicatorSystem.cs @@ -39,7 +39,7 @@ private void OnClientTypingChanged(TypingChangedEvent ev, EntitySessionEventArgs var uid = args.SenderSession.AttachedEntity; if (!Exists(uid)) { - Logger.Warning($"Client {args.SenderSession} sent TypingChangedEvent without an attached entity."); + Log.Warning($"Client {args.SenderSession} sent TypingChangedEvent without an attached entity."); return; } diff --git a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs index f83d719c219..98926536b9d 100644 --- a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs @@ -201,7 +201,7 @@ private void OnPlayerSpawningEvent(RulePlayerSpawningEvent ev) if (!gridId.HasValue) { - Logger.ErrorS("pirates", $"Gridid was null when loading \"{map}\", aborting."); + Log.Error($"Gridid was null when loading \"{map}\", aborting."); foreach (var session in ops) { ev.PlayerPool.Add(session); @@ -230,7 +230,7 @@ private void OnPlayerSpawningEvent(RulePlayerSpawningEvent ev) if (spawns.Count == 0) { spawns.Add(Transform(pirates.PirateShip).Coordinates); - Logger.WarningS("pirates", $"Fell back to default spawn for pirates!"); + Log.Warning($"Fell back to default spawn for pirates!"); } for (var i = 0; i < ops.Length; i++) diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index fc483f68c3b..33941be9292 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -43,6 +43,7 @@ public sealed class NPCUtilitySystem : EntitySystem [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly SolutionContainerSystem _solutions = default!; [Dependency] private readonly WeldableSystem _weldable = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; private EntityQuery _puddleQuery; private EntityQuery _xformQuery; @@ -296,7 +297,7 @@ private float GetScore(NPCBlackboard blackboard, EntityUid targetUid, UtilityCon { var radius = blackboard.GetValueOrDefault(NPCBlackboard.VisionRadius, EntityManager); - return ExamineSystemShared.InRangeUnOccluded(owner, targetUid, radius + 0.5f, null) ? 1f : 0f; + return _examine.InRangeUnOccluded(owner, targetUid, radius + 0.5f, null) ? 1f : 0f; } case TargetInLOSOrCurrentCon: { @@ -313,7 +314,7 @@ private float GetScore(NPCBlackboard blackboard, EntityUid targetUid, UtilityCon return 1f; } - return ExamineSystemShared.InRangeUnOccluded(owner, targetUid, radius + bufferRange, null) ? 1f : 0f; + return _examine.InRangeUnOccluded(owner, targetUid, radius + bufferRange, null) ? 1f : 0f; } case TargetIsAliveCon: { diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegenerationPowerSystem.cs b/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegenerationPowerSystem.cs index 2eca3173b6d..097a0cb750b 100644 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegenerationPowerSystem.cs +++ b/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/PsionicRegenerationPowerSystem.cs @@ -38,6 +38,7 @@ public sealed class PsionicRegenerationPowerSystem : EntitySystem [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly MindSystem _mindSystem = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; public override void Initialize() @@ -76,7 +77,7 @@ private void OnPowerUsed(EntityUid uid, PsionicRegenerationPowerComponent compon _popupSystem.PopupEntity(Loc.GetString("psionic-regeneration-begin", ("entity", uid)), uid, // TODO: Use LoS-based Filter when one is available. - Filter.Pvs(uid).RemoveWhereAttachedEntity(entity => !ExamineSystemShared.InRangeUnOccluded(uid, entity, ExamineRange, null)), + Filter.Pvs(uid).RemoveWhereAttachedEntity(entity => !_examine.InRangeUnOccluded(uid, entity, ExamineRange, null)), true, PopupType.Medium); diff --git a/Content.Server/Pointing/EntitySystems/PointingSystem.cs b/Content.Server/Pointing/EntitySystems/PointingSystem.cs index a7c455e6a5d..06d2d6f58b5 100644 --- a/Content.Server/Pointing/EntitySystems/PointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/PointingSystem.cs @@ -37,6 +37,7 @@ internal sealed class PointingSystem : SharedPointingSystem [Dependency] private readonly VisibilitySystem _visibilitySystem = default!; [Dependency] private readonly SharedMindSystem _minds = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; private static readonly TimeSpan PointDelay = TimeSpan.FromSeconds(0.5f); @@ -100,7 +101,7 @@ public bool InRange(EntityUid pointer, EntityCoordinates coordinates) } else { - return ExamineSystemShared.InRangeUnOccluded(pointer, coordinates, 15, predicate: e => e == pointer); + return _examine.InRangeUnOccluded(pointer, coordinates, 15, predicate: e => e == pointer); } } diff --git a/Content.Server/Remotes/DoorRemoteSystem.cs b/Content.Server/Remotes/DoorRemoteSystem.cs index 6403c41addf..d335911901a 100644 --- a/Content.Server/Remotes/DoorRemoteSystem.cs +++ b/Content.Server/Remotes/DoorRemoteSystem.cs @@ -22,6 +22,7 @@ public sealed class DoorRemoteSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly DoorSystem _doorSystem = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; // I'm so sorry [Dependency] private readonly SharedAirlockSystem _sharedAirlockSystem = default!; public override void Initialize() @@ -67,7 +68,7 @@ private void OnBeforeInteract(EntityUid uid, DoorRemoteComponent component, Befo || !TryComp(args.Target, out var doorComp) // If it isn't a door we don't use it // Only able to control doors if they are within your vision and within your max range. // Not affected by mobs or machines anymore. - || !ExamineSystemShared.InRangeUnOccluded(args.User, args.Target.Value, SharedInteractionSystem.MaxRaycastRange, null)) + || !_examine.InRangeUnOccluded(args.User, args.Target.Value, SharedInteractionSystem.MaxRaycastRange, null)) { return; } diff --git a/Content.Server/Tabletop/TabletopSystem.Session.cs b/Content.Server/Tabletop/TabletopSystem.Session.cs index f16f3f01e98..c2bb8426fc2 100644 --- a/Content.Server/Tabletop/TabletopSystem.Session.cs +++ b/Content.Server/Tabletop/TabletopSystem.Session.cs @@ -31,7 +31,7 @@ public TabletopSession EnsureSession(TabletopGameComponent tabletop) // Since this is the first time opening this session, set up the game tabletop.Setup.SetupTabletop(session, EntityManager); - Logger.Info($"Created tabletop session number {tabletop} at position {session.Position}."); + Log.Info($"Created tabletop session number {tabletop} at position {session.Position}."); return session; } diff --git a/Content.Shared/Examine/ExamineSystemShared.cs b/Content.Shared/Examine/ExamineSystemShared.cs index 5a3fb872293..f792862be14 100644 --- a/Content.Shared/Examine/ExamineSystemShared.cs +++ b/Content.Shared/Examine/ExamineSystemShared.cs @@ -144,7 +144,7 @@ public bool IsOccluded(EntityUid uid) return TryComp(uid, out var eye) && eye.DrawFov; } - public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, Ignored? predicate, bool ignoreInsideBlocker = true, IEntityManager? entMan = null) + public bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, Ignored? predicate, bool ignoreInsideBlocker = true, IEntityManager? entMan = null) { // No, rider. This is better. // ReSharper disable once ConvertToLocalFunction @@ -154,7 +154,7 @@ public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other return InRangeUnOccluded(origin, other, range, predicate, wrapped, ignoreInsideBlocker, entMan); } - public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, + public bool InRangeUnOccluded(MapCoordinates origin, MapCoordinates other, float range, TState state, Func predicate, bool ignoreInsideBlocker = true, IEntityManager? entMan = null) { if (other.MapId != origin.MapId || @@ -171,7 +171,7 @@ public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinat if (length > MaxRaycastRange) { - Logger.Warning("InRangeUnOccluded check performed over extreme range. Limiting CollisionRay size."); + Log.Warning("InRangeUnOccluded check performed over extreme range. Limiting CollisionRay size."); length = MaxRaycastRange; } @@ -207,7 +207,7 @@ public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinat return true; } - public static bool InRangeUnOccluded(EntityUid origin, EntityUid other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) + public bool InRangeUnOccluded(EntityUid origin, EntityUid other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; @@ -216,7 +216,7 @@ public static bool InRangeUnOccluded(EntityUid origin, EntityUid other, float ra return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) + public bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; @@ -225,7 +225,7 @@ public static bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(EntityUid origin, MapCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) + public bool InRangeUnOccluded(EntityUid origin, MapCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; From a8242a38a3cd3883aca423e8fb87a8476089c798 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 21:34:09 -0400 Subject: [PATCH 091/111] Mirror: CargoConsoleMenu localization (#127) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Mirror of PR #25931: [CargoConsoleMenu localization](https://github.com/space-wizards/space-station-14/pull/25931) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `6e38b992cfc607e09178efc178b86f35152f0cde` PR opened by modern-nm at 2024-03-08 14:46:29 UTC PR merged by web-flow at 2024-03-09 06:56:40 UTC --- PR changed 20 files with 211 additions and 195 deletions. The PR had the following labels: - Changes: UI ---

    Original Body

    > > > > ## About the PR > > This PR adds localization capability for CargoConsoleMenu (name of entity: ComputerCargoOrders) > > ## Why / Balance > > > Please let me tell you a story of my vision. First i decided to make these changes on one of russian community servers. But taking into account future changes of .yml files by space-wizards community (they are regularly added to our space-station build), we will have to constantly edit xml files to remove duplicate categories — imagine someone added cargoproduct with category "Fun", when we have tons of items with category "Развлечения". > > To summarize: my PR makes possible to localize categories of "cargoproduct" and makes communities do less work when upstream comes > > ## Technical details > > > New code considers strings comparisons of prototype.Category (Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs) using Loc.GetString(...). And that's all. > > ## Media > > Off course there are no visible changes on eng-localization > > ![Снимок_ножницы](https://github.com/space-wizards/space-station-14/assets/87994977/5cdbf5df-c4cc-42e6-861b-aa35a009e957) > > That's how these changes look like on our community build, using other .ftl file > > ![Снимок_ножницы2](https://github.com/space-wizards/space-station-14/assets/87994977/20023fc8-5cdf-4069-981b-edbfa98fa31d) > > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > > .yml > - every category of type "cargoProduct" was edited to "cargoproduct-category-name-{categoryName}" > > .ftl > - file "cargoproduct-categories.ftl" was added to english localization to localize categories of cargoProduct > > .cs > - CargoConsoleMenu.xaml.cs got tweaks which prevent issues with strings comparisons > > **Changelog** > >
    --------- Signed-off-by: VMSolidus Co-authored-by: MODERN <87994977+modern-nm@users.noreply.github.com> Co-authored-by: VMSolidus --- .../Cargo/UI/CargoConsoleMenu.xaml.cs | 4 +- .../catalog/cargo/cargoproduct-categories.ftl | 16 +++++ .../Prototypes/Catalog/Cargo/cargo_armory.yml | 12 ++-- .../Catalog/Cargo/cargo_atmospherics.yml | 22 +++---- .../Prototypes/Catalog/Cargo/cargo_botany.yml | 10 ++-- .../Prototypes/Catalog/Cargo/cargo_cargo.yml | 4 +- .../Catalog/Cargo/cargo_circuitboards.yml | 2 +- .../Catalog/Cargo/cargo_emergency.yml | 16 ++--- .../Catalog/Cargo/cargo_engineering.yml | 28 ++++----- .../Catalog/Cargo/cargo_engines.yml | 36 ++++++------ .../Prototypes/Catalog/Cargo/cargo_food.yml | 16 ++--- .../Prototypes/Catalog/Cargo/cargo_fun.yml | 58 +++++++++---------- .../Catalog/Cargo/cargo_livestock.yml | 46 +++++++-------- .../Catalog/Cargo/cargo_materials.yml | 22 +++---- .../Catalog/Cargo/cargo_medical.yml | 30 +++++----- .../Catalog/Cargo/cargo_science.yml | 6 +- .../Catalog/Cargo/cargo_security.yml | 18 +++--- .../Catalog/Cargo/cargo_service.yml | 38 ++++++------ .../Catalog/Cargo/cargo_shuttle.yml | 6 +- .../Catalog/Cargo/cargo_vending.yml | 52 ++++++++--------- 20 files changed, 229 insertions(+), 213 deletions(-) create mode 100644 Resources/Locale/en-US/prototypes/catalog/cargo/cargoproduct-categories.ftl diff --git a/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs b/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs index baf0d31f1f1..e60335bc45c 100644 --- a/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs +++ b/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs @@ -93,7 +93,7 @@ public void PopulateProducts() if (search.Length == 0 && _category == null || search.Length != 0 && prototype.Name.ToLowerInvariant().Contains(search) || search.Length != 0 && prototype.Description.ToLowerInvariant().Contains(search) || - search.Length == 0 && _category != null && prototype.Category.Equals(_category)) + search.Length == 0 && _category != null && Loc.GetString(prototype.Category).Equals(_category)) { var button = new CargoProductRow { @@ -122,7 +122,7 @@ public void PopulateCategories() foreach (var prototype in ProductPrototypes) { - if (!_categoryStrings.Contains(prototype.Category)) + if (!_categoryStrings.Contains(Loc.GetString(prototype.Category))) { _categoryStrings.Add(Loc.GetString(prototype.Category)); } diff --git a/Resources/Locale/en-US/prototypes/catalog/cargo/cargoproduct-categories.ftl b/Resources/Locale/en-US/prototypes/catalog/cargo/cargoproduct-categories.ftl new file mode 100644 index 00000000000..f2451527b09 --- /dev/null +++ b/Resources/Locale/en-US/prototypes/catalog/cargo/cargoproduct-categories.ftl @@ -0,0 +1,16 @@ +cargoproduct-category-name-armory = Armory +cargoproduct-category-name-atmospherics = Atmospherics +cargoproduct-category-name-cargo = Cargo +cargoproduct-category-name-circuitboards = Circuitboards +cargoproduct-category-name-emergency = Emergency +cargoproduct-category-name-engineering = Engineering +cargoproduct-category-name-food = Food +cargoproduct-category-name-fun = Fun +cargoproduct-category-name-hydroponics = Hydroponics +cargoproduct-category-name-livestock = Livestock +cargoproduct-category-name-materials = Materials +cargoproduct-category-name-medical = Medical +cargoproduct-category-name-science = Science +cargoproduct-category-name-security = Security +cargoproduct-category-name-service = Service +cargoproduct-category-name-shuttle = Shuttle diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml index 399181b4fab..6341042bf89 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml @@ -5,7 +5,7 @@ state: icon product: CrateArmorySMG cost: 9000 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: icon product: CrateArmoryShotgun cost: 7000 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: implanter0 product: CrateTrackingImplants cost: 1000 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: training-bomb product: CrateTrainingBombs cost: 3000 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: icon product: CrateArmoryLaser cost: 4800 - category: Armory + category: cargoproduct-category-name-armory group: market - type: cargoProduct @@ -55,5 +55,5 @@ state: icon product: CrateArmoryPistols cost: 5200 - category: Armory + category: cargoproduct-category-name-armory group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml b/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml index 0aa49383992..c85210adf6a 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml @@ -5,7 +5,7 @@ state: grey product: AirCanister cost: 1100 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: blue product: OxygenCanister cost: 1100 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: blue product: LiquidOxygenCanister cost: 2500 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: red product: NitrogenCanister cost: 1100 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: red product: LiquidNitrogenCanister cost: 2500 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: black product: CarbonDioxideCanister cost: 2200 # Until someone fixes it co2 can be used to oneshot people so it's more expensive - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: black product: LiquidCarbonDioxideCanister cost: 4000 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: yellow product: StorageCanister cost: 1010 # No gases in it so it's cheaper - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market #- type: cargoProduct @@ -87,7 +87,7 @@ # state: water_vapor # product: WaterVaporCanister # cost: 2600 -# category: Atmospherics +# category: cargoproduct-category-name-atmospherics # group: market - type: cargoProduct @@ -97,7 +97,7 @@ state: orange product: PlasmaCanister cost: 4000 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market #- type: cargoProduct @@ -109,5 +109,5 @@ # state: green # product: TritiumCanister # cost: 15500 -# category: Atmospherics +# category: cargoproduct-category-name-atmospherics # group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml b/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml index 4a80b76a3fa..a6671ff0998 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml @@ -5,7 +5,7 @@ state: seed product: CrateHydroponicsSeedsExotic cost: 1000 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: seed product: CrateHydroponicsSeedsMedicinal cost: 500 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: icon product: CrateHydroponicsTools cost: 500 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: seed product: CrateHydroponicsSeeds cost: 550 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -45,5 +45,5 @@ state: jug product: CratePlantBGone cost: 750 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml b/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml index 9dac47b6f15..fb3b2da41a8 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml @@ -15,7 +15,7 @@ state: orebox product: OreBox cost: 500 - category: Logistics # DeltaV - Logistics Department replacing Cargo + category: cargoproduct-category-name-cargo group: market - type: cargoProduct @@ -25,5 +25,5 @@ state: icon product: CrateCargoLuxuryHardsuit cost: 15000 - category: Logistics # DeltaV - Logistics Department replacing Cargo + category: cargoproduct-category-name-cargo group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml b/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml index 0af5b5db016..a96780fc3ed 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml @@ -5,5 +5,5 @@ state: cpuboard product: CrateCrewMonitoringBoards cost: 2000 - category: Circuitboards + category: cargoproduct-category-name-circuitboards group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_emergency.yml b/Resources/Prototypes/Catalog/Cargo/cargo_emergency.yml index 2777f859a07..2715e0c3501 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_emergency.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_emergency.yml @@ -5,7 +5,7 @@ state: icon product: CrateEmergencyExplosive cost: 650 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: fire_extinguisher_closed product: CrateEmergencyFire cost: 1500 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: icon product: CrateEmergencyInternals cost: 500 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon product: CrateEmergencyInternalsLarge cost: 2000 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: radiation product: CrateEmergencyRadiation cost: 1000 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: item_wall product: CrateEmergencyInflatablewall cost: 500 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: icon product: CrateSlimepersonLifeSupport cost: 300 - category: Emergency + category: cargoproduct-category-name-emergency group: market - type: cargoProduct @@ -75,5 +75,5 @@ state: icon product: CrateGenericBiosuit cost: 800 - category: Emergency + category: cargoproduct-category-name-emergency group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml b/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml index b5468fd982c..754e30f133a 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml @@ -5,7 +5,7 @@ state: coillv-30 product: CrateEngineeringCableLV cost: 300 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: coilmv-30 product: CrateEngineeringCableMV cost: 300 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: coilhv-30 product: CrateEngineeringCableHV cost: 300 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: coilall-30 product: CrateEngineeringCableBulk cost: 750 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: icon product: CrateEngineeringElectricalSupplies cost: 4500 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: icon product: CrateEngineeringStationBeaconBundle cost: 500 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: icon product: CrateEngineeringJetpack cost: 1000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: icon product: CrateEngineeringMiniJetpack cost: 750 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: icon product: CrateAirlockKit cost: 1100 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: icon product: CrateEvaKit cost: 5000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: ammo product: CrateRCDAmmo cost: 2500 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: icon product: CrateRCD cost: 800 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: base product: CrateParticleDecelerators cost: 15000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -135,5 +135,5 @@ state: sheaterOff product: SpaceHeaterAnchored cost: 300 - category: Engineering + category: cargoproduct-category-name-engineering group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml b/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml index ece817b746e..bd00b0c2d4c 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml @@ -5,7 +5,7 @@ state: jar product: CrateEngineeringAMEJar cost: 2000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: icon product: CrateEngineeringSingularityGenerator cost: 4000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: icon product: CrateEngineeringSingularityContainment cost: 1000 - category: Engineering + category: cargoproduct-category-name-engineering group: market #- type: cargoProduct @@ -37,7 +37,7 @@ # state: emitter2 # product: CrateEngineeringSingularityEmitter # cost: 3000 -# category: Engineering +# category: cargoproduct-category-name-engineering # group: market - type: cargoProduct @@ -47,7 +47,7 @@ state: ca_on product: CrateEngineeringSingularityCollector cost: 1000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -57,7 +57,7 @@ state: completed product: CrateEngineeringParticleAccelerator cost: 2000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -67,18 +67,18 @@ state: solar-assembly-part product: CrateEngineeringSolar cost: 500 - category: Engineering + category: cargoproduct-category-name-engineering group: market -#- type: cargoProduct -# id: EngineTeslaGenerator -# icon: -# sprite: Structures/Power/Generation/Tesla/generator.rsi -# state: icon -# product: CrateEngineeringTeslaGenerator -# cost: 4000 -# category: Engineering -# group: market +- type: cargoProduct + id: EngineTeslaGenerator + icon: + sprite: Structures/Power/Generation/Tesla/generator.rsi + state: icon + product: CrateEngineeringTeslaGenerator + cost: 4000 + category: cargoproduct-category-name-engineering + group: market - type: cargoProduct id: EngineTeslaCoil @@ -87,7 +87,7 @@ state: coil product: CrateEngineeringTeslaCoil cost: 1200 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -97,5 +97,5 @@ state: grounding_rod product: CrateEngineeringTeslaGroundingRod cost: 400 - category: Engineering + category: cargoproduct-category-name-engineering group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_food.yml b/Resources/Prototypes/Catalog/Cargo/cargo_food.yml index e5069959296..1a6f8380961 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_food.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_food.yml @@ -5,7 +5,7 @@ state: margherita-slice product: CrateFoodPizza cost: 450 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: margherita product: CrateFoodPizzaLarge cost: 1800 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: nutribrick product: CrateFoodMRE cost: 1000 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: flour-big product: CrateFoodCooking cost: 750 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: tin product: CrateFoodDinnerware cost: 750 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: icon product: CrateFoodBarSupply cost: 750 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: icon product: CrateFoodSoftdrinks cost: 1200 - category: Food + category: cargoproduct-category-name-food group: market - type: cargoProduct @@ -75,5 +75,5 @@ state: icon product: CrateFoodSoftdrinksLarge cost: 2400 - category: Food + category: cargoproduct-category-name-food group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml index d84fedd543f..c29458a1ee5 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml @@ -5,7 +5,7 @@ state: icon product: CrateFunInstrumentsVariety cost: 2000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: tuba product: CrateFunInstrumentsBrass cost: 2500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: icon product: CrateFunInstrumentsString cost: 2500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon product: CrateFunInstrumentsWoodwind cost: 2500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: icon product: CrateFunInstrumentsKeyedPercussion cost: 2500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: icon product: CrateFunInstrumentsSpecial cost: 10000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: box product: CrateFunArtSupplies cost: 500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: birthday product: CrateFunParty cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: display product: CrateFunWaterGuns cost: 750 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: plushie_h product: CrateFunPlushie cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: plushie_lizard product: CrateFunLizardPlushieBulk cost: 500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: d6_6 product: CrateFunBoardGames cost: 1500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: implanter0 product: CrateFunSadTromboneImplants cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -145,7 +145,7 @@ state: implanter0 product: CrateFunLightImplants cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -155,7 +155,7 @@ state: icon product: CrateFunBoxing cost: 500 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -165,7 +165,7 @@ state: crate_icon product: CrateFunPirate cost: 400 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -175,7 +175,7 @@ state: crate_icon product: CrateFunToyBox cost: 900 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -185,7 +185,7 @@ state: implanter0 product: CrateFunBikeHornImplants cost: 1000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -195,7 +195,7 @@ state: fig_box product: CrateFunMysteryFigurines cost: 4000 - category: Fun + category: cargoproduct-category-name-fun group: market - type: cargoProduct @@ -205,15 +205,15 @@ state: icon product: CrateFunDartsSet cost: 900 - category: Fun + category: cargoproduct-category-name-fun group: market -#- type: cargoProduct -# id: FunCrateGambling -# icon: -# sprite: Objects/Economy/cash.rsi -# state: cash_1000000 -# product: CrateCargoGambling -# cost: 10000 -# category: Fun -# group: market +- type: cargoProduct + id: FunCrateGambling + icon: + sprite: Objects/Economy/cash.rsi + state: cash_1000000 + product: CrateCargoGambling + cost: 10000 + category: cargoproduct-category-name-fun + group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml b/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml index 6ef0ab4e211..922e2951b6c 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml @@ -5,7 +5,7 @@ state: 0 product: CrateNPCBee cost: 7000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: butterfly product: CrateNPCButterflies cost: 4400 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: cat product: CrateNPCCat cost: 1200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon-1 product: CrateNPCChicken cost: 4000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: crab product: CrateNPCCrab cost: 3000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: icon-0 product: CrateNPCDuck cost: 6000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: corgi product: CrateNPCCorgi cost: 1200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: puppy product: CrateNPCPuppyCorgi cost: 1200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: cow product: CrateNPCCow cost: 3200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: goat product: CrateNPCGoat cost: 1200 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: goose product: CrateNPCGoose cost: 2100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: icon product: CrateNPCGorilla cost: 1100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: box product: CrateNPCMonkeyCube cost: 2000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: box_kobold product: CrateNPCKoboldCube cost: 2000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -145,7 +145,7 @@ state: icon-0 product: CrateNPCMouse cost: 4400 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -155,7 +155,7 @@ state: parrot product: CrateNPCParrot cost: 3000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -165,7 +165,7 @@ state: penguin product: CrateNPCPenguin cost: 2100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -175,7 +175,7 @@ state: pig product: CrateNPCPig cost: 1100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -185,7 +185,7 @@ state: snake product: CrateNPCSnake cost: 3000 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -195,7 +195,7 @@ state: icon-0 product: CrateNPCHamster cost: 2800 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -205,7 +205,7 @@ state: lizard product: CrateNPCLizard cost: 1100 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -215,7 +215,7 @@ state: kangaroo product: CrateNPCKangaroo cost: 2800 - category: Livestock + category: cargoproduct-category-name-livestock group: market - type: cargoProduct @@ -225,5 +225,5 @@ state: mothroach product: CrateNPCMothroach cost: 5000 - category: Livestock + category: cargoproduct-category-name-livestock group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml b/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml index e3b07af13ba..6f945001d93 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml @@ -5,7 +5,7 @@ state: glass_3 product: CrateMaterialGlass cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: steel_3 product: CrateMaterialSteel cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: plastic_3 product: CrateMaterialPlastic cost: 1500 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: brass_3 product: CrateMaterialBrass cost: 2500 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: plasteel_3 product: CrateMaterialPlasteel cost: 3000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: cloth_3 product: CrateMaterialTextiles cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: plasma_3 product: CrateMaterialPlasma cost: 2000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: cardboard_3 product: CrateMaterialCardboard cost: 750 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: paper_3 product: CrateMaterialPaper cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: fueltank product: WeldingFuelTankFull cost: 1500 - category: Materials + category: cargoproduct-category-name-materials group: market - type: cargoProduct @@ -105,5 +105,5 @@ state: watertank product: WaterTankFull cost: 1000 - category: Materials + category: cargoproduct-category-name-materials group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml b/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml index 01a7192b35b..1addf523e4b 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml @@ -5,7 +5,7 @@ state: firstaid product: CrateMedicalSupplies cost: 2400 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: beaker product: CrateChemistrySupplies cost: 750 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: vial product: CrateChemistryVials cost: 1000 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: burnkit product: CrateEmergencyBurnKit cost: 700 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: toxinkit product: CrateEmergencyToxinKit cost: 600 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: o2kit product: CrateEmergencyO2Kit cost: 600 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: brutekit product: CrateEmergencyBruteKit cost: 600 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: advkit product: CrateEmergencyAdvancedKit cost: 1200 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: radkit product: CrateEmergencyRadiationKit cost: 600 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: bag_folded product: CrateBodyBags cost: 700 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: icon product: CrateVirologyBiosuit cost: 800 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: implanter0 product: CrateMindShieldImplants cost: 3000 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: icon product: CrateChemistryP cost: 850 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: icon product: CrateChemistryS cost: 750 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -145,5 +145,5 @@ state: icon product: CrateChemistryD cost: 750 - category: Medical + category: cargoproduct-category-name-medical group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml index f370155e075..756a223e74d 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml @@ -5,7 +5,7 @@ state: artifact_container_icon product: CrateArtifactContainer cost: 500 - category: Epistemics # DeltaV - Epistemics Department replacing Science + category: cargoproduct-category-name-science group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: ano13 product: RandomArtifactSpawner cost: 2000 - category: Epistemics # DeltaV - Epistemics Department replacing Science + category: cargoproduct-category-name-science group: market - type: cargoProduct @@ -25,5 +25,5 @@ state: icon product: CrateScienceBiosuit cost: 800 - category: Epistemics # DeltaV - Epistemics Department replacing Science + category: cargoproduct-category-name-science group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml index a616202bdba..2ad7628ddb3 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml @@ -4,8 +4,8 @@ sprite: DeltaV/Clothing/OuterClothing/Armor/platecarrier.rsi # DeltaV - resprite state: icon product: CrateSecurityArmor - cost: 1000 # DeltaV - raise price for buffed armour - category: Security + cost: 800 + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: icon product: CrateSecurityHelmet cost: 550 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: base product: CrateSecurityNonlethal cost: 4000 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon product: CrateSecurityRiot cost: 5500 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: box_security product: CrateSecuritySupplies cost: 500 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: handcuff product: CrateRestraints cost: 1000 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: icon product: CrateSecurityBiosuit cost: 800 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -75,5 +75,5 @@ state: idle product: DeployableBarrier cost: 1000 - category: Security + category: cargoproduct-category-name-security group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_service.yml b/Resources/Prototypes/Catalog/Cargo/cargo_service.yml index a2c0af9ce7f..f27adb65a4a 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_service.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_service.yml @@ -5,7 +5,7 @@ state: cleaner product: CrateServiceJanitorialSupplies cost: 560 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: normal product: CrateServiceReplacementLights cost: 600 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -25,7 +25,7 @@ state: mousetrap product: CrateMousetrapBoxes cost: 500 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -35,7 +35,7 @@ state: icon product: CrateServiceTheatre cost: 1800 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -45,7 +45,7 @@ state: closed product: CrateServiceSmokeables cost: 1500 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: closed product: CrateServiceCustomSmokable cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: pen product: CrateServiceBureaucracy cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: default product: CrateServicePersonnel cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: book0 product: CrateServiceBooks cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: book_engineering2 product: CrateServiceGuidebooks cost: 1300 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -105,7 +105,7 @@ state: icon product: CrateServiceSodaDispenser cost: 850 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: icon product: CrateServiceBoozeDispenser cost: 750 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: box product: CrateServiceBox cost: 400 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: icon product: CrateJanitorBiosuit cost: 800 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -145,7 +145,7 @@ state: icon-hot product: FoodCartHot cost: 2000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -155,7 +155,7 @@ state: icon-cold product: FoodCartCold cost: 2000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -165,7 +165,7 @@ state: icon product: PetCarrier cost: 500 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -175,7 +175,7 @@ state: icon product: CrateJanitorExplosive cost: 1000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -185,6 +185,6 @@ state: icon-cart product: JanitorialTrolley cost: 300 - category: Service + category: cargoproduct-category-name-service group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_shuttle.yml b/Resources/Prototypes/Catalog/Cargo/cargo_shuttle.yml index 96a193881ef..278104caed1 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_shuttle.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_shuttle.yml @@ -5,7 +5,7 @@ state: base product: CrateEngineeringThruster cost: 1500 - category: Shuttle + category: cargoproduct-category-name-shuttle group: market - type: cargoProduct @@ -15,7 +15,7 @@ state: base product: CrateEngineeringGyroscope cost: 4000 - category: Shuttle + category: cargoproduct-category-name-shuttle group: market # - type: cargoProduct @@ -25,6 +25,6 @@ # state: avionics-systems # product: CrateEngineeringShuttle # cost: 3000 - # category: Shuttle + # category: cargoproduct-category-name-shuttle # group: market # locked: true # only the QM has permission to order by default diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml index 76ab0499170..3e303c32127 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml @@ -13,7 +13,7 @@ state: base product: CrateVendingMachineRestockBoozeFilled cost: 3500 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -24,7 +24,7 @@ state: base product: CrateVendingMachineRestockChefvendFilled cost: 680 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -34,7 +34,7 @@ state: base product: CrateVendingMachineRestockClothesFilled cost: 8050 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -44,7 +44,7 @@ state: base product: CrateVendingMachineRestockDinnerwareFilled cost: 2000 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -55,7 +55,7 @@ state: base product: CrateVendingMachineRestockCondimentStationFilled cost: 300 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -65,7 +65,7 @@ state: base product: CrateVendingMachineRestockEngineeringFilled cost: 3200 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -75,7 +75,7 @@ state: base product: CrateVendingMachineRestockGamesFilled cost: 750 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -85,7 +85,7 @@ state: base product: CrateVendingMachineRestockHotDrinksFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -95,7 +95,7 @@ state: base product: CrateVendingMachineRestockMedicalFilled cost: 1750 - category: Medical + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -104,8 +104,8 @@ sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base product: CrateVendingMachineRestockChemVendFilled - cost: 6300 #Delta V - was 3820, see rebase PR #53 - category: Medical + cost: 3820 + category: cargoproduct-category-name-medical group: market - type: cargoProduct @@ -115,7 +115,7 @@ state: base product: CrateVendingMachineRestockNutriMaxFilled cost: 2400 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -125,7 +125,7 @@ state: base product: CrateVendingMachineRestockPTechFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -135,7 +135,7 @@ state: base product: CrateVendingMachineRestockRobustSoftdrinksFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -145,7 +145,7 @@ state: base product: CrateVendingMachineRestockSalvageEquipmentFilled cost: 1000 - category: Engineering + category: cargoproduct-category-name-engineering group: market - type: cargoProduct @@ -155,7 +155,7 @@ state: base product: CrateVendingMachineRestockSecTechFilled cost: 2200 - category: Security + category: cargoproduct-category-name-security group: market - type: cargoProduct @@ -165,7 +165,7 @@ state: base product: CrateVendingMachineRestockSeedsFilled cost: 3375 - category: Hydroponics + category: cargoproduct-category-name-hydroponics group: market - type: cargoProduct @@ -175,7 +175,7 @@ state: base product: CrateVendingMachineRestockSmokesFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -185,7 +185,7 @@ state: base product: CrateVendingMachineRestockVendomatFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -195,7 +195,7 @@ state: base product: CrateVendingMachineRestockRoboticsFilled cost: 1600 - category: Epistemics # DeltaV - Epistemics Department replacing Science + category: cargoproduct-category-name-science group: market - type: cargoProduct @@ -205,7 +205,7 @@ state: base product: CrateVendingMachineRestockTankDispenserFilled cost: 1000 - category: Atmospherics + category: cargoproduct-category-name-atmospherics group: market - type: cargoProduct @@ -215,7 +215,7 @@ state: base product: CrateVendingMachineRestockHappyHonkFilled cost: 2100 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -225,7 +225,7 @@ state: base product: CrateVendingMachineRestockGetmoreChocolateCorpFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -235,7 +235,7 @@ state: base product: CrateVendingMachineRestockChangFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -245,7 +245,7 @@ state: base product: CrateVendingMachineRestockDiscountDansFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market - type: cargoProduct @@ -255,5 +255,5 @@ state: base product: CrateVendingMachineRestockDonutFilled cost: 1200 - category: Service + category: cargoproduct-category-name-service group: market From 9c087755aaf336965901ffe113eb76c383b9a3ee Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 21:34:24 -0400 Subject: [PATCH 092/111] Updates spawners with new content (#86) ## Mirror of PR #1032: [Updates spawners with new content](https://github.com/DeltaV-Station/Delta-v/pull/1032) from DeltaV-Station [DeltaV-Station](https://github.com/DeltaV-Station)/[Delta-v](https://github.com/DeltaV-Station/Delta-v) `5e397c6e7b2d2513f49948fbba1eb1d658fe4a9e` --- PR changed 0 files with 0 additions and 0 deletions. The PR had the following labels: - Changes: YML ---

    Original Body

    > ## About the PR > Title. Updates box, device, hat, machinepart, and seed spawners. > Will do Items later. > > ## Why / Balance > Just catching up
    --------- Co-authored-by: Velcroboy <107660393+IamVelcroboy@users.noreply.github.com> Co-authored-by: VMSolidus Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> --- .../Markers/Spawners/Random/books.yml | 1 + .../Markers/Spawners/Random/boxes.yml | 8 +++++ .../Markers/Spawners/Random/devices.yml | 34 ++++++++++++++++++- .../Entities/Markers/Spawners/Random/hats.yml | 20 +++++++++++ .../Markers/Spawners/Random/machineparts.yml | 2 +- .../Markers/Spawners/Random/seeds.yml | 3 ++ 6 files changed, 66 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/books.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/books.yml index 28340ead40a..59e3690b6bc 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/books.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/books.yml @@ -45,6 +45,7 @@ - BookMap - BookJourney - BookInspiration + - BookJanitorTale # Guidebook Books - BookSpaceEncyclopedia - BookTheBookOfControl diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/boxes.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/boxes.yml index a75f31cf0f7..181bacca45e 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/boxes.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/boxes.yml @@ -36,6 +36,7 @@ - BoxCandle - BoxCandleSmall - BoxDarts + - BoxCartridgeBB chance: 0.7 rarePrototypes: - BoxHugHealing @@ -49,6 +50,7 @@ - PresentRandom - BoxHolyWater - MysteryFigureBox + - BoxCleanerGrenades rareChance: 0.05 @@ -100,6 +102,8 @@ - BoxMagazineCaselessRifleRubber - BoxMagazineUniversalMagnumPractice - BoxMagazineUniversalMagnumRubber + - MagazineBoxSpecialRubber + - MagazineBoxSpecialPractice chance: 0.15 rarePrototypes: - BoxMagazinePistolCaselessRifle @@ -121,4 +125,8 @@ - BoxShellSoulbreaker - BoxMagazineUniversalMagnum - BoxSpeedLoaderLightRifle + - MagazineBoxSpecial + - MagazineBoxSpecialIncendiary + - MagazineBoxSpecialUranium + - MagazineBoxSpecialMindbreaker rareChance: 0.015 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml index c8efdbdc8cf..abd4d86a1ef 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml @@ -1,7 +1,7 @@ - type: entity parent: MarkerBase id: RandomBoards - name: random machine board spawner + name: random device & board spawner components: - type: Sprite layers: @@ -71,6 +71,16 @@ - HotplateMachineCircuitboard - ElectricGrillMachineCircuitboard - FatExtractorMachineCircuitboard + - SpaceHeaterMachineCircuitBoard + - StationMapCircuitboard + - Igniter + - IntercomElectronics + - DoorRemoteFirefight + - RadiationCollectorFlatpack + - ContainmentFieldGeneratorFlatpack + - SolarAssemblyFlatpack + - StationBeaconPart + - HandheldStationMap chance: 0.8 rarePrototypes: - TraversalDistorterMachineCircuitboard @@ -107,4 +117,26 @@ - ShockCollar - GlimmerMonitorCartridge - PotatoAIChip + - CargoTelepadMachineCircuitboard + - FlatpackerMachineCircuitboard + - OreProcessorIndustrialMachineCircuitboard + - TurboItemRechargerCircuitboard + - PowerCageRechargerCircuitboard + - HellfireHeaterMachineCircuitBoard + - HellfireFreezerMachineCircuitBoard + - BiofabricatorMachineCircuitboard + - SalvageExpeditionsComputerCircuitboard + - RadarConsoleCircuitboard + - RipleyCentralElectronics + - RipleyPeripheralsElectronics + - HamtrCentralElectronics + - HamtrPeripheralsElectronics + - HonkerCentralElectronics + - HonkerPeripheralsElectronics + - HonkerTargetingElectronics + - RemoteSignallerAdvanced + - SignalTimerElectronics + - LogProbeCartridge + - HoloprojectorField + - DeviceQuantumSpinInverter rareChance: 0.25 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/hats.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/hats.yml index b9def15132e..f0dd4709034 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/hats.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/hats.yml @@ -42,6 +42,18 @@ - ClothingHeadCage - ClothingHeadHelmetKendoMen - ClothingHeadBandMerc + - ClothingHeadHatCowboyWhite + - ClothingHeadHatCowboyGrey + - ClothingHeadHatCowboyBrown + - ClothingHeadHatBrownFlatcap + - ClothingHeadHatGreyFlatcap + - ClothingHeadHatPartyRed + - ClothingHeadHatPartyYellow + - ClothingHeadHatPartyGreen + - ClothingHeadHatPartyBlue + - ClothingHeadHatWatermelon + - WaterDropletHat + - ClothingHeadHatRedRacoon rareChance: 0.03 prototypes: - ClothingHeadHatAnimalCat @@ -98,5 +110,13 @@ - ClothingHeadHatFlatBrown - ClothingHeadTinfoil - ClothingHeadHatStrawHat + - ClothingHeadHatCowboyBountyHunter + - ClothingHeadHatCowboyRed + - ClothingHeadHatCowboyBlack + - ClothingHeadHatGladiator + - ClothingHeadHatMagician + - ClothingHeadHatHetmanHat + - ClothingHeadHatTacticalMaidHeadband + - ClothingHeadHatPirateTricord chance: 0.5 offset: 0.2 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/machineparts.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/machineparts.yml index 7785e5aaa82..61a99faa2f1 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/machineparts.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/machineparts.yml @@ -36,5 +36,5 @@ - MatterBinStockPart - CrateMaterialSteel - CrateMaterialGlass - chance: 0.45 + chance: 0.50 offset: 0.0 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/seeds.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/seeds.yml index 9f183dcefbd..0c3370890c8 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/seeds.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/seeds.yml @@ -48,6 +48,7 @@ - PeaSeeds - PumpkinSeeds - CottonSeeds + - LilySeeds chance: 0.95 offset: 0.0 rarePrototypes: @@ -64,4 +65,6 @@ - LemoonSeeds - SteelcapSeeds - KoibeanSeeds + - SpacemansTrumpetSeeds + - LaughinPeaSeeds rareChance: 0.05 From 8223dca8b7e5d91e0cfd0ccac981f8ce0be0c24b Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 22:19:15 -0400 Subject: [PATCH 093/111] Mirror: Fixes store purchase events and adds support to raise a directed event (#364) ## Mirror of PR #26389: [Fixes store purchase events and adds support to raise a directed event](https://github.com/space-wizards/space-station-14/pull/26389) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `4dced51f0d8d008714a14675b48c8fa2b7fa0ace` PR opened by keronshb at 2024-03-24 14:16:44 UTC --- PR changed 2 files with 8 additions and 3 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > > When testing around some things with the magic PR I found that the purchase event wasn't being compared correctly. Also I added support to raise the purchase event directed at the buyer instead of just a broadcast event. > > ## Technical details > > The equals method will now check for purchase event type instead of comparing the references. To make this stronger we should talk about creating a base store purchase event class. > > For directing the event I added a bool to raise on user and we check if that's true. > > ## Media > > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase
    Co-authored-by: SimpleStation14 --- Content.Server/Store/Systems/StoreSystem.Ui.cs | 6 ++++-- Content.Shared/Store/ListingPrototype.cs | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index 281d8f57267..70b70e2ca90 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -248,10 +248,12 @@ private void OnBuyRequest(EntityUid uid, StoreComponent component, StoreBuyListi HandleRefundComp(uid, component, upgradeActionId.Value); } - //broadcast event if (listing.ProductEvent != null) { - RaiseLocalEvent(listing.ProductEvent); + if (!listing.RaiseProductEventOnUser) + RaiseLocalEvent(listing.ProductEvent); + else + RaiseLocalEvent(buyer, listing.ProductEvent); } //log dat shit. diff --git a/Content.Shared/Store/ListingPrototype.cs b/Content.Shared/Store/ListingPrototype.cs index 2f067afbeeb..25245327ce9 100644 --- a/Content.Shared/Store/ListingPrototype.cs +++ b/Content.Shared/Store/ListingPrototype.cs @@ -98,6 +98,9 @@ public partial class ListingData : IEquatable, ICloneable [DataField("productEvent")] public object? ProductEvent; + [DataField] + public bool RaiseProductEventOnUser; + /// /// used internally for tracking how many times an item was purchased. /// @@ -120,7 +123,7 @@ public bool Equals(ListingData? listing) Description != listing.Description || ProductEntity != listing.ProductEntity || ProductAction != listing.ProductAction || - ProductEvent != listing.ProductEvent || + ProductEvent?.GetType() != listing.ProductEvent?.GetType() || RestockTime != listing.RestockTime) return false; From 2affb3e544cab7b868c7a5b27c1d52c491ddc87a Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:31:54 -0400 Subject: [PATCH 094/111] Mirror: Adds logging for refunds (#275) ## Mirror of PR #26274: [Adds logging for refunds](https://github.com/space-wizards/space-station-14/pull/26274) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `85f4b43db1c0256e6d4c48a01558e8cc0a883ada` PR opened by keronshb at 2024-03-19 23:42:22 UTC --- PR changed 2 files with 4 additions and 0 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > > Refunds now have logging > > ## Why / Balance > > > Good for admins to keep track of. > > ## Technical details > > A Store Refund entry was added into the logging enum and a log entry is made when a refund is successful.
    Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- Content.Server/Store/Systems/StoreSystem.Ui.cs | 3 +++ Content.Shared.Database/LogType.cs | 1 + 2 files changed, 4 insertions(+) diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index 70b70e2ca90..49db980451e 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -5,6 +5,7 @@ using Content.Server.Stack; using Content.Server.Store.Components; using Content.Shared.Actions; +using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.FixedPoint; using Content.Shared.Hands.EntitySystems; @@ -323,6 +324,8 @@ private void OnRequestRefund(EntityUid uid, StoreComponent component, StoreReque if (!component.RefundAllowed || component.BoughtEntities.Count == 0) return; + _admin.Add(LogType.StoreRefund, LogImpact.Low, $"{ToPrettyString(buyer):player} has refunded their purchases from {ToPrettyString(uid):store}"); + for (var i = component.BoughtEntities.Count - 1; i >= 0; i--) { var purchase = component.BoughtEntities[i]; diff --git a/Content.Shared.Database/LogType.cs b/Content.Shared.Database/LogType.cs index 70a6119130e..ba94b0f3738 100644 --- a/Content.Shared.Database/LogType.cs +++ b/Content.Shared.Database/LogType.cs @@ -98,4 +98,5 @@ public enum LogType ChatRateLimited = 87, AtmosTemperatureChanged = 88, DeviceNetwork = 89, + StoreRefund = 90 } From 28a7f198894eebfaafad2072012003145c484ecd Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:32:10 -0400 Subject: [PATCH 095/111] Mirror: Fix artifact report guidebook info (#268) ## Mirror of PR #26252: [Fix artifact report guidebook info](https://github.com/space-wizards/space-station-14/pull/26252) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `e70928fad8c849ac0fd48da1415b6b134f9336a8` PR opened by Vermidia at 2024-03-19 03:17:41 UTC --- PR changed 1 files with 1 additions and 1 deletions. The PR had the following labels: - No C# - Status: Needs Review ---

    Original Body

    > Fix conflicting info > > > > > ## About the PR > > > The line about current value still treated extracting points from artifacts as destroying them, so I've changed it to clarify how it works better. > > ## Why / Balance > > > Really confusing when part of the guide tells you to always extract and the other says to be careful since it'll get destroyed. > > ## Technical details > > > ## Media > > > - [ ] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > :cl: > - tweak: Made the Artifact Reports page up to date with current Xenoarchaeology > >
    Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml b/Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml index b7ba3d4c8b4..a377c980e55 100644 --- a/Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml +++ b/Resources/ServerInfo/Guidebook/Science/ArtifactReports.xml @@ -14,7 +14,7 @@ A large portion of Xenoarchaeology gameplay revolves around the interpretation o - [color=#a4885c]Edges:[/color] the amount of nodes that are connected to the current node. Using this, you can calculate the total number of nodes as well as organize a map of their connections. -- [color=#a4885c]Unextracted value:[/color] the amount of research points an artifact will give when extracted. Extracting sets this to zero and traversing new nodes increases it. +- [color=#a4885c]Current value:[/color] the amount of research points an artifact is currently worth. Extracting will set this to zero and traversing new nodes will increase it. Reports are a helpful tool in manipulating an artifact, especially in the later stages where you are traversing nodes that have already been activated. From 2ca6be7161b132ed7024a2a9bf2b1356cb2df0e4 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:32:18 -0400 Subject: [PATCH 096/111] Mirror: More good looking inventory part 2.2 (instruments version) (#189) ## Mirror of PR #26090: [More good looking inventory part 2.2 (instruments version)](https://github.com/space-wizards/space-station-14/pull/26090) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `91aa6445714d6b833474fcb911c4c8555a54f799` PR opened by lzk228 at 2024-03-13 18:52:29 UTC --- PR changed 4 files with 12 additions and 4 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > > - media > - fix tophat name > > ## Why / Balance > > > ## Technical details > > > ## Media > > ![Screenshot_20240313_194028](https://github.com/space-wizards/space-station-14/assets/124214523/51640a13-f4b7-490d-8982-6d2e07dcc009) > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > no cl no fun > >
    Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- Resources/Prototypes/Entities/Clothing/Head/hats.yml | 5 +++-- .../Entities/Objects/Fun/Instruments/instruments_misc.yml | 3 +++ .../Objects/Fun/Instruments/instruments_percussion.yml | 2 ++ .../Entities/Objects/Fun/Instruments/instruments_wind.yml | 5 +++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index 43d6c7c9b70..c845d7cc4a0 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -809,8 +809,8 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatMagician - name: magician's top hat. - description: "A magician's top hat." + name: magician's tophat + description: "A magician's tophat." components: - type: Icon sprite: Clothing/Head/Hats/magician.rsi @@ -827,6 +827,7 @@ - type: Item size: Small sprite: Clothing/Head/Hats/magician.rsi + storedRotation: 0 - type: Storage grid: - 0,0,0,0 diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml index 8c3aed0d069..edad2b40631 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml @@ -89,6 +89,7 @@ program: 125 - type: Item size: Small + storedRotation: -90 - type: entity parent: BaseHandheldInstrument @@ -118,6 +119,7 @@ - type: Item size: Small sprite: Objects/Fun/Instruments/gunpet.rsi + storedRotation: -90 - type: Tag tags: - Sidearm @@ -141,6 +143,7 @@ - type: Item sprite: Objects/Fun/Instruments/bike_horn.rsi size: Small + storedRotation: -90 - type: Clothing sprite: Objects/Fun/Instruments/bike_horn.rsi slots: [Belt] diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml index a255ab4a32c..b09ea96f7b4 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml @@ -98,6 +98,8 @@ - type: Tag tags: - KeyedInstrument + - type: Item + size: Small - type: entity parent: BaseHandheldInstrument diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml index 3b89d1075be..e99f825d483 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml @@ -141,7 +141,7 @@ sprite: Objects/Fun/Instruments/panflute.rsi state: icon - type: Item - size: Normal + size: Small sprite: Objects/Fun/Instruments/panflute.rsi - type: Tag tags: @@ -160,8 +160,9 @@ sprite: Objects/Fun/Instruments/ocarina.rsi state: icon - type: Item - size: Normal + size: Small sprite: Objects/Fun/Instruments/ocarina.rsi + storedRotation: -90 - type: Tag tags: - WoodwindInstrument From 2bbf7addfc87fe962bc031147a6d7e071b8eb8ca Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:33:11 -0400 Subject: [PATCH 097/111] Mirror: Syringes that spawn with content start in inject mode (#129) ## Mirror of PR #25881: [Syringes that spawn with content start in inject mode](https://github.com/space-wizards/space-station-14/pull/25881) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `5cb48c922fa7236d07b463f0c38ada2d5805e54b` PR opened by Plykiya at 2024-03-06 13:43:59 UTC PR merged by web-flow at 2024-03-09 10:19:03 UTC --- PR changed 3 files with 25 additions and 23 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > Made it so that syringes that spawn with content start out in inject mode rather than draw mode. Also got rid of unnecessary DataField names if they matched. > > ## Why / Balance > > Grab bic syringe from medkit, use it on patient, it's in draw mode by default, cry. > > ## Technical details > > I added a new yml entity for prefilled syringes that starts in inject mode. > > I attempted to do it the "smart way" by changing the ComponentInit code to check for the solution amount and toggle based on that, but for some reason the solution was returning false on the server-side but not on the client-side so there was a desync in the Inject state. Couldn't really figure out how to fix it, so I just went with the dumb simple method instead. > > ## Media > > > - [ X ] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > None > > **Changelog** > > > > :cl: > - tweak: Pre-filled syringes start in inject mode now.
    Signed-off-by: VMSolidus Co-authored-by: Plykiya <58439124+Plykiya@users.noreply.github.com> Co-authored-by: VMSolidus --- .../Chemistry/Components/InjectorComponent.cs | 14 ++++------ .../Objects/Specific/Medical/healing.yml | 28 +++++++++---------- .../Entities/Objects/Specific/chemistry.yml | 7 +++++ 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/Content.Shared/Chemistry/Components/InjectorComponent.cs b/Content.Shared/Chemistry/Components/InjectorComponent.cs index 188028c8f8f..437c5e327d2 100644 --- a/Content.Shared/Chemistry/Components/InjectorComponent.cs +++ b/Content.Shared/Chemistry/Components/InjectorComponent.cs @@ -30,7 +30,7 @@ public sealed partial class InjectorComponent : Component /// Whether or not the injector is able to draw from containers or if it's a single use /// device that can only inject. ///
    - [DataField("injectOnly")] + [DataField] public bool InjectOnly; /// @@ -39,28 +39,26 @@ public sealed partial class InjectorComponent : Component /// /// for example: droppers would ignore mobs /// - [DataField("ignoreMobs")] + [DataField] public bool IgnoreMobs; /// /// The minimum amount of solution that can be transferred at once from this solution. /// [DataField("minTransferAmount")] - [ViewVariables(VVAccess.ReadWrite)] public FixedPoint2 MinimumTransferAmount = FixedPoint2.New(5); /// /// The maximum amount of solution that can be transferred at once from this solution. /// [DataField("maxTransferAmount")] - public FixedPoint2 MaximumTransferAmount = FixedPoint2.New(15); + public FixedPoint2 MaximumTransferAmount = FixedPoint2.New(50); /// /// Amount to inject or draw on each usage. If the injector is inject only, it will /// attempt to inject it's entire contents upon use. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("transferAmount")] + [DataField] [AutoNetworkedField] public FixedPoint2 TransferAmount = FixedPoint2.New(5); @@ -71,8 +69,7 @@ public sealed partial class InjectorComponent : Component /// The base delay has a minimum of 1 second, but this will still be modified if the target is incapacitated or /// in combat mode. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("delay")] + [DataField] public TimeSpan Delay = TimeSpan.FromSeconds(5); /// @@ -80,7 +77,6 @@ public sealed partial class InjectorComponent : Component /// right SolutionCaps to support injection/drawing. For InjectOnly injectors this should /// only ever be set to Inject /// - [ViewVariables(VVAccess.ReadWrite)] [AutoNetworkedField] [DataField] public InjectorToggleMode ToggleState = InjectorToggleMode.Draw; diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml index bd789214f99..9fde67afb44 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml @@ -786,7 +786,7 @@ # Syringes - type: entity name: ephedrine syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeEphedrine components: - type: SolutionContainerManager @@ -799,7 +799,7 @@ - type: entity name: inaprovaline syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeInaprovaline components: - type: SolutionContainerManager @@ -812,7 +812,7 @@ - type: entity name: tranexamic acid syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeTranexamicAcid components: - type: SolutionContainerManager @@ -825,7 +825,7 @@ - type: entity name: bicaridine syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeBicaridine components: - type: SolutionContainerManager @@ -838,7 +838,7 @@ - type: entity name: dermaline syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeDermaline components: - type: SolutionContainerManager @@ -851,7 +851,7 @@ - type: entity name: hyronalin syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeHyronalin components: - type: SolutionContainerManager @@ -864,7 +864,7 @@ - type: entity name: ipecac syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeIpecac components: - type: SolutionContainerManager @@ -877,7 +877,7 @@ - type: entity name: ambuzol syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeAmbuzol components: - type: SolutionContainerManager @@ -890,7 +890,7 @@ - type: entity name: sigynate syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeSigynate components: - type: SolutionContainerManager @@ -903,7 +903,7 @@ - type: entity name: ethylredoxrazine syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeEthylredoxrazine components: - type: SolutionContainerManager @@ -916,7 +916,7 @@ - type: entity name: phalanximine syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringePhalanximine components: - type: SolutionContainerManager @@ -929,7 +929,7 @@ - type: entity name: saline syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeSaline components: - type: SolutionContainerManager @@ -943,7 +943,7 @@ #this is where all the syringes are so i didn't know where to put it - type: entity name: romerol syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeRomerol components: - type: SolutionContainerManager @@ -956,7 +956,7 @@ - type: entity name: stimulants syringe - parent: BaseSyringe + parent: PrefilledSyringe id: SyringeStimulants components: - type: SolutionContainerManager diff --git a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml index ab65940fabc..ae4aaed7d21 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml @@ -364,6 +364,13 @@ - Syringe - Trash +- type: entity + parent: BaseSyringe + id: PrefilledSyringe + components: + - type: Injector + toggleState: Inject + - type: entity id: SyringeBluespace parent: BaseSyringe From 4e8c3cacad95a464ddbff5d747983f8a62ed9bfd Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:34:02 -0400 Subject: [PATCH 098/111] Mirror: Fix vox custom sprites (#186) ## Mirror of PR #25989: [Fix vox custom sprites](https://github.com/space-wizards/space-station-14/pull/25989) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `8a77722f91a94846f0027f56b8d8f2ec76254d81` PR opened by Errant-4 at 2024-03-11 09:29:16 UTC --- PR changed 1 files with 2 additions and 0 deletions. The PR had the following labels: - No C# - Status: Needs Review ---

    Original Body

    > ## About the PR > Clothing with custom sprites for vox have been displaying the default sprites due to a component accident. > > ## Media > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > :cl: Errant > - fix: Clothes with alternate sprites for vox once again show the alternate sprites, instead of the defaults. >
    Co-authored-by: SimpleStation14 --- Resources/Prototypes/Entities/Mobs/Species/vox.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index 5e40254e3a8..a271e9d0846 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -14,6 +14,8 @@ - type: HumanoidAppearance species: Vox #- type: VoxAccent # Not yet coded + - type: Inventory + speciesId: vox - type: Speech speechVerb: Vox speechSounds: Vox From 3b2a19d9ecd18ddea6ed91bf67f20f08719dcc4a Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:36:53 -0400 Subject: [PATCH 099/111] Mirror: Code cleanup: Purge calls to obsolete EntityCoordinates methods (#289) ## Mirror of PR #26292: [Code cleanup: Purge calls to obsolete EntityCoordinates methods](https://github.com/space-wizards/space-station-14/pull/26292) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `f4cb02fb0ca385c858569c07c51afb0d24ade949` PR opened by Tayrtahn at 2024-03-20 16:04:43 UTC --- PR changed 34 files with 70 additions and 56 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > Cleaned up some outdated code. > > ## Why / Balance > > Clean code is happy code. > > ## Technical details > > Updated all calls to obsolete EntityCoordinates methods (ToMap, ToMapPos, FromMap, ToVector2i, InRange) to non-obsolete ones (by passing in SharedTransformSystem as an arg). > > ## Media > > Code > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > >
    --------- Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- Content.Client/Construction/ConstructionSystem.cs | 3 ++- .../ContextMenu/UI/EntityMenuUIController.cs | 2 +- Content.Client/Gameplay/GameplayStateBase.cs | 2 +- Content.Client/NPC/PathfindingSystem.cs | 10 +++++++--- Content.Client/Popups/PopupOverlay.cs | 6 ++++-- Content.Client/Popups/PopupSystem.cs | 2 ++ .../Radiation/Overlays/RadiationPulseOverlay.cs | 5 ++++- Content.Client/Sandbox/SandboxSystem.cs | 3 ++- .../AtmosphereSystem.HighPressureDelta.cs | 2 +- Content.Server/Chemistry/EntitySystems/VaporSystem.cs | 4 ++-- .../Construction/Conditions/ComponentInTile.cs | 3 ++- .../Construction/ConstructionSystem.Initial.cs | 7 ++----- Content.Server/Dragon/DragonSystem.cs | 3 ++- .../Explosion/EntitySystems/ExplosionSystem.cs | 2 +- Content.Server/GameTicking/GameTicker.Spawning.cs | 2 +- Content.Server/Guardian/GuardianSystem.cs | 3 ++- Content.Server/Hands/Systems/HandsSystem.cs | 3 ++- Content.Server/Implants/SubdermalImplantSystem.cs | 2 +- Content.Server/Magic/MagicSystem.cs | 2 +- .../Preconditions/CoordinatesInRangePrecondition.cs | 2 +- .../CoordinatesNotInRangePrecondition.cs | 2 +- .../HTN/Preconditions/TargetInRangePrecondition.cs | 2 +- Content.Server/NPC/Pathfinding/PathfindingSystem.cs | 2 +- .../Pointing/EntitySystems/PointingSystem.cs | 7 ++++--- Content.Server/Respawn/SpecialRespawnSystem.cs | 5 +++-- .../Singularity/EntitySystems/GravityWellSystem.cs | 8 ++++---- .../EntitySystems/SingularityAttractorSystem.cs | 11 +++-------- .../Storage/EntitySystems/BluespaceLockerSystem.cs | 3 ++- .../Systems/Carvers/NoiseRangeCarverSystem.cs | 3 ++- .../Construction/Conditions/WallmountCondition.cs | 3 ++- .../Hands/EntitySystems/SharedHandsSystem.Pickup.cs | 2 +- Content.Shared/Interaction/SharedInteractionSystem.cs | 6 +++--- Content.Shared/Spawning/EntitySystemExtensions.cs | 2 +- 33 files changed, 69 insertions(+), 55 deletions(-) diff --git a/Content.Client/Construction/ConstructionSystem.cs b/Content.Client/Construction/ConstructionSystem.cs index ae1724c3bf6..66000a8457d 100644 --- a/Content.Client/Construction/ConstructionSystem.cs +++ b/Content.Client/Construction/ConstructionSystem.cs @@ -27,6 +27,7 @@ public sealed class ConstructionSystem : SharedConstructionSystem [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; private readonly Dictionary _ghosts = new(); @@ -195,7 +196,7 @@ public bool TrySpawnGhost( return false; // This InRangeUnobstructed should probably be replaced with "is there something blocking us in that tile?" - var predicate = GetPredicate(prototype.CanBuildInImpassable, loc.ToMap(EntityManager)); + var predicate = GetPredicate(prototype.CanBuildInImpassable, loc.ToMap(EntityManager, _transformSystem)); if (!_interactionSystem.InRangeUnobstructed(user, loc, 20f, predicate: predicate)) return false; diff --git a/Content.Client/ContextMenu/UI/EntityMenuUIController.cs b/Content.Client/ContextMenu/UI/EntityMenuUIController.cs index ae1b3ec3bf0..a60619baa35 100644 --- a/Content.Client/ContextMenu/UI/EntityMenuUIController.cs +++ b/Content.Client/ContextMenu/UI/EntityMenuUIController.cs @@ -170,7 +170,7 @@ private bool HandleOpenEntityMenu(in PointerInputCmdHandler.PointerInputCmdArgs if (_combatMode.IsInCombatMode(args.Session?.AttachedEntity)) return false; - var coords = args.Coordinates.ToMap(_entityManager); + var coords = args.Coordinates.ToMap(_entityManager, _xform); if (_verbSystem.TryGetEntityMenuEntities(coords, out var entities)) OpenRootMenu(entities); diff --git a/Content.Client/Gameplay/GameplayStateBase.cs b/Content.Client/Gameplay/GameplayStateBase.cs index bdbd69d1086..6236cd8e958 100644 --- a/Content.Client/Gameplay/GameplayStateBase.cs +++ b/Content.Client/Gameplay/GameplayStateBase.cs @@ -104,7 +104,7 @@ private bool HandleInspect(ICommonSession? session, EntityCoordinates coords, En public IEnumerable GetClickableEntities(EntityCoordinates coordinates) { - return GetClickableEntities(coordinates.ToMap(_entityManager)); + return GetClickableEntities(coordinates.ToMap(_entityManager, _entitySystemManager.GetEntitySystem())); } public IEnumerable GetClickableEntities(MapCoordinates coordinates) diff --git a/Content.Client/NPC/PathfindingSystem.cs b/Content.Client/NPC/PathfindingSystem.cs index 548edd601ce..7bf3df1f0b9 100644 --- a/Content.Client/NPC/PathfindingSystem.cs +++ b/Content.Client/NPC/PathfindingSystem.cs @@ -23,6 +23,7 @@ public sealed class PathfindingSystem : SharedPathfindingSystem [Dependency] private readonly IResourceCache _cache = default!; [Dependency] private readonly NPCSteeringSystem _steering = default!; [Dependency] private readonly MapSystem _mapSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; public PathfindingDebugMode Modes { @@ -39,7 +40,7 @@ public PathfindingDebugMode Modes } else if (!overlayManager.HasOverlay()) { - overlayManager.AddOverlay(new PathfindingOverlay(EntityManager, _eyeManager, _inputManager, _mapManager, _cache, this, _mapSystem)); + overlayManager.AddOverlay(new PathfindingOverlay(EntityManager, _eyeManager, _inputManager, _mapManager, _cache, this, _mapSystem, _transformSystem)); } if ((value & PathfindingDebugMode.Steering) != 0x0) @@ -140,6 +141,7 @@ public sealed class PathfindingOverlay : Overlay private readonly IMapManager _mapManager; private readonly PathfindingSystem _system; private readonly MapSystem _mapSystem; + private readonly SharedTransformSystem _transformSystem; public override OverlaySpace Space => OverlaySpace.ScreenSpace | OverlaySpace.WorldSpace; @@ -153,7 +155,8 @@ public PathfindingOverlay( IMapManager mapManager, IResourceCache cache, PathfindingSystem system, - MapSystem mapSystem) + MapSystem mapSystem, + SharedTransformSystem transformSystem) { _entManager = entManager; _eyeManager = eyeManager; @@ -161,6 +164,7 @@ public PathfindingOverlay( _mapManager = mapManager; _system = system; _mapSystem = mapSystem; + _transformSystem = transformSystem; _font = new VectorFont(cache.GetResource("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10); } @@ -480,7 +484,7 @@ private void DrawWorld(OverlayDrawArgs args, DrawingHandleWorld worldHandle) if (neighborPoly.NetEntity != poly.GraphUid) { color = Color.Green; - var neighborMap = _entManager.GetCoordinates(neighborPoly).ToMap(_entManager); + var neighborMap = _entManager.GetCoordinates(neighborPoly).ToMap(_entManager, _transformSystem); if (neighborMap.MapId != args.MapId) continue; diff --git a/Content.Client/Popups/PopupOverlay.cs b/Content.Client/Popups/PopupOverlay.cs index 3bfa7278734..fb6bb3bf565 100644 --- a/Content.Client/Popups/PopupOverlay.cs +++ b/Content.Client/Popups/PopupOverlay.cs @@ -22,7 +22,7 @@ public sealed class PopupOverlay : Overlay private readonly PopupSystem _popup; private readonly PopupUIController _controller; private readonly ExamineSystemShared _examine; - + private readonly SharedTransformSystem _transform; private readonly ShaderInstance _shader; public override OverlaySpace Space => OverlaySpace.ScreenSpace; @@ -35,6 +35,7 @@ public PopupOverlay( IUserInterfaceManager uiManager, PopupUIController controller, ExamineSystemShared examine, + SharedTransformSystem transform, PopupSystem popup) { _configManager = configManager; @@ -42,6 +43,7 @@ public PopupOverlay( _playerMgr = playerMgr; _uiManager = uiManager; _examine = examine; + _transform = transform; _popup = popup; _controller = controller; @@ -76,7 +78,7 @@ private void DrawWorld(DrawingHandleScreen worldHandle, OverlayDrawArgs args, fl foreach (var popup in _popup.WorldLabels) { - var mapPos = popup.InitialPos.ToMap(_entManager); + var mapPos = popup.InitialPos.ToMap(_entManager, _transform); if (mapPos.MapId != args.MapId) continue; diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index 46c1e0cdf62..479fb02906c 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -28,6 +28,7 @@ public sealed class PopupSystem : SharedPopupSystem [Dependency] private readonly IUserInterfaceManager _uiManager = default!; [Dependency] private readonly IReplayRecordingManager _replayRecording = default!; [Dependency] private readonly ExamineSystemShared _examine = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; public IReadOnlyList WorldLabels => _aliveWorldLabels; public IReadOnlyList CursorLabels => _aliveCursorLabels; @@ -54,6 +55,7 @@ public override void Initialize() _uiManager, _uiManager.GetUIController(), _examine, + _transform, this)); } diff --git a/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs b/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs index adc535b2684..9012767ef3f 100644 --- a/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs +++ b/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs @@ -121,7 +121,10 @@ private void RadiationQuery(IEye? currentEye) private bool PulseQualifies(EntityUid pulseEntity, MapCoordinates currentEyeLoc) { - return _entityManager.GetComponent(pulseEntity).MapID == currentEyeLoc.MapId && _entityManager.GetComponent(pulseEntity).Coordinates.InRange(_entityManager, EntityCoordinates.FromMap(_entityManager, _entityManager.GetComponent(pulseEntity).ParentUid, currentEyeLoc), MaxDist); + var transformComponent = _entityManager.GetComponent(pulseEntity); + var transformSystem = _entityManager.System(); + return transformComponent.MapID == currentEyeLoc.MapId + && transformComponent.Coordinates.InRange(_entityManager, transformSystem, EntityCoordinates.FromMap(transformComponent.ParentUid, currentEyeLoc, transformSystem, _entityManager), MaxDist); } private sealed record RadiationShaderInstance(MapCoordinates CurrentMapCoords, float Range, TimeSpan Start, float Duration) diff --git a/Content.Client/Sandbox/SandboxSystem.cs b/Content.Client/Sandbox/SandboxSystem.cs index d16751e3715..6a1129bb75d 100644 --- a/Content.Client/Sandbox/SandboxSystem.cs +++ b/Content.Client/Sandbox/SandboxSystem.cs @@ -16,6 +16,7 @@ public sealed class SandboxSystem : SharedSandboxSystem [Dependency] private readonly IMapManager _map = default!; [Dependency] private readonly IPlacementManager _placement = default!; [Dependency] private readonly ContentEyeSystem _contentEye = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; private bool _sandboxEnabled; public bool SandboxAllowed { get; private set; } @@ -108,7 +109,7 @@ public bool Copy(ICommonSession? session, EntityCoordinates coords, EntityUid ui } // Try copy tile. - if (!_map.TryFindGridAt(coords.ToMap(EntityManager), out _, out var grid) || !grid.TryGetTileRef(coords, out var tileRef)) + if (!_map.TryFindGridAt(coords.ToMap(EntityManager, _transform), out _, out var grid) || !grid.TryGetTileRef(coords, out var tileRef)) return false; if (_placement.Eraser) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 77b5bf18af2..cb50ff114e0 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -236,7 +236,7 @@ public void ExperiencePressureDifference( // TODO: Technically these directions won't be correct but uhh I'm just here for optimisations buddy not to fix my old bugs. if (throwTarget != EntityCoordinates.Invalid) { - var pos = ((throwTarget.ToMap(EntityManager).Position - xform.WorldPosition).Normalized() + dirVec).Normalized(); + var pos = ((throwTarget.ToMap(EntityManager, _transformSystem).Position - xform.WorldPosition).Normalized() + dirVec).Normalized(); _physics.ApplyLinearImpulse(uid, pos * moveForce, body: physics); } else diff --git a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs index 7d3f70bc0d8..1415b6cad3c 100644 --- a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs @@ -22,8 +22,8 @@ namespace Content.Server.Chemistry.EntitySystems [UsedImplicitly] internal sealed class VaporSystem : EntitySystem { - [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IPrototypeManager _protoManager = default!; + [Dependency] private readonly SharedMapSystem _map = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly ThrowingSystem _throwing = default!; @@ -115,7 +115,7 @@ private void Update(float frameTime, Entity ent, Entity()); + var transformSys = entityManager.System(); + var indices = transform.Coordinates.ToVector2i(entityManager, IoCManager.Resolve(), transformSys); var lookup = entityManager.EntitySysManager.GetEntitySystem(); diff --git a/Content.Server/Construction/ConstructionSystem.Initial.cs b/Content.Server/Construction/ConstructionSystem.Initial.cs index e0bdf096296..39705fc1974 100644 --- a/Content.Server/Construction/ConstructionSystem.Initial.cs +++ b/Content.Server/Construction/ConstructionSystem.Initial.cs @@ -2,7 +2,6 @@ using System.Linq; using System.Threading.Tasks; using Content.Server.Construction.Components; -using Content.Server.Storage.EntitySystems; using Content.Shared.ActionBlocker; using Content.Shared.Construction; using Content.Shared.Construction.Prototypes; @@ -15,7 +14,6 @@ using Content.Shared.Interaction; using Content.Shared.Inventory; using Content.Shared.Storage; -using Content.Shared.Tag; using Robust.Shared.Containers; using Robust.Shared.Player; using Robust.Shared.Timing; @@ -30,8 +28,7 @@ public sealed partial class ConstructionSystem [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!; [Dependency] private readonly SharedHandsSystem _handsSystem = default!; [Dependency] private readonly EntityLookupSystem _lookupSystem = default!; - [Dependency] private readonly StorageSystem _storageSystem = default!; - [Dependency] private readonly TagSystem _tagSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; // --- WARNING! LEGACY CODE AHEAD! --- // This entire file contains the legacy code for initial construction. @@ -466,7 +463,7 @@ void Cleanup() return; } - var mapPos = location.ToMap(EntityManager); + var mapPos = location.ToMap(EntityManager, _transformSystem); var predicate = GetPredicate(constructionPrototype.CanBuildInImpassable, mapPos); if (!_interactionSystem.InRangeUnobstructed(user, mapPos, predicate: predicate)) diff --git a/Content.Server/Dragon/DragonSystem.cs b/Content.Server/Dragon/DragonSystem.cs index 93d6bc8db0b..6400472d036 100644 --- a/Content.Server/Dragon/DragonSystem.cs +++ b/Content.Server/Dragon/DragonSystem.cs @@ -28,6 +28,7 @@ public sealed partial class DragonSystem : EntitySystem [Dependency] private readonly RoleSystem _role = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; private EntityQuery _objQuery; @@ -146,7 +147,7 @@ private void OnSpawnRift(EntityUid uid, DragonComponent component, DragonSpawnRi // cant stack rifts near eachother foreach (var (_, riftXform) in EntityQuery(true)) { - if (riftXform.Coordinates.InRange(EntityManager, xform.Coordinates, RiftRange)) + if (riftXform.Coordinates.InRange(EntityManager, _transform, xform.Coordinates, RiftRange)) { _popup.PopupEntity(Loc.GetString("carp-rift-proximity", ("proximity", RiftRange)), uid, uid); return; diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs index 1a5a5c40118..6351d999a98 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs @@ -331,7 +331,7 @@ public void QueueExplosion(MapCoordinates epicenter, CameraShake(iterationIntensity.Count * 4f, epicenter, totalIntensity); //For whatever bloody reason, sound system requires ENTITY coordinates. - var mapEntityCoords = EntityCoordinates.FromMap(EntityManager, _mapManager.GetMapEntityId(epicenter.MapId), epicenter); + var mapEntityCoords = EntityCoordinates.FromMap(_mapManager.GetMapEntityId(epicenter.MapId), epicenter, _transformSystem, EntityManager); // play sound. // for the normal audio, we want everyone in pvs range diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index 54587e95be3..bf69b4b9094 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -394,7 +394,7 @@ public EntityCoordinates GetObserverSpawnPoint() // Ideally engine would just spawn them on grid directly I guess? Right now grid traversal is handling it during // update which means we need to add a hack somewhere around it. var spawn = _robustRandom.Pick(_possiblePositions); - var toMap = spawn.ToMap(EntityManager); + var toMap = spawn.ToMap(EntityManager, _transform); if (_mapManager.TryFindGridAt(toMap, out var gridUid, out _)) { diff --git a/Content.Server/Guardian/GuardianSystem.cs b/Content.Server/Guardian/GuardianSystem.cs index 627c336a36b..d3a717c74af 100644 --- a/Content.Server/Guardian/GuardianSystem.cs +++ b/Content.Server/Guardian/GuardianSystem.cs @@ -34,6 +34,7 @@ public sealed class GuardianSystem : EntitySystem [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly BodySystem _bodySystem = default!; [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; public override void Initialize() { @@ -328,7 +329,7 @@ private void CheckGuardianMove( if (!guardianComponent.GuardianLoose) return; - if (!guardianXform.Coordinates.InRange(EntityManager, hostXform.Coordinates, guardianComponent.DistanceAllowed)) + if (!guardianXform.Coordinates.InRange(EntityManager, _transform, hostXform.Coordinates, guardianComponent.DistanceAllowed)) RetractGuardian(hostUid, hostComponent, guardianUid, guardianComponent); } diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index a783a9e0968..a0e872dbeb1 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -31,6 +31,7 @@ public sealed class HandsSystem : SharedHandsSystem [Dependency] private readonly VirtualItemSystem _virtualItemSystem = default!; [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; [Dependency] private readonly SharedHandsSystem _handsSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly PullingSystem _pullingSystem = default!; [Dependency] private readonly ThrowingSystem _throwingSystem = default!; @@ -191,7 +192,7 @@ hands.ActiveHandEntity is not { } throwEnt || throwEnt = splitStack.Value; } - var direction = coordinates.ToMapPos(EntityManager) - Transform(player).WorldPosition; + var direction = coordinates.ToMapPos(EntityManager, _transformSystem) - Transform(player).WorldPosition; if (direction == Vector2.Zero) return true; diff --git a/Content.Server/Implants/SubdermalImplantSystem.cs b/Content.Server/Implants/SubdermalImplantSystem.cs index ac415a04342..8eb27414481 100644 --- a/Content.Server/Implants/SubdermalImplantSystem.cs +++ b/Content.Server/Implants/SubdermalImplantSystem.cs @@ -99,7 +99,7 @@ private void OnScramImplant(EntityUid uid, SubdermalImplantComponent component, return; var xform = Transform(ent); - var entityCoords = xform.Coordinates.ToMap(EntityManager); + var entityCoords = xform.Coordinates.ToMap(EntityManager, _xform); // try to find a valid position to teleport to, teleport to whatever works if we can't var targetCoords = new MapCoordinates(); diff --git a/Content.Server/Magic/MagicSystem.cs b/Content.Server/Magic/MagicSystem.cs index 2c9b11dbd3d..92cd794ce2c 100644 --- a/Content.Server/Magic/MagicSystem.cs +++ b/Content.Server/Magic/MagicSystem.cs @@ -168,7 +168,7 @@ private void OnProjectileSpell(ProjectileSpellEvent ev) foreach (var pos in GetSpawnPositions(xform, ev.Pos)) { // If applicable, this ensures the projectile is parented to grid on spawn, instead of the map. - var mapPos = pos.ToMap(EntityManager); + var mapPos = pos.ToMap(EntityManager, _transformSystem); var spawnCoords = _mapManager.TryFindGridAt(mapPos, out var gridUid, out _) ? pos.WithEntityId(gridUid, EntityManager) : new(_mapManager.GetMapEntityId(mapPos.MapId), mapPos.Position); diff --git a/Content.Server/NPC/HTN/Preconditions/CoordinatesInRangePrecondition.cs b/Content.Server/NPC/HTN/Preconditions/CoordinatesInRangePrecondition.cs index 3e030aa8197..3485bd2a18c 100644 --- a/Content.Server/NPC/HTN/Preconditions/CoordinatesInRangePrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/CoordinatesInRangePrecondition.cs @@ -22,6 +22,6 @@ public override bool IsMet(NPCBlackboard blackboard) if (!blackboard.TryGetValue(TargetKey, out var target, _entManager)) return false; - return coordinates.InRange(_entManager, target, blackboard.GetValueOrDefault(RangeKey, _entManager)); + return coordinates.InRange(_entManager, _entManager.System(), target, blackboard.GetValueOrDefault(RangeKey, _entManager)); } } diff --git a/Content.Server/NPC/HTN/Preconditions/CoordinatesNotInRangePrecondition.cs b/Content.Server/NPC/HTN/Preconditions/CoordinatesNotInRangePrecondition.cs index 6d8977bb7a7..9d000ca2eb8 100644 --- a/Content.Server/NPC/HTN/Preconditions/CoordinatesNotInRangePrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/CoordinatesNotInRangePrecondition.cs @@ -22,7 +22,7 @@ public override bool IsMet(NPCBlackboard blackboard) if (!blackboard.TryGetValue(TargetKey, out var target, _entManager)) return false; - return !coordinates.InRange(_entManager, target, blackboard.GetValueOrDefault(RangeKey, _entManager)); + return !coordinates.InRange(_entManager, _entManager.System(), target, blackboard.GetValueOrDefault(RangeKey, _entManager)); } } diff --git a/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs b/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs index 5d616ba630e..aaccb426d71 100644 --- a/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs @@ -23,6 +23,6 @@ public override bool IsMet(NPCBlackboard blackboard) !_entManager.TryGetComponent(target, out var targetXform)) return false; - return coordinates.InRange(_entManager, targetXform.Coordinates, blackboard.GetValueOrDefault(RangeKey, _entManager)); + return coordinates.InRange(_entManager, _entManager.System(), targetXform.Coordinates, blackboard.GetValueOrDefault(RangeKey, _entManager)); } } diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs index 95f931cdd6a..a59af88ff58 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs @@ -405,7 +405,7 @@ public async void GetPathEvent( return null; } - var localPos = xform.InvWorldMatrix.Transform(coordinates.ToMapPos(EntityManager)); + var localPos = xform.InvWorldMatrix.Transform(coordinates.ToMapPos(EntityManager, _transform)); var origin = GetOrigin(localPos); if (!TryGetChunk(origin, comp, out var chunk)) diff --git a/Content.Server/Pointing/EntitySystems/PointingSystem.cs b/Content.Server/Pointing/EntitySystems/PointingSystem.cs index 06d2d6f58b5..9b2e14eff8b 100644 --- a/Content.Server/Pointing/EntitySystems/PointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/PointingSystem.cs @@ -36,6 +36,7 @@ internal sealed class PointingSystem : SharedPointingSystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly VisibilitySystem _visibilitySystem = default!; [Dependency] private readonly SharedMindSystem _minds = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly ExamineSystemShared _examine = default!; @@ -97,7 +98,7 @@ public bool InRange(EntityUid pointer, EntityCoordinates coordinates) { if (HasComp(pointer)) { - return Transform(pointer).Coordinates.InRange(EntityManager, coordinates, 15); + return Transform(pointer).Coordinates.InRange(EntityManager, _transform, coordinates, 15); } else { @@ -142,7 +143,7 @@ public bool TryPoint(ICommonSession? session, EntityCoordinates coordsPointed, E return false; } - var mapCoordsPointed = coordsPointed.ToMap(EntityManager); + var mapCoordsPointed = coordsPointed.ToMap(EntityManager, _transform); _rotateToFaceSystem.TryFaceCoordinates(player, mapCoordsPointed.Position); var arrow = EntityManager.SpawnEntity("PointingArrow", coordsPointed); @@ -150,7 +151,7 @@ public bool TryPoint(ICommonSession? session, EntityCoordinates coordsPointed, E if (TryComp(arrow, out var pointing)) { if (TryComp(player, out TransformComponent? xformPlayer)) - pointing.StartPosition = EntityCoordinates.FromMap(arrow, xformPlayer.Coordinates.ToMap(EntityManager)).Position; + pointing.StartPosition = EntityCoordinates.FromMap(arrow, xformPlayer.Coordinates.ToMap(EntityManager, _transform), _transform).Position; pointing.EndTime = _gameTiming.CurTime + PointDuration; diff --git a/Content.Server/Respawn/SpecialRespawnSystem.cs b/Content.Server/Respawn/SpecialRespawnSystem.cs index 51c092be18b..2822c94093f 100644 --- a/Content.Server/Respawn/SpecialRespawnSystem.cs +++ b/Content.Server/Respawn/SpecialRespawnSystem.cs @@ -20,6 +20,7 @@ public sealed class SpecialRespawnSystem : SharedSpecialRespawnSystem [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!; [Dependency] private readonly AtmosphereSystem _atmosphere = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly TurfSystem _turf = default!; [Dependency] private readonly IChatManager _chat = default!; @@ -129,11 +130,11 @@ private void OnTermination(EntityUid uid, SpecialRespawnComponent component, ref private void Respawn(EntityUid oldEntity, string prototype, EntityCoordinates coords) { var entity = Spawn(prototype, coords); - _adminLog.Add(LogType.Respawn, LogImpact.High, $"{ToPrettyString(oldEntity)} was deleted and was respawned at {coords.ToMap(EntityManager)} as {ToPrettyString(entity)}"); + _adminLog.Add(LogType.Respawn, LogImpact.High, $"{ToPrettyString(oldEntity)} was deleted and was respawned at {coords.ToMap(EntityManager, _transform)} as {ToPrettyString(entity)}"); _chat.SendAdminAlert($"{MetaData(oldEntity).EntityName} was deleted and was respawned as {ToPrettyString(entity)}"); } - /// + /// /// Try to find a random safe tile on the supplied grid /// /// The grid that you're looking for a safe tile on diff --git a/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs b/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs index ce4334391db..f1d0af6f905 100644 --- a/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs +++ b/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs @@ -18,13 +18,13 @@ namespace Content.Server.Singularity.EntitySystems; /// public sealed class GravityWellSystem : SharedGravityWellSystem { -#region Dependencies + #region Dependencies [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IViewVariablesManager _vvManager = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; -#endregion Dependencies + #endregion Dependencies /// /// The minimum range at which gravpulses will act. @@ -155,7 +155,7 @@ public void GravPulse(EntityUid uid, float maxRange, float minRange, float baseR /// The minimum distance at which entities can be affected by the gravity pulse. /// The base velocity added to any entities within affected by the gravity pulse scaled by the displacement of those entities from the epicenter. public void GravPulse(EntityCoordinates entityPos, float maxRange, float minRange, in Matrix3 baseMatrixDeltaV) - => GravPulse(entityPos.ToMap(EntityManager), maxRange, minRange, in baseMatrixDeltaV); + => GravPulse(entityPos.ToMap(EntityManager, _transform), maxRange, minRange, in baseMatrixDeltaV); /// /// Greates a gravitational pulse, shoving around all entities within some distance of an epicenter. @@ -166,7 +166,7 @@ public void GravPulse(EntityCoordinates entityPos, float maxRange, float minRang /// The base radial velocity that will be added to entities within range towards the center of the gravitational pulse. /// The base tangential velocity that will be added to entities within countrclockwise around the center of the gravitational pulse. public void GravPulse(EntityCoordinates entityPos, float maxRange, float minRange, float baseRadialDeltaV = 0.0f, float baseTangentialDeltaV = 0.0f) - => GravPulse(entityPos.ToMap(EntityManager), maxRange, minRange, baseRadialDeltaV, baseTangentialDeltaV); + => GravPulse(entityPos.ToMap(EntityManager, _transform), maxRange, minRange, baseRadialDeltaV, baseTangentialDeltaV); /// /// Causes a gravitational pulse, shoving around all entities within some distance of an epicenter. diff --git a/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs b/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs index 3c44a7fc7af..bc0de7c8c64 100644 --- a/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs @@ -2,12 +2,7 @@ using Content.Server.Power.EntitySystems; using Content.Server.Singularity.Components; using Content.Shared.Singularity.Components; -using Content.Shared.Singularity.EntitySystems; using Robust.Shared.Map; -using Robust.Shared.Map.Components; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; -using Robust.Shared.Physics.Systems; using Robust.Shared.Timing; using System.Numerics; @@ -18,8 +13,8 @@ namespace Content.Server.Singularity.EntitySystems; /// public sealed class SingularityAttractorSystem : EntitySystem { - [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; /// /// The minimum range at which the attraction will act. @@ -69,7 +64,7 @@ private void Update(EntityUid uid, SingularityAttractorComponent? attractor = nu attractor.LastPulseTime = _timing.CurTime; - var mapPos = xform.Coordinates.ToMap(EntityManager); + var mapPos = xform.Coordinates.ToMap(EntityManager, _transform); if (mapPos == MapCoordinates.Nullspace) return; @@ -77,7 +72,7 @@ private void Update(EntityUid uid, SingularityAttractorComponent? attractor = nu var query = EntityQuery(); foreach (var (singulo, walk, singuloXform) in query) { - var singuloMapPos = singuloXform.Coordinates.ToMap(EntityManager); + var singuloMapPos = singuloXform.Coordinates.ToMap(EntityManager, _transform); if (singuloMapPos.MapId != mapPos.MapId) continue; diff --git a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs index 9995ed40c12..356768769bb 100644 --- a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs +++ b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs @@ -26,6 +26,7 @@ public sealed class BluespaceLockerSystem : EntitySystem [Dependency] private readonly WeldableSystem _weldableSystem = default!; [Dependency] private readonly LockSystem _lockSystem = default!; [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly ExplosionSystem _explosionSystem = default!; public override void Initialize() @@ -386,7 +387,7 @@ private void DestroyAfterLimit(EntityUid uid, BluespaceLockerComponent component switch (component.BehaviorProperties.DestroyType) { case BluespaceLockerDestroyType.Explode: - _explosionSystem.QueueExplosion(uid.ToCoordinates().ToMap(EntityManager), + _explosionSystem.QueueExplosion(uid.ToCoordinates().ToMap(EntityManager, _transformSystem), ExplosionSystem.DefaultExplosionPrototypeId, 4, 1, 2, maxTileBreak: 0); goto case BluespaceLockerDestroyType.Delete; case BluespaceLockerDestroyType.Delete: diff --git a/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs b/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs index aed32bc89c3..f2e051669a2 100644 --- a/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs +++ b/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs @@ -9,6 +9,7 @@ namespace Content.Server.Worldgen.Systems.Carvers; public sealed class NoiseRangeCarverSystem : EntitySystem { [Dependency] private readonly NoiseIndexSystem _index = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; /// public override void Initialize() @@ -19,7 +20,7 @@ public override void Initialize() private void OnPrePlaceDebris(EntityUid uid, NoiseRangeCarverComponent component, ref PrePlaceDebrisFeatureEvent args) { - var coords = WorldGen.WorldToChunkCoords(args.Coords.ToMapPos(EntityManager)); + var coords = WorldGen.WorldToChunkCoords(args.Coords.ToMapPos(EntityManager, _transform)); var val = _index.Evaluate(uid, component.NoiseChannel, coords); foreach (var (low, high) in component.Ranges) diff --git a/Content.Shared/Construction/Conditions/WallmountCondition.cs b/Content.Shared/Construction/Conditions/WallmountCondition.cs index bf3016d4974..fe4336e6fc7 100644 --- a/Content.Shared/Construction/Conditions/WallmountCondition.cs +++ b/Content.Shared/Construction/Conditions/WallmountCondition.cs @@ -19,8 +19,9 @@ public bool Condition(EntityUid user, EntityCoordinates location, Direction dire var entManager = IoCManager.Resolve(); // get blueprint and user position + var transformSystem = entManager.System(); var userWorldPosition = entManager.GetComponent(user).WorldPosition; - var objWorldPosition = location.ToMap(entManager).Position; + var objWorldPosition = location.ToMap(entManager, transformSystem).Position; // find direction from user to blueprint var userToObject = (objWorldPosition - userWorldPosition); diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs index bbae03e45b3..20e08b2767d 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs @@ -114,7 +114,7 @@ public bool TryPickup( && (itemPos.Position - xform.MapPosition.Position).Length() <= MaxAnimationRange && MetaData(entity).VisibilityMask == MetaData(uid).VisibilityMask) // Don't animate aghost pickups. { - var initialPosition = EntityCoordinates.FromMap(coordinateEntity, itemPos, EntityManager); + var initialPosition = EntityCoordinates.FromMap(coordinateEntity, itemPos, TransformSystem, EntityManager); _storage.PlayPickupAnimation(entity, initialPosition, xform.Coordinates, itemXform.LocalRotation, uid); } } diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index 7d5e390b6f0..0e390ecea45 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -459,7 +459,7 @@ protected bool ValidateInteractAndFace(EntityUid user, EntityCoordinates coordin return false; if (!HasComp(user)) - _rotateToFaceSystem.TryFaceCoordinates(user, coordinates.ToMapPos(EntityManager)); + _rotateToFaceSystem.TryFaceCoordinates(user, coordinates.ToMapPos(EntityManager, _transform)); return true; } @@ -612,7 +612,7 @@ public bool InRangeUnobstructed( Ignored combinedPredicate = e => e == origin || (predicate?.Invoke(e) ?? false); var inRange = true; MapCoordinates originPos = default; - var targetPos = otherCoordinates.ToMap(EntityManager); + var targetPos = otherCoordinates.ToMap(EntityManager, _transform); Angle targetRot = default; // So essentially: @@ -785,7 +785,7 @@ public bool InRangeUnobstructed( Ignored? predicate = null, bool popup = false) { - return InRangeUnobstructed(origin, other.ToMap(EntityManager), range, collisionMask, predicate, popup); + return InRangeUnobstructed(origin, other.ToMap(EntityManager, _transform), range, collisionMask, predicate, popup); } /// diff --git a/Content.Shared/Spawning/EntitySystemExtensions.cs b/Content.Shared/Spawning/EntitySystemExtensions.cs index 14b171baeb1..507a0f4aa27 100644 --- a/Content.Shared/Spawning/EntitySystemExtensions.cs +++ b/Content.Shared/Spawning/EntitySystemExtensions.cs @@ -16,7 +16,7 @@ public static class EntitySystemExtensions SharedPhysicsSystem? physicsManager = null) { physicsManager ??= entityManager.System(); - var mapCoordinates = coordinates.ToMap(entityManager); + var mapCoordinates = coordinates.ToMap(entityManager, entityManager.System()); return entityManager.SpawnIfUnobstructed(prototypeName, mapCoordinates, collisionLayer, box, physicsManager); } From a58b8155e5d6bee9089f5a2a7b027395e9029ebc Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:42:06 -0400 Subject: [PATCH 100/111] Mirror: Snore is a trait now (#299) ## Mirror of PR #26322: [Snore is a trait now](https://github.com/space-wizards/space-station-14/pull/26322) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `3b3b874dd9222770da616ba07277842d6b7a09be` PR opened by lzk228 at 2024-03-21 23:18:00 UTC --- PR changed 4 files with 24 additions and 1 deletions. The PR had the following labels: ---

    Original Body

    > > > > ## About the PR > > Title. > Snore sound is emitting with trait. Without trait not. > > ## Why / Balance > > Someone told me that snoring is a disease, and not every should have it so i decided to do this pr. > > ## Technical details > > > ## Media > > > - [ ] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > Make sure to take this Changelog template out of the comment block in order for it to show up. > :cl: > - tweak: Snoring is now a trait in character preference menu. > >
    Co-authored-by: SimpleStation14 --- Content.Server/Bed/Components/SnoringComponent.cs | 10 ++++++++++ Content.Server/Bed/Sleep/SleepingSystem.cs | 5 ++++- Resources/Locale/en-US/traits/traits.ftl | 3 +++ Resources/Prototypes/Traits/disabilities.yml | 7 +++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 Content.Server/Bed/Components/SnoringComponent.cs diff --git a/Content.Server/Bed/Components/SnoringComponent.cs b/Content.Server/Bed/Components/SnoringComponent.cs new file mode 100644 index 00000000000..09f80327ba7 --- /dev/null +++ b/Content.Server/Bed/Components/SnoringComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Server.Bed.Sleep; + +/// +/// This is used for the snoring trait. +/// +[RegisterComponent] +public sealed partial class SnoringComponent : Component +{ + +} diff --git a/Content.Server/Bed/Sleep/SleepingSystem.cs b/Content.Server/Bed/Sleep/SleepingSystem.cs index 685b1087d70..b4972544338 100644 --- a/Content.Server/Bed/Sleep/SleepingSystem.cs +++ b/Content.Server/Bed/Sleep/SleepingSystem.cs @@ -67,7 +67,10 @@ private void OnSleepStateChanged(EntityUid uid, MobStateComponent component, Sle if (TryComp(uid, out var sleepSound)) { var emitSound = EnsureComp(uid); - emitSound.Sound = sleepSound.Snore; + if (HasComp(uid)) + { + emitSound.Sound = sleepSound.Snore; + } emitSound.PlayChance = sleepSound.Chance; emitSound.RollInterval = sleepSound.Interval; emitSound.PopUp = sleepSound.PopUp; diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index c097a689dd8..7a3564edf66 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -29,3 +29,6 @@ trait-frontal-lisp-desc = You thpeak with a lithp trait-socialanxiety-name = Social Anxiety trait-socialanxiety-desc = You are anxious when you speak and stutter. + +trait-snoring-name = Snoring +trait-snoring-desc = You will snore while sleeping. diff --git a/Resources/Prototypes/Traits/disabilities.yml b/Resources/Prototypes/Traits/disabilities.yml index 064b34adbaf..2f1a7f92d26 100644 --- a/Resources/Prototypes/Traits/disabilities.yml +++ b/Resources/Prototypes/Traits/disabilities.yml @@ -60,3 +60,10 @@ description: trait-frontal-lisp-desc components: - type: FrontalLisp + +- type: trait + id: Snoring + name: trait-snoring-name + description: trait-snoring-desc + components: + - type: Snoring From 3bf69bf95846cbd2a14fca24d1ec434ee9cef1f5 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:42:38 -0400 Subject: [PATCH 101/111] Mirror: Sanitize "ig" (#298) ## Mirror of PR #26328: [Sanitize "ig"](https://github.com/space-wizards/space-station-14/pull/26328) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `4f816b4b2f74db8da32cd157110df538e50eed1a` PR opened by Doctor-Cpu at 2024-03-22 05:20:30 UTC --- PR changed 2 files with 7 additions and 3 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > > "ig" gets replaced with "i guess" > > ## Why / Balance > > Common slang online which I've seen being attempted to be used before. > > ## Technical details > > N/A > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > N/A > > **Changelog** > > > > Don't feel like one is needed.
    Co-authored-by: SimpleStation14 --- .../Locale/en-US/speech/speech-chatsan.ftl | 3 +++ .../Prototypes/Accents/word_replacements.yml | 17 +++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Resources/Locale/en-US/speech/speech-chatsan.ftl b/Resources/Locale/en-US/speech/speech-chatsan.ftl index 4c8cf5db54c..6ce575e648d 100644 --- a/Resources/Locale/en-US/speech/speech-chatsan.ftl +++ b/Resources/Locale/en-US/speech/speech-chatsan.ftl @@ -114,3 +114,6 @@ chatsan-replacement-41 = what are you doing chatsan-word-42 = ofc chatsan-replacement-42 = of course + +chatsan-word-43 = ig +chatsan-replacement-43 = i guess diff --git a/Resources/Prototypes/Accents/word_replacements.yml b/Resources/Prototypes/Accents/word_replacements.yml index 147aebb5c5d..92b3d7de9b3 100644 --- a/Resources/Prototypes/Accents/word_replacements.yml +++ b/Resources/Prototypes/Accents/word_replacements.yml @@ -1,4 +1,4 @@ -# Accents that work off of word replacements. +# Accents that work off of word replacements. # this is kind of dumb but localization demands it. # i guess you could just specify the prefix ('mobster') and count and let the system fill it @@ -263,7 +263,7 @@ accent-pirate-replaced-30: accent-pirate-replacement-30 accent-pirate-replaced-31: accent-pirate-replacement-31 accent-pirate-replaced-32: accent-pirate-replacement-32 - + - type: accent id: cowboy wordReplacements: @@ -366,7 +366,7 @@ accent-cowboy-words-97: accent-cowboy-replacement-97 accent-cowboy-words-98: accent-cowboy-replacement-98 accent-cowboy-words-99: accent-cowboy-replacement-99 - + # For the chat sanitization system - type: accent @@ -409,8 +409,9 @@ # chatsan-word-35: chatsan-replacement-35 # chatsan-word-36: chatsan-replacement-36 chatsan-word-37: chatsan-replacement-37 - # chatsan-word-38: chatsan-replacement-38 - # chatsan-word-39: chatsan-replacement-etcetera - # chatsan-word-40: chatsan-replacement-etcetera - # chatsan-word-41: chatsan-replacement-41 - # chatsan-word-42: chatsan-replacement-42 + chatsan-word-38: chatsan-replacement-38 + chatsan-word-39: chatsan-replacement-etcetera + chatsan-word-40: chatsan-replacement-etcetera + chatsan-word-41: chatsan-replacement-41 + chatsan-word-42: chatsan-replacement-42 + chatsan-word-43: chatsan-replacement-43 From ef7f58fa5fae40e5238faff2d75c8a3e994b8982 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:43:16 -0400 Subject: [PATCH 102/111] Mirror: Fix placement mode on chairs (#183) ## Mirror of PR #26041: [Fix placement mode on chairs](https://github.com/space-wizards/space-station-14/pull/26041) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `bcc147634af1fea7b5f53f18d136f44ed46cb053` PR opened by IamVelcroboy at 2024-03-12 14:45:33 UTC --- PR changed 1 files with 8 additions and 7 deletions. The PR had the following labels: - No C# ---

    Original Body

    > ## About the PR > Placement mode on chairs was donked up a little bit recently. This returns the ability to free place certain(unanchored) chairs while mapping. > > ## Why / Balance > More dynamic mapping > > ## Technical details > n/a > > ## Media > - [x] I have added screenshots/videos to this PR showcasing its changes in-game, **or** this PR does not require an in-game showcase > > ## Breaking changes > n/a > > **Changelog** > n/a
    Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- .../Entities/Structures/Furniture/chairs.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml index 518ff2f066e..0b3c291af25 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml @@ -4,7 +4,7 @@ abstract: true description: You sit in this. Either by will or force. placement: - mode: SnapgridCenter + mode: PlaceFree components: - type: Clickable - type: InteractionOutline @@ -65,6 +65,8 @@ id: ChairBase abstract: true parent: UnanchoredChairBase + placement: + mode: SnapgridCenter components: - type: Physics bodyType: Static @@ -87,6 +89,8 @@ id: StoolBase parent: OfficeChairBase abstract: true + placement: + mode: SnapgridCenter components: - type: Physics bodyType: Static @@ -116,7 +120,7 @@ - type: entity name: stool id: Stool - parent: ChairBase + parent: UnanchoredChairBase description: Apply butt. components: - type: Sprite @@ -241,7 +245,7 @@ - type: entity id: ChairMeat - parent: ChairBase + parent: UnanchoredChairBase name: meat chair description: Uncomfortably sweaty. components: @@ -285,7 +289,7 @@ name: web chair id: ChairWeb description: For true web developers. - parent: ChairBase + parent: UnanchoredChairBase components: - type: Sprite sprite: Structures/Web/chair.rsi @@ -349,8 +353,6 @@ parent: ChairFolding id: ChairFoldingSpawnFolded suffix: folded - placement: - mode: PlaceFree components: - type: Foldable folded: true From 6ca11bd783a6ff84290725a42dd0263400db0e1c Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Tue, 28 May 2024 23:51:26 -0400 Subject: [PATCH 103/111] Mirror: Fix mice steering (#134) ## Mirror of PR #25965: [Fix mice steering](https://github.com/space-wizards/space-station-14/pull/25965) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `819ec6361d0d2792b43357a6c45f8c95cb08d9ed` PR opened by metalgearsloth at 2024-03-10 14:57:30 UTC PR merged by web-flow at 2024-03-10 15:41:42 UTC --- PR changed 1 files with 24 additions and 1 deletions. The PR had the following labels: ---

    Original Body

    > Thinks there's obstacles when there isn't. Blending exposed it but it was an issue before. > > > :cl: > - fix: Fix NPC mouse movement. >
    Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: VMSolidus --- .../NPC/Systems/NPCSteeringSystem.Context.cs | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs index 7ac6768e359..e7af2c91073 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs @@ -56,7 +56,30 @@ private bool IsFreeSpace( return true; } - return false; + // TODO: Ideally for "FreeSpace" we check all entities on the tile and build flags dynamically (pathfinder refactor in future). + var ents = _entSetPool.Get(); + _lookup.GetLocalEntitiesIntersecting(node.GraphUid, node.ChunkOrigin, ents, flags: LookupFlags.Static); + var result = true; + + if (ents.Count > 0) + { + var fixtures = _fixturesQuery.GetComponent(uid); + var physics = _physicsQuery.GetComponent(uid); + + foreach (var intersecting in ents) + { + if (!_physics.IsCurrentlyHardCollidable((uid, fixtures, physics), intersecting)) + { + continue; + } + + result = false; + break; + } + } + + _entSetPool.Return(ents); + return result; } /// From 2fb4c5e79384877f9aa8f8373529ffcde55e5cbe Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Wed, 29 May 2024 00:03:15 -0400 Subject: [PATCH 104/111] Mirror: Create DeviceNetworkJammerComponent & System as a general way for entities to act as jammers (#382) ## Mirror of PR #26342: [Create DeviceNetworkJammerComponent & System as a general way for entities to act as jammers](https://github.com/space-wizards/space-station-14/pull/26342) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `266cc85f57c883b3a604a66da91d94bb1e18ec5d` PR opened by nikthechampiongr at 2024-03-22 19:17:23 UTC --- PR changed 7 files with 91 additions and 25 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > This PR creates the DeviceNetworkJammerComponent & System as a general way for entities to act as jammers for the DeviceNetwork. > > Additionally it adjusts the JammerSystem for the radio jammer to use this, and rips out the previous special code for jamming suit sensors. > > As a result of this, the radio jammer can now additionally jam the suit sensor server itself from receiving DeviceNetwork packets. > > ## Why / Balance > > This pr was requested by a maintainer. > > Additionally a general jamming system can have some utility in the future. E.g. an artifact effect. > ## Technical details > > > Whenever a device attempts to send a packet, the > DeviceNetworkJammerSystem listens for the BeforePacketSentEvent. > From there if any entity with the jammer component is within range of > either the sender or receiver of the packet the event will be cancelled. > Additionally jammers can only block packets in certain networks. If a > packet is not being transmitted in one of the networks it can block then > even if the jammer is in range the event will not be cancelled. > > The range is stored in the jammer component along with the networks it > can jam. > > Jammable network ids are stored as strings which seems to be how custom > networks are stored (E.g. network ids for suit sensors). > > To allow for all of this, the BeforePacketSentEvent was modified to > provide the NetworkId. > > The JammerSystem now needs to get the networkid for suit sensors for use in the DeviceNetwork. The previous event subscription for jamming suit sensors have been removed along with the event. > > I wish I could use this to jam radios as well but radios are magic and do not use device networks. > > ## Media > > > - [x] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > > > > no cl no fun
    Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- .../Systems/DeviceNetworkJammerSystem.cs | 38 +++++++++++++++++++ .../Systems/DeviceNetworkSystem.cs | 11 +++++- .../Systems/SingletonDeviceNetServerSystem.cs | 5 ++- .../Radio/EntitySystems/JammerSystem.cs | 17 +++++++++ .../DeviceNetworkJammerComponent.cs | 24 ++++++++++++ 5 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs create mode 100644 Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs new file mode 100644 index 00000000000..3d3820562d6 --- /dev/null +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs @@ -0,0 +1,38 @@ +using Content.Server.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Components; +using Robust.Server.GameObjects; + +namespace Content.Server.DeviceNetwork.Systems; + +public sealed class DeviceNetworkJammerSystem : EntitySystem +{ + [Dependency] private TransformSystem _transform = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(BeforePacketSent); + } + + private void BeforePacketSent(EntityUid uid, TransformComponent xform, BeforePacketSentEvent ev) + { + if (ev.Cancelled) + return; + + var query = EntityQueryEnumerator(); + + while (query.MoveNext(out _, out var jammerComp, out var jammerXform)) + { + if (!jammerComp.JammableNetworks.Contains(ev.NetworkId)) + continue; + + if (jammerXform.Coordinates.InRange(EntityManager, _transform, ev.SenderTransform.Coordinates, jammerComp.Range) + || jammerXform.Coordinates.InRange(EntityManager, _transform, xform.Coordinates, jammerComp.Range)) + { + ev.Cancel(); + return; + } + } + } + +} diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs index 83967c9bbd4..20ee7a5dd1b 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs @@ -351,13 +351,14 @@ private void SendToConnections(ReadOnlySpan connections, var xform = Transform(packet.Sender); - BeforePacketSentEvent beforeEv = new(packet.Sender, xform, _transformSystem.GetWorldPosition(xform)); + var senderPos = _transformSystem.GetWorldPosition(xform); foreach (var connection in connections) { if (connection.Owner == packet.Sender) continue; + BeforePacketSentEvent beforeEv = new(packet.Sender, xform, senderPos, connection.NetIdEnum.ToString()); RaiseLocalEvent(connection.Owner, beforeEv, false); if (!beforeEv.Cancelled) @@ -386,11 +387,17 @@ public sealed class BeforePacketSentEvent : CancellableEntityEventArgs ///
    public readonly Vector2 SenderPosition; - public BeforePacketSentEvent(EntityUid sender, TransformComponent xform, Vector2 senderPosition) + /// + /// The network the packet will be sent to. + /// + public readonly string NetworkId; + + public BeforePacketSentEvent(EntityUid sender, TransformComponent xform, Vector2 senderPosition, string networkId) { Sender = sender; SenderTransform = xform; SenderPosition = senderPosition; + NetworkId = networkId; } } diff --git a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs index fd62514d006..cdc083feacd 100644 --- a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs @@ -1,4 +1,5 @@ -using Content.Server.DeviceNetwork.Components; +using System.Diagnostics.CodeAnalysis; +using Content.Server.DeviceNetwork.Components; using Content.Server.Medical.CrewMonitoring; using Content.Server.Power.Components; using Content.Server.Station.Systems; @@ -38,7 +39,7 @@ public bool IsActiveServer(EntityUid serverId, SingletonDeviceNetServerComponent /// The address of the active server if it exists /// The component type that determines what type of server you're getting the address of /// True if there is an active serve. False otherwise - public bool TryGetActiveServerAddress(EntityUid stationId, out string? address) where TComp : IComponent + public bool TryGetActiveServerAddress(EntityUid stationId, [NotNullWhen(true)] out string? address) where TComp : IComponent { var servers = EntityQueryEnumerator< SingletonDeviceNetServerComponent, diff --git a/Content.Server/Radio/EntitySystems/JammerSystem.cs b/Content.Server/Radio/EntitySystems/JammerSystem.cs index fdf02f94df5..53e0409af06 100644 --- a/Content.Server/Radio/EntitySystems/JammerSystem.cs +++ b/Content.Server/Radio/EntitySystems/JammerSystem.cs @@ -1,8 +1,13 @@ +using Content.Server.DeviceNetwork.Components; +using Content.Server.DeviceNetwork.Systems; +using Content.Server.Medical.CrewMonitoring; using Content.Server.Medical.SuitSensors; using Content.Server.Popups; using Content.Server.Power.EntitySystems; using Content.Server.PowerCell; using Content.Server.Radio.Components; +using Content.Server.Station.Systems; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.PowerCell.Components; @@ -15,6 +20,8 @@ public sealed class JammerSystem : EntitySystem [Dependency] private readonly BatterySystem _battery = default!; [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly StationSystem _stationSystem = default!; + [Dependency] private readonly SingletonDeviceNetServerSystem _singletonServerSystem = default!; public override void Initialize() { @@ -36,6 +43,7 @@ public override void Update(float frameTime) !_battery.TryUseCharge(batteryUid.Value, jam.Wattage * frameTime, battery)) { RemComp(uid); + RemComp(uid); } } } @@ -48,10 +56,19 @@ private void OnActivate(EntityUid uid, RadioJammerComponent comp, ActivateInWorl if (activated) { EnsureComp(uid); + var stationId = _stationSystem.GetOwningStation(uid); + if (stationId != null && _singletonServerSystem.TryGetActiveServerAddress(stationId.Value, out var netId)) + { + EnsureComp(uid, out var jammingComp); + jammingComp.Range = comp.Range; + jammingComp.JammableNetworks.Add(netId); + Dirty(uid, jammingComp); + } } else { RemComp(uid); + RemComp(uid); } var state = Loc.GetString(activated ? "radio-jammer-component-on-state" : "radio-jammer-component-off-state"); var message = Loc.GetString("radio-jammer-component-on-use", ("state", state)); diff --git a/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs b/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs new file mode 100644 index 00000000000..75de0cb8a25 --- /dev/null +++ b/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs @@ -0,0 +1,24 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.DeviceNetwork.Components; + +/// +/// Allow entities to jam DeviceNetwork packets. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class DeviceNetworkJammerComponent : Component +{ + /// + /// Range where packets will be jammed. This is checked both against the sender and receiver. + /// + [DataField, AutoNetworkedField] + public float Range = 5.0f; + + /// + /// Device networks that can be jammed. For a list of default NetworkIds see DeviceNetIdDefaults on Content.Server. + /// Network ids are not guaranteed to be limited to DeviceNetIdDefaults. + /// + [DataField, AutoNetworkedField] + public HashSet JammableNetworks = []; + +} From 3898d0913c790f37bc15f436f02316981a1d8a35 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Wed, 29 May 2024 00:08:15 -0400 Subject: [PATCH 105/111] Mirror: Irish Coffee Recipe Tweak (#302) ## Mirror of PR #26327: [Irish Coffee Recipe Tweak](https://github.com/space-wizards/space-station-14/pull/26327) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `e93af9bee6143f95bd01a595a34590b61e1b92cb` PR opened by BlitzTheSquishy at 2024-03-22 04:05:06 UTC --- PR changed 1 files with 3 additions and 3 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > > Changed the reaction for Irish Coffee to be more logical > > ## Why / Balance > > This would simply make it easier for bartenders to mix Irish Coffee to a number that's a multiple of 2, rather than 4 (such as a metamorphic glass) > > ## Technical details > > > ## Media > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > > :cl: > > - tweak: Irish Coffee recipe adjusted to be more logical > >
    Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- Resources/Prototypes/Recipes/Reactions/drinks.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Recipes/Reactions/drinks.yml b/Resources/Prototypes/Recipes/Reactions/drinks.yml index e5afdbd6def..7608369b2ce 100644 --- a/Resources/Prototypes/Recipes/Reactions/drinks.yml +++ b/Resources/Prototypes/Recipes/Reactions/drinks.yml @@ -454,11 +454,11 @@ id: IrishCoffee reactants: Coffee: - amount: 2 + amount: 1 IrishCream: - amount: 2 + amount: 1 products: - IrishCoffee: 4 + IrishCoffee: 2 - type: reaction id: IrishCream From 75106b3d8cad057bc954d2baaf82ad9764a628a1 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Wed, 29 May 2024 00:12:14 -0400 Subject: [PATCH 106/111] Mirror: Adds craftable ducky slippers (#261) ## Mirror of PR #26138: [Adds craftable ducky slippers](https://github.com/space-wizards/space-station-14/pull/26138) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `6694f92171ad8d6465b8c8403bf863ba66a75b74` PR opened by Plykiya at 2024-03-15 11:38:14 UTC --- PR changed 5 files with 43 additions and 1 deletions. The PR had the following labels: - No C# ---

    Original Body

    > > > > ## About the PR > > Allows you to craft ducky slippers out of two rubber duckies. > > ## Why / Balance > > Quack > > ## Technical details > > All yml requirements to add a construction graph, tags for it, and the end result. > > ## Media > > > - [ X ] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > ![image](https://github.com/space-wizards/space-station-14/assets/58439124/42a7e44c-3be1-42a4-9e0a-c9735380c63a) > > **Changelog** > > > > :cl: > - add: You can now craft ducky slippers.
    Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- .../Entities/Clothing/Shoes/misc.yml | 3 +++ .../Prototypes/Entities/Objects/Fun/toys.yml | 3 +++ .../Graphs/clothing/ducky_slippers.yml | 22 +++++++++++++++++++ .../Recipes/Construction/clothing.yml | 11 ++++++++++ Resources/Prototypes/tags.yml | 3 +++ 5 files changed, 42 insertions(+) create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/clothing/ducky_slippers.yml diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml b/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml index ee1708caef6..d1f6e083f40 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml @@ -47,6 +47,9 @@ collection: FootstepDuck params: variation: 0.07 + - type: Construction + graph: ClothingShoeSlippersDuck + node: shoes - type: entity parent: ClothingShoesBaseButcherable diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index 6697aa711e0..67c6e1194b7 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -643,6 +643,9 @@ requiresSpecialDigestion: true useSound: path: /Audio/Items/Toys/mousesqueek.ogg + - type: Tag + tags: + - ToyRubberDuck - type: entity parent: BasePlushie diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/clothing/ducky_slippers.yml b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/ducky_slippers.yml new file mode 100644 index 00000000000..e017096fa90 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/ducky_slippers.yml @@ -0,0 +1,22 @@ +- type: constructionGraph + id: ClothingShoeSlippersDuck + start: start + graph: + - node: start + edges: + - to: shoes + steps: + - tag: ToyRubberDuck + name: a rubber ducky + icon: + sprite: Objects/Fun/ducky.rsi + state: icon + doAfter: 1 + - tag: ToyRubberDuck + name: a rubber ducky + icon: + sprite: Objects/Fun/ducky.rsi + state: icon + doAfter: 1 + - node: shoes + entity: ClothingShoeSlippersDuck diff --git a/Resources/Prototypes/Recipes/Construction/clothing.yml b/Resources/Prototypes/Recipes/Construction/clothing.yml index 4fe2c474bb4..f1eb270af73 100644 --- a/Resources/Prototypes/Recipes/Construction/clothing.yml +++ b/Resources/Prototypes/Recipes/Construction/clothing.yml @@ -85,3 +85,14 @@ description: Two huds joined by arms icon: { sprite: Clothing/Eyes/Hud/medsec.rsi, state: icon } objectType: Item + +- type: construction + name: ducky slippers + id: ClothingShoeSlippersDuck + graph: ClothingShoeSlippersDuck + startNode: start + targetNode: shoes + category: construction-category-clothing + description: Comfy, yet haunted by the ghosts of ducks you fed bread to as a child. + icon: { sprite: Clothing/Shoes/Misc/duck-slippers.rsi, state: icon } + objectType: Item diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 2694cbeaf39..c6a0ab3f8fd 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1190,6 +1190,9 @@ - type: Tag id: Torch +- type: Tag + id: ToyRubberDuck + - type: Tag id: ToySidearm From ec3986b6cfb2879f6b765589ff0cc727062431cc Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Wed, 29 May 2024 00:16:49 -0400 Subject: [PATCH 107/111] Mirror: Fix anomaly decay logs (#227) ## Mirror of PR #26180: [Fix anomaly decay logs](https://github.com/space-wizards/space-station-14/pull/26180) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `d8a7b33b43cd9b0e241dc189653cbd4cf4c49086` PR opened by LordCarve at 2024-03-16 17:05:24 UTC --- PR changed 1 files with 3 additions and 2 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > > - Decayed Anomalies leave log with `LogImpact.Low` (down from `LogImpact.Extreme` and being misreported as having gone supercritical) > Reason: Admin Logs severity usually means how much of admin attention this requires. A decayed anomaly does not require any Admin attention and is essentially just a convenience note. > > - Swapped `LogImpact`s of supercritical event starting and finishing. > Reason: When an anomaly starts going supercritical it leaves a log with `LogImpact.High`, but when it finishes the animation it leaves a log with `LogImpact.Extreme`. This seems inconsistent to me, because the moment anomaly starts going supercritical seems to demand more Admin attention than an "it had already happened"-style report. After this change, a supercritical anomaly will still always leave at least one `LogImpact.Extreme` admin log, so from reporting perspective it should be conveying the same message;, but from "immediate responder" perspective Admins get the more-important `Extreme` log sooner (as the supercritical event starts happening, rather than after it had already finished). > > Resolves #26122 > > ## Why / Balance > > Bugfix. > > ## Technical details > > Anomalies ending still leave multiple logs. This is beyond the scope of this PR. > But at least now it won't spam the `LogImpact.Extreme` category. > > ## Media > > ![image](https://github.com/space-wizards/space-station-14/assets/27449516/09ddfd79-a872-4be2-8ba7-16619b63835b) > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > > > :cl: > ADMIN > - fix: Decayed anomalies no longer show as having gone supercritical in logs.
    Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- Content.Shared/Anomaly/SharedAnomalySystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Anomaly/SharedAnomalySystem.cs b/Content.Shared/Anomaly/SharedAnomalySystem.cs index a3bb1e14679..c335cd7b858 100644 --- a/Content.Shared/Anomaly/SharedAnomalySystem.cs +++ b/Content.Shared/Anomaly/SharedAnomalySystem.cs @@ -129,7 +129,7 @@ public void StartSupercriticalEvent(EntityUid uid) if (HasComp(uid)) return; - AdminLog.Add(LogType.Anomaly, LogImpact.High, $"Anomaly {ToPrettyString(uid)} began to go supercritical."); + AdminLog.Add(LogType.Anomaly, LogImpact.Extreme, $"Anomaly {ToPrettyString(uid)} began to go supercritical."); if (_net.IsServer) Log.Info($"Anomaly is going supercritical. Entity: {ToPrettyString(uid)}"); From 4e8365c3407676b4c5f2c5d34990b5c040ae00c9 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Wed, 29 May 2024 00:18:31 -0400 Subject: [PATCH 108/111] Mirror: Use entity queries in ambient sound & power receiver systems (#376) ## Mirror of PR #26410: [Use entity queries in ambient sound & power receiver systems](https://github.com/space-wizards/space-station-14/pull/26410) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `31d70db547f855d2a3d4075e4fcf54d1c87c0f06` PR opened by ElectroJr at 2024-03-24 20:29:56 UTC --- PR changed 2 files with 18 additions and 10 deletions. The PR had the following labels: ---

    Original Body

    >
    Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- .../Power/EntitySystems/PowerReceiverSystem.cs | 17 +++++++++++------ .../Audio/SharedAmbientSoundSystem.cs | 11 +++++++---- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs index 5ed39d51787..048fda23553 100644 --- a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs @@ -20,6 +20,8 @@ public sealed class PowerReceiverSystem : EntitySystem [Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly AppearanceSystem _appearance = default!; [Dependency] private readonly AudioSystem _audio = default!; + private EntityQuery _recQuery; + private EntityQuery _provQuery; public override void Initialize() { @@ -35,6 +37,9 @@ public override void Initialize() SubscribeLocalEvent>(OnGetVerbs); SubscribeLocalEvent>(AddSwitchPowerVerb); + + _recQuery = GetEntityQuery(); + _provQuery = GetEntityQuery(); } private void OnGetVerbs(EntityUid uid, ApcPowerReceiverComponent component, GetVerbsEvent args) @@ -77,7 +82,7 @@ private void OnProviderShutdown(EntityUid uid, ApcPowerProviderComponent compone private void OnProviderConnected(Entity receiver, ref ExtensionCableSystem.ProviderConnectedEvent args) { var providerUid = args.Provider.Owner; - if (!EntityManager.TryGetComponent(providerUid, out var provider)) + if (!_provQuery.TryGetComponent(providerUid, out var provider)) return; receiver.Comp.Provider = provider; @@ -94,7 +99,7 @@ private void OnProviderDisconnected(Entity receiver, private void OnReceiverConnected(Entity provider, ref ExtensionCableSystem.ReceiverConnectedEvent args) { - if (EntityManager.TryGetComponent(args.Receiver, out ApcPowerReceiverComponent? receiver)) + if (_recQuery.TryGetComponent(args.Receiver, out var receiver)) { provider.Comp.AddReceiver(receiver); } @@ -102,7 +107,7 @@ private void OnReceiverConnected(Entity provider, ref private void OnReceiverDisconnected(EntityUid uid, ApcPowerProviderComponent provider, ExtensionCableSystem.ReceiverDisconnectedEvent args) { - if (EntityManager.TryGetComponent(args.Receiver, out ApcPowerReceiverComponent? receiver)) + if (_recQuery.TryGetComponent(args.Receiver, out var receiver)) { provider.RemoveReceiver(receiver); } @@ -116,7 +121,7 @@ private void AddSwitchPowerVerb(EntityUid uid, PowerSwitchComponent component, G if (!HasComp(args.User)) return; - if (!TryComp(uid, out var receiver)) + if (!_recQuery.TryGetComponent(uid, out var receiver)) return; if (!receiver.NeedsPower) @@ -152,7 +157,7 @@ private void ProviderChanged(Entity receiver) ///
    public bool IsPowered(EntityUid uid, ApcPowerReceiverComponent? receiver = null) { - if (!Resolve(uid, ref receiver, false)) + if (!_recQuery.Resolve(uid, ref receiver, false)) return true; return receiver.Powered; @@ -164,7 +169,7 @@ public bool IsPowered(EntityUid uid, ApcPowerReceiverComponent? receiver = null) ///
    public bool TogglePower(EntityUid uid, bool playSwitchSound = true, ApcPowerReceiverComponent? receiver = null, EntityUid? user = null) { - if (!Resolve(uid, ref receiver, false)) + if (!_recQuery.Resolve(uid, ref receiver, false)) return true; // it'll save a lot of confusion if 'always powered' means 'always powered' diff --git a/Content.Shared/Audio/SharedAmbientSoundSystem.cs b/Content.Shared/Audio/SharedAmbientSoundSystem.cs index 6318ba25573..5f17261825c 100644 --- a/Content.Shared/Audio/SharedAmbientSoundSystem.cs +++ b/Content.Shared/Audio/SharedAmbientSoundSystem.cs @@ -5,16 +5,19 @@ namespace Content.Shared.Audio; public abstract class SharedAmbientSoundSystem : EntitySystem { + private EntityQuery _query; + public override void Initialize() { base.Initialize(); SubscribeLocalEvent(GetCompState); SubscribeLocalEvent(HandleCompState); + _query = GetEntityQuery(); } public virtual void SetAmbience(EntityUid uid, bool value, AmbientSoundComponent? ambience = null) { - if (!Resolve(uid, ref ambience, false) || ambience.Enabled == value) + if (!_query.Resolve(uid, ref ambience, false) || ambience.Enabled == value) return; ambience.Enabled = value; @@ -24,7 +27,7 @@ public virtual void SetAmbience(EntityUid uid, bool value, AmbientSoundComponent public virtual void SetRange(EntityUid uid, float value, AmbientSoundComponent? ambience = null) { - if (!Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Range, value)) + if (!_query.Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Range, value)) return; ambience.Range = value; @@ -39,7 +42,7 @@ protected virtual void QueueUpdate(EntityUid uid, AmbientSoundComponent ambience public virtual void SetVolume(EntityUid uid, float value, AmbientSoundComponent? ambience = null) { - if (!Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Volume, value)) + if (!_query.Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Volume, value)) return; ambience.Volume = value; @@ -48,7 +51,7 @@ public virtual void SetVolume(EntityUid uid, float value, AmbientSoundComponent? public virtual void SetSound(EntityUid uid, SoundSpecifier sound, AmbientSoundComponent? ambience = null) { - if (!Resolve(uid, ref ambience, false) || ambience.Sound == sound) + if (!_query.Resolve(uid, ref ambience, false) || ambience.Sound == sound) return; ambience.Sound = sound; From 5c2cff00227dae204f07c3e77cdf134e791e72ec Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Wed, 29 May 2024 00:19:32 -0400 Subject: [PATCH 109/111] Mirror: Fix wire layout inheritance. (#284) ## Mirror of PR #26289: [Fix wire layout inheritance.](https://github.com/space-wizards/space-station-14/pull/26289) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `a4692004de978cda6761d4090e13ed4d8bc1fa11` PR opened by PJB3005 at 2024-03-20 14:42:55 UTC --- PR changed 2 files with 105 additions and 0 deletions. The PR had the following labels: ---

    Original Body

    > Wire layouts manually navigate the inheritance hierarchy, but the data fields on the prototypes were also automatically inherited already. This meant that inheriting a wire layout prototype and changing nothing would cause the wires to be duplicated unless they were manually modified on top. > > Fix is easy: just disable inheritance on the data fields. > > Also, integration test for it. >
    Co-authored-by: SimpleStation14 Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> --- .../Tests/Wires/WireLayoutTest.cs | 103 ++++++++++++++++++ Content.Server/Wires/WireLayout.cs | 2 + 2 files changed, 105 insertions(+) create mode 100644 Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs diff --git a/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs b/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs new file mode 100644 index 00000000000..920dc088186 --- /dev/null +++ b/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs @@ -0,0 +1,103 @@ +using Content.Server.Doors; +using Content.Server.Power; +using Content.Server.Wires; +using Robust.Shared.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Map; + +namespace Content.IntegrationTests.Tests.Wires; + +[TestFixture] +[Parallelizable(ParallelScope.All)] +[TestOf(typeof(WiresSystem))] +public sealed class WireLayoutTest +{ + [TestPrototypes] + public const string Prototypes = """ + - type: wireLayout + id: WireLayoutTest + dummyWires: 2 + wires: + - !type:PowerWireAction + - !type:DoorBoltWireAction + + - type: wireLayout + id: WireLayoutTest2 + parent: WireLayoutTest + wires: + - !type:PowerWireAction + + - type: wireLayout + id: WireLayoutTest3 + parent: WireLayoutTest + + - type: entity + id: WireLayoutTest + components: + - type: Wires + layoutId: WireLayoutTest + + - type: entity + id: WireLayoutTest2 + components: + - type: Wires + layoutId: WireLayoutTest2 + + - type: entity + id: WireLayoutTest3 + components: + - type: Wires + layoutId: WireLayoutTest3 + """; + + [Test] + public async Task TestLayoutInheritance() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + var testMap = await pair.CreateTestMap(); + + await server.WaitAssertion(() => + { + var wires = IoCManager.Resolve().GetEntitySystem(); + + // Need to spawn these entities to make sure the wire layouts are initialized. + var ent1 = SpawnWithComp(server.EntMan, "WireLayoutTest", testMap.MapCoords); + var ent2 = SpawnWithComp(server.EntMan, "WireLayoutTest2", testMap.MapCoords); + var ent3 = SpawnWithComp(server.EntMan, "WireLayoutTest3", testMap.MapCoords); + + // Assert.That(wires.TryGetLayout("WireLayoutTest", out var layout1)); + // Assert.That(wires.TryGetLayout("WireLayoutTest2", out var layout2)); + // Assert.That(wires.TryGetLayout("WireLayoutTest3", out var layout3)); + + Assert.Multiple(() => + { + // Entity 1. + Assert.That(ent1.Comp.WiresList, Has.Count.EqualTo(4)); + Assert.That(ent1.Comp.WiresList, Has.Exactly(2).With.Property("Action").Null, "2 dummy wires"); + Assert.That(ent1.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 power wire"); + Assert.That(ent1.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 door bolt wire"); + + Assert.That(ent2.Comp.WiresList, Has.Count.EqualTo(5)); + Assert.That(ent2.Comp.WiresList, Has.Exactly(2).With.Property("Action").Null, "2 dummy wires"); + Assert.That(ent2.Comp.WiresList, Has.Exactly(2).With.Property("Action").InstanceOf(), "2 power wire"); + Assert.That(ent2.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 door bolt wire"); + + Assert.That(ent3.Comp.WiresList, Has.Count.EqualTo(4)); + Assert.That(ent3.Comp.WiresList, Has.Exactly(2).With.Property("Action").Null, "2 dummy wires"); + Assert.That(ent3.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 power wire"); + Assert.That(ent3.Comp.WiresList, Has.One.With.Property("Action").InstanceOf(), "1 door bolt wire"); + }); + }); + + await pair.CleanReturnAsync(); + } + + private static Entity SpawnWithComp(IEntityManager entityManager, string prototype, MapCoordinates coords) + where T : IComponent, new() + { + var ent = entityManager.Spawn(prototype, coords); + var comp = entityManager.EnsureComponent(ent); + return new Entity(ent, comp); + } +} diff --git a/Content.Server/Wires/WireLayout.cs b/Content.Server/Wires/WireLayout.cs index ecafba013e0..621992c915a 100644 --- a/Content.Server/Wires/WireLayout.cs +++ b/Content.Server/Wires/WireLayout.cs @@ -28,11 +28,13 @@ public sealed partial class WireLayoutPrototype : IPrototype, IInheritingPrototy /// initialization) ///
    [DataField("dummyWires")] + [NeverPushInheritance] public int DummyWires { get; private set; } = default!; /// /// All the valid IWireActions currently in this layout. /// [DataField("wires")] + [NeverPushInheritance] public List? Wires { get; private set; } } From b61bdcac4f793fc72e6c87fb4fc9d0812f5b9675 Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Wed, 29 May 2024 00:30:46 -0400 Subject: [PATCH 110/111] Mirror: Per-department wire layouts (#285) ## Mirror of PR #26247: [Per-department wire layouts](https://github.com/space-wizards/space-station-14/pull/26247) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `670a9826fec9627ffdbee69742a881dab3606fa1` PR opened by Killerqu00 at 2024-03-18 21:09:54 UTC --- PR changed 2 files with 208 additions and 0 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > > > > ## About the PR > Wire layouts for airlocks are now only same inside a single department. Wire layouts for different department airlocks are different. > ~~Also, airlocks now generally have more wires.~~ > > ## Why / Balance > > See Discord discussions and feedback regarding MRP hacking clarifications: > https://ptb.discord.com/channels/310555209753690112/1217557314328854628/1217779616828231691 > > ## Technical details > > Made some WiresSystem.cs changes, fixing code that broke inheritance. > > ## Media > > ![image](https://github.com/space-wizards/space-station-14/assets/47712032/476f5ff2-725b-481b-9805-421078905590) > ![image](https://github.com/space-wizards/space-station-14/assets/47712032/0ba49109-86f8-4bcf-8e59-d87b2989fc12) > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > ## Breaking changes > > > **Changelog** > > > :cl: > - tweak: Airlock wires are now different between departments. >
    --------- Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- .../Structures/Doors/Airlocks/access.yml | 189 +++++++++++++++++- Resources/Prototypes/Wires/layouts.yml | 20 ++ 2 files changed, 208 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml index 51f121c64ff..d07a73b022e 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml @@ -6,6 +6,8 @@ components: - type: AccessReader access: [["Service"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -14,6 +16,8 @@ components: - type: AccessReader access: [["Lawyer"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -22,6 +26,8 @@ components: - type: AccessReader access: [["Theatre"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockScience # DeltaV - Chapel is in Epistemics @@ -30,6 +36,8 @@ components: - type: AccessReader access: [["Chapel"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -38,6 +46,8 @@ components: - type: AccessReader access: [["Janitor"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -46,6 +56,8 @@ components: - type: AccessReader access: [["Kitchen"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -54,6 +66,8 @@ components: - type: AccessReader access: [["Bar"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -62,6 +76,8 @@ components: - type: AccessReader access: [["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: Airlock @@ -70,6 +86,8 @@ components: - type: AccessReader access: [["Captain"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockExternal @@ -86,6 +104,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockExternal @@ -94,6 +114,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockExternal @@ -102,6 +124,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockExternal @@ -126,6 +150,8 @@ components: - type: AccessReader access: [["Kitchen"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockFreezer @@ -134,6 +160,8 @@ components: - type: AccessReader access: [["Kitchen"], ["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockFreezer @@ -142,6 +170,8 @@ components: - type: AccessReader access: [["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockEngineering @@ -150,6 +180,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockAtmospherics @@ -158,6 +190,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockCargo @@ -166,6 +200,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockCargo @@ -174,6 +210,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockMining @@ -182,6 +220,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMedical @@ -190,6 +230,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMedical @@ -206,6 +248,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockChemistry @@ -214,6 +258,8 @@ components: - type: AccessReader access: [["Chemistry"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockScience @@ -222,6 +268,8 @@ components: - type: AccessReader access: [["Research"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockScience @@ -230,6 +278,8 @@ components: - type: AccessReader access: [["Research"], ["Medical"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockCentralCommand @@ -258,6 +308,8 @@ components: - type: AccessReader access: [["Captain"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -266,6 +318,8 @@ components: - type: AccessReader access: [["ChiefMedicalOfficer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -274,6 +328,8 @@ components: - type: AccessReader access: [["ChiefEngineer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -282,6 +338,8 @@ components: - type: AccessReader access: [["HeadOfSecurity"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -290,6 +348,8 @@ components: - type: AccessReader access: [["ResearchDirector"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -298,6 +358,8 @@ components: - type: AccessReader access: [["HeadOfPersonnel"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -306,6 +368,8 @@ components: - type: AccessReader access: [["Quartermaster"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockSecurity @@ -365,6 +429,8 @@ components: - type: AccessReader access: [["Security", "Command"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockCommand @@ -373,6 +439,8 @@ components: - type: AccessReader access: [["External"]] + - type: Wires + layoutId: AirlockCommand # Glass Airlocks - type: entity @@ -382,6 +450,8 @@ components: - type: AccessReader access: [["Service"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -390,6 +460,8 @@ components: - type: AccessReader access: [["Lawyer"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -398,6 +470,8 @@ components: - type: AccessReader access: [["Theatre"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -406,6 +480,8 @@ components: - type: AccessReader access: [["Bar"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockExternalGlass @@ -422,6 +498,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockExternalGlass @@ -446,6 +524,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockExternalGlass @@ -454,6 +534,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockGlass @@ -462,6 +544,8 @@ components: - type: AccessReader access: [["Kitchen"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -470,6 +554,8 @@ components: - type: AccessReader access: [["Janitor"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockGlass @@ -478,6 +564,8 @@ components: - type: AccessReader access: [["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockScienceGlass # DeltaV - Chapel is in Epistemics @@ -486,6 +574,8 @@ components: - type: AccessReader access: [["Chapel"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockEngineeringGlass @@ -494,6 +584,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockAtmosphericsGlass @@ -502,6 +594,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockCargoGlass @@ -510,6 +604,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockCargoGlass @@ -518,6 +614,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockMiningGlass @@ -526,6 +624,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockChemistryGlass @@ -534,6 +634,8 @@ components: - type: AccessReader access: [["Chemistry"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMedicalGlass @@ -542,6 +644,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMedicalGlass @@ -558,6 +662,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockScienceGlass @@ -566,6 +672,8 @@ components: - type: AccessReader access: [["Research"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockScienceGlass @@ -574,6 +682,8 @@ components: - type: AccessReader access: [["Research"], ["Medical"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockCentralCommandGlass @@ -592,6 +702,8 @@ components: - type: AccessReader access: [["Command"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -600,6 +712,8 @@ components: - type: AccessReader access: [["Captain"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -608,6 +722,8 @@ components: - type: AccessReader access: [["ChiefMedicalOfficer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -616,6 +732,8 @@ components: - type: AccessReader access: [["ChiefEngineer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -624,6 +742,8 @@ components: - type: AccessReader access: [["HeadOfSecurity"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -632,6 +752,8 @@ components: - type: AccessReader access: [["ResearchDirector"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -640,6 +762,8 @@ components: - type: AccessReader access: [["HeadOfPersonnel"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockCommandGlass @@ -648,6 +772,8 @@ components: - type: AccessReader access: [["Quartermaster"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockSecurityGlass @@ -656,6 +782,8 @@ components: - type: AccessReader access: [["Security"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockSecurityGlass @@ -664,8 +792,9 @@ components: - type: AccessReader access: [["Detective"]] + - type: Wires + layoutId: AirlockCommand -#Delta V: Removed Brig Access #- type: entity # parent: AirlockSecurityGlass # id: AirlockBrigGlassLocked @@ -673,6 +802,8 @@ # components: # - type: AccessReader # access: [["Brig"]] +# - type: Wires +# layoutId: AirlockCommand - type: entity parent: AirlockSecurityGlass @@ -681,6 +812,8 @@ components: - type: AccessReader access: [["Security"], ["Lawyer"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockSecurityGlass @@ -689,6 +822,8 @@ components: - type: AccessReader access: [["Armory"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockCommandGlassLocked @@ -738,6 +873,8 @@ components: - type: AccessReader access: [["Salvage"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockMaint @@ -746,6 +883,8 @@ components: - type: AccessReader access: [["Cargo"]] + - type: Wires + layoutId: AirlockCargo - type: entity parent: AirlockMaint @@ -754,6 +893,8 @@ components: - type: AccessReader access: [["Command"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -770,6 +911,8 @@ components: - type: AccessReader access: [["Engineering"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockMaint @@ -778,6 +921,8 @@ components: - type: AccessReader access: [["Atmospherics"]] + - type: Wires + layoutId: AirlockEngineering - type: entity parent: AirlockMaint @@ -786,6 +931,8 @@ components: - type: AccessReader access: [["Bar"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -794,6 +941,8 @@ components: - type: AccessReader access: [["Chapel"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -802,6 +951,8 @@ components: - type: AccessReader access: [["Hydroponics"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -810,6 +961,8 @@ components: - type: AccessReader access: [["Janitor"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -818,6 +971,8 @@ components: - type: AccessReader access: [["Lawyer"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -826,6 +981,8 @@ components: - type: AccessReader access: [["Service"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -834,6 +991,8 @@ components: - type: AccessReader access: [["Theatre"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -842,6 +1001,8 @@ components: - type: AccessReader access: [["Kitchen"]] + - type: Wires + layoutId: AirlockService - type: entity parent: AirlockMaint @@ -858,6 +1019,8 @@ components: - type: AccessReader access: [["Medical"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMaint @@ -866,6 +1029,8 @@ components: - type: AccessReader access: [["Chemistry"]] + - type: Wires + layoutId: AirlockMedical - type: entity parent: AirlockMaint @@ -874,6 +1039,8 @@ components: - type: AccessReader access: [["Research"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockMaint @@ -882,6 +1049,8 @@ components: - type: AccessReader access: [["Research"], ["Medical"]] + - type: Wires + layoutId: AirlockScience - type: entity parent: AirlockMaint @@ -890,6 +1059,8 @@ components: - type: AccessReader access: [["Security"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockMaint @@ -898,6 +1069,8 @@ components: - type: AccessReader access: [["Detective"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockMaint @@ -906,6 +1079,8 @@ components: - type: AccessReader access: [["HeadOfPersonnel"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -914,6 +1089,8 @@ components: - type: AccessReader access: [["Captain"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -922,6 +1099,8 @@ components: - type: AccessReader access: [["ChiefEngineer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -930,6 +1109,8 @@ components: - type: AccessReader access: [["ChiefMedicalOfficer"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -938,6 +1119,8 @@ components: - type: AccessReader access: [["HeadOfSecurity"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -946,6 +1129,8 @@ components: - type: AccessReader access: [["ResearchDirector"]] + - type: Wires + layoutId: AirlockCommand - type: entity parent: AirlockMaint @@ -954,6 +1139,8 @@ components: - type: AccessReader access: [["Armory"]] + - type: Wires + layoutId: AirlockSecurity - type: entity parent: AirlockSyndicate diff --git a/Resources/Prototypes/Wires/layouts.yml b/Resources/Prototypes/Wires/layouts.yml index 338bf188ba0..b30e68545df 100644 --- a/Resources/Prototypes/Wires/layouts.yml +++ b/Resources/Prototypes/Wires/layouts.yml @@ -15,6 +15,26 @@ - type: wireLayout parent: Airlock + id: AirlockService + +- type: wireLayout + parent: Airlock + id: AirlockCargo + +- type: wireLayout + parent: Airlock + id: AirlockEngineering + +- type: wireLayout + parent: Airlock + id: AirlockMedical + +- type: wireLayout + parent: Airlock + id: AirlockScience + +- type: wireLayout + parent: HighSec id: AirlockCommand - type: wireLayout From 23c0e985d436deeb367406fd08d4a1fdf379cc7c Mon Sep 17 00:00:00 2001 From: SimpleStation14 <130339894+SimpleStation14@users.noreply.github.com> Date: Wed, 29 May 2024 05:14:43 -0400 Subject: [PATCH 111/111] Mirror: Run `fixgridatmos` for cargo & emergency shuttle (#361) ## Mirror of PR #26382: [Run `fixgridatmos` for cargo & emergency shuttle](https://github.com/space-wizards/space-station-14/pull/26382) from space-wizards [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `ec761114eacdeed6e68f9c94dddfdbec8a6e26be` PR opened by ElectroJr at 2024-03-24 07:27:14 UTC --- PR changed 6 files with 60 additions and 575 deletions. The PR had the following labels: - Status: Needs Review ---

    Original Body

    > This PR also changes fixgridatmos so that it trimms empty/invalid tiles. > > :cl: > - fix: Fixed the cargo & emergency shuttle not being airtight. >
    Signed-off-by: VMSolidus Co-authored-by: SimpleStation14 Co-authored-by: VMSolidus --- .../Atmos/Overlays/AtmosDebugOverlay.cs | 2 + .../EntitySystems/AtmosDebugOverlaySystem.cs | 3 +- .../AtmosphereSystem.Commands.cs | 6 + .../SharedAtmosDebugOverlaySystem.cs | 3 +- Resources/Maps/Shuttles/cargo.yml | 230 ++--------- Resources/Maps/Shuttles/emergency.yml | 391 ++---------------- 6 files changed, 60 insertions(+), 575 deletions(-) diff --git a/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs b/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs index fcf3b04e530..6dfbc326ecb 100644 --- a/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs +++ b/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs @@ -256,6 +256,8 @@ private void DrawTooltip(DrawingHandleScreen handle, Vector2 pos, AtmosDebugOver handle.DrawString(_font, pos, $"Map: {data.MapAtmosphere}"); pos += offset; handle.DrawString(_font, pos, $"NoGrid: {data.NoGrid}"); + pos += offset; + handle.DrawString(_font, pos, $"Immutable: {data.Immutable}"); } private void GetGrids(MapId mapId, Box2Rotated box) diff --git a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs index c0284f26c90..505c4a3b385 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs @@ -109,7 +109,8 @@ private void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs e) tile.ExcitedGroup?.GetHashCode(), tile.Space, tile.MapAtmosphere, - tile.NoGridTile); + tile.NoGridTile, + tile.Air?.Immutable ?? false); } public override void Update(float frameTime) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs index 6fbd638844b..1c18b8fe29c 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs @@ -92,6 +92,12 @@ private void FixGridAtmosCommand(IConsoleShell shell, string argstr, string[] ar if (tile == null) continue; + if (!_mapSystem.TryGetTile(gridComp, indices, out var gTile) || gTile.IsEmpty) + { + gridAtmosphere.Tiles.Remove(indices); + continue; + } + if (tile.Immutable && !IsTileSpace(euid, transform.MapUid, indices, gridComp)) { tile = new GasMixture(tile.Volume) { Temperature = tile.Temperature }; diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosDebugOverlaySystem.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosDebugOverlaySystem.cs index 136c1955025..979bbf77ba6 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedAtmosDebugOverlaySystem.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosDebugOverlaySystem.cs @@ -20,7 +20,8 @@ public readonly record struct AtmosDebugOverlayData( int? InExcitedGroup, bool IsSpace, bool MapAtmosphere, - bool NoGrid); + bool NoGrid, + bool Immutable); /// /// Invalid tiles for the gas overlay. diff --git a/Resources/Maps/Shuttles/cargo.yml b/Resources/Maps/Shuttles/cargo.yml index 3b9953d94cf..8a3007dd9c4 100644 --- a/Resources/Maps/Shuttles/cargo.yml +++ b/Resources/Maps/Shuttles/cargo.yml @@ -3,11 +3,11 @@ meta: postmapinit: false tilemap: 0: Space - 81: FloorShuttleBlue - 85: FloorShuttleWhite - 89: FloorSteel - 104: FloorTechMaint - 121: Plating + 84: FloorShuttleBlue + 89: FloorShuttleWhite + 93: FloorSteel + 108: FloorTechMaint + 126: Plating entities: - proto: "" entities: @@ -22,19 +22,19 @@ entities: chunks: -1,0: ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAVQAAAAAAUQAAAAAAVQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAUQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAWQAAAAAAVAAAAAAAWQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAVAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 0,0: ind: 0,0 - tiles: WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: XQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -1,-1: ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAA version: 6 0,-1: ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 - type: Broadphase - type: Physics @@ -107,98 +107,34 @@ entities: data: tiles: -2,-1: - 0: 34816 - 1: 17612 - -1,-3: - 0: 480 - 1: 65024 + 0: 52428 -1,-1: - 0: 17 - 1: 65518 + 0: 65535 -1,-2: - 1: 65535 + 0: 61440 -2,1: - 0: 34944 - 1: 17484 + 0: 52428 -1,0: - 1: 65535 + 0: 65535 -1,1: - 0: 4096 - 1: 59647 - 2: 512 - 3: 1024 - 4: 256 + 0: 65535 -1,2: - 5: 1 - 6: 16 - 7: 4 - 8: 64 - 1: 61066 - 9: 32 - -1,3: - 0: 546 - 1: 52428 - 0,-3: - 0: 240 - 1: 65280 - 0,-2: - 1: 65535 + 0: 255 0,-1: - 1: 65535 - 1,-3: - 0: 528 - 1: 12544 - 1,-2: - 1: 13107 - 1,-1: - 0: 17442 - 1: 4369 + 0: 4369 0,1: - 1: 65535 + 0: 4369 0,2: - 1: 65535 - 0,3: - 1: 65535 + 0: 1 0,0: - 1: 65535 - 1,3: - 0: 273 - 1,0: - 1: 30583 - 1,1: - 0: 25664 - 1: 4375 - 1,2: - 0: 34 - 1: 4369 - 0,4: - 0: 120 - 1: 7 - -1,4: - 0: 132 - 1: 8 + 0: 4369 -2,0: - 1: 52428 + 0: 52428 -2,2: - 1: 140 + 0: 140 -2,-2: - 1: 32768 + 0: 32768 uniqueMixes: - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - volume: 2500 temperature: 293.15 moles: @@ -214,126 +150,6 @@ entities: - 0 - 0 - 0 - - volume: 2500 - temperature: 268.94583 - moles: - - 20.00614 - - 75.26119 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 285.08194 - moles: - - 21.218632 - - 79.82248 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 196.33333 - moles: - - 14.549919 - - 54.735413 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 147.92499 - moles: - - 10.912439 - - 41.05156 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 184.23123 - moles: - - 13.64055 - - 51.31445 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 291.44815 - moles: - - 21.696999 - - 81.62205 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 286.34256 - moles: - - 21.313358 - - 80.178825 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 265.9203 - moles: - - 19.778797 - - 74.40595 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 chunkSize: 4 - type: OccluderTree - type: Shuttle diff --git a/Resources/Maps/Shuttles/emergency.yml b/Resources/Maps/Shuttles/emergency.yml index eeb7048141d..20cd9230554 100644 --- a/Resources/Maps/Shuttles/emergency.yml +++ b/Resources/Maps/Shuttles/emergency.yml @@ -3,13 +3,13 @@ meta: postmapinit: false tilemap: 0: Space - 29: FloorDark - 77: FloorReinforced - 89: FloorSteel - 104: FloorTechMaint - 108: FloorWhite - 120: Lattice - 121: Plating + 31: FloorDark + 79: FloorReinforced + 93: FloorSteel + 108: FloorTechMaint + 112: FloorWhite + 125: Lattice + 126: Plating entities: - proto: "" entities: @@ -24,19 +24,19 @@ entities: chunks: -1,0: ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAeQAAAAAAbAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAbAAAAAAAbAAAAAAAbAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAeQAAAAAAbAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAbAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAfgAAAAAAcAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -1,-1: ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAATQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAATQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAbAAAAAAAbAAAAAAATwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAbAAAAAAAbAAAAAAATwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAbAAAAAAAbAAAAAAAfgAAAAAAfgAAAAAA version: 6 0,-1: ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 0,0: ind: 0,0 - tiles: HQAAAAAAHQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAWQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAHQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAHQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: HwAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAXQAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAHwAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAfgAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 - type: Broadphase - type: Physics @@ -135,97 +135,41 @@ entities: data: tiles: -2,-1: - 0: 32703 - 1: 32768 - 2: 64 - -1,-3: - 1: 480 - 0: 65024 + 0: 65535 -1,-1: - 0: 61439 - 2: 4096 - -1,-2: 0: 65535 + -1,-2: + 0: 65280 -2,1: 0: 65535 -1,0: 0: 65535 -1,1: - 2: 4096 - 0: 61439 + 0: 65535 -1,2: 0: 65535 -1,3: - 1: 34 - 3: 512 - 0: 49373 - 4: 2048 - 5: 1024 - 6: 256 - 0,-3: - 1: 240 - 0: 65280 + 0: 4095 0,-2: - 0: 65535 + 0: 29440 0,-1: - 0: 65519 - 2: 16 - 1,-3: - 1: 528 - 0: 12544 - 1,-2: - 0: 13107 - 1,-1: - 1: 17442 - 0: 4369 + 0: 30583 0,1: - 0: 65535 + 0: 30583 0,2: - 2: 1 - 0: 65502 - 7: 32 + 0: 30583 0,3: - 0: 65229 - 8: 16 - 9: 256 - 10: 2 - 11: 32 + 0: 311 0,0: - 0: 65535 - 1,3: - 1: 273 - 1,0: 0: 30583 - 1,1: - 1: 25664 - 0: 4375 - 1,2: - 1: 34 - 0: 4369 - 0,4: - 1: 120 - 0: 7 - -1,4: - 1: 132 - 0: 8 -2,0: - 0: 61167 - 12: 16 - 13: 256 - 14: 4096 + 0: 65535 -2,2: - 0: 65499 - 7: 32 - 2: 4 + 0: 65535 -2,3: - 0: 143 - 15: 32 - 16: 64 - 17: 1024 - 18: 2048 + 0: 3311 -2,-2: - 0: 64256 - 19: 1024 + 0: 65024 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -242,291 +186,6 @@ entities: - 0 - 0 - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 20.04244 - - 75.39776 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 122.82263 - moles: - - 9.026207 - - 33.955734 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 282.50452 - moles: - - 21.024963 - - 79.0939 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 250.56815 - moles: - - 18.625212 - - 70.06627 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 192.74052 - moles: - - 14.27995 - - 53.719814 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 21.213781 - - 79.80423 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 292.48465 - moles: - - 21.774883 - - 81.91504 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 290.48862 - moles: - - 21.6249 - - 81.350815 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.10843 - moles: - - 21.821754 - - 82.09136 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 292.98364 - moles: - - 21.812382 - - 82.0561 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 220.53749 - moles: - - 16.36866 - - 61.57734 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 202.38438 - moles: - - 15.004604 - - 56.445892 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 197.84608 - moles: - - 14.66359 - - 55.163033 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 147.925 - moles: - - 10.912439 - - 41.05156 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 256.84375 - moles: - - 19.09677 - - 71.840225 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 138.84843 - moles: - - 10.230412 - - 38.485836 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 181.96211 - moles: - - 13.470042 - - 50.67302 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 220.5375 - moles: - - 16.36866 - - 61.57734 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 chunkSize: 4 - type: OccluderTree - type: Shuttle