Replace metabolism groups with metabolism stages (#42172)
* Replace metabolism groups with metabolism stages * return to return * killed * yaml linted * yaml linted again * margarine * bugfixes and balancing tweaks # Conflicts: # Content.Shared/Metabolism/MetabolizerSystem.cs
This commit is contained in:
parent
50578834fe
commit
17d3e83d5a
|
|
@ -1,6 +0,0 @@
|
||||||
using Content.Shared.Body.Systems;
|
|
||||||
|
|
||||||
namespace Content.Client.Body.Systems;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public sealed class MetabolizerSystem : SharedMetabolizerSystem;
|
|
||||||
|
|
@ -4,11 +4,12 @@ using Content.Client.Chemistry.EntitySystems;
|
||||||
using Content.Client.Guidebook.Richtext;
|
using Content.Client.Guidebook.Richtext;
|
||||||
using Content.Client.Message;
|
using Content.Client.Message;
|
||||||
using Content.Client.UserInterface.ControlExtensions;
|
using Content.Client.UserInterface.ControlExtensions;
|
||||||
using Content.Shared.Body.Prototypes;
|
|
||||||
using Content.Shared.CCVar;
|
using Content.Shared.CCVar;
|
||||||
using Content.Shared.Chemistry.Reaction;
|
using Content.Shared.Chemistry.Reaction;
|
||||||
using Content.Shared.Chemistry.Reagent;
|
using Content.Shared.Chemistry.Reagent;
|
||||||
using Content.Shared.Contraband;
|
using Content.Shared.Contraband;
|
||||||
|
using Content.Shared.Localizations;
|
||||||
|
using Content.Shared.Metabolism;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Robust.Client.AutoGenerated;
|
using Robust.Client.AutoGenerated;
|
||||||
using Robust.Client.Graphics;
|
using Robust.Client.Graphics;
|
||||||
|
|
@ -132,17 +133,18 @@ public sealed partial class GuideReagentEmbed : BoxContainer, IDocumentTag, ISea
|
||||||
#region Effects
|
#region Effects
|
||||||
if (_chemistryGuideData.ReagentGuideRegistry.TryGetValue(reagent.ID, out var guideEntryRegistry) &&
|
if (_chemistryGuideData.ReagentGuideRegistry.TryGetValue(reagent.ID, out var guideEntryRegistry) &&
|
||||||
guideEntryRegistry.GuideEntries != null &&
|
guideEntryRegistry.GuideEntries != null &&
|
||||||
guideEntryRegistry.GuideEntries.Values.Any(pair => pair.EffectDescriptions.Any()))
|
guideEntryRegistry.GuideEntries.Values.Any(pair => pair.EffectDescriptions.Any() || pair.Metabolites?.Any() == true))
|
||||||
{
|
{
|
||||||
EffectsDescriptionContainer.Children.Clear();
|
EffectsDescriptionContainer.Children.Clear();
|
||||||
foreach (var (group, effect) in guideEntryRegistry.GuideEntries)
|
foreach (var (stage, effect) in guideEntryRegistry.GuideEntries)
|
||||||
{
|
{
|
||||||
if (!effect.EffectDescriptions.Any())
|
var hasMetabolites = effect.Metabolites?.Any() == true;
|
||||||
|
if (!effect.EffectDescriptions.Any() && !hasMetabolites)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var groupLabel = new RichTextLabel();
|
var groupLabel = new RichTextLabel();
|
||||||
groupLabel.SetMarkup(Loc.GetString("guidebook-reagent-effects-metabolism-group-rate",
|
groupLabel.SetMarkup(Loc.GetString("guidebook-reagent-effects-metabolism-stage-rate",
|
||||||
("group", _prototype.Index<MetabolismGroupPrototype>(group).LocalizedName), ("rate", effect.MetabolismRate)));
|
("stage", _prototype.Index<MetabolismStagePrototype>(stage).LocalizedName), ("rate", effect.MetabolismRate)));
|
||||||
var descriptionLabel = new RichTextLabel
|
var descriptionLabel = new RichTextLabel
|
||||||
{
|
{
|
||||||
Margin = new Thickness(25, 0, 10, 0)
|
Margin = new Thickness(25, 0, 10, 0)
|
||||||
|
|
@ -155,9 +157,20 @@ public sealed partial class GuideReagentEmbed : BoxContainer, IDocumentTag, ISea
|
||||||
{
|
{
|
||||||
descMsg.AddMarkupOrThrow(effectString);
|
descMsg.AddMarkupOrThrow(effectString);
|
||||||
i++;
|
i++;
|
||||||
if (i < descriptionsCount)
|
if (i < descriptionsCount || hasMetabolites)
|
||||||
descMsg.PushNewline();
|
descMsg.PushNewline();
|
||||||
}
|
}
|
||||||
|
if (hasMetabolites)
|
||||||
|
{
|
||||||
|
var metabolites = new List<string>();
|
||||||
|
foreach (var (metabolite, ratio) in effect.Metabolites!)
|
||||||
|
{
|
||||||
|
metabolites.Add(Loc.GetString("guidebook-reagent-effects-metabolite-item", ("rate", (double)ratio), ("reagent", _prototype.Index(metabolite).LocalizedName)));
|
||||||
|
}
|
||||||
|
metabolites.Sort();
|
||||||
|
|
||||||
|
descMsg.AddMarkupOrThrow(Loc.GetString("guidebook-reagent-effects-metabolites", ("items", ContentLocalizationManager.FormatList(metabolites))));
|
||||||
|
}
|
||||||
descriptionLabel.SetMessage(descMsg);
|
descriptionLabel.SetMessage(descMsg);
|
||||||
|
|
||||||
EffectsDescriptionContainer.AddChild(groupLabel);
|
EffectsDescriptionContainer.AddChild(groupLabel);
|
||||||
|
|
|
||||||
|
|
@ -216,7 +216,7 @@ public sealed partial class CryoPodWindow : FancyWindow
|
||||||
|
|
||||||
float? result = null;
|
float? result = null;
|
||||||
|
|
||||||
foreach (var (_, metabolism) in reagentProto.Metabolisms)
|
foreach (var (_, metabolism) in reagentProto.Metabolisms.Metabolisms)
|
||||||
{
|
{
|
||||||
foreach (var effect in metabolism.Effects)
|
foreach (var effect in metabolism.Effects)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,98 +0,0 @@
|
||||||
using Content.Shared.Body.Components;
|
|
||||||
using Content.Server.Body.Systems;
|
|
||||||
using Content.Shared.Body.Prototypes;
|
|
||||||
using Content.Shared.FixedPoint;
|
|
||||||
using Robust.Shared.Prototypes;
|
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
|
||||||
|
|
||||||
namespace Content.Server.Body.Components
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Handles metabolizing various reagents with given effects.
|
|
||||||
/// </summary>
|
|
||||||
[RegisterComponent, AutoGenerateComponentPause, Access(typeof(MetabolizerSystem))]
|
|
||||||
public sealed partial class MetabolizerComponent : Component
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The next time that reagents will be metabolized.
|
|
||||||
/// </summary>
|
|
||||||
[DataField, AutoPausedField]
|
|
||||||
public TimeSpan NextUpdate;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// How often to metabolize reagents.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
[DataField]
|
|
||||||
public TimeSpan UpdateInterval = TimeSpan.FromSeconds(1);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Multiplier applied to <see cref="UpdateInterval"/> for adjusting based on metabolic rate multiplier.
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public float UpdateIntervalMultiplier = 1f;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Adjusted update interval based off of the multiplier value.
|
|
||||||
/// </summary>
|
|
||||||
[ViewVariables]
|
|
||||||
public TimeSpan AdjustedUpdateInterval => UpdateInterval * UpdateIntervalMultiplier;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// From which solution will this metabolizer attempt to metabolize chemicals
|
|
||||||
/// </summary>
|
|
||||||
[DataField("solution")]
|
|
||||||
public string SolutionName = BloodstreamComponent.DefaultBloodSolutionName;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Does this component use a solution on it's parent entity (the body) or itself
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Most things will use the parent entity (bloodstream).
|
|
||||||
/// </remarks>
|
|
||||||
[DataField]
|
|
||||||
public bool SolutionOnBody = true;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// List of metabolizer types that this organ is. ex. Human, Slime, Felinid, w/e.
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
[Access(typeof(MetabolizerSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends
|
|
||||||
public HashSet<ProtoId<MetabolizerTypePrototype>>? MetabolizerTypes;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Should this metabolizer remove chemicals that have no metabolisms defined?
|
|
||||||
/// As a stop-gap, basically.
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public bool RemoveEmpty;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// How many reagents can this metabolizer process at once?
|
|
||||||
/// Used to nerf 'stacked poisons' where having 5+ different poisons in a syringe, even at low
|
|
||||||
/// quantity, would be muuuuch better than just one poison acting.
|
|
||||||
/// </summary>
|
|
||||||
[DataField("maxReagents")]
|
|
||||||
public int MaxReagentsProcessable = 3;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// A list of metabolism groups that this metabolizer will act on, in order of precedence.
|
|
||||||
/// </summary>
|
|
||||||
[DataField("groups")]
|
|
||||||
public List<MetabolismGroupEntry>? MetabolismGroups;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Contains data about how a metabolizer will metabolize a single group.
|
|
||||||
/// This allows metabolizers to remove certain groups much faster, or not at all.
|
|
||||||
/// </summary>
|
|
||||||
[DataDefinition]
|
|
||||||
public sealed partial class MetabolismGroupEntry
|
|
||||||
{
|
|
||||||
[DataField(required: true)]
|
|
||||||
public ProtoId<MetabolismGroupPrototype> Id;
|
|
||||||
|
|
||||||
[DataField("rateModifier")]
|
|
||||||
public FixedPoint2 MetabolismRateModifier = 1.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -25,10 +25,14 @@ public sealed class BloodstreamSystem : SharedBloodstreamSystem
|
||||||
out var bloodSolution) ||
|
out var bloodSolution) ||
|
||||||
!SolutionContainer.EnsureSolution(entity.Owner,
|
!SolutionContainer.EnsureSolution(entity.Owner,
|
||||||
entity.Comp.BloodTemporarySolutionName,
|
entity.Comp.BloodTemporarySolutionName,
|
||||||
out var tempSolution))
|
out var tempSolution) ||
|
||||||
|
!SolutionContainer.EnsureSolution(entity.Owner,
|
||||||
|
entity.Comp.MetabolitesSolutionName,
|
||||||
|
out var metabolitesSolution))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bloodSolution.MaxVolume = entity.Comp.BloodReferenceSolution.Volume * entity.Comp.MaxVolumeModifier;
|
bloodSolution.MaxVolume = entity.Comp.BloodReferenceSolution.Volume * entity.Comp.MaxVolumeModifier;
|
||||||
|
metabolitesSolution.MaxVolume = bloodSolution.MaxVolume;
|
||||||
tempSolution.MaxVolume = entity.Comp.BleedPuddleThreshold * 4; // give some leeway, for chemstream as well
|
tempSolution.MaxVolume = entity.Comp.BleedPuddleThreshold * 4; // give some leeway, for chemstream as well
|
||||||
entity.Comp.BloodReferenceSolution.SetReagentData(GetEntityBloodData((entity, entity.Comp)));
|
entity.Comp.BloodReferenceSolution.SetReagentData(GetEntityBloodData((entity, entity.Comp)));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ using Content.Shared.Atmos;
|
||||||
using Content.Shared.Body;
|
using Content.Shared.Body;
|
||||||
using Content.Shared.Body.Components;
|
using Content.Shared.Body.Components;
|
||||||
using Content.Shared.Body.Events;
|
using Content.Shared.Body.Events;
|
||||||
using Content.Shared.Body.Prototypes;
|
|
||||||
using Content.Shared.Chat;
|
using Content.Shared.Chat;
|
||||||
using Content.Shared.Chemistry.Components;
|
using Content.Shared.Chemistry.Components;
|
||||||
using Content.Shared.Chemistry.EntitySystems;
|
using Content.Shared.Chemistry.EntitySystems;
|
||||||
|
|
@ -21,6 +20,7 @@ using Content.Shared.EntityConditions.Conditions.Body;
|
||||||
using Content.Shared.EntityEffects;
|
using Content.Shared.EntityEffects;
|
||||||
using Content.Shared.EntityEffects.Effects.Body;
|
using Content.Shared.EntityEffects.Effects.Body;
|
||||||
using Content.Shared.EntityEffects.Effects.Damage;
|
using Content.Shared.EntityEffects.Effects.Damage;
|
||||||
|
using Content.Shared.Metabolism;
|
||||||
using Content.Shared.Mobs.Systems;
|
using Content.Shared.Mobs.Systems;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
|
|
@ -46,7 +46,7 @@ public sealed class RespiratorSystem : EntitySystem
|
||||||
[Dependency] private readonly SharedEntityConditionsSystem _entityConditions = default!;
|
[Dependency] private readonly SharedEntityConditionsSystem _entityConditions = default!;
|
||||||
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!;
|
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!;
|
||||||
|
|
||||||
private static readonly ProtoId<MetabolismGroupPrototype> GasId = new("Gas");
|
private static readonly ProtoId<MetabolismStagePrototype> RespirationStage = new("Respiration");
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
|
|
@ -292,7 +292,7 @@ public sealed class RespiratorSystem : EntitySystem
|
||||||
if (!Resolve(lung, ref lung.Comp))
|
if (!Resolve(lung, ref lung.Comp))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (lung.Comp.MetabolismGroups == null)
|
if (lung.Comp.Stages == null)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
float saturation = 0;
|
float saturation = 0;
|
||||||
|
|
@ -302,7 +302,7 @@ public sealed class RespiratorSystem : EntitySystem
|
||||||
if (reagent.Metabolisms == null)
|
if (reagent.Metabolisms == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!reagent.Metabolisms.TryGetValue(GasId, out var entry))
|
if (!reagent.Metabolisms.Metabolisms.TryGetValue(RespirationStage, out var entry))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach (var effect in entry.Effects)
|
foreach (var effect in entry.Effects)
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public sealed class DumpReagentGuideText : LocalizedEntityCommands
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var entry in reagent.Metabolisms.Values)
|
foreach (var entry in reagent.Metabolisms.Metabolisms.Values)
|
||||||
{
|
{
|
||||||
foreach (var effect in entry.Effects)
|
foreach (var effect in entry.Effects)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
using System.Linq;
|
|
||||||
using Content.Server.Body.Components;
|
|
||||||
using Content.Shared.EntityConditions;
|
|
||||||
using Content.Shared.EntityConditions.Conditions.Body;
|
|
||||||
|
|
||||||
namespace Content.Server.EntityConditions.Conditions;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns true if this entity has any of the listed metabolizer types.
|
|
||||||
/// </summary>
|
|
||||||
/// <inheritdoc cref="EntityConditionSystem{T, TCondition}"/>
|
|
||||||
public sealed partial class MetabolizerTypeEntityConditionSystem : EntityConditionSystem<MetabolizerComponent, MetabolizerTypeCondition>
|
|
||||||
{
|
|
||||||
protected override void Condition(Entity<MetabolizerComponent> entity, ref EntityConditionEvent<MetabolizerTypeCondition> args)
|
|
||||||
{
|
|
||||||
if (entity.Comp.MetabolizerTypes == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
args.Result = entity.Comp.MetabolizerTypes.Overlaps(args.Condition.Type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Content.Server.Body.Components;
|
using Content.Server.Body.Components;
|
||||||
using Content.Shared.Body.Prototypes;
|
|
||||||
using Content.Shared.Chemistry.Reaction;
|
using Content.Shared.Chemistry.Reaction;
|
||||||
using Content.Shared.Chemistry.Reagent;
|
using Content.Shared.Chemistry.Reagent;
|
||||||
using Content.Shared.EntityEffects;
|
using Content.Shared.EntityEffects;
|
||||||
|
|
@ -43,7 +42,7 @@ public sealed class ReagentEntry
|
||||||
Description = proto.LocalizedDescription;
|
Description = proto.LocalizedDescription;
|
||||||
PhysicalDescription = proto.LocalizedPhysicalDescription;
|
PhysicalDescription = proto.LocalizedPhysicalDescription;
|
||||||
SubstanceColor = proto.SubstanceColor.ToHex();
|
SubstanceColor = proto.SubstanceColor.ToHex();
|
||||||
Metabolisms = proto.Metabolisms?.ToDictionary(x => x.Key.Id, x => x.Value);
|
Metabolisms = proto.Metabolisms?.Metabolisms.ToDictionary(x => x.Key.Id, x => x.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using Content.Shared.Anomaly.Effects;
|
using Content.Shared.Anomaly.Effects;
|
||||||
using Content.Shared.Body.Prototypes;
|
|
||||||
using Content.Shared.Humanoid.Prototypes;
|
using Content.Shared.Humanoid.Prototypes;
|
||||||
using Robust.Shared.Audio;
|
using Robust.Shared.Audio;
|
||||||
using Robust.Shared.GameStates;
|
using Robust.Shared.GameStates;
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ using Content.Shared.Actions;
|
||||||
using Content.Shared.Bed.Components;
|
using Content.Shared.Bed.Components;
|
||||||
using Content.Shared.Bed.Sleep;
|
using Content.Shared.Bed.Sleep;
|
||||||
using Content.Shared.Body.Events;
|
using Content.Shared.Body.Events;
|
||||||
using Content.Shared.Body.Systems;
|
|
||||||
using Content.Shared.Buckle.Components;
|
using Content.Shared.Buckle.Components;
|
||||||
using Content.Shared.Damage.Systems;
|
using Content.Shared.Damage.Systems;
|
||||||
using Content.Shared.Emag.Systems;
|
using Content.Shared.Emag.Systems;
|
||||||
|
using Content.Shared.Metabolism;
|
||||||
using Content.Shared.Mobs.Systems;
|
using Content.Shared.Mobs.Systems;
|
||||||
using Content.Shared.Power;
|
using Content.Shared.Power;
|
||||||
using Content.Shared.Power.EntitySystems;
|
using Content.Shared.Power.EntitySystems;
|
||||||
|
|
@ -20,9 +20,9 @@ public sealed class BedSystem : EntitySystem
|
||||||
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
|
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
|
||||||
[Dependency] private readonly EmagSystem _emag = default!;
|
[Dependency] private readonly EmagSystem _emag = default!;
|
||||||
[Dependency] private readonly IGameTiming _timing = default!;
|
[Dependency] private readonly IGameTiming _timing = default!;
|
||||||
|
[Dependency] private readonly MetabolizerSystem _metabolizer = default!;
|
||||||
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
|
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
|
||||||
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
|
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
|
||||||
[Dependency] private readonly SharedMetabolizerSystem _metabolizer = default!;
|
|
||||||
[Dependency] private readonly SharedPowerReceiverSystem _powerReceiver = default!;
|
[Dependency] private readonly SharedPowerReceiverSystem _powerReceiver = default!;
|
||||||
[Dependency] private readonly SleepingSystem _sleepingSystem = default!;
|
[Dependency] private readonly SleepingSystem _sleepingSystem = default!;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ public sealed partial class BloodstreamComponent : Component
|
||||||
{
|
{
|
||||||
public const string DefaultBloodSolutionName = "bloodstream";
|
public const string DefaultBloodSolutionName = "bloodstream";
|
||||||
public const string DefaultBloodTemporarySolutionName = "bloodstreamTemporary";
|
public const string DefaultBloodTemporarySolutionName = "bloodstreamTemporary";
|
||||||
|
public const string DefaultMetabolitesSolutionName = "metabolites";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The next time that blood level will be updated and bloodloss damage dealt.
|
/// The next time that blood level will be updated and bloodloss damage dealt.
|
||||||
|
|
@ -171,6 +172,12 @@ public sealed partial class BloodstreamComponent : Component
|
||||||
[DataField]
|
[DataField]
|
||||||
public string BloodTemporarySolutionName = DefaultBloodTemporarySolutionName;
|
public string BloodTemporarySolutionName = DefaultBloodTemporarySolutionName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Name/Key that <see cref="MetabolitesSolution"/> is indexed by.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public string MetabolitesSolutionName = DefaultMetabolitesSolutionName;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Internal solution for blood storage
|
/// Internal solution for blood storage
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -185,6 +192,12 @@ public sealed partial class BloodstreamComponent : Component
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public Entity<SolutionComponent>? TemporarySolution;
|
public Entity<SolutionComponent>? TemporarySolution;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Internal solution for metabolite storage
|
||||||
|
/// </summary>
|
||||||
|
[ViewVariables]
|
||||||
|
public Entity<SolutionComponent>? MetabolitesSolution;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Alert to show when bleeding.
|
/// Alert to show when bleeding.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -1,92 +1,28 @@
|
||||||
using Content.Shared.Body.Systems;
|
using Content.Shared.Body.Systems;
|
||||||
using Content.Shared.Chemistry.Components;
|
using Content.Shared.Chemistry.Components;
|
||||||
using Content.Shared.Chemistry.Reagent;
|
|
||||||
using Content.Shared.Nutrition.EntitySystems;
|
|
||||||
using Content.Shared.Whitelist;
|
using Content.Shared.Whitelist;
|
||||||
using Robust.Shared.GameStates;
|
using Robust.Shared.GameStates;
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
|
||||||
|
|
||||||
namespace Content.Shared.Body.Components
|
namespace Content.Shared.Body.Components;
|
||||||
|
|
||||||
|
[RegisterComponent, NetworkedComponent, Access(typeof(StomachSystem))]
|
||||||
|
public sealed partial class StomachComponent : Component
|
||||||
{
|
{
|
||||||
[RegisterComponent, NetworkedComponent, Access(typeof(StomachSystem))]
|
/// <summary>
|
||||||
public sealed partial class StomachComponent : Component
|
/// The solution inside of this stomach
|
||||||
{
|
/// </summary>
|
||||||
/// <summary>
|
[ViewVariables]
|
||||||
/// The next time that the stomach will try to digest its contents.
|
public Entity<SolutionComponent>? Solution;
|
||||||
/// </summary>
|
|
||||||
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
|
|
||||||
public TimeSpan NextUpdate;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The interval at which this stomach digests its contents.
|
/// A whitelist for what special-digestible-required foods this stomach is capable of eating.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField]
|
[DataField]
|
||||||
public TimeSpan UpdateInterval = TimeSpan.FromSeconds(1);
|
public EntityWhitelist? SpecialDigestible = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Multiplier applied to <see cref="UpdateInterval"/> for adjusting based on metabolic rate multiplier.
|
/// Controls whitelist behavior. If true, this stomach can digest <i>only</i> food that passes the whitelist. If false, it can digest normal food <i>and</i> any food that passes the whitelist.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField]
|
[DataField]
|
||||||
public float UpdateIntervalMultiplier = 1f;
|
public bool IsSpecialDigestibleExclusive = true;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Adjusted update interval based off of the multiplier value.
|
|
||||||
/// </summary>
|
|
||||||
[ViewVariables]
|
|
||||||
public TimeSpan AdjustedUpdateInterval => UpdateInterval * UpdateIntervalMultiplier;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The solution inside of this stomach this transfers reagents to the body.
|
|
||||||
/// </summary>
|
|
||||||
[ViewVariables]
|
|
||||||
public Entity<SolutionComponent>? Solution;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// What solution should this stomach push reagents into, on the body?
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public string BodySolutionName = BloodstreamComponent.DefaultBloodSolutionName;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Time between reagents being ingested and them being
|
|
||||||
/// transferred to <see cref="BloodstreamComponent"/>
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public TimeSpan DigestionDelay = TimeSpan.FromSeconds(20);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// A whitelist for what special-digestible-required foods this stomach is capable of eating.
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public EntityWhitelist? SpecialDigestible = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Controls whitelist behavior. If true, this stomach can digest <i>only</i> food that passes the whitelist. If false, it can digest normal food <i>and</i> any food that passes the whitelist.
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public bool IsSpecialDigestibleExclusive = true;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Used to track how long each reagent has been in the stomach
|
|
||||||
/// </summary>
|
|
||||||
[ViewVariables]
|
|
||||||
public readonly List<ReagentDelta> ReagentDeltas = new();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Used to track quantity changes when ingesting & digesting reagents
|
|
||||||
/// </summary>
|
|
||||||
public sealed class ReagentDelta
|
|
||||||
{
|
|
||||||
public readonly ReagentQuantity ReagentQuantity;
|
|
||||||
public TimeSpan Lifetime { get; private set; }
|
|
||||||
|
|
||||||
public ReagentDelta(ReagentQuantity reagentQuantity)
|
|
||||||
{
|
|
||||||
ReagentQuantity = reagentQuantity;
|
|
||||||
Lifetime = TimeSpan.Zero;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Increment(TimeSpan delta) => Lifetime += delta;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
using Robust.Shared.Prototypes;
|
|
||||||
|
|
||||||
namespace Content.Shared.Body.Prototypes
|
|
||||||
{
|
|
||||||
[Prototype]
|
|
||||||
public sealed partial class MetabolismGroupPrototype : IPrototype
|
|
||||||
{
|
|
||||||
[IdDataField]
|
|
||||||
public string ID { get; private set; } = default!;
|
|
||||||
|
|
||||||
[DataField("name", required: true)]
|
|
||||||
private LocId Name { get; set; }
|
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadOnly)]
|
|
||||||
public string LocalizedName => Loc.GetString(Name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
using Robust.Shared.Prototypes;
|
|
||||||
|
|
||||||
namespace Content.Shared.Body.Prototypes
|
|
||||||
{
|
|
||||||
[Prototype]
|
|
||||||
public sealed partial class MetabolizerTypePrototype : IPrototype
|
|
||||||
{
|
|
||||||
[IdDataField]
|
|
||||||
public string ID { get; private set; } = default!;
|
|
||||||
|
|
||||||
[DataField("name", required: true)]
|
|
||||||
private LocId Name { get; set; }
|
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadOnly)]
|
|
||||||
public string LocalizedName => Loc.GetString(Name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,7 +2,6 @@ using Content.Shared.Atmos;
|
||||||
using Content.Shared.Atmos.Components;
|
using Content.Shared.Atmos.Components;
|
||||||
using Content.Shared.Atmos.EntitySystems;
|
using Content.Shared.Atmos.EntitySystems;
|
||||||
using Content.Shared.Body.Components;
|
using Content.Shared.Body.Components;
|
||||||
using Content.Shared.Body.Prototypes;
|
|
||||||
using Content.Shared.Chemistry.Components;
|
using Content.Shared.Chemistry.Components;
|
||||||
using Content.Shared.Chemistry.EntitySystems;
|
using Content.Shared.Chemistry.EntitySystems;
|
||||||
using Content.Shared.Inventory.Events;
|
using Content.Shared.Inventory.Events;
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
using Content.Shared.Body.Events;
|
|
||||||
|
|
||||||
namespace Content.Shared.Body.Systems;
|
|
||||||
|
|
||||||
public abstract class SharedMetabolizerSystem : EntitySystem
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Updates the metabolic rate multiplier for a given entity,
|
|
||||||
/// raising both <see cref="GetMetabolicMultiplierEvent"/> to determine what the multiplier is and <see cref="ApplyMetabolicMultiplierEvent"/> to update relevant components.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="uid"></param>
|
|
||||||
public void UpdateMetabolicMultiplier(EntityUid uid)
|
|
||||||
{
|
|
||||||
var getEv = new GetMetabolicMultiplierEvent();
|
|
||||||
RaiseLocalEvent(uid, ref getEv);
|
|
||||||
|
|
||||||
var applyEv = new ApplyMetabolicMultiplierEvent(getEv.Multiplier);
|
|
||||||
RaiseLocalEvent(uid, ref applyEv);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,137 +1,44 @@
|
||||||
using Content.Shared.Body.Components;
|
using Content.Shared.Body.Components;
|
||||||
using Content.Shared.Body.Events;
|
|
||||||
using Content.Shared.Chemistry.Components;
|
using Content.Shared.Chemistry.Components;
|
||||||
using Content.Shared.Chemistry.Components.SolutionManager;
|
using Content.Shared.Chemistry.Components.SolutionManager;
|
||||||
using Content.Shared.Chemistry.EntitySystems;
|
using Content.Shared.Chemistry.EntitySystems;
|
||||||
using Robust.Shared.Containers;
|
|
||||||
using Robust.Shared.Timing;
|
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
|
|
||||||
namespace Content.Shared.Body.Systems
|
namespace Content.Shared.Body.Systems;
|
||||||
|
|
||||||
|
public sealed class StomachSystem : EntitySystem
|
||||||
{
|
{
|
||||||
public sealed class StomachSystem : EntitySystem
|
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!;
|
||||||
|
|
||||||
|
public const string DefaultSolutionName = "stomach";
|
||||||
|
|
||||||
|
public bool CanTransferSolution(
|
||||||
|
EntityUid uid,
|
||||||
|
Solution solution,
|
||||||
|
StomachComponent? stomach = null,
|
||||||
|
SolutionContainerManagerComponent? solutions = null)
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
return Resolve(uid, ref stomach, ref solutions, logMissing: false)
|
||||||
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!;
|
&& _solutionContainerSystem.ResolveSolution((uid, solutions), DefaultSolutionName, ref stomach.Solution, out var stomachSolution)
|
||||||
|
// TODO: For now no partial transfers. Potentially change by design
|
||||||
|
&& stomachSolution.CanAddSolution(solution);
|
||||||
|
}
|
||||||
|
|
||||||
public const string DefaultSolutionName = "stomach";
|
public bool TryTransferSolution(
|
||||||
|
EntityUid uid,
|
||||||
public override void Initialize()
|
Solution solution,
|
||||||
|
StomachComponent? stomach = null,
|
||||||
|
SolutionContainerManagerComponent? solutions = null)
|
||||||
|
{
|
||||||
|
if (!Resolve(uid, ref stomach, ref solutions, logMissing: false)
|
||||||
|
|| !_solutionContainerSystem.ResolveSolution((uid, solutions), DefaultSolutionName, ref stomach.Solution)
|
||||||
|
|| !CanTransferSolution(uid, solution, stomach, solutions))
|
||||||
{
|
{
|
||||||
SubscribeLocalEvent<StomachComponent, MapInitEvent>(OnMapInit);
|
return false;
|
||||||
SubscribeLocalEvent<StomachComponent, EntityUnpausedEvent>(OnUnpaused);
|
|
||||||
SubscribeLocalEvent<StomachComponent, EntRemovedFromContainerMessage>(OnEntRemoved);
|
|
||||||
SubscribeLocalEvent<StomachComponent, ApplyMetabolicMultiplierEvent>(OnApplyMetabolicMultiplier);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnMapInit(Entity<StomachComponent> ent, ref MapInitEvent args)
|
_solutionContainerSystem.TryAddSolution(stomach.Solution.Value, solution);
|
||||||
{
|
|
||||||
ent.Comp.NextUpdate = _gameTiming.CurTime + ent.Comp.AdjustedUpdateInterval;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnUnpaused(Entity<StomachComponent> ent, ref EntityUnpausedEvent args)
|
return true;
|
||||||
{
|
|
||||||
ent.Comp.NextUpdate += args.PausedTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnEntRemoved(Entity<StomachComponent> ent, ref EntRemovedFromContainerMessage args)
|
|
||||||
{
|
|
||||||
// Make sure the removed entity was our contained solution
|
|
||||||
if (ent.Comp.Solution is not { } solution || args.Entity != solution.Owner)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Cleared our cached reference to the solution entity
|
|
||||||
ent.Comp.Solution = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Update(float frameTime)
|
|
||||||
{
|
|
||||||
var query = EntityQueryEnumerator<StomachComponent, OrganComponent, SolutionContainerManagerComponent>();
|
|
||||||
while (query.MoveNext(out var uid, out var stomach, out var organ, out var sol))
|
|
||||||
{
|
|
||||||
if (_gameTiming.CurTime < stomach.NextUpdate)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
stomach.NextUpdate += stomach.AdjustedUpdateInterval;
|
|
||||||
|
|
||||||
// Get our solutions
|
|
||||||
if (!_solutionContainerSystem.ResolveSolution((uid, sol), DefaultSolutionName, ref stomach.Solution, out var stomachSolution))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (organ.Body is not { } body || !_solutionContainerSystem.TryGetSolution(body, stomach.BodySolutionName, out var bodySolution))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
var transferSolution = new Solution();
|
|
||||||
|
|
||||||
var queue = new RemQueue<StomachComponent.ReagentDelta>();
|
|
||||||
foreach (var delta in stomach.ReagentDeltas)
|
|
||||||
{
|
|
||||||
delta.Increment(stomach.AdjustedUpdateInterval);
|
|
||||||
if (delta.Lifetime > stomach.DigestionDelay)
|
|
||||||
{
|
|
||||||
if (stomachSolution.TryGetReagent(delta.ReagentQuantity.Reagent, out var reagent))
|
|
||||||
{
|
|
||||||
if (reagent.Quantity > delta.ReagentQuantity.Quantity)
|
|
||||||
reagent = new(reagent.Reagent, delta.ReagentQuantity.Quantity);
|
|
||||||
|
|
||||||
stomachSolution.RemoveReagent(reagent);
|
|
||||||
transferSolution.AddReagent(reagent);
|
|
||||||
}
|
|
||||||
|
|
||||||
queue.Add(delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var item in queue)
|
|
||||||
{
|
|
||||||
stomach.ReagentDeltas.Remove(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
_solutionContainerSystem.UpdateChemicals(stomach.Solution.Value);
|
|
||||||
|
|
||||||
// Transfer everything to the body solution!
|
|
||||||
_solutionContainerSystem.TryAddSolution(bodySolution.Value, transferSolution);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnApplyMetabolicMultiplier(Entity<StomachComponent> ent, ref ApplyMetabolicMultiplierEvent args)
|
|
||||||
{
|
|
||||||
ent.Comp.UpdateIntervalMultiplier = args.Multiplier;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool CanTransferSolution(
|
|
||||||
EntityUid uid,
|
|
||||||
Solution solution,
|
|
||||||
StomachComponent? stomach = null,
|
|
||||||
SolutionContainerManagerComponent? solutions = null)
|
|
||||||
{
|
|
||||||
return Resolve(uid, ref stomach, ref solutions, logMissing: false)
|
|
||||||
&& _solutionContainerSystem.ResolveSolution((uid, solutions), DefaultSolutionName, ref stomach.Solution, out var stomachSolution)
|
|
||||||
// TODO: For now no partial transfers. Potentially change by design
|
|
||||||
&& stomachSolution.CanAddSolution(solution);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool TryTransferSolution(
|
|
||||||
EntityUid uid,
|
|
||||||
Solution solution,
|
|
||||||
StomachComponent? stomach = null,
|
|
||||||
SolutionContainerManagerComponent? solutions = null)
|
|
||||||
{
|
|
||||||
if (!Resolve(uid, ref stomach, ref solutions, logMissing: false)
|
|
||||||
|| !_solutionContainerSystem.ResolveSolution((uid, solutions), DefaultSolutionName, ref stomach.Solution)
|
|
||||||
|| !CanTransferSolution(uid, solution, stomach, solutions))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
_solutionContainerSystem.TryAddSolution(stomach.Solution.Value, solution);
|
|
||||||
// Add each reagent to ReagentDeltas. Used to track how long each reagent has been in the stomach
|
|
||||||
foreach (var reagent in solution.Contents)
|
|
||||||
{
|
|
||||||
stomach.ReagentDeltas.Add(new StomachComponent.ReagentDelta(reagent));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
using Robust.Shared.Serialization.Manager;
|
||||||
|
using Robust.Shared.Serialization.Markdown.Mapping;
|
||||||
|
using Robust.Shared.Serialization.TypeSerializers.Interfaces;
|
||||||
|
|
||||||
|
namespace Content.Shared.Chemistry.Reagent;
|
||||||
|
|
||||||
|
[TypeSerializer]
|
||||||
|
public sealed class ReagentMetabolismsSerializer : ITypeInheritanceHandler<ReagentMetabolisms, MappingDataNode>
|
||||||
|
{
|
||||||
|
public MappingDataNode PushInheritance(
|
||||||
|
ISerializationManager serializationManager,
|
||||||
|
MappingDataNode child,
|
||||||
|
MappingDataNode parent,
|
||||||
|
IDependencyCollection dependencies,
|
||||||
|
ISerializationContext? context)
|
||||||
|
{
|
||||||
|
var result = child.Copy();
|
||||||
|
|
||||||
|
foreach (var (k, v) in parent)
|
||||||
|
{
|
||||||
|
if (result.TryAddCopy(k, v))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
result[k] = serializationManager.CombineMappings(
|
||||||
|
(MappingDataNode)result[k],
|
||||||
|
(MappingDataNode)v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,11 +2,11 @@ using System.Collections.Frozen;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Content.Shared.FixedPoint;
|
using Content.Shared.FixedPoint;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Content.Shared.Body.Prototypes;
|
|
||||||
using Content.Shared.Chemistry.Reaction;
|
using Content.Shared.Chemistry.Reaction;
|
||||||
using Content.Shared.Contraband;
|
using Content.Shared.Contraband;
|
||||||
using Content.Shared.EntityEffects;
|
using Content.Shared.EntityEffects;
|
||||||
using Content.Shared.Localizations;
|
using Content.Shared.Localizations;
|
||||||
|
using Content.Shared.Metabolism;
|
||||||
using Content.Shared.Nutrition;
|
using Content.Shared.Nutrition;
|
||||||
using Content.Shared.Roles;
|
using Content.Shared.Roles;
|
||||||
using Content.Shared.Slippery;
|
using Content.Shared.Slippery;
|
||||||
|
|
@ -15,6 +15,7 @@ using Robust.Shared.Map;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Serialization;
|
using Robust.Shared.Serialization;
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
||||||
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Generic;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
|
|
||||||
namespace Content.Shared.Chemistry.Reagent
|
namespace Content.Shared.Chemistry.Reagent
|
||||||
|
|
@ -168,8 +169,8 @@ namespace Content.Shared.Chemistry.Reagent
|
||||||
[DataField]
|
[DataField]
|
||||||
public bool WorksOnTheDead;
|
public bool WorksOnTheDead;
|
||||||
|
|
||||||
[DataField]
|
[DataField, AlwaysPushInheritance]
|
||||||
public FrozenDictionary<ProtoId<MetabolismGroupPrototype>, ReagentEffectsEntry>? Metabolisms;
|
public ReagentMetabolisms? Metabolisms;
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
public Dictionary<ProtoId<ReactiveGroupPrototype>, ReactiveReagentEffectEntry>? ReactiveEffects;
|
public Dictionary<ProtoId<ReactiveGroupPrototype>, ReactiveReagentEffectEntry>? ReactiveEffects;
|
||||||
|
|
@ -242,15 +243,14 @@ namespace Content.Shared.Chemistry.Reagent
|
||||||
{
|
{
|
||||||
public string ReagentPrototype;
|
public string ReagentPrototype;
|
||||||
|
|
||||||
// TODO: Kill Metabolism groups!
|
public Dictionary<ProtoId<MetabolismStagePrototype>, ReagentEffectsGuideEntry>? GuideEntries;
|
||||||
public Dictionary<ProtoId<MetabolismGroupPrototype>, ReagentEffectsGuideEntry>? GuideEntries;
|
|
||||||
|
|
||||||
public List<string>? PlantMetabolisms = null;
|
public List<string>? PlantMetabolisms = null;
|
||||||
|
|
||||||
public ReagentGuideEntry(ReagentPrototype proto, IPrototypeManager prototype, IEntitySystemManager entSys)
|
public ReagentGuideEntry(ReagentPrototype proto, IPrototypeManager prototype, IEntitySystemManager entSys)
|
||||||
{
|
{
|
||||||
ReagentPrototype = proto.ID;
|
ReagentPrototype = proto.ID;
|
||||||
GuideEntries = proto.Metabolisms?
|
GuideEntries = proto.Metabolisms?.Metabolisms
|
||||||
.Select(x => (x.Key, x.Value.MakeGuideEntry(prototype, entSys, proto)))
|
.Select(x => (x.Key, x.Value.MakeGuideEntry(prototype, entSys, proto)))
|
||||||
.ToDictionary(x => x.Key, x => x.Item2);
|
.ToDictionary(x => x.Key, x => x.Item2);
|
||||||
if (proto.PlantMetabolisms.Count > 0)
|
if (proto.PlantMetabolisms.Count > 0)
|
||||||
|
|
@ -261,6 +261,12 @@ namespace Content.Shared.Chemistry.Reagent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[DataDefinition]
|
||||||
|
public sealed partial class ReagentMetabolisms
|
||||||
|
{
|
||||||
|
[IncludeDataField(customTypeSerializer: typeof(DictionarySerializer<ProtoId<MetabolismStagePrototype>, ReagentEffectsEntry>))]
|
||||||
|
public Dictionary<ProtoId<MetabolismStagePrototype>, ReagentEffectsEntry> Metabolisms;
|
||||||
|
}
|
||||||
|
|
||||||
[DataDefinition]
|
[DataDefinition]
|
||||||
public sealed partial class ReagentEffectsEntry
|
public sealed partial class ReagentEffectsEntry
|
||||||
|
|
@ -269,21 +275,27 @@ namespace Content.Shared.Chemistry.Reagent
|
||||||
/// Amount of reagent to metabolize, per metabolism cycle.
|
/// Amount of reagent to metabolize, per metabolism cycle.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonPropertyName("rate")]
|
[JsonPropertyName("rate")]
|
||||||
[DataField("metabolismRate")]
|
[DataField]
|
||||||
public FixedPoint2 MetabolismRate = FixedPoint2.New(0.5f);
|
public FixedPoint2 MetabolismRate = FixedPoint2.New(0.5f);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A list of effects to apply when these reagents are metabolized.
|
/// A list of effects to apply when these reagents are metabolized.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonPropertyName("effects")]
|
[JsonPropertyName("effects")]
|
||||||
[DataField("effects", required: true)]
|
[DataField]
|
||||||
public EntityEffect[] Effects = default!;
|
public EntityEffect[] Effects = Array.Empty<EntityEffect>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ratio of this reagent to metabolites for transfer to the next solution by a metabolizer
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public Dictionary<ProtoId<ReagentPrototype>, FixedPoint2>? Metabolites;
|
||||||
|
|
||||||
public string EntityEffectFormat => "guidebook-reagent-effect-description";
|
public string EntityEffectFormat => "guidebook-reagent-effect-description";
|
||||||
|
|
||||||
public ReagentEffectsGuideEntry MakeGuideEntry(IPrototypeManager prototype, IEntitySystemManager entSys, ReagentPrototype proto)
|
public ReagentEffectsGuideEntry MakeGuideEntry(IPrototypeManager prototype, IEntitySystemManager entSys, ReagentPrototype proto)
|
||||||
{
|
{
|
||||||
return new ReagentEffectsGuideEntry(MetabolismRate, proto.GuidebookReagentEffectsDescription(prototype, entSys, Effects, MetabolismRate).ToArray());
|
return new ReagentEffectsGuideEntry(MetabolismRate, proto.GuidebookReagentEffectsDescription(prototype, entSys, Effects, MetabolismRate).ToArray(), Metabolites);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -294,10 +306,13 @@ namespace Content.Shared.Chemistry.Reagent
|
||||||
|
|
||||||
public string[] EffectDescriptions;
|
public string[] EffectDescriptions;
|
||||||
|
|
||||||
public ReagentEffectsGuideEntry(FixedPoint2 metabolismRate, string[] effectDescriptions)
|
public Dictionary<ProtoId<ReagentPrototype>, FixedPoint2>? Metabolites;
|
||||||
|
|
||||||
|
public ReagentEffectsGuideEntry(FixedPoint2 metabolismRate, string[] effectDescriptions, Dictionary<ProtoId<ReagentPrototype>, FixedPoint2>? metabolites)
|
||||||
{
|
{
|
||||||
MetabolismRate = metabolismRate;
|
MetabolismRate = metabolismRate;
|
||||||
EffectDescriptions = effectDescriptions;
|
EffectDescriptions = effectDescriptions;
|
||||||
|
Metabolites = metabolites;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
using Content.Shared.Body.Prototypes;
|
using System.Linq;
|
||||||
using Content.Shared.Localizations;
|
using Content.Shared.Localizations;
|
||||||
|
using Content.Shared.Metabolism;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
namespace Content.Shared.EntityConditions.Conditions.Body;
|
namespace Content.Shared.EntityConditions.Conditions.Body;
|
||||||
|
|
@ -29,3 +30,18 @@ public sealed partial class MetabolizerTypeCondition : EntityConditionBase<Metab
|
||||||
("shouldhave", !Inverted));
|
("shouldhave", !Inverted));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns true if this entity has any of the listed metabolizer types.
|
||||||
|
/// </summary>
|
||||||
|
/// <inheritdoc cref="EntityConditionSystem{T, TCondition}"/>
|
||||||
|
public sealed partial class MetabolizerTypeEntityConditionSystem : EntityConditionSystem<MetabolizerComponent, MetabolizerTypeCondition>
|
||||||
|
{
|
||||||
|
protected override void Condition(Entity<MetabolizerComponent> entity, ref EntityConditionEvent<MetabolizerTypeCondition> args)
|
||||||
|
{
|
||||||
|
if (entity.Comp.MetabolizerTypes == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
args.Result = entity.Comp.MetabolizerTypes.Overlaps(args.Condition.Type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
using Content.Shared.Body.Prototypes;
|
|
||||||
using Content.Shared.Chemistry.Components;
|
|
||||||
using Content.Shared.Chemistry.EntitySystems;
|
|
||||||
using Content.Shared.Chemistry.Reagent;
|
|
||||||
using Content.Shared.FixedPoint;
|
|
||||||
using Robust.Shared.Prototypes;
|
|
||||||
|
|
||||||
namespace Content.Shared.EntityEffects.Effects.Solution;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Adjust all reagents in this solution which are metabolized by a given metabolism group.
|
|
||||||
/// Quantity is modified by scale, quantity is per reagent and not a total.
|
|
||||||
/// </summary>
|
|
||||||
/// <inheritdoc cref="EntityEffectSystem{T,TEffect}"/>
|
|
||||||
public sealed partial class AdjustReagentsByGroupEntityEffectSystem : EntityEffectSystem<SolutionComponent, AdjustReagentsByGroup>
|
|
||||||
{
|
|
||||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
|
||||||
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainer = default!;
|
|
||||||
|
|
||||||
protected override void Effect(Entity<SolutionComponent> entity, ref EntityEffectEvent<AdjustReagentsByGroup> args)
|
|
||||||
{
|
|
||||||
var quantity = args.Effect.Amount * args.Scale;
|
|
||||||
var group = args.Effect.Group;
|
|
||||||
var solution = entity.Comp.Solution;
|
|
||||||
|
|
||||||
foreach (var quant in solution.Contents.ToArray())
|
|
||||||
{
|
|
||||||
var proto = _proto.Index<ReagentPrototype>(quant.Reagent.Prototype);
|
|
||||||
if (proto.Metabolisms == null || !proto.Metabolisms.ContainsKey(group))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (quantity > 0)
|
|
||||||
_solutionContainer.TryAddReagent(entity, proto.ID, quantity);
|
|
||||||
else
|
|
||||||
_solutionContainer.RemoveReagent(entity, proto.ID, -quantity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc cref="EntityEffect"/>
|
|
||||||
public sealed partial class AdjustReagentsByGroup : EntityEffectBase<AdjustReagentsByGroup>
|
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The metabolism group being adjusted. All reagents in an affected solution with this group will be adjusted.
|
|
||||||
/// </summary>
|
|
||||||
[DataField(required: true)]
|
|
||||||
public ProtoId<MetabolismGroupPrototype> Group;
|
|
||||||
|
|
||||||
[DataField(required: true)]
|
|
||||||
public FixedPoint2 Amount;
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
|
namespace Content.Shared.Metabolism;
|
||||||
|
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class MetabolismStagePrototype : IPrototype
|
||||||
|
{
|
||||||
|
[IdDataField]
|
||||||
|
public string ID { get; private set; } = default!;
|
||||||
|
|
||||||
|
[DataField("name", required: true)]
|
||||||
|
private LocId Name { get; set; }
|
||||||
|
|
||||||
|
[ViewVariables(VVAccess.ReadOnly)]
|
||||||
|
public string LocalizedName => Loc.GetString(Name);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,148 @@
|
||||||
|
using Content.Shared.Body.Components;
|
||||||
|
using Content.Shared.FixedPoint;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||||
|
|
||||||
|
namespace Content.Shared.Metabolism;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handles metabolizing various reagents with given effects.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent, AutoGenerateComponentPause, Access(typeof(MetabolizerSystem))]
|
||||||
|
public sealed partial class MetabolizerComponent : Component
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The next time that reagents will be metabolized.
|
||||||
|
/// </summary>
|
||||||
|
[DataField, AutoPausedField]
|
||||||
|
public TimeSpan NextUpdate;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// How often to metabolize reagents.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[DataField]
|
||||||
|
public TimeSpan UpdateInterval = TimeSpan.FromSeconds(1);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Multiplier applied to <see cref="UpdateInterval"/> for adjusting based on metabolic rate multiplier.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public float UpdateIntervalMultiplier = 1f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adjusted update interval based off of the multiplier value.
|
||||||
|
/// </summary>
|
||||||
|
[ViewVariables]
|
||||||
|
public TimeSpan AdjustedUpdateInterval => UpdateInterval * UpdateIntervalMultiplier;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// From which solution will this metabolizer attempt to metabolize chemicals for a given stage
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public Dictionary<ProtoId<MetabolismStagePrototype>, MetabolismSolutionEntry> Solutions = new()
|
||||||
|
{
|
||||||
|
["Respiration"] = new()
|
||||||
|
{
|
||||||
|
SolutionName = "Lung",
|
||||||
|
SolutionOnBody = false,
|
||||||
|
TransferSolutionName = BloodstreamComponent.DefaultBloodSolutionName,
|
||||||
|
MetabolizeAll = true
|
||||||
|
},
|
||||||
|
["Digestion"] = new()
|
||||||
|
{
|
||||||
|
SolutionName = "stomach",
|
||||||
|
SolutionOnBody = false,
|
||||||
|
TransferSolutionName = BloodstreamComponent.DefaultBloodSolutionName,
|
||||||
|
TransferEfficacy = 0.5
|
||||||
|
},
|
||||||
|
["Bloodstream"] = new()
|
||||||
|
{
|
||||||
|
SolutionName = BloodstreamComponent.DefaultBloodSolutionName,
|
||||||
|
TransferSolutionName = BloodstreamComponent.DefaultMetabolitesSolutionName,
|
||||||
|
},
|
||||||
|
["Metabolites"] = new()
|
||||||
|
{
|
||||||
|
SolutionName = BloodstreamComponent.DefaultMetabolitesSolutionName
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Does this component use a solution on it's parent entity (the body) or itself
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Most things will use the parent entity (bloodstream).
|
||||||
|
/// </remarks>
|
||||||
|
[DataField]
|
||||||
|
public bool SolutionOnBody = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// List of metabolizer types that this organ is. ex. Human, Slime, Felinid, w/e.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
[Access(typeof(MetabolizerSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends
|
||||||
|
public HashSet<ProtoId<MetabolizerTypePrototype>>? MetabolizerTypes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// How many reagents can this metabolizer process at once?
|
||||||
|
/// Used to nerf 'stacked poisons' where having 5+ different poisons in a syringe, even at low
|
||||||
|
/// quantity, would be muuuuch better than just one poison acting.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("maxReagents")]
|
||||||
|
public int MaxReagentsProcessable = 3;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A list of metabolism stages that this metabolizer will act on, in order of precedence.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public List<ProtoId<MetabolismStagePrototype>> Stages = new();
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataDefinition]
|
||||||
|
public sealed partial class MetabolismSolutionEntry
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// From which solution will this metabolizer attempt to metabolize chemicals
|
||||||
|
/// </summary>
|
||||||
|
[DataField(required: true)]
|
||||||
|
public string SolutionName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Does this metabolizer use a solution on it's parent entity (the body) or itself
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Most things will use the parent entity (bloodstream).
|
||||||
|
/// </remarks>
|
||||||
|
[DataField]
|
||||||
|
public bool SolutionOnBody = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When true, this solution will be metabolized entirely instead of at a certain rate
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public bool MetabolizeAll = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reagents without a metabolism for the current stage will be transferred to this solution
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public string? TransferSolutionName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reagents transferred by this metabolizer will transfer at this rate if they don't have a metabolism
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public FixedPoint2 TransferRate = 0.25;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The percentage of transferred reagents that actually make it to the next step in metabolism if they don't have explicit metabolites
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public FixedPoint2 TransferEfficacy = 1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Does this metabolizer transfer to a solution on the body or on the entity itself
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public bool TransferSolutionOnBody = true;
|
||||||
|
}
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Content.Server.Body.Components;
|
|
||||||
using Content.Shared.Body;
|
|
||||||
using Content.Shared.Body.Events;
|
using Content.Shared.Body.Events;
|
||||||
using Content.Shared.Body.Prototypes;
|
|
||||||
using Content.Shared.Body.Systems;
|
using Content.Shared.Body.Systems;
|
||||||
|
using Content.Shared.Body;
|
||||||
using Content.Shared.Chemistry.Components;
|
using Content.Shared.Chemistry.Components;
|
||||||
using Content.Shared.Chemistry.Components.SolutionManager;
|
using Content.Shared.Chemistry.Components.SolutionManager;
|
||||||
using Content.Shared.Chemistry.EntitySystems;
|
using Content.Shared.Chemistry.EntitySystems;
|
||||||
|
|
@ -21,10 +20,10 @@ using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Random;
|
using Robust.Shared.Random;
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
|
|
||||||
namespace Content.Server.Body.Systems;
|
namespace Content.Shared.Metabolism;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public sealed class MetabolizerSystem : SharedMetabolizerSystem
|
public sealed class MetabolizerSystem : EntitySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
||||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||||
|
|
@ -36,7 +35,6 @@ public sealed class MetabolizerSystem : SharedMetabolizerSystem
|
||||||
|
|
||||||
private EntityQuery<OrganComponent> _organQuery;
|
private EntityQuery<OrganComponent> _organQuery;
|
||||||
private EntityQuery<SolutionContainerManagerComponent> _solutionQuery;
|
private EntityQuery<SolutionContainerManagerComponent> _solutionQuery;
|
||||||
private static readonly ProtoId<MetabolismGroupPrototype> Gas = "Gas";
|
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
|
|
@ -45,7 +43,6 @@ public sealed class MetabolizerSystem : SharedMetabolizerSystem
|
||||||
_organQuery = GetEntityQuery<OrganComponent>();
|
_organQuery = GetEntityQuery<OrganComponent>();
|
||||||
_solutionQuery = GetEntityQuery<SolutionContainerManagerComponent>();
|
_solutionQuery = GetEntityQuery<SolutionContainerManagerComponent>();
|
||||||
|
|
||||||
SubscribeLocalEvent<MetabolizerComponent, ComponentInit>(OnMetabolizerInit);
|
|
||||||
SubscribeLocalEvent<MetabolizerComponent, MapInitEvent>(OnMapInit);
|
SubscribeLocalEvent<MetabolizerComponent, MapInitEvent>(OnMapInit);
|
||||||
SubscribeLocalEvent<MetabolizerComponent, BodyRelayedEvent<ApplyMetabolicMultiplierEvent>>(OnApplyMetabolicMultiplier);
|
SubscribeLocalEvent<MetabolizerComponent, BodyRelayedEvent<ApplyMetabolicMultiplierEvent>>(OnApplyMetabolicMultiplier);
|
||||||
}
|
}
|
||||||
|
|
@ -55,18 +52,6 @@ public sealed class MetabolizerSystem : SharedMetabolizerSystem
|
||||||
ent.Comp.NextUpdate = _gameTiming.CurTime + ent.Comp.AdjustedUpdateInterval;
|
ent.Comp.NextUpdate = _gameTiming.CurTime + ent.Comp.AdjustedUpdateInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnMetabolizerInit(Entity<MetabolizerComponent> entity, ref ComponentInit args)
|
|
||||||
{
|
|
||||||
if (!entity.Comp.SolutionOnBody)
|
|
||||||
{
|
|
||||||
_solutionContainerSystem.EnsureSolution(entity.Owner, entity.Comp.SolutionName, out _);
|
|
||||||
}
|
|
||||||
else if (_organQuery.CompOrNull(entity)?.Body is { } body)
|
|
||||||
{
|
|
||||||
_solutionContainerSystem.EnsureSolution(body, entity.Comp.SolutionName, out _);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnApplyMetabolicMultiplier(Entity<MetabolizerComponent> ent, ref BodyRelayedEvent<ApplyMetabolicMultiplierEvent> args)
|
private void OnApplyMetabolicMultiplier(Entity<MetabolizerComponent> ent, ref BodyRelayedEvent<ApplyMetabolicMultiplierEvent> args)
|
||||||
{
|
{
|
||||||
ent.Comp.UpdateIntervalMultiplier = args.Args.Multiplier;
|
ent.Comp.UpdateIntervalMultiplier = args.Args.Multiplier;
|
||||||
|
|
@ -95,56 +80,86 @@ public sealed class MetabolizerSystem : SharedMetabolizerSystem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TryMetabolize(Entity<MetabolizerComponent, OrganComponent?, SolutionContainerManagerComponent?> ent)
|
/// <summary>
|
||||||
|
/// Updates the metabolic rate multiplier for a given entity,
|
||||||
|
/// raising both <see cref="GetMetabolicMultiplierEvent"/> to determine what the multiplier is and <see cref="ApplyMetabolicMultiplierEvent"/> to update relevant components.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="uid"></param>
|
||||||
|
public void UpdateMetabolicMultiplier(EntityUid uid)
|
||||||
{
|
{
|
||||||
_organQuery.Resolve(ent, ref ent.Comp2, logMissing: false);
|
var getEv = new GetMetabolicMultiplierEvent();
|
||||||
|
RaiseLocalEvent(uid, ref getEv);
|
||||||
|
|
||||||
// First step is get the solution we actually care about
|
var applyEv = new ApplyMetabolicMultiplierEvent(getEv.Multiplier);
|
||||||
var solutionName = ent.Comp1.SolutionName;
|
RaiseLocalEvent(uid, ref applyEv);
|
||||||
Solution? solution = null;
|
}
|
||||||
Entity<SolutionComponent>? soln = default!;
|
|
||||||
EntityUid? solutionEntityUid = null;
|
|
||||||
|
|
||||||
if (ent.Comp1.SolutionOnBody)
|
private bool LookupSolution(
|
||||||
|
Entity<MetabolizerComponent, OrganComponent?, SolutionContainerManagerComponent?> ent,
|
||||||
|
MetabolismSolutionEntry solutionData,
|
||||||
|
bool lookupTransfer,
|
||||||
|
[NotNullWhen(true)] out Solution? solution,
|
||||||
|
[NotNullWhen(true)] out Entity<SolutionComponent>? solutionEntity,
|
||||||
|
[NotNullWhen(true)] out EntityUid? solutionOwner
|
||||||
|
)
|
||||||
|
{
|
||||||
|
solution = null;
|
||||||
|
solutionEntity = null;
|
||||||
|
solutionOwner = null;
|
||||||
|
|
||||||
|
var solutionName = lookupTransfer ? solutionData.TransferSolutionName : solutionData.SolutionName;
|
||||||
|
|
||||||
|
if (solutionName is null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (lookupTransfer ? solutionData.TransferSolutionOnBody : solutionData.SolutionOnBody)
|
||||||
{
|
{
|
||||||
if (ent.Comp2?.Body is { } body)
|
if (ent.Comp2?.Body is { } body)
|
||||||
{
|
{
|
||||||
if (!_solutionQuery.Resolve(body, ref ent.Comp3, logMissing: false))
|
if (!_solutionQuery.TryComp(body, out var bodySolution))
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
_solutionContainerSystem.TryGetSolution((body, ent.Comp3), solutionName, out soln, out solution);
|
solutionOwner = body;
|
||||||
solutionEntityUid = body;
|
return _solutionContainerSystem.TryGetSolution((body, bodySolution), solutionName, out solutionEntity, out solution);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!_solutionQuery.Resolve(ent, ref ent.Comp3, logMissing: false))
|
if (!_solutionQuery.Resolve(ent, ref ent.Comp3, logMissing: false))
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
_solutionContainerSystem.TryGetSolution((ent, ent), solutionName, out soln, out solution);
|
solutionOwner = ent;
|
||||||
solutionEntityUid = ent;
|
return _solutionContainerSystem.TryGetSolution((ent, ent), solutionName, out solutionEntity, out solution);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (solutionEntityUid is null
|
return false;
|
||||||
|| soln is null
|
}
|
||||||
|| solution is null
|
|
||||||
|| solution.Contents.Count == 0)
|
private void TryMetabolizeStage(Entity<MetabolizerComponent, OrganComponent?, SolutionContainerManagerComponent?> ent, ProtoId<MetabolismStagePrototype> stage)
|
||||||
{
|
{
|
||||||
|
if (!ent.Comp1.Solutions.TryGetValue(stage, out var solutionData))
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
if (!LookupSolution(ent, solutionData, false, out var solution, out var solutionEntity, out var solutionOwner))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (solution.Contents.Count == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
LookupSolution(ent, solutionData, true, out var transferSolution, out var transferSolutionEntity, out _);
|
||||||
|
|
||||||
// Copy the solution do not edit the original solution list
|
// Copy the solution do not edit the original solution list
|
||||||
var list = solution.Contents.ToList();
|
var list = solution.Contents.ToList();
|
||||||
|
|
||||||
// Collecting blood reagent for filtering
|
// Collecting blood reagent for filtering
|
||||||
var ev = new MetabolismExclusionEvent();
|
var ev = new MetabolismExclusionEvent();
|
||||||
RaiseLocalEvent(solutionEntityUid.Value, ref ev);
|
RaiseLocalEvent(solutionOwner.Value, ref ev);
|
||||||
|
|
||||||
// randomize the reagent list so we don't have any weird quirks
|
// randomize the reagent list so we don't have any weird quirks
|
||||||
// like alphabetical order or insertion order mattering for processing
|
// like alphabetical order or insertion order mattering for processing
|
||||||
_random.Shuffle(list);
|
_random.Shuffle(list);
|
||||||
|
|
||||||
bool isDead = _mobStateSystem.IsDead(solutionEntityUid.Value);
|
var isDead = _mobStateSystem.IsDead(solutionOwner.Value);
|
||||||
|
|
||||||
int reagents = 0;
|
int reagents = 0;
|
||||||
foreach (var (reagent, quantity) in list)
|
foreach (var (reagent, quantity) in list)
|
||||||
|
|
@ -156,10 +171,16 @@ public sealed class MetabolizerSystem : SharedMetabolizerSystem
|
||||||
if (ev.Reagents.Contains(reagent))
|
if (ev.Reagents.Contains(reagent))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var mostToRemove = FixedPoint2.Zero;
|
if (proto.Metabolisms is null || !proto.Metabolisms.Metabolisms.TryGetValue(stage, out var entry))
|
||||||
if (proto.Metabolisms is null)
|
|
||||||
{
|
{
|
||||||
if (ent.Comp1.RemoveEmpty)
|
var mostToTransfer = FixedPoint2.Clamp(solutionData.TransferRate, 0, quantity);
|
||||||
|
|
||||||
|
if (transferSolution is not null)
|
||||||
|
{
|
||||||
|
solution.RemoveReagent(reagent, mostToTransfer);
|
||||||
|
transferSolution.AddReagent(reagent, mostToTransfer * solutionData.TransferEfficacy);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
solution.RemoveReagent(reagent, FixedPoint2.New(1));
|
solution.RemoveReagent(reagent, FixedPoint2.New(1));
|
||||||
}
|
}
|
||||||
|
|
@ -167,78 +188,58 @@ public sealed class MetabolizerSystem : SharedMetabolizerSystem
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var rate = solutionData.MetabolizeAll ? quantity : entry.MetabolismRate;
|
||||||
|
|
||||||
|
// Remove $rate, as long as there's enough reagent there to actually remove that much
|
||||||
|
var mostToRemove = FixedPoint2.Clamp(rate, 0, quantity);
|
||||||
|
|
||||||
// we're done here entirely if this is true
|
// we're done here entirely if this is true
|
||||||
if (reagents >= ent.Comp1.MaxReagentsProcessable)
|
if (reagents >= ent.Comp1.MaxReagentsProcessable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
var scale = (float) mostToRemove;
|
||||||
|
if (!solutionData.MetabolizeAll)
|
||||||
|
scale /= (float) rate;
|
||||||
|
|
||||||
// loop over all our groups and see which ones apply
|
// if it's possible for them to be dead, and they are,
|
||||||
if (ent.Comp1.MetabolismGroups is null)
|
// then we shouldn't process any effects, but should probably
|
||||||
|
// still remove reagents
|
||||||
|
if (isDead && !proto.WorksOnTheDead)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// TODO: Kill MetabolismGroups!
|
var actualEntity = ent.Comp2?.Body ?? solutionOwner.Value;
|
||||||
foreach (var group in ent.Comp1.MetabolismGroups)
|
|
||||||
|
// do all effects, if conditions apply
|
||||||
|
foreach (var effect in entry.Effects)
|
||||||
{
|
{
|
||||||
if (!proto.Metabolisms.TryGetValue(group.Id, out var entry))
|
if (scale < effect.MinScale)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var rate = entry.MetabolismRate * group.MetabolismRateModifier;
|
if (effect.Probability < 1.0f && !_random.Prob(effect.Probability))
|
||||||
|
|
||||||
// BEGIN DeltaV - fix FixedPoint2 truncation flooring low rateModifiers to zero
|
|
||||||
if (rate == FixedPoint2.Zero && entry.MetabolismRate > FixedPoint2.Zero && group.MetabolismRateModifier > 0f)
|
|
||||||
rate = FixedPoint2.Epsilon;
|
|
||||||
// END DeltaV
|
|
||||||
|
|
||||||
// Remove $rate, as long as there's enough reagent there to actually remove that much
|
|
||||||
mostToRemove = FixedPoint2.Clamp(rate, 0, quantity);
|
|
||||||
|
|
||||||
var scale = (float) mostToRemove;
|
|
||||||
|
|
||||||
// TODO: This is a very stupid workaround to lungs heavily relying on scale = reagent quantity. Needs lung and metabolism refactors to remove.
|
|
||||||
// TODO: Lungs just need to have their scale be equal to the mols consumed, scale needs to be not hardcoded either and configurable per metabolizer...
|
|
||||||
if (group.Id != Gas)
|
|
||||||
scale /= (float) entry.MetabolismRate;
|
|
||||||
|
|
||||||
// if it's possible for them to be dead, and they are,
|
|
||||||
// then we shouldn't process any effects, but should probably
|
|
||||||
// still remove reagents
|
|
||||||
if (isDead && !proto.WorksOnTheDead)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var actualEntity = ent.Comp2?.Body ?? solutionEntityUid.Value;
|
// See if conditions apply
|
||||||
|
if (effect.Conditions != null && !CanMetabolizeEffect(actualEntity, ent, solutionEntity.Value, effect.Conditions))
|
||||||
|
continue;
|
||||||
|
|
||||||
// do all effects, if conditions apply
|
ApplyEffect(effect);
|
||||||
foreach (var effect in entry.Effects)
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: We should have to do this with metabolism. ReagentEffect struct needs refactoring and so does metabolism!
|
||||||
|
void ApplyEffect(EntityEffect effect)
|
||||||
|
{
|
||||||
|
switch (effect)
|
||||||
{
|
{
|
||||||
if (scale < effect.MinScale)
|
case ModifyLungGas:
|
||||||
continue;
|
_entityEffects.ApplyEffect(ent, effect, scale);
|
||||||
|
break;
|
||||||
if (effect.Probability < 1.0f && !_random.Prob(effect.Probability))
|
case AdjustReagent:
|
||||||
continue;
|
_entityEffects.ApplyEffect(solutionEntity.Value, effect, scale);
|
||||||
|
break;
|
||||||
// See if conditions apply
|
default:
|
||||||
if (effect.Conditions != null && !CanMetabolizeEffect(actualEntity, ent, soln.Value, effect.Conditions))
|
_entityEffects.ApplyEffect(actualEntity, effect, scale);
|
||||||
continue;
|
break;
|
||||||
|
|
||||||
ApplyEffect(effect);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: We should have to do this with metabolism. ReagentEffect struct needs refactoring and so does metabolism!
|
|
||||||
void ApplyEffect(EntityEffect effect)
|
|
||||||
{
|
|
||||||
switch (effect)
|
|
||||||
{
|
|
||||||
case ModifyLungGas:
|
|
||||||
_entityEffects.ApplyEffect(ent, effect, scale);
|
|
||||||
break;
|
|
||||||
case AdjustReagent:
|
|
||||||
_entityEffects.ApplyEffect(soln.Value, effect, scale);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
_entityEffects.ApplyEffect(actualEntity, effect, scale);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -249,10 +250,32 @@ public sealed class MetabolizerSystem : SharedMetabolizerSystem
|
||||||
|
|
||||||
// We have processed a reagant, so count it towards the cap
|
// We have processed a reagant, so count it towards the cap
|
||||||
reagents += 1;
|
reagents += 1;
|
||||||
|
|
||||||
|
if (transferSolution is not null && entry.Metabolites is not null)
|
||||||
|
{
|
||||||
|
foreach (var (metabolite, ratio) in entry.Metabolites)
|
||||||
|
{
|
||||||
|
transferSolution.AddReagent(metabolite, mostToRemove * ratio);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_solutionContainerSystem.UpdateChemicals(soln.Value);
|
_solutionContainerSystem.UpdateChemicals(solutionEntity.Value);
|
||||||
|
if (transferSolutionEntity is not null)
|
||||||
|
{
|
||||||
|
_solutionContainerSystem.UpdateChemicals(transferSolutionEntity.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TryMetabolize(Entity<MetabolizerComponent, OrganComponent?, SolutionContainerManagerComponent?> ent)
|
||||||
|
{
|
||||||
|
_organQuery.Resolve(ent, ref ent.Comp2, logMissing: false);
|
||||||
|
|
||||||
|
foreach (var stage in ent.Comp1.Stages)
|
||||||
|
{
|
||||||
|
TryMetabolizeStage(ent, stage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
|
namespace Content.Shared.Metabolism;
|
||||||
|
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class MetabolizerTypePrototype : IPrototype
|
||||||
|
{
|
||||||
|
[IdDataField]
|
||||||
|
public string ID { get; private set; } = default!;
|
||||||
|
|
||||||
|
[DataField("name", required: true)]
|
||||||
|
private LocId Name { get; set; }
|
||||||
|
|
||||||
|
[ViewVariables(VVAccess.ReadOnly)]
|
||||||
|
public string LocalizedName => Loc.GetString(Name);
|
||||||
|
}
|
||||||
|
|
@ -220,7 +220,7 @@ public sealed partial class IngestionSystem
|
||||||
if (reagent.Metabolisms == null)
|
if (reagent.Metabolisms == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach (var entry in reagent.Metabolisms.Values)
|
foreach (var entry in reagent.Metabolisms.Metabolisms.Values)
|
||||||
{
|
{
|
||||||
foreach (var effect in entry.Effects)
|
foreach (var effect in entry.Effects)
|
||||||
{
|
{
|
||||||
|
|
@ -271,7 +271,7 @@ public sealed partial class IngestionSystem
|
||||||
if (reagent.Metabolisms == null)
|
if (reagent.Metabolisms == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach (var entry in reagent.Metabolisms.Values)
|
foreach (var entry in reagent.Metabolisms.Metabolisms.Values)
|
||||||
{
|
{
|
||||||
foreach (var effect in entry.Effects)
|
foreach (var effect in entry.Effects)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -374,13 +374,16 @@ public sealed partial class IngestionSystem : EntitySystem
|
||||||
_reaction.DoEntityReaction(entity, split, ReactionMethod.Ingestion);
|
_reaction.DoEntityReaction(entity, split, ReactionMethod.Ingestion);
|
||||||
|
|
||||||
// Everything is good to go item has been successfuly eaten
|
// Everything is good to go item has been successfuly eaten
|
||||||
var afterEv = new IngestedEvent(args.User, entity, split, forceFed);
|
var afterEv = new IngestedEvent(args.User, entity, split, forceFed, beforeEv.Transfer >= beforeEv.Max);
|
||||||
RaiseLocalEvent(food, ref afterEv);
|
RaiseLocalEvent(food, ref afterEv);
|
||||||
|
|
||||||
_stomach.TryTransferSolution(stomachToUse.Value.Owner, split, stomachToUse);
|
_stomach.TryTransferSolution(stomachToUse.Value.Owner, split, stomachToUse);
|
||||||
|
|
||||||
if (!afterEv.Destroy)
|
if (!afterEv.Destroy)
|
||||||
{
|
{
|
||||||
|
if (beforeEv.Transfer >= beforeEv.Max)
|
||||||
|
return;
|
||||||
|
|
||||||
args.Repeat = afterEv.Repeat;
|
args.Repeat = afterEv.Repeat;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -460,7 +463,7 @@ public sealed partial class IngestionSystem : EntitySystem
|
||||||
{
|
{
|
||||||
var targetName = Identity.Entity(args.Target, EntityManager);
|
var targetName = Identity.Entity(args.Target, EntityManager);
|
||||||
var userName = Identity.Entity(args.User, EntityManager);
|
var userName = Identity.Entity(args.User, EntityManager);
|
||||||
_popup.PopupEntity(Loc.GetString("edible-force-feed-success", ("user", userName), ("verb", edible.Verb), ("flavors", flavors)), entity, entity);
|
_popup.PopupEntity(Loc.GetString("edible-force-feed-success", ("user", userName), ("verb", edible.Verb), ("flavors", flavors), ("satiated", args.Satiated)), entity, entity);
|
||||||
|
|
||||||
_popup.PopupClient(Loc.GetString("edible-force-feed-success-user", ("target", targetName), ("verb", edible.Verb)), args.User, args.User);
|
_popup.PopupClient(Loc.GetString("edible-force-feed-success-user", ("target", targetName), ("verb", edible.Verb)), args.User, args.User);
|
||||||
|
|
||||||
|
|
@ -470,7 +473,7 @@ public sealed partial class IngestionSystem : EntitySystem
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_popup.PopupPredicted(Loc.GetString(edible.Message, ("food", entity.Owner), ("flavors", flavors)),
|
_popup.PopupPredicted(Loc.GetString(edible.Message, ("food", entity.Owner), ("flavors", flavors), ("satiated", args.Satiated)),
|
||||||
Loc.GetString(edible.OtherMessage),
|
Loc.GetString(edible.OtherMessage),
|
||||||
args.User,
|
args.User,
|
||||||
args.User);
|
args.User);
|
||||||
|
|
|
||||||
|
|
@ -150,8 +150,9 @@ public record struct IngestingEvent(EntityUid Food, Solution Split, bool ForceFe
|
||||||
/// <param name="Target">Who is doing the eating?</param>
|
/// <param name="Target">Who is doing the eating?</param>
|
||||||
/// <param name="Split">The solution we're currently eating.</param>
|
/// <param name="Split">The solution we're currently eating.</param>
|
||||||
/// <param name="ForceFed">Whether we're being fed by someone else, checkec enough I might as well pass it.</param>
|
/// <param name="ForceFed">Whether we're being fed by someone else, checkec enough I might as well pass it.</param>
|
||||||
|
/// <param name="Satiated">Whether the entity will stop eating after this.</param>
|
||||||
[ByRefEvent]
|
[ByRefEvent]
|
||||||
public record struct IngestedEvent(EntityUid User, EntityUid Target, Solution Split, bool ForceFed)
|
public record struct IngestedEvent(EntityUid User, EntityUid Target, Solution Split, bool ForceFed, bool Satiated)
|
||||||
{
|
{
|
||||||
// Should we destroy the ingested entity?
|
// Should we destroy the ingested entity?
|
||||||
public bool Destroy;
|
public bool Destroy;
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@ guidebook-reagent-sources-header = Sources
|
||||||
guidebook-reagent-sources-ent-wrapper = [bold]{$name}[/bold] \[1\]
|
guidebook-reagent-sources-ent-wrapper = [bold]{$name}[/bold] \[1\]
|
||||||
guidebook-reagent-sources-gas-wrapper = [bold]{$name} (gas)[/bold] \[1\]
|
guidebook-reagent-sources-gas-wrapper = [bold]{$name} (gas)[/bold] \[1\]
|
||||||
guidebook-reagent-effects-header = Effects
|
guidebook-reagent-effects-header = Effects
|
||||||
guidebook-reagent-effects-metabolism-group-rate = [bold]{$group}[/bold] [color=gray]({$rate} units per second)[/color]
|
guidebook-reagent-effects-metabolism-stage-rate = [bold]{$stage}[/bold] [color=gray]({$rate} units per second)[/color]
|
||||||
|
guidebook-reagent-effects-metabolite-item = {$reagent} at a rate of { NATURALPERCENT($rate, 2) }
|
||||||
|
guidebook-reagent-effects-metabolites = Metabolizes into { $items }.
|
||||||
guidebook-reagent-plant-metabolisms-header = Plant Metabolism
|
guidebook-reagent-plant-metabolisms-header = Plant Metabolism
|
||||||
guidebook-reagent-plant-metabolisms-rate = [bold]Plant Metabolism[/bold] [color=gray](1 unit every 3 seconds as base)[/color]
|
guidebook-reagent-plant-metabolisms-rate = [bold]Plant Metabolism[/bold] [color=gray](1 unit every 3 seconds as base)[/color]
|
||||||
guidebook-reagent-physical-description = [italic]Seems to be {$description}.[/italic]
|
guidebook-reagent-physical-description = [italic]Seems to be {$description}.[/italic]
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
metabolism-group-poison = Poison
|
|
||||||
metabolism-group-medicine = Medicine
|
|
||||||
metabolism-group-narcotic = Narcotic
|
|
||||||
metabolism-group-alcohol = Alcohol
|
|
||||||
metabolism-group-food = Food
|
|
||||||
metabolism-group-drink = Drink
|
|
||||||
metabolism-group-gas = Gas
|
|
||||||
metabolism-group-plant-metabolisms = Plant Metabolism
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
metabolism-stage-respiration = Respiration
|
||||||
|
metabolism-stage-digestion = Digestion
|
||||||
|
metabolism-stage-bloodstream = Bloodstream
|
||||||
|
metabolism-stage-metabolites = Metabolites
|
||||||
|
|
||||||
|
metabolism-stage-plant = Plant Metabolism
|
||||||
|
|
@ -25,11 +25,16 @@ ingestion-verb-drink = Drink
|
||||||
|
|
||||||
# Edible Component
|
# Edible Component
|
||||||
|
|
||||||
edible-nom = Nom. {$flavors}
|
-edible-satiated = { $satiated ->
|
||||||
|
[true] {" "}You don't feel like you could { $verb } any more.
|
||||||
|
*[false] {""}
|
||||||
|
}
|
||||||
|
|
||||||
|
edible-nom = Nom. {$flavors}{ -edible-satiated(satiated: $satiated, verb: "eat") }
|
||||||
edible-nom-other = Nom.
|
edible-nom-other = Nom.
|
||||||
edible-slurp = Slurp. {$flavors}
|
edible-slurp = Slurp. {$flavors}{ -edible-satiated(satiated: $satiated, verb: "drink") }
|
||||||
edible-slurp-other = Slurp.
|
edible-slurp-other = Slurp.
|
||||||
edible-swallow = You swallow { THE($food) }
|
edible-swallow = You swallow { THE($food) }.{ -edible-satiated(satiated: $satiated, verb: "swallow") }
|
||||||
edible-gulp = Gulp. {$flavors}
|
edible-gulp = Gulp. {$flavors}
|
||||||
edible-gulp-other = Gulp.
|
edible-gulp-other = Gulp.
|
||||||
|
|
||||||
|
|
@ -52,5 +57,5 @@ edible-verb-pill = swallow
|
||||||
## Force feeding
|
## Force feeding
|
||||||
|
|
||||||
edible-force-feed = {CAPITALIZE(THE($user))} is trying to make you {$verb} something!
|
edible-force-feed = {CAPITALIZE(THE($user))} is trying to make you {$verb} something!
|
||||||
edible-force-feed-success = {CAPITALIZE(THE($user))} forced you to {$verb} something! {$flavors}
|
edible-force-feed-success = {CAPITALIZE(THE($user))} forced you to {$verb} something! {$flavors}{ -edible-satiated(satiated: $satiated, verb: $verb) }
|
||||||
edible-force-feed-success-user = You successfully feed {THE($target)}
|
edible-force-feed-success-user = You successfully feed {THE($target)}
|
||||||
|
|
|
||||||
|
|
@ -278,14 +278,7 @@
|
||||||
components:
|
components:
|
||||||
- type: Metabolizer
|
- type: Metabolizer
|
||||||
maxReagents: 6
|
maxReagents: 6
|
||||||
removeEmpty: true
|
stages: [ Digestion, Bloodstream, Metabolites ]
|
||||||
groups:
|
|
||||||
- id: Food
|
|
||||||
- id: Drink
|
|
||||||
- id: Medicine
|
|
||||||
- id: Poison
|
|
||||||
- id: Narcotic
|
|
||||||
- id: Alcohol
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: OrganDionaBrain
|
parent: OrganDionaBrain
|
||||||
|
|
|
||||||
|
|
@ -262,15 +262,7 @@
|
||||||
- type: Metabolizer
|
- type: Metabolizer
|
||||||
maxReagents: 6
|
maxReagents: 6
|
||||||
metabolizerTypes: [ Slime ]
|
metabolizerTypes: [ Slime ]
|
||||||
removeEmpty: true
|
stages: [ Digestion, Bloodstream, Metabolites ]
|
||||||
groups:
|
|
||||||
- id: Food
|
|
||||||
- id: Drink
|
|
||||||
- id: Medicine
|
|
||||||
- id: Poison
|
|
||||||
- id: Narcotic
|
|
||||||
- id: Alcohol
|
|
||||||
rateModifier: 2.5
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: [ OrganBaseLungs, OrganSlimePersonInternal, OrganSlimePersonMetabolizer ]
|
parent: [ OrganBaseLungs, OrganSlimePersonInternal, OrganSlimePersonMetabolizer ]
|
||||||
|
|
|
||||||
|
|
@ -332,12 +332,7 @@
|
||||||
category: Lungs
|
category: Lungs
|
||||||
- type: Lung
|
- type: Lung
|
||||||
- type: Metabolizer
|
- type: Metabolizer
|
||||||
removeEmpty: true
|
stages: [ Respiration ]
|
||||||
solutionOnBody: false
|
|
||||||
solution: "Lung"
|
|
||||||
groups:
|
|
||||||
- id: Gas
|
|
||||||
rateModifier: 100.0
|
|
||||||
- type: SolutionContainerManager
|
- type: SolutionContainerManager
|
||||||
solutions:
|
solutions:
|
||||||
Lung:
|
Lung:
|
||||||
|
|
@ -364,10 +359,7 @@
|
||||||
- state: heart-on
|
- state: heart-on
|
||||||
- type: Metabolizer
|
- type: Metabolizer
|
||||||
maxReagents: 2
|
maxReagents: 2
|
||||||
groups:
|
stages: [ Bloodstream ]
|
||||||
- id: Medicine
|
|
||||||
- id: Poison
|
|
||||||
- id: Narcotic
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: OrganBase
|
parent: OrganBase
|
||||||
|
|
@ -385,9 +377,7 @@
|
||||||
maxVol: 50
|
maxVol: 50
|
||||||
- type: Metabolizer
|
- type: Metabolizer
|
||||||
maxReagents: 3
|
maxReagents: 3
|
||||||
groups:
|
stages: [ Digestion ]
|
||||||
- id: Food
|
|
||||||
- id: Drink
|
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
layers:
|
layers:
|
||||||
- state: stomach
|
- state: stomach
|
||||||
|
|
@ -410,8 +400,7 @@
|
||||||
heldPrefix: liver
|
heldPrefix: liver
|
||||||
- type: Metabolizer
|
- type: Metabolizer
|
||||||
maxReagents: 1
|
maxReagents: 1
|
||||||
groups:
|
stages: [ Metabolites ]
|
||||||
- id: Alcohol
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: OrganBase
|
parent: OrganBase
|
||||||
|
|
@ -430,7 +419,6 @@
|
||||||
heldPrefix: kidneys
|
heldPrefix: kidneys
|
||||||
- type: Metabolizer
|
- type: Metabolizer
|
||||||
maxReagents: 5
|
maxReagents: 5
|
||||||
removeEmpty: true
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: OrganSpriteHumanInternal
|
id: OrganSpriteHumanInternal
|
||||||
|
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
# Default human metabolism groups.
|
|
||||||
- type: metabolismGroup
|
|
||||||
id: Poison
|
|
||||||
name: metabolism-group-poison
|
|
||||||
|
|
||||||
- type: metabolismGroup
|
|
||||||
id: Medicine
|
|
||||||
name: metabolism-group-medicine
|
|
||||||
|
|
||||||
- type: metabolismGroup
|
|
||||||
id: Narcotic
|
|
||||||
name: metabolism-group-narcotic
|
|
||||||
|
|
||||||
- type: metabolismGroup
|
|
||||||
id: Alcohol
|
|
||||||
name: metabolism-group-alcohol
|
|
||||||
|
|
||||||
- type: metabolismGroup
|
|
||||||
id: Food
|
|
||||||
name: metabolism-group-food
|
|
||||||
|
|
||||||
- type: metabolismGroup
|
|
||||||
id: Drink
|
|
||||||
name: metabolism-group-drink
|
|
||||||
|
|
||||||
# Used for gases that have effects on being inhaled
|
|
||||||
- type: metabolismGroup
|
|
||||||
id: Gas
|
|
||||||
name: metabolism-group-gas
|
|
||||||
|
|
||||||
# Dummy for the guide
|
|
||||||
- type: metabolismGroup
|
|
||||||
id: PlantMetabolisms
|
|
||||||
name: metabolism-group-plant-metabolisms
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Animal metabolism stages
|
||||||
|
|
||||||
|
- type: metabolismStage
|
||||||
|
id: Respiration
|
||||||
|
name: metabolism-stage-respiration
|
||||||
|
|
||||||
|
- type: metabolismStage
|
||||||
|
id: Digestion
|
||||||
|
name: metabolism-stage-digestion
|
||||||
|
|
||||||
|
- type: metabolismStage
|
||||||
|
id: Bloodstream
|
||||||
|
name: metabolism-stage-bloodstream
|
||||||
|
|
||||||
|
- type: metabolismStage
|
||||||
|
id: Metabolites
|
||||||
|
name: metabolism-stage-metabolites
|
||||||
|
|
||||||
|
# Dummy for the guide
|
||||||
|
|
||||||
|
- type: metabolismStage
|
||||||
|
id: PlantMetabolisms
|
||||||
|
name: metabolism-stage-plant
|
||||||
|
|
@ -90,9 +90,7 @@
|
||||||
solutionOnBody: false
|
solutionOnBody: false
|
||||||
updateInterval: 0.25
|
updateInterval: 0.25
|
||||||
metabolizerTypes: [ Dragon ]
|
metabolizerTypes: [ Dragon ]
|
||||||
groups:
|
stages: [ Digestion, Bloodstream ]
|
||||||
- id: Medicine
|
|
||||||
- id: Poison
|
|
||||||
- type: Butcherable
|
- type: Butcherable
|
||||||
spawned:
|
spawned:
|
||||||
- id: MaterialBananium1
|
- id: MaterialBananium1
|
||||||
|
|
|
||||||
|
|
@ -115,9 +115,7 @@
|
||||||
solutionOnBody: false
|
solutionOnBody: false
|
||||||
updateInterval: 0.25
|
updateInterval: 0.25
|
||||||
metabolizerTypes: [ Dragon ]
|
metabolizerTypes: [ Dragon ]
|
||||||
groups:
|
stages: [ Digestion, Bloodstream ]
|
||||||
- id: Medicine
|
|
||||||
- id: Poison
|
|
||||||
- type: Butcherable
|
- type: Butcherable
|
||||||
spawned:
|
spawned:
|
||||||
- id: FoodMeatDragon
|
- id: FoodMeatDragon
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -5,7 +5,7 @@
|
||||||
slipData:
|
slipData:
|
||||||
requiredSlipSpeed: 3.5
|
requiredSlipSpeed: 3.5
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 3
|
factor: 3
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
parent: BaseDrink
|
parent: BaseDrink
|
||||||
abstract: true
|
abstract: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
|
|
@ -49,13 +49,12 @@
|
||||||
requiredSlipSpeed: 3.5
|
requiredSlipSpeed: 3.5
|
||||||
friction: 0.4
|
friction: 0.4
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Ethanol: 0.12
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Ethanol
|
|
||||||
amount: 0.06
|
|
||||||
reactiveEffects:
|
reactiveEffects:
|
||||||
Flammable:
|
Flammable:
|
||||||
methods: [ Touch ]
|
methods: [ Touch ]
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,9 @@
|
||||||
color: "#664300"
|
color: "#664300"
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Theobromine: 0.1
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
|
|
@ -16,9 +18,6 @@
|
||||||
effectProto: StatusEffectDrowsiness
|
effectProto: StatusEffectDrowsiness
|
||||||
time: 2
|
time: 2
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Theobromine
|
|
||||||
amount: 0.05
|
|
||||||
metamorphicSprite:
|
metamorphicSprite:
|
||||||
sprite: Objects/Consumable/Drinks/coffeeglass.rsi
|
sprite: Objects/Consumable/Drinks/coffeeglass.rsi
|
||||||
state: icon_empty
|
state: icon_empty
|
||||||
|
|
@ -36,13 +35,9 @@
|
||||||
color: "#664300"
|
color: "#664300"
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:SatiateThirst
|
Theobromine: 0.1
|
||||||
factor: 2
|
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Theobromine
|
|
||||||
amount: 0.05
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: Cream
|
id: Cream
|
||||||
|
|
@ -53,7 +48,7 @@
|
||||||
flavor: creamy
|
flavor: creamy
|
||||||
color: "#DFD7AF"
|
color: "#DFD7AF"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 1
|
factor: 1
|
||||||
|
|
@ -67,7 +62,7 @@
|
||||||
flavor: nutty
|
flavor: nutty
|
||||||
color: "#f4eadb"
|
color: "#f4eadb"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 4 # Coconut water is 94% water
|
factor: 4 # Coconut water is 94% water
|
||||||
|
|
@ -81,7 +76,7 @@
|
||||||
flavor: creamy
|
flavor: creamy
|
||||||
color: "#FFEABF"
|
color: "#FFEABF"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
|
|
@ -101,7 +96,7 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
|
|
@ -157,13 +152,12 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Theobromine: 0.1
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Theobromine
|
|
||||||
amount: 0.05
|
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectDrowsiness
|
effectProto: StatusEffectDrowsiness
|
||||||
time: 2
|
time: 2
|
||||||
|
|
@ -199,13 +193,10 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:SatiateThirst
|
Theobromine: 0.1
|
||||||
factor: 2
|
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Theobromine
|
|
||||||
amount: 0.05
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: JuiceBerryPoison
|
id: JuiceBerryPoison
|
||||||
|
|
@ -217,11 +208,9 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#6600CC"
|
color: "#6600CC"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
Poison:
|
|
||||||
effects:
|
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
|
|
@ -243,7 +232,7 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
|
|
@ -263,7 +252,7 @@
|
||||||
- !type:PlantAdjustWater
|
- !type:PlantAdjustWater
|
||||||
amount: 0.9
|
amount: 0.9
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 4
|
factor: 4
|
||||||
|
|
@ -284,7 +273,7 @@
|
||||||
color: "#DEDACD"
|
color: "#DEDACD"
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 4
|
factor: 4
|
||||||
|
|
@ -307,7 +296,7 @@
|
||||||
flavor: terrible
|
flavor: terrible
|
||||||
color: "#faffba"
|
color: "#faffba"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: -2
|
factor: -2
|
||||||
|
|
@ -319,7 +308,7 @@
|
||||||
group: Drinks
|
group: Drinks
|
||||||
physicalDesc: reagent-physical-desc-nothing
|
physicalDesc: reagent-physical-desc-nothing
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
|
|
@ -341,7 +330,7 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 6
|
factor: 6
|
||||||
|
|
@ -349,8 +338,6 @@
|
||||||
effectProto: StatusEffectDrowsiness
|
effectProto: StatusEffectDrowsiness
|
||||||
time: 3
|
time: 3
|
||||||
type: Remove
|
type: Remove
|
||||||
Poison:
|
|
||||||
effects:
|
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
|
|
@ -382,7 +369,7 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
|
|
@ -401,13 +388,9 @@
|
||||||
color: "#8a5a3a"
|
color: "#8a5a3a"
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:SatiateThirst
|
Theobromine: 0.1
|
||||||
factor: 2
|
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Theobromine
|
|
||||||
amount: 0.05
|
|
||||||
metamorphicSprite:
|
metamorphicSprite:
|
||||||
sprite: Objects/Consumable/Drinks/teaglass.rsi
|
sprite: Objects/Consumable/Drinks/teaglass.rsi
|
||||||
state: icon_empty
|
state: icon_empty
|
||||||
|
|
@ -446,11 +429,11 @@
|
||||||
meltingPoint: 0.0
|
meltingPoint: 0.0
|
||||||
friction: 0.4
|
friction: 0.4
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 4
|
factor: 4
|
||||||
Gas:
|
Respiration:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
ignoreResistances: true
|
ignoreResistances: true
|
||||||
|
|
@ -515,7 +498,7 @@
|
||||||
boilingPoint: 100.0
|
boilingPoint: 100.0
|
||||||
friction: 0.05 # Copied from Ice Crust
|
friction: 0.05 # Copied from Ice Crust
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 3 # Slightly worse for quenching thirst than just straight water
|
factor: 3 # Slightly worse for quenching thirst than just straight water
|
||||||
|
|
@ -538,7 +521,7 @@
|
||||||
flavor: cheapnoodles
|
flavor: cheapnoodles
|
||||||
color: "#664300"
|
color: "#664300"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
factor: 1
|
factor: 1
|
||||||
|
|
@ -552,7 +535,7 @@
|
||||||
flavor: cheapnoodles
|
flavor: cheapnoodles
|
||||||
color: "#664300"
|
color: "#664300"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
factor: 4
|
factor: 4
|
||||||
|
|
@ -572,13 +555,12 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Theobromine: 0.1
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 4
|
factor: 4
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Theobromine
|
|
||||||
amount: 0.05
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: Pilk
|
id: Pilk
|
||||||
|
|
@ -597,7 +579,7 @@
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
# End DeltaV additions
|
# End DeltaV additions
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 3 # DeltaV: Factor changed from 1 to 3
|
factor: 3 # DeltaV: Factor changed from 1 to 3
|
||||||
|
|
@ -661,7 +643,7 @@
|
||||||
flavor: mopwata
|
flavor: mopwata
|
||||||
color: "#59502b"
|
color: "#59502b"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 0.6
|
factor: 0.6
|
||||||
|
|
|
||||||
|
|
@ -53,16 +53,10 @@
|
||||||
flavor: carrot
|
flavor: carrot
|
||||||
color: "#FF8820"
|
color: "#FF8820"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:SatiateThirst
|
Oculine: 1
|
||||||
factor: 2
|
Nutriment: 1
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Oculine
|
|
||||||
amount: 0.5
|
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Nutriment
|
|
||||||
amount: 0.5
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: JuiceGrape
|
id: JuiceGrape
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 4
|
factor: 4
|
||||||
|
|
@ -76,7 +76,9 @@
|
||||||
flavor: energydrink
|
flavor: energydrink
|
||||||
color: "#ffffbf"
|
color: "#ffffbf"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Theobromine: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
|
|
@ -84,9 +86,6 @@
|
||||||
effectProto: StatusEffectDrowsiness
|
effectProto: StatusEffectDrowsiness
|
||||||
time: 2
|
time: 2
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Theobromine
|
|
||||||
amount: 0.1
|
|
||||||
fizziness: 0.4
|
fizziness: 0.4
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
|
|
@ -204,7 +203,7 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 4
|
factor: 4
|
||||||
|
|
@ -263,15 +262,12 @@
|
||||||
metamorphicFillBaseName: fill-
|
metamorphicFillBaseName: fill-
|
||||||
metamorphicChangeColor: false
|
metamorphicChangeColor: false
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Theobromine: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 2
|
factor: 2
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Theobromine
|
|
||||||
amount: 0.1
|
|
||||||
Poison:
|
|
||||||
effects:
|
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
- !type:MetabolizerTypeCondition
|
- !type:MetabolizerTypeCondition
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@
|
||||||
color: saddlebrown
|
color: saddlebrown
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
factor: 0.5
|
factor: 0.5
|
||||||
|
|
@ -159,7 +159,7 @@
|
||||||
- !type:PlantAdjustHealth
|
- !type:PlantAdjustHealth
|
||||||
amount: -2
|
amount: -2
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
# eating salt on its own kinda sucks, kids
|
# eating salt on its own kinda sucks, kids
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
|
|
@ -183,7 +183,7 @@
|
||||||
tileReactions:
|
tileReactions:
|
||||||
- !type:SpillTileReaction
|
- !type:SpillTileReaction
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
# 12 diona blood for 1 unit of syrup, this stuff better be worthwhile.
|
# 12 diona blood for 1 unit of syrup, this stuff better be worthwhile.
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
flavor: nutriment
|
flavor: nutriment
|
||||||
color: "#24591F"
|
color: "#24591F"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Metabolites:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
plantMetabolism:
|
plantMetabolism:
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
flavor: vitamin
|
flavor: vitamin
|
||||||
color: "#D3D3D3"
|
color: "#D3D3D3"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food: #This makes it not compete with medicines, a large bonus for something that can heal
|
Metabolites: #This makes it not compete with medicines, a large bonus for something that can heal
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
probability: 0.5
|
probability: 0.5
|
||||||
|
|
@ -56,7 +56,7 @@
|
||||||
flavor: protein
|
flavor: protein
|
||||||
color: "#FFFFE5"
|
color: "#FFFFE5"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Metabolites:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
probability: 0.5
|
probability: 0.5
|
||||||
|
|
@ -78,7 +78,7 @@
|
||||||
color: white
|
color: white
|
||||||
meltingPoint: 146.0
|
meltingPoint: 146.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Metabolites:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
conditions:
|
conditions:
|
||||||
|
|
|
||||||
|
|
@ -8,16 +8,13 @@
|
||||||
color: white
|
color: white
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Sugar: 0.4
|
||||||
|
Nutriment: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Sugar
|
|
||||||
amount: 0.4
|
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: -0.2 #its flour
|
factor: -0.2 #its flour
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Nutriment
|
|
||||||
amount: 0.1
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: Cornmeal
|
id: Cornmeal
|
||||||
|
|
@ -28,13 +25,12 @@
|
||||||
flavor: corn #so corn doesnt taste chalky
|
flavor: corn #so corn doesnt taste chalky
|
||||||
color: tan
|
color: tan
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Nutriment: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: -0.2 #its cornflour
|
factor: -0.2 #its cornflour
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Nutriment
|
|
||||||
amount: 0.1
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: Oats
|
id: Oats
|
||||||
|
|
@ -45,14 +41,10 @@
|
||||||
flavor: oats
|
flavor: oats
|
||||||
color: tan
|
color: tan
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:AdjustReagent
|
Sugar: 0.4
|
||||||
reagent: Sugar
|
Nutriment: 0.6
|
||||||
amount: 0.2
|
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Nutriment
|
|
||||||
amount: 0.3
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: Enzyme
|
id: Enzyme
|
||||||
|
|
@ -73,11 +65,9 @@
|
||||||
color: white
|
color: white
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:AdjustReagent
|
UncookedAnimalProteins: 1
|
||||||
reagent: UncookedAnimalProteins
|
|
||||||
amount: 0.5
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: EggCooked
|
id: EggCooked
|
||||||
|
|
@ -89,11 +79,9 @@
|
||||||
color: white
|
color: white
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:AdjustReagent
|
Protein: 2
|
||||||
reagent: Protein
|
|
||||||
amount: 1
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: Blackpepper
|
id: Blackpepper
|
||||||
|
|
@ -105,7 +93,7 @@
|
||||||
color: black
|
color: black
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote
|
- !type:Emote
|
||||||
emote: Cough
|
emote: Cough
|
||||||
|
|
@ -134,14 +122,11 @@
|
||||||
color: tan
|
color: tan
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Water: 0.8
|
||||||
|
Vitamin: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Water
|
|
||||||
amount: 0.4
|
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Vitamin
|
|
||||||
amount: 0.1
|
|
||||||
- !type:Vomit
|
- !type:Vomit
|
||||||
probability: 0.1
|
probability: 0.1
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -159,14 +144,10 @@
|
||||||
color: white
|
color: white
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:AdjustReagent
|
Sugar: 0.8
|
||||||
reagent: Sugar
|
Nutriment: 0.2
|
||||||
amount: 0.4
|
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Nutriment
|
|
||||||
amount: 0.1
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: OilOlive
|
id: OilOlive
|
||||||
|
|
@ -181,11 +162,9 @@
|
||||||
boilingPoint: 299.0 #Nyano - Summary: Add boiling point for fryer.
|
boilingPoint: 299.0 #Nyano - Summary: Add boiling point for fryer.
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:AdjustReagent
|
Nutriment: 1.5
|
||||||
reagent: Nutriment
|
|
||||||
amount: 0.75
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: Oil
|
id: Oil
|
||||||
|
|
@ -215,27 +194,24 @@
|
||||||
meltingPoint: 146
|
meltingPoint: 146
|
||||||
boilingPoint: 410 # Really high boiling point compared to its melting
|
boilingPoint: 410 # Really high boiling point compared to its melting
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Nutriment: 1.5
|
||||||
effects:
|
effects:
|
||||||
- !type:AdjustReagent
|
- !type:AdjustTemperature
|
||||||
reagent: Nutriment #Oils enhance nutrition
|
amount: 250 # thermal energy, not temp
|
||||||
amount: 0.75
|
- !type:HealthChange
|
||||||
Poison:
|
conditions:
|
||||||
effects:
|
- !type:ReagentCondition
|
||||||
- !type:AdjustTemperature
|
reagent: CapsaicinOil
|
||||||
amount: 250 # thermal energy, not temp
|
min: 5
|
||||||
- !type:HealthChange
|
damage:
|
||||||
conditions:
|
types:
|
||||||
- !type:ReagentCondition
|
Caustic: 1
|
||||||
reagent: CapsaicinOil
|
- !type:PopupMessage
|
||||||
min: 5
|
type: Local
|
||||||
damage:
|
messages: [ "capsaicin-effect-light-burn" ]
|
||||||
types:
|
probability: 0.2
|
||||||
Caustic: 1
|
|
||||||
- !type:PopupMessage
|
|
||||||
type: Local
|
|
||||||
messages: [ "capsaicin-effect-light-burn" ]
|
|
||||||
probability: 0.2
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: CocoaPowder #Candy and chocolate
|
id: CocoaPowder #Candy and chocolate
|
||||||
|
|
@ -247,7 +223,7 @@
|
||||||
color: "#800000"
|
color: "#800000"
|
||||||
meltingPoint: 146.0
|
meltingPoint: 146.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -278,11 +254,9 @@
|
||||||
boilingPoint: 100.0
|
boilingPoint: 100.0
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:AdjustReagent
|
Nutriment: 1.5
|
||||||
reagent: Nutriment
|
|
||||||
amount: 0.75
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: TeaPowder
|
id: TeaPowder
|
||||||
|
|
@ -293,13 +267,12 @@
|
||||||
color: "#7F8400"
|
color: "#7F8400"
|
||||||
group: Foods
|
group: Foods
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Nutriment: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: -0.2
|
factor: -0.2
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Nutriment
|
|
||||||
amount: 0.1
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: FrostOil
|
id: FrostOil
|
||||||
|
|
@ -310,12 +283,9 @@
|
||||||
flavor: cold
|
flavor: cold
|
||||||
color: skyblue
|
color: skyblue
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
metabolites:
|
||||||
- !type:AdjustReagent
|
Nutriment: 1.5
|
||||||
reagent: Nutriment #Oils enhance nutrition
|
|
||||||
amount: 0.75
|
|
||||||
Poison:
|
|
||||||
effects:
|
effects:
|
||||||
- !type:AdjustTemperature
|
- !type:AdjustTemperature
|
||||||
amount: -250 # thermal energy, not temp
|
amount: -250 # thermal energy, not temp
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,9 @@
|
||||||
standsout: true
|
standsout: true
|
||||||
physicalDesc: reagent-physical-desc-ferrous
|
physicalDesc: reagent-physical-desc-ferrous
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
UncookedAnimalProteins: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 1.0
|
factor: 1.0
|
||||||
|
|
@ -23,13 +25,6 @@
|
||||||
- !type:MetabolizerTypeCondition
|
- !type:MetabolizerTypeCondition
|
||||||
type: [ Human ]
|
type: [ Human ]
|
||||||
inverted: true
|
inverted: true
|
||||||
Food:
|
|
||||||
effects:
|
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: UncookedAnimalProteins
|
|
||||||
amount: 0.1
|
|
||||||
Medicine:
|
|
||||||
effects:
|
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
- !type:MetabolizerTypeCondition
|
- !type:MetabolizerTypeCondition
|
||||||
|
|
@ -71,7 +66,7 @@
|
||||||
tileReactions:
|
tileReactions:
|
||||||
- !type:SpillTileReaction
|
- !type:SpillTileReaction
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
# Delicious!
|
# Delicious!
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
|
|
@ -103,7 +98,7 @@
|
||||||
tileReactions:
|
tileReactions:
|
||||||
- !type:SpillTileReaction
|
- !type:SpillTileReaction
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
# Sweet!
|
# Sweet!
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
|
|
@ -146,12 +141,12 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#2b0700"
|
color: "#2b0700"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
# Disgusting!
|
# Disgusting!
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: -0.5
|
factor: -0.5
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -170,7 +165,7 @@
|
||||||
color: "#f4692e"
|
color: "#f4692e"
|
||||||
recognizable: true
|
recognizable: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 1.5
|
factor: 1.5
|
||||||
|
|
@ -222,13 +217,12 @@
|
||||||
requiredSlipSpeed: 4.0 #It's not as slippery as water
|
requiredSlipSpeed: 4.0 #It's not as slippery as water
|
||||||
friction: 0.4
|
friction: 0.4
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
|
metabolites:
|
||||||
|
Nutriment: 0.1
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 0.5
|
factor: 0.5
|
||||||
- !type:AdjustReagent
|
|
||||||
reagent: Nutriment
|
|
||||||
amount: 0.1
|
|
||||||
footstepSound:
|
footstepSound:
|
||||||
collection: FootstepBlood
|
collection: FootstepBlood
|
||||||
params:
|
params:
|
||||||
|
|
@ -243,12 +237,10 @@
|
||||||
flavor: mindful
|
flavor: mindful
|
||||||
color: "#C584B8"
|
color: "#C584B8"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
factor: 1.5
|
factor: 1.5
|
||||||
Poison:
|
|
||||||
effects:
|
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
- !type:PlantAdjustNutrition
|
- !type:PlantAdjustNutrition
|
||||||
amount: 2
|
amount: 2
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
probability: 0.3
|
probability: 0.3
|
||||||
amount: 0.4
|
amount: 0.4
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
- !type:PlantAdjustPests
|
- !type:PlantAdjustPests
|
||||||
amount: -6
|
amount: -6
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -90,7 +90,7 @@
|
||||||
- !type:PlantAdjustMutationMod
|
- !type:PlantAdjustMutationMod
|
||||||
amount: 0.1
|
amount: 0.1
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -122,7 +122,7 @@
|
||||||
amount: 1
|
amount: 1
|
||||||
- !type:RobustHarvest {}
|
- !type:RobustHarvest {}
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -146,8 +146,6 @@
|
||||||
Asphyxiation: 1
|
Asphyxiation: 1
|
||||||
Heat: 2
|
Heat: 2
|
||||||
Poison: 1
|
Poison: 1
|
||||||
Medicine:
|
|
||||||
effects:
|
|
||||||
- !type:Polymorph
|
- !type:Polymorph
|
||||||
prototype: TreeMorph
|
prototype: TreeMorph
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -187,7 +185,7 @@
|
||||||
- !type:PlantAdjustWeeds
|
- !type:PlantAdjustWeeds
|
||||||
amount: -6
|
amount: -6
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -213,13 +211,13 @@
|
||||||
- !type:PlantAdjustHealth
|
- !type:PlantAdjustHealth
|
||||||
amount: 0.5
|
amount: 0.5
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Caustic: 1
|
Caustic: 1
|
||||||
Gas:
|
Respiration:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -309,7 +307,7 @@
|
||||||
amount: 1
|
amount: 1
|
||||||
- !type:PlantDiethylamine {}
|
- !type:PlantDiethylamine {}
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
boilingPoint: 55.5
|
boilingPoint: 55.5
|
||||||
meltingPoint: -50.0
|
meltingPoint: -50.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
boilingPoint: 4200.0
|
boilingPoint: 4200.0
|
||||||
meltingPoint: 3550.0
|
meltingPoint: 3550.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
physicalDesc: reagent-physical-desc-alkaline
|
physicalDesc: reagent-physical-desc-alkaline
|
||||||
color: "#e5420b"
|
color: "#e5420b"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -84,7 +84,7 @@
|
||||||
- Epistemics # DeltaV
|
- Epistemics # DeltaV
|
||||||
color: "#776291"
|
color: "#776291"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -123,7 +123,7 @@
|
||||||
boilingPoint: 353.2
|
boilingPoint: 353.2
|
||||||
meltingPoint: 278.7
|
meltingPoint: 278.7
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -148,14 +148,12 @@
|
||||||
boilingPoint: 1661.0
|
boilingPoint: 1661.0
|
||||||
meltingPoint: 596.0
|
meltingPoint: 596.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Heat: 1.5
|
Heat: 1.5
|
||||||
Medicine:
|
|
||||||
effects:
|
|
||||||
- !type:Vomit
|
- !type:Vomit
|
||||||
conditions:
|
conditions:
|
||||||
- !type:ReagentCondition
|
- !type:ReagentCondition
|
||||||
|
|
@ -181,7 +179,7 @@
|
||||||
physicalDesc: reagent-physical-desc-grainy
|
physicalDesc: reagent-physical-desc-grainy
|
||||||
color: "#F0F0F0"
|
color: "#F0F0F0"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: -5 # This is basically industrial dessicant
|
factor: -5 # This is basically industrial dessicant
|
||||||
|
|
@ -209,7 +207,7 @@
|
||||||
physicalDesc: reagent-physical-desc-refreshing
|
physicalDesc: reagent-physical-desc-refreshing
|
||||||
color: "#bf1365"
|
color: "#bf1365"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
boilingPoint: 111.0
|
boilingPoint: 111.0
|
||||||
meltingPoint: -5.0
|
meltingPoint: -5.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
requiredSlipSpeed: 3.5
|
requiredSlipSpeed: 3.5
|
||||||
friction: 0.3 # Slightly less friction than water, but not as bad as space lube
|
friction: 0.3 # Slightly less friction than water, but not as bad as space lube
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:Vomit
|
- !type:Vomit
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -68,8 +68,6 @@
|
||||||
reagent: SoapReagent
|
reagent: SoapReagent
|
||||||
min: 6
|
min: 6
|
||||||
probability: 0.20
|
probability: 0.20
|
||||||
Drink:
|
|
||||||
effects:
|
|
||||||
- !type:Vomit
|
- !type:Vomit
|
||||||
conditions:
|
conditions:
|
||||||
- !type:ReagentCondition
|
- !type:ReagentCondition
|
||||||
|
|
@ -115,13 +113,13 @@
|
||||||
- !type:ModifyBleed
|
- !type:ModifyBleed
|
||||||
amount: -1.5
|
amount: -1.5
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
time: 5
|
time: 5
|
||||||
type: Add
|
type: Add
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
key: Muted
|
key: Muted
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
- !type:PlantAdjustHealth
|
- !type:PlantAdjustHealth
|
||||||
amount: -1
|
amount: -1
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -58,7 +58,7 @@
|
||||||
boilingPoint: 2595.0
|
boilingPoint: 2595.0
|
||||||
meltingPoint: 1083.0
|
meltingPoint: 1083.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.1
|
metabolismRate: 0.1
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -69,8 +69,6 @@
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Poison: 0.1
|
Poison: 0.1
|
||||||
Medicine:
|
|
||||||
effects:
|
|
||||||
- !type:ModifyBloodLevel
|
- !type:ModifyBloodLevel
|
||||||
conditions:
|
conditions:
|
||||||
- !type:MetabolizerTypeCondition
|
- !type:MetabolizerTypeCondition
|
||||||
|
|
@ -97,7 +95,7 @@
|
||||||
- !type:PlantAdjustHealth
|
- !type:PlantAdjustHealth
|
||||||
amount: -2
|
amount: -2
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -148,7 +146,7 @@
|
||||||
boilingPoint: 2862.0
|
boilingPoint: 2862.0
|
||||||
meltingPoint: 1538.0
|
meltingPoint: 1538.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.1
|
metabolismRate: 0.1
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -158,8 +156,6 @@
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Poison: 0.1
|
Poison: 0.1
|
||||||
Medicine:
|
|
||||||
effects:
|
|
||||||
- !type:ModifyBloodLevel
|
- !type:ModifyBloodLevel
|
||||||
conditions:
|
conditions:
|
||||||
- !type:MetabolizerTypeCondition
|
- !type:MetabolizerTypeCondition
|
||||||
|
|
@ -178,7 +174,7 @@
|
||||||
meltingPoint: 180.5
|
meltingPoint: 180.5
|
||||||
boilingPoint: 1330.0
|
boilingPoint: 1330.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.1
|
metabolismRate: 0.1
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -205,7 +201,7 @@
|
||||||
meltingPoint: -38.83
|
meltingPoint: -38.83
|
||||||
boilingPoint: 356.73
|
boilingPoint: 356.73
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -267,7 +263,7 @@
|
||||||
boilingPoint: 3265.0
|
boilingPoint: 3265.0
|
||||||
meltingPoint: 1414.0
|
meltingPoint: 1414.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -296,7 +292,7 @@
|
||||||
boilingPoint: 445.0
|
boilingPoint: 445.0
|
||||||
meltingPoint: 120.0
|
meltingPoint: 120.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -335,7 +331,7 @@
|
||||||
probability: 0.2
|
probability: 0.2
|
||||||
amount: 0.1
|
amount: 0.1
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
maxOnTileWhitelist:
|
maxOnTileWhitelist:
|
||||||
tags: [ Carpet ]
|
tags: [ Carpet ]
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:PopupMessage
|
- !type:PopupMessage
|
||||||
type: Local
|
type: Local
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
flavor: fiber
|
flavor: fiber
|
||||||
color: "#808080"
|
color: "#808080"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
- !type:CleanTileReaction # Bees are extremely obsessive about cleanliness within what they consider their hive.
|
- !type:CleanTileReaction # Bees are extremely obsessive about cleanliness within what they consider their hive.
|
||||||
cleanCost: 0 # Consume absolutely zero bees. Buzz buzz.
|
cleanCost: 0 # Consume absolutely zero bees. Buzz buzz.
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:PopupMessage
|
- !type:PopupMessage
|
||||||
type: Local
|
type: Local
|
||||||
|
|
@ -163,7 +163,7 @@
|
||||||
flavor: shocking
|
flavor: shocking
|
||||||
color: "#FDD023"
|
color: "#FDD023"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 3.00 # DeltaV - licoxide is cheaper now, so adjust it accordingly
|
metabolismRate: 3.00 # DeltaV - licoxide is cheaper now, so adjust it accordingly
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote # DeltaV - licoxide makes you scream now
|
- !type:Emote # DeltaV - licoxide makes you scream now
|
||||||
|
|
@ -199,7 +199,7 @@
|
||||||
emote: Scream
|
emote: Scream
|
||||||
probability: 0.7
|
probability: 0.7
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate : 3.00
|
metabolismRate : 3.00
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -254,7 +254,7 @@
|
||||||
effects:
|
effects:
|
||||||
- !type:Extinguish # cold
|
- !type:Extinguish # cold
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate : 0.45
|
metabolismRate : 0.45
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -320,7 +320,7 @@
|
||||||
slipData:
|
slipData:
|
||||||
requiredSlipSpeed: 3.5 #clown juice gotta slip
|
requiredSlipSpeed: 3.5 #clown juice gotta slip
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote
|
- !type:Emote
|
||||||
emote: Laugh
|
emote: Laugh
|
||||||
|
|
@ -341,7 +341,7 @@
|
||||||
flavor: weh
|
flavor: weh
|
||||||
color: "#59b23a"
|
color: "#59b23a"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.25
|
metabolismRate: 0.25
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote
|
- !type:Emote
|
||||||
|
|
@ -376,7 +376,7 @@
|
||||||
flavor: hew
|
flavor: hew
|
||||||
color: "#a64dc5"
|
color: "#a64dc5"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.25
|
metabolismRate: 0.25
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote
|
- !type:Emote
|
||||||
|
|
@ -411,7 +411,7 @@
|
||||||
flavor: cannedtuna
|
flavor: cannedtuna
|
||||||
color: "#d8bed8"
|
color: "#d8bed8"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.2
|
metabolismRate: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -462,7 +462,7 @@
|
||||||
flavor: dogfood
|
flavor: dogfood
|
||||||
color: "#b87333"
|
color: "#b87333"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.2
|
metabolismRate: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
boilingPoint: -183.0
|
boilingPoint: -183.0
|
||||||
meltingPoint: -218.4
|
meltingPoint: -218.4
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:Oxygenate
|
- !type:Oxygenate
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -51,7 +51,7 @@
|
||||||
type: [ Vox ]
|
type: [ Vox ]
|
||||||
clear: true
|
clear: true
|
||||||
time: 5
|
time: 5
|
||||||
Gas:
|
Respiration:
|
||||||
effects:
|
effects:
|
||||||
- !type:Oxygenate
|
- !type:Oxygenate
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -106,7 +106,7 @@
|
||||||
- !type:FlammableTileReaction
|
- !type:FlammableTileReaction
|
||||||
temperatureMultiplier: 1.5
|
temperatureMultiplier: 1.5
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -115,7 +115,7 @@
|
||||||
- !type:AdjustReagent
|
- !type:AdjustReagent
|
||||||
reagent: Inaprovaline
|
reagent: Inaprovaline
|
||||||
amount: -2.0
|
amount: -2.0
|
||||||
Gas:
|
Respiration:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
ignoreResistances: true
|
ignoreResistances: true
|
||||||
|
|
@ -159,13 +159,13 @@
|
||||||
- !type:Flammable
|
- !type:Flammable
|
||||||
multiplier: 0.8
|
multiplier: 0.8
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Radiation: 1.5
|
Radiation: 1.5
|
||||||
Gas:
|
Respiration:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
ignoreResistances: true
|
ignoreResistances: true
|
||||||
|
|
@ -193,7 +193,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#66ff33"
|
color: "#66ff33"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:Oxygenate
|
- !type:Oxygenate
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -220,7 +220,7 @@
|
||||||
- !type:MetabolizerTypeCondition
|
- !type:MetabolizerTypeCondition
|
||||||
type: [ Harpy ]
|
type: [ Harpy ]
|
||||||
factor: -12
|
factor: -12
|
||||||
Gas:
|
Respiration:
|
||||||
effects:
|
effects:
|
||||||
- !type:Oxygenate
|
- !type:Oxygenate
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -264,13 +264,13 @@
|
||||||
boilingPoint: -195.8
|
boilingPoint: -195.8
|
||||||
meltingPoint: -210.0
|
meltingPoint: -210.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Cold: 0.5 # liquid nitrogen is cold
|
Cold: 0.5 # liquid nitrogen is cold
|
||||||
Gas:
|
Respiration:
|
||||||
effects:
|
effects:
|
||||||
- !type:Oxygenate
|
- !type:Oxygenate
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -302,13 +302,13 @@
|
||||||
boilingPoint: -88
|
boilingPoint: -88
|
||||||
meltingPoint: -90
|
meltingPoint: -90
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Poison: 1
|
Poison: 1
|
||||||
Gas:
|
Respiration:
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote
|
- !type:Emote
|
||||||
minScale: 0.2
|
minScale: 0.2
|
||||||
|
|
@ -394,7 +394,7 @@
|
||||||
boilingPoint: -195.8
|
boilingPoint: -195.8
|
||||||
meltingPoint: -210.0
|
meltingPoint: -210.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
ignoreResistances: true
|
ignoreResistances: true
|
||||||
|
|
@ -419,7 +419,7 @@
|
||||||
probability: 0.1
|
probability: 0.1
|
||||||
conditions:
|
conditions:
|
||||||
minScale: 2
|
minScale: 2
|
||||||
Gas:
|
Respiration:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
minScale: 0.5
|
minScale: 0.5
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#081a80"
|
color: "#081a80"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectScrambled
|
effectProto: StatusEffectScrambled
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#3a1d8a"
|
color: "#3a1d8a"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -81,7 +81,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#64ffe6"
|
color: "#64ffe6"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:AdjustReagent
|
- !type:AdjustReagent
|
||||||
reagent: Histamine
|
reagent: Histamine
|
||||||
|
|
@ -107,7 +107,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#2d5708"
|
color: "#2d5708"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectDrunk
|
effectProto: StatusEffectDrunk
|
||||||
|
|
@ -127,7 +127,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#bd5902"
|
color: "#bd5902"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -145,7 +145,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#ffaa00"
|
color: "#ffaa00"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:EvenHealthChange
|
- !type:EvenHealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -187,7 +187,7 @@
|
||||||
amount: 5
|
amount: 5
|
||||||
- !type:PlantCryoxadone {}
|
- !type:PlantCryoxadone {}
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:EvenHealthChange
|
- !type:EvenHealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -211,7 +211,7 @@
|
||||||
color: "#32cd32"
|
color: "#32cd32"
|
||||||
worksOnTheDead: true # DeltaV - let doxa heal the dead
|
worksOnTheDead: true # DeltaV - let doxa heal the dead
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -230,7 +230,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#215263"
|
color: "#215263"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -264,7 +264,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#0041a8"
|
color: "#0041a8"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -291,7 +291,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#4da0bd"
|
color: "#4da0bd"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -325,7 +325,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#d2fffa"
|
color: "#d2fffa"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:AdjustReagent
|
- !type:AdjustReagent
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -397,7 +397,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#4cb580"
|
color: "#4cb580"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -430,7 +430,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#422912"
|
color: "#422912"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:Vomit
|
- !type:Vomit
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -448,7 +448,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#731024"
|
color: "#731024"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
metabolismRate: 0.1 # Smaller doses stabilize critical people for longer. Gives it a specific usecase as to not be entirely outclassed by dex+
|
metabolismRate: 0.1 # Smaller doses stabilize critical people for longer. Gives it a specific usecase as to not be entirely outclassed by dex+
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -471,7 +471,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#bf3d19"
|
color: "#bf3d19"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -506,7 +506,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#ff7db5"
|
color: "#ff7db5"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -540,7 +540,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#ff867d"
|
color: "#ff867d"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
probability: 0.3
|
probability: 0.3
|
||||||
|
|
@ -591,7 +591,7 @@
|
||||||
- !type:PlantPhalanximine
|
- !type:PlantPhalanximine
|
||||||
minScale: 4
|
minScale: 4
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
metabolismRate: 0.1
|
metabolismRate: 0.1
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -626,7 +626,7 @@
|
||||||
flavor: violets
|
flavor: violets
|
||||||
color: "#9423FF"
|
color: "#9423FF"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -654,7 +654,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#86caf7"
|
color: "#86caf7"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:CureZombieInfection
|
- !type:CureZombieInfection
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -671,7 +671,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#1274b5"
|
color: "#1274b5"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:CureZombieInfection
|
- !type:CureZombieInfection
|
||||||
innoculate: true
|
innoculate: true
|
||||||
|
|
@ -689,7 +689,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#FFE774"
|
color: "#FFE774"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyBleed
|
- !type:ModifyBleed
|
||||||
amount: -0.5
|
amount: -0.5
|
||||||
|
|
@ -703,7 +703,7 @@
|
||||||
flavor: salty
|
flavor: salty
|
||||||
color: "#0064C8"
|
color: "#0064C8"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
conditions: # DeltaV nerf of saline for Feroxi
|
conditions: # DeltaV nerf of saline for Feroxi
|
||||||
|
|
@ -728,7 +728,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#f4dab8"
|
color: "#f4dab8"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -747,7 +747,7 @@
|
||||||
- !type:PlantAdjustToxins
|
- !type:PlantAdjustToxins
|
||||||
amount: -5
|
amount: -5
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -770,7 +770,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#d49a2f"
|
color: "#d49a2f"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -797,7 +797,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#ba7d7d"
|
color: "#ba7d7d"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
# Medium-large quantities can hurt you instead,
|
# Medium-large quantities can hurt you instead,
|
||||||
# but still technically stop your bleeding.
|
# but still technically stop your bleeding.
|
||||||
|
|
@ -821,7 +821,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#00e5ff"
|
color: "#00e5ff"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -847,7 +847,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#2690b5"
|
color: "#2690b5"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
# what the hell, this isn't satiating at all!!
|
# what the hell, this isn't satiating at all!!
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
|
|
@ -863,7 +863,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#fcf7f9"
|
color: "#fcf7f9"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:EvenHealthChange
|
- !type:EvenHealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -894,7 +894,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#520e30"
|
color: "#520e30"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:EvenHealthChange
|
- !type:EvenHealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -952,7 +952,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#404040"
|
color: "#404040"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:EyeDamage
|
- !type:EyeDamage
|
||||||
|
|
||||||
|
|
@ -965,7 +965,7 @@
|
||||||
flavor: magical
|
flavor: magical
|
||||||
color: "#b50ee8"
|
color: "#b50ee8"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:MakeSentient
|
- !type:MakeSentient
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -982,7 +982,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#d5d5e4"
|
color: "#d5d5e4"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:Jitter
|
- !type:Jitter
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
|
|
@ -1012,7 +1012,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#b0abaa"
|
color: "#b0abaa"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectDrowsiness
|
effectProto: StatusEffectDrowsiness
|
||||||
|
|
@ -1038,7 +1038,7 @@
|
||||||
flavor: sweet
|
flavor: sweet
|
||||||
color: "#e0a5b9"
|
color: "#e0a5b9"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
metabolismRate: 0.25
|
metabolismRate: 0.25
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -1098,7 +1098,7 @@
|
||||||
flavor: syrupy
|
flavor: syrupy
|
||||||
color: "#283332"
|
color: "#283332"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
metabolismRate: 0.25
|
metabolismRate: 0.25
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -1124,7 +1124,7 @@
|
||||||
flavor: fizzy
|
flavor: fizzy
|
||||||
color: "#b9bf93"
|
color: "#b9bf93"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
metabolismRate: 0.25
|
metabolismRate: 0.25
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -1150,7 +1150,7 @@
|
||||||
flavor: sour
|
flavor: sour
|
||||||
color: "#ff3636"
|
color: "#ff3636"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
metabolismRate: 0.25
|
metabolismRate: 0.25
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -1178,7 +1178,7 @@
|
||||||
flavor: holy
|
flavor: holy
|
||||||
color: "#91C3F7"
|
color: "#91C3F7"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 3
|
factor: 3
|
||||||
|
|
@ -1228,7 +1228,7 @@
|
||||||
flavor: syrupy
|
flavor: syrupy
|
||||||
color: "#aa4308"
|
color: "#aa4308"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
metabolismRate: 0.1 # slow metabolism to not be a godly combat med, its for treating burn victims efficiently
|
metabolismRate: 0.1 # slow metabolism to not be a godly combat med, its for treating burn victims efficiently
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -1268,7 +1268,7 @@
|
||||||
flavor: metallic
|
flavor: metallic
|
||||||
color: "#8147ff"
|
color: "#8147ff"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
metabolismRate: 0.25
|
metabolismRate: 0.25
|
||||||
effects:
|
effects:
|
||||||
# heals shocks and removes shock chems
|
# heals shocks and removes shock chems
|
||||||
|
|
@ -1316,7 +1316,7 @@
|
||||||
color: "#b5e36d"
|
color: "#b5e36d"
|
||||||
worksOnTheDead: true
|
worksOnTheDead: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ReduceRotting
|
- !type:ReduceRotting
|
||||||
seconds: 30 # DeltaV - buff opporozidone
|
seconds: 30 # DeltaV - buff opporozidone
|
||||||
|
|
@ -1337,7 +1337,7 @@
|
||||||
color: "#0cbfe9"
|
color: "#0cbfe9"
|
||||||
worksOnTheDead: true
|
worksOnTheDead: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:EvenHealthChange
|
- !type:EvenHealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -1374,7 +1374,7 @@
|
||||||
amount: 5
|
amount: 5
|
||||||
- !type:PlantCryoxadone {}
|
- !type:PlantCryoxadone {}
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:EvenHealthChange
|
- !type:EvenHealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -1401,7 +1401,7 @@
|
||||||
color: "#89f77f"
|
color: "#89f77f"
|
||||||
worksOnTheDead: true
|
worksOnTheDead: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:EvenHealthChange
|
- !type:EvenHealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -1419,7 +1419,7 @@
|
||||||
flavor: sweet
|
flavor: sweet
|
||||||
color: "#A0A0A0"
|
color: "#A0A0A0"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:PopupMessage
|
- !type:PopupMessage
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -1440,7 +1440,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#07E79E"
|
color: "#07E79E"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -1484,7 +1484,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#baa15d"
|
color: "#baa15d"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
key: RadiationProtection
|
key: RadiationProtection
|
||||||
|
|
@ -1509,7 +1509,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#27870a"
|
color: "#27870a"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote
|
- !type:Emote
|
||||||
emote: Yawn
|
emote: Yawn
|
||||||
|
|
@ -1563,7 +1563,7 @@
|
||||||
flavor: medicine
|
flavor: medicine
|
||||||
color: "#d0e21b"
|
color: "#d0e21b"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects: # One day this could be useful for treating blood clots, if we get those
|
effects: # One day this could be useful for treating blood clots, if we get those
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectAnticoagulant
|
effectProto: StatusEffectAnticoagulant
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
boilingPoint: 212.0 # Dexosyephedrine vape when?
|
boilingPoint: 212.0 # Dexosyephedrine vape when?
|
||||||
meltingPoint: 170.0
|
meltingPoint: 170.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
# Main effects
|
# Main effects
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -29,8 +29,7 @@
|
||||||
types:
|
types:
|
||||||
Poison: 3 # this is added to the base damage of the meth.
|
Poison: 3 # this is added to the base damage of the meth.
|
||||||
Asphyxiation: 2
|
Asphyxiation: 2
|
||||||
Narcotic:
|
|
||||||
effects:
|
|
||||||
# Main effects
|
# Main effects
|
||||||
- !type:MovementSpeedModifier
|
- !type:MovementSpeedModifier
|
||||||
walkSpeedModifier: 1.20
|
walkSpeedModifier: 1.20
|
||||||
|
|
@ -66,8 +65,7 @@
|
||||||
reagent: Desoxyephedrine
|
reagent: Desoxyephedrine
|
||||||
min: 0.25
|
min: 0.25
|
||||||
- !type:SuppressAddiction
|
- !type:SuppressAddiction
|
||||||
Medicine:
|
|
||||||
effects:
|
|
||||||
# Side effects
|
# Side effects
|
||||||
- !type:ResetNarcolepsy
|
- !type:ResetNarcolepsy
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -86,7 +84,7 @@
|
||||||
boilingPoint: 255.0
|
boilingPoint: 255.0
|
||||||
meltingPoint: 36.0
|
meltingPoint: 36.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
# Main effects
|
# Main effects
|
||||||
- !type:MovementSpeedModifier
|
- !type:MovementSpeedModifier
|
||||||
|
|
@ -125,8 +123,6 @@
|
||||||
effectProto: StatusEffectDrowsiness
|
effectProto: StatusEffectDrowsiness
|
||||||
time: 10
|
time: 10
|
||||||
type: Remove
|
type: Remove
|
||||||
Medicine:
|
|
||||||
effects:
|
|
||||||
# Side effects
|
# Side effects
|
||||||
- !type:ResetNarcolepsy
|
- !type:ResetNarcolepsy
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -146,7 +142,7 @@
|
||||||
boilingPoint: 212.0
|
boilingPoint: 212.0
|
||||||
meltingPoint: 170.0
|
meltingPoint: 170.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
# Main effects
|
# Main effects
|
||||||
- !type:MovementSpeedModifier
|
- !type:MovementSpeedModifier
|
||||||
|
|
@ -197,8 +193,6 @@
|
||||||
min: 1
|
min: 1
|
||||||
reagent: ChloralHydrate
|
reagent: ChloralHydrate
|
||||||
amount: -10
|
amount: -10
|
||||||
Medicine:
|
|
||||||
effects:
|
|
||||||
# Main effects
|
# Main effects
|
||||||
- !type:ModifyBleed
|
- !type:ModifyBleed
|
||||||
amount: -1.5
|
amount: -1.5
|
||||||
|
|
@ -238,7 +232,7 @@
|
||||||
- !type:PlantAdjustHealth
|
- !type:PlantAdjustHealth
|
||||||
amount: -1
|
amount: -1
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
|
|
@ -270,7 +264,7 @@
|
||||||
- !type:PlantAdjustHealth
|
- !type:PlantAdjustHealth
|
||||||
amount: -5
|
amount: -5
|
||||||
metabolisms: # DeltaV - nicotine gives you the smallest amount of cell damage just like real life :D
|
metabolisms: # DeltaV - nicotine gives you the smallest amount of cell damage just like real life :D
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -291,7 +285,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#215263"
|
color: "#215263"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:MovementSpeedModifier
|
- !type:MovementSpeedModifier
|
||||||
walkSpeedModifier: 0.65
|
walkSpeedModifier: 0.65
|
||||||
|
|
@ -325,7 +319,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#63806e"
|
color: "#63806e"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
|
|
@ -355,7 +349,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#ffff00"
|
color: "#ffff00"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
|
|
@ -374,7 +368,7 @@
|
||||||
boilingPoint: 444.0
|
boilingPoint: 444.0
|
||||||
meltingPoint: 128.0
|
meltingPoint: 128.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects: # It would be nice to have speech slurred or mumbly, but accents are a bit iffy atm. Same for distortion effects.
|
effects: # It would be nice to have speech slurred or mumbly, but accents are a bit iffy atm. Same for distortion effects.
|
||||||
- !type:MovementSpeedModifier
|
- !type:MovementSpeedModifier
|
||||||
walkSpeedModifier: 0.65
|
walkSpeedModifier: 0.65
|
||||||
|
|
@ -403,7 +397,7 @@
|
||||||
boilingPoint: 255.0
|
boilingPoint: 255.0
|
||||||
meltingPoint: 36.0
|
meltingPoint: 36.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
key: Muted
|
key: Muted
|
||||||
|
|
@ -423,7 +417,7 @@
|
||||||
boilingPoint: 255.0
|
boilingPoint: 255.0
|
||||||
meltingPoint: 36.0
|
meltingPoint: 36.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:PopupMessage
|
- !type:PopupMessage
|
||||||
type: Local
|
type: Local
|
||||||
|
|
@ -471,7 +465,7 @@
|
||||||
boilingPoint: 255.0
|
boilingPoint: 255.0
|
||||||
meltingPoint: 36.0
|
meltingPoint: 36.0
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:PopupMessage
|
- !type:PopupMessage
|
||||||
type: Local
|
type: Local
|
||||||
|
|
@ -528,7 +522,7 @@
|
||||||
flavor: paintthinner
|
flavor: paintthinner
|
||||||
color: "#EE35FF"
|
color: "#EE35FF"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Narcotic:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote
|
- !type:Emote
|
||||||
emote: Laugh
|
emote: Laugh
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
- !type:FlammableTileReaction
|
- !type:FlammableTileReaction
|
||||||
temperatureMultiplier: 2
|
temperatureMultiplier: 2
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
- !type:Flammable
|
- !type:Flammable
|
||||||
multiplier: 0.4
|
multiplier: 0.4
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -76,7 +76,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#D4872A"
|
color: "#D4872A"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -108,7 +108,7 @@
|
||||||
tileReactions:
|
tileReactions:
|
||||||
- !type:PryTileReaction
|
- !type:PryTileReaction
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -165,7 +165,7 @@
|
||||||
tileReactions:
|
tileReactions:
|
||||||
- !type:FlammableTileReaction {}
|
- !type:FlammableTileReaction {}
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: 1
|
factor: 1
|
||||||
|
|
@ -178,8 +178,6 @@
|
||||||
- !type:MetabolizerTypeCondition
|
- !type:MetabolizerTypeCondition
|
||||||
type: [Fuel]
|
type: [Fuel]
|
||||||
# End DeltaV
|
# End DeltaV
|
||||||
Poison:
|
|
||||||
effects:
|
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
- !type:MetabolizerTypeCondition
|
- !type:MetabolizerTypeCondition
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
- !type:PlantAdjustHealth
|
- !type:PlantAdjustHealth
|
||||||
amount: -5
|
amount: -5
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
- !type:PlantAdjustHealth
|
- !type:PlantAdjustHealth
|
||||||
amount: -5
|
amount: -5
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
allowedJobs:
|
allowedJobs:
|
||||||
- Zookeeper # DeltaV - Keep Zookeeper/Boxer
|
- Zookeeper # DeltaV - Keep Zookeeper/Boxer
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.25 # DeltaV: chloral hydrate should last longer for surgery
|
metabolismRate: 0.25 # DeltaV: chloral hydrate should last longer for surgery
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote
|
- !type:Emote
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
color: "#acc91a"
|
color: "#acc91a"
|
||||||
physicalDesc: reagent-physical-desc-putrid
|
physicalDesc: reagent-physical-desc-putrid
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -126,7 +126,7 @@
|
||||||
recognizable: true
|
recognizable: true
|
||||||
physicalDesc: reagent-physical-desc-fuzzy
|
physicalDesc: reagent-physical-desc-fuzzy
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -164,7 +164,7 @@
|
||||||
emote: Scream
|
emote: Scream
|
||||||
probability: 0.3
|
probability: 0.3
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate : 3.00 # High damage, high metabolism rate. You need a lot of units to crit. Simulates acid burning through you fast.
|
metabolismRate : 3.00 # High damage, high metabolism rate. You need a lot of units to crit. Simulates acid burning through you fast.
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -189,7 +189,7 @@
|
||||||
color: "#48b3b8"
|
color: "#48b3b8"
|
||||||
physicalDesc: reagent-physical-desc-ferrous
|
physicalDesc: reagent-physical-desc-ferrous
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Drink:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateThirst
|
- !type:SatiateThirst
|
||||||
factor: -1.5
|
factor: -1.5
|
||||||
|
|
@ -224,7 +224,7 @@
|
||||||
emote: Scream
|
emote: Scream
|
||||||
probability: 0.2
|
probability: 0.2
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 3.00 # High damage, high metabolism rate. You need a lot of units to crit. Simulates acid burning through you fast.
|
metabolismRate: 3.00 # High damage, high metabolism rate. You need a lot of units to crit. Simulates acid burning through you fast.
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -273,7 +273,7 @@
|
||||||
emote: Scream
|
emote: Scream
|
||||||
probability: 0.1
|
probability: 0.1
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 3.00 # Okay damage, high metabolism rate. You need a lot of units to crit. Simulates acid burning through you fast.
|
metabolismRate: 3.00 # Okay damage, high metabolism rate. You need a lot of units to crit. Simulates acid burning through you fast.
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -300,13 +300,13 @@
|
||||||
- Botanist
|
- Botanist
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#00ff5f"
|
color: "#00ff5f"
|
||||||
boilingPoint: 340282300000000000000000000000000000000 # Ethidium bromide, which doesn't boil.
|
boilingPoint: 340282300 # Ethidium bromide, which doesn't boil.
|
||||||
meltingPoint: 261.0
|
meltingPoint: 261.0
|
||||||
plantMetabolism:
|
plantMetabolism:
|
||||||
- !type:PlantAdjustMutationLevel
|
- !type:PlantAdjustMutationLevel
|
||||||
amount: 1
|
amount: 1
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -322,7 +322,7 @@
|
||||||
contrabandSeverity: Major
|
contrabandSeverity: Major
|
||||||
color: "#5f959c"
|
color: "#5f959c"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -341,7 +341,7 @@
|
||||||
contrabandSeverity: Syndicate
|
contrabandSeverity: Syndicate
|
||||||
color: "#6b0007"
|
color: "#6b0007"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -360,7 +360,7 @@
|
||||||
- !type:PlantAdjustToxins
|
- !type:PlantAdjustToxins
|
||||||
amount: 10
|
amount: 10
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
|
|
@ -387,7 +387,7 @@
|
||||||
physicalDesc: reagent-physical-desc-abrasive
|
physicalDesc: reagent-physical-desc-abrasive
|
||||||
color: "#FA6464"
|
color: "#FA6464"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
probability: 0.1
|
probability: 0.1
|
||||||
|
|
@ -430,7 +430,7 @@
|
||||||
meltingPoint: 351
|
meltingPoint: 351
|
||||||
boilingPoint: 554 # I'm not a chemist, but it boils at 295, lower than melting point, idk how it works so I gave it higher value
|
boilingPoint: 554 # I'm not a chemist, but it boils at 295, lower than melting point, idk how it works so I gave it higher value
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.04 # DeltaV - Slowed to allow coffee/etc to build up theobromine
|
metabolismRate: 0.04 # DeltaV - Slowed to allow coffee/etc to build up theobromine
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -458,7 +458,7 @@
|
||||||
contrabandSeverity: Major
|
contrabandSeverity: Major
|
||||||
color: "#D6CE7B"
|
color: "#D6CE7B"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.2
|
metabolismRate: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -475,7 +475,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#000000"
|
color: "#000000"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
|
|
@ -493,7 +493,7 @@
|
||||||
color: "#7e916e"
|
color: "#7e916e"
|
||||||
worksOnTheDead: true
|
worksOnTheDead: true
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Medicine:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:CauseZombieInfection
|
- !type:CauseZombieInfection
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -510,7 +510,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#FFFFE5"
|
color: "#FFFFE5"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:PopupMessage
|
- !type:PopupMessage
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -564,7 +564,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#F2E9D2"
|
color: "#F2E9D2"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Digestion:
|
||||||
metabolismRate: 0.05
|
metabolismRate: 0.05
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -591,7 +591,7 @@
|
||||||
- Zookeeper # DeltaV - Keep Zookeeper/Boxer
|
- Zookeeper # DeltaV - Keep Zookeeper/Boxer
|
||||||
color: "#AAAAAA"
|
color: "#AAAAAA"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
key: Pacified
|
key: Pacified
|
||||||
|
|
@ -607,7 +607,7 @@
|
||||||
flavor: bitter
|
flavor: bitter
|
||||||
color: "#F2E9D2"
|
color: "#F2E9D2"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.05
|
metabolismRate: 0.05
|
||||||
effects:
|
effects:
|
||||||
- !type:Emote
|
- !type:Emote
|
||||||
|
|
@ -637,7 +637,7 @@
|
||||||
contrabandSeverity: Major
|
contrabandSeverity: Major
|
||||||
color: "#5C6274"
|
color: "#5C6274"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.03 # Effectively once every 30 seconds.
|
metabolismRate: 0.03 # Effectively once every 30 seconds.
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -654,7 +654,7 @@
|
||||||
contrabandSeverity: Major
|
contrabandSeverity: Major
|
||||||
color: "#EBFF8E"
|
color: "#EBFF8E"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.2
|
metabolismRate: 0.2
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -677,7 +677,7 @@
|
||||||
- !type:PlantAdjustToxins
|
- !type:PlantAdjustToxins
|
||||||
amount: 10
|
amount: 10
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:Jitter
|
- !type:Jitter
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -702,8 +702,8 @@
|
||||||
flavor: shocking
|
flavor: shocking
|
||||||
color: "#FDD023"
|
color: "#FDD023"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate : 2.0
|
metabolismRate: 2.0
|
||||||
effects:
|
effects:
|
||||||
- !type:Electrocute
|
- !type:Electrocute
|
||||||
electrocuteTime: 1
|
electrocuteTime: 1
|
||||||
|
|
@ -720,7 +720,7 @@
|
||||||
flavor: mothballs #why does weightloss juice taste like mothballs
|
flavor: mothballs #why does weightloss juice taste like mothballs
|
||||||
color: "#F0FFF0"
|
color: "#F0FFF0"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
|
|
@ -743,7 +743,7 @@
|
||||||
color: "#00b408"
|
color: "#00b408"
|
||||||
physicalDesc: reagent-physical-desc-nondescript
|
physicalDesc: reagent-physical-desc-nondescript
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
metabolismRate: 0.2 # Slower metabolism so it can build up over time for slowdown
|
metabolismRate: 0.2 # Slower metabolism so it can build up over time for slowdown
|
||||||
effects:
|
effects:
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
|
|
@ -783,7 +783,7 @@
|
||||||
flavor: trashy
|
flavor: trashy
|
||||||
physicalDesc: reagent-physical-desc-nondescript
|
physicalDesc: reagent-physical-desc-nondescript
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Food:
|
Digestion:
|
||||||
effects:
|
effects:
|
||||||
- !type:SatiateHunger
|
- !type:SatiateHunger
|
||||||
factor: 1
|
factor: 1
|
||||||
|
|
@ -801,7 +801,7 @@
|
||||||
flavor: sharp
|
flavor: sharp
|
||||||
color: "#96424f"
|
color: "#96424f"
|
||||||
metabolisms:
|
metabolisms:
|
||||||
Poison:
|
Bloodstream:
|
||||||
effects:
|
effects:
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
effectProto: StatusEffectHemorrhage
|
effectProto: StatusEffectHemorrhage
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue