Add govnocod
This commit is contained in:
@@ -9,6 +9,7 @@ using Content.Shared.Damage.Systems;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.Effects;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Projectiles;
|
||||
using Content.Shared.Throwing;
|
||||
using Robust.Shared.Physics.Components;
|
||||
using Robust.Shared.Player;
|
||||
@@ -62,7 +63,7 @@ namespace Content.Server.Damage.Systems
|
||||
}
|
||||
|
||||
// TODO: If more stuff touches this then handle it after.
|
||||
if (TryComp<PhysicsComponent>(uid, out var physics))
|
||||
if (!HasComp<EmbeddableProjectileComponent>(uid) && TryComp<PhysicsComponent>(uid, out var physics)) // WD EDIT
|
||||
{
|
||||
_thrownItem.LandComponent(args.Thrown, args.Component, physics, false);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Numerics;
|
||||
using Content.Shared.Buckle;
|
||||
using Content.Shared.CombatMode.Pacification;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.DoAfter;
|
||||
@@ -29,6 +30,7 @@ public abstract partial class SharedProjectileSystem : EntitySystem
|
||||
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
[Dependency] private readonly PenetratedSystem _penetratedSystem = default!; // WD
|
||||
[Dependency] private readonly SharedBuckleSystem _buckle = default!; // WD
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -114,16 +116,20 @@ public abstract partial class SharedProjectileSystem : EntitySystem
|
||||
if (component is {Penetrate: true, PenetratedUid: null} &&
|
||||
TryComp(args.Target, out PenetratedComponent? penetrated) &&
|
||||
penetrated is {ProjectileUid: null, IsPinned: false} &&
|
||||
TryComp(args.Target, out PhysicsComponent? physics))
|
||||
TryComp(args.Target, out PhysicsComponent? physics) &&
|
||||
TryComp(uid, out PhysicsComponent? body) && body.BodyStatus == BodyStatus.InAir)
|
||||
{
|
||||
component.PenetratedUid = args.Target;
|
||||
penetrated.ProjectileUid = uid;
|
||||
_buckle.TryUnbuckle(args.Target, args.Target, true);
|
||||
_physics.SetLinearVelocity(args.Target, Vector2.Zero, body: physics);
|
||||
_physics.SetBodyType(args.Target, BodyType.Static, body: physics);
|
||||
var xform = Transform(args.Target);
|
||||
_transform.AttachToGridOrMap(args.Target, xform);
|
||||
_transform.SetLocalPosition(args.Target, Transform(uid).LocalPosition, xform);
|
||||
_transform.SetParent(args.Target, xform, uid);
|
||||
_transform.SetLocalPosition(args.Target,
|
||||
xform.LocalPosition + Transform(uid).LocalRotation.RotateVec(new Vector2(0.5f, 0.5f)), xform);
|
||||
if (TryComp(uid, out PhysicsComponent? projPhysics))
|
||||
_physics.SetLinearVelocity(uid, projPhysics.LinearVelocity / 2, body: projPhysics);
|
||||
Dirty(uid, component);
|
||||
Dirty(args.Target, penetrated);
|
||||
return;
|
||||
@@ -152,7 +158,7 @@ public abstract partial class SharedProjectileSystem : EntitySystem
|
||||
|
||||
private void Embed(EntityUid uid, EntityUid target, EmbeddableProjectileComponent component)
|
||||
{
|
||||
if (component.PreventEmbedding || component.PenetratedUid == target) // WD START
|
||||
if (component.PreventEmbedding || component.PenetratedUid == target || _netManager.IsClient) // WD START
|
||||
return;
|
||||
|
||||
var ev = new EmbedStartEvent(component);
|
||||
@@ -255,11 +261,20 @@ public abstract partial class SharedProjectileSystem : EntitySystem
|
||||
if (component.RemovalTime == null)
|
||||
return false;
|
||||
|
||||
return _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.RemovalTime.Value,
|
||||
if (!TryComp(uid, out TransformComponent? xform) || !TryComp(user, out TransformComponent? userXform) ||
|
||||
!xform.Coordinates.InRange(EntityManager, _transform, userXform.Coordinates,
|
||||
SharedInteractionSystem.InteractionRange + 1f) || !TryComp(user, out DoAfterComponent? doAfter))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
_doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.RemovalTime.Value,
|
||||
new RemoveEmbeddedProjectileEvent(), eventTarget: uid, target: uid)
|
||||
{
|
||||
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
||||
});
|
||||
}, doAfter);
|
||||
|
||||
return true;
|
||||
}
|
||||
// WD EDIT END
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
slots:
|
||||
- Back
|
||||
- type: Item
|
||||
size: 80
|
||||
size: Huge
|
||||
sprite: White/Objects/Weapons/crossbow.rsi
|
||||
- type: Gun
|
||||
forceThrowingAngle: true
|
||||
@@ -68,7 +68,7 @@
|
||||
sprite: White/Objects/Weapons/crossbow.rsi
|
||||
state: base
|
||||
- type: Item
|
||||
size: 80
|
||||
size: Huge
|
||||
sprite: White/Objects/Weapons/crossbow.rsi
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
|
||||
Reference in New Issue
Block a user