X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fspiderbot_weapons.qc;h=7887781ed7a74f3b5c3850dfad0cfdd64a48e398;hp=6476ebbf00e4a956309d4061df27ced79c177688;hb=91819987a61f7675e34866edcb0fe3671a9b1ba4;hpb=eac60648c4017e495060dd3ba9e50ac4bad5000a diff --git a/qcsrc/common/vehicles/vehicle/spiderbot_weapons.qc b/qcsrc/common/vehicles/vehicle/spiderbot_weapons.qc index 6476ebbf0..7887781ed 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,21 +46,18 @@ void spiderbot_rocket_guided(entity this) void spiderbot_guide_release(entity this) { - entity rkt; - rkt = findchainentity(realowner, this.owner); - if(!rkt) - return; - - crosshair_trace(this.owner); - while(rkt) + bool donetrace = false; + IL_EACH(g_projectiles, it.realowner == this.owner && getthink(it) == spiderbot_rocket_guided, { - if(getthink(rkt) == spiderbot_rocket_guided) + if(!donetrace) // something exists, let's trace! { - rkt.pos1 = trace_endpos; - setthink(rkt, spiderbot_rocket_unguided); + donetrace = true; + crosshair_trace(this.owner); } - rkt = rkt.chain; - } + + it.pos1 = trace_endpos; + setthink(it, spiderbot_rocket_unguided); + }); } float spiberbot_calcartillery_flighttime; @@ -140,9 +135,9 @@ vector spiberbot_calcartillery(vector org, vector tgt, float ht) } void spiderbot_rocket_do(entity this) -{; +{ vector v; - entity rocket = world; + entity rocket = NULL; if (this.wait != -10) { @@ -196,7 +191,7 @@ void spiderbot_rocket_do(entity this) float _dist = (random() * autocvar_g_vehicle_spiderbot_rocket_radius) + vlen(v - trace_endpos); _dist -= (random() * autocvar_g_vehicle_spiderbot_rocket_radius) ; rocket.nextthink = time + (_dist / autocvar_g_vehicle_spiderbot_rocket_speed); - setthink(rocket, vehicles_projectile_explode); + setthink(rocket, vehicles_projectile_explode_think); if(PHYS_INPUT_BUTTON_ATCK2(this.owner) && this.tur_head.frame == 1) this.wait = -10; @@ -224,15 +219,15 @@ 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)); - rocket.movetype = MOVETYPE_TOSS; + set_movetype(rocket, MOVETYPE_TOSS); rocket.gravity = 1; //setthink(rocket, spiderbot_rocket_artillery); break; @@ -251,5 +246,3 @@ void spiderbot_rocket_do(entity this) } #endif - -#endif