Gas.Plasma,
Gas.Tritium,
Gas.WaterVapor,
- Gas.Miasma,
+ Gas.Ammonia,
Gas.NitrousOxide,
Gas.Frezon
};
namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
-public sealed partial class MiasmaOxygenReaction : IGasReactionEffect
+public sealed partial class AmmoniaOxygenReaction : IGasReactionEffect
{
public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
- var nMiasma = mixture.GetMoles(Gas.Miasma);
+ var nAmmonia = mixture.GetMoles(Gas.Ammonia);
var nOxygen = mixture.GetMoles(Gas.Oxygen);
var nTotal = mixture.TotalMoles;
// Concentration-dependent reaction rate
- var fMiasma = nMiasma/nTotal;
+ var fAmmonia = nAmmonia/nTotal;
var fOxygen = nOxygen/nTotal;
- var rate = MathF.Pow(fMiasma, 2) * MathF.Pow(fOxygen, 2);
+ var rate = MathF.Pow(fAmmonia, 2) * MathF.Pow(fOxygen, 2);
- var deltaMoles = nMiasma / Atmospherics.MiasmaOxygenReactionRate * 2 * rate;
+ var deltaMoles = nAmmonia / Atmospherics.AmmoniaOxygenReactionRate * 2 * rate;
- if (deltaMoles <= 0 || nMiasma - deltaMoles < 0)
+ if (deltaMoles <= 0 || nAmmonia - deltaMoles < 0)
return ReactionResult.NoReaction;
- mixture.AdjustMoles(Gas.Miasma, -deltaMoles);
+ mixture.AdjustMoles(Gas.Ammonia, -deltaMoles);
mixture.AdjustMoles(Gas.Oxygen, -deltaMoles);
mixture.AdjustMoles(Gas.NitrousOxide, deltaMoles / 2);
mixture.AdjustMoles(Gas.WaterVapor, deltaMoles * 1.5f);
+++ /dev/null
-using Content.Server.Atmos.EntitySystems;
-using Content.Shared.Atmos;
-using JetBrains.Annotations;
-
-namespace Content.Server.Atmos.Reactions;
-
-/// <summary>
-/// Converts frezon into miasma when the two come into contact. Does not occur at very high temperatures.
-/// </summary>
-[UsedImplicitly]
-public sealed partial class MiasmicSubsumationReaction : IGasReactionEffect
-{
- public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
- {
- var initialMiasma = mixture.GetMoles(Gas.Miasma);
- var initialFrezon = mixture.GetMoles(Gas.Frezon);
-
- var convert = Math.Min(Math.Min(initialFrezon, initialMiasma), Atmospherics.MiasmicSubsumationMaxConversionRate);
-
- mixture.AdjustMoles(Gas.Miasma, convert);
- mixture.AdjustMoles(Gas.Frezon, -convert);
-
- return ReactionResult.Reacting;
- }
-}
using Content.Server.Atmos.EntitySystems;
using Content.Server.Body.Components;
using Content.Server.Temperature.Components;
-using Content.Shared.Atmos.Miasma;
+using Content.Shared.Atmos.Rotting;
using Content.Shared.Examine;
using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
using Robust.Shared.Physics.Components;
using Robust.Shared.Timing;
-namespace Content.Server.Atmos.Miasma;
+namespace Content.Server.Atmos.Rotting;
public sealed class RottingSystem : EntitySystem
{
var molsToDump = perishable.MolsPerSecondPerUnitMass * physics.FixturesMass * (float) component.TotalRotTime.TotalSeconds;
var tileMix = _atmosphere.GetTileMixture(uid, excite: true);
- tileMix?.AdjustMoles(Gas.Miasma, molsToDump);
+ tileMix?.AdjustMoles(Gas.Ammonia, molsToDump);
}
private void OnExamined(EntityUid uid, RottingComponent component, ExaminedEvent args)
var stage = RotStage(uid, component);
var description = stage switch
{
- >= 2 => "miasma-extremely-bloated",
- >= 1 => "miasma-bloated",
- _ => "miasma-rotting"
+ >= 2 => "rotting-extremely-bloated",
+ >= 1 => "rotting-bloated",
+ _ => "rotting-rotting"
};
args.PushMarkup(Loc.GetString(description));
}
// or just remove the mass mechanics altogether because they aren't good.
var molRate = perishable.MolsPerSecondPerUnitMass * (float) rotting.RotUpdateRate.TotalSeconds;
var tileMix = _atmosphere.GetTileMixture(uid, excite: true);
- tileMix?.AdjustMoles(Gas.Miasma, molRate * physics.FixturesMass);
+ tileMix?.AdjustMoles(Gas.Ammonia, molRate * physics.FixturesMass);
}
}
}
var i = 0;
while (i < 1)
{
- tileMix?.AdjustMoles(Gas.Miasma, 6f);
+ tileMix?.AdjustMoles(Gas.Ammonia, 6f);
bloodSolution.AddReagent("Blood", 50);
if (_robustRandom.Prob(0.2f))
i++;
-using Content.Server.Atmos.Miasma;
+using Content.Server.Atmos.Rotting;
using Content.Server.Chat.Systems;
using Content.Server.DoAfter;
using Content.Server.Electrocution;
}
/// <summary>
- /// uses hunger to release a specific amount of miasma into the air. This heals the rat king
+ /// uses hunger to release a specific amount of ammonia into the air. This heals the rat king
/// and his servants through a specific metabolism.
/// </summary>
private void OnDomain(EntityUid uid, RatKingComponent component, RatKingDomainActionEvent args)
_popup.PopupEntity(Loc.GetString("rat-king-domain-popup"), uid);
var tileMix = _atmos.GetTileMixture(uid, excite: true);
- tileMix?.AdjustMoles(Gas.Miasma, component.MolesMiasmaPerDomain);
+ tileMix?.AdjustMoles(Gas.Ammonia, component.MolesAmmoniaPerDomain);
}
private void OnPointedAt(EntityUid uid, RatKingComponent component, ref AfterPointedAtEvent args)
{
public readonly Gas[] LeakableGases =
{
- Gas.Miasma,
+ Gas.Ammonia,
Gas.Plasma,
Gas.Tritium,
Gas.Frezon,
Gas.Nitrogen,
Gas.CarbonDioxide,
Gas.Tritium,
- Gas.Miasma,
+ Gas.Ammonia,
Gas.NitrousOxide,
Gas.Frezon
};
Gas.Plasma,
Gas.Nitrogen,
Gas.CarbonDioxide,
- Gas.Miasma,
+ Gas.Ammonia,
Gas.NitrousOxide
};
public const float N2ODecompositionRate = 2f;
/// <summary>
- /// How many mol of frezon can be converted into miasma in one cycle.
+ /// Divisor for Ammonia Oxygen reaction so that it doesn't happen instantaneously.
/// </summary>
- public const float MiasmicSubsumationMaxConversionRate = 5f;
-
- /// <summary>
- /// Divisor for Miasma Oxygen reaction so that it doesn't happen instantaneously.
- /// </summary>
- public const float MiasmaOxygenReactionRate = 10f;
+ public const float AmmoniaOxygenReactionRate = 10f;
/// <summary>
/// Determines at what pressure the ultra-high pressure red icon is displayed.
Plasma = 3,
Tritium = 4,
WaterVapor = 5,
- Miasma = 6,
+ Ammonia = 6,
NitrousOxide = 7,
Frezon = 8
}
Gas.Plasma,
Gas.Tritium,
Gas.WaterVapor,
- Gas.Miasma,
+ Gas.Ammonia,
Gas.NitrousOxide,
Gas.Frezon
};
-namespace Content.Shared.Atmos.Miasma;
+namespace Content.Shared.Atmos.Rotting;
/// <summary>
/// Entities inside this container will not rot.
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
-namespace Content.Shared.Atmos.Miasma;
+namespace Content.Shared.Atmos.Rotting;
/// <summary>
/// This makes mobs eventually start rotting when they die.
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-namespace Content.Shared.Atmos.Miasma;
+namespace Content.Shared.Atmos.Rotting;
/// <summary>
/// Lets an entity rot into another entity.
using Robust.Shared.GameStates;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
-namespace Content.Shared.Atmos.Miasma;
+namespace Content.Shared.Atmos.Rotting;
/// <summary>
/// Tracking component for stuff that has started to rot.
public bool DealDamage = true;
/// <summary>
- /// When the next check will happen for rot progression + effects like damage and miasma
+ /// When the next check will happen for rot progression + effects like damage and ammonia
/// </summary>
[DataField("nextRotUpdate", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)]
public TimeSpan NextRotUpdate = TimeSpan.Zero;
public float HungerPerDomainUse = 50f;
/// <summary>
- /// How many moles of Miasma are released after one us of Domain
+ /// How many moles of ammonia are released after one us of Domain
/// </summary>
- [DataField("molesMiasmaPerDomain"), ViewVariables(VVAccess.ReadWrite)]
- public float MolesMiasmaPerDomain = 200f;
+ [DataField("molesAmmoniaPerDomain"), ViewVariables(VVAccess.ReadWrite)]
+ public float MolesAmmoniaPerDomain = 200f;
/// <summary>
/// The current order that the Rat King assigned.
-rat-king-domain-popup = A cloud of miasma is released into the air!
+rat-king-domain-popup = A cloud of ammonia is released into the air!
rat-king-too-hungry = You are too hungry to use this ability!
-miasma-smell = Something smells foul!
-miasma-rotting = [color=orange]It's rotting![/color]
-miasma-bloated = [color=orangered]It's bloated![/color]
-miasma-extremely-bloated = [color=red]It's extremely bloated![/color]
+ammonia-smell = Something smells pungent!
+rotting-rotting = [color=orange]It's rotting![/color]
+rotting-bloated = [color=orangered]It's bloated![/color]
+rotting-extremely-bloated = [color=red]It's extremely bloated![/color]
gases-plasma = Plasma
gases-tritium = Tritium
gases-water-vapor = Water Vapor
-gases-miasma = Miasma
+gases-ammonia = Ammonia
gases-n2o = Nitrous Oxide
gases-frezon = Frezon
job-description-ce = Manage the engineering department to ensure power, atmospherics, and the hull are in perfect shape.
job-description-centcomoff = Act as an ambassador to the newest state-of-the-art space station in Nanotrasen's fleet.
job-description-chaplain = Preach the good word of your deity and religion, and conduct spiritual healing.
-job-description-chef = Keep the station fed with a variety of food items, butcher dead animals to ensure miasma doesn't leak, and help keep the bar lively.
+job-description-chef = Keep the station fed with a variety of food items, butcher dead animals to ensure ammonia doesn't leak, and help keep the bar lively.
job-description-chemist = Produce medicinal drugs for the doctors to use, research ethically dubious rare chemicals, and produce weapons of war when enemies of the station arrive.
job-description-clown = Entertain the crew through elaborate slapstick routines or terrible jokes.
job-description-cmo = Manage the resources and personnel of the medical department to keep the crew alive.
ent-WaterVaporCanister = Water vapor canister
.desc = A canister that can contain any type of gas. This one is supposed to contain water vapor. It can be attached to connector ports using a wrench.
-ent-MiasmaCanister = Miasma canister
- .desc = A canister that can contain any type of gas. This one is supposed to contain miasma. It can be attached to connector ports using a wrench.
+ent-AmmoniaCanister = Ammonia canister
+ .desc = A canister that can contain any type of gas. This one is supposed to contain ammonia. It can be attached to connector ports using a wrench.
ent-NitrousOxideCanister = Nitrous oxide canister
.desc = A canister that can contain any type of gas. This one is supposed to contain nitrous oxide. It can be attached to connector ports using a wrench.
ent-WaterVaporCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
-ent-MiasmaCanisterBroken = { ent-GasCanisterBrokenBase }
+ent-AmmoniaCanisterBroken = { ent-GasCanisterBrokenBase }
.desc = { ent-GasCanisterBrokenBase.desc }
ent-NitrousOxideCanisterBroken = { ent-GasCanisterBrokenBase }
reagent-name-nitrogen = nitrogen
reagent-desc-nitrogen = A colorless, odorless unreactive gas. Highly stable.
-reagent-name-miasma = miasma
-reagent-desc-miasma = Uh oh, stinky!
-
reagent-name-nitrous-oxide = nitrous oxide
reagent-desc-nitrous-oxide = You know how everything seems funnier when you're tired? Well...
threshold: 1.5\r
enabled: True\r
ignore: False\r
- Miasma:\r
+ Ammonia:\r
lowerWarnAround:\r
threshold: 0\r
enabled: False\r
threshold: 1.5\r
enabled: True\r
ignore: False\r
- Miasma:\r
+ Ammonia:\r
lowerWarnAround:\r
threshold: 0\r
enabled: False\r
threshold: 1.5\r
enabled: True\r
ignore: False\r
- Miasma:\r
+ Ammonia:\r
lowerWarnAround:\r
threshold: 0\r
enabled: False\r
threshold: 1.5\r
enabled: True\r
ignore: False\r
- Miasma:\r
+ Ammonia:\r
lowerWarnAround:\r
threshold: 0\r
enabled: False\r
threshold: 1.5\r
enabled: True\r
ignore: False\r
- Miasma:\r
+ Ammonia:\r
lowerWarnAround:\r
threshold: 0\r
enabled: False\r
- type: gas
id: 6
- name: gases-miasma
+ name: gases-ammonia
specificHeat: 20
heatCapacityRatio: 1.4
molarMass: 44
gasMolesVisible: 2
gasVisbilityFactor: 3.5
color: 56941E
- reagent: Miasma
+ reagent: Ammonia
pricePerMole: 0.15
- type: gas
- 0 # plasma
- 0 # tritium
- 0 # vapor
- - 0 # miasma
+ - 0 # ammonia
- 0 # n2o
- 0.01 # frezon
effects:
- 0 # plasma
- 0.01 # tritium
- 0 # vapor
- - 0 # miasma
+ - 0 # ammonia
- 0 # n2o
- 0 # frezon
effects:
- !type:FrezonProductionReaction {}
- type: gasReaction
- id: MiasmicSubsumation
- priority: 0
- maximumTemperature: 5066.25
- minimumRequirements:
- - 0 # oxygen
- - 0 # nitrogen
- - 0 # carbon dioxide
- - 0 # plasma
- - 0 # tritium
- - 0 # vapor
- - 0.01 # miasma
- - 0 # n2o
- - 0.01 # frezon
- effects:
- - !type:MiasmicSubsumationReaction {}
-
-- type: gasReaction
- id: MiasmaOxygenReaction
+ id: AmmoniaOxygenReaction
priority: 2
minimumTemperature: 323.149
minimumRequirements:
- 0 # plasma
- 0 # tritium
- 0 # vapor
- - 0.01 # miasma
+ - 0.01 # ammonia
- 0 # n2o
- 0 # frezon
effects:
- - !type:MiasmaOxygenReaction {}
+ - !type:AmmoniaOxygenReaction {}
- type: gasReaction
id: N2ODecomposition
- 0 # plasma
- 0 # tritium
- 0 # vapor
- - 0 # miasma
+ - 0 # ammonia
- 0.01 # n2o
- 0 # frezon
effects:
threshold: 0.5
- type: alarmThreshold
- id: stationMiasma
+ id: stationAmmonia
upperBound: !type:AlarmThresholdSetting
threshold: 0.05
upperWarnAround: !type:AlarmThresholdSetting
- 0 # oxygen
- 0.615413715 #nitrogen
temperature: 293.15
-
+
- type: entity
id: ExtendedEmergencyOxygenTankFilled
parent: ExtendedEmergencyOxygenTank
moles:
- 0.615413715 # oxygen
temperature: 293.15
-
+
- type: entity
id: ExtendedEmergencyNitrogenTankFilled
parent: ExtendedEmergencyNitrogenTank
- 0 # plasma
- 0 # tritium
- 0 # water vapor
- - 0 # miasma
+ - 0 # ammonia
- 0.615413715 # 30% N2O
# 2.051379050 total
temperature: 293.15
id: RegalRatNameKingdom
values:
- Plague
- - Miasma
+ - Ammonia
- Maintenance
- Trash
- Garbage
- Mayor
- Boss
- Prophet
- - Cheese
\ No newline at end of file
+ - Cheese
- type: entity
id: ActionRatKingDomain
name: Rat King's Domain
- description: Spend some hunger to release a cloud of miasma into the air.
+ description: Spend some hunger to release a cloud of ammonia into the air.
noSpawn: true
components:
- type: InstantAction
- type: Perishable
# raw meat rots in 5 minutes, get it into the freezer fast
rotAfter: 300
- # don't want meat giving off miasma only bodies
+ # don't want meat giving off ammonia only bodies
molsPerSecondPerUnitMass: 0
- type: RotInto
entity: FoodMeatRotten
- Plasma
- Tritium
- WaterVapor
- - Miasma
+ - Ammonia
- NitrousOxide
- Frezon
#- Helium3 TODO: fusion
- Plasma
- Tritium
- WaterVapor
- - Miasma
+ - Ammonia
- NitrousOxide
- Frezon
#- Helium3 TODO: fusion
spawnGas: WaterVapor
- type: entity
- name: Miasma gas miner
+ name: Ammonia gas miner
parent: GasMinerBase
- id: GasMinerMiasma
+ id: GasMinerAmmonia
placement:
mode: SnapgridCenter
components:
- type: GasMiner
- spawnGas: Miasma
+ spawnGas: Ammonia
- type: entity
name: Nitrous Oxide gas miner
Plasma: danger # everything below is usually bad
Tritium: danger
WaterVapor: stationWaterVapor
- Miasma: stationMiasma
+ Ammonia: stationAmmonia
NitrousOxide: stationNO
Frezon: danger
- type: Tag
Plasma: danger # everything below is usually bad
Tritium: danger
WaterVapor: stationWaterVapor
- Miasma: stationMiasma
+ Ammonia: stationAmmonia
NitrousOxide: stationNO
Frezon: danger
- type: Tag
Plasma: danger # everything below is usually bad
Tritium: danger
WaterVapor: stationWaterVapor
- Miasma: stationMiasma
+ Ammonia: stationAmmonia
NitrousOxide: stationNO
Frezon: danger
- type: Tag
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- - 0 # Miasma
+ - 0 # Ammonia
- 0 # N2O
- 0 # Frezon
temperature: 293.15
- type: entity
parent: GasCanister
- id: MiasmaCanister
+ id: AmmoniaCanister
components:
- type: Sprite
layers:
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- - 1871.71051 # Miasma
+ - 1871.71051 # Ammonia
temperature: 293.15
- type: Destructible
thresholds:
path: /Audio/Effects/metalbreak.ogg
- !type:SpawnEntitiesBehavior
spawn:
- MiasmaCanisterBroken:
+ AmmoniaCanisterBroken:
min: 1
max: 1
- !type:DoActsBehavior
- 0 # Plasma
- 0 # Tritium
- 0 # Water vapor
- - 0 # Miasma
+ - 0 # Ammonia
- 1871.71051 # N2O
temperature: 293.15
- type: Destructible
- 0 # CO2
- 0 # Plasma
- 0 # Tritium
- - 0 # Water vapor
- - 0 # Miasma
+ - 0 # Water vapor
+ - 0 # Ammonia
- 0 # N2O
- 1871.71051 # Frezon
temperature: 293.15
- type: entity
parent: GasCanisterBrokenBase
- id: MiasmaCanisterBroken
+ id: AmmoniaCanisterBroken
noSpawn: true
components:
- type: Sprite
damage:
types:
Caustic: 1
+ Gas:
+ effects:
+ - !type:HealthChange
+ conditions:
+ - !type:OrganType
+ type: Rat
+ shouldHave: false
+ - !type:ReagentThreshold
+ reagent: Ammonia
+ min: 1
+ ignoreResistances: true
+ damage:
+ types:
+ Poison: 0.25
+ - !type:ChemVomit
+ probability: 0.12
+ conditions:
+ - !type:OrganType
+ type: Rat
+ shouldHave: false
+ - !type:ReagentThreshold
+ reagent: Ammonia
+ min: 0.8
+ - !type:PopupMessage
+ type: Local
+ visualType: Medium
+ messages: [ "ammonia-smell" ]
+ probability: 0.1
+ conditions:
+ - !type:ReagentThreshold
+ reagent: Ammonia
+ min: 0.25
+ - !type:HealthChange
+ conditions:
+ - !type:OrganType
+ type: Rat
+ - !type:ReagentThreshold
+ reagent: Ammonia
+ min: 1
+ scaleByQuantity: true
+ ignoreResistances: true
+ damage:
+ groups:
+ Brute: -5
+ Burn: -5
+
- type: reagent
id: Diethylamine
NitrousOxide: 1.0
Nitrogen: -1.0
-- type: reagent
- id: Miasma
- name: reagent-name-miasma
- desc: reagent-desc-miasma
- physicalDesc: reagent-physical-desc-gaseous
- flavor: bitter
- color: "#56941E"
- boilingPoint: -195.8
- meltingPoint: -210.0
- metabolisms:
- Gas:
- effects:
- - !type:HealthChange
- conditions:
- - !type:OrganType
- type: Rat
- shouldHave: false
- - !type:ReagentThreshold
- reagent: Miasma
- min: 1
- ignoreResistances: true
- damage:
- types:
- Poison: 0.25
- - !type:ChemVomit
- probability: 0.12
- conditions:
- - !type:OrganType
- type: Rat
- shouldHave: false
- - !type:ReagentThreshold
- reagent: Miasma
- min: 0.8
- - !type:PopupMessage
- type: Local
- visualType: Medium
- messages: [ "miasma-smell" ]
- probability: 0.1
- conditions:
- - !type:ReagentThreshold
- reagent: Miasma
- min: 0.25
- - !type:HealthChange
- conditions:
- - !type:OrganType
- type: Rat
- - !type:ReagentThreshold
- reagent: Miasma
- min: 1
- scaleByQuantity: true
- ignoreResistances: true
- damage:
- groups:
- Brute: -5
- Burn: -5
-
- type: reagent
id: NitrousOxide
name: reagent-name-nitrous-oxide
- CarbonDioxide
- Plasma
- Tritium
- - Miasma
+ - Ammonia
- NitrousOxide
- Frezon
maxRange: 3
baseRadialAcceleration: 1
baseTangentialAcceleration: 3
-
+
- type: artifactEffect
id: EffectAntiMagnet
targetDepth: 1
maxRange: 3
baseRadialAcceleration: -1
baseTangentialAcceleration: -3
-
+
- type: artifactEffect
id: EffectSingulo
targetDepth: 10
# Minor Antagonists
Most if not all Minor Antagonists are ghost-controlled roles that gives dead people new ways to cause chaos around the station. They are spawned by random events.
-
+
# Revenant
<Box>
<GuideEntityEmbed Entity="MobRatServant" Caption="Rat Servant"/>
</Box>
- Raise an Army of [color=#a4885c]Rat Servants[/color].
- - Conjure a cloud of miasma.
+ - Conjure a cloud of ammonia.
# Space Dragon
A Space Dragon is a giant dragon that creates space carp rifts and eat the crew.
## Abilities
-
+
- Devour critical or dead victims.
-
+
<Box>
<GuideEntityEmbed Entity="MobCarp" Caption=""/>
<GuideEntityEmbed Entity="CarpRift" Caption=""/>