diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs index 575391cdfd5043..f0d8ee16a5a014 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs @@ -43,7 +43,7 @@ private void ProcessHotspot(GridAtmosphereComponent gridAtmosphere, TileAtmosphe 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); @@ -108,12 +108,14 @@ private void HotspotExpose(GridAtmosphereComponent gridAtmosphere, TileAtmospher 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; @@ -125,10 +127,10 @@ private void HotspotExpose(GridAtmosphereComponent gridAtmosphere, TileAtmospher 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 { diff --git a/Content.Server/Atmos/Portable/PortableScrubberComponent.cs b/Content.Server/Atmos/Portable/PortableScrubberComponent.cs index 4dab51e7343f4e..0a76ae785e1b39 100644 --- a/Content.Server/Atmos/Portable/PortableScrubberComponent.cs +++ b/Content.Server/Atmos/Portable/PortableScrubberComponent.cs @@ -30,7 +30,18 @@ public sealed class PortableScrubberComponent : Component Gas.WaterVapor, Gas.Miasma, 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)] diff --git a/Content.Server/Atmos/Reactions/BZProductionReaction.cs b/Content.Server/Atmos/Reactions/BZProductionReaction.cs new file mode 100644 index 00000000000000..06b22015f3c5b6 --- /dev/null +++ b/Content.Server/Atmos/Reactions/BZProductionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs b/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs index b300a839c4ee2d..439ae6176fb8f1 100644 --- a/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs +++ b/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs @@ -12,6 +12,10 @@ public sealed class FrezonCoolantReaction : 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 oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture); var temperature = mixture.Temperature; diff --git a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs index 8abba18f552da3..a21648a460e643 100644 --- a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs +++ b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs @@ -13,6 +13,10 @@ public sealed class FrezonProductionReaction : 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 initialN2 = mixture.GetMoles(Gas.Nitrogen); var initialOxy = mixture.GetMoles(Gas.Oxygen); var initialTrit = mixture.GetMoles(Gas.Tritium); diff --git a/Content.Server/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs b/Content.Server/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs new file mode 100644 index 00000000000000..e3b717d1c419e7 --- /dev/null +++ b/Content.Server/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/HealiumProductionReaction.cs b/Content.Server/Atmos/Reactions/HealiumProductionReaction.cs new file mode 100644 index 00000000000000..8e2d5c5c080b07 --- /dev/null +++ b/Content.Server/Atmos/Reactions/HealiumProductionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/HydrogenFireReaction.cs b/Content.Server/Atmos/Reactions/HydrogenFireReaction.cs new file mode 100644 index 00000000000000..e89c22c1421603 --- /dev/null +++ b/Content.Server/Atmos/Reactions/HydrogenFireReaction.cs @@ -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; + } + } +} diff --git a/Content.Server/Atmos/Reactions/HyperNobliumProductionReaction.cs b/Content.Server/Atmos/Reactions/HyperNobliumProductionReaction.cs new file mode 100644 index 00000000000000..d72a5b6f1778e1 --- /dev/null +++ b/Content.Server/Atmos/Reactions/HyperNobliumProductionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/MiasmicSubsumationReaction.cs b/Content.Server/Atmos/Reactions/MiasmicSubsumationReaction.cs index 6d0c8b01fe74cb..2ef0f550e9c0b1 100644 --- a/Content.Server/Atmos/Reactions/MiasmicSubsumationReaction.cs +++ b/Content.Server/Atmos/Reactions/MiasmicSubsumationReaction.cs @@ -12,6 +12,10 @@ public sealed class MiasmicSubsumationReaction : 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 initialMiasma = mixture.GetMoles(Gas.Miasma); var initialFrezon = mixture.GetMoles(Gas.Frezon); diff --git a/Content.Server/Atmos/Reactions/NitriumDecompositionReaction.cs b/Content.Server/Atmos/Reactions/NitriumDecompositionReaction.cs new file mode 100644 index 00000000000000..6ebda1afcac5c1 --- /dev/null +++ b/Content.Server/Atmos/Reactions/NitriumDecompositionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/NitriumProductionReaction.cs b/Content.Server/Atmos/Reactions/NitriumProductionReaction.cs new file mode 100644 index 00000000000000..a78950f7e01be8 --- /dev/null +++ b/Content.Server/Atmos/Reactions/NitriumProductionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs b/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs index cd8a773344c1b7..a34826aba5f08f 100644 --- a/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs +++ b/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs @@ -10,6 +10,10 @@ public sealed class PlasmaFireReaction : 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; diff --git a/Content.Server/Atmos/Reactions/PluoxiumProductionReaction.cs b/Content.Server/Atmos/Reactions/PluoxiumProductionReaction.cs new file mode 100644 index 00000000000000..3673c589b25d5e --- /dev/null +++ b/Content.Server/Atmos/Reactions/PluoxiumProductionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/ProtoNitrateBZaseActionReaction.cs b/Content.Server/Atmos/Reactions/ProtoNitrateBZaseActionReaction.cs new file mode 100644 index 00000000000000..7a4b97dd1bdf70 --- /dev/null +++ b/Content.Server/Atmos/Reactions/ProtoNitrateBZaseActionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/ProtoNitrateHydrogenConversionReaction.cs b/Content.Server/Atmos/Reactions/ProtoNitrateHydrogenConversionReaction.cs new file mode 100644 index 00000000000000..78021899fe17a6 --- /dev/null +++ b/Content.Server/Atmos/Reactions/ProtoNitrateHydrogenConversionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/ProtoNitrateProductionReaction.cs b/Content.Server/Atmos/Reactions/ProtoNitrateProductionReaction.cs new file mode 100644 index 00000000000000..835c2eedbf8c00 --- /dev/null +++ b/Content.Server/Atmos/Reactions/ProtoNitrateProductionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/ProtoNitrateTritiumDeirradiationReaction.cs b/Content.Server/Atmos/Reactions/ProtoNitrateTritiumDeirradiationReaction.cs new file mode 100644 index 00000000000000..246d719ea6f3f9 --- /dev/null +++ b/Content.Server/Atmos/Reactions/ProtoNitrateTritiumDeirradiationReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/TritiumFireReaction.cs b/Content.Server/Atmos/Reactions/TritiumFireReaction.cs index c66a005915d381..a2111f02cc144f 100644 --- a/Content.Server/Atmos/Reactions/TritiumFireReaction.cs +++ b/Content.Server/Atmos/Reactions/TritiumFireReaction.cs @@ -10,6 +10,10 @@ public sealed class TritiumFireReaction : 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; diff --git a/Content.Server/Atmos/Reactions/ZaukerDecompositionReaction.cs b/Content.Server/Atmos/Reactions/ZaukerDecompositionReaction.cs new file mode 100644 index 00000000000000..c5243fed78cfc7 --- /dev/null +++ b/Content.Server/Atmos/Reactions/ZaukerDecompositionReaction.cs @@ -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; + } +} diff --git a/Content.Server/Atmos/Reactions/ZaukerProductionReaction.cs b/Content.Server/Atmos/Reactions/ZaukerProductionReaction.cs new file mode 100644 index 00000000000000..1535e3fde5bb46 --- /dev/null +++ b/Content.Server/Atmos/Reactions/ZaukerProductionReaction.cs @@ -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; + } +} diff --git a/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs b/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs index 5f2c2f5ff67e73..3a00f7aa83b587 100644 --- a/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs +++ b/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs @@ -13,6 +13,9 @@ public sealed class GasLeakRuleComponent : Component Gas.Plasma, Gas.Tritium, Gas.Frezon, + Gas.BZ, + Gas.Hydrogen, + Gas.Halon }; /// diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs index 4afc1fdb5f993b..d333b8a8b525fb 100644 --- a/Content.Shared/Atmos/Atmospherics.cs +++ b/Content.Shared/Atmos/Atmospherics.cs @@ -168,7 +168,7 @@ static Atmospherics() /// /// Total number of gases. Increase this if you want to add more! /// - public const int TotalNumberOfGases = 9; + public const int TotalNumberOfGases = 20; /// /// This is the actual length of the gases arrays in mixtures. @@ -246,6 +246,51 @@ static Atmospherics() /// public const float HazardHighPressure = 550f; + /// + /// Defines energy released in BZ formation. + /// + public const float BZFormationEnergy = 80000f; + + /// + /// Defines energy released in N2O decomposition reaction. + /// + public const float NitrousOxideDecompositionEnergy = 200000f; + + /// + /// Defines energy released in Pluoxium formation. + /// + public const float PluoxiumFormationEnergy = 250f; + + /// + /// The maximum amount of pluoxium that can form per reaction tick. + /// + 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; + /// /// Determines when the orange pressure icon is displayed. /// @@ -345,6 +390,17 @@ public enum Gas : sbyte WaterVapor = 5, Miasma = 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 } } diff --git a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs index 2ef5cebba50661..c0b30b71712b48 100644 --- a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs +++ b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs @@ -22,7 +22,18 @@ public sealed class GasVentScrubberData : IAtmosDeviceData Gas.WaterVapor, Gas.Miasma, 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 diff --git a/Resources/Locale/en-US/gases/gases.ftl b/Resources/Locale/en-US/gases/gases.ftl index 3166cd059b3da6..e70078563e1a77 100644 --- a/Resources/Locale/en-US/gases/gases.ftl +++ b/Resources/Locale/en-US/gases/gases.ftl @@ -7,3 +7,14 @@ gases-water-vapor = Water Vapor gases-miasma = Miasma 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 diff --git a/Resources/Locale/en-US/prototypes/entities/structures/storage/canisters/gas-canisters.ftl b/Resources/Locale/en-US/prototypes/entities/structures/storage/canisters/gas-canisters.ftl index d2592c2c33f531..a76f1991de90a7 100644 --- a/Resources/Locale/en-US/prototypes/entities/structures/storage/canisters/gas-canisters.ftl +++ b/Resources/Locale/en-US/prototypes/entities/structures/storage/canisters/gas-canisters.ftl @@ -32,7 +32,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. @@ -69,3 +102,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 } diff --git a/Resources/Locale/en-US/reagents/meta/elements.ftl b/Resources/Locale/en-US/reagents/meta/elements.ftl index 6d6439565ba239..bbd20cca4a3985 100644 --- a/Resources/Locale/en-US/reagents/meta/elements.ftl +++ b/Resources/Locale/en-US/reagents/meta/elements.ftl @@ -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. @@ -65,4 +62,4 @@ reagent-name-bananium = bananium reagent-desc-bananium = A yellow radioactive organic solid. reagent-name-zinc = zinc -reagent-desc-zinc = A silvery, brittle metal, often used in batteries to carry charge. \ No newline at end of file +reagent-desc-zinc = A silvery, brittle metal, often used in batteries to carry charge. diff --git a/Resources/Locale/en-US/reagents/meta/gases.ftl b/Resources/Locale/en-US/reagents/meta/gases.ftl index f003da6d2d60fd..40fcf8dbbd1889 100644 --- a/Resources/Locale/en-US/reagents/meta/gases.ftl +++ b/Resources/Locale/en-US/reagents/meta/gases.ftl @@ -21,3 +21,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. diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/storage/canisters/gas_canisters.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/storage/canisters/gas_canisters.ftl index 81d276e40729d7..2a515b96c06650 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/storage/canisters/gas_canisters.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/storage/canisters/gas_canisters.ftl @@ -34,6 +34,39 @@ ent-NitrousOxideCanister = { ent-GasCanister } 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 = { "" } @@ -70,3 +103,36 @@ ent-NitrousOxideCanisterBroken = { ent-GasCanisterBrokenBase } 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 = { "" } diff --git a/Resources/Locale/ru-RU/gases/gases.ftl b/Resources/Locale/ru-RU/gases/gases.ftl index 6740720ca86276..bb25f54665d6ac 100644 --- a/Resources/Locale/ru-RU/gases/gases.ftl +++ b/Resources/Locale/ru-RU/gases/gases.ftl @@ -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 = Анти-ноблий diff --git a/Resources/Locale/ru-RU/prototypes/entities/structures/storage/canisters/gas-canisters.ftl b/Resources/Locale/ru-RU/prototypes/entities/structures/storage/canisters/gas-canisters.ftl index 3762d46aa70ae3..cff8a2159b4e64 100644 --- a/Resources/Locale/ru-RU/prototypes/entities/structures/storage/canisters/gas-canisters.ftl +++ b/Resources/Locale/ru-RU/prototypes/entities/structures/storage/canisters/gas-canisters.ftl @@ -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 } diff --git a/Resources/Locale/ru-RU/reagents/meta/elements.ftl b/Resources/Locale/ru-RU/reagents/meta/elements.ftl index bcb372024f27c1..011c2b8d3db2ee 100644 --- a/Resources/Locale/ru-RU/reagents/meta/elements.ftl +++ b/Resources/Locale/ru-RU/reagents/meta/elements.ftl @@ -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 = железо diff --git a/Resources/Locale/ru-RU/reagents/meta/gases.ftl b/Resources/Locale/ru-RU/reagents/meta/gases.ftl index f77489d6ac66bd..05c0063dd3a73b 100644 --- a/Resources/Locale/ru-RU/reagents/meta/gases.ftl +++ b/Resources/Locale/ru-RU/reagents/meta/gases.ftl @@ -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 = Мы до сих пор не знаем, что он делает, но он стоит дорого. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/storage/canisters/gas_canisters.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/storage/canisters/gas_canisters.ftl index a1a868b16a7247..27436cc52388e5 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/storage/canisters/gas_canisters.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/storage/canisters/gas_canisters.ftl @@ -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 = { "" } diff --git a/Resources/Prototypes/Atmospherics/gases.yml b/Resources/Prototypes/Atmospherics/gases.yml index ed05edf13e4d3d..d2df6ac9444f73 100644 --- a/Resources/Prototypes/Atmospherics/gases.yml +++ b/Resources/Prototypes/Atmospherics/gases.yml @@ -100,3 +100,141 @@ color: 3a758c reagent: Frezon pricePerMole: 7.5 + +- 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 diff --git a/Resources/Prototypes/Atmospherics/reactions.yml b/Resources/Prototypes/Atmospherics/reactions.yml index a01bf80f31ba94..e7a8a3e8ba015c 100644 --- a/Resources/Prototypes/Atmospherics/reactions.yml +++ b/Resources/Prototypes/Atmospherics/reactions.yml @@ -89,3 +89,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 {} diff --git a/Resources/Prototypes/Atmospherics/thresholds.yml b/Resources/Prototypes/Atmospherics/thresholds.yml index b93174a39a08db..d26fcf87e6062f 100644 --- a/Resources/Prototypes/Atmospherics/thresholds.yml +++ b/Resources/Prototypes/Atmospherics/thresholds.yml @@ -60,6 +60,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 diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml index 7e6f0335476aec..57a42abbaf86b2 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml @@ -50,6 +50,17 @@ Miasma: stationMiasma 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 @@ -139,6 +150,17 @@ Miasma: stationMiasma 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 diff --git a/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml b/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml index 727e88d70f2957..e3a967509e3a5f 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml @@ -58,6 +58,17 @@ Miasma: stationMiasma 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 diff --git a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml index 6d4e7a29a4845e..244e0dc8a05658 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml @@ -117,6 +117,7 @@ - 0 # Miasma - 0 # N2O - 0 # Frezon + - 0 # BZ temperature: 293.15 - type: Destructible thresholds: @@ -561,6 +562,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 @@ -703,3 +1308,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 diff --git a/Resources/Prototypes/Reagents/elements.yml b/Resources/Prototypes/Reagents/elements.yml index 618dea7c9027d0..b1d2c7b5592e76 100644 --- a/Resources/Prototypes/Reagents/elements.yml +++ b/Resources/Prototypes/Reagents/elements.yml @@ -82,17 +82,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 @@ -272,4 +261,4 @@ flavor: metallic color: "#bababa" meltingPoint: 419.5 - boilingPoint: 907.0 \ No newline at end of file + boilingPoint: 907.0 diff --git a/Resources/Prototypes/Reagents/gases.yml b/Resources/Prototypes/Reagents/gases.yml index c8f47118522f1b..56684887d4cbc1 100644 --- a/Resources/Prototypes/Reagents/gases.yml +++ b/Resources/Prototypes/Reagents/gases.yml @@ -346,3 +346,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 diff --git a/Resources/Textures/Effects/atmospherics.rsi/anti_noblium.png b/Resources/Textures/Effects/atmospherics.rsi/anti_noblium.png new file mode 100644 index 00000000000000..2c9b61f82fc07b Binary files /dev/null and b/Resources/Textures/Effects/atmospherics.rsi/anti_noblium.png differ diff --git a/Resources/Textures/Effects/atmospherics.rsi/halon.png b/Resources/Textures/Effects/atmospherics.rsi/halon.png new file mode 100644 index 00000000000000..b134a5156dfa69 Binary files /dev/null and b/Resources/Textures/Effects/atmospherics.rsi/halon.png differ diff --git a/Resources/Textures/Effects/atmospherics.rsi/healium.png b/Resources/Textures/Effects/atmospherics.rsi/healium.png new file mode 100644 index 00000000000000..0583c3bd6c6934 Binary files /dev/null and b/Resources/Textures/Effects/atmospherics.rsi/healium.png differ diff --git a/Resources/Textures/Effects/atmospherics.rsi/meta.json b/Resources/Textures/Effects/atmospherics.rsi/meta.json index bb9798c1e94734..c7ddddb375adb8 100644 --- a/Resources/Textures/Effects/atmospherics.rsi/meta.json +++ b/Resources/Textures/Effects/atmospherics.rsi/meta.json @@ -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]]}]} diff --git a/Resources/Textures/Effects/atmospherics.rsi/nitrium.png b/Resources/Textures/Effects/atmospherics.rsi/nitrium.png new file mode 100644 index 00000000000000..28387ab2b70598 Binary files /dev/null and b/Resources/Textures/Effects/atmospherics.rsi/nitrium.png differ diff --git a/Resources/Textures/Effects/atmospherics.rsi/proto_nitrate.png b/Resources/Textures/Effects/atmospherics.rsi/proto_nitrate.png new file mode 100644 index 00000000000000..7a43f2bff33ecc Binary files /dev/null and b/Resources/Textures/Effects/atmospherics.rsi/proto_nitrate.png differ diff --git a/Resources/Textures/Effects/atmospherics.rsi/zauker.png b/Resources/Textures/Effects/atmospherics.rsi/zauker.png new file mode 100644 index 00000000000000..c50e8ae33fff98 Binary files /dev/null and b/Resources/Textures/Effects/atmospherics.rsi/zauker.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/antinob-1.png b/Resources/Textures/Structures/Storage/canister.rsi/antinob-1.png new file mode 100644 index 00000000000000..c61426fe4d46c8 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/antinob-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/antinob.png b/Resources/Textures/Structures/Storage/canister.rsi/antinob.png new file mode 100644 index 00000000000000..3449434d715f8e Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/antinob.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/brown-1.png b/Resources/Textures/Structures/Storage/canister.rsi/brown-1.png new file mode 100644 index 00000000000000..c0890f63d32a6d Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/brown-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/brown.png b/Resources/Textures/Structures/Storage/canister.rsi/brown.png new file mode 100644 index 00000000000000..c0d36bcf68e208 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/brown.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/darkpurple-1.png b/Resources/Textures/Structures/Storage/canister.rsi/darkpurple-1.png new file mode 100644 index 00000000000000..b39dcf2f0cacb0 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/darkpurple-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/darkpurple.png b/Resources/Textures/Structures/Storage/canister.rsi/darkpurple.png new file mode 100644 index 00000000000000..51a669b2346907 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/darkpurple.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/h2-1.png b/Resources/Textures/Structures/Storage/canister.rsi/h2-1.png new file mode 100644 index 00000000000000..098a77352e67de Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/h2-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/h2.png b/Resources/Textures/Structures/Storage/canister.rsi/h2.png new file mode 100644 index 00000000000000..3f31cc19ad1ebe Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/h2.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/halon-1.png b/Resources/Textures/Structures/Storage/canister.rsi/halon-1.png new file mode 100644 index 00000000000000..790b29df3e6811 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/halon-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/halon.png b/Resources/Textures/Structures/Storage/canister.rsi/halon.png new file mode 100644 index 00000000000000..2672597f1f0e5e Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/halon.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/healium-1.png b/Resources/Textures/Structures/Storage/canister.rsi/healium-1.png new file mode 100644 index 00000000000000..915ec5a0809828 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/healium-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/healium.png b/Resources/Textures/Structures/Storage/canister.rsi/healium.png new file mode 100644 index 00000000000000..89494c9ea9aab2 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/healium.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/helium-1.png b/Resources/Textures/Structures/Storage/canister.rsi/helium-1.png new file mode 100644 index 00000000000000..a2325f89aceb7e Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/helium-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/helium.png b/Resources/Textures/Structures/Storage/canister.rsi/helium.png new file mode 100644 index 00000000000000..6fd8589083ded9 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/helium.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/meta.json b/Resources/Textures/Structures/Storage/canister.rsi/meta.json index 7f9dfe234026b5..5c330cdc8d39d4 100644 --- a/Resources/Textures/Structures/Storage/canister.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/canister.rsi/meta.json @@ -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" } ] } diff --git a/Resources/Textures/Structures/Storage/canister.rsi/nob-1.png b/Resources/Textures/Structures/Storage/canister.rsi/nob-1.png new file mode 100644 index 00000000000000..1d2d4681e23e7c Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/nob-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/nob.png b/Resources/Textures/Structures/Storage/canister.rsi/nob.png new file mode 100644 index 00000000000000..6e4d11066d08ae Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/nob.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/proto_nitrate-1.png b/Resources/Textures/Structures/Storage/canister.rsi/proto_nitrate-1.png new file mode 100644 index 00000000000000..0cab34c1058963 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/proto_nitrate-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/proto_nitrate.png b/Resources/Textures/Structures/Storage/canister.rsi/proto_nitrate.png new file mode 100644 index 00000000000000..ebd683443432d2 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/proto_nitrate.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/purple-1.png b/Resources/Textures/Structures/Storage/canister.rsi/purple-1.png new file mode 100644 index 00000000000000..8b1c313501f13d Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/purple-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/purple.png b/Resources/Textures/Structures/Storage/canister.rsi/purple.png new file mode 100644 index 00000000000000..f47b8b0936137a Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/purple.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/zauker-1.png b/Resources/Textures/Structures/Storage/canister.rsi/zauker-1.png new file mode 100644 index 00000000000000..6ca53ae0fa6896 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/zauker-1.png differ diff --git a/Resources/Textures/Structures/Storage/canister.rsi/zauker.png b/Resources/Textures/Structures/Storage/canister.rsi/zauker.png new file mode 100644 index 00000000000000..843fcceb03c9d9 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/zauker.png differ