Fix misc bugs (#15314)
This commit is contained in:
@@ -44,7 +44,7 @@ namespace Content.Client.Construction
|
|||||||
.Bind(ContentKeyFunctions.OpenCraftingMenu,
|
.Bind(ContentKeyFunctions.OpenCraftingMenu,
|
||||||
new PointerInputCmdHandler(HandleOpenCraftingMenu))
|
new PointerInputCmdHandler(HandleOpenCraftingMenu))
|
||||||
.Bind(EngineKeyFunctions.Use,
|
.Bind(EngineKeyFunctions.Use,
|
||||||
new PointerInputCmdHandler(HandleUse))
|
new PointerInputCmdHandler(HandleUse, outsidePrediction: true))
|
||||||
.Register<ConstructionSystem>();
|
.Register<ConstructionSystem>();
|
||||||
|
|
||||||
SubscribeLocalEvent<ConstructionGhostComponent, ExaminedEvent>(HandleConstructionGhostExamined);
|
SubscribeLocalEvent<ConstructionGhostComponent, ExaminedEvent>(HandleConstructionGhostExamined);
|
||||||
|
|||||||
@@ -98,11 +98,13 @@ public sealed class BodySystem : SharedBodySystem
|
|||||||
|
|
||||||
public override bool DropPart(EntityUid? partId, BodyPartComponent? part = null)
|
public override bool DropPart(EntityUid? partId, BodyPartComponent? part = null)
|
||||||
{
|
{
|
||||||
var oldBody = CompOrNull<BodyPartComponent>(partId)?.Body;
|
if (partId == null || !Resolve(partId.Value, ref part))
|
||||||
|
return false;
|
||||||
|
|
||||||
if (!base.DropPart(partId, part))
|
if (!base.DropPart(partId, part))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
var oldBody = part.Body;
|
||||||
if (oldBody == null || !TryComp<HumanoidAppearanceComponent>(oldBody, out var humanoid))
|
if (oldBody == null || !TryComp<HumanoidAppearanceComponent>(oldBody, out var humanoid))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace Content.Server.Construction
|
|||||||
SubscribeLocalEvent<ConstructionComponent, ConstructionInteractDoAfterEvent>(EnqueueEvent);
|
SubscribeLocalEvent<ConstructionComponent, ConstructionInteractDoAfterEvent>(EnqueueEvent);
|
||||||
|
|
||||||
// Event handling. Add your subscriptions here! Just make sure they're all handled by EnqueueEvent.
|
// Event handling. Add your subscriptions here! Just make sure they're all handled by EnqueueEvent.
|
||||||
SubscribeLocalEvent<ConstructionComponent, InteractUsingEvent>(EnqueueEvent, new []{typeof(AnchorableSystem), typeof(EncryptionKeySystem)});
|
SubscribeLocalEvent<ConstructionComponent, InteractUsingEvent>(EnqueueEvent, new []{typeof(AnchorableSystem)}, new []{typeof(EncryptionKeySystem)});
|
||||||
SubscribeLocalEvent<ConstructionComponent, OnTemperatureChangeEvent>(EnqueueEvent);
|
SubscribeLocalEvent<ConstructionComponent, OnTemperatureChangeEvent>(EnqueueEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public sealed partial class ToolSystem
|
|||||||
|
|
||||||
private bool TryCut(EntityUid toolEntity, EntityUid user, LatticeCuttingComponent component, EntityCoordinates clickLocation)
|
private bool TryCut(EntityUid toolEntity, EntityUid user, LatticeCuttingComponent component, EntityCoordinates clickLocation)
|
||||||
{
|
{
|
||||||
if (!_mapManager.TryGetGrid(clickLocation.GetGridUid(EntityManager), out var mapGrid))
|
if (!_mapManager.TryFindGridAt(clickLocation.ToMap(EntityManager, _transformSystem), out var mapGrid))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var tile = mapGrid.GetTileRef(clickLocation);
|
var tile = mapGrid.GetTileRef(clickLocation);
|
||||||
@@ -71,7 +71,7 @@ public sealed partial class ToolSystem
|
|||||||
|| tile.IsBlockedTurf(true))
|
|| tile.IsBlockedTurf(true))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var ev = new LatticeCuttingCompleteEvent(clickLocation);
|
var ev = new LatticeCuttingCompleteEvent(coordinates);
|
||||||
return UseTool(toolEntity, user, toolEntity, component.Delay, component.QualityNeeded, ev);
|
return UseTool(toolEntity, user, toolEntity, component.Delay, component.QualityNeeded, ev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public sealed partial class ToolSystem
|
|||||||
if (!TryComp<ToolComponent?>(toolEntity, out var tool) && component.ToolComponentNeeded)
|
if (!TryComp<ToolComponent?>(toolEntity, out var tool) && component.ToolComponentNeeded)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!_mapManager.TryGetGrid(clickLocation.GetGridUid(EntityManager), out var mapGrid))
|
if (!_mapManager.TryFindGridAt(clickLocation.ToMap(EntityManager, _transformSystem), out var mapGrid))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var tile = mapGrid.GetTileRef(clickLocation);
|
var tile = mapGrid.GetTileRef(clickLocation);
|
||||||
@@ -67,7 +67,7 @@ public sealed partial class ToolSystem
|
|||||||
if (!tileDef.CanCrowbar)
|
if (!tileDef.CanCrowbar)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var ev = new TilePryingDoAfterEvent(clickLocation);
|
var ev = new TilePryingDoAfterEvent(coordinates);
|
||||||
|
|
||||||
return UseTool(toolEntity, user, toolEntity, component.Delay, component.QualityNeeded, ev, toolComponent: tool);
|
return UseTool(toolEntity, user, toolEntity, component.Delay, component.QualityNeeded, ev, toolComponent: tool);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ public partial class SharedBodySystem
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool DropPart(EntityUid? partId, [NotNullWhen(true)] BodyPartComponent? part = null)
|
public virtual bool DropPart(EntityUid? partId, BodyPartComponent? part = null)
|
||||||
{
|
{
|
||||||
if (partId == null ||
|
if (partId == null ||
|
||||||
!Resolve(partId.Value, ref part, false) ||
|
!Resolve(partId.Value, ref part, false) ||
|
||||||
|
|||||||
@@ -37,13 +37,11 @@ namespace Content.Shared.Maps
|
|||||||
if (!coordinates.IsValid(entityManager))
|
if (!coordinates.IsValid(entityManager))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
|
||||||
mapManager ??= IoCManager.Resolve<IMapManager>();
|
mapManager ??= IoCManager.Resolve<IMapManager>();
|
||||||
|
var pos = coordinates.ToMap(entityManager, entityManager.System<SharedTransformSystem>());
|
||||||
if (!mapManager.TryGetGrid(coordinates.GetGridUid(entityManager), out var grid))
|
if (!mapManager.TryFindGridAt(pos, out var grid))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
|
||||||
if (!grid.TryGetTileRef(coordinates, out var tile))
|
if (!grid.TryGetTileRef(coordinates, out var tile))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
|||||||
@@ -56,9 +56,13 @@ public sealed class EncryptionKeySystem : EntitySystem
|
|||||||
_hands.PickupOrDrop(args.User, ent);
|
_hands.PickupOrDrop(args.User, ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if tool use ever gets predicted this needs changing.
|
if (!_timing.IsFirstTimePredicted)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// TODO add predicted pop-up overrides.
|
||||||
|
if (_net.IsServer)
|
||||||
_popup.PopupEntity(Loc.GetString("encryption-keys-all-extracted"), uid, args.User);
|
_popup.PopupEntity(Loc.GetString("encryption-keys-all-extracted"), uid, args.User);
|
||||||
_audio.PlayPvs(component.KeyExtractionSound, uid);
|
_audio.PlayPredicted(component.KeyExtractionSound, uid, args.User);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateChannels(EntityUid uid, EncryptionKeyHolderComponent component)
|
public void UpdateChannels(EntityUid uid, EncryptionKeyHolderComponent component)
|
||||||
@@ -89,7 +93,7 @@ public sealed class EncryptionKeySystem : EntitySystem
|
|||||||
|
|
||||||
private void OnInteractUsing(EntityUid uid, EncryptionKeyHolderComponent component, InteractUsingEvent args)
|
private void OnInteractUsing(EntityUid uid, EncryptionKeyHolderComponent component, InteractUsingEvent args)
|
||||||
{
|
{
|
||||||
if ( args.Handled || !TryComp<ContainerManagerComponent>(uid, out var storage))
|
if (args.Handled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (HasComp<EncryptionKeyComponent>(args.Used))
|
if (HasComp<EncryptionKeyComponent>(args.Used))
|
||||||
@@ -97,7 +101,9 @@ public sealed class EncryptionKeySystem : EntitySystem
|
|||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
TryInsertKey(uid, component, args);
|
TryInsertKey(uid, component, args);
|
||||||
}
|
}
|
||||||
else if (TryComp<ToolComponent>(args.Used, out var tool) && tool.Qualities.Contains(component.KeysExtractionMethod))
|
else if (TryComp<ToolComponent>(args.Used, out var tool)
|
||||||
|
&& tool.Qualities.Contains(component.KeysExtractionMethod)
|
||||||
|
&& component.KeyContainer.ContainedEntities.Count > 0) // dont block deconstruction
|
||||||
{
|
{
|
||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
TryRemoveKey(uid, component, args, tool);
|
TryRemoveKey(uid, component, args, tool);
|
||||||
|
|||||||
@@ -117,12 +117,18 @@ public sealed class FloorTileSystem : EntitySystem
|
|||||||
}
|
}
|
||||||
else if (HasBaseTurf(currentTileDefinition, ContentTileDefinition.SpaceID))
|
else if (HasBaseTurf(currentTileDefinition, ContentTileDefinition.SpaceID))
|
||||||
{
|
{
|
||||||
|
if (!_stackSystem.Use(uid, 1, stack))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
args.Handled = true;
|
||||||
|
if (_netManager.IsClient)
|
||||||
|
return;
|
||||||
|
|
||||||
mapGrid = _mapManager.CreateGrid(locationMap.MapId);
|
mapGrid = _mapManager.CreateGrid(locationMap.MapId);
|
||||||
var gridXform = Transform(mapGrid.Owner);
|
var gridXform = Transform(mapGrid.Owner);
|
||||||
_transform.SetWorldPosition(gridXform, locationMap.Position);
|
_transform.SetWorldPosition(gridXform, locationMap.Position);
|
||||||
location = new EntityCoordinates(mapGrid.Owner, Vector2.Zero);
|
location = new EntityCoordinates(mapGrid.Owner, Vector2.Zero);
|
||||||
PlaceAt(args.User, mapGrid, location, _tileDefinitionManager[component.OutputTiles[0]].TileId, component.PlaceTileSound, mapGrid.TileSize / 2f);
|
PlaceAt(args.User, mapGrid, location, _tileDefinitionManager[component.OutputTiles[0]].TileId, component.PlaceTileSound, mapGrid.TileSize / 2f);
|
||||||
args.Handled = true;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user