diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs index 8966f232e0..752beaec25 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs @@ -43,7 +43,7 @@ namespace Content.Server.Atmos.EntitySystems ExcitedGroupResetCooldowns(tile.ExcitedGroup); if ((tile.Hotspot.Temperature < Atmospherics.FireMinimumTemperatureToExist) || (tile.Hotspot.Volume <= 1f) - || tile.Air == null || tile.Air.GetMoles(Gas.Oxygen) < 0.5f || (tile.Air.GetMoles(Gas.Plasma) < 0.5f && tile.Air.GetMoles(Gas.Tritium) < 0.5f)) + || tile.Air == null || tile.Air.GetMoles(Gas.Oxygen) < 0.5f || (tile.Air.GetMoles(Gas.Plasma) < 0.5f && tile.Air.GetMoles(Gas.Tritium) < 0.5f && tile.Air.GetMoles(Gas.Hydrogen) < 0.5f && tile.Air.GetMoles(Gas.HyperNoblium) > 5f)) { tile.Hotspot = new Hotspot(); InvalidateVisuals(tile.GridIndex, tile.GridIndices); @@ -107,12 +107,14 @@ namespace Content.Server.Atmos.EntitySystems var plasma = tile.Air.GetMoles(Gas.Plasma); var tritium = tile.Air.GetMoles(Gas.Tritium); + var hydrogen = tile.Air.GetMoles(Gas.Hydrogen); + var hypernoblium = tile.Air.GetMoles(Gas.HyperNoblium); if (tile.Hotspot.Valid) { if (soh) { - if (plasma > 0.5f || tritium > 0.5f) + if (plasma > 0.5f && hypernoblium < 5f || tritium > 0.5f && hypernoblium < 5f || hydrogen > 0.5f && hypernoblium < 5f) { if (tile.Hotspot.Temperature < exposedTemperature) tile.Hotspot.Temperature = exposedTemperature; @@ -124,10 +126,10 @@ namespace Content.Server.Atmos.EntitySystems return; } - if ((exposedTemperature > Atmospherics.PlasmaMinimumBurnTemperature) && (plasma > 0.5f || tritium > 0.5f)) + if ((exposedTemperature > Atmospherics.PlasmaMinimumBurnTemperature) && (plasma > 0.5f && hypernoblium < 5f || tritium > 0.5f && hypernoblium < 5f || hydrogen > 0.5f && hypernoblium < 5f)) { if (sparkSourceUid.HasValue) - _adminLog.Add(LogType.Flammable, LogImpact.High, $"Heat/spark of {ToPrettyString(sparkSourceUid.Value)} caused atmos ignition of gas: {tile.Air.Temperature.ToString():temperature}K - {oxygen}mol Oxygen, {plasma}mol Plasma, {tritium}mol Tritium"); + _adminLog.Add(LogType.Flammable, LogImpact.High, $"Heat/spark of {ToPrettyString(sparkSourceUid.Value)} caused atmos ignition of gas: {tile.Air.Temperature.ToString():temperature}K - {oxygen}mol Oxygen, {plasma}mol Plasma, {tritium}mol Tritium, {hydrogen}mol Hydrogen"); tile.Hotspot = new Hotspot { diff --git a/Content.Server/Atmos/Portable/PortableScrubberComponent.cs b/Content.Server/Atmos/Portable/PortableScrubberComponent.cs index 7ded9beb01..85bcf0abd9 100644 --- a/Content.Server/Atmos/Portable/PortableScrubberComponent.cs +++ b/Content.Server/Atmos/Portable/PortableScrubberComponent.cs @@ -30,7 +30,18 @@ namespace Content.Server.Atmos.Portable Gas.WaterVapor, Gas.Ammonia, Gas.NitrousOxide, - Gas.Frezon + Gas.Frezon, + Gas.BZ, + Gas.Pluoxium, + Gas.Hydrogen, + Gas.Nitrium, + Gas.Healium, + Gas.HyperNoblium, + Gas.ProtoNitrate, + Gas.Zauker, + Gas.Halon, + Gas.Helium, + Gas.AntiNoblium }; [ViewVariables(VVAccess.ReadWrite)] diff --git a/Content.Server/Atmos/Reactions/BZProductionReaction.cs b/Content.Server/Atmos/Reactions/BZProductionReaction.cs new file mode 100644 index 0000000000..06b22015f3 --- /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 051ee8202d..5d08a37952 100644 --- a/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs +++ b/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs @@ -13,6 +13,11 @@ public sealed partial class FrezonCoolantReaction : IGasReactionEffect public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale) { var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); + + var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium); + if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f) + return ReactionResult.NoReaction; + var temperature = mixture.Temperature; var energyModifier = 1f; diff --git a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs index 4ffd9c2f5b..df93724fa1 100644 --- a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs +++ b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs @@ -13,6 +13,10 @@ public sealed partial class FrezonProductionReaction : IGasReactionEffect { public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale) { + var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium); + if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f) + return ReactionResult.NoReaction; + var initialN2 = mixture.GetMoles(Gas.Nitrogen); var initialOxy = mixture.GetMoles(Gas.Oxygen); var initialTrit = mixture.GetMoles(Gas.Tritium); diff --git a/Content.Server/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs b/Content.Server/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs new file mode 100644 index 0000000000..e3b717d1c4 --- /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 0000000000..8e2d5c5c08 --- /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 0000000000..e89c22c142 --- /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 0000000000..d72a5b6f17 --- /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/NitriumDecompositionReaction.cs b/Content.Server/Atmos/Reactions/NitriumDecompositionReaction.cs new file mode 100644 index 0000000000..6ebda1afca --- /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 0000000000..a78950f7e0 --- /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 9adda3089c..288f3a39cc 100644 --- a/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs +++ b/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs @@ -10,6 +10,10 @@ namespace Content.Server.Atmos.Reactions { public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale) { + var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium); + if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f) + return ReactionResult.NoReaction; + var energyReleased = 0f; var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); var temperature = mixture.Temperature; diff --git a/Content.Server/Atmos/Reactions/PluoxiumProductionReaction.cs b/Content.Server/Atmos/Reactions/PluoxiumProductionReaction.cs new file mode 100644 index 0000000000..3673c589b2 --- /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 0000000000..7a4b97dd1b --- /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 0000000000..78021899fe --- /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 0000000000..835c2eedbf --- /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 0000000000..246d719ea6 --- /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 c52b431fd4..72e4f2233f 100644 --- a/Content.Server/Atmos/Reactions/TritiumFireReaction.cs +++ b/Content.Server/Atmos/Reactions/TritiumFireReaction.cs @@ -10,6 +10,10 @@ namespace Content.Server.Atmos.Reactions { public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale) { + var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium); + if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f) + return ReactionResult.NoReaction; + var energyReleased = 0f; var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); var temperature = mixture.Temperature; diff --git a/Content.Server/Atmos/Reactions/ZaukerDecompositionReaction.cs b/Content.Server/Atmos/Reactions/ZaukerDecompositionReaction.cs new file mode 100644 index 0000000000..c5243fed78 --- /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 0000000000..1535e3fde5 --- /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 f92da0af19..36164389fb 100644 --- a/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs +++ b/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs @@ -13,6 +13,9 @@ public sealed partial 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 0f330d9dcf..9a66454ad0 100644 --- a/Content.Shared/Atmos/Atmospherics.cs +++ b/Content.Shared/Atmos/Atmospherics.cs @@ -177,7 +177,7 @@ namespace Content.Shared.Atmos /// /// 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. @@ -260,6 +260,51 @@ namespace Content.Shared.Atmos /// 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. /// @@ -340,6 +385,17 @@ namespace Content.Shared.Atmos WaterVapor = 5, Ammonia = 6, NitrousOxide = 7, - Frezon = 8 + Frezon = 8, + BZ = 9, + Pluoxium = 10, + Hydrogen = 11, + Nitrium = 12, + Healium = 13, + HyperNoblium = 14, + ProtoNitrate = 15, + Zauker = 16, + Halon = 17, + Helium = 18, + AntiNoblium = 19 } } diff --git a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs index 2a33306245..94a6161285 100644 --- a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs +++ b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs @@ -22,7 +22,18 @@ namespace Content.Shared.Atmos.Piping.Unary.Components Gas.WaterVapor, Gas.Ammonia, Gas.NitrousOxide, - Gas.Frezon + Gas.Frezon, + Gas.BZ, + Gas.Pluoxium, + Gas.Hydrogen, + Gas.Nitrium, + Gas.Healium, + Gas.HyperNoblium, + Gas.ProtoNitrate, + Gas.Zauker, + Gas.Halon, + Gas.Helium, + Gas.AntiNoblium }; // Presets for 'dumb' air alarm modes diff --git a/Resources/Locale/en-US/gases/gases.ftl b/Resources/Locale/en-US/gases/gases.ftl index e41aa4fc99..3ede84dd15 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-ammonia = Ammonia gases-n2o = Nitrous Oxide gases-frezon = Frezon +gases-bz = BZ +gases-pluoxium = Pluoxium +gases-hydrogen = Hydrogen +gases-nitrium = Nitrium +gases-healium = Healium +gases-hyper-noblium = Hyper-Noblium +gases-proto-nitrate = Proto-Nitrate +gases-zauker = Zauker +gases-halon = Halon +gases-helium = Helium +gases-anti-noblium = Anti-Noblium 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 a07dda9676..9ace128bdd 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 @@ -41,7 +41,40 @@ ent-NitrousOxideCanister = Nitrous oxide canister .desc = A canister that can contain any type of gas. This one is supposed to contain nitrous oxide. It can be attached to connector ports using a wrench. ent-FrezonCanister = Frezon canister - .desc = A coolant with light hallucinogenic properties. Proceed. + .desc = A canister that can contain any type of gas. This one is supposed to contain frezon. It can be attached to connector ports using a wrench. + +ent-BZCanister = BZ canister + .desc = A canister that can contain any type of gas. This one is supposed to contain BZ. It can be attached to connector ports using a wrench. + +ent-PluoxiumCanister = Pluoxium canister + .desc = A canister that can contain any type of gas. This one is supposed to contain pluoxium. It can be attached to connector ports using a wrench. + +ent-HydrogenCanister = Hydrogen canister + .desc = A canister that can contain any type of gas. This one is supposed to contain hydrogen. It can be attached to connector ports using a wrench. + +ent-NitriumCanister = Nitrium canister + .desc = A canister that can contain any type of gas. This one is supposed to contain nitrium. It can be attached to connector ports using a wrench. + +ent-HealiumCanister = Healium canister + .desc = A canister that can contain any type of gas. This one is supposed to contain healium. It can be attached to connector ports using a wrench. + +ent-HyperNobliumCanister = Hyper-Noblium canister + .desc = A canister that can contain any type of gas. This one is supposed to contain hyper-noblium. It can be attached to connector ports using a wrench. + +ent-ProtoNitrateCanister = Proto-Nitrate canister + .desc = A canister that can contain any type of gas. This one is supposed to contain proto-nitrate. It can be attached to connector ports using a wrench. + +ent-ZaukerCanister = Zauker canister + .desc = A canister that can contain any type of gas. This one is supposed to contain zauker. It can be attached to connector ports using a wrench. + +ent-HalonCanister = Halon canister + .desc = A canister that can contain any type of gas. This one is supposed to contain halon. It can be attached to connector ports using a wrench. + +ent-HeliumCanister = Helium canister + .desc = A canister that can contain any type of gas. This one is supposed to contain helium. It can be attached to connector ports using a wrench. + +ent-AntiNobliumCanister = Anti-Noblium canister + .desc = A canister that can contain any type of gas. This one is supposed to contain anti-noblium. It can be attached to connector ports using a wrench. ent-GasCanisterBrokenBase = Broken gas canister .desc = A broken gas canister. Not useless yet, as it can be salvaged for high quality materials. @@ -78,3 +111,36 @@ ent-NitrousOxideCanisterBroken = { ent-GasCanisterBrokenBase } ent-FrezonCanisterBroken = { ent-GasCanisterBrokenBase } .desc = { ent-GasCanisterBrokenBase.desc } + +ent-BZCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-PluoxiumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-HydrogenCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-NitriumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-HealiumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-HyperNobliumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-ProtoNitrateCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-ZaukerCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-HalonCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-HeliumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + +ent-AntiNobliumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } diff --git a/Resources/Locale/en-US/reagents/meta/elements.ftl b/Resources/Locale/en-US/reagents/meta/elements.ftl index 6d6439565b..bbd20cca4a 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 5460757be7..1c7d67c9ad 100644 --- a/Resources/Locale/en-US/reagents/meta/gases.ftl +++ b/Resources/Locale/en-US/reagents/meta/gases.ftl @@ -18,3 +18,36 @@ reagent-desc-nitrous-oxide = You know how everything seems funnier when you're t reagent-name-frezon = frezon reagent-desc-frezon = A highly effective coolant.. and hallucinogenic. + +reagent-name-bz = bz +reagent-desc-bz = A potent hallucinogenic that also puts slimes into stasis. + +reagent-name-pluoxium = pluoxium +reagent-desc-pluoxium = A gas that could supply even more oxygen to the bloodstream when inhaled, without being an oxidizer. + +reagent-name-hydrogen = hydrogen +reagent-desc-hydrogen = A light, flammable gas. + +reagent-name-nitrium = nitrium +reagent-desc-nitrium = A gaseous stimulant that when inhaled can enhance speed and endurance. + +reagent-name-healium = healium +reagent-desc-healium = Causes deep, regenerative sleep. + +reagent-name-hyper-nob = hyper-noblium +reagent-desc-hyper-nob = The most noble gas of them all. High quantities of hyper-noblium actively prevents reactions from occuring. + +reagent-name-proto-nitrate = proto-nitrate +reagent-desc-proto-nitrate = A very volatile gas that reacts differently with various gases. + +reagent-name-zauker = zauker +reagent-desc-zauker = A highly toxic gas, it's production is highly regulated on top of being difficult. It also breaks down when in contact with nitrogen. + +reagent-name-halon = halon +reagent-desc-halon = A potent fire supressant. Removes oxygen from high temperature fires and cools down the area. + +reagent-name-helium = helium +reagent-desc-helium = A very inert gas produced by the fusion of hydrogen and it's derivatives. + +reagent-name-anti-nob = anti-noblium +reagent-desc-anti-nob = We still don't know what it does, but it sells for a lot. 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 new file mode 100644 index 0000000000..2a515b96c0 --- /dev/null +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/storage/canisters/gas_canisters.ftl @@ -0,0 +1,138 @@ +ent-GasCanister = { ent-BaseStructureDynamic } + .desc = { ent-BaseStructureDynamic.desc } + .suffix = { "" } +ent-StorageCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-AirCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-OxygenCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-NitrogenCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-CarbonDioxideCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-PlasmaCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-TritiumCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-WaterVaporCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-MiasmaCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-NitrousOxideCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-FrezonCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-BZCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-PluoxiumCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-HydrogenCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-NitriumCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-HealiumCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-HyperNobliumCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-ProtoNitrateCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-ZaukerCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-HalonCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-HeliumCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-AntiNobliumCanister = { ent-GasCanister } + .desc = { ent-GasCanister.desc } + .suffix = { "" } +ent-GasCanisterBrokenBase = { ent-BaseStructureDynamic } + .desc = { ent-BaseStructureDynamic.desc } + .suffix = { "" } +ent-StorageCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-AirCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-OxygenCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-NitrogenCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-CarbonDioxideCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-PlasmaCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-TritiumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-WaterVaporCanisterBroken = broken water vapor canister + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-MiasmaCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-NitrousOxideCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-FrezonCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-BZCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-PluoxiumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-HydrogenCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-NitriumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-HealiumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-HyperNobliumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-ProtoNitrateCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-ZaukerCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-HalonCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-HeliumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } +ent-AntiNobliumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } + .suffix = { "" } diff --git a/Resources/Locale/ru-RU/gases/gases.ftl b/Resources/Locale/ru-RU/gases/gases.ftl index 6740720ca8..bb25f54665 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 3762d46aa7..cff8a2159b 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 3c6c448b7c..3573030044 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 43da3c3f9d..cc0aa83a50 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 a1a868b16a..27436cc523 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 c2b14c5177..61833ae356 100644 --- a/Resources/Prototypes/Atmospherics/gases.yml +++ b/Resources/Prototypes/Atmospherics/gases.yml @@ -1,4 +1,4 @@ -- type: gas +- type: gas id: 0 name: gases-oxygen specificHeat: 20 @@ -100,3 +100,141 @@ color: 3a758c reagent: Frezon pricePerMole: 0.3 + +- type: gas + id: 9 + name: gases-bz + specificHeat: 20 + heatCapacityRatio: 1.3 + molarMass: 100 + color: e69edd + reagent: BZ + pricePerMole: 3 + +- type: gas + id: 10 + name: gases-pluoxium + specificHeat: 80 + heatCapacityRatio: 1.3 + molarMass: 40 + color: 0054AA + reagent: Pluoxium + pricePerMole: 5 + +- type: gas + id: 11 + name: gases-hydrogen + specificHeat: 15 + heatCapacityRatio: 1.4 + molarMass: 2 + color: FFFFFF + reagent: Hydrogen + pricePerMole: 5 + +- type: gas + id: 12 + name: gases-nitrium + specificHeat: 10 + heatCapacityRatio: 1.3 + molarMass: 60 + gasOverlaySprite: /Textures/Effects/atmospherics.rsi + gasOverlayState: nitrium + gasMolesVisible: 0.1 + gasVisbilityFactor: 500 + color: 7E4732 + reagent: Nitrium + pricePerMole: 12 + +- type: gas + id: 13 + name: gases-healium + specificHeat: 10 + heatCapacityRatio: 1.3 + molarMass: 40 + gasOverlaySprite: /Textures/Effects/atmospherics.rsi + gasOverlayState: healium + gasMolesVisible: 0.1 + gasVisbilityFactor: 500 + color: d97e7e + reagent: Healium + pricePerMole: 12 + +- type: gas + id: 14 + name: gases-hyper-noblium + specificHeat: 2000 + heatCapacityRatio: 1.3 + molarMass: 150 + gasOverlaySprite: /Textures/Effects/atmospherics.rsi + gasOverlayState: frezon + gasMolesVisible: 0.1 + gasVisbilityFactor: 1000 + color: 33cccc + reagent: Hyper-Noblium + pricePerMole: 15 + +- type: gas + id: 15 + name: gases-proto-nitrate + specificHeat: 30 + heatCapacityRatio: 1.3 + molarMass: 120 + gasOverlaySprite: /Textures/Effects/atmospherics.rsi + gasOverlayState: proto_nitrate + gasMolesVisible: 0.1 + gasVisbilityFactor: 1000 + color: 009933 + reagent: Proto-Nitrate + pricePerMole: 5 + +- type: gas + id: 16 + name: gases-zauker + specificHeat: 350 + heatCapacityRatio: 1.3 + molarMass: 110 + gasOverlaySprite: /Textures/Effects/atmospherics.rsi + gasOverlayState: zauker + gasMolesVisible: 0.1 + gasVisbilityFactor: 250 + color: 1c1a1a + reagent: Zauker + pricePerMole: 15 + +- type: gas + id: 17 + name: gases-halon + specificHeat: 1.4 + heatCapacityRatio: 1.3 + molarMass: 150 + gasOverlaySprite: /Textures/Effects/atmospherics.rsi + gasOverlayState: halon + gasMolesVisible: 0.1 + gasVisbilityFactor: 500 + color: e3574d + reagent: Halon + pricePerMole: 8 + +- type: gas + id: 18 + name: gases-helium + specificHeat: 15 + heatCapacityRatio: 20 + molarMass: 4 + color: 005959 + reagent: Helium + pricePerMole: 7 + +- type: gas + id: 19 + name: gases-anti-noblium + specificHeat: 1 + heatCapacityRatio: 1 + molarMass: 200 + gasOverlaySprite: /Textures/Effects/atmospherics.rsi + gasOverlayState: anti_noblium + gasMolesVisible: 0.1 + gasVisbilityFactor: 100 + color: 525151 + reagent: Anti-Noblium + pricePerMole: 20 diff --git a/Resources/Prototypes/Atmospherics/reactions.yml b/Resources/Prototypes/Atmospherics/reactions.yml index d226c81f6c..54b0f82d2e 100644 --- a/Resources/Prototypes/Atmospherics/reactions.yml +++ b/Resources/Prototypes/Atmospherics/reactions.yml @@ -106,3 +106,373 @@ # - !type:WaterVaporReaction # gas: 5 # reagent: Water + +- type: gasReaction + id: BZProductionReaction + priority: 3 + maximumTemperature: 313.149 + minimumRequirements: + - 0 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 10 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 10 # n2o + - 0 # frezon + - 0 # bz + effects: + - !type:BZProductionReaction {} + +- type: gasReaction + id: PluoxiumProductionReaction + priority: 4 + minimumTemperature: 50 + maximumTemperature: 273.15 + minimumRequirements: + - 0.01 # oxygen + - 0 # nitrogen + - 0.01 # carbon dioxide + - 0 # plasma + - 0.01 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0 # pluoxium + effects: + - !type:PluoxiumProductionReaction {} + +- type: gasReaction + id: HydrogenFireReaction + priority: -3 + minimumTemperature: 373.149 # Same as Atmospherics.FireMinimumTemperatureToExist + minimumRequirements: + - 0.01 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0 # pluoxium + - 0.01 # hydrogen + effects: + - !type:HydrogenFireReaction {} + +- type: gasReaction + id: NitriumProduction + priority: 5 + minimumTemperature: 1500 + minimumRequirements: + - 0 # oxygen + - 10 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 20 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 5 # bz + - 0 # pluoxium + - 0 # hydrogen + - 0 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0 # proto-nitrate + - 0 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:NitriumProductionReaction {} + +- type: gasReaction + id: NitriumDecomposition + priority: 6 + maximumTemperature: 343.15 + minimumRequirements: + - 0.01 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0 # pluoxium + - 0 # hydrogen + - 0.01 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0 # proto-nitrate + - 0 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:NitriumDecompositionReaction {} + +- type: gasReaction + id: HyperNobliumProduction + priority: 7 + minimumTemperature: 2.7 + maximumTemperature: 15 + minimumRequirements: + - 0 # oxygen + - 10 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 5 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0 # pluoxium + - 0 # hydrogen + - 0 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0 # proto-nitrate + - 0 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:HyperNobliumProductionReaction {} + +- type: gasReaction + id: HalonOxygenAbsorption + priority: -4 + minimumTemperature: 373.149 + minimumRequirements: + - 0.01 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0 # pluoxium + - 0 # hydrogen + - 0 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0 # proto-nitrate + - 0 # zauker + - 0.01 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:HalonOxygenAbsorptionReaction {} + +- type: gasReaction + id: HealiumProduction + priority: 8 + minimumTemperature: 25 + maximumTemperature: 300 + minimumRequirements: + - 0 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0.01 # frezon + - 0.01 # bz + - 0 # pluoxium + - 0 # hydrogen + - 0 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0 # proto-nitrate + - 0 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:HealiumProductionReaction {} + +- type: gasReaction + id: ZaukerProduction + priority: 9 + minimumTemperature: 50000 + maximumTemperature: 75000 + minimumRequirements: + - 0 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0 # pluoxium + - 0 # hydrogen + - 0.01 # nitrium + - 0 # healium + - 0.01 # hyper-noblium + - 0 # proto-nitrate + - 0 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:ZaukerProductionReaction {} + +- type: gasReaction + id: ZaukerDecomposition + priority: 10 + minimumRequirements: + - 0 # oxygen + - 0.01 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0 # pluoxium + - 0 # hydrogen + - 0 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0 # proto-nitrate + - 0.01 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:ZaukerDecompositionReaction {} + +- type: gasReaction + id: ProtoNitrateProduction + priority: 11 + minimumTemperature: 5000 + maximumTemperature: 10000 + minimumRequirements: + - 0 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0.01 # pluoxium + - 0.01 # hydrogen + - 0 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0 # proto-nitrate + - 0 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:ProtoNitrateProductionReaction {} + +- type: gasReaction + id: ProtoNitrateHydrogenConversion + priority: 12 + minimumRequirements: + - 0 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0 # pluoxium + - 150 # hydrogen + - 0 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0.01 # proto-nitrate + - 0 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:ProtoNitrateHydrogenConversionReaction {} + +- type: gasReaction + id: ProtoNitrateTritiumDeirradiation + priority: 13 + minimumTemperature: 150 + maximumTemperature: 340 + minimumRequirements: + - 0 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0.01 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0 # bz + - 0 # pluoxium + - 0 # hydrogen + - 0 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0.01 # proto-nitrate + - 0 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:ProtoNitrateTritiumConversionReaction {} + +- type: gasReaction + id: ProtoNitrateBZaseAction + priority: 14 + minimumTemperature: 260 + maximumTemperature: 280 + minimumRequirements: + - 0 # oxygen + - 0 # nitrogen + - 0 # carbon dioxide + - 0 # plasma + - 0 # tritium + - 0 # vapor + - 0 # miasma + - 0 # n2o + - 0 # frezon + - 0.01 # bz + - 0 # pluoxium + - 0 # hydrogen + - 0 # nitrium + - 0 # healium + - 0 # hyper-noblium + - 0.01 # proto-nitrate + - 0 # zauker + - 0 # halon + - 0 # helium + - 0 # anti-noblium + effects: + - !type:ProtoNitrateBZaseConversionReaction {} diff --git a/Resources/Prototypes/Atmospherics/thresholds.yml b/Resources/Prototypes/Atmospherics/thresholds.yml index 9b09d64a10..ab8a2f1854 100644 --- a/Resources/Prototypes/Atmospherics/thresholds.yml +++ b/Resources/Prototypes/Atmospherics/thresholds.yml @@ -67,6 +67,13 @@ upperWarnAround: !type:AlarmThresholdSetting threshold: 0.5 +- type: alarmThreshold + id: unwanted + upperBound: !type:AlarmThresholdSetting + threshold: 0.0025 + upperWarnAround: !type:AlarmThresholdSetting + threshold: 0.5 + - type: alarmThreshold id: ignore # just ignore nitrogen??? ??? ??? ignore: true diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml index 12514f03fe..d78d591c5f 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml @@ -53,6 +53,17 @@ Ammonia: stationAmmonia NitrousOxide: stationNO Frezon: danger + BZ: danger + Pluoxium: unwanted + Hydrogen: danger + Nitrium: unwanted + Healium: danger + HyperNoblium: unwanted + ProtoNitrate: danger + Zauker: danger + Halon: danger + Helium: unwanted + AntiNoblium: danger - type: Tag tags: - GasVent @@ -144,6 +155,17 @@ Ammonia: stationAmmonia NitrousOxide: stationNO Frezon: danger + BZ: danger + Pluoxium: unwanted + Hydrogen: danger + Nitrium: unwanted + Healium: danger + HyperNoblium: unwanted + ProtoNitrate: danger + Zauker: danger + Halon: danger + Helium: unwanted + AntiNoblium: danger - type: Tag tags: - GasScrubber diff --git a/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml b/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml index 2df48a584c..8dd154af4b 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml @@ -58,6 +58,17 @@ Ammonia: stationAmmonia NitrousOxide: stationNO Frezon: danger + BZ: danger + Pluoxium: unwanted + Hydrogen: danger + Nitrium: unwanted + Healium: danger + HyperNoblium: unwanted + ProtoNitrate: danger + Zauker: danger + Halon: danger + Helium: unwanted + AntiNoblium: danger - type: Tag tags: - AirSensor diff --git a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml index b10945bca1..a7ba07630a 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml @@ -123,6 +123,7 @@ - 0 # Ammonia - 0 # N2O - 0 # Frezon + - 0 # BZ temperature: 293.15 - type: Destructible thresholds: @@ -609,6 +610,610 @@ - type: Lock locked: true +- type: entity + parent: GasCanister + id: BZCanister + components: + - type: Sprite + layers: + - state: purple + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 1871.71051 # BZ + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + BZCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: PluoxiumCanister + components: + - type: Sprite + layers: + - state: darkblue + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 1871.71051 # Pluoxium + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + PluoxiumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: HydrogenCanister + components: + - type: Sprite + layers: + - state: h2 + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 0 # Pluoxium + - 1871.71051 # Hydrogen + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + HydrogenCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: NitriumCanister + components: + - type: Sprite + layers: + - state: brown + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 0 # Pluoxium + - 0 # Hydrogen + - 1871.71051 # Nitrium + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + NitriumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: HealiumCanister + components: + - type: Sprite + layers: + - state: healium + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 0 # Pluoxium + - 0 # Hydrogen + - 0 # Nitrium + - 1871.71051 # Healium + - 0 # Hyper-Noblium + - 0 # Proto-Nitrate + - 0 # Zauker + - 0 # Halon + - 0 # Helium + - 0 # Anti-Noblium + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + HealiumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: HyperNobliumCanister + components: + - type: Sprite + layers: + - state: nob + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 0 # Pluoxium + - 0 # Hydrogen + - 0 # Nitrium + - 0 # Healium + - 1871.71051 # Hyper-Noblium + - 0 # Proto-Nitrate + - 0 # Zauker + - 0 # Halon + - 0 # Helium + - 0 # Anti-Noblium + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + HyperNobliumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ProtoNitrateCanister + components: + - type: Sprite + layers: + - state: proto_nitrate + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 0 # Pluoxium + - 0 # Hydrogen + - 0 # Nitrium + - 0 # Healium + - 0 # Hyper-Noblium + - 1871.71051 # Proto-Nitrate + - 0 # Zauker + - 0 # Halon + - 0 # Helium + - 0 # Anti-Noblium + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + ProtoNitrateCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ZaukerCanister + components: + - type: Sprite + layers: + - state: zauker + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 0 # Pluoxium + - 0 # Hydrogen + - 0 # Nitrium + - 0 # Healium + - 0 # Hyper-Noblium + - 0 # Proto-Nitrate + - 1871.71051 # Zauker + - 0 # Halon + - 0 # Helium + - 0 # Anti-Noblium + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + ZaukerCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: HalonCanister + components: + - type: Sprite + layers: + - state: halon + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 0 # Pluoxium + - 0 # Hydrogen + - 0 # Nitrium + - 0 # Healium + - 0 # Hyper-Noblium + - 0 # Proto-Nitrate + - 0 # Zauker + - 1871.71051 # Halon + - 0 # Helium + - 0 # Anti-Noblium + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + HalonCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: HeliumCanister + components: + - type: Sprite + layers: + - state: helium + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 0 # Pluoxium + - 0 # Hydrogen + - 0 # Nitrium + - 0 # Healium + - 0 # Hyper-Noblium + - 0 # Proto-Nitrate + - 0 # Zauker + - 0 # Halon + - 1871.71051 # Helium + - 0 # Anti-Noblium + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + HeliumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: AntiNobliumCanister + components: + - type: Sprite + layers: + - state: antinob + - type: GasCanister + gasMixture: + volume: 1000 + moles: + - 0 # oxygen + - 0 # nitrogen + - 0 # CO2 + - 0 # Plasma + - 0 # Tritium + - 0 # Water vapor + - 0 # Miasma + - 0 # N2O + - 0 # Frezon + - 0 # BZ + - 0 # Pluoxium + - 0 # Hydrogen + - 0 # Nitrium + - 0 # Healium + - 0 # Hyper-Noblium + - 0 # Proto-Nitrate + - 0 # Zauker + - 0 # Halon + - 0 # Helium + - 1871.71051 # Anti-Noblium + temperature: 293.15 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + AntiNobliumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + # Broke Entities - type: entity @@ -751,3 +1356,91 @@ components: - type: Sprite state: frezon-1 + +- type: entity + parent: GasCanisterBrokenBase + id: BZCanisterBroken + noSpawn: true + components: + - type: Sprite + state: purple-1 + +- type: entity + parent: GasCanisterBrokenBase + id: PluoxiumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: darkblue-1 + +- type: entity + parent: GasCanisterBrokenBase + id: HydrogenCanisterBroken + noSpawn: true + components: + - type: Sprite + state: h2-1 + +- type: entity + parent: GasCanisterBrokenBase + id: NitriumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: brown-1 + +- type: entity + parent: GasCanisterBrokenBase + id: HealiumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: healium-1 + +- type: entity + parent: GasCanisterBrokenBase + id: HyperNobliumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: nob-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ProtoNitrateCanisterBroken + noSpawn: true + components: + - type: Sprite + state: proto_nitrate-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ZaukerCanisterBroken + noSpawn: true + components: + - type: Sprite + state: zauker-1 + +- type: entity + parent: GasCanisterBrokenBase + id: HalonCanisterBroken + noSpawn: true + components: + - type: Sprite + state: halon-1 + +- type: entity + parent: GasCanisterBrokenBase + id: HeliumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: helium-1 + +- type: entity + parent: GasCanisterBrokenBase + id: AntiNobliumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: antinob-1 diff --git a/Resources/Prototypes/Reagents/elements.yml b/Resources/Prototypes/Reagents/elements.yml index 5c6528a43f..1e278ffa8a 100644 --- a/Resources/Prototypes/Reagents/elements.yml +++ b/Resources/Prototypes/Reagents/elements.yml @@ -116,17 +116,6 @@ boilingPoint: 2700.0 meltingPoint: 1064.76 -- type: reagent - id: Hydrogen - name: reagent-name-hydrogen - group: Elements - desc: reagent-desc-hydrogen - physicalDesc: reagent-physical-desc-gaseous - flavor: bitter - color: "#808080" - boilingPoint: -253.0 - meltingPoint: -259.2 - - type: reagent id: Iodine name: reagent-name-iodine diff --git a/Resources/Prototypes/Reagents/gases.yml b/Resources/Prototypes/Reagents/gases.yml index 54bdbf3a40..0be1007952 100644 --- a/Resources/Prototypes/Reagents/gases.yml +++ b/Resources/Prototypes/Reagents/gases.yml @@ -324,3 +324,289 @@ - !type:ReagentThreshold reagent: Frezon min: 1 + +- type: reagent + id: BZ + name: reagent-name-bz + desc: reagent-desc-bz + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#e69edd" + metabolisms: + Gas: + effects: + - !type:GenericStatusEffect + key: SeeingRainbows + component: SeeingRainbows + type: Add + time: 8 + refresh: false + - !type:HealthChange + conditions: + - !type:ReagentThreshold + reagent: BZ + min: 0.5 + scaleByQuantity: true + ignoreResistances: true + damage: + types: + Cellular: 0.005 + - !type:PopupMessage + conditions: + - !type:ReagentThreshold + reagent: BZ + min: 1 + - !type:OrganType + type: Slime + type: Local + visualType: Medium + messages: [ "effect-sleepy" ] + probability: 0.1 + - !type:MovespeedModifier + conditions: + - !type:ReagentThreshold + reagent: BZ + min: 1 + - !type:OrganType + type: Slime + walkSpeedModifier: 0.65 + sprintSpeedModifier: 0.65 + - !type:GenericStatusEffect + conditions: + - !type:ReagentThreshold + reagent: BZ + min: 1 + - !type:OrganType + type: Slime + key: ForcedSleep + component: ForcedSleeping + time: 3 + type: Add + +- type: reagent + id: Pluoxium + name: reagent-name-pluoxium + desc: reagent-desc-pluoxium + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#0054AA" + boilingPoint: -183.0 + meltingPoint: -218.4 + metabolisms: + Gas: + effects: + - !type:Oxygenate + factor: 8 + conditions: + - !type:OrganType + type: Human + - !type:Oxygenate + factor: 8 + conditions: + - !type:OrganType + type: Animal + - !type:Oxygenate + factor: 8 + conditions: + - !type:OrganType + type: Rat + - !type:Oxygenate + factor: 8 + conditions: + - !type:OrganType + type: Plant + - !type:ModifyLungGas + conditions: + - !type:OrganType + type: Vox + shouldHave: false + ratios: + CarbonDioxide: 1.0 + Pluoxium: -1.0 + +- type: reagent + id: Hydrogen + name: reagent-name-hydrogen + desc: reagent-desc-hydrogen + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#808080" + boilingPoint: -253.0 + meltingPoint: -259.2 + +- type: reagent + id: Nitrium + name: reagent-name-nitrium + desc: reagent-desc-nitrium + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#7E4732" + boilingPoint: -253.0 + meltingPoint: -259.2 + metabolisms: + Gas: + effects: + - !type:MovespeedModifier + conditions: + - !type:ReagentThreshold + reagent: Nitrium + min: 3 + statusLifetime: 0.25 + walkSpeedModifier: 1.5 + sprintSpeedModifier: 1.5 + - !type:GenericStatusEffect + conditions: + - !type:ReagentThreshold + min: 6 + key: Stun + time: 1 + type: Remove + - !type:GenericStatusEffect + conditions: + - !type:ReagentThreshold + min: 6 + key: KnockedDown + time: 5 + type: Remove + - !type:GenericStatusEffect + conditions: + - !type:ReagentThreshold + min: 6 + key: ForcedSleep + component: ForcedSleeping + time: 15 + type: Remove + - !type:HealthChange + conditions: + - !type:ReagentThreshold + reagent: Nitrium + min: 9 + scaleByQuantity: true + ignoreResistances: true + damage: + types: + Poison: 0.05 + +- type: reagent + id: Healium + name: reagent-name-healium + desc: reagent-desc-healium + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#d97e7e" + boilingPoint: -253.0 + meltingPoint: -259.2 + metabolisms: + Gas: + effects: + - !type:GenericStatusEffect + conditions: + - !type:ReagentThreshold + reagent: Healium + min: 2 + key: ForcedSleep + component: ForcedSleeping + time: 3 + type: Add + - !type:HealthChange + conditions: + - !type:ReagentThreshold + reagent: Healium + min: 2 + scaleByQuantity: true + ignoreResistances: true + damage: + groups: + Brute: -0.5 + Burn: -0.5 + Toxin: -1.25 + +- type: reagent + id: Hyper-Noblium + name: reagent-name-hyper-nob + desc: reagent-desc-hyper-nob + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#33cccc" + boilingPoint: -253.0 + meltingPoint: -259.2 + +- type: reagent + id: Proto-Nitrate + name: reagent-name-proto-nitrate + desc: reagent-desc-proto-nitrate + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#009933" + boilingPoint: -253.0 + meltingPoint: -259.2 + +- type: reagent + id: Zauker + name: reagent-name-zauker + desc: reagent-desc-zauker + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#1c1a1a" + boilingPoint: -253.0 + meltingPoint: -259.2 + metabolisms: + Gas: + effects: + - !type:HealthChange + conditions: + - !type:ReagentThreshold + reagent: Zauker + min: 0.25 + max: 8 + scaleByQuantity: true + ignoreResistances: true + damage: + types: + Slash: 0.75 + Heat: 0.25 + Poison: 0.25 + Bloodloss: 0.25 + - !type:HealthChange + conditions: + - !type:ReagentThreshold + reagent: Zauker + min: 8 + scaleByQuantity: true + ignoreResistances: true + damage: + types: + Slash: 0.015 + Heat: 0.005 + Poison: 0.005 + Bloodloss: 0.005 + +- type: reagent + id: Halon + name: reagent-name-halon + desc: reagent-desc-halon + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#e3574d" + boilingPoint: -253.0 + meltingPoint: -259.2 + +- type: reagent + id: Helium + name: reagent-name-helium + desc: reagent-desc-helium + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#005959" + boilingPoint: -253.0 + meltingPoint: -259.2 + +- type: reagent + id: Anti-Noblium + name: reagent-name-anti-nob + desc: reagent-desc-anti-nob + physicalDesc: reagent-physical-desc-gaseous + flavor: bitter + color: "#525151" + boilingPoint: -253.0 + meltingPoint: -259.2 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 0000000000..2c9b61f82f 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 0000000000..b134a5156d 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 0000000000..0583c3bd6c 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 bb9798c1e9..c7ddddb375 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 0000000000..28387ab2b7 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 0000000000..7a43f2bff3 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 0000000000..c50e8ae33f 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 0000000000..c61426fe4d 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 0000000000..3449434d71 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 0000000000..c0890f63d3 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 0000000000..c0d36bcf68 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 0000000000..b39dcf2f0c 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 0000000000..51a669b234 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 0000000000..098a77352e 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 0000000000..3f31cc19ad 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 0000000000..790b29df3e 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 0000000000..2672597f1f 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 0000000000..915ec5a080 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 0000000000..89494c9ea9 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 0000000000..a2325f89ac 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 0000000000..6fd8589083 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 7f9dfe2340..5c330cdc8d 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 0000000000..1d2d4681e2 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 0000000000..6e4d11066d 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 0000000000..0cab34c105 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 0000000000..ebd6834434 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 0000000000..8b1c313501 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 0000000000..f47b8b0936 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 0000000000..6ca53ae0fa 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 0000000000..843fcceb03 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/zauker.png differ