Merge remote-tracking branch 'upstream/master' into UPS

This commit is contained in:
Jabak
2024-07-22 19:24:10 +03:00
37 changed files with 487 additions and 26 deletions

View File

@@ -0,0 +1,8 @@
namespace Content.Server._White.Explosion;
[RegisterComponent]
public sealed partial class TriggerOnLandComponent : Component
{
[DataField]
public float Delay = 0.3f;
}

View File

@@ -0,0 +1,19 @@
using Content.Server.Explosion.EntitySystems;
using Content.Shared.Throwing;
namespace Content.Server._White.Explosion;
public sealed class TriggerOnLandSystem : EntitySystem
{
[Dependency] private readonly TriggerSystem _timer = default!;
public override void Initialize()
{
SubscribeLocalEvent<TriggerOnLandComponent, LandEvent>(OnLand);
}
private void OnLand(EntityUid uid, TriggerOnLandComponent component, ref LandEvent args)
{
_timer.HandleTimerTrigger(uid, null, component.Delay, 1, null, null);
}
}

View File

@@ -37,7 +37,8 @@ public sealed class MindslaveSystem : SharedMindslaveSystem
masterComponent.Slaves.Add(GetNetEntity(args.Target));
masterComponent.Master = GetNetEntity(args.User);
Dirty(args.Target, masterComponent);
Dirty(args.User, masterComponent);
Dirty(args.Target, slaveComponent);
if (!Mind.TryGetMind(args.Target, out var targetMindId, out var targetMind) || targetMind.Session is null)
{
@@ -73,7 +74,7 @@ public sealed class MindslaveSystem : SharedMindslaveSystem
{
return;
}
if (!TryComp(args.Target, out MindSlaveComponent? mindslave))
{
return;
@@ -85,6 +86,14 @@ public sealed class MindslaveSystem : SharedMindslaveSystem
Popup.PopupEntity(Loc.GetString("mindslave-freed", ("player", mindslave.Master)), args.Target, args.Target);
}
var master = GetEntity(mindslave.Master);
if (TryComp(master, out MindSlaveComponent? masterMindslave))
{
masterMindslave.Slaves.Remove(GetNetEntity(args.Target));
if (masterMindslave.Slaves.Count == 0)
RemComp<MindSlaveComponent>(master);
}
RemComp<MindSlaveComponent>(args.Target);
}
}
}