From e23e3eb02ba1bf72f07d0d6faf0896d872241cc2 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Fri, 29 Sep 2023 15:55:16 -0700 Subject: [PATCH] item_c4bomb: Trigger the func_bomb_target entities properly. --- src/shared/item_c4bomb.qc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/shared/item_c4bomb.qc b/src/shared/item_c4bomb.qc index f2acaa8..a6b4e96 100644 --- a/src/shared/item_c4bomb.qc +++ b/src/shared/item_c4bomb.qc @@ -124,7 +124,10 @@ item_c4::Logic(void) } /* if our time has passed, explode */ - if (m_flExplodeTime < time) {\ + if (m_flExplodeTime < time) { + float bestDist = 9999.0f; + NSEntity bestTarget = __NULL__; + /* In Bomb Defusal, all Terrorists receive $3500 * if they won by detonating the bomb. */ rules.RoundOver(TEAM_T, 3500, FALSE); @@ -132,12 +135,19 @@ item_c4::Logic(void) Sound_Play(this, CHAN_VOICE, "weapon_c4bomb.explode"); for (entity e = world; (e = find(e, ::classname, "func_bomb_target"));) { - NSEntity trigger = (NSEntity)e; - if (trigger.Trigger != __NULL__) { - trigger.Trigger(this, TRIG_TOGGLE); + float dist = vlen(origin - e.origin); + + if (dist < bestDist) { + bestDist = dist; + bestTarget = e; } } + /* Found it. */ + if (bestTarget) { + bestTarget.UseTargets(this, TRIG_TOGGLE, 0.0f); + } + Destroy(); return; }