add reflect logs (#17006)

This commit is contained in:
Chief-Engineer
2023-06-01 00:57:31 -05:00
committed by GitHub
parent e3109f5d7e
commit 9b1d587235
3 changed files with 20 additions and 5 deletions

View File

@@ -206,7 +206,7 @@ public sealed partial class GunSystem : SharedGunSystem
FireEffects(fromEffect, result.Distance, dir.Normalized.ToAngle(), hitscan, hit); FireEffects(fromEffect, result.Distance, dir.Normalized.ToAngle(), hitscan, hit);
var ev = new HitScanReflectAttemptEvent(hitscan.Reflective, dir, false); var ev = new HitScanReflectAttemptEvent(user, gunUid, hitscan.Reflective, dir, false);
RaiseLocalEvent(hit, ref ev); RaiseLocalEvent(hit, ref ev);
if (!ev.Reflected) if (!ev.Reflected)

View File

@@ -7,4 +7,4 @@ namespace Content.Shared.Weapons.Ranged.Events;
/// and changing <see cref="Direction"/> where shot will go next /// and changing <see cref="Direction"/> where shot will go next
/// </summary> /// </summary>
[ByRefEvent] [ByRefEvent]
public record struct HitScanReflectAttemptEvent(ReflectType Reflective, Vector2 Direction, bool Reflected); public record struct HitScanReflectAttemptEvent(EntityUid? Shooter, EntityUid SourceItem, ReflectType Reflective, Vector2 Direction, bool Reflected);

View File

@@ -1,5 +1,7 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Content.Shared.Administration.Logs;
using Content.Shared.Audio; using Content.Shared.Audio;
using Content.Shared.Database;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Events;
using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Components;
@@ -19,6 +21,7 @@ public abstract class SharedReflectSystem : EntitySystem
{ {
[Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly INetManager _netManager = default!;
[Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedAudioSystem _audio = default!;
@@ -88,10 +91,16 @@ public abstract class SharedReflectSystem : EntitySystem
if (Resolve(projectile, ref projectileComp, false)) if (Resolve(projectile, ref projectileComp, false))
{ {
_adminLogger.Add(LogType.BulletHit, LogImpact.Medium, $"{ToPrettyString(reflector)} reflected {ToPrettyString(projectile)} from {ToPrettyString(projectileComp.Weapon)} shot by {projectileComp.Shooter}");
projectileComp.Shooter = reflector; projectileComp.Shooter = reflector;
projectileComp.Weapon = reflector; projectileComp.Weapon = reflector;
Dirty(projectileComp); Dirty(projectileComp);
} }
else
{
_adminLogger.Add(LogType.BulletHit, LogImpact.Medium, $"{ToPrettyString(reflector)} reflected {ToPrettyString(projectile)}");
}
return true; return true;
} }
@@ -101,7 +110,7 @@ public abstract class SharedReflectSystem : EntitySystem
if (args.Reflected || hands.ActiveHandEntity == null) if (args.Reflected || hands.ActiveHandEntity == null)
return; return;
if (TryReflectHitscan(hands.ActiveHandEntity.Value, args.Direction, out var dir)) if (TryReflectHitscan(hands.ActiveHandEntity.Value, args.Shooter, args.SourceItem, args.Direction, out var dir))
{ {
args.Direction = dir.Value; args.Direction = dir.Value;
args.Reflected = true; args.Reflected = true;
@@ -116,14 +125,14 @@ public abstract class SharedReflectSystem : EntitySystem
return; return;
} }
if (TryReflectHitscan(uid, args.Direction, out var dir)) if (TryReflectHitscan(uid, args.Shooter, args.SourceItem, args.Direction, out var dir))
{ {
args.Direction = dir.Value; args.Direction = dir.Value;
args.Reflected = true; args.Reflected = true;
} }
} }
private bool TryReflectHitscan(EntityUid reflector, Vector2 direction, private bool TryReflectHitscan(EntityUid reflector, EntityUid? shooter, EntityUid shotSource, Vector2 direction,
[NotNullWhen(true)] out Vector2? newDirection) [NotNullWhen(true)] out Vector2? newDirection)
{ {
if (!TryComp<ReflectComponent>(reflector, out var reflect) || if (!TryComp<ReflectComponent>(reflector, out var reflect) ||
@@ -142,6 +151,12 @@ public abstract class SharedReflectSystem : EntitySystem
var spread = _random.NextAngle(-reflect.Spread / 2, reflect.Spread / 2); var spread = _random.NextAngle(-reflect.Spread / 2, reflect.Spread / 2);
newDirection = -spread.RotateVec(direction); newDirection = -spread.RotateVec(direction);
if (shooter != null)
_adminLogger.Add(LogType.HitScanHit, LogImpact.Medium, $"{ToPrettyString(reflector)} reflected hitscan from {ToPrettyString(shotSource)} shot by {ToPrettyString(shooter.Value)}");
else
_adminLogger.Add(LogType.HitScanHit, LogImpact.Medium, $"{ToPrettyString(reflector)} reflected hitscan from {ToPrettyString(shotSource)}");
return true; return true;
} }
} }