Merge remote-tracking branch 'upstream/master' into ed-23-02-2025-upstream

# Conflicts:
#	Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs
#	Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs
#	Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml
This commit is contained in:
Ed
2025-02-23 23:07:55 +03:00
406 changed files with 70688 additions and 45859 deletions

View File

@@ -298,7 +298,7 @@ public abstract class SharedStorageSystem : EntitySystem
}
else
{
OpenStorageUI(uid, args.User, component);
OpenStorageUI(uid, args.User, component, false);
}
}
};
@@ -318,11 +318,33 @@ public abstract class SharedStorageSystem : EntitySystem
args.Verbs.Add(verb);
}
public void OpenStorageUI(EntityUid uid, EntityUid actor, StorageComponent? storageComp = null, bool silent = true)
{
// Handle recursively opening nested storages.
if (ContainerSystem.TryGetContainingContainer(uid, out var container) &&
UI.IsUiOpen(container.Owner, StorageComponent.StorageUiKey.Key, actor))
{
_nestedCheck = true;
HideStorageWindow(container.Owner, actor);
OpenStorageUIInternal(uid, actor, storageComp, silent: true);
_nestedCheck = false;
}
else
{
// If you need something more sophisticated for multi-UI you'll need to code some smarter
// interactions.
if (_openStorageLimit == 1)
UI.CloseUserUis<StorageComponent.StorageUiKey>(actor);
OpenStorageUIInternal(uid, actor, storageComp, silent: silent);
}
}
/// <summary>
/// Opens the storage UI for an entity
/// </summary>
/// <param name="entity">The entity to open the UI for</param>
public void OpenStorageUI(EntityUid uid, EntityUid entity, StorageComponent? storageComp = null, bool silent = true)
private void OpenStorageUIInternal(EntityUid uid, EntityUid entity, StorageComponent? storageComp = null, bool silent = true)
{
if (!Resolve(uid, ref storageComp, false))
return;
@@ -410,24 +432,7 @@ public abstract class SharedStorageSystem : EntitySystem
}
else
{
// Handle recursively opening nested storages.
if (ContainerSystem.TryGetContainingContainer((args.Target, null, null), out var container) &&
UI.IsUiOpen(container.Owner, StorageComponent.StorageUiKey.Key, args.User))
{
_nestedCheck = true;
HideStorageWindow(container.Owner, args.User);
OpenStorageUI(uid, args.User, storageComp, silent: true);
_nestedCheck = false;
}
else
{
// If you need something more sophisticated for multi-UI you'll need to code some smarter
// interactions.
if (_openStorageLimit == 1)
UI.CloseUserUis<StorageComponent.StorageUiKey>(args.User);
OpenStorageUI(uid, args.User, storageComp, silent: false);
}
OpenStorageUI(uid, args.User, storageComp, false);
}
args.Handled = true;
@@ -530,10 +535,9 @@ public abstract class SharedStorageSystem : EntitySystem
{
var parent = transformOwner.ParentUid;
var position = EntityCoordinates.FromMap(
var position = TransformSystem.ToCoordinates(
parent.IsValid() ? parent : uid,
TransformSystem.GetMapCoordinates(transformEnt),
TransformSystem
TransformSystem.GetMapCoordinates(transformEnt)
);
args.Handled = true;
@@ -583,10 +587,9 @@ public abstract class SharedStorageSystem : EntitySystem
continue;
}
var position = EntityCoordinates.FromMap(
var position = TransformSystem.ToCoordinates(
xform.ParentUid.IsValid() ? xform.ParentUid : uid,
new MapCoordinates(TransformSystem.GetWorldPosition(targetXform), targetXform.MapID),
TransformSystem
new MapCoordinates(TransformSystem.GetWorldPosition(targetXform), targetXform.MapID)
);
var angle = targetXform.LocalRotation;