From f61bbebb7ffde7161c90cd46ec02b02882b86145 Mon Sep 17 00:00:00 2001 From: ruddygreat <53099277+ruddygreat@users.noreply.github.com> Date: Sun, 13 Apr 2025 12:42:03 +0100 Subject: [PATCH] Fixes hitscan weapons not respecting reflectTypes (#34203) * removes otherwise unused events that broke reflectType * that last one broke everything. this actually fixes it * minor cleanup * move some stuff around for optimisation --------- Co-authored-by: Ruddygreat --- Content.Shared/Weapons/Reflect/ReflectSystem.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Content.Shared/Weapons/Reflect/ReflectSystem.cs b/Content.Shared/Weapons/Reflect/ReflectSystem.cs index 881b547f27..8be5f1be1f 100644 --- a/Content.Shared/Weapons/Reflect/ReflectSystem.cs +++ b/Content.Shared/Weapons/Reflect/ReflectSystem.cs @@ -62,7 +62,7 @@ public sealed class ReflectSystem : EntitySystem foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.All & ~SlotFlags.POCKET)) { - if (!TryReflectHitscan(uid, ent, args.Shooter, args.SourceItem, args.Direction, out var dir)) + if (!TryReflectHitscan(uid, ent, args.Shooter, args.SourceItem, args.Direction, args.Reflective, out var dir)) continue; args.Direction = dir.Value; @@ -95,9 +95,9 @@ public sealed class ReflectSystem : EntitySystem private bool TryReflectProjectile(EntityUid user, EntityUid reflector, EntityUid projectile, ProjectileComponent? projectileComp = null, ReflectComponent? reflect = null) { if (!Resolve(reflector, ref reflect, false) || - !_toggle.IsActivated(reflector) || !TryComp(projectile, out var reflective) || (reflect.Reflects & reflective.Reflective) == 0x0 || + !_toggle.IsActivated(reflector) || !_random.Prob(reflect.ReflectProb) || !TryComp(projectile, out var physics)) { @@ -142,13 +142,12 @@ public sealed class ReflectSystem : EntitySystem private void OnReflectHitscan(EntityUid uid, ReflectComponent component, ref HitScanReflectAttemptEvent args) { - if (args.Reflected || - (component.Reflects & args.Reflective) == 0x0) + if (args.Reflected) { return; } - if (TryReflectHitscan(uid, uid, args.Shooter, args.SourceItem, args.Direction, out var dir)) + if (TryReflectHitscan(uid, uid, args.Shooter, args.SourceItem, args.Direction, args.Reflective, out var dir)) { args.Direction = dir.Value; args.Reflected = true; @@ -161,9 +160,11 @@ public sealed class ReflectSystem : EntitySystem EntityUid? shooter, EntityUid shotSource, Vector2 direction, + ReflectType hitscanReflectType, [NotNullWhen(true)] out Vector2? newDirection) { if (!TryComp(reflector, out var reflect) || + (reflect.Reflects & hitscanReflectType) == 0x0 || !_toggle.IsActivated(reflector) || !_random.Prob(reflect.ReflectProb)) {