атмос гейминг indeed (#513)

* fix hypernob + plasma and trit fire

* add 11 new gas types

* actually fix hypernob

---------

Co-authored-by: halicopter <kirillhalic@gmail.com>
This commit is contained in:
KurokoTurbo
2023-10-26 23:37:45 +03:00
committed by Aviu00
parent 9b2850f561
commit 435e7c7b8d
71 changed files with 2672 additions and 29 deletions

View File

@@ -43,7 +43,7 @@ namespace Content.Server.Atmos.EntitySystems
ExcitedGroupResetCooldowns(tile.ExcitedGroup);
if ((tile.Hotspot.Temperature < Atmospherics.FireMinimumTemperatureToExist) || (tile.Hotspot.Volume <= 1f)
|| tile.Air == null || tile.Air.GetMoles(Gas.Oxygen) < 0.5f || (tile.Air.GetMoles(Gas.Plasma) < 0.5f && tile.Air.GetMoles(Gas.Tritium) < 0.5f))
|| tile.Air == null || tile.Air.GetMoles(Gas.Oxygen) < 0.5f || (tile.Air.GetMoles(Gas.Plasma) < 0.5f && tile.Air.GetMoles(Gas.Tritium) < 0.5f && tile.Air.GetMoles(Gas.Hydrogen) < 0.5f && tile.Air.GetMoles(Gas.HyperNoblium) > 5f))
{
tile.Hotspot = new Hotspot();
InvalidateVisuals(tile.GridIndex, tile.GridIndices);
@@ -107,12 +107,14 @@ namespace Content.Server.Atmos.EntitySystems
var plasma = tile.Air.GetMoles(Gas.Plasma);
var tritium = tile.Air.GetMoles(Gas.Tritium);
var hydrogen = tile.Air.GetMoles(Gas.Hydrogen);
var hypernoblium = tile.Air.GetMoles(Gas.HyperNoblium);
if (tile.Hotspot.Valid)
{
if (soh)
{
if (plasma > 0.5f || tritium > 0.5f)
if (plasma > 0.5f && hypernoblium < 5f || tritium > 0.5f && hypernoblium < 5f || hydrogen > 0.5f && hypernoblium < 5f)
{
if (tile.Hotspot.Temperature < exposedTemperature)
tile.Hotspot.Temperature = exposedTemperature;
@@ -124,10 +126,10 @@ namespace Content.Server.Atmos.EntitySystems
return;
}
if ((exposedTemperature > Atmospherics.PlasmaMinimumBurnTemperature) && (plasma > 0.5f || tritium > 0.5f))
if ((exposedTemperature > Atmospherics.PlasmaMinimumBurnTemperature) && (plasma > 0.5f && hypernoblium < 5f || tritium > 0.5f && hypernoblium < 5f || hydrogen > 0.5f && hypernoblium < 5f))
{
if (sparkSourceUid.HasValue)
_adminLog.Add(LogType.Flammable, LogImpact.High, $"Heat/spark of {ToPrettyString(sparkSourceUid.Value)} caused atmos ignition of gas: {tile.Air.Temperature.ToString():temperature}K - {oxygen}mol Oxygen, {plasma}mol Plasma, {tritium}mol Tritium");
_adminLog.Add(LogType.Flammable, LogImpact.High, $"Heat/spark of {ToPrettyString(sparkSourceUid.Value)} caused atmos ignition of gas: {tile.Air.Temperature.ToString():temperature}K - {oxygen}mol Oxygen, {plasma}mol Plasma, {tritium}mol Tritium, {hydrogen}mol Hydrogen");
tile.Hotspot = new Hotspot
{

View File

@@ -30,7 +30,18 @@ namespace Content.Server.Atmos.Portable
Gas.WaterVapor,
Gas.Ammonia,
Gas.NitrousOxide,
Gas.Frezon
Gas.Frezon,
Gas.BZ,
Gas.Pluoxium,
Gas.Hydrogen,
Gas.Nitrium,
Gas.Healium,
Gas.HyperNoblium,
Gas.ProtoNitrate,
Gas.Zauker,
Gas.Halon,
Gas.Helium,
Gas.AntiNoblium
};
[ViewVariables(VVAccess.ReadWrite)]

View File

@@ -0,0 +1,50 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class BZProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialNitrousOxide = mixture.GetMoles(Gas.NitrousOxide);
var initialPlasma = mixture.GetMoles(Gas.Plasma);
var environmentEfficiency = mixture.Volume / mixture.Pressure;
var ratioEfficiency = Math.Min(initialNitrousOxide / initialPlasma, 1);
var BZFormed = Math.Min(0.01f * ratioEfficiency * environmentEfficiency, Math.Min(initialNitrousOxide * 0.4f, initialPlasma * 0.8f));
if (initialNitrousOxide - BZFormed * 0.4f < 0 || initialPlasma - (0.8f - BZFormed) < 0 || BZFormed <= 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
var amountDecomposed = 0.0f;
var nitrousOxideDecomposedFactor = Math.Max(4.0f * (initialPlasma / (initialNitrousOxide + initialPlasma) - 0.75f), 0);
if (nitrousOxideDecomposedFactor > 0)
{
amountDecomposed = 0.4f * BZFormed * nitrousOxideDecomposedFactor;
mixture.AdjustMoles(Gas.Oxygen, amountDecomposed);
mixture.AdjustMoles(Gas.Nitrogen, 0.5f * amountDecomposed);
}
mixture.AdjustMoles(Gas.BZ, Math.Max(0f, BZFormed * (1.0f - nitrousOxideDecomposedFactor)));
mixture.AdjustMoles(Gas.NitrousOxide, -0.4f * BZFormed);
mixture.AdjustMoles(Gas.Plasma, -0.8f * BZFormed * (1.0f - nitrousOxideDecomposedFactor));
var energyReleased = BZFormed * (Atmospherics.BZFormationEnergy + nitrousOxideDecomposedFactor * (Atmospherics.NitrousOxideDecompositionEnergy - Atmospherics.BZFormationEnergy));
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -13,6 +13,11 @@ public sealed partial class FrezonCoolantReaction : IGasReactionEffect
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var temperature = mixture.Temperature;
var energyModifier = 1f;

View File

@@ -13,6 +13,10 @@ public sealed partial class FrezonProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialN2 = mixture.GetMoles(Gas.Nitrogen);
var initialOxy = mixture.GetMoles(Gas.Oxygen);
var initialTrit = mixture.GetMoles(Gas.Tritium);

View File

@@ -0,0 +1,38 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class HalonOxygenAbsorptionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialHalon = mixture.GetMoles(Gas.Halon);
var initialOxygen = mixture.GetMoles(Gas.Oxygen);
var temperature = mixture.Temperature;
var heatEfficiency = Math.Min(temperature / (Atmospherics.FireMinimumTemperatureToExist * 10f), Math.Min(initialHalon, initialOxygen*20f));
if (heatEfficiency <= 0f || initialHalon - heatEfficiency < 0f || initialOxygen - heatEfficiency * 20f < 0f)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.Halon, -heatEfficiency);
mixture.AdjustMoles(Gas.Oxygen, -heatEfficiency*20f);
mixture.AdjustMoles(Gas.CarbonDioxide, heatEfficiency*5f);
var energyUsed = heatEfficiency * Atmospherics.HalonCombustionEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyUsed) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -0,0 +1,39 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class HealiumProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialBZ = mixture.GetMoles(Gas.BZ);
var initialFrezon = mixture.GetMoles(Gas.Frezon);
var temperature = mixture.Temperature;
var heatEfficiency = Math.Min(temperature*0.3f, Math.Min(initialFrezon*2.75f, initialBZ*0.25f));
if (heatEfficiency <= 0 || initialFrezon - heatEfficiency * 2.75f < 0 || initialBZ - heatEfficiency * 0.25f < 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.Frezon, -heatEfficiency*2.75f);
mixture.AdjustMoles(Gas.BZ, -heatEfficiency*0.25f);
mixture.AdjustMoles(Gas.Healium, heatEfficiency*3);
var energyReleased = heatEfficiency * Atmospherics.HealiumFormationEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -0,0 +1,58 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions
{
[UsedImplicitly]
[DataDefinition]
public sealed class HydrogenFireReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var energyReleased = 0f;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
var temperature = mixture.Temperature;
var location = holder as TileAtmosphere;
mixture.ReactionResults[GasReaction.Fire] = 0;
var initialOxygen = mixture.GetMoles(Gas.Oxygen);
var initialHydrogen = mixture.GetMoles(Gas.Hydrogen);
var burnedFuel = Math.Min(initialHydrogen / Atmospherics.FireH2BurnRateDelta, Math.Min(initialOxygen / (Atmospherics.FireH2BurnRateDelta * Atmospherics.H2OxygenFullBurn), Math.Min(initialHydrogen, initialOxygen * 0.5f)));
if (burnedFuel > 0)
{
energyReleased += Atmospherics.FireH2EnergyReleased * burnedFuel;
mixture.AdjustMoles(Gas.WaterVapor, burnedFuel);
mixture.AdjustMoles(Gas.Hydrogen, -burnedFuel);
mixture.AdjustMoles(Gas.Oxygen, -burnedFuel * 0.5f);
mixture.ReactionResults[GasReaction.Fire] += burnedFuel;
}
if (energyReleased > 0)
{
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = (temperature * oldHeatCapacity + energyReleased) / newHeatCapacity;
}
if (location != null)
{
temperature = mixture.Temperature;
if (temperature > Atmospherics.FireMinimumTemperatureToExist)
{
atmosphereSystem.HotspotExpose(location.GridIndex, location.GridIndices, temperature, mixture.Volume);
}
}
return mixture.ReactionResults[GasReaction.Fire] != 0 ? ReactionResult.Reacting : ReactionResult.NoReaction;
}
}
}

View File

@@ -0,0 +1,40 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class HyperNobliumProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialNitrogen = mixture.GetMoles(Gas.Nitrogen);
var initialTritium = mixture.GetMoles(Gas.Tritium);
var initialBZ = mixture.GetMoles(Gas.BZ);
var nobFormed = Math.Min((initialNitrogen+initialTritium)*0.01f,Math.Min(initialTritium*5f, initialNitrogen*10f));
if (nobFormed <= 0 || (initialTritium - 5f) * nobFormed < 0 || (initialNitrogen - 10f) * nobFormed < 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
var reductionFactor = Math.Clamp(initialTritium/(initialTritium+initialBZ), 0.001f, 1f);
mixture.AdjustMoles(Gas.Tritium, -5f * nobFormed * reductionFactor);
mixture.AdjustMoles(Gas.Nitrogen, -10f * nobFormed);
mixture.AdjustMoles(Gas.HyperNoblium, nobFormed);
var energyReleased = nobFormed * (Atmospherics.NobliumFormationEnergy/Math.Max(initialBZ, 1));
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -0,0 +1,38 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class NitriumDecompositionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialNitrium = mixture.GetMoles(Gas.Nitrium);
var temperature = mixture.Temperature;
var heatEfficiency = Math.Min(temperature / Atmospherics.NitriumDecompositionTempDivisor, initialNitrium);
if (heatEfficiency <= 0 || initialNitrium - heatEfficiency < 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.Nitrium, -heatEfficiency);
mixture.AdjustMoles(Gas.Hydrogen, heatEfficiency);
mixture.AdjustMoles(Gas.Nitrogen, heatEfficiency);
var energyReleased = heatEfficiency * Atmospherics.NitriumDecompositionEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -0,0 +1,40 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class NitriumProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialTritium = mixture.GetMoles(Gas.Tritium);
var initialNitrogen = mixture.GetMoles(Gas.Nitrogen);
var initialBZ = mixture.GetMoles(Gas.BZ);
var temperature = mixture.Temperature;
var heatEfficiency = Math.Min(temperature / Atmospherics.NitriumFormationTempDivisor, Math.Min(initialTritium, Math.Min(initialNitrogen, initialBZ * 0.05f)));
if (heatEfficiency <= 0 || initialTritium - heatEfficiency < 0 || initialNitrogen - heatEfficiency < 0 || initialBZ - heatEfficiency * 0.05f < 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.Tritium, -heatEfficiency);
mixture.AdjustMoles(Gas.Nitrogen, -heatEfficiency);
mixture.AdjustMoles(Gas.BZ, -heatEfficiency * 0.05f);
mixture.AdjustMoles(Gas.Nitrium, heatEfficiency);
var energyUsed = heatEfficiency * Atmospherics.NitriumFormationEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity - energyUsed) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -10,6 +10,10 @@ namespace Content.Server.Atmos.Reactions
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var energyReleased = 0f;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
var temperature = mixture.Temperature;

View File

@@ -0,0 +1,40 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class PluoxiumProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialCarbonDioxide = mixture.GetMoles(Gas.CarbonDioxide);
var initialOxygen = mixture.GetMoles(Gas.Oxygen);
var initialTritium = mixture.GetMoles(Gas.Tritium);
var producedAmount = Math.Min(Atmospherics.PluoxiumMaxRate, Math.Min(initialCarbonDioxide, Math.Min(initialOxygen * 0.5f, initialTritium * 0.01f)));
if (producedAmount <= 0 || initialCarbonDioxide - producedAmount < 0 || initialOxygen - producedAmount * 0.5f < 0 || initialTritium - producedAmount * 0.01f <0)
return ReactionResult.NoReaction;
mixture.AdjustMoles(Gas.CarbonDioxide, -producedAmount);
mixture.AdjustMoles(Gas.Oxygen, -producedAmount * 0.5f);
mixture.AdjustMoles(Gas.Tritium, -producedAmount * 0.01f);
mixture.AdjustMoles(Gas.Pluoxium, producedAmount);
mixture.AdjustMoles(Gas.Hydrogen, producedAmount * 0.01f);
var energyReleased = producedAmount * Atmospherics.PluoxiumFormationEnergy;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -0,0 +1,40 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class ProtoNitrateBZaseConversionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialProtoNitrate = mixture.GetMoles(Gas.ProtoNitrate);
var initialBZ = mixture.GetMoles(Gas.BZ);
var temperature = mixture.Temperature;
var consumedAmount = Math.Min(temperature/2240f * initialBZ * initialProtoNitrate / (initialBZ + initialProtoNitrate), Math.Min(initialBZ, initialProtoNitrate));
if (consumedAmount <= 0 || initialBZ - consumedAmount < 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.BZ, -consumedAmount);
mixture.AdjustMoles(Gas.Nitrogen, consumedAmount*0.4f);
mixture.AdjustMoles(Gas.Helium, consumedAmount*1.6f);
mixture.AdjustMoles(Gas.Plasma, consumedAmount*0.8f);
var energyReleased = consumedAmount * Atmospherics.ProtoNitrateBZaseConversionEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -0,0 +1,37 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class ProtoNitrateHydrogenConversionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialProtoNitrate = mixture.GetMoles(Gas.ProtoNitrate);
var initialHydrogen = mixture.GetMoles(Gas.Hydrogen);
var producedAmount = Math.Min(Atmospherics.ProtoNitrateHydrogenConversionMaxRate, Math.Min(initialHydrogen, initialProtoNitrate));
if (producedAmount <= 0 || initialHydrogen-producedAmount < 0f)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.Hydrogen, -producedAmount);
mixture.AdjustMoles(Gas.ProtoNitrate, producedAmount*0.5f);
var energyUsed = producedAmount * Atmospherics.ProtoNitrateHydrogenConversionEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity - energyUsed) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -0,0 +1,39 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class ProtoNitrateProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialPluoxium = mixture.GetMoles(Gas.Pluoxium);
var initialHydrogen = mixture.GetMoles(Gas.Hydrogen);
var temperature = mixture.Temperature;
var heatEfficiency = Math.Min(temperature * 0.005f, Math.Min(initialPluoxium * 0.2f, initialHydrogen * 2.0f));
if (heatEfficiency <= 0 || initialPluoxium - heatEfficiency * 0.2f < 0 || initialHydrogen - heatEfficiency * 2f < 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.Hydrogen, -heatEfficiency * 2f);
mixture.AdjustMoles(Gas.Pluoxium, -heatEfficiency * 0.2f);
mixture.AdjustMoles(Gas.ProtoNitrate, heatEfficiency * 0.2f);
var energyReleased = heatEfficiency * Atmospherics.ProtoNitrateFormationEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -0,0 +1,39 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class ProtoNitrateTritiumConversionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialProtoNitrate = mixture.GetMoles(Gas.ProtoNitrate);
var initialTritium = mixture.GetMoles(Gas.Tritium);
var temperature = mixture.Temperature;
var producedAmount = Math.Min(temperature/34f*initialTritium*initialProtoNitrate/(initialTritium+10f*initialProtoNitrate), Math.Min(initialTritium, initialProtoNitrate*0.01f));
if (initialTritium - producedAmount < 0 || initialProtoNitrate - producedAmount * 0.01f < 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.ProtoNitrate, -producedAmount * 0.01f);
mixture.AdjustMoles(Gas.Tritium, -producedAmount);
mixture.AdjustMoles(Gas.Hydrogen, producedAmount);
var energyReleased = producedAmount * Atmospherics.ProtoNitrateTritiumConversionEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -10,6 +10,10 @@ namespace Content.Server.Atmos.Reactions
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var energyReleased = 0f;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
var temperature = mixture.Temperature;

View File

@@ -0,0 +1,38 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class ZaukerDecompositionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialZauker = mixture.GetMoles(Gas.Zauker);
var initialNitrogen = mixture.GetMoles(Gas.Nitrogen);
var burnedFuel = Math.Min(Atmospherics.ZaukerDecompositionMaxRate, Math.Min(initialNitrogen,initialZauker));
if (burnedFuel <= 0 || initialZauker - burnedFuel < 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.Zauker, -burnedFuel);
mixture.AdjustMoles(Gas.Oxygen, burnedFuel*0.3f);
mixture.AdjustMoles(Gas.Nitrogen, burnedFuel*0.7f);
var energyReleased = burnedFuel * Atmospherics.ZaukerDecompositionEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -0,0 +1,39 @@
using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using JetBrains.Annotations;
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed class ZaukerProductionReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
{
var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium);
if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f)
return ReactionResult.NoReaction;
var initialHypernoblium = mixture.GetMoles(Gas.HyperNoblium);
var initialNitrium = mixture.GetMoles(Gas.Nitrium);
var temperature = mixture.Temperature;
var heatEfficiency = Math.Min(temperature * Atmospherics.ZaukerFormationTemperatureScale, Math.Min(initialHypernoblium * 0.01f, initialNitrium * 0.5f));
if (heatEfficiency <= 0 || initialHypernoblium - heatEfficiency * 0.01f < 0 || initialNitrium - heatEfficiency * 0.5f < 0)
return ReactionResult.NoReaction;
var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
mixture.AdjustMoles(Gas.HyperNoblium, -heatEfficiency * 0.01f);
mixture.AdjustMoles(Gas.Nitrium, -heatEfficiency * 0.5f);
mixture.AdjustMoles(Gas.Zauker, heatEfficiency * 0.5f);
var energyUsed = heatEfficiency * Atmospherics.ZaukerFormationEnergy;
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity - energyUsed) / newHeatCapacity, Atmospherics.TCMB);
return ReactionResult.Reacting;
}
}

View File

@@ -13,6 +13,9 @@ public sealed partial class GasLeakRuleComponent : Component
Gas.Plasma,
Gas.Tritium,
Gas.Frezon,
Gas.BZ,
Gas.Hydrogen,
Gas.Halon
};
/// <summary>

View File

@@ -177,7 +177,7 @@ namespace Content.Shared.Atmos
/// <summary>
/// Total number of gases. Increase this if you want to add more!
/// </summary>
public const int TotalNumberOfGases = 9;
public const int TotalNumberOfGases = 20;
/// <summary>
/// This is the actual length of the gases arrays in mixtures.
@@ -260,6 +260,51 @@ namespace Content.Shared.Atmos
/// </summary>
public const float HazardHighPressure = 550f;
/// <summary>
/// Defines energy released in BZ formation.
/// </summary>
public const float BZFormationEnergy = 80000f;
/// <summary>
/// Defines energy released in N2O decomposition reaction.
/// </summary>
public const float NitrousOxideDecompositionEnergy = 200000f;
/// <summary>
/// Defines energy released in Pluoxium formation.
/// </summary>
public const float PluoxiumFormationEnergy = 250f;
/// <summary>
/// The maximum amount of pluoxium that can form per reaction tick.
/// </summary>
public const float PluoxiumMaxRate = 5f;
public const float FireH2EnergyReleased = 2800000f;
public const float H2OxygenFullBurn = 10f;
public const float FireH2BurnRateDelta = 2f;
public const float H2MinimumBurnTemperature = T0C + 100f;
public const float NitriumFormationTempDivisor = (T0C + 100f) * 8f;
public const float NitriumFormationEnergy = 100000f;
public const float NitriumDecompositionTempDivisor = (T0C + 100f) * 8f;
public const float NitriumDecompositionEnergy = 30000f;
public const float NitriumDecompositionMaxTemp = T0C + 70f;
public const float NobliumFormationEnergy = 20000000f;
public const float ReactionOpperssionThreshold = 5f;
public const float HalonFormationEnergy = 300f;
public const float HalonCombustionEnergy = 2500f;
public const float HealiumFormationEnergy = 9000f;
public const float ZaukerFormationEnergy = 5000f;
public const float ZaukerFormationTemperatureScale = 0.000005f;
public const float ZaukerDecompositionMaxRate = 20f;
public const float ZaukerDecompositionEnergy = 460f;
public const float ProtoNitrateTemperatureScale = 0.005f;
public const float ProtoNitrateFormationEnergy = 650f;
public const float ProtoNitrateHydrogenConversionThreshold = 150f;
public const float ProtoNitrateHydrogenConversionMaxRate = 5f;
public const float ProtoNitrateHydrogenConversionEnergy = 2500f;
public const float ProtoNitrateTritiumConversionEnergy = 10000f;
public const float ProtoNitrateBZaseConversionEnergy = 60000f;
/// <summary>
/// Determines when the orange pressure icon is displayed.
/// </summary>
@@ -340,6 +385,17 @@ namespace Content.Shared.Atmos
WaterVapor = 5,
Ammonia = 6,
NitrousOxide = 7,
Frezon = 8
Frezon = 8,
BZ = 9,
Pluoxium = 10,
Hydrogen = 11,
Nitrium = 12,
Healium = 13,
HyperNoblium = 14,
ProtoNitrate = 15,
Zauker = 16,
Halon = 17,
Helium = 18,
AntiNoblium = 19
}
}

View File

@@ -22,7 +22,18 @@ namespace Content.Shared.Atmos.Piping.Unary.Components
Gas.WaterVapor,
Gas.Ammonia,
Gas.NitrousOxide,
Gas.Frezon
Gas.Frezon,
Gas.BZ,
Gas.Pluoxium,
Gas.Hydrogen,
Gas.Nitrium,
Gas.Healium,
Gas.HyperNoblium,
Gas.ProtoNitrate,
Gas.Zauker,
Gas.Halon,
Gas.Helium,
Gas.AntiNoblium
};
// Presets for 'dumb' air alarm modes

View File

@@ -7,3 +7,14 @@ gases-water-vapor = Water Vapor
gases-ammonia = Ammonia
gases-n2o = Nitrous Oxide
gases-frezon = Frezon
gases-bz = BZ
gases-pluoxium = Pluoxium
gases-hydrogen = Hydrogen
gases-nitrium = Nitrium
gases-healium = Healium
gases-hyper-noblium = Hyper-Noblium
gases-proto-nitrate = Proto-Nitrate
gases-zauker = Zauker
gases-halon = Halon
gases-helium = Helium
gases-anti-noblium = Anti-Noblium

View File

@@ -41,7 +41,40 @@ ent-NitrousOxideCanister = Nitrous oxide canister
.desc = A canister that can contain any type of gas. This one is supposed to contain nitrous oxide. It can be attached to connector ports using a wrench.
ent-FrezonCanister = Frezon canister
.desc = A coolant with light hallucinogenic properties. Proceed.
.desc = A canister that can contain any type of gas. This one is supposed to contain frezon. It can be attached to connector ports using a wrench.
ent-BZCanister = BZ canister
.desc = A canister that can contain any type of gas. This one is supposed to contain BZ. It can be attached to connector ports using a wrench.
ent-PluoxiumCanister = Pluoxium canister
.desc = A canister that can contain any type of gas. This one is supposed to contain pluoxium. It can be attached to connector ports using a wrench.
ent-HydrogenCanister = Hydrogen canister
.desc = A canister that can contain any type of gas. This one is supposed to contain hydrogen. It can be attached to connector ports using a wrench.
ent-NitriumCanister = Nitrium canister
.desc = A canister that can contain any type of gas. This one is supposed to contain nitrium. It can be attached to connector ports using a wrench.
ent-HealiumCanister = Healium canister
.desc = A canister that can contain any type of gas. This one is supposed to contain healium. It can be attached to connector ports using a wrench.
ent-HyperNobliumCanister = Hyper-Noblium canister
.desc = A canister that can contain any type of gas. This one is supposed to contain hyper-noblium. It can be attached to connector ports using a wrench.
ent-ProtoNitrateCanister = Proto-Nitrate canister
.desc = A canister that can contain any type of gas. This one is supposed to contain proto-nitrate. It can be attached to connector ports using a wrench.
ent-ZaukerCanister = Zauker canister
.desc = A canister that can contain any type of gas. This one is supposed to contain zauker. It can be attached to connector ports using a wrench.
ent-HalonCanister = Halon canister
.desc = A canister that can contain any type of gas. This one is supposed to contain halon. It can be attached to connector ports using a wrench.
ent-HeliumCanister = Helium canister
.desc = A canister that can contain any type of gas. This one is supposed to contain helium. It can be attached to connector ports using a wrench.
ent-AntiNobliumCanister = Anti-Noblium canister
.desc = A canister that can contain any type of gas. This one is supposed to contain anti-noblium. It can be attached to connector ports using a wrench.
ent-GasCanisterBrokenBase = Broken gas canister
.desc = A broken gas canister. Not useless yet, as it can be salvaged for high quality materials.
@@ -78,3 +111,36 @@ ent-NitrousOxideCanisterBroken = { ent-GasCanisterBrokenBase }
ent-FrezonCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-BZCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-PluoxiumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HydrogenCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-NitriumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HealiumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HyperNobliumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-ProtoNitrateCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-ZaukerCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HalonCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HeliumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-AntiNobliumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }

View File

@@ -22,9 +22,6 @@ reagent-desc-fluorine = A highly toxic pale yellow gas. Extremely reactive.
reagent-name-gold = gold
reagent-desc-gold = Gold is a dense, soft, shiny metal and the most malleable and ductile metal known.
reagent-name-hydrogen = hydrogen
reagent-desc-hydrogen = A light, flammable gas.
reagent-name-iodine = iodine
reagent-desc-iodine = Commonly added to table salt as a nutrient. On its own it tastes far less pleasing.

View File

@@ -18,3 +18,36 @@ reagent-desc-nitrous-oxide = You know how everything seems funnier when you're t
reagent-name-frezon = frezon
reagent-desc-frezon = A highly effective coolant.. and hallucinogenic.
reagent-name-bz = bz
reagent-desc-bz = A potent hallucinogenic that also puts slimes into stasis.
reagent-name-pluoxium = pluoxium
reagent-desc-pluoxium = A gas that could supply even more oxygen to the bloodstream when inhaled, without being an oxidizer.
reagent-name-hydrogen = hydrogen
reagent-desc-hydrogen = A light, flammable gas.
reagent-name-nitrium = nitrium
reagent-desc-nitrium = A gaseous stimulant that when inhaled can enhance speed and endurance.
reagent-name-healium = healium
reagent-desc-healium = Causes deep, regenerative sleep.
reagent-name-hyper-nob = hyper-noblium
reagent-desc-hyper-nob = The most noble gas of them all. High quantities of hyper-noblium actively prevents reactions from occuring.
reagent-name-proto-nitrate = proto-nitrate
reagent-desc-proto-nitrate = A very volatile gas that reacts differently with various gases.
reagent-name-zauker = zauker
reagent-desc-zauker = A highly toxic gas, it's production is highly regulated on top of being difficult. It also breaks down when in contact with nitrogen.
reagent-name-halon = halon
reagent-desc-halon = A potent fire supressant. Removes oxygen from high temperature fires and cools down the area.
reagent-name-helium = helium
reagent-desc-helium = A very inert gas produced by the fusion of hydrogen and it's derivatives.
reagent-name-anti-nob = anti-noblium
reagent-desc-anti-nob = We still don't know what it does, but it sells for a lot.

View File

@@ -0,0 +1,138 @@
ent-GasCanister = { ent-BaseStructureDynamic }
.desc = { ent-BaseStructureDynamic.desc }
.suffix = { "" }
ent-StorageCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-AirCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-OxygenCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-NitrogenCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-CarbonDioxideCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-PlasmaCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-TritiumCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-WaterVaporCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-MiasmaCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-NitrousOxideCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-FrezonCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-BZCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-PluoxiumCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HydrogenCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-NitriumCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HealiumCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HyperNobliumCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-ProtoNitrateCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-ZaukerCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HalonCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HeliumCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-AntiNobliumCanister = { ent-GasCanister }
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-GasCanisterBrokenBase = { ent-BaseStructureDynamic }
.desc = { ent-BaseStructureDynamic.desc }
.suffix = { "" }
ent-StorageCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-AirCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-OxygenCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-NitrogenCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-CarbonDioxideCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-PlasmaCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-TritiumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-WaterVaporCanisterBroken = broken water vapor canister
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-MiasmaCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-NitrousOxideCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-FrezonCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-BZCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-PluoxiumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HydrogenCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-NitriumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HealiumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HyperNobliumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-ProtoNitrateCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-ZaukerCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HalonCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HeliumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-AntiNobliumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }

View File

@@ -7,3 +7,14 @@ gases-water-vapor = Водяной пар
gases-miasma = Миазмы
gases-n2o = Оксид азота
gases-frezon = Фрезон
gases-bz = БЗ
gases-pluoxium = Плюоксиум
gases-hydrogen = Водород
gases-nitrium = Нитриум
gases-healium = Хилиум
gases-hyper-noblium = Гипер-ноблий
gases-proto-nitrate = Прото-нитрат
gases-zauker = Заукер
gases-halon = Галон
gases-helium = Гелий
gases-anti-noblium = Анти-ноблий

View File

@@ -21,7 +21,29 @@ ent-MiasmaCanister = канистра миазм
ent-NitrousOxideCanister = канистра оксида азота
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится оксид азота. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-FrezonCanister = канистра фрезона
.desc = Хладагент с лёгкими галлюциногенными свойствами. Развлекайтесь.
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится фрезон. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-BZCanister = канистра бз
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится бз. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-PluoxiumCanister = канистра плюоксиума
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится плюоксиум. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-HydrogenCanister = канистра водорода
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится водород. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-NitriumCanister = канистра нитриума
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится нитриум. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-HealiumCanister = канистра хилиума
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится хилиум. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-HyperNobliumCanister = канистра гипер-ноблия
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится гипер-ноблий. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-ProtoNitrateCanister = канистра прото-нитрата
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится прото-нитрат. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-ZaukerCanister = канистра заукера
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится заукер. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-HalonCanister = канистра галона
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится галон. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-HeliumCanister = канистра гелия
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится гелий. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-AntiNobliumCanister = канистра анти-ноблия
.desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится анти-ноблий. Можно прикрепить к порту коннектора с помощью гаечного ключа.
ent-GasCanisterBrokenBase = разбитая канистра для газа
.desc = Разбитая канистра для газа. Не совсем бесполезна, так как может быть разобрана для получения высококачественных материалов.
ent-StorageCanisterBroken = { ent-GasCanisterBrokenBase }
@@ -46,3 +68,25 @@ ent-NitrousOxideCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-FrezonCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-BZCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-PluoxiumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HydrogenCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-NitriumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HealiumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HyperNobliumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-ProtoNitrateCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-ZaukerCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HalonCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-HeliumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-AntiNobliumCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }

View File

@@ -14,8 +14,6 @@ reagent-name-fluorine = фтор
reagent-desc-fluorine = Высокотоксичный бледно-жёлтый газ. Чрезвычайно реактивный.
reagent-name-gold = золото
reagent-desc-gold = Плотный, мягкий, блестящий металл, самый ковкий и пластичный из всех известных.
reagent-name-hydrogen = водород
reagent-desc-hydrogen = Легкий, легковоспламеняющийся газ.
reagent-name-iodine = йод
reagent-desc-iodine = Обычно добавляется в поваренную соль в качестве питательного вещества. Сам по себе он гораздо менее приятен на вкус.
reagent-name-iron = железо

View File

@@ -14,3 +14,25 @@ reagent-name-nitrous-oxide = оксид азота
reagent-desc-nitrous-oxide = Знаешь, как всё кажется смешнее, когда ты устал? Так вот...
reagent-name-frezon = фрезон
reagent-desc-frezon = Высокоэффективный хладагент... и галлюциноген.
reagent-name-bz = бз
reagent-desc-bz = Сильнодействующий галлюциноген, который также погружает слизней в стазис.
reagent-name-pluoxium = плюоксиум
reagent-desc-pluoxium = Газ, насыщающий кровь большим количеством кислорода, не будучи окислителем.
reagent-name-hydrogen = водород
reagent-desc-hydrogen = Легкий, легковоспламеняющийся газ.
reagent-name-nitrium = нитриум
reagent-desc-nitrium = Газообразный стимулятор, который при вдыхании может повысить скорость и выносливость.
reagent-name-healium = хилиум
reagent-desc-healium = Вызывает глубокий регенеративный сон.
reagent-name-hyper-nob = гипер-ноблий
reagent-desc-hyper-nob = Самый благородный газ из всех. Большое количество гипер-ноблия активно предотвращает возникновение реакций.
reagent-name-proto-nitrate = прото-нитрат
reagent-desc-proto-nitrate = Нестабильный газ, который по-разному реагирует с различными газами.
reagent-name-zauker = заукер
reagent-desc-zauker = Крайне токсичный газ, его производство строго регулируется, в дополнение к сложности его производства. Быстро распадается при контакте с азотом.
reagent-name-halon = галон
reagent-desc-halon = Мощный подавитель огня. При высоких температурах поглащает кислород и охлаждает помещение.
reagent-name-helium = гелий
reagent-desc-helium = Инертный газ, получаемый при синтезе водорода и его производных.
reagent-name-anti-nob = анти-ноблиум
reagent-desc-anti-nob = Мы до сих пор не знаем, что он делает, но он стоит дорого.

View File

@@ -34,6 +34,39 @@ ent-NitrousOxideCanister = канистра оксида азота
ent-FrezonCanister = канистра фрезона
.desc = Хладагент с лёгкими галлюциногенными свойствами. Развлекайтесь.
.suffix = { "" }
ent-BZCanister = канистра бз
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-PluoxiumCanister = канистра плюоксиума
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HydrogenCanister = канистра водорода
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-NitriumCanister = канистра нитриума
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HealiumCanister = канистра хилиума
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HyperNobliumCanister = канистра гипер-ноблия
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-ProtoNitrateCanister = канистра прото-нитрата
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-ZaukerCanister = канистра заукера
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HalonCanister = канистра галона
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-HeliumCanister = канистра гелия
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-AntiNobliumCanister = канистра анти-ноблия
.desc = { ent-GasCanister.desc }
.suffix = { "" }
ent-GasCanisterBrokenBase = разбитая канистра для газа
.desc = Разбитая канистра для газа. Не совсем бесполезна, так как может быть разобрана для получения высококачественных материалов.
.suffix = { "" }
@@ -70,3 +103,36 @@ ent-NitrousOxideCanisterBroken = разбитая канистра оксида
ent-FrezonCanisterBroken = разбитая канистра фрезона
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-BZCanisterBroken = разбитая канистра бз
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-PluoxiumCanisterBroken = разбитая канистра плюоксиума
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HydrogenCanisterBroken = разбитая канистра водорода
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-NitriumCanisterBroken = разбитая канистра нитриума
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HealiumCanisterBroken = разбитая канистра хилиума
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HyperNobliumCanisterBroken = разбитая канистра гипер-ноблия
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-ProtoNitrateCanisterBroken = разбитая канистра прото-нитрата
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-ZaukerCanisterBroken = разбитая канистра заукера
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HalonCanisterBroken = разбитая канистра галона
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-HeliumCanisterBroken = разбитая канистра гелия
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }
ent-AntiNobliumCanisterBroken = разбитая канистра анти-ноблия
.desc = { ent-GasCanisterBrokenBase.desc }
.suffix = { "" }

View File

@@ -1,4 +1,4 @@
- type: gas
- type: gas
id: 0
name: gases-oxygen
specificHeat: 20
@@ -100,3 +100,141 @@
color: 3a758c
reagent: Frezon
pricePerMole: 0.3
- type: gas
id: 9
name: gases-bz
specificHeat: 20
heatCapacityRatio: 1.3
molarMass: 100
color: e69edd
reagent: BZ
pricePerMole: 3
- type: gas
id: 10
name: gases-pluoxium
specificHeat: 80
heatCapacityRatio: 1.3
molarMass: 40
color: 0054AA
reagent: Pluoxium
pricePerMole: 5
- type: gas
id: 11
name: gases-hydrogen
specificHeat: 15
heatCapacityRatio: 1.4
molarMass: 2
color: FFFFFF
reagent: Hydrogen
pricePerMole: 5
- type: gas
id: 12
name: gases-nitrium
specificHeat: 10
heatCapacityRatio: 1.3
molarMass: 60
gasOverlaySprite: /Textures/Effects/atmospherics.rsi
gasOverlayState: nitrium
gasMolesVisible: 0.1
gasVisbilityFactor: 500
color: 7E4732
reagent: Nitrium
pricePerMole: 12
- type: gas
id: 13
name: gases-healium
specificHeat: 10
heatCapacityRatio: 1.3
molarMass: 40
gasOverlaySprite: /Textures/Effects/atmospherics.rsi
gasOverlayState: healium
gasMolesVisible: 0.1
gasVisbilityFactor: 500
color: d97e7e
reagent: Healium
pricePerMole: 12
- type: gas
id: 14
name: gases-hyper-noblium
specificHeat: 2000
heatCapacityRatio: 1.3
molarMass: 150
gasOverlaySprite: /Textures/Effects/atmospherics.rsi
gasOverlayState: frezon
gasMolesVisible: 0.1
gasVisbilityFactor: 1000
color: 33cccc
reagent: Hyper-Noblium
pricePerMole: 15
- type: gas
id: 15
name: gases-proto-nitrate
specificHeat: 30
heatCapacityRatio: 1.3
molarMass: 120
gasOverlaySprite: /Textures/Effects/atmospherics.rsi
gasOverlayState: proto_nitrate
gasMolesVisible: 0.1
gasVisbilityFactor: 1000
color: 009933
reagent: Proto-Nitrate
pricePerMole: 5
- type: gas
id: 16
name: gases-zauker
specificHeat: 350
heatCapacityRatio: 1.3
molarMass: 110
gasOverlaySprite: /Textures/Effects/atmospherics.rsi
gasOverlayState: zauker
gasMolesVisible: 0.1
gasVisbilityFactor: 250
color: 1c1a1a
reagent: Zauker
pricePerMole: 15
- type: gas
id: 17
name: gases-halon
specificHeat: 1.4
heatCapacityRatio: 1.3
molarMass: 150
gasOverlaySprite: /Textures/Effects/atmospherics.rsi
gasOverlayState: halon
gasMolesVisible: 0.1
gasVisbilityFactor: 500
color: e3574d
reagent: Halon
pricePerMole: 8
- type: gas
id: 18
name: gases-helium
specificHeat: 15
heatCapacityRatio: 20
molarMass: 4
color: 005959
reagent: Helium
pricePerMole: 7
- type: gas
id: 19
name: gases-anti-noblium
specificHeat: 1
heatCapacityRatio: 1
molarMass: 200
gasOverlaySprite: /Textures/Effects/atmospherics.rsi
gasOverlayState: anti_noblium
gasMolesVisible: 0.1
gasVisbilityFactor: 100
color: 525151
reagent: Anti-Noblium
pricePerMole: 20

View File

@@ -106,3 +106,373 @@
# - !type:WaterVaporReaction
# gas: 5
# reagent: Water
- type: gasReaction
id: BZProductionReaction
priority: 3
maximumTemperature: 313.149
minimumRequirements:
- 0 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 10 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 10 # n2o
- 0 # frezon
- 0 # bz
effects:
- !type:BZProductionReaction {}
- type: gasReaction
id: PluoxiumProductionReaction
priority: 4
minimumTemperature: 50
maximumTemperature: 273.15
minimumRequirements:
- 0.01 # oxygen
- 0 # nitrogen
- 0.01 # carbon dioxide
- 0 # plasma
- 0.01 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0 # pluoxium
effects:
- !type:PluoxiumProductionReaction {}
- type: gasReaction
id: HydrogenFireReaction
priority: -3
minimumTemperature: 373.149 # Same as Atmospherics.FireMinimumTemperatureToExist
minimumRequirements:
- 0.01 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0 # pluoxium
- 0.01 # hydrogen
effects:
- !type:HydrogenFireReaction {}
- type: gasReaction
id: NitriumProduction
priority: 5
minimumTemperature: 1500
minimumRequirements:
- 0 # oxygen
- 10 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 20 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 5 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0 # proto-nitrate
- 0 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:NitriumProductionReaction {}
- type: gasReaction
id: NitriumDecomposition
priority: 6
maximumTemperature: 343.15
minimumRequirements:
- 0.01 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0.01 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0 # proto-nitrate
- 0 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:NitriumDecompositionReaction {}
- type: gasReaction
id: HyperNobliumProduction
priority: 7
minimumTemperature: 2.7
maximumTemperature: 15
minimumRequirements:
- 0 # oxygen
- 10 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 5 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0 # proto-nitrate
- 0 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:HyperNobliumProductionReaction {}
- type: gasReaction
id: HalonOxygenAbsorption
priority: -4
minimumTemperature: 373.149
minimumRequirements:
- 0.01 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0 # proto-nitrate
- 0 # zauker
- 0.01 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:HalonOxygenAbsorptionReaction {}
- type: gasReaction
id: HealiumProduction
priority: 8
minimumTemperature: 25
maximumTemperature: 300
minimumRequirements:
- 0 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0.01 # frezon
- 0.01 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0 # proto-nitrate
- 0 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:HealiumProductionReaction {}
- type: gasReaction
id: ZaukerProduction
priority: 9
minimumTemperature: 50000
maximumTemperature: 75000
minimumRequirements:
- 0 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0.01 # nitrium
- 0 # healium
- 0.01 # hyper-noblium
- 0 # proto-nitrate
- 0 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:ZaukerProductionReaction {}
- type: gasReaction
id: ZaukerDecomposition
priority: 10
minimumRequirements:
- 0 # oxygen
- 0.01 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0 # proto-nitrate
- 0.01 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:ZaukerDecompositionReaction {}
- type: gasReaction
id: ProtoNitrateProduction
priority: 11
minimumTemperature: 5000
maximumTemperature: 10000
minimumRequirements:
- 0 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0.01 # pluoxium
- 0.01 # hydrogen
- 0 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0 # proto-nitrate
- 0 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:ProtoNitrateProductionReaction {}
- type: gasReaction
id: ProtoNitrateHydrogenConversion
priority: 12
minimumRequirements:
- 0 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0 # pluoxium
- 150 # hydrogen
- 0 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0.01 # proto-nitrate
- 0 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:ProtoNitrateHydrogenConversionReaction {}
- type: gasReaction
id: ProtoNitrateTritiumDeirradiation
priority: 13
minimumTemperature: 150
maximumTemperature: 340
minimumRequirements:
- 0 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0.01 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0.01 # proto-nitrate
- 0 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:ProtoNitrateTritiumConversionReaction {}
- type: gasReaction
id: ProtoNitrateBZaseAction
priority: 14
minimumTemperature: 260
maximumTemperature: 280
minimumRequirements:
- 0 # oxygen
- 0 # nitrogen
- 0 # carbon dioxide
- 0 # plasma
- 0 # tritium
- 0 # vapor
- 0 # miasma
- 0 # n2o
- 0 # frezon
- 0.01 # bz
- 0 # pluoxium
- 0 # hydrogen
- 0 # nitrium
- 0 # healium
- 0 # hyper-noblium
- 0.01 # proto-nitrate
- 0 # zauker
- 0 # halon
- 0 # helium
- 0 # anti-noblium
effects:
- !type:ProtoNitrateBZaseConversionReaction {}

View File

@@ -67,6 +67,13 @@
upperWarnAround: !type:AlarmThresholdSetting
threshold: 0.5
- type: alarmThreshold
id: unwanted
upperBound: !type:AlarmThresholdSetting
threshold: 0.0025
upperWarnAround: !type:AlarmThresholdSetting
threshold: 0.5
- type: alarmThreshold
id: ignore # just ignore nitrogen??? ??? ???
ignore: true

View File

@@ -53,6 +53,17 @@
Ammonia: stationAmmonia
NitrousOxide: stationNO
Frezon: danger
BZ: danger
Pluoxium: unwanted
Hydrogen: danger
Nitrium: unwanted
Healium: danger
HyperNoblium: unwanted
ProtoNitrate: danger
Zauker: danger
Halon: danger
Helium: unwanted
AntiNoblium: danger
- type: Tag
tags:
- GasVent
@@ -144,6 +155,17 @@
Ammonia: stationAmmonia
NitrousOxide: stationNO
Frezon: danger
BZ: danger
Pluoxium: unwanted
Hydrogen: danger
Nitrium: unwanted
Healium: danger
HyperNoblium: unwanted
ProtoNitrate: danger
Zauker: danger
Halon: danger
Helium: unwanted
AntiNoblium: danger
- type: Tag
tags:
- GasScrubber

View File

@@ -58,6 +58,17 @@
Ammonia: stationAmmonia
NitrousOxide: stationNO
Frezon: danger
BZ: danger
Pluoxium: unwanted
Hydrogen: danger
Nitrium: unwanted
Healium: danger
HyperNoblium: unwanted
ProtoNitrate: danger
Zauker: danger
Halon: danger
Helium: unwanted
AntiNoblium: danger
- type: Tag
tags:
- AirSensor

View File

@@ -123,6 +123,7 @@
- 0 # Ammonia
- 0 # N2O
- 0 # Frezon
- 0 # BZ
temperature: 293.15
- type: Destructible
thresholds:
@@ -609,6 +610,610 @@
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: BZCanister
components:
- type: Sprite
layers:
- state: purple
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 1871.71051 # BZ
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
BZCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: PluoxiumCanister
components:
- type: Sprite
layers:
- state: darkblue
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 1871.71051 # Pluoxium
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
PluoxiumCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: HydrogenCanister
components:
- type: Sprite
layers:
- state: h2
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 0 # Pluoxium
- 1871.71051 # Hydrogen
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
HydrogenCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: NitriumCanister
components:
- type: Sprite
layers:
- state: brown
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 0 # Pluoxium
- 0 # Hydrogen
- 1871.71051 # Nitrium
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
NitriumCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: HealiumCanister
components:
- type: Sprite
layers:
- state: healium
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 0 # Pluoxium
- 0 # Hydrogen
- 0 # Nitrium
- 1871.71051 # Healium
- 0 # Hyper-Noblium
- 0 # Proto-Nitrate
- 0 # Zauker
- 0 # Halon
- 0 # Helium
- 0 # Anti-Noblium
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
HealiumCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: HyperNobliumCanister
components:
- type: Sprite
layers:
- state: nob
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 0 # Pluoxium
- 0 # Hydrogen
- 0 # Nitrium
- 0 # Healium
- 1871.71051 # Hyper-Noblium
- 0 # Proto-Nitrate
- 0 # Zauker
- 0 # Halon
- 0 # Helium
- 0 # Anti-Noblium
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
HyperNobliumCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: ProtoNitrateCanister
components:
- type: Sprite
layers:
- state: proto_nitrate
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 0 # Pluoxium
- 0 # Hydrogen
- 0 # Nitrium
- 0 # Healium
- 0 # Hyper-Noblium
- 1871.71051 # Proto-Nitrate
- 0 # Zauker
- 0 # Halon
- 0 # Helium
- 0 # Anti-Noblium
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
ProtoNitrateCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: ZaukerCanister
components:
- type: Sprite
layers:
- state: zauker
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 0 # Pluoxium
- 0 # Hydrogen
- 0 # Nitrium
- 0 # Healium
- 0 # Hyper-Noblium
- 0 # Proto-Nitrate
- 1871.71051 # Zauker
- 0 # Halon
- 0 # Helium
- 0 # Anti-Noblium
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
ZaukerCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: HalonCanister
components:
- type: Sprite
layers:
- state: halon
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 0 # Pluoxium
- 0 # Hydrogen
- 0 # Nitrium
- 0 # Healium
- 0 # Hyper-Noblium
- 0 # Proto-Nitrate
- 0 # Zauker
- 1871.71051 # Halon
- 0 # Helium
- 0 # Anti-Noblium
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
HalonCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: HeliumCanister
components:
- type: Sprite
layers:
- state: helium
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 0 # Pluoxium
- 0 # Hydrogen
- 0 # Nitrium
- 0 # Healium
- 0 # Hyper-Noblium
- 0 # Proto-Nitrate
- 0 # Zauker
- 0 # Halon
- 1871.71051 # Helium
- 0 # Anti-Noblium
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
HeliumCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
- type: entity
parent: GasCanister
id: AntiNobliumCanister
components:
- type: Sprite
layers:
- state: antinob
- type: GasCanister
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- 0 # Miasma
- 0 # N2O
- 0 # Frezon
- 0 # BZ
- 0 # Pluoxium
- 0 # Hydrogen
- 0 # Nitrium
- 0 # Healium
- 0 # Hyper-Noblium
- 0 # Proto-Nitrate
- 0 # Zauker
- 0 # Halon
- 0 # Helium
- 1871.71051 # Anti-Noblium
temperature: 293.15
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
AntiNobliumCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
- type: Lock
locked: true
# Broke Entities
- type: entity
@@ -751,3 +1356,91 @@
components:
- type: Sprite
state: frezon-1
- type: entity
parent: GasCanisterBrokenBase
id: BZCanisterBroken
noSpawn: true
components:
- type: Sprite
state: purple-1
- type: entity
parent: GasCanisterBrokenBase
id: PluoxiumCanisterBroken
noSpawn: true
components:
- type: Sprite
state: darkblue-1
- type: entity
parent: GasCanisterBrokenBase
id: HydrogenCanisterBroken
noSpawn: true
components:
- type: Sprite
state: h2-1
- type: entity
parent: GasCanisterBrokenBase
id: NitriumCanisterBroken
noSpawn: true
components:
- type: Sprite
state: brown-1
- type: entity
parent: GasCanisterBrokenBase
id: HealiumCanisterBroken
noSpawn: true
components:
- type: Sprite
state: healium-1
- type: entity
parent: GasCanisterBrokenBase
id: HyperNobliumCanisterBroken
noSpawn: true
components:
- type: Sprite
state: nob-1
- type: entity
parent: GasCanisterBrokenBase
id: ProtoNitrateCanisterBroken
noSpawn: true
components:
- type: Sprite
state: proto_nitrate-1
- type: entity
parent: GasCanisterBrokenBase
id: ZaukerCanisterBroken
noSpawn: true
components:
- type: Sprite
state: zauker-1
- type: entity
parent: GasCanisterBrokenBase
id: HalonCanisterBroken
noSpawn: true
components:
- type: Sprite
state: halon-1
- type: entity
parent: GasCanisterBrokenBase
id: HeliumCanisterBroken
noSpawn: true
components:
- type: Sprite
state: helium-1
- type: entity
parent: GasCanisterBrokenBase
id: AntiNobliumCanisterBroken
noSpawn: true
components:
- type: Sprite
state: antinob-1

View File

@@ -116,17 +116,6 @@
boilingPoint: 2700.0
meltingPoint: 1064.76
- type: reagent
id: Hydrogen
name: reagent-name-hydrogen
group: Elements
desc: reagent-desc-hydrogen
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#808080"
boilingPoint: -253.0
meltingPoint: -259.2
- type: reagent
id: Iodine
name: reagent-name-iodine

View File

@@ -324,3 +324,289 @@
- !type:ReagentThreshold
reagent: Frezon
min: 1
- type: reagent
id: BZ
name: reagent-name-bz
desc: reagent-desc-bz
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#e69edd"
metabolisms:
Gas:
effects:
- !type:GenericStatusEffect
key: SeeingRainbows
component: SeeingRainbows
type: Add
time: 8
refresh: false
- !type:HealthChange
conditions:
- !type:ReagentThreshold
reagent: BZ
min: 0.5
scaleByQuantity: true
ignoreResistances: true
damage:
types:
Cellular: 0.005
- !type:PopupMessage
conditions:
- !type:ReagentThreshold
reagent: BZ
min: 1
- !type:OrganType
type: Slime
type: Local
visualType: Medium
messages: [ "effect-sleepy" ]
probability: 0.1
- !type:MovespeedModifier
conditions:
- !type:ReagentThreshold
reagent: BZ
min: 1
- !type:OrganType
type: Slime
walkSpeedModifier: 0.65
sprintSpeedModifier: 0.65
- !type:GenericStatusEffect
conditions:
- !type:ReagentThreshold
reagent: BZ
min: 1
- !type:OrganType
type: Slime
key: ForcedSleep
component: ForcedSleeping
time: 3
type: Add
- type: reagent
id: Pluoxium
name: reagent-name-pluoxium
desc: reagent-desc-pluoxium
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#0054AA"
boilingPoint: -183.0
meltingPoint: -218.4
metabolisms:
Gas:
effects:
- !type:Oxygenate
factor: 8
conditions:
- !type:OrganType
type: Human
- !type:Oxygenate
factor: 8
conditions:
- !type:OrganType
type: Animal
- !type:Oxygenate
factor: 8
conditions:
- !type:OrganType
type: Rat
- !type:Oxygenate
factor: 8
conditions:
- !type:OrganType
type: Plant
- !type:ModifyLungGas
conditions:
- !type:OrganType
type: Vox
shouldHave: false
ratios:
CarbonDioxide: 1.0
Pluoxium: -1.0
- type: reagent
id: Hydrogen
name: reagent-name-hydrogen
desc: reagent-desc-hydrogen
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#808080"
boilingPoint: -253.0
meltingPoint: -259.2
- type: reagent
id: Nitrium
name: reagent-name-nitrium
desc: reagent-desc-nitrium
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#7E4732"
boilingPoint: -253.0
meltingPoint: -259.2
metabolisms:
Gas:
effects:
- !type:MovespeedModifier
conditions:
- !type:ReagentThreshold
reagent: Nitrium
min: 3
statusLifetime: 0.25
walkSpeedModifier: 1.5
sprintSpeedModifier: 1.5
- !type:GenericStatusEffect
conditions:
- !type:ReagentThreshold
min: 6
key: Stun
time: 1
type: Remove
- !type:GenericStatusEffect
conditions:
- !type:ReagentThreshold
min: 6
key: KnockedDown
time: 5
type: Remove
- !type:GenericStatusEffect
conditions:
- !type:ReagentThreshold
min: 6
key: ForcedSleep
component: ForcedSleeping
time: 15
type: Remove
- !type:HealthChange
conditions:
- !type:ReagentThreshold
reagent: Nitrium
min: 9
scaleByQuantity: true
ignoreResistances: true
damage:
types:
Poison: 0.05
- type: reagent
id: Healium
name: reagent-name-healium
desc: reagent-desc-healium
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#d97e7e"
boilingPoint: -253.0
meltingPoint: -259.2
metabolisms:
Gas:
effects:
- !type:GenericStatusEffect
conditions:
- !type:ReagentThreshold
reagent: Healium
min: 2
key: ForcedSleep
component: ForcedSleeping
time: 3
type: Add
- !type:HealthChange
conditions:
- !type:ReagentThreshold
reagent: Healium
min: 2
scaleByQuantity: true
ignoreResistances: true
damage:
groups:
Brute: -0.5
Burn: -0.5
Toxin: -1.25
- type: reagent
id: Hyper-Noblium
name: reagent-name-hyper-nob
desc: reagent-desc-hyper-nob
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#33cccc"
boilingPoint: -253.0
meltingPoint: -259.2
- type: reagent
id: Proto-Nitrate
name: reagent-name-proto-nitrate
desc: reagent-desc-proto-nitrate
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#009933"
boilingPoint: -253.0
meltingPoint: -259.2
- type: reagent
id: Zauker
name: reagent-name-zauker
desc: reagent-desc-zauker
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#1c1a1a"
boilingPoint: -253.0
meltingPoint: -259.2
metabolisms:
Gas:
effects:
- !type:HealthChange
conditions:
- !type:ReagentThreshold
reagent: Zauker
min: 0.25
max: 8
scaleByQuantity: true
ignoreResistances: true
damage:
types:
Slash: 0.75
Heat: 0.25
Poison: 0.25
Bloodloss: 0.25
- !type:HealthChange
conditions:
- !type:ReagentThreshold
reagent: Zauker
min: 8
scaleByQuantity: true
ignoreResistances: true
damage:
types:
Slash: 0.015
Heat: 0.005
Poison: 0.005
Bloodloss: 0.005
- type: reagent
id: Halon
name: reagent-name-halon
desc: reagent-desc-halon
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#e3574d"
boilingPoint: -253.0
meltingPoint: -259.2
- type: reagent
id: Helium
name: reagent-name-helium
desc: reagent-desc-helium
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#005959"
boilingPoint: -253.0
meltingPoint: -259.2
- type: reagent
id: Anti-Noblium
name: reagent-name-anti-nob
desc: reagent-desc-anti-nob
physicalDesc: reagent-physical-desc-gaseous
flavor: bitter
color: "#525151"
boilingPoint: -253.0
meltingPoint: -259.2

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 04e43d8c1d5097fdb697addd4395fb849dd341bd", "states": [{"name": "chem_gas_old", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "frezon", "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "frezon_old", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "fusion_gas", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "miasma", "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "miasma_old", "delays": [[0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998]]}, {"name": "nitrous_oxide", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "nitrous_oxide_old", "delays": [[0.2, 0.2, 0.2]]}, {"name": "nitryl", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "nitryl_old", "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "plasma", "delays": [[0.1, 0.1, 0.1]]}, {"name": "plasma_old", "delays": [[0.2, 0.2, 0.2]]}, {"name": "tritium", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "tritium_old", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "water_vapor", "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "water_vapor_old", "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2]]}]}
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 2daed544a9e64997833ff2cbe74b216dc982427f", "states": [{"name": "chem_gas_old", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "frezon", "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "frezon_old", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "fusion_gas", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "miasma", "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]}, {"name": "miasma_old", "delays": [[0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998, 0.22999999999999998]]}, {"name": "nitrous_oxide", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "nitrous_oxide_old", "delays": [[0.2, 0.2, 0.2]]}, {"name": "nitryl", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "nitryl_old", "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "plasma", "delays": [[0.1, 0.1, 0.1]]}, {"name": "plasma_old", "delays": [[0.2, 0.2, 0.2]]}, {"name": "tritium", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "tritium_old", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "water_vapor", "delays": [[0.2, 0.2, 0.2, 0.3, 0.3, 0.2, 0.2, 0.2]]},{"name": "nitrium", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]} ,{"name": "proto_nitrate", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]},{"name": "zauker", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]},{"name": "anti_noblium", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]},{"name": "healium", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]},{"name": "halon", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "water_vapor_old", "delays": [[0.2, 0.2, 0.2, 0.2, 0.2, 0.2]]}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

View File

@@ -117,6 +117,72 @@
},
{
"name": "scrubber-open"
},
{
"name": "brown"
},
{
"name": "brown-1"
},
{
"name": "purple"
},
{
"name": "purple-1"
},
{
"name": "helium"
},
{
"name": "helium-1"
},
{
"name": "nob"
},
{
"name": "nob-1"
},
{
"name": "healium"
},
{
"name": "healium-1"
},
{
"name": "proto_nitrate"
},
{
"name": "proto_nitrate-1"
},
{
"name": "halon"
},
{
"name": "halon-1"
},
{
"name": "darkpurple"
},
{
"name": "darkpurple-1"
},
{
"name": "antinob"
},
{
"name": "antinob-1"
},
{
"name": "h2"
},
{
"name": "h2-1"
},
{
"name": "zauker"
},
{
"name": "zauker-1"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B