X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fturrets%2Fturret%2Ftesla_weapon.qc;fp=qcsrc%2Fcommon%2Fturrets%2Fturret%2Ftesla_weapon.qc;h=88ca4db9702f491d237edd4adade82a526b0c9af;hb=fdbfb6f9364d8aeae67e108400a6bd1dd37dc0b7;hp=a173d8b675cbd590d1defb4ef85f424542fc736b;hpb=0f2e3cd6c6554bda254111dee0746fea05aac047;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/turrets/turret/tesla_weapon.qc b/qcsrc/common/turrets/turret/tesla_weapon.qc index a173d8b67..88ca4db97 100644 --- a/qcsrc/common/turrets/turret/tesla_weapon.qc +++ b/qcsrc/common/turrets/turret/tesla_weapon.qc @@ -1,7 +1,5 @@ #include "tesla_weapon.qh" -#ifdef IMPLEMENTATION - #ifdef SVQC entity toast(entity actor, entity from, float range, float damage); @@ -42,55 +40,45 @@ METHOD(TeslaCoilTurretAttack, wr_think, void(entity thiswep, entity actor, .enti } - FOREACH_ENTITY_FLOAT(railgunhit, 1, + IL_EACH(g_railgunhit, it.railgunhit, { - it.railgunhit = 0; + it.railgunhit = false; }); + IL_CLEAR(g_railgunhit); } } entity toast(entity actor, entity from, float range, float damage) { - entity e; + float dd = range + 1; entity etarget = NULL; - float d,dd; - float r; - - dd = range + 1; - - e = findradius(from.origin,range); - while (e) + FOREACH_ENTITY_RADIUS(from.origin, range, it != from && !it.railgunhit, { - if ((e.railgunhit != 1) && (e != from)) + float r = turret_validate_target(actor, it, actor.target_validate_flags); + if(r > 0) { - r = turret_validate_target(actor,e,actor.target_validate_flags); - if (r > 0) + traceline(from.origin, 0.5 * (it.absmin + it.absmax), MOVE_WORLDONLY, from); + if(trace_fraction == 1.0) { - traceline(from.origin,0.5 * (e.absmin + e.absmax),MOVE_WORLDONLY,from); - if (trace_fraction == 1.0) + float d = vlen(it.origin - from.origin); + if(d < dd) { - d = vlen(e.origin - from.origin); - if (d < dd) - { - dd = d; - etarget = e; - } + dd = d; + etarget = it; } } } - e = e.chain; - } + }); if (etarget) { - te_csqc_lightningarc(from.origin,etarget.origin); + te_csqc_lightningarc(from.origin, etarget.origin); Damage(etarget, actor, actor, damage, DEATH_TURRET_TESLA.m_id, etarget.origin, '0 0 0'); - etarget.railgunhit = 1; + etarget.railgunhit = true; + IL_PUSH(g_railgunhit, etarget); } return etarget; } #endif - -#endif