Fix Being Drunk! (#41002)

* Drunk moment

* push

* fix test fails + a smidge of cleanup

* two smidges of cleanup

* Unpredicted so don't need the workaround

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
This commit is contained in:
Princess Cheeseballs
2025-12-29 11:39:30 -06:00
committed by Vanessa
co-authored by Princess Cheeseballs
parent 6c561b3e9a
commit b2f02e6eed
9 changed files with 47 additions and 47 deletions
@@ -51,7 +51,7 @@ public sealed partial class StatusEffectsSystem : EntitySystem
if (effect.EndEffectTime is null)
continue;
if (!(_timing.CurTime >= effect.EndEffectTime))
if (_timing.CurTime < effect.EndEffectTime)
continue;
if (effect.AppliedTo is null)
@@ -80,14 +80,14 @@ public sealed partial class StatusEffectsSystem : EntitySystem
if (args.Container.ID != StatusEffectContainerComponent.ContainerId)
return;
if (!TryComp<StatusEffectComponent>(args.Entity, out var statusComp))
if (!_effectQuery.TryComp(args.Entity, out var statusComp))
return;
// Make sure AppliedTo is set correctly so events can rely on it
if (statusComp.AppliedTo != ent)
{
statusComp.AppliedTo = ent;
Dirty(args.Entity, statusComp);
DirtyField(args.Entity, statusComp, nameof(StatusEffectComponent.AppliedTo));
}
}
@@ -96,7 +96,7 @@ public sealed partial class StatusEffectsSystem : EntitySystem
if (args.Container.ID != StatusEffectContainerComponent.ContainerId)
return;
if (!TryComp<StatusEffectComponent>(args.Entity, out var statusComp))
if (!_effectQuery.TryComp(args.Entity, out var statusComp))
return;
var ev = new StatusEffectRemovedEvent(ent);
@@ -126,20 +126,17 @@ public sealed partial class StatusEffectsSystem : EntitySystem
/// <returns>Returns true if the effect is applied.</returns>
private bool TryApplyStatusEffect(Entity<StatusEffectComponent> statusEffectEnt)
{
if (!statusEffectEnt.Comp.Applied &&
statusEffectEnt.Comp.AppliedTo != null &&
_timing.CurTime >= statusEffectEnt.Comp.StartEffectTime)
{
var ev = new StatusEffectAppliedEvent(statusEffectEnt.Comp.AppliedTo.Value);
RaiseLocalEvent(statusEffectEnt, ref ev);
if (statusEffectEnt.Comp.Applied ||
statusEffectEnt.Comp.AppliedTo == null ||
_timing.CurTime < statusEffectEnt.Comp.StartEffectTime)
return false;
statusEffectEnt.Comp.Applied = true;
var ev = new StatusEffectAppliedEvent(statusEffectEnt.Comp.AppliedTo.Value);
RaiseLocalEvent(statusEffectEnt, ref ev);
DirtyField(statusEffectEnt, statusEffectEnt.Comp, nameof(StatusEffectComponent.StartEffectTime));
return true;
}
statusEffectEnt.Comp.Applied = true;
return false;
return true;
}
public bool CanAddStatusEffect(EntityUid uid, EntProtoId effectProto)
@@ -206,7 +203,7 @@ public sealed partial class StatusEffectsSystem : EntitySystem
var startTime = delay == null ? TimeSpan.Zero : _timing.CurTime + delay.Value;
SetStatusEffectStartTime(effect.Value, startTime);
TryApplyStatusEffect((effect.Value, effectComp));
TryApplyStatusEffect((statusEffect.Value, effectComp));
return true;
}