From c46a4ab876ff0baa1e0636569751b120c27f710c Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sun, 8 Sep 2024 17:50:23 +0200 Subject: [PATCH] Revert "FTL + AI fixes (#31952)" (#31968) --- .../Systems/ShuttleSystem.FasterThanLight.cs | 56 ++++--------------- .../Components/FTLSmashImmuneComponent.cs | 9 --- .../Shuttles/Components/NoFTLComponent.cs | 12 ---- .../Prototypes/Entities/Markers/shuttle.yml | 1 - .../Entities/Mobs/Player/observer.yml | 1 - .../Entities/Mobs/Player/silicon.yml | 11 ++-- 6 files changed, 15 insertions(+), 75 deletions(-) delete mode 100644 Content.Shared/Shuttles/Components/FTLSmashImmuneComponent.cs delete mode 100644 Content.Shared/Shuttles/Components/NoFTLComponent.cs diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs index 5917267a74..8da7aaa641 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs @@ -70,11 +70,11 @@ public sealed partial class ShuttleSystem private readonly HashSet _lookupEnts = new(); private readonly HashSet _immuneEnts = new(); - private readonly HashSet> _noFtls = new(); private EntityQuery _bodyQuery; private EntityQuery _buckleQuery; - private EntityQuery _immuneQuery; + private EntityQuery _beaconQuery; + private EntityQuery _ghostQuery; private EntityQuery _physicsQuery; private EntityQuery _statusQuery; private EntityQuery _xformQuery; @@ -86,7 +86,8 @@ public sealed partial class ShuttleSystem _bodyQuery = GetEntityQuery(); _buckleQuery = GetEntityQuery(); - _immuneQuery = GetEntityQuery(); + _beaconQuery = GetEntityQuery(); + _ghostQuery = GetEntityQuery(); _physicsQuery = GetEntityQuery(); _statusQuery = GetEntityQuery(); _xformQuery = GetEntityQuery(); @@ -101,7 +102,7 @@ public sealed partial class ShuttleSystem private void OnFtlShutdown(Entity ent, ref ComponentShutdown args) { - QueueDel(ent.Comp.VisualizerEntity); + Del(ent.Comp.VisualizerEntity); ent.Comp.VisualizerEntity = null; } @@ -403,12 +404,7 @@ public sealed partial class ShuttleSystem // Offset the start by buffer range just to avoid overlap. var ftlStart = new EntityCoordinates(ftlMap, new Vector2(_index + width / 2f, 0f) - shuttleCenter); - // Store the matrix for the grid prior to movement. This means any entities we need to leave behind we can make sure their positions are updated. - // Setting the entity to map directly may run grid traversal (at least at time of writing this). - var oldMapUid = xform.MapUid; - var oldGridMatrix = _transform.GetWorldMatrix(xform); _transform.SetCoordinates(entity.Owner, ftlStart); - LeaveNoFTLBehind((entity.Owner, xform), oldGridMatrix, oldMapUid); // Reset rotation so they always face the same direction. xform.LocalRotation = Angle.Zero; @@ -480,9 +476,6 @@ public sealed partial class ShuttleSystem MapId mapId; - QueueDel(entity.Comp1.VisualizerEntity); - entity.Comp1.VisualizerEntity = null; - if (!Exists(entity.Comp1.TargetCoordinates.EntityId)) { // Uhh good luck @@ -635,31 +628,6 @@ public sealed partial class ShuttleSystem } } - private void LeaveNoFTLBehind(Entity grid, Matrix3x2 oldGridMatrix, EntityUid? oldMapUid) - { - if (oldMapUid == null) - return; - - _noFtls.Clear(); - var oldGridRotation = oldGridMatrix.Rotation(); - _lookup.GetGridEntities(grid.Owner, _noFtls); - - foreach (var childUid in _noFtls) - { - if (!_xformQuery.TryComp(childUid, out var childXform)) - continue; - - // If we're not parented directly to the grid the matrix may be wrong. - var relative = _physics.GetRelativePhysicsTransform(childUid.Owner, (grid.Owner, grid.Comp)); - - _transform.SetCoordinates( - childUid, - childXform, - new EntityCoordinates(oldMapUid.Value, - Vector2.Transform(relative.Position, oldGridMatrix)), rotation: relative.Quaternion2D.Angle + oldGridRotation); - } - } - private void KnockOverKids(TransformComponent xform, ref ValueList toKnock) { // Not recursive because probably not necessary? If we need it to be that's why this method is separate. @@ -958,8 +926,7 @@ public sealed partial class ShuttleSystem _biomes.ReserveTiles(xform.MapUid.Value, aabb, tileSet); _lookupEnts.Clear(); _immuneEnts.Clear(); - // TODO: Ideally we'd query first BEFORE moving grid but needs adjustments above. - _lookup.GetEntitiesIntersecting(xform.MapID, fixture.Shape, transform, _lookupEnts, LookupFlags.Uncontained); + _lookup.GetEntitiesIntersecting(xform.MapUid.Value, aabb, _lookupEnts, LookupFlags.Uncontained); foreach (var ent in _lookupEnts) { @@ -968,13 +935,7 @@ public sealed partial class ShuttleSystem continue; } - // If it's on our grid ignore it. - if (!_xformQuery.TryComp(ent, out var childXform) || childXform.GridUid == uid) - { - continue; - } - - if (_immuneQuery.HasComponent(ent)) + if (_ghostQuery.HasComponent(ent) || _beaconQuery.HasComponent(ent)) { continue; } @@ -988,6 +949,9 @@ public sealed partial class ShuttleSystem continue; } + if (HasComp(ent)) + continue; + QueueDel(ent); } } diff --git a/Content.Shared/Shuttles/Components/FTLSmashImmuneComponent.cs b/Content.Shared/Shuttles/Components/FTLSmashImmuneComponent.cs deleted file mode 100644 index 9ed7ee05a5..0000000000 --- a/Content.Shared/Shuttles/Components/FTLSmashImmuneComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Shuttles.Components; - -/// -/// Makes the entity immune to FTL arrival landing AKA smimsh. -/// -[RegisterComponent, NetworkedComponent] -public sealed partial class FTLSmashImmuneComponent : Component; diff --git a/Content.Shared/Shuttles/Components/NoFTLComponent.cs b/Content.Shared/Shuttles/Components/NoFTLComponent.cs deleted file mode 100644 index d48ba33bba..0000000000 --- a/Content.Shared/Shuttles/Components/NoFTLComponent.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Shuttles.Components; - -/// -/// Prevents the attached entity from taking FTL. -/// -[RegisterComponent, NetworkedComponent] -public sealed partial class NoFTLComponent : Component -{ - -} diff --git a/Resources/Prototypes/Entities/Markers/shuttle.yml b/Resources/Prototypes/Entities/Markers/shuttle.yml index 66e2bc39b7..0e9117951c 100644 --- a/Resources/Prototypes/Entities/Markers/shuttle.yml +++ b/Resources/Prototypes/Entities/Markers/shuttle.yml @@ -3,7 +3,6 @@ parent: MarkerBase name: FTL point components: - - type: FTLSmashImmune - type: FTLBeacon - type: Sprite state: pink diff --git a/Resources/Prototypes/Entities/Mobs/Player/observer.yml b/Resources/Prototypes/Entities/Mobs/Player/observer.yml index c02629c4d6..5ceac9e773 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/observer.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/observer.yml @@ -8,7 +8,6 @@ noRot: true overrideContainerOcclusion: true # Always show up regardless of where they're contained. drawdepth: Ghosts - - type: FTLSmashImmune - type: CargoSellBlacklist - type: MovementSpeedModifier baseSprintSpeed: 12 diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 2c6a8bd430..45c1fef541 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -146,7 +146,7 @@ state: std_mod - type: SiliconLawProvider laws: PaladinLawset - + - type: entity id: LiveLetLiveCircuitBoard parent: BaseElectronics @@ -158,7 +158,7 @@ state: std_mod - type: SiliconLawProvider laws: LiveLetLiveLaws - + - type: entity id: StationEfficiencyCircuitBoard parent: BaseElectronics @@ -182,7 +182,7 @@ state: std_mod - type: SiliconLawProvider laws: RobocopLawset - + - type: entity id: OverlordCircuitBoard parent: BaseElectronics @@ -194,7 +194,7 @@ state: std_mod - type: SiliconLawProvider laws: OverlordLawset - + - type: entity id: DungeonMasterCircuitBoard parent: BaseElectronics @@ -230,7 +230,7 @@ state: std_mod - type: SiliconLawProvider laws: AntimovLawset - + - type: entity id: NutimovCircuitBoard parent: BaseElectronics @@ -376,7 +376,6 @@ noSpawn: true suffix: DO NOT MAP components: - - type: NoFTL - type: WarpPoint follow: true - type: Eye