diff --git a/Content.Client/VendingMachines/UI/VendingMachineMenu.xaml.cs b/Content.Client/VendingMachines/UI/VendingMachineMenu.xaml.cs index 9d66b25b794..315cb3e0748 100644 --- a/Content.Client/VendingMachines/UI/VendingMachineMenu.xaml.cs +++ b/Content.Client/VendingMachines/UI/VendingMachineMenu.xaml.cs @@ -61,7 +61,7 @@ protected override void Dispose(bool disposing) /// Populates the list of available items on the vending machine interface /// and sets icons based on their prototypes /// - public void Populate(List inventory, out List filteredInventory, double priceMultiplier, int credits, string? filter = null) //ADT-Economy + public void Populate(EntityUid entityUid, List inventory, out List filteredInventory, double priceMultiplier, int credits, string? filter = null) //ADT-Economy { //ADT-Economy-Start CreditsLabel.Text = Loc.GetString("vending-ui-credits-amount", ("credits", credits)); @@ -72,6 +72,7 @@ public void Populate(List inventory, out List return; OnWithdraw?.Invoke(new VendingMachineWithdrawMessage()); }; + var vendComp = _entityManager.GetComponent(entityUid); //ADT-Economy //ADT-Economy-End filteredInventory = new(); @@ -99,7 +100,6 @@ public void Populate(List inventory, out List for (var i = 0; i < inventory.Count; i++) { var entry = inventory[i]; - var price = (int)(entry.Price * priceMultiplier); //ADT-Economy var vendingItem = VendingContents[i - filterCount]; vendingItem.Text = string.Empty; vendingItem.Icon = null; @@ -110,6 +110,18 @@ public void Populate(List inventory, out List _dummies.Add(entry.ID, dummy); } + //ADT-Economy-Start + var price = 0; + if (!vendComp.AllForFree) + { + price = (int)(entry.Price * priceMultiplier); + } + else + { + price = 0; // Это работает только если заспавненный вендомат уже был с этим значением. Спасибо визардам и их bounduserinterface емае. + } + //ADT-Economy-Start + var itemName = Identity.Name(dummy, _entityManager); Texture? icon = null; if (_prototypeManager.TryIndex(entry.ID, out var prototype)) @@ -129,7 +141,7 @@ public void Populate(List inventory, out List if (itemName.Length > longestEntry.Length) longestEntry = itemName; - vendingItem.Text = $" [{price}$] {itemName} [{entry.Amount}]"; //ADT-Economy + vendingItem.Text = $"[{price}$] {itemName} [{entry.Amount}]"; //ADT-Economy vendingItem.Icon = icon; filteredInventory.Add(i); } diff --git a/Content.Client/VendingMachines/VendingMachineBoundUserInterface.cs b/Content.Client/VendingMachines/VendingMachineBoundUserInterface.cs index a9903174d28..7ae2dae91ad 100644 --- a/Content.Client/VendingMachines/VendingMachineBoundUserInterface.cs +++ b/Content.Client/VendingMachines/VendingMachineBoundUserInterface.cs @@ -39,7 +39,7 @@ protected override void Open() _menu.OnSearchChanged += OnSearchChanged; _menu.OnWithdraw += SendMessage; //ADT-Economy - _menu.Populate(_cachedInventory, out _cachedFilteredIndex, component.PriceMultiplier, component.Credits); //ADT-Economy + _menu.Populate(Owner, _cachedInventory, out _cachedFilteredIndex, component.PriceMultiplier, component.Credits); //ADT-Economy } protected override void UpdateState(BoundUserInterfaceState state) @@ -51,7 +51,7 @@ protected override void UpdateState(BoundUserInterfaceState state) _cachedInventory = newState.Inventory; - _menu?.Populate(_cachedInventory, out _cachedFilteredIndex, newState.PriceMultiplier, newState.Credits); //ADT-Economy + _menu?.Populate(Owner, _cachedInventory, out _cachedFilteredIndex, newState.PriceMultiplier, newState.Credits, _menu.SearchBar.Text); //ADT-Economy } private void OnItemSelected(ItemList.ItemListSelectedEventArgs args) @@ -85,7 +85,7 @@ private void OnSearchChanged(string? filter) { //ADT-Economy-Start var component = EntMan.GetComponent(Owner); - _menu?.Populate(_cachedInventory, out _cachedFilteredIndex, component.PriceMultiplier, component.Credits, filter); + _menu?.Populate(Owner, _cachedInventory, out _cachedFilteredIndex, component.PriceMultiplier, component.Credits, filter); //ADT-Economy-End } } diff --git a/Content.Server/ADT/Atmos/Reactions/BZProductionReaction.cs b/Content.Server/ADT/Atmos/Reactions/BZProductionReaction.cs new file mode 100644 index 00000000000..eafb4dfb881 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/BZProductionReaction.cs @@ -0,0 +1,51 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class BZProductionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs b/Content.Server/ADT/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs new file mode 100644 index 00000000000..624cf1963b9 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/HalonOxygenAbsorptionReaction.cs @@ -0,0 +1,39 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class HalonOxygenAbsorptionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyUsed) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/HealiumProductionReaction.cs b/Content.Server/ADT/Atmos/Reactions/HealiumProductionReaction.cs new file mode 100644 index 00000000000..64be7a35333 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/HealiumProductionReaction.cs @@ -0,0 +1,40 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class HealiumProductionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/HydrogenFireReaction.cs b/Content.Server/ADT/Atmos/Reactions/HydrogenFireReaction.cs new file mode 100644 index 00000000000..0f7777dc57f --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/HydrogenFireReaction.cs @@ -0,0 +1,59 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions +{ + [UsedImplicitly] + [DataDefinition] + public sealed partial class HydrogenFireReaction : 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 energyReleased = 0f; + var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); + 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, true); + 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/ADT/Atmos/Reactions/HyperNobliumProductionReaction.cs b/Content.Server/ADT/Atmos/Reactions/HyperNobliumProductionReaction.cs new file mode 100644 index 00000000000..441bb8453bf --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/HyperNobliumProductionReaction.cs @@ -0,0 +1,41 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class HyperNobliumProductionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/NitriumDecompositionReaction.cs b/Content.Server/ADT/Atmos/Reactions/NitriumDecompositionReaction.cs new file mode 100644 index 00000000000..540bb2671c0 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/NitriumDecompositionReaction.cs @@ -0,0 +1,39 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class NitriumDecompositionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/NitriumProductionReaction.cs b/Content.Server/ADT/Atmos/Reactions/NitriumProductionReaction.cs new file mode 100644 index 00000000000..96519be6660 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/NitriumProductionReaction.cs @@ -0,0 +1,41 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class NitriumProductionReaction : 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 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, true); + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity - energyUsed) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/PluoxiumProductionReaction.cs b/Content.Server/ADT/Atmos/Reactions/PluoxiumProductionReaction.cs new file mode 100644 index 00000000000..4c02418a208 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/PluoxiumProductionReaction.cs @@ -0,0 +1,41 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class PluoxiumProductionReaction : 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 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, true); + var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/ProtoNitrateBZaseActionReaction.cs b/Content.Server/ADT/Atmos/Reactions/ProtoNitrateBZaseActionReaction.cs new file mode 100644 index 00000000000..8d89f1965f9 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/ProtoNitrateBZaseActionReaction.cs @@ -0,0 +1,41 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class ProtoNitrateBZaseConversionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/ProtoNitrateHydrogenConversionReaction.cs b/Content.Server/ADT/Atmos/Reactions/ProtoNitrateHydrogenConversionReaction.cs new file mode 100644 index 00000000000..c5166b0bf9b --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/ProtoNitrateHydrogenConversionReaction.cs @@ -0,0 +1,38 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class ProtoNitrateHydrogenConversionReaction : 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 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, true); + + mixture.AdjustMoles(Gas.Hydrogen, -producedAmount); + mixture.AdjustMoles(Gas.ProtoNitrate, producedAmount * 0.5f); + + var energyUsed = producedAmount * Atmospherics.ProtoNitrateHydrogenConversionEnergy; + + var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity - energyUsed) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/ProtoNitrateProductionReaction.cs b/Content.Server/ADT/Atmos/Reactions/ProtoNitrateProductionReaction.cs new file mode 100644 index 00000000000..43c9b49eca4 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/ProtoNitrateProductionReaction.cs @@ -0,0 +1,40 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class ProtoNitrateProductionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/ProtoNitrateTritiumDeirradiationReaction.cs b/Content.Server/ADT/Atmos/Reactions/ProtoNitrateTritiumDeirradiationReaction.cs new file mode 100644 index 00000000000..2093ccb3215 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/ProtoNitrateTritiumDeirradiationReaction.cs @@ -0,0 +1,40 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class ProtoNitrateTritiumConversionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/ZaukerDecompositionReaction.cs b/Content.Server/ADT/Atmos/Reactions/ZaukerDecompositionReaction.cs new file mode 100644 index 00000000000..5f93393419d --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/ZaukerDecompositionReaction.cs @@ -0,0 +1,39 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class ZaukerDecompositionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity + energyReleased) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Atmos/Reactions/ZaukerProductionReaction.cs b/Content.Server/ADT/Atmos/Reactions/ZaukerProductionReaction.cs new file mode 100644 index 00000000000..c1e101bcb15 --- /dev/null +++ b/Content.Server/ADT/Atmos/Reactions/ZaukerProductionReaction.cs @@ -0,0 +1,40 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; +using JetBrains.Annotations; + +namespace Content.Server.Atmos.Reactions; + +[UsedImplicitly] +public sealed partial class ZaukerProductionReaction : 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 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, true); + + 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, true); + if (newHeatCapacity > Atmospherics.MinimumHeatCapacity) + mixture.Temperature = Math.Max((mixture.Temperature * oldHeatCapacity - energyUsed) / newHeatCapacity, Atmospherics.TCMB); + + return ReactionResult.Reacting; + } +} diff --git a/Content.Server/ADT/Economy/BankCardSystem.cs b/Content.Server/ADT/Economy/BankCardSystem.cs index 8cd3ef2202a..088bdee6800 100644 --- a/Content.Server/ADT/Economy/BankCardSystem.cs +++ b/Content.Server/ADT/Economy/BankCardSystem.cs @@ -36,7 +36,7 @@ public sealed class BankCardSystem : EntitySystem [Dependency] private readonly GameTicker _gameTicker = default!; [Dependency] private readonly CartridgeLoaderSystem _cartridgeLoader = default!; - private const int SalaryDelay = 1200; + private const int SalaryDelay = 2700; private SalaryPrototype _salaries = default!; private readonly List _accounts = new(); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs index db952237338..a4088566033 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs @@ -40,11 +40,11 @@ private void ProcessHotspot( return; } - if(tile.ExcitedGroup != null) + if (tile.ExcitedGroup != null) //ADT-Gas 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)) //ADT-Gas { tile.Hotspot = new Hotspot(); InvalidateVisuals(ent, tile); @@ -67,14 +67,14 @@ private void ProcessHotspot( if (otherTile == null) continue; - if(!otherTile.Hotspot.Valid) - HotspotExpose(gridAtmosphere, otherTile, radiatedTemperature, Atmospherics.CellVolume/4); + if (!otherTile.Hotspot.Valid) //ADT-Gas + HotspotExpose(gridAtmosphere, otherTile, radiatedTemperature, Atmospherics.CellVolume / 4); //ADT-Gas } } } else { - tile.Hotspot.State = (byte) (tile.Hotspot.Volume > Atmospherics.CellVolume * 0.4f ? 2 : 1); + tile.Hotspot.State = (byte)(tile.Hotspot.Volume > Atmospherics.CellVolume * 0.4f ? 2 : 1); //ADT-Gas } if (tile.Hotspot.Temperature > tile.MaxFireTemperatureSustained) @@ -87,7 +87,7 @@ private void ProcessHotspot( // A few details on the audio parameters for fire. // The greater the fire state, the lesser the pitch variation. // The greater the fire state, the greater the volume. - _audio.PlayPvs(HotspotSound, coordinates, AudioParams.Default.WithVariation(0.15f/tile.Hotspot.State).WithVolume(-5f + 5f * tile.Hotspot.State)); + _audio.PlayPvs(HotspotSound, coordinates, AudioParams.Default.WithVariation(0.15f / tile.Hotspot.State).WithVolume(-5f + 5f * tile.Hotspot.State)); //ADT-Gas } if (_hotspotSoundCooldown > HotspotSoundCooldownCycles) @@ -109,12 +109,16 @@ private void HotspotExpose(GridAtmosphereComponent gridAtmosphere, TileAtmospher var plasma = tile.Air.GetMoles(Gas.Plasma); var tritium = tile.Air.GetMoles(Gas.Tritium); + //ADT-Gas-Start + var hydrogen = tile.Air.GetMoles(Gas.Hydrogen); + var hypernoblium = tile.Air.GetMoles(Gas.HyperNoblium); + //ADT-Gas-End 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) //ADT-Gas { if (tile.Hotspot.Temperature < exposedTemperature) tile.Hotspot.Temperature = exposedTemperature; @@ -126,10 +130,10 @@ private void HotspotExpose(GridAtmosphereComponent gridAtmosphere, TileAtmospher return; } - if ((exposedTemperature > Atmospherics.PlasmaMinimumBurnTemperature) && (plasma > 0.5f || tritium > 0.5f)) + if ((exposedTemperature > Atmospherics.PlasmaMinimumBurnTemperature) && (plasma > 0.5f && hypernoblium < 5f || tritium > 0.5f && hypernoblium < 5f || hydrogen > 0.5f && hypernoblium < 5f)) //ADT-Gas { 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"); //ADT-Gas tile.Hotspot = new Hotspot { @@ -149,7 +153,7 @@ private void PerformHotspotExposure(TileAtmosphere tile) { if (tile.Air == null || !tile.Hotspot.Valid) return; - tile.Hotspot.Bypassing = tile.Hotspot.SkippedFirstProcess && tile.Hotspot.Volume > tile.Air.Volume*0.95f; + tile.Hotspot.Bypassing = tile.Hotspot.SkippedFirstProcess && tile.Hotspot.Volume > tile.Air.Volume * 0.95f; //ADT-Gas if (tile.Hotspot.Bypassing) { diff --git a/Content.Server/Atmos/Portable/PortableScrubberComponent.cs b/Content.Server/Atmos/Portable/PortableScrubberComponent.cs index ae9a5da9639..b4ea4fa7d68 100644 --- a/Content.Server/Atmos/Portable/PortableScrubberComponent.cs +++ b/Content.Server/Atmos/Portable/PortableScrubberComponent.cs @@ -28,7 +28,20 @@ public sealed partial class PortableScrubberComponent : Component Gas.WaterVapor, Gas.Ammonia, Gas.NitrousOxide, - Gas.Frezon + Gas.Frezon, + //ADT-Gas-Start + Gas.BZ, + Gas.Pluoxium, + Gas.Hydrogen, + Gas.Nitrium, + Gas.Healium, + Gas.HyperNoblium, + Gas.ProtoNitrate, + Gas.Zauker, + Gas.Halon, + Gas.Helium, + Gas.AntiNoblium + //ADT-Gas-End }; [ViewVariables(VVAccess.ReadWrite)] diff --git a/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs b/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs index 475c149cf37..14101889cf7 100644 --- a/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs +++ b/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs @@ -13,6 +13,12 @@ public sealed partial class FrezonCoolantReaction : IGasReactionEffect { public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale) { + //ADT-Gas-Start + var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium); + if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f) + return ReactionResult.NoReaction; + //ADT-Gas-End + var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); var temperature = mixture.Temperature; diff --git a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs index e3d3ece6b6a..042cf3c98d5 100644 --- a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs +++ b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs @@ -14,6 +14,12 @@ public sealed partial class FrezonProductionReaction : IGasReactionEffect { public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale) { + //ADT-Gas-Start + var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium); + if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f) + return ReactionResult.NoReaction; + //ADT-Gas-End + 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/PlasmaFireReaction.cs b/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs index 98d567d4ed5..b3ec470699b 100644 --- a/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs +++ b/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs @@ -11,6 +11,12 @@ public sealed partial class PlasmaFireReaction : IGasReactionEffect { public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale) { + //ADT-Gas-Start + var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium); + if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f) + return ReactionResult.NoReaction; + //ADT-Gas-End + var energyReleased = 0f; var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); var temperature = mixture.Temperature; diff --git a/Content.Server/Atmos/Reactions/TritiumFireReaction.cs b/Content.Server/Atmos/Reactions/TritiumFireReaction.cs index 3ad0a4b04de..aabd9158f8c 100644 --- a/Content.Server/Atmos/Reactions/TritiumFireReaction.cs +++ b/Content.Server/Atmos/Reactions/TritiumFireReaction.cs @@ -11,6 +11,12 @@ public sealed partial class TritiumFireReaction : IGasReactionEffect { public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale) { + //ADT-Gas-Start + var initialHyperNoblium = mixture.GetMoles(Gas.HyperNoblium); + if (initialHyperNoblium >= 5.0f && mixture.Temperature > 20f) + return ReactionResult.NoReaction; + //ADT-Gas-End + var energyReleased = 0f; var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true); var temperature = mixture.Temperature; diff --git a/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs b/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs index 171aca12c27..8388277f8ea 100644 --- a/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs +++ b/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs @@ -14,6 +14,11 @@ public sealed partial class GasLeakRuleComponent : Component Gas.Tritium, Gas.Frezon, Gas.WaterVapor, // the fog + //ADT-Gas-Start + Gas.BZ, + Gas.Hydrogen, + Gas.Halon + //ADT-Gas-End }; /// diff --git a/Content.Server/VendingMachines/VendingMachineSystem.cs b/Content.Server/VendingMachines/VendingMachineSystem.cs index af05789afff..301065f37bf 100644 --- a/Content.Server/VendingMachines/VendingMachineSystem.cs +++ b/Content.Server/VendingMachines/VendingMachineSystem.cs @@ -240,13 +240,13 @@ private void OnInteractUsing(EntityUid uid, VendingMachineComponent component, I protected override int GetEntryPrice(EntityPrototype proto) { - var price = (int) _pricing.GetEstimatedPrice(proto); + var price = (int)_pricing.GetEstimatedPrice(proto); return price > 0 ? price : 25; } private int GetPrice(VendingMachineInventoryEntry entry, VendingMachineComponent comp) { - return (int) (entry.Price * GetPriceMultiplier(comp)); + return (int)(entry.Price * GetPriceMultiplier(comp)); } private double GetPriceMultiplier(VendingMachineComponent comp) @@ -359,7 +359,7 @@ public void TryEjectVendorItem(EntityUid uid, InventoryType type, string itemId, //ADT-Economy-Start var price = GetPrice(entry, vendComponent); - if (price > 0 && sender.HasValue && !_tag.HasTag(sender.Value, "IgnoreBalanceChecks")) + if (price > 0 && !vendComponent.AllForFree && sender.HasValue && !_tag.HasTag(sender.Value, "IgnoreBalanceChecks")) { var success = false; if (vendComponent.Credits >= price) diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs index fccc71f1606..fe65bc2bc61 100644 --- a/Content.Shared/Atmos/Atmospherics.cs +++ b/Content.Shared/Atmos/Atmospherics.cs @@ -172,7 +172,7 @@ public static class Atmospherics /// /// Total number of gases. Increase this if you want to add more! /// - public const int TotalNumberOfGases = 9; + public const int TotalNumberOfGases = 20; //ADT-Gas /// /// This is the actual length of the gases arrays in mixtures. @@ -320,6 +320,53 @@ public static class Atmospherics public const float MaxTransferRate = 200; #endregion + + #region ADT-Gas + /// + /// 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; + #endregion } /// @@ -336,6 +383,19 @@ public enum Gas : sbyte WaterVapor = 5, Ammonia = 6, NitrousOxide = 7, - Frezon = 8 + Frezon = 8, + //ADT-Gas-Start + BZ = 9, + Pluoxium = 10, + Hydrogen = 11, + Nitrium = 12, + Healium = 13, + HyperNoblium = 14, + ProtoNitrate = 15, + Zauker = 16, + Halon = 17, + Helium = 18, + AntiNoblium = 19 + //ADT-Gas-End } } diff --git a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs index 2a333062450..18fab25ee8d 100644 --- a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs +++ b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs @@ -22,7 +22,20 @@ public sealed class GasVentScrubberData : IAtmosDeviceData Gas.WaterVapor, Gas.Ammonia, Gas.NitrousOxide, - Gas.Frezon + Gas.Frezon, + //ADT-Gas-Start + Gas.BZ, + Gas.Pluoxium, + Gas.Hydrogen, + Gas.Nitrium, + Gas.Healium, + Gas.HyperNoblium, + Gas.ProtoNitrate, + Gas.Zauker, + Gas.Halon, + Gas.Helium, + Gas.AntiNoblium + //ADT-Gas-End }; // Presets for 'dumb' air alarm modes diff --git a/Content.Shared/VendingMachines/VendingMachineComponent.cs b/Content.Shared/VendingMachines/VendingMachineComponent.cs index 1f4ffcc42aa..130eaec3869 100644 --- a/Content.Shared/VendingMachines/VendingMachineComponent.cs +++ b/Content.Shared/VendingMachines/VendingMachineComponent.cs @@ -193,6 +193,9 @@ public sealed partial class VendingMachineComponent : Component [DataField, ViewVariables(VVAccess.ReadWrite)] public double PriceMultiplier = 0.25; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool AllForFree = false; + public ProtoId CreditStackPrototype = "Credit"; [DataField] diff --git a/Content.Shared/VendingMachines/VendingMachineInterfaceState.cs b/Content.Shared/VendingMachines/VendingMachineInterfaceState.cs index 121047205be..d1d4ae35e8a 100644 --- a/Content.Shared/VendingMachines/VendingMachineInterfaceState.cs +++ b/Content.Shared/VendingMachines/VendingMachineInterfaceState.cs @@ -9,8 +9,7 @@ public sealed class VendingMachineInterfaceState : BoundUserInterfaceState //ADT-Economy-Start public double PriceMultiplier; public int Credits; - public VendingMachineInterfaceState(List inventory, double priceMultiplier, - int credits) + public VendingMachineInterfaceState(List inventory, double priceMultiplier, int credits) //ADT-Economy-End { Inventory = inventory; diff --git a/Resources/Locale/ru-RU/ADT/gases/gases.ftl b/Resources/Locale/ru-RU/ADT/gases/gases.ftl new file mode 100644 index 00000000000..802f85d3883 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/gases/gases.ftl @@ -0,0 +1,11 @@ +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/ADT/lathe/lathe-categories.ftl b/Resources/Locale/ru-RU/ADT/lathe/lathe-categories.ftl new file mode 100644 index 00000000000..29bb98b59d7 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/lathe/lathe-categories.ftl @@ -0,0 +1,2 @@ +lathe-category-atmos = Атмосфера +lathe-category-disposals = Утилизация diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/Circuitboards/Machine/production.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/Circuitboards/Machine/production.ftl index 36053d64cbc..7dde1877a34 100644 --- a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/Circuitboards/Machine/production.ftl +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/Circuitboards/Machine/production.ftl @@ -1,2 +1,4 @@ -ent-ADTIndustrialSMESMachineCircuitboard = Плата индустриального СМЭСа +ent-ADTIndustrialSMESMachineCircuitboard = плата индустриального СМЭСа .desc = Плата Сверхпроводящей Магнитной Энергонакопительной Станции (СМЭС) повышенной ёмкости емкости. Передовое иследование НТ в передачи и хранении энергии. +ent-ADTUniversalPipeDispenserCircuitboard = плата универсального раздатчика труб + .desc = Машинная плата, используемая для создания универсального раздатчика труб. Существует в единственном экземпляре. diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Machines/lathe.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Machines/lathe.ftl new file mode 100644 index 00000000000..3cbb1214497 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Machines/lathe.ftl @@ -0,0 +1,2 @@ +ent-ADTUniversalPipeDispenser = универсальный раздатчик труб + .desc = Печатает трубы для всевозможных ситуаций. Тем не менее, в комплект не входят продвинутые атмосферные технологии. diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Storage/canisters/gas-canisters.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Storage/canisters/gas-canisters.ftl new file mode 100644 index 00000000000..272b8cc0f5e --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Storage/canisters/gas-canisters.ftl @@ -0,0 +1,45 @@ +ent-ADTBZCanister = канистра бз + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится бз. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTPluoxiumCanister = канистра плюоксиума + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится плюоксиум. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTHydrogenCanister = канистра водорода + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится водород. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTNitriumCanister = канистра нитриума + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится нитриум. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTHealiumCanister = канистра хилиума + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится хилиум. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTHyperNobliumCanister = канистра гипер-ноблия + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится гипер-ноблий. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTProtoNitrateCanister = канистра прото-нитрата + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится прото-нитрат. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTZaukerCanister = канистра заукера + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится заукер. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTHalonCanister = канистра галона + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится галон. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTHeliumCanister = канистра гелия + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится гелий. Можно прикрепить к порту коннектора с помощью гаечного ключа. +ent-ADTAntiNobliumCanister = канистра анти-ноблия + .desc = Канистра, в которой может содержаться газ любого вида. В этой, предположительно, содержится анти-ноблий. Можно прикрепить к порту коннектора с помощью гаечного ключа. +# Сломанные +ent-ADTBZCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTPluoxiumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTHydrogenCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTNitriumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTHealiumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTHyperNobliumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTProtoNitrateCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTZaukerCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTHalonCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTHeliumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } +ent-ADTAntiNobliumCanisterBroken = { ent-GasCanisterBrokenBase } + .desc = { ent-GasCanisterBrokenBase.desc } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/piping/atmospherics/pipes.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/piping/atmospherics/pipes.ftl new file mode 100644 index 00000000000..999e73def44 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/piping/atmospherics/pipes.ftl @@ -0,0 +1,15 @@ +ent-ADTGasPipeHalf = { ent-GasPipeBase } + .suffix = Половинная + .desc = { ent-GasPipeBase.desc } +ent-ADTGasPipeStraight = { ent-GasPipeBase } + .suffix = Прямая + .desc = { ent-GasPipeBase.desc } +ent-ADTGasPipeBend = { ent-GasPipeBase } + .suffix = Угловая + .desc = { ent-GasPipeBase.desc } +ent-ADTGasPipeTJunction = { ent-GasPipeBase } + .suffix = Т-образная + .desc = { ent-GasPipeBase.desc } +ent-ADTGasPipeFourway = { ent-GasPipeBase } + .suffix = Четверная + .desc = { ent-GasPipeBase.desc } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/piping/disposal/pipes.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/piping/disposal/pipes.ftl new file mode 100644 index 00000000000..c7eea5f8915 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/piping/disposal/pipes.ftl @@ -0,0 +1,25 @@ +ent-ADTDisposalPipe = участок утилизационной трубы + .desc = Большой сегмент трубы, используемый при создании системы утилизации. +ent-ADTDisposalTagger = маркировщик утилизационной трубы + .desc = Труба, маркирующая объекты для отправки определённому адресату. +ent-ADTDisposalTrunk = ствол утилизационной трубы + .desc = Труба, используемая в качестве точки входа в систему утилизации. +ent-ADTDisposalRouter = маршрутизатор утилизационной трубы + .desc = Трёхсторонний маршрутизатор. Объекты с совпадающими маркерами уходят в сторону с помощью настраиваемых фильтров. +ent-ADTDisposalRouterFlipped = { ent-ADTDisposalRouter } + .suffix = Перевёрнутый + .desc = { ent-ADTDisposalRouter.desc } +ent-ADTDisposalJunction = развязка утилизационной трубы + .desc = Трёхсторонняя развязка. Стрелка указывает на место выхода объектов. +ent-ADTDisposalJunctionFlipped = { ent-ADTDisposalJunction } + .desc = { ent-ADTDisposalJunction.desc } + .suffix = Перевёрнутый +ent-ADTDisposalYJunction = Y-развязка утилизационной трубы + .desc = Трёхсторонняя развязка с альтернативным местом выхода. +ent-ADTDisposalBend = изгиб утилизационной трубы + .desc = Труба, согнутая под прямым углом. +ent-ADTDisposalSignalRouter = сигнальный утилизационный маршрутизатор + .desc = Трёхсторонний маршрутизатор, управляемый сигналами. +ent-ADTDisposalSignalRouterFlipped = { ent-ADTDisposalSignalRouter } + .suffix = Перевёрнутый + .desc = { ent-ADTDisposalSignalRouter.desc } diff --git a/Resources/Locale/ru-RU/ADT/reagents/meta/gases.ftl b/Resources/Locale/ru-RU/ADT/reagents/meta/gases.ftl new file mode 100644 index 00000000000..0b257f45d2b --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/reagents/meta/gases.ftl @@ -0,0 +1,20 @@ +reagent-name-bz = бз +reagent-desc-bz = Сильнодействующий галлюциноген, который также погружает слизней в стазис. +reagent-name-pluoxium = плюоксиум +reagent-desc-pluoxium = Газ, насыщающий кровь большим количеством кислорода, не будучи окислителем. +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/Prototypes/ADT/Atmospherics/gases.yml b/Resources/Prototypes/ADT/Atmospherics/gases.yml new file mode 100644 index 00000000000..836fe83bd6a --- /dev/null +++ b/Resources/Prototypes/ADT/Atmospherics/gases.yml @@ -0,0 +1,137 @@ +- 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: 30 + +- 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/ADT/Atmospherics/reactions.yml b/Resources/Prototypes/ADT/Atmospherics/reactions.yml new file mode 100644 index 00000000000..0fc040143c6 --- /dev/null +++ b/Resources/Prototypes/ADT/Atmospherics/reactions.yml @@ -0,0 +1,369 @@ +- 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/ADT/Atmospherics/thresholds.yml b/Resources/Prototypes/ADT/Atmospherics/thresholds.yml new file mode 100644 index 00000000000..4493938abc2 --- /dev/null +++ b/Resources/Prototypes/ADT/Atmospherics/thresholds.yml @@ -0,0 +1,6 @@ +- type: alarmThreshold + id: unwanted + upperBound: !type:AlarmThresholdSetting + threshold: 0.0025 + upperWarnAround: !type:AlarmThresholdSetting + threshold: 0.5 diff --git a/Resources/Prototypes/ADT/Economy/salary.yml b/Resources/Prototypes/ADT/Economy/salary.yml index b91d5d0807b..98e107820be 100644 --- a/Resources/Prototypes/ADT/Economy/salary.yml +++ b/Resources/Prototypes/ADT/Economy/salary.yml @@ -5,6 +5,7 @@ Captain: 800 Magistrat: 800 CentralCommandOfficial: 800 + IAA: 600 ChiefEngineer: 600 ChiefMedicalOfficer: 600 HeadOfPersonnel: 600 @@ -39,6 +40,7 @@ SecurityCadet: 200 SecurityOfficer: 300 Detective: 400 + Pilot: 400 Warden: 500 ADTPathologist: 400 ADTRoboticist: 400 diff --git a/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/Machine/production.yml b/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/Machine/production.yml index 1d8d929077d..9b09499f0c4 100644 --- a/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/Machine/production.yml @@ -13,3 +13,21 @@ PowerCell: amount: 16 defaultPrototype: PowerCellSmall + +- type: entity + id: ADTUniversalPipeDispenserCircuitboard + parent: BaseMachineCircuitboard + name: universal pipe dispenser board + description: A machine circuit board for a universal pipe dispenser. Exists in a single copy. + components: + - type: Sprite + state: engineering + - type: MachineBoard + prototype: ADTUniversalPipeDispenser + stackRequirements: + MatterBin: 2 + Manipulator: 2 + tagRequirements: + GlassBeaker: + amount: 2 + defaultPrototype: Beaker diff --git a/Resources/Prototypes/ADT/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/ADT/Entities/Structures/Machines/lathe.yml new file mode 100644 index 00000000000..fada7f1894b --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Structures/Machines/lathe.yml @@ -0,0 +1,39 @@ +- type: entity + id: ADTUniversalPipeDispenser + parent: BaseLatheLube + name: universal pipe dispenser + description: Prints pipes for all kinds of situations. However, the kit does not include advanced atmospheric technologies. + components: + - type: Sprite + sprite: ADT/Structures/Machines/pipedispenser.rsi + layers: + - state: icon + map: ["enum.LatheVisualLayers.IsRunning"] + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: Machine + board: ADTUniversalPipeDispenserCircuitboard + - type: Lathe + idleState: icon + runningState: printing + staticRecipes: + - DisposalPipe + - DisposalTagger + - DisposalTrunk + - DisposalRouter + - DisposalRouterFlipped + - DisposalJunction + - DisposalJunctionFlipped + - DisposalYJunction + - DisposalBend + - DisposalSignalRouter + - DisposalSignalRouterFlipped + - GasPipeHalf + - GasPipeStraight + - GasPipeBend + - GasPipeTJunction + - GasPipeFourway + - type: MaterialStorage + whitelist: + tags: + - ADTSteelSheet diff --git a/Resources/Prototypes/ADT/Entities/Structures/Piping/Atmospherics/pipes.yml b/Resources/Prototypes/ADT/Entities/Structures/Piping/Atmospherics/pipes.yml new file mode 100644 index 00000000000..6268266c4e3 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Structures/Piping/Atmospherics/pipes.yml @@ -0,0 +1,64 @@ +- type: entity + parent: GasPipeHalf + id: ADTGasPipeHalf + suffix: Half + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: GasPipeStraight + id: ADTGasPipeStraight + suffix: Straight + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: GasPipeBend + id: ADTGasPipeBend + suffix: Bend + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: GasPipeTJunction + id: ADTGasPipeTJunction + suffix: TJunction + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: GasPipeFourway + id: ADTGasPipeFourway + suffix: Fourway + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null diff --git a/Resources/Prototypes/ADT/Entities/Structures/Piping/Disposal/pipes.yml b/Resources/Prototypes/ADT/Entities/Structures/Piping/Disposal/pipes.yml new file mode 100644 index 00000000000..772808d8bd0 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Structures/Piping/Disposal/pipes.yml @@ -0,0 +1,131 @@ +- type: entity + parent: DisposalPipe + id: ADTDisposalPipe + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalTagger + id: ADTDisposalTagger + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalTrunk + id: ADTDisposalTrunk + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalRouter + id: ADTDisposalRouter + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalRouterFlipped + id: ADTDisposalRouterFlipped + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalJunction + id: ADTDisposalJunction + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalJunctionFlipped + id: ADTDisposalJunctionFlipped + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalYJunction + id: ADTDisposalYJunction + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalBend + id: ADTDisposalBend + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalSignalRouter + id: ADTDisposalSignalRouter + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null + +- type: entity + parent: DisposalSignalRouterFlipped + id: ADTDisposalSignalRouterFlipped + components: + - type: Transform + anchored: false + - type: Physics + bodyType: Dynamic + canCollide: True + - type: Construction + deconstructionTarget: null diff --git a/Resources/Prototypes/ADT/Entities/Structures/Storage/Canisters/gas_canisters.yml b/Resources/Prototypes/ADT/Entities/Structures/Storage/Canisters/gas_canisters.yml new file mode 100644 index 00000000000..835502835ad --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Structures/Storage/Canisters/gas_canisters.yml @@ -0,0 +1,693 @@ +- type: entity + parent: GasCanister + id: ADTBZCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTBZCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTPluoxiumCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTPluoxiumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTHydrogenCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTHydrogenCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTNitriumCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTNitriumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTHealiumCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTHealiumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTHyperNobliumCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTHyperNobliumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTProtoNitrateCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTProtoNitrateCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTZaukerCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTZaukerCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTHalonCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTHalonCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTHeliumCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTHeliumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +- type: entity + parent: GasCanister + id: ADTAntiNobliumCanister + 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: + collection: MetalBreak + - !type:SpawnEntitiesBehavior + spawn: + ADTAntiNobliumCanisterBroken: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:DumpCanisterBehavior + - type: Lock + locked: true + +# А дальше сломанные + +- type: entity + parent: GasCanisterBrokenBase + id: ADTBZCanisterBroken + noSpawn: true + components: + - type: Sprite + state: purple-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTPluoxiumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: darkblue-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTHydrogenCanisterBroken + noSpawn: true + components: + - type: Sprite + state: h2-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTNitriumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: brown-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTHealiumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: healium-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTHyperNobliumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: nob-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTProtoNitrateCanisterBroken + noSpawn: true + components: + - type: Sprite + state: proto_nitrate-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTZaukerCanisterBroken + noSpawn: true + components: + - type: Sprite + state: zauker-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTHalonCanisterBroken + noSpawn: true + components: + - type: Sprite + state: halon-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTHeliumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: helium-1 + +- type: entity + parent: GasCanisterBrokenBase + id: ADTAntiNobliumCanisterBroken + noSpawn: true + components: + - type: Sprite + state: antinob-1 diff --git a/Resources/Prototypes/ADT/Reagents/gases.yml b/Resources/Prototypes/ADT/Reagents/gases.yml new file mode 100644 index 00000000000..428b27c2f05 --- /dev/null +++ b/Resources/Prototypes/ADT/Reagents/gases.yml @@ -0,0 +1,285 @@ +- 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/Prototypes/ADT/Recipes/Lathes/categories.yml b/Resources/Prototypes/ADT/Recipes/Lathes/categories.yml new file mode 100644 index 00000000000..69cbaef329d --- /dev/null +++ b/Resources/Prototypes/ADT/Recipes/Lathes/categories.yml @@ -0,0 +1,7 @@ +- type: latheCategory + id: Atmos + name: lathe-category-atmos + +- type: latheCategory + id: Disposals + name: lathe-category-disposals diff --git a/Resources/Prototypes/ADT/Recipes/Lathes/pipes.yml b/Resources/Prototypes/ADT/Recipes/Lathes/pipes.yml new file mode 100644 index 00000000000..b6b32b8aa22 --- /dev/null +++ b/Resources/Prototypes/ADT/Recipes/Lathes/pipes.yml @@ -0,0 +1,147 @@ +# Disposal + +- type: latheRecipe + id: DisposalPipe + result: ADTDisposalPipe + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalTagger + result: ADTDisposalTagger + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalTrunk + result: ADTDisposalTrunk + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalRouter + result: ADTDisposalRouter + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalRouterFlipped + result: ADTDisposalRouterFlipped + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalJunction + result: ADTDisposalJunction + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalJunctionFlipped + result: ADTDisposalJunctionFlipped + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalYJunction + result: ADTDisposalYJunction + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalBend + result: ADTDisposalBend + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalSignalRouter + result: ADTDisposalSignalRouter + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +- type: latheRecipe + id: DisposalSignalRouterFlipped + result: ADTDisposalSignalRouterFlipped + category: Disposals + completetime: 2 + applyMaterialDiscount: false + materials: + Steel: 50 + +# Atmos + +- type: latheRecipe + id: GasPipeHalf + result: ADTGasPipeHalf + category: Atmos + completetime: 1 + applyMaterialDiscount: false + materials: + Steel: 25 + +- type: latheRecipe + id: GasPipeStraight + result: ADTGasPipeStraight + category: Atmos + completetime: 1 + applyMaterialDiscount: false + materials: + Steel: 25 + +- type: latheRecipe + id: GasPipeBend + result: ADTGasPipeBend + category: Atmos + completetime: 1 + applyMaterialDiscount: false + materials: + Steel: 25 + +- type: latheRecipe + id: GasPipeTJunction + result: ADTGasPipeTJunction + category: Atmos + completetime: 1 + applyMaterialDiscount: false + materials: + Steel: 25 + +- type: latheRecipe + id: GasPipeFourway + result: ADTGasPipeFourway + category: Atmos + completetime: 1 + applyMaterialDiscount: false + materials: + Steel: 25 diff --git a/Resources/Prototypes/ADT/tags.yml b/Resources/Prototypes/ADT/tags.yml index 63f10c53ff9..63c3b15c74b 100644 --- a/Resources/Prototypes/ADT/tags.yml +++ b/Resources/Prototypes/ADT/tags.yml @@ -31,3 +31,5 @@ - type: Tag id: PlushieSharkBlack +- type: Tag + id: ADTSteelSheet diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index 5f48ba4c8f2..35625a3ee7f 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -194,6 +194,11 @@ - id: ClothingNeckCloakCe - id: ADTClothingMaskGasCE # End-ADT Tweak + # ADT-UPD-Start + - id: ADTUniversalPipeDispenserCircuitboard + - id: ADTRPD + - id: ADTRPDAmmo + # ADT-UPD-End # ADT-WikiBooks-Start - id: ADTBookSRPcmd - id: ADTBookSRPeng @@ -220,6 +225,11 @@ - id: AccessConfigurator - id: RCD - id: RCDAmmo + # ADT-UPD-Start + - id: ADTUniversalPipeDispenserCircuitboard + - id: ADTRPD + - id: ADTRPDAmmo + # ADT-UPD-End # ADT-WikiBooks-Start - id: ADTBookSRPcmd - id: ADTBookSRPeng diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml index 82b9f62837a..d60b8346794 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml @@ -69,6 +69,11 @@ Quantity: 9 - ReagentId: Carbon Quantity: 1 + # ADT-UPD-Start + - type: Tag + tags: + - ADTSteelSheet + # ADT-UPD-End - type: entity parent: SheetSteel diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index db0068efcfb..1e0a967f8e4 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -175,6 +175,7 @@ normalState: normal-unshaded denyState: deny-unshaded loopDeny: false + priceMultiplier: 0.57 # ADT-Economy - type: Advertise pack: BoozeOMatAds - type: SpeakOnUIClosed @@ -792,6 +793,7 @@ ejectState: eject-unshaded denyState: deny-unshaded ejectDelay: 0.6 + allForFree: true # ADT-Economy - type: Advertise pack: NanoMedAds - type: SpeakOnUIClosed @@ -901,6 +903,7 @@ normalState: normal-unshaded ejectState: eject-unshaded denyState: deny-unshaded + allForFree: true # ADT-Economy - type: Advertise pack: MegaSeedAds - type: SpeakOnUIClosed @@ -927,6 +930,10 @@ components: - type: AccessReader access: [["Hydroponics"]] + # ADT-Economy-Start + - type: VendingMachine + allForFree: false + # ADT-Economy-End - type: entity parent: VendingMachine @@ -979,6 +986,7 @@ normalState: normal-unshaded ejectState: eject-unshaded denyState: deny-unshaded + allForFree: true # ADT-Economy - type: Sprite sprite: Structures/Machines/VendingMachines/sustenance.rsi layers: @@ -1411,6 +1419,7 @@ brokenState: broken normalState: normal-unshaded denyState: deny-unshaded + allForFree: true # ADT-Economy - type: Sprite sprite: Structures/Machines/VendingMachines/wallmed.rsi layers: @@ -1888,6 +1897,7 @@ offState: off brokenState: broken normalState: normal-unshaded + allForFree: true # ADT-Economy - type: Advertise pack: SyndieDrobeAds - type: SpeakOnUIClosed @@ -2070,6 +2080,7 @@ components: - type: VendingMachine pack: TankDispenserEVAInventory + allForFree: true # ADT-Economy - type: Sprite sprite: Structures/Machines/VendingMachines/tankdispenser.rsi #TODO add visualiser for remaining tanks as layers state: dispenser @@ -2083,6 +2094,7 @@ components: - type: VendingMachine pack: TankDispenserEngineeringInventory + allForFree: true # ADT-Economy - type: Sprite sprite: Structures/Machines/VendingMachines/tankdispenser.rsi #TODO add visualiser for remaining tanks as layers layers: @@ -2102,6 +2114,7 @@ normalState: normal denyState: deny ejectDelay: 2 + allForFree: true # ADT-Economy - type: Sprite sprite: Structures/Machines/VendingMachines/chemvend.rsi layers: @@ -2130,6 +2143,7 @@ normalState: normal denyState: deny ejectDelay: 2 + allForFree: true # ADT-Economy - type: AccessReader access: [["SyndicateAgent"]] diff --git a/Resources/Prototypes/Entities/Structures/Piping/Disposal/pipes.yml b/Resources/Prototypes/Entities/Structures/Piping/Disposal/pipes.yml index 8a3e83c5196..acba0e2e220 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Disposal/pipes.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Disposal/pipes.yml @@ -64,6 +64,14 @@ delay: 2 fx: EffectRCDDeconstruct2 # ADT-RPD-End + # ADT-UPD-Start + - type: Item + size: Ginormous + - type: HeldSpeedModifier + walkModifier: 0.5 + sprintModifier: 0.5 + - type: MultiHandedItem + # ADT-UPD-End - type: entity id: DisposalHolder diff --git a/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml b/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml index ea3427e2903..8f7a3920368 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/sensor.yml @@ -25,6 +25,19 @@ Ammonia: stationAmmonia NitrousOxide: stationNO Frezon: danger + # ADT-Gas-Start + BZ: danger + Pluoxium: unwanted + Hydrogen: danger + Nitrium: unwanted + Healium: danger + HyperNoblium: unwanted + ProtoNitrate: danger + Zauker: danger + Halon: danger + Helium: unwanted + AntiNoblium: danger + # ADT-Gas-End - 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 147e9e5b371..6528480a200 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml @@ -611,6 +611,7 @@ - 0 # Ammonia - 0 # N2O - 1871.71051 # Frezon + - 0 # BZ + ADT-Gas temperature: 293.15 - type: Destructible thresholds: diff --git a/Resources/Prototypes/Reagents/elements.yml b/Resources/Prototypes/Reagents/elements.yml index 8d317102c1b..2a8594adfec 100644 --- a/Resources/Prototypes/Reagents/elements.yml +++ b/Resources/Prototypes/Reagents/elements.yml @@ -116,16 +116,18 @@ 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: "#cccccc" - boilingPoint: -253.0 - meltingPoint: -259.2 +# ADT-Gas-Start +# - type: reagent +# id: Hydrogen +# name: reagent-name-hydrogen +# group: Elements +# desc: reagent-desc-hydrogen +# physicalDesc: reagent-physical-desc-gaseous +# flavor: bitter +# color: "#cccccc" +# boilingPoint: -253.0 +# meltingPoint: -259.2 +# ADT-Gas-End - type: reagent id: Iodine diff --git a/Resources/Prototypes/Reagents/gases.yml b/Resources/Prototypes/Reagents/gases.yml index 7705a20acdc..1880c40589c 100644 --- a/Resources/Prototypes/Reagents/gases.yml +++ b/Resources/Prototypes/Reagents/gases.yml @@ -97,6 +97,10 @@ Gas: # Start ADT tweak: Novakid effects: + - !type:Oxygenate + conditions: + - !type:OrganType + type: Novakid - !type:HealthChange conditions: - !type:OrganType diff --git a/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/icon.png b/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/icon.png new file mode 100644 index 00000000000..2acec63635d Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/icon.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/meta.json b/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/meta.json new file mode 100644 index 00000000000..d35a4e9f6c3 --- /dev/null +++ b/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/meta.json @@ -0,0 +1,39 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/1da0b5547e02db0db48d0bc93926c26bd8888347", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "printing", + "delays": [ + [ + 0.05, + 0.1, + 0.3, + 0.1, + 0.05, + 0.1, + 0.3, + 0.1, + 0.05, + 0.1, + 0.3, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "icon" + }, + { + "name": "panel" + } + ] +} diff --git a/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/panel.png b/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/panel.png new file mode 100644 index 00000000000..56c46d2744e Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/panel.png differ diff --git a/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/printing.png b/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/printing.png new file mode 100644 index 00000000000..ee30eb43920 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Machines/pipedispenser.rsi/printing.png differ 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 00000000000..2c9b61f82fc 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 00000000000..b134a5156df 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 00000000000..0583c3bd6c6 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 9c5eb2e1fe3..df795db8fc8 100644 --- a/Resources/Textures/Effects/atmospherics.rsi/meta.json +++ b/Resources/Textures/Effects/atmospherics.rsi/meta.json @@ -69,6 +69,30 @@ { "name": "water_vapor_old", "delays": [[0.2, 0.2, 0.2, 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]] } ] } diff --git a/Resources/Textures/Effects/atmospherics.rsi/nitrium.png b/Resources/Textures/Effects/atmospherics.rsi/nitrium.png new file mode 100644 index 00000000000..28387ab2b70 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 00000000000..7a43f2bff33 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 00000000000..c50e8ae33ff Binary files /dev/null and b/Resources/Textures/Effects/atmospherics.rsi/zauker.png differ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/broken.png index dfef5536d45..637a95900c4 100644 Binary files a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/broken.png and b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/broken.png differ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/deny-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/deny-unshaded.png index 52f43a543f7..a2dae4c2726 100644 Binary files a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/deny-unshaded.png and b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/deny-unshaded.png differ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/meta.json index 9ae88611b2c..ece279df19e 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/1516a728931b4985c1e86f0c5995a5aa1554a1ad and modified by Swept", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/1516a728931b4985c1e86f0c5995a5aa1554a1ad and modified by Swept, but finally he got resprite by github:KashRas2", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/normal-unshaded.png b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/normal-unshaded.png index aeca2e4e3ea..b01f022a928 100644 Binary files a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/normal-unshaded.png and b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/normal-unshaded.png differ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/off.png index 75c8d114d9b..6a1a028a96b 100644 Binary files a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/off.png and b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/off.png differ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/panel.png index 60dbf76b85e..65478ea3c3d 100644 Binary files a/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/panel.png and b/Resources/Textures/Structures/Machines/VendingMachines/boozeomat.rsi/panel.png differ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/dispenser.png b/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/dispenser.png index ed77da131fc..673ae5259b8 100644 Binary files a/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/dispenser.png and b/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/dispenser.png differ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/dispensereng.png b/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/dispensereng.png index 7001663a487..6d8b0abb209 100644 Binary files a/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/dispensereng.png and b/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/dispensereng.png differ diff --git a/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/meta.json index 163474fb805..30375905761 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/tankdispenser.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from baystation at https://github.com/Baystation12/Baystation12/commit/f200ae08d71ecbc91412ee650a334981892f5177, eng layer by peptide", + "copyright": "Taken from MOLOT-BlueMoon-Station/icons/obj/objects.dmi, eng layer by peptide (edited by github:KashRas2)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/draining.png b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/draining.png index 87ce5806aa8..719f68f107f 100644 Binary files a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/draining.png and b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/draining.png differ diff --git a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/icon-running.png b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/icon-running.png index 2273bfc9dbd..c9cc468646e 100644 Binary files a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/icon-running.png and b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/icon-running.png differ diff --git a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/icon.png b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/icon.png index 992a4af0c57..4ee9775e172 100644 Binary files a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/icon.png and b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/icon.png differ diff --git a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/meta.json b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/meta.json index 76e305647a0..190f6da47d0 100644 --- a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/meta.json +++ b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from TauCetiClassic at https://github.com/TauCetiStation/TauCetiClassic/commit/4cd82f305daa552760268644ee774ee31c5ffe5b, lights modified by github:Morb0", + "copyright": "Taken from tgstation at tgstation/icons/obj/pipes_n_cables/atmos.dmi, lights modified by github:KashRas2", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit-full.png b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit-full.png index 832d466993f..b92544cffa2 100644 Binary files a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit-full.png and b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit-full.png differ diff --git a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit.png b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit.png index faf2e26cd88..1c7ad4ba387 100644 Binary files a/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit.png and b/Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit.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 00000000000..6f39226132f 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 00000000000..b9b7b357982 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 00000000000..33ae77669ae 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 00000000000..c484db50647 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 00000000000..6f3c8ca9287 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 00000000000..aa9901e5fac 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 00000000000..f8a09e823ab 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 00000000000..7f1dc4bba3f 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 00000000000..6738bb5697e 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 00000000000..25a31eda76c 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 00000000000..9fdcda24bdf 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 00000000000..ed02e32bd63 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 00000000000..dc10969f602 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 00000000000..01defc4af32 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 5dfe89c3f38..7a18f5e629b 100644 --- a/Resources/Textures/Structures/Storage/canister.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/canister.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from TauCetiClassic at commit https://github.com/TauCetiStation/TauCetiClassic/tree/13b5c47145804dd24507b75f250de5e87d34e194", + "copyright": "Taken from TauCetiClassic at commit https://github.com/TauCetiStation/TauCetiClassic/tree/13b5c47145804dd24507b75f250de5e87d34e194, New canisters was drawn by discord:unlumy", "size": { "x": 32, "y": 32 @@ -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 00000000000..8a855c22c3c 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 00000000000..30d14176b6e 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 00000000000..902c2304cbe 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 00000000000..338505151d2 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 00000000000..5f541b59e72 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 00000000000..ab192b52fb0 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 00000000000..e536677d530 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 00000000000..38cae938b08 Binary files /dev/null and b/Resources/Textures/Structures/Storage/canister.rsi/zauker.png differ diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm0.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm0.png index ae4282b5fa9..fdc9376d67f 100644 Binary files a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm0.png and b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm0.png differ diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm1.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm1.png index 6a536e59d3a..d371695e129 100644 Binary files a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm1.png and b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm1.png differ diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm2.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm2.png index d557b63d627..9d8640f85b0 100644 Binary files a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm2.png and b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm2.png differ diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b1.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b1.png index 93706bfc8cd..5fbc157750b 100644 Binary files a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b1.png and b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b1.png differ diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b2.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b2.png index 825c4a3bfb8..38b22ccd815 100644 Binary files a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b2.png and b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b2.png differ diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_bitem.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_bitem.png index 4f1cb68de03..6f1292bb058 100644 Binary files a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_bitem.png and b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_bitem.png differ diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmp.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmp.png index ae4282b5fa9..0b3192122be 100644 Binary files a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmp.png and b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmp.png differ diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmx.png b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmx.png index 2248c857652..61ecb87ff48 100644 Binary files a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmx.png and b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmx.png differ diff --git a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json index 6cbb17a9813..13fcf9db1ef 100644 --- a/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/tgstation/tgstation, fire_emagged.png edited by github:Morb0", + "copyright": "Taken from TauCetiClassic at commit https://github.com/TauCetiStation/TauCetiClassic/commit/b7ac5798ae0d411b0cdeaf7efbc4ac86d24b4634, fire_emagged.png edited by github:Morb0", "size": { "x": 32, "y": 32 @@ -9,22 +9,116 @@ "states": [ { "name": "alarm0", - "directions": 4 + "directions": 4, + "delays": [ + [ + 2.8, + 2.8 + ], + [ + 2.8, + 2.8 + ], + [ + 2.8, + 2.8 + ], + [ + 2.8, + 2.8 + ] + ] }, { "name": "alarm1", "directions": 4, "delays": [ [ + 0.6, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.6, + 0.6, 0.6 ], [ + 0.6, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.6, + 0.6, 0.6 ], [ + 0.6, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.6, + 0.6, 0.6 ], [ + 0.6, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.6, + 0.6, 0.6 ] ] @@ -34,16 +128,68 @@ "directions": 4, "delays": [ [ - 0.6 + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4 ], [ - 0.6 + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4 ], [ - 0.6 + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4 ], [ - 0.6 + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4 ] ] },