X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fspiderbot_weapons.qc;h=fdeddc47bfbcb5d2956d7fa7c6125c94aa64130d;hb=002be87cfe10ccbfedaf09eec48a1c78b10f8476;hp=dc1f6ba60a29e16190c54d930e285af683b314d0;hpb=05ee5b1212a6537e5c5acb76dbc1ef9df40f85c6;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/vehicles/vehicle/spiderbot_weapons.qc b/qcsrc/common/vehicles/vehicle/spiderbot_weapons.qc index dc1f6ba60..fdeddc47b 100644 --- a/qcsrc/common/vehicles/vehicle/spiderbot_weapons.qc +++ b/qcsrc/common/vehicles/vehicle/spiderbot_weapons.qc @@ -1,7 +1,5 @@ #include "spiderbot_weapons.qh" -#ifdef IMPLEMENTATION - #ifdef SVQC void spiderbot_rocket_artillery(entity this) @@ -48,16 +46,17 @@ void spiderbot_rocket_guided(entity this) void spiderbot_guide_release(entity this) { - FOREACH_ENTITY_ENT(realowner, this.owner, + bool donetrace = false; + IL_EACH(g_projectiles, it.realowner == this.owner && getthink(it) == spiderbot_rocket_guided, { - if(i == 0) // something exists, let's trace! - crosshair_trace(this.owner); - - if(getthink(it) == spiderbot_rocket_guided) + if(!donetrace) // something exists, let's trace! { - it.pos1 = trace_endpos; - setthink(it, spiderbot_rocket_unguided); + donetrace = true; + crosshair_trace(this.owner); } + + it.pos1 = trace_endpos; + setthink(it, spiderbot_rocket_unguided); }); } @@ -142,7 +141,7 @@ void spiderbot_rocket_do(entity this) if (this.wait != -10) { - if (PHYS_INPUT_BUTTON_ATCK2(this.owner) && this.vehicle_weapon2mode == SBRM_GUIDE) + if (PHYS_INPUT_BUTTON_ATCK2(this.owner) && STAT(VEHICLESTAT_W2MODE, this) == SBRM_GUIDE) { if (this.wait == 1) if (this.tur_head.frame == 9 || this.tur_head.frame == 1) @@ -176,15 +175,15 @@ void spiderbot_rocket_do(entity this) if(!PHYS_INPUT_BUTTON_ATCK2(this.owner)) return; - if(forbidWeaponUse(this.owner)) + if(weaponLocked(this.owner) || weaponUseForbidden(this.owner)) return; v = gettaginfo(this.tur_head,gettagindex(this.tur_head,"tag_fire")); - switch(this.vehicle_weapon2mode) + switch(STAT(VEHICLESTAT_W2MODE, this)) { case SBRM_VOLLY: - rocket = vehicles_projectile(this, EFFECT_SPIDERBOT_ROCKETLAUNCH.eent_eff_name, SND_ROCKET_FIRE, + rocket = vehicles_projectile(this, EFFECT_SPIDERBOT_ROCKETLAUNCH, SND_ROCKET_FIRE, v, normalize(randomvec() * autocvar_g_vehicle_spiderbot_rocket_spread + v_forward) * autocvar_g_vehicle_spiderbot_rocket_speed, autocvar_g_vehicle_spiderbot_rocket_damage, autocvar_g_vehicle_spiderbot_rocket_radius, autocvar_g_vehicle_spiderbot_rocket_force, 1, DEATH_VH_SPID_ROCKET.m_id, PROJECTILE_SPIDERROCKET, autocvar_g_vehicle_spiderbot_rocket_health, false, true, this.owner); @@ -198,7 +197,7 @@ void spiderbot_rocket_do(entity this) this.wait = -10; break; case SBRM_GUIDE: - rocket = vehicles_projectile(this, EFFECT_SPIDERBOT_ROCKETLAUNCH.eent_eff_name, SND_ROCKET_FIRE, + rocket = vehicles_projectile(this, EFFECT_SPIDERBOT_ROCKETLAUNCH, SND_ROCKET_FIRE, v, normalize(v_forward) * autocvar_g_vehicle_spiderbot_rocket_speed, autocvar_g_vehicle_spiderbot_rocket_damage, autocvar_g_vehicle_spiderbot_rocket_radius, autocvar_g_vehicle_spiderbot_rocket_force, 1, DEATH_VH_SPID_ROCKET.m_id, PROJECTILE_SPIDERROCKET, autocvar_g_vehicle_spiderbot_rocket_health, false, false, this.owner); @@ -210,7 +209,7 @@ void spiderbot_rocket_do(entity this) break; case SBRM_ARTILLERY: - rocket = vehicles_projectile(this, EFFECT_SPIDERBOT_ROCKETLAUNCH.eent_eff_name, SND_ROCKET_FIRE, + rocket = vehicles_projectile(this, EFFECT_SPIDERBOT_ROCKETLAUNCH, SND_ROCKET_FIRE, v, normalize(v_forward) * autocvar_g_vehicle_spiderbot_rocket_speed, autocvar_g_vehicle_spiderbot_rocket_damage, autocvar_g_vehicle_spiderbot_rocket_radius, autocvar_g_vehicle_spiderbot_rocket_force, 1, DEATH_VH_SPID_ROCKET.m_id, PROJECTILE_SPIDERROCKET, autocvar_g_vehicle_spiderbot_rocket_health, false, true, this.owner); @@ -220,11 +219,11 @@ void spiderbot_rocket_do(entity this) rocket.pos1 = trace_endpos + randomvec() * (0.75 * autocvar_g_vehicle_spiderbot_rocket_radius); rocket.pos1_z = trace_endpos_z; - traceline(v, v + '0 0 1' * MAX_SHOT_DISTANCE, MOVE_WORLDONLY, this); + traceline(v, v + '0 0 1' * max_shot_distance, MOVE_WORLDONLY, this); float h1 = 0.75 * vlen(v - trace_endpos); //v = trace_endpos; - traceline(v , rocket.pos1 + '0 0 1' * MAX_SHOT_DISTANCE, MOVE_WORLDONLY, this); + traceline(v , rocket.pos1 + '0 0 1' * max_shot_distance, MOVE_WORLDONLY, this); float h2 = 0.75 * vlen(rocket.pos1 - v); rocket.velocity = spiberbot_calcartillery(v, rocket.pos1, ((h1 < h2) ? h1 : h2)); @@ -241,11 +240,9 @@ void spiderbot_rocket_do(entity this) if (this.tur_head.frame == 9) this.attack_finished_single[0] = autocvar_g_vehicle_spiderbot_rocket_reload; else - this.attack_finished_single[0] = ((this.vehicle_weapon2mode == SBRM_VOLLY) ? autocvar_g_vehicle_spiderbot_rocket_refire2 : autocvar_g_vehicle_spiderbot_rocket_refire); + this.attack_finished_single[0] = ((STAT(VEHICLESTAT_W2MODE, this) == SBRM_VOLLY) ? autocvar_g_vehicle_spiderbot_rocket_refire2 : autocvar_g_vehicle_spiderbot_rocket_refire); this.gun2.cnt = time + this.attack_finished_single[0]; } #endif - -#endif