Fix Entity Effect Scaling (Hopefully) for good and some other misc fixes (#41163)

* Fix the last of the entity effects bugs

* aaa

* losing it

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
This commit is contained in:
Princess Cheeseballs
2025-11-06 13:34:53 -08:00
committed by GitHub
parent 2b196257c1
commit e5b6e4bf04
21 changed files with 21 additions and 71 deletions

View File

@@ -9,7 +9,7 @@ namespace Content.Shared.EntityConditions.Conditions;
/// Returns true if this solution entity has an amount of reagent in it within a specified minimum and maximum.
/// </summary>
/// <inheritdoc cref="EntityConditionSystem{T, TCondition}"/>
public sealed partial class ReagentThresholdEntityConditionSystem : EntityConditionSystem<SolutionComponent, ReagentCondition>
public sealed partial class ReagentEntityConditionSystem : EntityConditionSystem<SolutionComponent, ReagentCondition>
{
protected override void Condition(Entity<SolutionComponent> entity, ref EntityConditionEvent<ReagentCondition> args)
{

View File

@@ -28,9 +28,6 @@ public abstract partial class BaseSpawnEntityEntityEffect<T> : EntityEffectBase<
[DataField]
public bool Predicted = true;
/// <inheritdoc cref="EntityEffect.Scaling"/>
public override bool Scaling => true;
public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
=> Loc.GetString("entity-effect-guidebook-spawn-entity",
("chance", Probability),

View File

@@ -28,8 +28,6 @@ public sealed partial class AreaReactionEffect : EntityEffectBase<AreaReactionEf
/// </summary>
[DataField(required: true)] public SoundSpecifier Sound = default!;
public override bool Scaling => true;
public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
=> Loc.GetString("entity-effect-guidebook-area-reaction",
("duration", Duration)

View File

@@ -49,8 +49,6 @@ public sealed partial class Emp : EntityEffectBase<Emp>
[DataField]
public TimeSpan Duration = TimeSpan.FromSeconds(15);
public override bool Scaling => true;
public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
=> Loc.GetString("entity-effect-guidebook-emp-reaction-effect", ("chance", Probability));

View File

@@ -50,8 +50,6 @@ public sealed partial class Explosion : EntityEffectBase<Explosion>
[DataField]
public float TileBreakScale = 1f;
public override bool Scaling => true;
public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
=> Loc.GetString("entity-effect-guidebook-explosion", ("chance", Probability));

View File

@@ -76,8 +76,6 @@ public sealed partial class Flash : EntityEffectBase<Flash>
[DataField]
public SoundSpecifier? Sound = new SoundPathSpecifier("/Audio/Weapons/flash.ogg");
public override bool Scaling => true;
public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
=> Loc.GetString("entity-effect-guidebook-flash-reaction-effect", ("chance", Probability));
}

View File

@@ -25,7 +25,7 @@ public abstract partial class EntityEffect
/// If true, then it allows the scale multiplier to go above 1.
/// </summary>
[DataField]
public virtual bool Scaling { get; private set; }
public virtual bool Scaling { get; private set; } = true;
// TODO: This should be an entity condition but guidebook relies on it heavily for formatting...
/// <summary>

View File

@@ -26,35 +26,35 @@ public sealed partial class SharedEntityEffectsSystem : EntitySystem, IEntityEff
private void OnReactive(Entity<ReactiveComponent> entity, ref ReactionEntityEvent args)
{
if (args.Reagent.ReactiveEffects == null || entity.Comp.ReactiveGroups == null)
return;
var scale = args.ReagentQuantity.Quantity.Float();
foreach (var (key, val) in args.Reagent.ReactiveEffects)
if (args.Reagent.ReactiveEffects != null && entity.Comp.ReactiveGroups != null)
{
if (!val.Methods.Contains(args.Method))
continue;
foreach (var (key, val) in args.Reagent.ReactiveEffects)
{
if (!val.Methods.Contains(args.Method))
continue;
if (!entity.Comp.ReactiveGroups.TryGetValue(key, out var group))
continue;
if (!entity.Comp.ReactiveGroups.TryGetValue(key, out var group))
continue;
if (!group.Contains(args.Method))
continue;
if (!group.Contains(args.Method))
continue;
ApplyEffects(entity, val.Effects, scale);
ApplyEffects(entity, val.Effects, scale);
}
}
if (entity.Comp.Reactions == null)
return;
foreach (var entry in entity.Comp.Reactions)
if (entity.Comp.Reactions != null)
{
if (!entry.Methods.Contains(args.Method))
continue;
foreach (var entry in entity.Comp.Reactions)
{
if (!entry.Methods.Contains(args.Method))
continue;
if (entry.Reagents == null || entry.Reagents.Contains(args.Reagent.ID))
ApplyEffects(entity, entry.Effects, scale);
if (entry.Reagents == null || entry.Reagents.Contains(args.Reagent.ID))
ApplyEffects(entity, entry.Effects, scale);
}
}
}

View File

@@ -104,7 +104,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
damage:
groups:
Brute: -0.15
@@ -112,7 +111,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
damage:
groups:
Brute: -0.25
@@ -121,7 +119,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
damage:
groups:
Brute: -1
@@ -130,7 +127,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
damage:
types:
Heat: 1

View File

@@ -79,7 +79,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
damage:
types:
Heat: 0.05 #Same as slime species

View File

@@ -512,7 +512,6 @@
methods: [Touch, Ingestion, Injection]
effects:
- !type:HealthChange
scaling: true
damage:
types:
Caustic: 1

View File

@@ -48,7 +48,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
damage:
types:
Blunt: 0.05
@@ -63,7 +62,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
damage:
types:
Poison: 0.125

View File

@@ -81,7 +81,6 @@
methods: [ Touch ]
effects: # TODO: when magic is around - make a milk transformation to a skeleton monster
- !type:HealthChange
scaling: true
damage:
groups:
Burn: -1 # healing obviously up to discussion

View File

@@ -87,7 +87,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
damage:
types:
Heat: 0.05

View File

@@ -75,7 +75,6 @@
methods: [Touch]
effects:
- !type:HealthChange
scaling: true
damage:
types:
Heat: 0.5

View File

@@ -453,7 +453,6 @@
Gas:
effects:
- !type:HealthChange
scaling: true
ignoreResistances: true
conditions:
- !type:MetabolizerTypeCondition

View File

@@ -258,7 +258,6 @@
- !type:ReagentCondition
reagent: Ammonia
min: 1
scaling: true
ignoreResistances: true
damage:
groups:

View File

@@ -183,7 +183,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
ignoreResistances: false
damage:
types:
@@ -233,7 +232,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
ignoreResistances: false
damage:
types:

View File

@@ -11,13 +11,11 @@
Poison:
effects:
- !type:Oxygenate
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Human, Animal, Rat, Plant ]
# Convert Oxygen into CO2.
- !type:ModifyLungGas
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Vox ]
@@ -29,7 +27,6 @@
conditions:
- !type:MetabolizerTypeCondition
type: [ Vox ]
scaling: true
ignoreResistances: true
damage:
types:
@@ -45,13 +42,11 @@
Gas:
effects:
- !type:Oxygenate
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Human, Animal, Rat, Plant ]
# Convert Oxygen into CO2.
- !type:ModifyLungGas
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Vox ]
@@ -63,7 +58,6 @@
conditions:
- !type:MetabolizerTypeCondition
type: [ Vox ]
scaling: true
ignoreResistances: true
damage:
types:
@@ -103,7 +97,6 @@
Gas:
effects:
- !type:HealthChange
scaling: true
ignoreResistances: true
damage:
types:
@@ -149,7 +142,6 @@
Gas:
effects:
- !type:HealthChange
scaling: true
ignoreResistances: true
damage:
types:
@@ -173,7 +165,6 @@
Poison:
effects:
- !type:Oxygenate
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Plant ]
@@ -182,14 +173,12 @@
- !type:MetabolizerTypeCondition
type: [ Plant, Vox ]
inverted: true
scaling: true
ignoreResistances: true
damage:
types:
Poison:
0.4
- !type:Oxygenate
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Plant ]
@@ -198,7 +187,6 @@
Gas:
effects:
- !type:Oxygenate
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Plant ]
@@ -210,14 +198,12 @@
inverted: true
# Don't want people to get toxin damage from the gas they just
# exhaled, right?
scaling: true
ignoreResistances: true
damage:
types:
Poison:
0.8
- !type:Oxygenate # carbon dioxide displaces oxygen from the bloodstream, causing asphyxiation
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Plant ]
@@ -246,13 +232,11 @@
Gas:
effects:
- !type:Oxygenate
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Vox, Slime ]
# Converts Nitrogen into Ammonia
- !type:ModifyLungGas
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Vox ]
@@ -260,7 +244,6 @@
Ammonia: 1.0
Nitrogen: -1.0
- !type:ModifyLungGas
scaling: true
conditions:
- !type:MetabolizerTypeCondition
type: [ Slime ]
@@ -359,7 +342,6 @@
Narcotic:
effects:
- !type:HealthChange
scaling: true
ignoreResistances: true
damage:
types:
@@ -386,7 +368,6 @@
effects:
- !type:HealthChange
minScale: 1
scaling: true
ignoreResistances: true
damage:
types:

View File

@@ -1176,7 +1176,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
ignoreResistances: false
damage:
types:

View File

@@ -145,7 +145,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
ignoreResistances: false
damage:
types:
@@ -184,7 +183,6 @@
- !type:SatiateThirst
factor: -1.5
- !type:HealthChange
scaling: true
ignoreResistances: true
damage:
types:
@@ -207,7 +205,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
ignoreResistances: false
damage:
types:
@@ -257,7 +254,6 @@
methods: [ Touch ]
effects:
- !type:HealthChange
scaling: true
ignoreResistances: false
damage:
types: