Plasma fueled radiation collectors (#19598)

* Fixes issue with solution regenerators

* Update Solution.cs

Removed excess whitespace

* Undid file scoping to make this easier to review

* Initial prototype

* Adjusted coefficients

* Removed unintentional changes from another PR

* Undid unintentional change

* Undid unintentional change

* Added temperature modifier to power production

* Guidebook entry and radiation collector low pressure warning

* Reviewer requested changes
This commit is contained in:
chromiumboy
2023-09-04 08:11:57 -05:00
committed by GitHub
parent cebc3f28f3
commit 05e9d2e33a
6 changed files with 184 additions and 9 deletions

View File

@@ -1,4 +1,7 @@
using Content.Server.Singularity.EntitySystems;
using Content.Shared.Atmos;
using Content.Shared.Atmos.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.Singularity.Components
{
@@ -33,5 +36,55 @@ namespace Content.Server.Singularity.Components
/// Timestamp when machine can be deactivated again.
/// </summary>
public TimeSpan CoolDownEnd;
/// <summary>
/// List of gases that will react to the radiation passing through the collector
/// </summary>
[DataField("radiationReactiveGases")]
[ViewVariables(VVAccess.ReadWrite)]
public List<RadiationReactiveGas>? RadiationReactiveGases;
}
/// <summary>
/// Describes how a gas reacts to the collected radiation
/// </summary>
[DataDefinition]
public sealed partial class RadiationReactiveGas
{
/// <summary>
/// The reactant gas
/// </summary>
[DataField("reactantPrototype", required: true)]
public Gas Reactant = Gas.Plasma;
/// <summary>
/// Multipier for the amount of power produced by the radiation collector when using this gas
/// </summary>
[DataField("powerGenerationEfficiency")]
public float PowerGenerationEfficiency = 1f;
/// <summary>
/// Controls the rate (molar percentage per rad) at which the reactant breaks down when exposed to radiation
/// </summary>
/// /// <remarks>
/// Set to zero if the reactant does not deplete
/// </remarks>
[DataField("reactantBreakdownRate")]
public float ReactantBreakdownRate = 1f;
/// <summary>
/// A byproduct gas that is generated when the reactant breaks down
/// </summary>
/// <remarks>
/// Leave null if the reactant no byproduct gas is to be formed
/// </remarks>
[DataField("byproductPrototype")]
public Gas? Byproduct = null;
/// <summary>
/// The molar ratio of the byproduct gas generated from the reactant gas
/// </summary>
[DataField("molarRatio")]
public float MolarRatio = 1f;
}
}