diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index 7b0b357041d..3aaa5429fb0 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -12,14 +12,9 @@ public sealed partial class AtmosphereSystem public float SpaceWindPressureForceDivisorPush { get; private set; } public float SpaceWindMaxVelocity { get; private set; } public float SpaceWindMaxPushForce { get; private set; } - public float SpaceWindMinimumCalculatedMass { get; private set; } - public float SpaceWindMaximumCalculatedInverseMass { get; private set; } - public bool MonstermosUseExpensiveAirflow { get; private set; } public bool MonstermosEqualization { get; private set; } public bool MonstermosDepressurization { get; private set; } public bool MonstermosRipTiles { get; private set; } - public float MonstermosRipTilesMinimumPressure { get; private set; } - public float MonstermosRipTilesPressureOffset { get; private set; } public bool GridImpulse { get; private set; } public float SpacingEscapeRatio { get; private set; } public float SpacingMinGas { get; private set; } @@ -46,14 +41,9 @@ private void InitializeCVars() Subs.CVar(_cfg, CCVars.SpaceWindPressureForceDivisorPush, value => SpaceWindPressureForceDivisorPush = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMaxVelocity, value => SpaceWindMaxVelocity = value, true); Subs.CVar(_cfg, CCVars.SpaceWindMaxPushForce, value => SpaceWindMaxPushForce = value, true); - Subs.CVar(_cfg, CCVars.SpaceWindMinimumCalculatedMass, value => SpaceWindMinimumCalculatedMass = value, true); - Subs.CVar(_cfg, CCVars.SpaceWindMaximumCalculatedInverseMass, value => SpaceWindMaximumCalculatedInverseMass = value, true); - Subs.CVar(_cfg, CCVars.MonstermosUseExpensiveAirflow, value => MonstermosUseExpensiveAirflow = value, true); Subs.CVar(_cfg, CCVars.MonstermosEqualization, value => MonstermosEqualization = value, true); Subs.CVar(_cfg, CCVars.MonstermosDepressurization, value => MonstermosDepressurization = value, true); Subs.CVar(_cfg, CCVars.MonstermosRipTiles, value => MonstermosRipTiles = value, true); - Subs.CVar(_cfg, CCVars.MonstermosRipTilesMinimumPressure, value => MonstermosRipTilesMinimumPressure = value, true); - Subs.CVar(_cfg, CCVars.MonstermosRipTilesPressureOffset, value => MonstermosRipTilesPressureOffset = value, true); Subs.CVar(_cfg, CCVars.AtmosGridImpulse, value => GridImpulse = value, true); Subs.CVar(_cfg, CCVars.AtmosSpacingEscapeRatio, value => SpacingEscapeRatio = value, true); Subs.CVar(_cfg, CCVars.AtmosSpacingMinGas, value => SpacingMinGas = value, true); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index c00a5df7475..cb50ff114e0 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -49,7 +49,8 @@ private void UpdateHighPressure(float frameTime) comp.Accumulator = 0f; toRemove.Add(ent); - if (TryComp(uid, out var body)) + if (HasComp(uid) && + TryComp(uid, out var body)) { _physics.SetBodyStatus(uid, body, BodyStatus.OnGround); } @@ -69,7 +70,7 @@ private void UpdateHighPressure(float frameTime) } } - private void AddMovedByPressure(EntityUid uid, MovedByPressureComponent component, PhysicsComponent body) + private void AddMobMovedByPressure(EntityUid uid, MovedByPressureComponent component, PhysicsComponent body) { if (!TryComp(uid, out var fixtures)) return; @@ -90,9 +91,6 @@ private void AddMovedByPressure(EntityUid uid, MovedByPressureComponent componen private void HighPressureMovements(Entity gridAtmosphere, TileAtmosphere tile, EntityQuery bodies, EntityQuery xforms, EntityQuery pressureQuery, EntityQuery metas) { - //!MAGIC EXIT CONDITION THAT MAKES ALMOST 200 LINES RUN 1/100TH AS OFTEN. - if (tile.PressureDifference < SpaceWindMinimumCalculatedMass * SpaceWindMinimumCalculatedMass) - return; // TODO ATMOS finish this // Don't play the space wind sound on tiles that are on fire... @@ -122,8 +120,7 @@ private void HighPressureMovements(Entity gridAtmospher var gridWorldRotation = xforms.GetComponent(gridAtmosphere).WorldRotation; // If we're using monstermos, smooth out the yeet direction to follow the flow - //WTF:This is bad, don't run this. It just makes the throws worse by somehow rounding them to orthogonal - if (!MonstermosEqualization) + if (MonstermosEqualization) { // We step through tiles according to the pressure direction on the current tile. // The goal is to get a general direction of the airflow in the area. @@ -163,7 +160,7 @@ private void HighPressureMovements(Entity gridAtmospher (entity, pressureMovements), gridAtmosphere.Comp.UpdateCounter, tile.PressureDifference, - tile.PressureDirection, + tile.PressureDirection, 0, tile.PressureSpecificTarget != null ? _mapSystem.ToCenterCoordinates(tile.GridIndex, tile.PressureSpecificTarget.GridIndices) : EntityCoordinates.Invalid, gridWorldRotation, xforms.GetComponent(entity), @@ -184,37 +181,12 @@ private void ConsiderPressureDifference(GridAtmosphereComponent gridAtmosphere, tile.PressureDirection = differenceDirection; } - //INFO:The EE version of this function drops pressureResistanceProbDelta, since it's not needed. If you are for whatever reason calling this function - //INFO:And it isn't working, you've probably still got the pressureResistanceProbDelta line included. - /// - /// EXPLANATION: - /// pressureDifference = Force of Air Flow on a given tile - /// physics.Mass = Mass of the object potentially being thrown - /// physics.InvMass = 1 divided by said Mass. More CPU efficient way to do division. - /// - /// Objects can only be thrown if the force of air flow is greater than the SQUARE of their mass or {SpaceWindMinimumCalculatedMass}, whichever is heavier - /// This means that the heavier an object is, the exponentially more force is required to move it - /// The force of a throw is equal to the force of air pressure, divided by an object's mass. So not only are heavier objects - /// less likely to be thrown, they are also harder to throw, - /// while lighter objects are yeeted easily, and from great distance. - /// - /// For a human sized entity with a standard weight of 80kg and a spacing between a hard vacuum and a room pressurized at 101kpa, - /// The human shall only be moved if he is either very close to the hole, or is standing in a region of high airflow - /// - /// - /// - /// - /// - /// - /// - /// - /// - public void ExperiencePressureDifference( Entity ent, int cycle, float pressureDifference, AtmosDirection direction, + float pressureResistanceProbDelta, EntityCoordinates throwTarget, Angle gridWorldRotation, TransformComponent? xform = null, @@ -227,28 +199,50 @@ public void ExperiencePressureDifference( if (!Resolve(uid, ref xform)) return; + // TODO ATMOS stuns? + + var maxForce = MathF.Sqrt(pressureDifference) * 2.25f; + var moveProb = 100f; - if (physics.BodyType != BodyType.Static - && !float.IsPositiveInfinity(component.MoveResist)) + if (component.PressureResistance > 0) + moveProb = MathF.Abs((pressureDifference / component.PressureResistance * MovedByPressureComponent.ProbabilityBasePercent) - + MovedByPressureComponent.ProbabilityOffset); + + // Can we yeet the thing (due to probability, strength, etc.) + if (moveProb > MovedByPressureComponent.ProbabilityOffset && _robustRandom.Prob(MathF.Min(moveProb / 100f, 1f)) + && !float.IsPositiveInfinity(component.MoveResist) + && (physics.BodyType != BodyType.Static + && (maxForce >= (component.MoveResist * MovedByPressureComponent.MoveForcePushRatio))) + || (physics.BodyType == BodyType.Static && (maxForce >= (component.MoveResist * MovedByPressureComponent.MoveForceForcePushRatio)))) { - var moveForce = pressureDifference * MathF.Max(physics.InvMass, SpaceWindMaximumCalculatedInverseMass); - if (moveForce > physics.Mass) + if (HasComp(uid)) { + AddMobMovedByPressure(uid, component, physics); + } + + if (maxForce > MovedByPressureComponent.ThrowForce) + { + var moveForce = maxForce; + moveForce /= (throwTarget != EntityCoordinates.Invalid) ? SpaceWindPressureForceDivisorThrow : SpaceWindPressureForceDivisorPush; + moveForce *= MathHelper.Clamp(moveProb, 0, 100); + + // Apply a sanity clamp to prevent being thrown through objects. var maxSafeForceForObject = SpaceWindMaxVelocity * physics.Mass; moveForce = MathF.Min(moveForce, maxSafeForceForObject); - AddMovedByPressure(uid, component, physics); + // Grid-rotation adjusted direction var dirVec = (direction.ToAngle() + gridWorldRotation).ToWorldVec(); - // TODO: Consider replacing throw target with proper trigonometry angles. + // 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, _transformSystem).Position - xform.WorldPosition + dirVec; - _physics.ApplyLinearImpulse(uid, pos.Normalized() * moveForce, body: physics); + var pos = ((throwTarget.ToMap(EntityManager, _transformSystem).Position - xform.WorldPosition).Normalized() + dirVec).Normalized(); + _physics.ApplyLinearImpulse(uid, pos * moveForce, body: physics); } else { - _physics.ApplyLinearImpulse(uid, dirVec.Normalized() * moveForce, body: physics); + moveForce = MathF.Min(moveForce, SpaceWindMaxPushForce); + _physics.ApplyLinearImpulse(uid, dirVec * moveForce, body: physics); } component.LastHighPressureMovementAirCycle = cycle; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs index 907f0bde6a5..08193027d67 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs @@ -5,13 +5,11 @@ using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.Database; -using Content.Shared.Maps; -using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; -using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; + namespace Content.Server.Atmos.EntitySystems { public sealed partial class AtmosphereSystem @@ -139,7 +137,7 @@ private void EqualizePressureInZone( var logN = MathF.Log2(tileCount); // Optimization - try to spread gases using an O(n log n) algorithm that has a chance of not working first to avoid O(n^2) - if (!MonstermosUseExpensiveAirflow && giverTilesLength > logN && takerTilesLength > logN) + if (giverTilesLength > logN && takerTilesLength > logN) { // Even if it fails, it will speed up the next part. Array.Sort(_equalizeTiles, 0, tileCount, _monstermosComparer); @@ -552,8 +550,7 @@ private void ExplosivelyDepressurize( } InvalidateVisuals(ent, otherTile); - if (MonstermosRipTiles && otherTile.PressureDifference > MonstermosRipTilesMinimumPressure) - HandleDecompressionFloorRip(mapGrid, otherTile, otherTile.PressureDifference); + HandleDecompressionFloorRip(mapGrid, otherTile, otherTile.MonstermosInfo.CurrentTransferAmount); } if (GridImpulse && tileCount > 0) @@ -685,17 +682,15 @@ private void AdjustEqMovement(TileAtmosphere tile, AtmosDirection direction, flo adj.MonstermosInfo[idx.ToOppositeDir()] -= amount; } - private void HandleDecompressionFloorRip(MapGridComponent mapGrid, TileAtmosphere tile, float delta) + private void HandleDecompressionFloorRip(MapGridComponent mapGrid, TileAtmosphere tile, float sum) { - if (!mapGrid.TryGetTileRef(tile.GridIndices, out var tileRef)) + if (!MonstermosRipTiles) return; - var tileref = tileRef.Tile; - var tileDef = (ContentTileDefinition) _tileDefinitionManager[tileref.TypeId]; - if (!tileDef.Reinforced && tileDef.TileRipResistance < delta * MonstermosRipTilesPressureOffset) - { + var chance = MathHelper.Clamp(0.01f + (sum / SpacingMaxWind) * 0.3f, 0.003f, 0.3f); + + if (sum > 20 && _robustRandom.Prob(chance)) PryTile(mapGrid, tile.GridIndices); - } } private sealed class TileAtmosphereComparer : IComparer diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs index aca902b9d38..6c9e99e5f3b 100644 --- a/Content.Server/Temperature/Systems/TemperatureSystem.cs +++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs @@ -11,7 +11,6 @@ using Content.Shared.Inventory; using Content.Shared.Rejuvenate; using Content.Shared.Temperature; -using Robust.Server.GameObjects; using Robust.Shared.Physics.Components; namespace Content.Server.Temperature.Systems; @@ -22,7 +21,6 @@ public sealed class TemperatureSystem : EntitySystem [Dependency] private readonly AtmosphereSystem _atmosphere = default!; [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; - [Dependency] private readonly TransformSystem _transform = default!; /// /// All the components that will have their damage updated at the end of the tick. @@ -163,9 +161,8 @@ public float GetHeatCapacity(EntityUid uid, TemperatureComponent? comp = null, P { return Atmospherics.MinimumHeatCapacity; } - if (physics.Mass < 1) - return comp.SpecificHeat; - else return comp.SpecificHeat * physics.FixturesMass; + + return comp.SpecificHeat * physics.FixturesMass; } private void OnInit(EntityUid uid, InternalTemperatureComponent comp, MapInitEvent args) diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 1d4731bdd2a..93a8d83c168 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1026,33 +1026,14 @@ public static readonly CVarDef /// Useful to prevent clipping through objects. /// public static readonly CVarDef SpaceWindMaxVelocity = - CVarDef.Create("atmos.space_wind_max_velocity", 15f, CVar.SERVERONLY); + CVarDef.Create("atmos.space_wind_max_velocity", 30f, CVar.SERVERONLY); /// /// The maximum force that may be applied to an object by pushing (i.e. not throwing) atmospheric pressure differences. /// A "throwing" atmospheric pressure difference ignores this limit, but not the max. velocity limit. /// public static readonly CVarDef SpaceWindMaxPushForce = - CVarDef.Create("atmos.space_wind_max_push_force", 20f, CVar.SERVERONLY); - - /// - /// If an object's mass is below this number, then this number is used in place of mass to determine whether air pressure can throw an object. - /// This has nothing to do with throwing force, only acting as a way of reducing the odds of tiny 5 gram objects from being yeeted by people's breath - /// - /// - /// If you are reading this because you want to change it, consider looking into why almost every item in the game weighs only 5 grams - /// And maybe do your part to fix that? :) - /// - public static readonly CVarDef SpaceWindMinimumCalculatedMass = - CVarDef.Create("atmos.space_wind_minimum_calculated_mass", 10f, CVar.SERVERONLY); - - /// - /// Calculated as 1/Mass, where Mass is the physics.Mass of the desired threshold. - /// If an object's inverse mass is lower than this, it is capped at this. Basically, an upper limit to how heavy an object can be - /// before it stops resisting space wind more. - /// - public static readonly CVarDef SpaceWindMaximumCalculatedInverseMass = - CVarDef.Create("atmos.space_wind_maximum_calculated_inverse_mass", 0.04f, CVar.SERVERONLY); + CVarDef.Create("atmos.space_wind_max_push_force", 25f, CVar.SERVERONLY); /// /// Whether monstermos tile equalization is enabled. @@ -1075,21 +1056,7 @@ public static readonly CVarDef /// Also looks weird on slow spacing for unrelated reasons. If you do want to enable this, you should probably turn on instaspacing. /// public static readonly CVarDef MonstermosRipTiles = - CVarDef.Create("atmos.monstermos_rip_tiles", true, CVar.SERVERONLY); - - /// - /// Taken as the cube of a tile's mass, this acts as a minimum threshold of mass for which air pressure calculates whether or not to rip a tile from the floor - /// This should be set by default to the cube of the game's lowest mass tile as defined in .yml prototypes, but can be increased for server performance reasons - /// - public static readonly CVarDef MonstermosRipTilesMinimumPressure = - CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 7500f, CVar.SERVERONLY); - - /// - /// Taken after the minimum pressure is checked, the effective pressure is multiplied by this amount. This allows server hosts to - /// finely tune how likely floor tiles are to be ripped apart by air pressure - /// - public static readonly CVarDef MonstermosRipTilesPressureOffset = - CVarDef.Create("atmos.monstermos_rip_tiles_pressure_offset", 0.44f, CVar.SERVERONLY); + CVarDef.Create("atmos.monstermos_rip_tiles", false, CVar.SERVERONLY); /// /// Whether explosive depressurization will cause the grid to gain an impulse. @@ -1120,13 +1087,6 @@ public static readonly CVarDef public static readonly CVarDef AtmosSpacingMaxWind = CVarDef.Create("atmos.mmos_max_wind", 500f, CVar.SERVERONLY); - /// - /// Increases default airflow calculations to O(n^2) complexity, for use with heavy space wind optimizations. Potato servers BEWARE - /// This solves the problem of objects being trapped in an infinite loop of slamming into a wall repeatedly. - /// - public static readonly CVarDef MonstermosUseExpensiveAirflow = - CVarDef.Create("atmos.mmos_expensive_airflow", true, CVar.SERVERONLY); - /// /// Whether atmos superconduction is enabled. /// diff --git a/Content.Shared/Maps/ContentTileDefinition.cs b/Content.Shared/Maps/ContentTileDefinition.cs index 339e9f6f39b..32f5db0e821 100644 --- a/Content.Shared/Maps/ContentTileDefinition.cs +++ b/Content.Shared/Maps/ContentTileDefinition.cs @@ -121,8 +121,5 @@ public void AssignTileId(ushort id) { TileId = id; } - - [DataField] public bool Reinforced = false; - [DataField] public float TileRipResistance = 125f; } } diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index a6b3d2e8ec1..1ef2a68f895 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -23,7 +23,7 @@ shape: !type:PhysShapeCircle radius: 0.25 - density: 0.8 + density: 10 mask: - FlyingMobMask layer: @@ -85,7 +85,7 @@ shape: !type:PhysShapeCircle radius: 0.1 - density: 0.1 + density: 30 mask: - FlyingMobMask layer: @@ -330,7 +330,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 0.0007 + density: 100 mask: - SmallMobMask layer: @@ -433,7 +433,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 0.007 + density: 120 mask: - SmallMobMask layer: @@ -688,7 +688,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 0.007 + density: 7.5 mask: - FlyingMobMask layer: @@ -745,7 +745,7 @@ shape: !type:PhysShapeCircle radius: 0.40 - density: 800 + density: 400 mask: - MobMask layer: @@ -880,7 +880,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 200 + density: 150 mask: - MobMask layer: @@ -1571,7 +1571,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 0.76 + density: 100 mask: - SmallMobMask layer: @@ -1807,7 +1807,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 0.77 + density: 50 mask: - MobMask layer: @@ -1861,7 +1861,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 0.0007 + density: 5 mask: - MobMask layer: @@ -1913,7 +1913,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 0.005 + density: 5 mask: - SmallMobMask layer: @@ -2014,7 +2014,7 @@ shape: !type:PhysShapeCircle radius: 0.25 - density: 30 + density: 100 mask: - MobMask layer: @@ -2083,7 +2083,7 @@ shape: !type:PhysShapeCircle radius: 0.25 - density: 30 + density: 25 mask: - MobMask layer: @@ -2198,7 +2198,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 150 + density: 130 mask: - MobMask layer: @@ -2454,7 +2454,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 16.66 + density: 50 mask: - MobMask layer: @@ -2518,7 +2518,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 25.5 #They actually are pretty light, I looked it up + density: 50 #They actually are pretty light, I looked it up mask: - MobMask layer: @@ -2595,7 +2595,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 25.5 + density: 50 mask: - MobMask layer: @@ -2747,7 +2747,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 9 + density: 15 mask: - MobMask layer: @@ -2953,17 +2953,6 @@ Base: caracal_flop Dead: Base: caracal_dead - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - density: 30 - mask: - - MobMask - layer: - - MobLayer - type: entity name: kitten @@ -2997,17 +2986,6 @@ thresholds: 0: Alive 25: Dead - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - density: 2 - mask: - - MobMask - layer: - - MobLayer - type: entity name: sloth @@ -3088,7 +3066,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 4 + density: 5 mask: - MobMask layer: @@ -3168,7 +3146,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 0.8 + density: 120 mask: - SmallMobMask layer: @@ -3289,7 +3267,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 750 + density: 250 mask: - MobMask layer: @@ -3362,7 +3340,7 @@ shape: !type:PhysShapeCircle radius: 0.35 - density: 15 # High, because wood is heavy. + density: 100 # High, because wood is heavy. mask: - MobMask layer: diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index 03145367d77..80f22c3cf6b 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -15,7 +15,6 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelCheckerLight @@ -34,7 +33,6 @@ collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerLight heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelCheckerDark @@ -53,7 +51,6 @@ collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerDark heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelMini @@ -72,7 +69,6 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelPavement @@ -91,7 +87,6 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelDiagonal @@ -110,7 +105,6 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelOffset @@ -123,7 +117,6 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelMono @@ -142,7 +135,6 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelPavementVertical @@ -161,7 +153,6 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelHerringbone @@ -180,7 +171,6 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorSteelDiagonalMini @@ -199,7 +189,6 @@ collection: FootstepTile itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorBrassFilled @@ -212,7 +201,6 @@ collection: FootstepHull itemDrop: FloorTileItemBrassFilled heatCapacity: 10000 - tileRipResistance: 220 - type: tile id: FloorBrassReebe @@ -225,7 +213,6 @@ collection: FootstepHull itemDrop: FloorTileItemBrassReebe heatCapacity: 10000 - tileRipResistance: 220 - type: tile id: FloorPlastic @@ -244,7 +231,6 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWood @@ -265,7 +251,6 @@ collection: BarestepWood itemDrop: FloorTileItemWood heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhite @@ -284,7 +269,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhiteMini @@ -303,7 +287,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhitePavement @@ -322,7 +305,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhiteDiagonal @@ -341,7 +323,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhiteOffset @@ -354,7 +335,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhiteMono @@ -373,7 +353,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhitePavementVertical @@ -392,7 +371,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhiteHerringbone @@ -411,7 +389,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhiteDiagonalMini @@ -430,7 +407,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorWhitePlastic @@ -449,7 +425,6 @@ collection: FootstepTile itemDrop: FloorTileItemWhite heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorDark @@ -468,7 +443,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorDarkMini @@ -487,7 +461,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorDarkPavement @@ -506,7 +479,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorDarkDiagonal @@ -525,7 +497,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorDarkOffset @@ -538,7 +509,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorDarkMono @@ -557,7 +527,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorDarkPavementVertical @@ -576,7 +545,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorDarkHerringbone @@ -595,7 +563,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorDarkDiagonalMini @@ -614,7 +581,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorDarkPlastic @@ -633,7 +599,6 @@ collection: FootstepTile itemDrop: FloorTileItemDark heatCapacity: 10000 - tileRipResistance: 50 - type: tile id: FloorTechMaint @@ -646,7 +611,6 @@ collection: FootstepHull itemDrop: FloorTileItemTechmaint heatCapacity: 10000 - tileRipResistance: 250 - type: tile id: FloorReinforced @@ -659,7 +623,6 @@ collection: FootstepHull itemDrop: FloorTileItemReinforced heatCapacity: 10000 - reinforced: true - type: tile id: FloorMono @@ -672,7 +635,6 @@ collection: FootstepTile itemDrop: FloorTileItemMono heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorLino @@ -685,7 +647,6 @@ collection: FootstepTile itemDrop: FloorTileItemLino heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorSteelDirty @@ -698,7 +659,6 @@ collection: FootstepPlating itemDrop: FloorTileItemDirty heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorElevatorShaft @@ -711,7 +671,6 @@ collection: FootstepHull itemDrop: FloorTileItemElevatorShaft heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorMetalDiamond @@ -724,7 +683,6 @@ collection: FootstepHull itemDrop: FloorTileItemMetalDiamond heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorRockVault @@ -737,7 +695,6 @@ collection: FootstepAsteroid itemDrop: FloorTileItemRockVault heatCapacity: 10000 - tileRipResistance: 400 - type: tile id: FloorBlue @@ -750,7 +707,6 @@ collection: FootstepTile itemDrop: FloorTileItemBlue heatCapacity: 10000 - tileRipResistance: 50 - type: tile id: FloorSteelLime @@ -769,7 +725,6 @@ collection: FootstepFloor itemDrop: FloorTileItemLime heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorMining @@ -782,7 +737,6 @@ collection: FootstepTile itemDrop: FloorTileItemMining heatCapacity: 10000 - tileRipResistance: 250 - type: tile id: FloorMiningDark @@ -795,7 +749,6 @@ collection: FootstepTile itemDrop: FloorTileItemMiningDark heatCapacity: 10000 - tileRipResistance: 250 - type: tile id: FloorMiningLight @@ -808,7 +761,6 @@ collection: FootstepTile itemDrop: FloorTileItemMiningLight heatCapacity: 10000 - tileRipResistance: 250 # Departamental - type: tile @@ -822,7 +774,6 @@ collection: FootstepHull itemDrop: FloorTileItemFreezer heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorShowroom @@ -835,7 +786,6 @@ collection: FootstepFloor itemDrop: FloorTileItemShowroom heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorHydro @@ -848,7 +798,6 @@ collection: FootstepFloor itemDrop: FloorTileItemHydro heatCapacity: 10000 - tileRipResistance: 100 - type: tile id: FloorBar @@ -867,7 +816,6 @@ collection: FootstepFloor itemDrop: FloorTileItemBar heatCapacity: 10000 - tileRipResistance: 50 - type: tile id: FloorClown @@ -880,7 +828,6 @@ collection: FootstepFloor itemDrop: FloorTileItemClown heatCapacity: 10000 - tileRipResistance: 50 - type: tile id: FloorMime @@ -893,7 +840,6 @@ collection: FootstepFloor itemDrop: FloorTileItemMime heatCapacity: 10000 - tileRipResistance: 50 - type: tile id: FloorKitchen @@ -906,7 +852,6 @@ collection: FootstepTile itemDrop: FloorTileItemKitchen heatCapacity: 10000 - tileRipResistance: 50 - type: tile id: FloorLaundry @@ -919,7 +864,6 @@ collection: FootstepTile itemDrop: FloorTileItemLaundry heatCapacity: 10000 - tileRipResistance: 50 - type: tile id: FloorSteelDamaged @@ -939,7 +883,6 @@ 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 - tileRipResistance: 175 - type: tile id: FloorSteelBurnt @@ -956,7 +899,6 @@ collection: FootstepFloor itemDrop: FloorTileItemSteel #Same case as FloorSteelDamaged, make it null when possible heatCapacity: 10000 - tileRipResistance: 175 # Concrete @@ -978,7 +920,6 @@ itemDrop: FloorTileItemConcrete heatCapacity: 10000 weather: true - tileRipResistance: 300 - type: tile id: FloorConcreteMono @@ -998,7 +939,6 @@ itemDrop: FloorTileItemConcrete heatCapacity: 10000 weather: true - tileRipResistance: 300 - type: tile id: FloorConcreteSmooth @@ -1018,7 +958,6 @@ itemDrop: FloorTileItemConcrete heatCapacity: 10000 weather: true - tileRipResistance: 300 - type: tile id: FloorGrayConcrete @@ -1038,7 +977,6 @@ itemDrop: FloorTileItemGrayConcrete heatCapacity: 10000 weather: true - tileRipResistance: 300 - type: tile id: FloorGrayConcreteMono @@ -1058,7 +996,6 @@ itemDrop: FloorTileItemGrayConcrete heatCapacity: 10000 weather: true - tileRipResistance: 300 - type: tile id: FloorGrayConcreteSmooth @@ -1078,7 +1015,6 @@ itemDrop: FloorTileItemGrayConcrete heatCapacity: 10000 weather: true - tileRipResistance: 300 - type: tile id: FloorOldConcrete @@ -1098,7 +1034,6 @@ itemDrop: FloorTileItemOldConcrete heatCapacity: 10000 weather: true - tileRipResistance: 300 - type: tile id: FloorOldConcreteMono @@ -1118,7 +1053,6 @@ itemDrop: FloorTileItemOldConcrete heatCapacity: 10000 weather: true - tileRipResistance: 300 - type: tile id: FloorOldConcreteSmooth @@ -1138,7 +1072,6 @@ itemDrop: FloorTileItemOldConcrete heatCapacity: 10000 weather: true - tileRipResistance: 300 # Carpets (non smoothing) - type: tile @@ -1155,7 +1088,6 @@ friction: 0.25 itemDrop: FloorTileItemArcadeBlue heatCapacity: 10000 - tileRipResistance: 75 - type: tile id: FloorArcadeBlue2 @@ -1171,7 +1103,6 @@ friction: 0.25 itemDrop: FloorTileItemArcadeBlue2 heatCapacity: 10000 - tileRipResistance: 75 - type: tile id: FloorArcadeRed @@ -1187,7 +1118,6 @@ friction: 0.25 itemDrop: FloorTileItemArcadeRed heatCapacity: 10000 - tileRipResistance: 75 - type: tile id: FloorEighties @@ -1203,7 +1133,6 @@ friction: 0.25 itemDrop: FloorTileItemEighties heatCapacity: 10000 - tileRipResistance: 75 - type: tile id: FloorCarpetClown @@ -1219,7 +1148,6 @@ friction: 0.25 itemDrop: FloorTileItemCarpetClown heatCapacity: 10000 - tileRipResistance: 75 - type: tile id: FloorCarpetOffice @@ -1235,7 +1163,6 @@ friction: 0.25 itemDrop: FloorTileItemCarpetOffice heatCapacity: 10000 - tileRipResistance: 75 - type: tile id: FloorBoxing @@ -1255,7 +1182,6 @@ friction: 0.25 itemDrop: FloorTileItemBoxing heatCapacity: 10000 - tileRipResistance: 75 - type: tile id: FloorGym @@ -1275,7 +1201,6 @@ friction: 0.25 itemDrop: FloorTileItemGym heatCapacity: 10000 - tileRipResistance: 75 # Shuttle - type: tile @@ -1295,7 +1220,6 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleWhite heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorShuttleGrey @@ -1314,7 +1238,6 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleGrey heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorShuttleBlack @@ -1333,7 +1256,6 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleBlack heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorShuttleBlue @@ -1352,7 +1274,6 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleBlue heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorShuttleOrange @@ -1371,7 +1292,6 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleOrange heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorShuttlePurple @@ -1390,7 +1310,6 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttlePurple heatCapacity: 10000 - tileRipResistance: 4500 - type: tile id: FloorShuttleRed @@ -1409,7 +1328,6 @@ collection: FootstepFloor itemDrop: FloorTileItemShuttleRed heatCapacity: 10000 - tileRipResistance: 4500 # Materials @@ -1424,7 +1342,6 @@ collection: FootstepTile itemDrop: FloorTileItemGold heatCapacity: 10000 - tileRipResistance: 600 - type: tile id: FloorSilver @@ -1437,7 +1354,6 @@ collection: FootstepTile itemDrop: FloorTileItemSilver heatCapacity: 10000 - tileRipResistance: 500 - type: tile id: FloorGlass @@ -1456,7 +1372,6 @@ collection: FootstepTile itemDrop: SheetGlass1 heatCapacity: 10000 - tileRipResistance: 150 - type: tile id: FloorRGlass @@ -1475,7 +1390,6 @@ collection: FootstepTile itemDrop: SheetRGlass1 heatCapacity: 10000 - tileRipResistance: 175 # Circuits - type: tile @@ -1489,7 +1403,6 @@ collection: FootstepHull itemDrop: FloorTileItemGCircuit heatCapacity: 10000 - tileRipResistance: 225 - type: tile id: FloorBlueCircuit @@ -1502,7 +1415,6 @@ collection: FootstepHull itemDrop: FloorTileItemBCircuit heatCapacity: 10000 - tileRipResistance: 225 # Terrain - type: tile @@ -1800,7 +1712,6 @@ itemDrop: FloorTileItemFlesh friction: 0.05 #slippy heatCapacity: 10000 - tileRipResistance: 80 - type: tile id: FloorTechMaint2 @@ -1813,7 +1724,6 @@ collection: FootstepHull itemDrop: FloorTileItemSteelMaint heatCapacity: 10000 - tileRipResistance: 225 - type: tile id: FloorTechMaint3 @@ -1832,7 +1742,6 @@ collection: FootstepHull itemDrop: FloorTileItemGratingMaint heatCapacity: 10000 - tileRipResistance: 225 - type: tile id: FloorWoodTile @@ -1853,7 +1762,6 @@ collection: BarestepWood itemDrop: FloorTileItemWoodPattern heatCapacity: 10000 - tileRipResistance: 75 - type: tile id: FloorBrokenWood @@ -1877,7 +1785,6 @@ collection: BarestepWood itemDrop: MaterialWoodPlank1 heatCapacity: 10000 - tileRipResistance: 60 - type: tile id: FloorWebTile @@ -1892,7 +1799,6 @@ collection: BarestepCarpet itemDrop: FloorTileItemWeb heatCapacity: 10000 - tileRipResistance: 30 - type: tile id: FloorChromite @@ -1924,7 +1830,6 @@ 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 - tileRipResistance: 500 - type: tile id: FloorHullReinforced @@ -1937,7 +1842,6 @@ itemDrop: FloorTileItemSteel heatCapacity: 100000 #/tg/ has this set as "INFINITY." I don't know if that exists here so I've just added an extra 0 indestructible: true - reinforced: true - type: tile id: FloorReinforcedHardened @@ -1948,7 +1852,6 @@ footstepSounds: collection: FootstepHull itemDrop: FloorTileItemReinforced #same case as FloorHull - reinforced: true # Faux sci tiles @@ -1980,7 +1883,6 @@ collection: FootstepGrass itemDrop: FloorTileItemAstroGrass heatCapacity: 10000 - tileRipResistance: 50 - type: tile id: FloorMowedAstroGrass @@ -1990,7 +1892,6 @@ isSubfloor: false deconstructTools: [ Cutting ] itemDrop: FloorTileItemMowedAstroGrass - tileRipResistance: 50 - type: tile id: FloorJungleAstroGrass @@ -2000,7 +1901,6 @@ isSubfloor: false deconstructTools: [ Cutting ] itemDrop: FloorTileItemJungleAstroGrass - tileRipResistance: 50 # Ice - type: tile @@ -2016,7 +1916,6 @@ mobFrictionNoInput: 0.05 mobAcceleration: 2 itemDrop: FloorTileItemAstroIce - tileRipResistance: 50 - type: tile id: FloorAstroSnow @@ -2026,7 +1925,6 @@ isSubfloor: false deconstructTools: [ Prying ] itemDrop: FloorTileItemAstroSnow - tileRipResistance: 50 - type: tile id: FloorWoodLarge @@ -2047,4 +1945,3 @@ collection: BarestepWood itemDrop: FloorTileItemWoodLarge heatCapacity: 10000 - tileRipResistance: 100