DoAfter and other bugfixes (#14669)

This commit is contained in:
Leon Friedrich
2023-03-15 15:05:53 +13:00
committed by GitHub
parent 5df1d6194f
commit 2f88173730
6 changed files with 29 additions and 8 deletions

View File

@@ -123,7 +123,8 @@ public sealed class ClimbSystem : SharedClimbSystem
BreakOnDamage = true, BreakOnDamage = true,
BreakOnStun = true, BreakOnStun = true,
RaiseOnUser = user == entityToMove, RaiseOnUser = user == entityToMove,
RaiseOnTarget = user != entityToMove RaiseOnTarget = user != entityToMove,
RaiseOnUsed = false,
}; };
_doAfterSystem.DoAfter(args, ev); _doAfterSystem.DoAfter(args, ev);

View File

@@ -496,6 +496,9 @@ namespace Content.Server.Disposal.Unit.EntitySystems
BreakOnTargetMove = true, BreakOnTargetMove = true,
BreakOnUserMove = true, BreakOnUserMove = true,
NeedHand = false, NeedHand = false,
RaiseOnTarget = false,
RaiseOnUser = false,
RaiseOnUsed = true,
}; };
_doAfterSystem.DoAfter(doAfterArgs); _doAfterSystem.DoAfter(doAfterArgs);

View File

@@ -89,7 +89,10 @@ public sealed class MechSystem : SharedMechSystem
var doAfterEventArgs = new DoAfterEventArgs(args.User, component.BatteryRemovalDelay, target: uid, used: args.Target) var doAfterEventArgs = new DoAfterEventArgs(args.User, component.BatteryRemovalDelay, target: uid, used: args.Target)
{ {
BreakOnTargetMove = true, BreakOnTargetMove = true,
BreakOnUserMove = true BreakOnUserMove = true,
RaiseOnTarget = true,
RaiseOnUsed = false,
RaiseOnUser = false,
}; };
_doAfter.DoAfter(doAfterEventArgs, removeBattery); _doAfter.DoAfter(doAfterEventArgs, removeBattery);
@@ -168,6 +171,9 @@ public sealed class MechSystem : SharedMechSystem
{ {
BreakOnUserMove = true, BreakOnUserMove = true,
BreakOnStun = true, BreakOnStun = true,
RaiseOnTarget = true,
RaiseOnUsed = false,
RaiseOnUser = false,
}; };
_doAfter.DoAfter(doAfterEventArgs, mechEntryEvent); _doAfter.DoAfter(doAfterEventArgs, mechEntryEvent);
@@ -200,7 +206,10 @@ public sealed class MechSystem : SharedMechSystem
{ {
BreakOnUserMove = true, BreakOnUserMove = true,
BreakOnTargetMove = true, BreakOnTargetMove = true,
BreakOnStun = true BreakOnStun = true,
RaiseOnTarget = true,
RaiseOnUsed = false,
RaiseOnUser = false,
}; };
_doAfter.DoAfter(doAfterEventArgs, mechExitEvent); _doAfter.DoAfter(doAfterEventArgs, mechExitEvent);

View File

@@ -22,7 +22,7 @@ public sealed class ResistLockerSystem : EntitySystem
{ {
base.Initialize(); base.Initialize();
SubscribeLocalEvent<ResistLockerComponent, ContainerRelayMovementEntityEvent>(OnRelayMovement); SubscribeLocalEvent<ResistLockerComponent, ContainerRelayMovementEntityEvent>(OnRelayMovement);
SubscribeLocalEvent<ResistLockerComponent, DoAfterEvent>(OnDoAfter); SubscribeLocalEvent<ResistLockerComponent, DoAfterEvent<LockerDoAfterData>>(OnDoAfter);
SubscribeLocalEvent<ResistLockerComponent, EntRemovedFromContainerMessage>(OnRemoved); SubscribeLocalEvent<ResistLockerComponent, EntRemovedFromContainerMessage>(OnRemoved);
} }
@@ -58,7 +58,7 @@ public sealed class ResistLockerSystem : EntitySystem
resistLockerComponent.IsResisting = true; resistLockerComponent.IsResisting = true;
_popupSystem.PopupEntity(Loc.GetString("resist-locker-component-start-resisting"), user, user, PopupType.Large); _popupSystem.PopupEntity(Loc.GetString("resist-locker-component-start-resisting"), user, user, PopupType.Large);
_doAfterSystem.DoAfter(doAfterEventArgs); _doAfterSystem.DoAfter(doAfterEventArgs, new LockerDoAfterData());
} }
private void OnRemoved(EntityUid uid, ResistLockerComponent component, EntRemovedFromContainerMessage args) private void OnRemoved(EntityUid uid, ResistLockerComponent component, EntRemovedFromContainerMessage args)
@@ -67,7 +67,7 @@ public sealed class ResistLockerSystem : EntitySystem
component.CancelToken = null; component.CancelToken = null;
} }
private void OnDoAfter(EntityUid uid, ResistLockerComponent component, DoAfterEvent args) private void OnDoAfter(EntityUid uid, ResistLockerComponent component, DoAfterEvent<LockerDoAfterData> args)
{ {
if (args.Cancelled) if (args.Cancelled)
{ {
@@ -96,4 +96,8 @@ public sealed class ResistLockerSystem : EntitySystem
component.CancelToken = null; component.CancelToken = null;
args.Handled = true; args.Handled = true;
} }
private struct LockerDoAfterData
{
}
} }

View File

@@ -31,7 +31,7 @@ namespace Content.Server.Tiles
private void OnAfterInteract(EntityUid uid, FloorTileComponent component, AfterInteractEvent args) private void OnAfterInteract(EntityUid uid, FloorTileComponent component, AfterInteractEvent args)
{ {
if (!args.CanReach) if (!args.CanReach || args.Handled)
return; return;
if (!TryComp<StackComponent>(uid, out var stack)) if (!TryComp<StackComponent>(uid, out var stack))
@@ -72,6 +72,8 @@ namespace Content.Server.Tiles
continue; continue;
PlaceAt(mapGrid, location, currentTileDefinition.TileId, component.PlaceTileSound); PlaceAt(mapGrid, location, currentTileDefinition.TileId, component.PlaceTileSound);
args.Handled = true;
return;
} }
} }
else if (HasBaseTurf(currentTileDefinition, ContentTileDefinition.SpaceID)) else if (HasBaseTurf(currentTileDefinition, ContentTileDefinition.SpaceID))
@@ -81,6 +83,8 @@ namespace Content.Server.Tiles
gridXform.WorldPosition = locationMap.Position; gridXform.WorldPosition = locationMap.Position;
location = new EntityCoordinates(mapGrid.Owner, Vector2.Zero); location = new EntityCoordinates(mapGrid.Owner, Vector2.Zero);
PlaceAt(mapGrid, location, _tileDefinitionManager[component.OutputTiles[0]].TileId, component.PlaceTileSound, mapGrid.TileSize / 2f); PlaceAt(mapGrid, location, _tileDefinitionManager[component.OutputTiles[0]].TileId, component.PlaceTileSound, mapGrid.TileSize / 2f);
args.Handled = true;
return;
} }
} }
} }

View File

@@ -69,7 +69,7 @@ public sealed class WeldableSystem : EntitySystem
if (!CanWeld(uid, tool, user, component)) if (!CanWeld(uid, tool, user, component))
return false; return false;
var toolEvData = new ToolEventData(new WeldFinishedEvent(user, tool), targetEntity: uid); var toolEvData = new ToolEventData(new WeldFinishedEvent(user, tool), cancelledEv: new WeldCancelledEvent(),targetEntity: uid);
component.BeingWelded = _toolSystem.UseTool(tool, user, uid, component.WeldingTime.Seconds, new[] { component.WeldingQuality }, toolEvData, fuel: component.FuelConsumption); component.BeingWelded = _toolSystem.UseTool(tool, user, uid, component.WeldingTime.Seconds, new[] { component.WeldingQuality }, toolEvData, fuel: component.FuelConsumption);
// Log attempt // Log attempt