From: Vasilis The Pikachu Date: Sun, 18 Jan 2026 20:49:19 +0000 (+0100) Subject: Revert "Allow station tiles to be placed on solid ground and other platings. (#38898)" X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=ca07d6be49816060716ee17914eadbd5f1e4bc3a;p=space-station-14.git Revert "Allow station tiles to be placed on solid ground and other platings. (#38898)" This reverts commit 418b2b70b0cade0d73b46d4c4230dfcbba6abced. Maintainer vote decided to vote this out due to code quality issues. The original contributor is aware and will get help from a maintainer to reintroduce it --- diff --git a/Content.IntegrationTests/Tests/Construction/RCDTest.cs b/Content.IntegrationTests/Tests/Construction/RCDTest.cs index f20a0cb434..814f7e89aa 100644 --- a/Content.IntegrationTests/Tests/Construction/RCDTest.cs +++ b/Content.IntegrationTests/Tests/Construction/RCDTest.cs @@ -194,7 +194,7 @@ public sealed class RCDTest : InteractionTest // Deconstruct the steel tile. await Interact(null, pEast); await RunSeconds(settingDeconstructTile.Delay + 1); // wait for the deconstruction to finish - await AssertTile(Plating, FromServer(pEast)); + await AssertTile(Lattice, FromServer(pEast)); // Check that the cost of the deconstruction was subtracted from the current charges. newCharges = sCharges.GetCurrentCharges(ToServer(rcd)); diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs index 3cfb5a5dba..8917ba7ead 100644 --- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs +++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs @@ -12,7 +12,6 @@ public abstract partial class InteractionTest protected const string FloorItem = "FloorTileItemSteel"; protected const string Plating = "Plating"; protected const string Lattice = "Lattice"; - protected const string PlatingBrass = "PlatingBrass"; // Structures protected const string Airlock = "Airlock"; diff --git a/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs b/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs index 64c4c291fe..0827e11b70 100644 --- a/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs +++ b/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs @@ -100,25 +100,4 @@ public sealed class TileConstructionTests : InteractionTest await AssertEntityLookup((FloorItem, 1)); } - - /// - /// Test brassPlating -> floor -> brassPlating using tilestacking - /// - [Test] - public async Task BrassPlatingPlace() - { - await SetTile(PlatingBrass); - - // Brass Plating -> Tile - await InteractUsing(FloorItem); - Assert.That(HandSys.GetActiveItem((SEntMan.GetEntity(Player), Hands)), Is.Null); - await AssertTile(Floor); - AssertGridCount(1); - - // Tile -> Brass Plating - await InteractUsing(Pry); - await AssertTile(PlatingBrass); - AssertGridCount(1); - await AssertEntityLookup((FloorItem, 1)); - } } diff --git a/Content.IntegrationTests/Tests/Tiles/TileStackRecursionTest.cs b/Content.IntegrationTests/Tests/Tiles/TileStackRecursionTest.cs deleted file mode 100644 index 52c5b03265..0000000000 --- a/Content.IntegrationTests/Tests/Tiles/TileStackRecursionTest.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Content.Shared.CCVar; -using Content.Shared.Maps; -using Robust.Shared.Configuration; -using Robust.Shared.Prototypes; - -namespace Content.IntegrationTests.Tests.Tiles; - -public sealed class TileStackRecursionTest -{ - [Test] - public async Task TestBaseTurfRecursion() - { - await using var pair = await PoolManager.GetServerClient(); - var protoMan = pair.Server.ResolveDependency(); - var cfg = pair.Server.ResolveDependency(); - var maxTileHistoryLength = cfg.GetCVar(CCVars.TileStackLimit); - Assert.That(protoMan.TryGetInstances(out var tiles)); - Assert.That(tiles, Is.Not.EqualTo(null)); - //store the distance from the root node to the given tile node - var nodes = new List<(ProtoId, int)>(); - //each element of list is a connection from BaseTurf tile to tile that goes on it - var edges = new List<(ProtoId, ProtoId)>(); - foreach (var ctdef in tiles!.Values) - { - //at first, each node is unexplored and has infinite distance to root. - //we use space node as root - everything is supposed to start at space, and it's hardcoded into the game anyway. - if (ctdef.ID == ContentTileDefinition.SpaceID) - { - nodes.Insert(0, (ctdef.ID, 0)); //space is the first element - continue; - } - Assert.That(ctdef.BaseTurf != ctdef.ID); - nodes.Add((ctdef.ID, int.MaxValue)); - if (ctdef.BaseTurf != null) - edges.Add((ctdef.BaseTurf.Value, ctdef.ID)); - Assert.That(ctdef.BaseWhitelist, Does.Not.Contain(ctdef.ID)); - edges.AddRange(ctdef.BaseWhitelist.Select(possibleTurf => - (possibleTurf, new ProtoId(ctdef.ID)))); - } - Bfs(nodes, edges, maxTileHistoryLength); - await pair.CleanReturnAsync(); - } - - private void Bfs(List<(ProtoId, int)> nodes, List<(ProtoId, ProtoId)> edges, int depthLimit) - { - var root = nodes[0]; - var queue = new Queue<(ProtoId, int)>(); - queue.Enqueue(root); - while (queue.Count != 0) - { - var u = queue.Dequeue(); - //get a list of tiles that can be put on this tile - var adj = edges.Where(n => n.Item1 == u.Item1).Select(n => n.Item2); - var adjNodes = nodes.Where(n => adj.Contains(n.Item1)).ToList(); - foreach (var node in adjNodes) - { - var adjNode = node; - adjNode.Item2 = u.Item2 + 1; - Assert.That(adjNode.Item2, Is.LessThanOrEqualTo(depthLimit)); //we can doomstack tiles on top of each other. Bad! - queue.Enqueue(adjNode); - } - } - } -} diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs index 37045097f3..2cec8d707a 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs @@ -517,39 +517,17 @@ public sealed partial class ExplosionSystem else if (tileDef.MapAtmosphere) canCreateVacuum = true; // is already a vacuum. - var history = CompOrNull(tileRef.GridUid); - - // break the tile into its underlying parts int tileBreakages = 0; while (maxTileBreak > tileBreakages && _robustRandom.Prob(type.TileBreakChance(effectiveIntensity))) { tileBreakages++; effectiveIntensity -= type.TileBreakRerollReduction; - ContentTileDefinition? newDef = null; - - // if we have tile history, we revert the tile to its previous state - var chunkIndices = SharedMapSystem.GetChunkIndices(tileRef.GridIndices, TileSystem.ChunkSize); - if (history != null && history.ChunkHistory.TryGetValue(chunkIndices, out var chunk) && - chunk.History.TryGetValue(tileRef.GridIndices, out var stack) && stack.Count > 0) - { - // last entry in the stack - var newId = stack[^1]; - stack.RemoveAt(stack.Count - 1); - if (stack.Count == 0) - chunk.History.Remove(tileRef.GridIndices); - - Dirty(tileRef.GridUid, history); - - newDef = (ContentTileDefinition) _tileDefinitionManager[newId.Id]; - } - else if (tileDef.BaseTurf.HasValue) - { - // otherwise, we just use the base turf - newDef = (ContentTileDefinition) _tileDefinitionManager[tileDef.BaseTurf.Value]; - } + // does this have a base-turf that we can break it down to? + if (string.IsNullOrEmpty(tileDef.BaseTurf)) + break; - if (newDef == null) + if (_tileDefinitionManager[tileDef.BaseTurf] is not ContentTileDefinition newDef) break; if (newDef.MapAtmosphere && !canCreateVacuum) diff --git a/Content.Server/Maps/TileGridSplitSystem.cs b/Content.Server/Maps/TileGridSplitSystem.cs deleted file mode 100644 index fef0efed2b..0000000000 --- a/Content.Server/Maps/TileGridSplitSystem.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System.Numerics; -using Content.Shared.Maps; -using Robust.Shared.Map; -using Robust.Shared.Map.Components; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; - -namespace Content.Server.Maps; - -/// -/// This system handles transferring data when a grid is split. -/// -public sealed class TileGridSplitSystem : EntitySystem -{ - [Dependency] private readonly SharedMapSystem _maps = default!; - [Dependency] private readonly IGameTiming _timing = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnGridSplit); - } - - /// - /// Transfer tile history from the old grid to the new grids. - /// - private void OnGridSplit(ref GridSplitEvent ev) - { - if (!TryComp(ev.Grid, out var oldHistory)) - return; - - var oldGrid = Comp(ev.Grid); - - foreach (var gridUid in ev.NewGrids) - { - // ensure the new grid has a history component and get its grid component - var newHistory = EnsureComp(gridUid); - var newGrid = Comp(gridUid); - - foreach (var tile in _maps.GetAllTiles(gridUid, newGrid)) - { - // calculate where this tile was on the old grid - var oldIndices = _maps.LocalToTile(ev.Grid, oldGrid, new EntityCoordinates(gridUid, new Vector2(tile.GridIndices.X + 0.5f, tile.GridIndices.Y + 0.5f))); - - var chunkIndices = SharedMapSystem.GetChunkIndices(oldIndices, TileSystem.ChunkSize); - if (oldHistory.ChunkHistory.TryGetValue(chunkIndices, out var oldChunk) && - oldChunk.History.TryGetValue(oldIndices, out var history)) - { - // now we move the history from the old grid to the new grid - var newChunkIndices = SharedMapSystem.GetChunkIndices(tile.GridIndices, TileSystem.ChunkSize); - if (!newHistory.ChunkHistory.TryGetValue(newChunkIndices, out var newChunk)) - { - newChunk = new TileHistoryChunk(); - newHistory.ChunkHistory[newChunkIndices] = newChunk; - } - - newChunk.History[tile.GridIndices] = new List>(history); - newChunk.LastModified = _timing.CurTick; - - // clean up the old history - oldChunk.History.Remove(oldIndices); - if (oldChunk.History.Count == 0) - oldHistory.ChunkHistory.Remove(chunkIndices); - else - oldChunk.LastModified = _timing.CurTick; - } - } - - Dirty(gridUid, newHistory); - } - - Dirty(ev.Grid, oldHistory); - } -} diff --git a/Content.Shared/CCVar/CCVars.Game.cs b/Content.Shared/CCVar/CCVars.Game.cs index 03cf6a673a..68342733f8 100644 --- a/Content.Shared/CCVar/CCVars.Game.cs +++ b/Content.Shared/CCVar/CCVars.Game.cs @@ -409,13 +409,4 @@ public sealed partial class CCVars /// public static readonly CVarDef GameHostnameInTitlebar = CVarDef.Create("game.hostname_in_titlebar", true, CVar.SERVER | CVar.REPLICATED); - - /// - /// The maximum amount of tiles you can stack on top of each other. 0 is unlimited. - /// - /// - /// Having it too high can result in "doomstacking" tiles - this messes with efficiency of explosions, deconstruction of tiles, and might result in memory problems. - /// - public static readonly CVarDef TileStackLimit = - CVarDef.Create("game.tile_stack_limit", 5, CVar.SERVER | CVar.REPLICATED); } diff --git a/Content.Shared/Maps/ContentTileDefinition.cs b/Content.Shared/Maps/ContentTileDefinition.cs index 672eb95911..46ce7a212e 100644 --- a/Content.Shared/Maps/ContentTileDefinition.cs +++ b/Content.Shared/Maps/ContentTileDefinition.cs @@ -8,7 +8,6 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; using Robust.Shared.Utility; namespace Content.Shared.Maps @@ -42,13 +41,7 @@ namespace Content.Shared.Maps [DataField("isSubfloor")] public bool IsSubFloor { get; private set; } [DataField("baseTurf")] - public ProtoId? BaseTurf { get; private set; } - - /// - /// On what tiles this tile can be placed on. BaseTurf is already included. - /// - [DataField] - public List> BaseWhitelist { get; private set; } = new(); + public string BaseTurf { get; private set; } = string.Empty; [DataField] public PrototypeFlags DeconstructTools { get; set; } = new(); diff --git a/Content.Shared/Maps/TileHistoryComponent.cs b/Content.Shared/Maps/TileHistoryComponent.cs deleted file mode 100644 index 0e02d60984..0000000000 --- a/Content.Shared/Maps/TileHistoryComponent.cs +++ /dev/null @@ -1,125 +0,0 @@ -using Robust.Shared.GameStates; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; -using Robust.Shared.Timing; - -namespace Content.Shared.Maps; - -[RegisterComponent, NetworkedComponent] -public sealed partial class TileHistoryComponent : Component -{ - // History of tiles for each grid chunk. - [DataField] - public Dictionary ChunkHistory = new(); - - /// - /// Tick at which PVS was last toggled. Ensures that all players receive a full update when toggling PVS. - /// - public GameTick ForceTick { get; set; } -} - -[Serializable, NetSerializable] -public sealed class TileHistoryState : ComponentState -{ - public Dictionary ChunkHistory; - - public TileHistoryState(Dictionary chunkHistory) - { - ChunkHistory = chunkHistory; - } -} - -[Serializable, NetSerializable] -public sealed class TileHistoryDeltaState : ComponentState, IComponentDeltaState -{ - public Dictionary ChunkHistory; - public HashSet AllHistoryChunks; - - public TileHistoryDeltaState(Dictionary chunkHistory, HashSet allHistoryChunks) - { - ChunkHistory = chunkHistory; - AllHistoryChunks = allHistoryChunks; - } - - public void ApplyToFullState(TileHistoryState state) - { - var toRemove = new List(); - foreach (var key in state.ChunkHistory.Keys) - { - if (!AllHistoryChunks.Contains(key)) - toRemove.Add(key); - } - - foreach (var key in toRemove) - { - state.ChunkHistory.Remove(key); - } - - foreach (var (indices, chunk) in ChunkHistory) - { - state.ChunkHistory[indices] = new TileHistoryChunk(chunk); - } - } - - public void ApplyToComponent(TileHistoryComponent component) - { - var toRemove = new List(); - foreach (var key in component.ChunkHistory.Keys) - { - if (!AllHistoryChunks.Contains(key)) - toRemove.Add(key); - } - - foreach (var key in toRemove) - { - component.ChunkHistory.Remove(key); - } - - foreach (var (indices, chunk) in ChunkHistory) - { - component.ChunkHistory[indices] = new TileHistoryChunk(chunk); - } - } - - public TileHistoryState CreateNewFullState(TileHistoryState state) - { - var chunks = new Dictionary(state.ChunkHistory.Count); - - foreach (var (indices, chunk) in ChunkHistory) - { - chunks[indices] = new TileHistoryChunk(chunk); - } - - foreach (var (indices, chunk) in state.ChunkHistory) - { - if (AllHistoryChunks.Contains(indices)) - chunks.TryAdd(indices, new TileHistoryChunk(chunk)); - } - - return new TileHistoryState(chunks); - } -} - -[DataDefinition, Serializable, NetSerializable] -public sealed partial class TileHistoryChunk -{ - [DataField] - public Dictionary>> History = new(); - - [ViewVariables] - public GameTick LastModified; - - public TileHistoryChunk() - { - } - - public TileHistoryChunk(TileHistoryChunk other) - { - History = new Dictionary>>(other.History.Count); - foreach (var (key, value) in other.History) - { - History[key] = new List>(value); - } - LastModified = other.LastModified; - } -} diff --git a/Content.Shared/Maps/TileSystem.cs b/Content.Shared/Maps/TileSystem.cs index 908507e54d..d87b3ca50d 100644 --- a/Content.Shared/Maps/TileSystem.cs +++ b/Content.Shared/Maps/TileSystem.cs @@ -1,16 +1,10 @@ using System.Linq; using System.Numerics; -using Content.Shared.CCVar; using Content.Shared.Coordinates.Helpers; using Content.Shared.Decals; -using Content.Shared.Tiles; -using Robust.Shared.Configuration; -using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Map.Components; -using Robust.Shared.Prototypes; using Robust.Shared.Random; -using Robust.Shared.Timing; using Robust.Shared.Utility; namespace Content.Shared.Maps; @@ -20,85 +14,12 @@ namespace Content.Shared.Maps; /// public sealed class TileSystem : EntitySystem { - [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IRobustRandom _robustRandom = default!; [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!; [Dependency] private readonly SharedDecalSystem _decal = default!; [Dependency] private readonly SharedMapSystem _maps = default!; [Dependency] private readonly TurfSystem _turf = default!; - [Dependency] private readonly IGameTiming _timing = default!; - - public const int ChunkSize = 16; - - private int _tileStackLimit; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnGridStartup); - SubscribeLocalEvent(OnGetState); - SubscribeLocalEvent(OnHandleState); - SubscribeLocalEvent(OnFloorTileAttempt); - - _cfg.OnValueChanged(CCVars.TileStackLimit, t => _tileStackLimit = t, true); - } - - private void OnHandleState(EntityUid uid, TileHistoryComponent component, ref ComponentHandleState args) - { - if (args.Current is not TileHistoryState state && args.Current is not TileHistoryDeltaState) - return; - - if (args.Current is TileHistoryState fullState) - { - component.ChunkHistory.Clear(); - foreach (var (key, value) in fullState.ChunkHistory) - { - component.ChunkHistory[key] = new TileHistoryChunk(value); - } - - return; - } - - if (args.Current is TileHistoryDeltaState deltaState) - { - deltaState.ApplyToComponent(component); - } - } - - private void OnGetState(EntityUid uid, TileHistoryComponent component, ref ComponentGetState args) - { - if (args.FromTick <= component.CreationTick || args.FromTick <= component.ForceTick) - { - var fullHistory = new Dictionary(component.ChunkHistory.Count); - foreach (var (key, value) in component.ChunkHistory) - { - fullHistory[key] = new TileHistoryChunk(value); - } - args.State = new TileHistoryState(fullHistory); - return; - } - - var data = new Dictionary(); - foreach (var (index, chunk) in component.ChunkHistory) - { - if (chunk.LastModified >= args.FromTick) - data[index] = new TileHistoryChunk(chunk); - } - - args.State = new TileHistoryDeltaState(data, new(component.ChunkHistory.Keys)); - } - - /// - /// On grid startup, ensure that we have Tile History. - /// - private void OnGridStartup(GridInitializeEvent ev) - { - if (HasComp(ev.EntityUid)) - return; - - EnsureComp(ev.EntityUid); - } /// /// Returns a weighted pick of a tile variant. @@ -164,7 +85,7 @@ public sealed class TileSystem : EntitySystem return PryTile(tileRef); } - public bool PryTile(TileRef tileRef) + public bool PryTile(TileRef tileRef) { return PryTile(tileRef, false); } @@ -176,7 +97,7 @@ public sealed class TileSystem : EntitySystem if (tile.IsEmpty) return false; - var tileDef = (ContentTileDefinition)_tileDefinitionManager[tile.TypeId]; + var tileDef = (ContentTileDefinition) _tileDefinitionManager[tile.TypeId]; if (!tileDef.CanCrowbar) return false; @@ -191,73 +112,33 @@ public sealed class TileSystem : EntitySystem return ReplaceTile(tileref, replacementTile, tileref.GridUid, grid); } - public bool ReplaceTile(TileRef tileref, ContentTileDefinition replacementTile, EntityUid grid, MapGridComponent? component = null, byte? variant = null) + public bool ReplaceTile(TileRef tileref, ContentTileDefinition replacementTile, EntityUid grid, MapGridComponent? component = null) { DebugTools.Assert(tileref.GridUid == grid); if (!Resolve(grid, ref component)) return false; - var key = tileref.GridIndices; - var currentTileDef = (ContentTileDefinition) _tileDefinitionManager[tileref.Tile.TypeId]; - - // If the tile we're placing has a baseTurf that matches the tile we're replacing, we don't need to create a history - // unless the tile already has a history. - var history = EnsureComp(grid); - var chunkIndices = SharedMapSystem.GetChunkIndices(key, ChunkSize); - history.ChunkHistory.TryGetValue(chunkIndices, out var chunk); - var historyExists = chunk != null && chunk.History.ContainsKey(key); - - if (replacementTile.BaseTurf != currentTileDef.ID || historyExists) - { - if (chunk == null) - { - chunk = new TileHistoryChunk(); - history.ChunkHistory[chunkIndices] = chunk; - } - - chunk.LastModified = _timing.CurTick; - Dirty(grid, history); - - //Create stack if needed - if (!chunk.History.TryGetValue(key, out var stack)) - { - stack = new List>(); - chunk.History[key] = stack; - } - - //Prevent the doomstack - if (stack.Count >= _tileStackLimit && _tileStackLimit != 0) - return false; - - //Push current tile to the stack, if not empty - if (!tileref.Tile.IsEmpty) - { - stack.Add(currentTileDef.ID); - } - } - variant ??= PickVariant(replacementTile); + var variant = PickVariant(replacementTile); var decals = _decal.GetDecalsInRange(tileref.GridUid, _turf.GetTileCenter(tileref).Position, 0.5f); foreach (var (id, _) in decals) { _decal.RemoveDecal(tileref.GridUid, id); } - _maps.SetTile(grid, component, tileref.GridIndices, new Tile(replacementTile.TileId, 0, variant.Value)); + _maps.SetTile(grid, component, tileref.GridIndices, new Tile(replacementTile.TileId, 0, variant)); return true; } - - public bool DeconstructTile(TileRef tileRef, bool spawnItem = true) + public bool DeconstructTile(TileRef tileRef) { if (tileRef.Tile.IsEmpty) return false; - var tileDef = (ContentTileDefinition)_tileDefinitionManager[tileRef.Tile.TypeId]; + var tileDef = (ContentTileDefinition) _tileDefinitionManager[tileRef.Tile.TypeId]; - //Can't deconstruct anything that doesn't have a base turf. - if (tileDef.BaseTurf == null) + if (string.IsNullOrEmpty(tileDef.BaseTurf)) return false; var gridUid = tileRef.GridUid; @@ -271,68 +152,20 @@ public sealed class TileSystem : EntitySystem (_robustRandom.NextFloat() - 0.5f) * bounds, (_robustRandom.NextFloat() - 0.5f) * bounds)); - var historyComp = EnsureComp(gridUid); - ProtoId previousTileId; + //Actually spawn the relevant tile item at the right position and give it some random offset. + var tileItem = Spawn(tileDef.ItemDropPrototypeName, coordinates); + Transform(tileItem).LocalRotation = _robustRandom.NextDouble() * Math.Tau; - var chunkIndices = SharedMapSystem.GetChunkIndices(indices, ChunkSize); - - //Pop from stack if we have history - if (historyComp.ChunkHistory.TryGetValue(chunkIndices, out var chunk) && - chunk.History.TryGetValue(indices, out var stack) && stack.Count > 0) - { - chunk.LastModified = _timing.CurTick; - Dirty(gridUid, historyComp); - - previousTileId = stack.Last(); - stack.RemoveAt(stack.Count - 1); - - //Clean up empty stacks to avoid memory buildup - if (stack.Count == 0) - { - chunk.History.Remove(indices); - } - - // Clean up empty chunks - if (chunk.History.Count == 0) - { - historyComp.ChunkHistory.Remove(chunkIndices); - } - } - else - { - //No stack? Assume BaseTurf was the layer below - previousTileId = tileDef.BaseTurf.Value; - } - - if (spawnItem) - { - //Actually spawn the relevant tile item at the right position and give it some random offset. - var tileItem = Spawn(tileDef.ItemDropPrototypeName, coordinates); - Transform(tileItem).LocalRotation = _robustRandom.NextDouble() * Math.Tau; - } - - //Destroy any decals on the tile + // Destroy any decals on the tile var decals = _decal.GetDecalsInRange(gridUid, coordinates.SnapToGrid(EntityManager, _mapManager).Position, 0.5f); foreach (var (id, _) in decals) { _decal.RemoveDecal(tileRef.GridUid, id); } - //Replace tile with the one it was placed on - var previousDef = (ContentTileDefinition)_tileDefinitionManager[previousTileId]; - _maps.SetTile(gridUid, mapGrid, indices, new Tile(previousDef.TileId)); + var plating = _tileDefinitionManager[tileDef.BaseTurf]; + _maps.SetTile(gridUid, mapGrid, tileRef.GridIndices, new Tile(plating.TileId)); return true; } - - private void OnFloorTileAttempt(Entity ent, ref FloorTileAttemptEvent args) - { - if (_tileStackLimit == 0) - return; - var chunkIndices = SharedMapSystem.GetChunkIndices(args.GridIndices, ChunkSize); - if (!ent.Comp.ChunkHistory.TryGetValue(chunkIndices, out var chunk) || - !chunk.History.TryGetValue(args.GridIndices, out var stack)) - return; - args.Cancelled = stack.Count >= _tileStackLimit; // greater or equals because the attempt itself counts as a tile we're trying to place - } } diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index 8b3ae16a1f..504576216a 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -38,7 +38,6 @@ public sealed class RCDSystem : EntitySystem [Dependency] private readonly SharedInteractionSystem _interaction = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly TurfSystem _turf = default!; - [Dependency] private readonly TileSystem _tile = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly IPrototypeManager _protoManager = default!; [Dependency] private readonly SharedMapSystem _mapSystem = default!; @@ -561,9 +560,10 @@ public sealed class RCDSystem : EntitySystem if (target == null) { - // Deconstruct tile, don't drop tile as item - if (_tile.DeconstructTile(tile, spawnItem: false)) - _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to set grid: {gridUid} tile: {position} open to space"); + // Deconstruct tile (either converts the tile to lattice, or removes lattice) + var tileDef = (_turf.GetContentTileDefinition(tile).ID != "Lattice") ? new Tile(_tileDefMan["Lattice"].TileId) : Tile.Empty; + _mapSystem.SetTile(gridUid, mapGrid, position, tileDef); + _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to set grid: {gridUid} tile: {position} open to space"); } else { diff --git a/Content.Shared/Tiles/FloorTileSystem.cs b/Content.Shared/Tiles/FloorTileSystem.cs index a2743ca6ca..2c6df5ce89 100644 --- a/Content.Shared/Tiles/FloorTileSystem.cs +++ b/Content.Shared/Tiles/FloorTileSystem.cs @@ -16,7 +16,6 @@ using Robust.Shared.Network; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; -using Robust.Shared.Prototypes; using Robust.Shared.Timing; namespace Content.Shared.Tiles; @@ -143,7 +142,7 @@ public sealed class FloorTileSystem : EntitySystem var baseTurf = (ContentTileDefinition) _tileDefinitionManager[tile.Tile.TypeId]; - if (CanPlaceOn(currentTileDefinition, baseTurf.ID)) + if (HasBaseTurf(currentTileDefinition, baseTurf.ID)) { if (!_stackSystem.TryUse((uid, stack), 1)) continue; @@ -153,7 +152,7 @@ public sealed class FloorTileSystem : EntitySystem return; } } - else if (HasBaseTurf(currentTileDefinition, new ProtoId(ContentTileDefinition.SpaceID))) + else if (HasBaseTurf(currentTileDefinition, ContentTileDefinition.SpaceID)) { if (!_stackSystem.TryUse((uid, stack), 1)) continue; @@ -172,35 +171,19 @@ public sealed class FloorTileSystem : EntitySystem } } - public bool HasBaseTurf(ContentTileDefinition tileDef, ProtoId baseTurf) + public bool HasBaseTurf(ContentTileDefinition tileDef, string baseTurf) { return tileDef.BaseTurf == baseTurf; } - private bool CanPlaceOn(ContentTileDefinition tileDef, ProtoId currentTurfId) - { - //Check exact BaseTurf match - if (tileDef.BaseTurf == currentTurfId) - return true; - - // Check whitelist match - if (tileDef.BaseWhitelist.Count > 0 && tileDef.BaseWhitelist.Contains(currentTurfId)) - return true; - - return false; - } - private void PlaceAt(EntityUid user, EntityUid gridUid, MapGridComponent mapGrid, EntityCoordinates location, ushort tileId, SoundSpecifier placeSound, float offset = 0) { _adminLogger.Add(LogType.Tile, LogImpact.Low, $"{ToPrettyString(user):actor} placed tile {_tileDefinitionManager[tileId].Name} at {ToPrettyString(gridUid)} {location}"); - var tileDef = (ContentTileDefinition) _tileDefinitionManager[tileId]; - var random = new System.Random((int)_timing.CurTick.Value); - var variant = _tile.PickVariant(tileDef, random); - - var tileRef = _map.GetTileRef(gridUid, mapGrid, location.Offset(new Vector2(offset, offset))); - _tile.ReplaceTile(tileRef, tileDef, gridUid, mapGrid, variant: variant); + var random = new System.Random((int) _timing.CurTick.Value); + var variant = _tile.PickVariant((ContentTileDefinition) _tileDefinitionManager[tileId], random); + _map.SetTile(gridUid, mapGrid,location.Offset(new Vector2(offset, offset)), new Tile(tileId, 0, variant)); _audio.PlayPredicted(placeSound, location, user); } diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index 52657990d1..de0f0dd9b4 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -1,31 +1,5 @@ -- type: tile - id: BaseStationTile - abstract: true - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor - heatCapacity: 10000 - baseTurf: Plating - baseWhitelist: - - PlatingBrass - - FloorAsteroidIronsand - - FloorAsteroidSand - - FloorAsteroidSandBorderless - - FloorAsteroidIronsandBorderless - - FloorAsteroidSandRedBorderless - - PlatingAsteroid - - PlatingSnow - - FloorPlanetDirt - - FloorDesert - - FloorLowDesert - - FloorPlanetGrass - - FloorSnow - - FloorDirt - - type: tile id: FloorSteel - parent: BaseStationTile name: tiles-steel-floor sprite: /Textures/Tiles/steel.png variants: 4 @@ -34,11 +8,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemSteel + heatCapacity: 10000 - type: tile id: FloorSteelCheckerLight - parent: BaseStationTile name: tiles-steel-floor-checker-light sprite: /Textures/Tiles/cafeteria.png variants: 4 @@ -47,11 +26,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerLight + heatCapacity: 10000 - type: tile id: FloorSteelCheckerDark - parent: BaseStationTile name: tiles-steel-floor-checker-dark sprite: /Textures/Tiles/checker_dark.png variants: 4 @@ -60,11 +44,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerDark + heatCapacity: 10000 - type: tile id: FloorSteelMini - parent: BaseStationTile name: tiles-steel-floor-mini sprite: /Textures/Tiles/steel_mini.png variants: 4 @@ -73,11 +62,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemSteelMini + heatCapacity: 10000 - type: tile id: FloorSteelPavement - parent: BaseStationTile name: tiles-steel-floor-pavement sprite: /Textures/Tiles/steel_pavement.png variants: 4 @@ -86,11 +80,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemSteelPavement + heatCapacity: 10000 - type: tile id: FloorSteelDiagonal - parent: BaseStationTile name: tiles-steel-floor-diagonal sprite: /Textures/Tiles/steel_diagonal.png variants: 4 @@ -99,18 +98,28 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemSteelDiagonal + heatCapacity: 10000 - type: tile id: FloorSteelOffset - parent: BaseStationTile name: tiles-steel-floor-offset sprite: /Textures/Tiles/steel_offset.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemSteelOffset + heatCapacity: 10000 - type: tile id: FloorSteelMono - parent: BaseStationTile name: tiles-steel-floor-mono sprite: /Textures/Tiles/steel_mono.png variants: 4 @@ -119,11 +128,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepTile itemDrop: FloorTileItemSteelMono + heatCapacity: 10000 - type: tile id: FloorSteelPavementVertical - parent: BaseStationTile name: tiles-steel-floor-pavement-vertical sprite: /Textures/Tiles/steel_pavement_vertical.png variants: 4 @@ -132,11 +146,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepTile itemDrop: FloorTileItemSteelPavementVertical + heatCapacity: 10000 - type: tile id: FloorSteelHerringbone - parent: BaseStationTile name: tiles-steel-floor-herringbone sprite: /Textures/Tiles/steel_herringbone.png variants: 4 @@ -145,11 +164,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepTile itemDrop: FloorTileItemSteelHerringbone + heatCapacity: 10000 - type: tile id: FloorSteelDiagonalMini - parent: BaseStationTile name: tiles-steel-floor-diagonal-mini sprite: /Textures/Tiles/steel_diagonal_mini.png variants: 4 @@ -158,29 +182,40 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepTile itemDrop: FloorTileItemSteelDiagonalMini + heatCapacity: 10000 - type: tile id: FloorBrassFilled - parent: BaseStationTile name: tiles-brass-floor-filled sprite: /Textures/Tiles/Misc/clockwork/clockwork_floor_filled.png + baseTurf: PlatingBrass + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemBrassFilled + heatCapacity: 10000 - type: tile id: FloorBrassReebe - parent: BaseStationTile name: tiles-brass-floor-reebe sprite: /Textures/Tiles/Misc/clockwork/reebe.png + baseTurf: PlatingBrass + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemBrassReebe + heatCapacity: 10000 - type: tile id: FloorPlastic - parent: BaseStationTile name: tiles-plastic-floor sprite: /Textures/Tiles/plastic.png variants: 4 @@ -189,11 +224,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemSteel + heatCapacity: 10000 - type: tile id: FloorWood - parent: BaseStationTile name: tiles-wood sprite: /Textures/Tiles/wood.png variants: 4 @@ -202,15 +242,18 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepWood barestepSounds: collection: BarestepWood itemDrop: FloorTileItemWood + heatCapacity: 10000 - type: tile id: FloorWhite - parent: BaseStationTile name: tiles-white-floor sprite: /Textures/Tiles/white.png variants: 4 @@ -219,13 +262,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhite + heatCapacity: 10000 - type: tile id: FloorWhiteMini - parent: BaseStationTile name: tiles-white-floor-mini sprite: /Textures/Tiles/white_mini.png variants: 4 @@ -234,13 +280,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteMini + heatCapacity: 10000 - type: tile id: FloorWhitePavement - parent: BaseStationTile name: tiles-white-floor-pavement sprite: /Textures/Tiles/white_pavement.png variants: 4 @@ -249,13 +298,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhitePavement + heatCapacity: 10000 - type: tile id: FloorWhiteDiagonal - parent: BaseStationTile name: tiles-white-floor-diagonal sprite: /Textures/Tiles/white_diagonal.png variants: 4 @@ -264,22 +316,28 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteDiagonal + heatCapacity: 10000 - type: tile id: FloorWhiteOffset - parent: BaseStationTile name: tiles-white-floor-offset sprite: /Textures/Tiles/white_offset.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteOffset + heatCapacity: 10000 - type: tile id: FloorWhiteMono - parent: BaseStationTile name: tiles-white-floor-mono sprite: /Textures/Tiles/white_mono.png variants: 4 @@ -288,13 +346,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteMono + heatCapacity: 10000 - type: tile id: FloorWhitePavementVertical - parent: BaseStationTile name: tiles-white-floor-pavement-vertical sprite: /Textures/Tiles/white_pavement_vertical.png variants: 4 @@ -303,13 +364,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhitePavementVertical + heatCapacity: 10000 - type: tile id: FloorWhiteHerringbone - parent: BaseStationTile name: tiles-white-floor-herringbone sprite: /Textures/Tiles/white_herringbone.png variants: 4 @@ -318,13 +382,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteHerringbone + heatCapacity: 10000 - type: tile id: FloorWhiteDiagonalMini - parent: BaseStationTile name: tiles-white-floor-diagonal-mini sprite: /Textures/Tiles/white_diagonal_mini.png variants: 4 @@ -333,13 +400,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteDiagonalMini + heatCapacity: 10000 - type: tile id: FloorWhitePlastic - parent: BaseStationTile name: tiles-plastic-white-floor sprite: /Textures/Tiles/white_plastic.png variants: 4 @@ -348,13 +418,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhite + heatCapacity: 10000 - type: tile id: FloorDark - parent: BaseStationTile name: tiles-dark-floor sprite: /Textures/Tiles/dark.png variants: 4 @@ -363,13 +436,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDark + heatCapacity: 10000 - type: tile id: FloorDarkMini - parent: BaseStationTile name: tiles-dark-floor-mini sprite: /Textures/Tiles/dark_mini.png variants: 4 @@ -378,13 +454,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkMini + heatCapacity: 10000 - type: tile id: FloorDarkPavement - parent: BaseStationTile name: tiles-dark-floor-pavement sprite: /Textures/Tiles/dark_pavement.png variants: 4 @@ -393,13 +472,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkPavement + heatCapacity: 10000 - type: tile id: FloorDarkDiagonal - parent: BaseStationTile name: tiles-dark-floor-diagonal sprite: /Textures/Tiles/dark_diagonal.png variants: 4 @@ -408,22 +490,28 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkDiagonal + heatCapacity: 10000 - type: tile id: FloorDarkOffset - parent: BaseStationTile name: tiles-dark-floor-offset sprite: /Textures/Tiles/dark_offset.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkOffset + heatCapacity: 10000 - type: tile id: FloorDarkMono - parent: BaseStationTile name: tiles-dark-floor-mono sprite: /Textures/Tiles/dark_mono.png variants: 4 @@ -432,13 +520,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkMono + heatCapacity: 10000 - type: tile id: FloorDarkPavementVertical - parent: BaseStationTile name: tiles-dark-floor-pavement-vertical sprite: /Textures/Tiles/dark_pavement_vertical.png variants: 4 @@ -447,13 +538,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkPavementVertical + heatCapacity: 10000 - type: tile id: FloorDarkHerringbone - parent: BaseStationTile name: tiles-dark-floor-herringbone sprite: /Textures/Tiles/dark_herringbone.png variants: 4 @@ -462,13 +556,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkHerringbone + heatCapacity: 10000 - type: tile id: FloorDarkDiagonalMini - parent: BaseStationTile name: tiles-dark-floor-diagonal-mini sprite: /Textures/Tiles/dark_diagonal_mini.png variants: 4 @@ -477,13 +574,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkDiagonalMini + heatCapacity: 10000 - type: tile id: FloorDarkPlastic - parent: BaseStationTile name: tiles-plastic-dark-floor sprite: /Textures/Tiles/dark_plastic.png variants: 4 @@ -492,58 +592,76 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDark + heatCapacity: 10000 - type: tile id: FloorTechMaint - parent: BaseStationTile name: tiles-techmaint-floor sprite: /Textures/Tiles/tech_maint.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemTechmaint + heatCapacity: 10000 - type: tile id: FloorTechMaintDark - parent: BaseStationTile name: tiles-techmaint-floor-dark sprite: /Textures/Tiles/tech_maint_dark.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemTechmaintDark + heatCapacity: 10000 - type: tile id: FloorReinforced - parent: BaseStationTile name: tiles-reinforced-floor sprite: /Textures/Tiles/reinforced.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: PartRodMetal1 + heatCapacity: 10000 - type: tile id: FloorMono - parent: BaseStationTile name: tiles-mono-floor sprite: /Textures/Tiles/mono.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemMono + heatCapacity: 10000 - type: tile id: FloorLino - parent: BaseStationTile name: tiles-linoleum-floor sprite: /Textures/Tiles/lino.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemLino + heatCapacity: 10000 - type: tile id: FloorSteelDirty - parent: BaseStationTile name: tiles-dirty-steel-floor sprite: /Textures/Tiles/steel_dirty.png variants: 4 @@ -552,49 +670,64 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepPlating itemDrop: FloorTileItemDirty + heatCapacity: 10000 - type: tile id: FloorElevatorShaft - parent: BaseStationTile name: tiles-elevator-shaft sprite: /Textures/Tiles/elevator_shaft.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemElevatorShaft + heatCapacity: 10000 - type: tile id: FloorMetalDiamond - parent: BaseStationTile name: tiles-diamond-plate-floor sprite: /Textures/Tiles/metaldiamond.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemMetalDiamond + heatCapacity: 10000 - type: tile id: FloorRockVault - parent: BaseStationTile name: tiles-rock-floor sprite: /Textures/Tiles/rock_vault.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepAsteroid itemDrop: FloorTileItemRockVault + heatCapacity: 10000 - type: tile id: FloorBlue - parent: BaseStationTile name: tiles-blue-tile sprite: /Textures/Tiles/blue.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemBlue + heatCapacity: 10000 - type: tile id: FloorSteelLime - parent: BaseStationTile name: tiles-lime-floor sprite: /Textures/Tiles/lime.png variants: 4 @@ -603,62 +736,89 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemLime + heatCapacity: 10000 - type: tile id: FloorMining - parent: BaseStationTile name: tiles-mining-tile sprite: /Textures/Tiles/mining_floor.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemMining + heatCapacity: 10000 - type: tile id: FloorMiningDark - parent: BaseStationTile name: tiles-mining-dark-tile sprite: /Textures/Tiles/mining_floor_dark.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemMiningDark + heatCapacity: 10000 - type: tile id: FloorMiningLight - parent: BaseStationTile name: tiles-mining-light-tile sprite: /Textures/Tiles/mining_floor_light.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemMiningLight + heatCapacity: 10000 # Departmental - type: tile id: FloorFreezer - parent: BaseStationTile name: tiles-freezer sprite: /Textures/Tiles/freezer.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemFreezer + heatCapacity: 10000 - type: tile id: FloorShowroom - parent: BaseStationTile name: tiles-showroom-floor sprite: /Textures/Tiles/showroom.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemShowroom + heatCapacity: 10000 - type: tile id: FloorHydro - parent: BaseStationTile name: tiles-hydro-floor sprite: /Textures/Tiles/hydro.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemHydro + heatCapacity: 10000 - type: tile id: FloorBar - parent: BaseStationTile name: tiles-bar-floor sprite: /Textures/Tiles/bar.png variants: 4 @@ -667,43 +827,64 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemBar + heatCapacity: 10000 - type: tile id: FloorClown - parent: BaseStationTile name: tiles-clown-floor sprite: /Textures/Tiles/clown.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemClown + heatCapacity: 10000 - type: tile id: FloorMime - parent: BaseStationTile name: tiles-mime-floor sprite: /Textures/Tiles/mime.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemMime + heatCapacity: 10000 - type: tile id: FloorKitchen - parent: BaseStationTile name: tiles-kitchen-floor sprite: /Textures/Tiles/kitchen.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemKitchen + heatCapacity: 10000 - type: tile id: FloorLaundry - parent: BaseStationTile name: tiles-laundry-floor sprite: /Textures/Tiles/laundry.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemLaundry + heatCapacity: 10000 - type: tile id: FloorSteelDamaged - parent: BaseStationTile name: tiles-steel-floor sprite: /Textures/Tiles/steel_damaged.png variants: 5 @@ -713,12 +894,17 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemSteel #This should probably be made null when it becomes possible to make it such, in SS13 prying destroyed tiles wouldn't give you anything. + heatCapacity: 10000 # Concrete - type: tile id: FloorConcrete - parent: BaseStationTile name: tiles-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/concrete.png variants: 4 @@ -727,13 +913,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemConcrete + heatCapacity: 10000 - type: tile id: FloorConcreteMono - parent: BaseStationTile name: tiles-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/concrete_mono.png variants: 4 @@ -742,13 +931,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemConcreteMono + heatCapacity: 10000 - type: tile id: FloorConcreteSmooth - parent: BaseStationTile name: tiles-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/concrete_smooth.png variants: 4 @@ -757,13 +949,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemConcreteSmooth + heatCapacity: 10000 - type: tile id: FloorGrayConcrete - parent: BaseStationTile name: tiles-gray-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/grayconcrete.png variants: 4 @@ -772,13 +967,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGrayConcrete + heatCapacity: 10000 - type: tile id: FloorGrayConcreteMono - parent: BaseStationTile name: tiles-gray-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/grayconcrete_mono.png variants: 4 @@ -787,13 +985,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGrayConcreteMono + heatCapacity: 10000 - type: tile id: FloorGrayConcreteSmooth - parent: BaseStationTile name: tiles-gray-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/grayconcrete_smooth.png variants: 4 @@ -802,13 +1003,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGrayConcreteSmooth + heatCapacity: 10000 - type: tile id: FloorOldConcrete - parent: BaseStationTile name: tiles-old-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/oldconcrete.png variants: 4 @@ -817,13 +1021,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemOldConcrete + heatCapacity: 10000 - type: tile id: FloorOldConcreteMono - parent: BaseStationTile name: tiles-old-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/oldconcrete_mono.png variants: 4 @@ -832,13 +1039,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemOldConcreteMono + heatCapacity: 10000 - type: tile id: FloorOldConcreteSmooth - parent: BaseStationTile name: tiles-old-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/oldconcrete_smooth.png variants: 4 @@ -847,86 +1057,107 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemOldConcreteSmooth + heatCapacity: 10000 # Carpets (non smoothing) - type: tile id: FloorArcadeBlue - parent: BaseStationTile name: tiles-blue-arcade-floor sprite: /Textures/Tiles/arcadeblue.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemArcadeBlue + heatCapacity: 10000 - type: tile id: FloorArcadeBlue2 - parent: BaseStationTile name: tiles-blue-arcade-floor sprite: /Textures/Tiles/arcadeblue2.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemArcadeBlue2 + heatCapacity: 10000 - type: tile id: FloorArcadeRed - parent: BaseStationTile name: tiles-red-arcade-floor sprite: /Textures/Tiles/arcadered.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemArcadeRed + heatCapacity: 10000 - type: tile id: FloorEighties - parent: BaseStationTile name: tiles-eighties-floor sprite: /Textures/Tiles/eighties.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemEighties + heatCapacity: 10000 - type: tile id: FloorCarpetClown - parent: BaseStationTile name: tiles-clown-carpet-floor sprite: /Textures/Tiles/carpetclown.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemCarpetClown + heatCapacity: 10000 - type: tile id: FloorCarpetOffice - parent: BaseStationTile name: tiles-office-carpet-floor sprite: /Textures/Tiles/carpetoffice.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemCarpetOffice + heatCapacity: 10000 - type: tile id: FloorBoxing - parent: BaseStationTile name: tiles-boxing-ring-floor sprite: /Textures/Tiles/boxing.png variants: 4 @@ -935,12 +1166,17 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor friction: 1.25 itemDrop: FloorTileItemBoxing + heatCapacity: 10000 - type: tile id: FloorGym - parent: BaseStationTile name: tiles-gym-floor sprite: /Textures/Tiles/gym.png variants: 4 @@ -949,13 +1185,18 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor friction: 1.25 itemDrop: FloorTileItemGym + heatCapacity: 10000 # Shuttle - type: tile id: FloorShuttleWhite - parent: BaseStationTile name: tiles-white-shuttle-floor sprite: /Textures/Tiles/shuttlewhite.png variants: 4 @@ -964,11 +1205,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemShuttleWhite + heatCapacity: 10000 - type: tile id: FloorShuttleGrey - parent: BaseStationTile name: tiles-grey-shuttle-floor sprite: /Textures/Tiles/shuttlegrey.png variants: 4 @@ -977,11 +1223,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemShuttleGrey + heatCapacity: 10000 - type: tile id: FloorShuttleBlack - parent: BaseStationTile name: tiles-black-shuttle-floor sprite: /Textures/Tiles/shuttleblack.png variants: 4 @@ -990,11 +1241,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemShuttleBlack + heatCapacity: 10000 - type: tile id: FloorShuttleBlue - parent: BaseStationTile name: tiles-blue-shuttle-floor sprite: /Textures/Tiles/shuttleblue.png variants: 4 @@ -1003,11 +1259,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemShuttleBlue + heatCapacity: 10000 - type: tile id: FloorShuttleOrange - parent: BaseStationTile name: tiles-orange-shuttle-floor sprite: /Textures/Tiles/shuttleorange.png variants: 4 @@ -1016,11 +1277,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemShuttleOrange + heatCapacity: 10000 - type: tile id: FloorShuttlePurple - parent: BaseStationTile name: tiles-purple-shuttle-floor sprite: /Textures/Tiles/shuttlepurple.png variants: 4 @@ -1029,11 +1295,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemShuttlePurple + heatCapacity: 10000 - type: tile id: FloorShuttleRed - parent: BaseStationTile name: tiles-red-shuttle-floor sprite: /Textures/Tiles/shuttlered.png variants: 4 @@ -1042,31 +1313,42 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemShuttleRed + heatCapacity: 10000 # Materials - type: tile id: FloorGold - parent: BaseStationTile name: tiles-gold-tile sprite: /Textures/Tiles/gold.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGold + heatCapacity: 10000 - type: tile id: FloorSilver - parent: BaseStationTile name: tiles-silver-tile sprite: /Textures/Tiles/silver.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemSilver + heatCapacity: 10000 - type: tile id: FloorGlass - parent: BaseStationTile name: tiles-glass-floor sprite: /Textures/Tiles/glass.png variants: 4 @@ -1075,13 +1357,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: SheetGlass1 + heatCapacity: 10000 - type: tile id: FloorRGlass - parent: BaseStationTile name: tiles-reinforced-glass-floor sprite: /Textures/Tiles/rglass.png variants: 4 @@ -1090,49 +1375,65 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: SheetRGlass1 + heatCapacity: 10000 - type: tile id: FloorMetalFoam - parent: BaseStationTile name: tiles-metal-foam sprite: /Textures/Tiles/foammetal.png variants: 1 placementVariants: - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: SheetSteel1 + heatCapacity: 10000 # Circuits - type: tile id: FloorGreenCircuit - parent: BaseStationTile name: tiles-green-circuit-floor sprite: /Textures/Tiles/green_circuit.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemGCircuit + heatCapacity: 10000 - type: tile id: FloorBlueCircuit - parent: BaseStationTile name: tiles-blue-circuit-floor sprite: /Textures/Tiles/blue_circuit.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemBCircuit + heatCapacity: 10000 - type: tile id: FloorRedCircuit - parent: BaseStationTile name: tiles-red-circuit-floor sprite: /Textures/Tiles/red_circuit.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemRCircuit + heatCapacity: 10000 # Terrain - type: tile @@ -1241,19 +1542,19 @@ sprite: /Textures/Tiles/Asteroid/asteroid.png variants: 13 placementVariants: - - 0.8 - - 0.0166 #Should be roughly 20%.... I think??? I don't know dude, I'm just a YAML monkey. - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0116 - - 0.0116 + - 0.8 + - 0.0166 #Should be roughly 20%.... I think??? I don't know dude, I'm just a YAML monkey. + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0116 + - 0.0116 baseTurf: Space isSubfloor: true footstepSounds: @@ -1492,7 +1793,6 @@ - type: tile id: FloorFlesh - parent: BaseStationTile name: tiles-flesh-floor sprite: /Textures/Tiles/meat.png variants: 4 @@ -1501,23 +1801,29 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepBlood itemDrop: FloorTileItemFlesh friction: 0.25 #slippy + heatCapacity: 10000 - type: tile id: FloorTechMaint2 - parent: BaseStationTile name: tiles-techmaint2-floor sprite: /Textures/Tiles/steel_maint.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemSteelMaint + heatCapacity: 10000 - type: tile id: FloorTechMaint3 - parent: BaseStationTile name: tiles-techmaint3-floor sprite: /Textures/Tiles/grating_maint.png variants: 4 @@ -1526,13 +1832,16 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemGratingMaint + heatCapacity: 10000 - type: tile id: FloorWoodTile - parent: BaseStationTile name: tiles-wood2 sprite: /Textures/Tiles/wood_tile.png variants: 4 @@ -1541,15 +1850,18 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepWood barestepSounds: collection: BarestepWood itemDrop: FloorTileItemWoodPattern + heatCapacity: 10000 - type: tile id: FloorBrokenWood - parent: BaseStationTile name: tiles-wood3 sprite: /Textures/Tiles/wood_broken.png variants: 7 @@ -1561,22 +1873,29 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepWood barestepSounds: collection: BarestepWood itemDrop: MaterialWoodPlank1 + heatCapacity: 10000 - type: tile id: FloorWebTile - parent: BaseStationTile name: tiles-web sprite: /Textures/Tiles/Misc/Web/web_tile.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet itemDrop: FloorTileItemWeb + heatCapacity: 10000 - type: tile id: FloorChromite @@ -1600,18 +1919,21 @@ #Hull tiles - type: tile id: FloorHull - parent: BaseStationTile name: tiles-hull sprite: /Textures/Tiles/hull.png + baseTurf: Plating + isSubfloor: false footstepSounds: collection: FootstepHull itemDrop: FloorTileItemSteel #probably should not be normally obtainable, but the game shits itself and dies when you try to put null here + heatCapacity: 10000 - type: tile id: FloorHullReinforced - parent: BaseStationTile name: tiles-hull-reinforced sprite: /Textures/Tiles/hull_reinforced.png + baseTurf: Plating + isSubfloor: false footstepSounds: collection: FootstepHull itemDrop: FloorTileItemSteel @@ -1620,9 +1942,10 @@ - type: tile id: FloorReinforcedHardened - parent: BaseStationTile name: tiles-super-reinforced-floor sprite: /Textures/Tiles/super_reinforced.png + baseTurf: Plating + isSubfloor: false footstepSounds: collection: FootstepHull itemDrop: PartRodMetal1 #same case as FloorHull @@ -1632,7 +1955,6 @@ # Grass - type: tile id: FloorAstroGrass - parent: BaseStationTile name: tiles-astro-grass sprite: /Textures/Tiles/Planet/Grass/grass.png variants: 4 @@ -1651,23 +1973,28 @@ East: /Textures/Tiles/Planet/Grass/double_edge.png North: /Textures/Tiles/Planet/Grass/double_edge.png West: /Textures/Tiles/Planet/Grass/double_edge.png + baseTurf: Plating + isSubfloor: false deconstructTools: [ Cutting ] footstepSounds: collection: FootstepGrass itemDrop: FloorTileItemAstroGrass + heatCapacity: 10000 - type: tile id: FloorMowedAstroGrass - parent: [ BaseStationTile, FloorGrass ] name: tiles-mowed-astro-grass + parent: FloorGrass + baseTurf: Plating isSubfloor: false deconstructTools: [ Cutting ] itemDrop: FloorTileItemMowedAstroGrass - type: tile id: FloorJungleAstroGrass - parent: [ BaseStationTile, FloorGrassJungle ] name: tiles-jungle-astro-grass + parent: FloorGrassJungle + baseTurf: Plating isSubfloor: false deconstructTools: [ Cutting ] itemDrop: FloorTileItemJungleAstroGrass @@ -1693,18 +2020,22 @@ # Ice - type: tile id: FloorAstroIce - parent: BaseStationTile name: tiles-astro-ice sprite: /Textures/Tiles/Planet/Snow/ice.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] friction: 0.05 + heatCapacity: 10000 mobFriction: 0.05 mobAcceleration: 0.1 itemDrop: FloorTileItemAstroIce - type: tile id: FloorAstroSnow - parent: [ BaseStationTile, FloorSnow ] name: tiles-astro-snow + parent: FloorSnow + baseTurf: Plating isSubfloor: false deconstructTools: [ Prying ] itemDrop: FloorTileItemAstroSnow @@ -1712,8 +2043,9 @@ # Asteroid Sand - type: tile id: FloorAstroAsteroidSand - parent: [ BaseStationTile, FloorAsteroidSand ] name: tiles-astro-asteroid-sand + parent: FloorAsteroidSand + baseTurf: Plating isSubfloor: false deconstructTools: [ Prying ] itemDrop: FloorTileItemAstroAsteroidSand @@ -1721,8 +2053,9 @@ - type: tile id: FloorAstroAsteroidSandBorderless - parent: [ BaseStationTile, FloorAsteroidSandBorderless ] name: tiles-astro-asteroid-sand-borderless + parent: FloorAsteroidSandBorderless + baseTurf: Plating isSubfloor: false deconstructTools: [ Prying ] itemDrop: FloorTileItemAstroAsteroidSand @@ -1760,7 +2093,6 @@ - type: tile id: FloorWoodLarge - parent: BaseStationTile name: tiles-wood-large sprite: /Textures/Tiles/wood_large.png variants: 4 @@ -1769,11 +2101,15 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepWood barestepSounds: collection: BarestepWood itemDrop: FloorTileItemWoodLarge + heatCapacity: 10000 - type: tile id: FloorXenoborg @@ -1789,36 +2125,44 @@ - type: tile id: FloorXeno - parent: BaseStationTile name: tiles-xeno-floor sprite: /Textures/Tiles/xeno_flooring.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepBlood itemDrop: FloorTileItemXeno + heatCapacity: 10000 - type: tile id: FloorXenoSteel - parent: BaseStationTile name: tiles-xeno-steel sprite: /Textures/Tiles/xeno_steel.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemXenoSteel + heatCapacity: 10000 allowRotationMirror: true - type: tile id: FloorXenoSteelCorner - parent: BaseStationTile name: tiles-xeno-steel-corner sprite: /Textures/Tiles/xeno_steel_corner.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemXenoSteelCorner + heatCapacity: 10000 allowRotationMirror: true - type: tile id: FloorDarkSquiggly - parent: BaseStationTile name: tiles-dark-squiggly sprite: /Textures/Tiles/dark_squiggly.png variants: 4 @@ -1827,21 +2171,29 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor itemDrop: FloorTileItemDarkSquiggly + heatCapacity: 10000 allowRotationMirror: true - type: tile id: FloorXenoMaint - parent: BaseStationTile name: tiles-xeno-maint sprite: /Textures/Tiles/xeno_maint.png + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemXenoMaint + heatCapacity: 10000 - type: tile id: FloorWhiteMarble - parent: BaseStationTile name: tiles-white-marble sprite: /Textures/Tiles/white_marble.png variants: 8 @@ -1854,14 +2206,17 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile friction: 0.8 itemDrop: FloorTileItemWhiteMarble + heatCapacity: 10000 - type: tile id: FloorDarkMarble - parent: BaseStationTile name: tiles-dark-marble sprite: /Textures/Tiles/dark_marble.png variants: 8 @@ -1874,14 +2229,17 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile friction: 0.8 itemDrop: FloorTileItemDarkMarble + heatCapacity: 10000 - type: tile id: FloorPlasmaMarble - parent: BaseStationTile name: tiles-plasma-marble sprite: /Textures/Tiles/plasmarble.png variants: 8 @@ -1894,14 +2252,17 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile friction: 0.8 itemDrop: FloorTileItemPlasmaMarble + heatCapacity: 10000 - type: tile id: FloorUraniumMarble - parent: BaseStationTile name: tiles-uranium-marble sprite: /Textures/Tiles/uranium_marble.png variants: 8 @@ -1914,7 +2275,11 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile friction: 0.8 itemDrop: FloorTileItemUraniumMarble + heatCapacity: 10000 diff --git a/Resources/Prototypes/Tiles/planet.yml b/Resources/Prototypes/Tiles/planet.yml index 15134868b5..f0ef0f1346 100644 --- a/Resources/Prototypes/Tiles/planet.yml +++ b/Resources/Prototypes/Tiles/planet.yml @@ -1,16 +1,5 @@ -- type: tile - id: BaseFloorPlanet - abstract: true - heatCapacity: 10000 - isSubfloor: true - footstepSounds: - collection: FootstepAsteroid - weather: true - indestructible: true - - type: tile id: FloorPlanetDirt - parent: BaseFloorPlanet name: tiles-dirt-planet-floor sprite: /Textures/Tiles/Planet/dirt.rsi/dirt.png variants: 4 @@ -19,11 +8,16 @@ - 1.0 - 1.0 - 1.0 + isSubfloor: true + footstepSounds: + collection: FootstepAsteroid + heatCapacity: 10000 + weather: true + indestructible: true # Desert - type: tile id: FloorDesert - parent: BaseFloorPlanet name: tiles-desert-floor sprite: /Textures/Tiles/Planet/Desert/desert.png variants: 6 @@ -34,6 +28,12 @@ - 1.0 - 1.0 - 1.0 + isSubfloor: true + footstepSounds: + collection: FootstepAsteroid + heatCapacity: 10000 + weather: true + indestructible: true - type: tile id: FloorLowDesert @@ -47,11 +47,16 @@ - 1.0 - 1.0 - 1.0 + isSubfloor: true + footstepSounds: + collection: FootstepAsteroid + heatCapacity: 10000 + weather: true + indestructible: true # Grass - type: tile id: FloorPlanetGrass - parent: BaseFloorPlanet name: tiles-grass-planet-floor sprite: /Textures/Tiles/Planet/Grass/grass.png variants: 4 @@ -71,20 +76,29 @@ North: /Textures/Tiles/Planet/Grass/double_edge.png West: /Textures/Tiles/Planet/Grass/double_edge.png baseTurf: FloorPlanetDirt + isSubfloor: true footstepSounds: collection: FootstepGrass + itemDrop: FloorTileItemGrass + heatCapacity: 10000 + weather: true + indestructible: true # Lava - type: tile id: FloorBasalt name: tiles-basalt-floor - parent: BaseFloorPlanet sprite: /Textures/Tiles/Planet/basalt.png + isSubfloor: true + footstepSounds: + collection: FootstepAsteroid + heatCapacity: 10000 + weather: true + indestructible: true # Snow - type: tile id: FloorSnow - parent: BaseFloorPlanet name: tiles-snow sprite: /Textures/Tiles/Planet/Snow/snow.png variants: 13 @@ -108,8 +122,12 @@ East: /Textures/Tiles/Planet/Snow/snow_double_edge_east.png North: /Textures/Tiles/Planet/Snow/snow_double_edge_north.png West: /Textures/Tiles/Planet/Snow/snow_double_edge_west.png + isSubfloor: true footstepSounds: collection: FootstepSnow + heatCapacity: 10000 + weather: true + indestructible: true # Ice - type: tile @@ -126,7 +144,6 @@ # Dug snow - type: tile id: FloorSnowDug - parent: BaseFloorPlanet name: tiles-snow-dug sprite: /Textures/Tiles/Planet/Snow/snow_dug.png edgeSpritePriority: 1 @@ -135,7 +152,11 @@ East: /Textures/Tiles/Planet/Snow/snow_dug_double_edge_east.png North: /Textures/Tiles/Planet/Snow/snow_dug_double_edge_north.png West: /Textures/Tiles/Planet/Snow/snow_dug_double_edge_west.png + isSubfloor: true footstepSounds: collection: FootstepSnow + heatCapacity: 10000 + weather: true + indestructible: true # Wasteland diff --git a/Resources/Prototypes/Tiles/plating.yml b/Resources/Prototypes/Tiles/plating.yml index 910f941bee..2a85222c3a 100644 --- a/Resources/Prototypes/Tiles/plating.yml +++ b/Resources/Prototypes/Tiles/plating.yml @@ -1,24 +1,16 @@ - type: tile - id: BasePlating - abstract: true - friction: 1.5 - heatCapacity: 10000 - isSubfloor: true - footstepSounds: - collection: FootstepPlating - baseTurf: Lattice - baseWhitelist: - - TrainLattice - -- type: tile id: Plating - parent: BasePlating name: tiles-plating sprite: /Textures/Tiles/plating.png + baseTurf: Lattice + isSubfloor: true + footstepSounds: + collection: FootstepPlating + friction: 1.5 + heatCapacity: 10000 - type: tile id: PlatingDamaged - parent: BasePlating name: tiles-plating sprite: /Textures/Tiles/plating_damaged.png variants: 3 @@ -26,25 +18,45 @@ - 1.0 - 1.0 - 1.0 + baseTurf: Lattice + isSubfloor: true + footstepSounds: + collection: FootstepPlating + friction: 1.5 + heatCapacity: 10000 - type: tile id: PlatingAsteroid - parent: BasePlating name: tiles-asteroid-plating sprite: /Textures/Tiles/Asteroid/asteroid_plating.png + baseTurf: Lattice + isSubfloor: true + footstepSounds: + collection: FootstepPlating + friction: 1.5 + heatCapacity: 10000 - type: tile id: PlatingBrass - parent: BasePlating name: tiles-brass-plating sprite: /Textures/Tiles/Misc/clockwork/clockwork_floor.png + baseTurf: Lattice + isSubfloor: true + footstepSounds: + collection: FootstepPlating + friction: 1.5 + heatCapacity: 10000 - type: tile id: PlatingSnow name: tiles-snow-plating - parent: BasePlating sprite: /Textures/Tiles/snow_plating.png #Not in the snow planet RSI because it doesn't have any metadata. Should probably be moved to its own folder later. + baseTurf: Lattice + isSubfloor: true + footstepSounds: + collection: FootstepPlating friction: 0.75 #a little less then actual snow + heatCapacity: 10000 - type: tile id: PlatingIronsand @@ -75,8 +87,16 @@ - type: tile id: TrainLattice - parent: Lattice name: tiles-lattice-train sprite: /Textures/Tiles/latticeTrain.png + baseTurf: Space + isSubfloor: true + deconstructTools: [ Cutting ] + weather: true footstepSounds: collection: FootstepPlating + friction: 1.5 + isSpace: true + itemDrop: PartRodMetal1 + heatCapacity: 10000 + mass: 200