Fix DoAfter attempt event null error (#27280)

* Fix DoAfter attempt event null error

* A
This commit is contained in:
Leon Friedrich
2024-04-25 13:54:25 +12:00
committed by GitHub
parent 161fd6c83c
commit 6d16d6b1c9
3 changed files with 5 additions and 3 deletions

View File

@@ -73,7 +73,7 @@ public sealed partial class DoAfterAttemptEvent<TEvent> : CancellableEntityEvent
public readonly DoAfter DoAfter; public readonly DoAfter DoAfter;
/// <summary> /// <summary>
/// The event that the DoAfter will raise after sucesfully finishing. Given that this event has the data /// The event that the DoAfter will raise after successfully finishing. Given that this event has the data
/// required to perform the interaction, it should also contain the data required to validate/attempt the /// required to perform the interaction, it should also contain the data required to validate/attempt the
/// interaction. /// interaction.
/// </summary> /// </summary>

View File

@@ -104,6 +104,7 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
doAfter.AttemptEvent = _factory.CreateInstance(evType, new object[] { doAfter, args.Event }); doAfter.AttemptEvent = _factory.CreateInstance(evType, new object[] { doAfter, args.Event });
} }
args.Event.DoAfter = doAfter;
if (args.EventTarget != null) if (args.EventTarget != null)
RaiseLocalEvent(args.EventTarget.Value, doAfter.AttemptEvent, args.Broadcast); RaiseLocalEvent(args.EventTarget.Value, doAfter.AttemptEvent, args.Broadcast);
else else

View File

@@ -245,8 +245,9 @@ public abstract partial class SharedDoAfterSystem : EntitySystem
if (args.AttemptFrequency == AttemptFrequency.StartAndEnd && !TryAttemptEvent(doAfter)) if (args.AttemptFrequency == AttemptFrequency.StartAndEnd && !TryAttemptEvent(doAfter))
return false; return false;
if (args.Delay <= TimeSpan.Zero || // TODO DO AFTER
_tag.HasTag(args.User, "InstantDoAfters")) // Why does this tag exist? Just make this a bool on the component?
if (args.Delay <= TimeSpan.Zero || _tag.HasTag(args.User, "InstantDoAfters"))
{ {
RaiseDoAfterEvents(doAfter, comp); RaiseDoAfterEvents(doAfter, comp);
// We don't store instant do-afters. This is just a lazy way of hiding them from client-side visuals. // We don't store instant do-afters. This is just a lazy way of hiding them from client-side visuals.