- fixed RGB staff. Нагло и совершенно бездумно спизжен код визденов

This commit is contained in:
Іван Оніщенко
2024-12-21 02:18:57 +03:00
parent ef466ba89a
commit 54f5458fa9

View File

@@ -2,6 +2,7 @@ using Content.Shared.Actions;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Robust.Shared.Random; using Robust.Shared.Random;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using System.Linq;
namespace Content.Server.Actions; namespace Content.Server.Actions;
@@ -58,13 +59,21 @@ public sealed class ActionOnInteractSystem : EntitySystem
private void OnAfterInteract(EntityUid uid, ActionOnInteractComponent component, AfterInteractEvent args) private void OnAfterInteract(EntityUid uid, ActionOnInteractComponent component, AfterInteractEvent args)
{ {
if (args.Handled || component.ActionEntities == null) if (args.Handled)
return; return;
if (component.ActionEntities is not { } actionEnts)
{
if (!TryComp<ActionsContainerComponent>(uid, out var actionsContainerComponent))
return;
actionEnts = actionsContainerComponent.Container.ContainedEntities.ToList();
}
// First, try entity target actions // First, try entity target actions
if (args.Target != null) if (args.Target != null)
{ {
var entOptions = GetValidActions<EntityTargetActionComponent>(component.ActionEntities, args.CanReach); var entOptions = GetValidActions<EntityTargetActionComponent>(actionEnts, args.CanReach);
for (var i = entOptions.Count - 1; i >= 0; i--) for (var i = entOptions.Count - 1; i >= 0; i--)
{ {
var action = entOptions[i]; var action = entOptions[i];
@@ -77,8 +86,6 @@ public sealed class ActionOnInteractSystem : EntitySystem
var (entActId, entAct) = _random.Pick(entOptions); var (entActId, entAct) = _random.Pick(entOptions);
if (entAct.Event != null) if (entAct.Event != null)
{ {
entAct.Event.Performer = args.User;
entAct.Event.Action = entActId;
entAct.Event.Target = args.Target.Value; entAct.Event.Target = args.Target.Value;
} }
@@ -87,29 +94,6 @@ public sealed class ActionOnInteractSystem : EntitySystem
return; return;
} }
} }
// else: try world target actions
var options = GetValidActions<WorldTargetActionComponent>(component.ActionEntities, args.CanReach);
for (var i = options.Count - 1; i >= 0; i--)
{
var action = options[i];
if (!_actions.ValidateWorldTarget(args.User, args.ClickLocation, action))
options.RemoveAt(i);
}
if (options.Count == 0)
return;
var (actId, act) = _random.Pick(options);
if (act.Event != null)
{
act.Event.Performer = args.User;
act.Event.Action = actId;
act.Event.Target = args.ClickLocation;
}
_actions.PerformAction(args.User, null, actId, act, act.Event, _timing.CurTime, false);
args.Handled = true;
} }
private bool ValidAction(BaseActionComponent action, bool canReach = true) private bool ValidAction(BaseActionComponent action, bool canReach = true)