Add cheese & dough reactions (#5547)
* git mv * rename CreateEntityReaction -> CreateEntityTileReaction * cheese * change microwave recipes * remove unnecessary test * TryGet->Get
This commit is contained in:
@@ -45,6 +45,12 @@ namespace Content.Shared.Chemistry.Reaction
|
||||
|
||||
// TODO SERV3: Empty on the client, (de)serialize on the server with module manager is server module
|
||||
[DataField("sound", serverOnly: true)] public SoundSpecifier Sound { get; private set; } = new SoundPathSpecifier("/Audio/Effects/Chemistry/bubbles.ogg");
|
||||
|
||||
/// <summary>
|
||||
/// If true, this reaction will only consume only integer multiples of the reactant amounts. If there are not
|
||||
/// enough reactants, the reaction does not occur. Useful for spawn-entity reactions (e.g. creating cheese).
|
||||
/// </summary>
|
||||
[DataField("quantized")] public bool Quantized = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -46,6 +46,17 @@ namespace Content.Shared.Chemistry.Reaction
|
||||
if (!solution.ContainsReagent(reactantName, out var reactantQuantity))
|
||||
return false;
|
||||
|
||||
if (reactantData.Value.Catalyst)
|
||||
{
|
||||
// catalyst is not consumed, so will not limit the reaction. But it still needs to be present, and
|
||||
// for quantized reactions we need to have a minimum amount
|
||||
|
||||
if (reactantQuantity == FixedPoint2.Zero || reaction.Quantized && reactantQuantity < reactantCoefficient)
|
||||
return false;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var unitReactions = reactantQuantity / reactantCoefficient;
|
||||
|
||||
if (unitReactions < lowestUnitReactions)
|
||||
@@ -53,7 +64,11 @@ namespace Content.Shared.Chemistry.Reaction
|
||||
lowestUnitReactions = unitReactions;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
if (reaction.Quantized)
|
||||
lowestUnitReactions = (int) lowestUnitReactions;
|
||||
|
||||
return lowestUnitReactions > 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user