@@ -23,23 +23,20 @@ namespace Content.Server.Atmos.Components
|
|||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
[ComponentDependency] private readonly FlammableComponent? _flammableComponent = null;
|
[ComponentDependency] private readonly FlammableComponent? _flammableComponent = null;
|
||||||
|
|
||||||
public void Update(TileAtmosphere tile, float frameDelta, AtmosphereSystem atmosphereSystem)
|
public void Update(GasMixture air, float frameDelta, AtmosphereSystem atmosphereSystem)
|
||||||
{
|
{
|
||||||
if (_temperatureComponent != null)
|
if (_temperatureComponent != null)
|
||||||
{
|
{
|
||||||
if (tile.Air != null)
|
var temperatureDelta = air.Temperature - _temperatureComponent.CurrentTemperature;
|
||||||
{
|
var tileHeatCapacity = atmosphereSystem.GetHeatCapacity(air);
|
||||||
var temperatureDelta = tile.Air.Temperature - _temperatureComponent.CurrentTemperature;
|
var heat = temperatureDelta * (tileHeatCapacity * _temperatureComponent.HeatCapacity / (tileHeatCapacity + _temperatureComponent.HeatCapacity));
|
||||||
var tileHeatCapacity = atmosphereSystem.GetHeatCapacity(tile.Air);
|
_temperatureComponent.ReceiveHeat(heat);
|
||||||
var heat = temperatureDelta * (tileHeatCapacity * _temperatureComponent.HeatCapacity / (tileHeatCapacity + _temperatureComponent.HeatCapacity));
|
|
||||||
_temperatureComponent.ReceiveHeat(heat);
|
|
||||||
}
|
|
||||||
_temperatureComponent.Update();
|
_temperatureComponent.Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
_barotraumaComponent?.Update(tile.Air?.Pressure ?? 0);
|
_barotraumaComponent?.Update(air.Pressure);
|
||||||
|
|
||||||
_flammableComponent?.Update(tile);
|
_flammableComponent?.Update(air);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ namespace Content.Server.Atmos.Components
|
|||||||
UpdateAppearance();
|
UpdateAppearance();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update(TileAtmosphere tile)
|
public void Update(GasMixture air)
|
||||||
{
|
{
|
||||||
// Slowly dry ourselves off if wet.
|
// Slowly dry ourselves off if wet.
|
||||||
if (FireStacks < 0)
|
if (FireStacks < 0)
|
||||||
@@ -104,13 +104,13 @@ namespace Content.Server.Atmos.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If we're in an oxygenless environment, put the fire out.
|
// If we're in an oxygenless environment, put the fire out.
|
||||||
if (tile.Air?.GetMoles(Gas.Oxygen) < 1f)
|
if (air.GetMoles(Gas.Oxygen) < 1f)
|
||||||
{
|
{
|
||||||
Extinguish();
|
Extinguish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
EntitySystem.Get<AtmosphereSystem>().HotspotExpose(tile.GridIndex, tile.GridIndices, 700f, 50f, true);
|
EntitySystem.Get<AtmosphereSystem>().HotspotExpose(Owner.Transform.Coordinates, 700f, 50f, true);
|
||||||
|
|
||||||
var physics = Owner.GetComponent<IPhysBody>();
|
var physics = Owner.GetComponent<IPhysBody>();
|
||||||
|
|
||||||
|
|||||||
@@ -670,7 +670,7 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
public GasMixture? GetTileMixture(EntityCoordinates coordinates, bool invalidate = false)
|
public GasMixture? GetTileMixture(EntityCoordinates coordinates, bool invalidate = false)
|
||||||
{
|
{
|
||||||
return TryGetGridAndTile(coordinates, out var tuple)
|
return TryGetGridAndTile(coordinates, out var tuple)
|
||||||
? GetTileMixture(tuple.Value.Grid, tuple.Value.Tile, invalidate) : null;
|
? GetTileMixture(tuple.Value.Grid, tuple.Value.Tile, invalidate) : GasMixture.SpaceGas;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
foreach (var exposed in EntityManager.ComponentManager.EntityQuery<AtmosExposedComponent>())
|
foreach (var exposed in EntityManager.ComponentManager.EntityQuery<AtmosExposedComponent>())
|
||||||
{
|
{
|
||||||
// TODO ATMOS: Kill this with fire.
|
// TODO ATMOS: Kill this with fire.
|
||||||
var tile = GetTileAtmosphereOrCreateSpace(exposed.Owner.Transform.Coordinates);
|
var tile = GetTileMixture(exposed.Owner.Transform.Coordinates);
|
||||||
if (tile == null) continue;
|
if (tile == null) continue;
|
||||||
exposed.Update(tile, _exposedTimer, this);
|
exposed.Update(tile, _exposedTimer, this);
|
||||||
}
|
}
|
||||||
|
|||||||
4
Resources/Changelog/Parts/funny_gas.yml
Normal file
4
Resources/Changelog/Parts/funny_gas.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: Zumorica
|
||||||
|
changes:
|
||||||
|
- type: Fix
|
||||||
|
message: Fixes mobs not taking pressure damage on space.
|
||||||
Reference in New Issue
Block a user