From: Rudolf Polzer Date: Wed, 10 Nov 2010 20:44:11 +0000 (+0100) Subject: get rid of g_laserguided_missile due to non-use and unnecessary complexity X-Git-Tag: xonotic-v0.1.0preview~164 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=d3d9a5dd70c404fae3eabea14d5d271c04403ea5 get rid of g_laserguided_missile due to non-use and unnecessary complexity --- diff --git a/balance25.cfg b/balance25.cfg index 49a450f807..116c9a1cea 100644 --- a/balance25.cfg +++ b/balance25.cfg @@ -502,11 +502,6 @@ set g_balance_rocketlauncher_guideratedelay 0.01 // immediate set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic) set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again -set g_balance_rocketlauncher_laserguided_speed 1000 //650 -set g_balance_rocketlauncher_laserguided_speedaccel 0 -set g_balance_rocketlauncher_laserguided_speedstart 1000 -set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5 -set g_balance_rocketlauncher_laserguided_allow_steal 1 set g_balance_rocketlauncher_remote_damage 105 set g_balance_rocketlauncher_remote_edgedamage 40 set g_balance_rocketlauncher_remote_radius 150 diff --git a/balanceLeeStricklin.cfg b/balanceLeeStricklin.cfg index 9735e07a57..807a8af180 100644 --- a/balanceLeeStricklin.cfg +++ b/balanceLeeStricklin.cfg @@ -513,11 +513,6 @@ set g_balance_rocketlauncher_guideratedelay 0.01 // immediate set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic) set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again -set g_balance_rocketlauncher_laserguided_speed 1000 //650 -set g_balance_rocketlauncher_laserguided_speedaccel 0 -set g_balance_rocketlauncher_laserguided_speedstart 1000 -set g_balance_rocketlauncher_laserguided_turnrate 0.60 //0.5 -set g_balance_rocketlauncher_laserguided_allow_steal 1 set g_balance_rocketlauncher_remote_damage 120 set g_balance_rocketlauncher_remote_edgedamage 46 set g_balance_rocketlauncher_remote_radius 185 diff --git a/balanceNexSVN.cfg b/balanceNexSVN.cfg index 4649a6eaaf..145db5ddf1 100644 --- a/balanceNexSVN.cfg +++ b/balanceNexSVN.cfg @@ -501,11 +501,6 @@ set g_balance_rocketlauncher_guideratedelay 0.01 // immediate set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic) set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again -set g_balance_rocketlauncher_laserguided_speed 1000 //650 -set g_balance_rocketlauncher_laserguided_speedaccel 0 -set g_balance_rocketlauncher_laserguided_speedstart 1000 -set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5 -set g_balance_rocketlauncher_laserguided_allow_steal 1 set g_balance_rocketlauncher_remote_damage 105 set g_balance_rocketlauncher_remote_edgedamage 40 set g_balance_rocketlauncher_remote_radius 150 diff --git a/balanceSamual.cfg b/balanceSamual.cfg index fc16e2ee34..e33fb631ec 100644 --- a/balanceSamual.cfg +++ b/balanceSamual.cfg @@ -502,11 +502,6 @@ set g_balance_rocketlauncher_guideratedelay 0.01 // immediate set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic) set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again -set g_balance_rocketlauncher_laserguided_speed 1000 //650 -set g_balance_rocketlauncher_laserguided_speedaccel 0 -set g_balance_rocketlauncher_laserguided_speedstart 1000 -set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5 -set g_balance_rocketlauncher_laserguided_allow_steal 1 set g_balance_rocketlauncher_remote_damage 80 set g_balance_rocketlauncher_remote_edgedamage 40 set g_balance_rocketlauncher_remote_radius 100 diff --git a/balanceTest.cfg b/balanceTest.cfg index 4bfe87bbd8..ba4630bbd5 100644 --- a/balanceTest.cfg +++ b/balanceTest.cfg @@ -502,11 +502,6 @@ set g_balance_rocketlauncher_guideratedelay 0.01 // immediate set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic) set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again -set g_balance_rocketlauncher_laserguided_speed 1000 //650 -set g_balance_rocketlauncher_laserguided_speedaccel 0 -set g_balance_rocketlauncher_laserguided_speedstart 1000 -set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5 -set g_balance_rocketlauncher_laserguided_allow_steal 1 set g_balance_rocketlauncher_remote_damage 90 set g_balance_rocketlauncher_remote_edgedamage 20 set g_balance_rocketlauncher_remote_radius 125 diff --git a/balanceXonotic.cfg b/balanceXonotic.cfg index 55d0fe69f9..189ac077f9 100644 --- a/balanceXonotic.cfg +++ b/balanceXonotic.cfg @@ -502,11 +502,6 @@ set g_balance_rocketlauncher_guideratedelay 0.01 // immediate set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic) set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again -set g_balance_rocketlauncher_laserguided_speed 1000 //650 -set g_balance_rocketlauncher_laserguided_speedaccel 0 -set g_balance_rocketlauncher_laserguided_speedstart 1000 -set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5 -set g_balance_rocketlauncher_laserguided_allow_steal 1 set g_balance_rocketlauncher_remote_damage 50 set g_balance_rocketlauncher_remote_edgedamage 16.5 set g_balance_rocketlauncher_remote_radius 120 diff --git a/balancetZork.cfg b/balancetZork.cfg index 7bf8285d90..ab53f47533 100644 --- a/balancetZork.cfg +++ b/balancetZork.cfg @@ -503,11 +503,6 @@ set g_balance_rocketlauncher_guideratedelay 0.01 // immediate set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic) set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again -set g_balance_rocketlauncher_laserguided_speed 1000 //650 -set g_balance_rocketlauncher_laserguided_speedaccel 0 -set g_balance_rocketlauncher_laserguided_speedstart 1000 -set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5 -set g_balance_rocketlauncher_laserguided_allow_steal 1 set g_balance_rocketlauncher_remote_damage 90 set g_balance_rocketlauncher_remote_edgedamage 20 set g_balance_rocketlauncher_remote_radius 125 diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 19d728abe3..2e26355e70 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -526,7 +526,6 @@ set g_minstagib_speed_moverate 1.25 "speed-multiplier that applies while you car set g_vampire 0 "set to 1 to enable the vampire mode, where the damage done to your opponent gets added to your own health" set g_weaponarena "0" "put in a list of weapons to enable a weapon arena mode, or try \"all\" or \"most\"" set g_weaponarena_random "0" "if set to a number, only that weapon count is given on every spawn (randomly)" -set g_laserguided_missile 0 "if set to 1 the rockets of the rocket launcher can be steered using a laserpointer" set g_midair 0 "if set to 1 you can only apply damage to your opponent while he is airborne" set g_midair_shieldtime 0.3 "number of seconds you are still invincible since you lost contact to the ground" set g_spawnsound 1 "set to 0 if you don't want to hear the spawn sound when a player spawns" diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 1438d317c7..abdd41ebe9 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -1695,11 +1695,6 @@ void ClientDisconnect (void) bot_relinkplayerlist(); - // remove laserdot - if(self.weaponentity) - if(self.weaponentity.lasertarget) - remove(self.weaponentity.lasertarget); - if(g_arena) { Spawnqueue_Unmark(self); diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index d890f5d591..08a6384099 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -665,11 +665,6 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht // set up to fade out later SUB_SetFade (self, time + 6 + random (), 1); - // remove laserdot - if(self.weaponentity) - if(self.weaponentity.lasertarget) - remove(self.weaponentity.lasertarget); - if(clienttype(self) == CLIENTTYPE_REAL) { self.fixangle = TRUE; diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index 4537573c5d..907f178819 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -270,67 +270,6 @@ void W_SetupShot_Dir_ProjectileSize_Range(entity ent, vector s_forward, vector m #define W_SetupShot(ent,antilag,recoil,snd,maxdamage) W_SetupShot_ProjectileSize(ent, '0 0 0', '0 0 0', antilag, recoil, snd, maxdamage) #define W_SetupShot_Range(ent,antilag,recoil,snd,maxdamage,range) W_SetupShot_Dir_ProjectileSize_Range(ent, v_forward, '0 0 0', '0 0 0', antilag, recoil, snd, maxdamage, range) -void LaserTarget_Think() -{ - entity e; - vector offset; - float uselaser; - uselaser = 0; - - // list of weapons that will use the laser, and the options that enable it - if(self.owner.laser_on && self.owner.weapon == WEP_ROCKET_LAUNCHER && g_laserguided_missile) - uselaser = 1; - // example - //if(self.owner.weapon == WEP_ELECTRO && cvar("g_laserguided_electro")) - // uselaser = 1; - - - - // if a laser-enabled weapon isn't selected, delete any existing laser and quit - if(!uselaser) - { - // rocket launcher isn't selected, so no laser target. - if(self.lasertarget != world) - { - remove(self.lasertarget); - self.lasertarget = world; - } - return; - } - - if(!self.lasertarget) - { - // we don't have a lasertarget entity, so spawn one - //bprint("create laser target\n"); - e = self.lasertarget = spawn(); - e.owner = self.owner; // Its owner is my owner - e.classname = "laser_target"; - e.movetype = MOVETYPE_NOCLIP; // don't touch things - setmodel(e, "models/laser_dot.mdl"); // what it looks like, precision set below - e.scale = 1.25; // make it larger - e.alpha = 0.25; // transparency - e.colormod = '255 0 0' * (1/255) * 8; // change colors - e.effects = EF_FULLBRIGHT | EF_LOWPRECISION; - // make it dynamically glow - // you should avoid over-using this, as it can slow down the player's computer. - e.glow_color = 251; // red color - e.glow_size = 12; - } - else - e = self.lasertarget; - - // move the laser dot to where the player is looking - - makevectors(self.owner.v_angle); // set v_forward etc to the direction the player is looking - offset = '0 0 26' + v_right*3; - traceline(self.owner.origin + offset, self.owner.origin + offset + v_forward * MAX_SHOT_DISTANCE, FALSE, self); // trace forward until you hit something, like a player or wall - setorigin(e, trace_endpos + v_forward*8); // move me to where the traceline ended - if(trace_plane_normal != '0 0 0') - e.angles = vectoangles(trace_plane_normal); - else - e.angles = vectoangles(v_forward); -} - float CL_Weaponentity_CustomizeEntityForClient() { self.viewmodelforclient = self.owner; @@ -835,9 +774,6 @@ void CL_Weaponentity_Think() self.owner.weapon_morph4origin = QCWEAPONANIMATION_ORIGIN(self); } - - // create or update the lasertarget entity - LaserTarget_Think(); }; void CL_ExteriorWeaponentity_Think() diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index 74797441c3..bf0f395b84 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -18,7 +18,7 @@ float require_spawnfunc_prefix; // if this float exists, only functions with spa float ctf_score_value(string parameter); float g_dm, g_domination, g_ctf, g_tdm, g_keyhunt, g_onslaught, g_assault, g_arena, g_ca, g_lms, g_runematch, g_race, g_nexball, g_cts; -float g_cloaked, g_footsteps, g_jump_grunt, g_grappling_hook, g_laserguided_missile, g_midair, g_minstagib, g_pinata, g_norecoil, g_vampire, g_minstagib_invis_alpha, g_bloodloss; +float g_cloaked, g_footsteps, g_jump_grunt, g_grappling_hook, g_midair, g_minstagib, g_pinata, g_norecoil, g_vampire, g_minstagib_invis_alpha, g_bloodloss; float g_warmup_limit; float g_warmup_allguns; float g_warmup_allow_timeout; @@ -243,10 +243,6 @@ float alreadychangedlevel; .float welcomemessage_time; .float version; -// Laser target for laser-guided weapons -.entity lasertarget; -.float laser_on; - // minstagib vars .float jump_interval; // laser refire diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index c4b2657122..2ca6e82330 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -713,10 +713,6 @@ void spawnfunc_worldspawn (void) if(cvar("g_vampire")) s = strcat(s, ":vampire"); - // initialiation stuff, not good in the mutator system - if(cvar("g_laserguided_missile")) - s = strcat(s, ":laserguided_missile"); - // TODO to mutator system if(cvar("g_norecoil")) s = strcat(s, ":norecoil"); diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 738c32eba8..2a601cefa2 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -1230,7 +1230,6 @@ void readlevelcvars(void) g_footsteps = cvar("g_footsteps"); g_grappling_hook = cvar("g_grappling_hook"); g_jetpack = cvar("g_jetpack"); - g_laserguided_missile = cvar("g_laserguided_missile"); g_midair = cvar("g_midair"); g_minstagib = cvar("g_minstagib"); g_norecoil = cvar("g_norecoil"); diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 1232e3c8eb..a83b927c35 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -512,8 +512,6 @@ void PrintWelcomeMessage(entity pl) modifications = strcat(modifications, ", Cloaked"); if(g_grappling_hook) modifications = strcat(modifications, ", Hook"); - if(g_laserguided_missile) - modifications = strcat(modifications, ", LG missiles"); if(g_midair) modifications = strcat(modifications, ", Midair"); if(g_vampire) diff --git a/qcsrc/server/w_rocketlauncher.qc b/qcsrc/server/w_rocketlauncher.qc index a57da6a67d..c29fda3a2a 100644 --- a/qcsrc/server/w_rocketlauncher.qc +++ b/qcsrc/server/w_rocketlauncher.qc @@ -37,8 +37,6 @@ void W_Rocket_Explode () ATTACK_FINISHED(self.owner) = time; self.owner.switchweapon = w_getbestweapon(self.owner); } - if(g_laserguided_missile) - ATTACK_FINISHED(self.owner) = time + cvar("g_balance_rocketlauncher_refire") * W_WeaponRateFactor(); } remove (self); } @@ -60,8 +58,6 @@ void W_Rocket_DoRemoteExplode () ATTACK_FINISHED(self.owner) = time; self.owner.switchweapon = w_getbestweapon(self.owner); } - if(g_laserguided_missile) - ATTACK_FINISHED(self.owner) = time + cvar("g_balance_rocketlauncher_refire") * W_WeaponRateFactor(); } remove (self); } @@ -157,12 +153,11 @@ vector rocket_steerto(vector thisdir, vector goaldir, float maxturn_cos) void W_Rocket_Think (void) { - entity e; vector desireddir, olddir, newdir, desiredorigin, goal; #if 0 float cosminang, cosmaxang, cosang; #endif - float turnrate, velspeed, f; + float velspeed, f; self.nextthink = time; if (time > self.cnt) { @@ -172,117 +167,65 @@ void W_Rocket_Think (void) return; } - if(g_laserguided_missile) - { - // accelerate - makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0'); - velspeed = cvar("g_balance_rocketlauncher_laserguided_speed") * g_weaponspeedfactor - (self.velocity * v_forward); - if (velspeed > 0) - self.velocity = self.velocity + v_forward * min(cvar("g_balance_rocketlauncher_laserguided_speedaccel") * frametime, velspeed); - } - else - { - // accelerate - makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0'); - velspeed = cvar("g_balance_rocketlauncher_speed") * g_weaponspeedfactor - (self.velocity * v_forward); - if (velspeed > 0) - self.velocity = self.velocity + v_forward * min(cvar("g_balance_rocketlauncher_speedaccel") * g_weaponspeedfactor * frametime, velspeed); - } + // accelerate + makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0'); + velspeed = cvar("g_balance_rocketlauncher_speed") * g_weaponspeedfactor - (self.velocity * v_forward); + if (velspeed > 0) + self.velocity = self.velocity + v_forward * min(cvar("g_balance_rocketlauncher_speedaccel") * g_weaponspeedfactor * frametime, velspeed); // laser guided, or remote detonation if (self.owner.weapon == WEP_ROCKET_LAUNCHER) { - if(g_laserguided_missile) + if(self == self.owner.lastrocket) + if not(self.owner.rl_release) + if not(self.BUTTON_ATCK2) + if(cvar("g_balance_rocketlauncher_guiderate")) + if(time > self.pushltime) + if(self.owner.deadflag == DEAD_NO) { - if(self.rl_detonate_later) - W_Rocket_RemoteExplode(); - - if(cvar("g_balance_rocketlauncher_laserguided_allow_steal")) - { - if(self.owner.laser_on) - { - if(self.attack_finished_single < time) - { - self.attack_finished_single = time + 0.2 + random()*0.3; - self.enemy = FindLaserTarget(self, 0.7, 0.7); - } - - if(!self.enemy) - self.enemy = self.owner.weaponentity.lasertarget; - } - else self.enemy = world; - } - else // don't allow stealing: always target my owner's laser (if it exists) - self.enemy = self.owner.weaponentity.lasertarget; - - if(self.enemy != world) - { - //bprint("Targeting ", self.enemy.owner.netname, "'s laser\n"); - velspeed = vlen(self.velocity); - e = self.enemy;//self.owner.weaponentity.lasertarget; - turnrate = cvar("g_balance_rocketlauncher_laserguided_turnrate");//0.65; // how fast to turn - desireddir = normalize(e.origin - self.origin); // get direction from my position to the laser target - olddir = normalize(self.velocity); // get my current direction - newdir = normalize(olddir + desireddir * turnrate); // take the average of the 2 directions; not the best method but simple & easy - self.velocity = newdir * velspeed; // make me fly in the new direction at my flight speed - self.angles = vectoangles(self.velocity); // turn model in the new flight direction - - ATTACK_FINISHED(self.owner) = time + 0.2 * W_WeaponRateFactor(); - } - } - else - { - if(self == self.owner.lastrocket) - if not(self.owner.rl_release) - if not(self.BUTTON_ATCK2) - if(cvar("g_balance_rocketlauncher_guiderate")) - if(time > self.pushltime) - if(self.owner.deadflag == DEAD_NO) - { - f = cvar("g_balance_rocketlauncher_guideratedelay"); - if(f) - f = bound(0, (time - self.pushltime) / f, 1); - else - f = 1; + f = cvar("g_balance_rocketlauncher_guideratedelay"); + if(f) + f = bound(0, (time - self.pushltime) / f, 1); + else + f = 1; - velspeed = vlen(self.velocity); + velspeed = vlen(self.velocity); - makevectors(self.owner.v_angle); - desireddir = WarpZone_RefSys_TransformVelocity(self.owner, self, v_forward); - desiredorigin = WarpZone_RefSys_TransformOrigin(self.owner, self, self.owner.origin + self.owner.view_ofs); - olddir = normalize(self.velocity); + makevectors(self.owner.v_angle); + desireddir = WarpZone_RefSys_TransformVelocity(self.owner, self, v_forward); + desiredorigin = WarpZone_RefSys_TransformOrigin(self.owner, self, self.owner.origin + self.owner.view_ofs); + olddir = normalize(self.velocity); #if 0 - // disabled this code because it doesn't do what I want it to do :P - cosminang = cos(cvar("g_balance_rocketlauncher_guidefadeangle") * DEG2RAD); - cosmaxang = cos(cvar("g_balance_rocketlauncher_guidemaxangle") * DEG2RAD); - cosang = desireddir * normalize(self.origin - desiredorigin); - if(cosminang == cosmaxang) - f *= (cosang >= cosminang); - else - f *= bound(0, (cosang - cosmaxang) / (cosminang - cosmaxang), 1); + // disabled this code because it doesn't do what I want it to do :P + cosminang = cos(cvar("g_balance_rocketlauncher_guidefadeangle") * DEG2RAD); + cosmaxang = cos(cvar("g_balance_rocketlauncher_guidemaxangle") * DEG2RAD); + cosang = desireddir * normalize(self.origin - desiredorigin); + if(cosminang == cosmaxang) + f *= (cosang >= cosminang); + else + f *= bound(0, (cosang - cosmaxang) / (cosminang - cosmaxang), 1); #endif - // now it gets tricky... we want to move like some curve to approximate the target direction - // but we are limiting the rate at which we can turn! - goal = desiredorigin + ((self.origin - desiredorigin) * desireddir + cvar("g_balance_rocketlauncher_guidegoal")) * desireddir; - newdir = rocket_steerto(olddir, normalize(goal - self.origin), cos(cvar("g_balance_rocketlauncher_guiderate") * f * frametime * DEG2RAD)); + // now it gets tricky... we want to move like some curve to approximate the target direction + // but we are limiting the rate at which we can turn! + goal = desiredorigin + ((self.origin - desiredorigin) * desireddir + cvar("g_balance_rocketlauncher_guidegoal")) * desireddir; + newdir = rocket_steerto(olddir, normalize(goal - self.origin), cos(cvar("g_balance_rocketlauncher_guiderate") * f * frametime * DEG2RAD)); - self.velocity = newdir * velspeed; - self.angles = vectoangles(self.velocity); + self.velocity = newdir * velspeed; + self.angles = vectoangles(self.velocity); - if(!self.count) - { - pointparticles(particleeffectnum("rocket_guide"), self.origin, self.velocity, 1); - // TODO add a better sound here - sound (self.owner, CHAN_WEAPON2, "weapons/rocket_mode.wav", VOL_BASE, ATTN_NORM); - self.count = 1; - } + if(!self.count) + { + pointparticles(particleeffectnum("rocket_guide"), self.origin, self.velocity, 1); + // TODO add a better sound here + sound (self.owner, CHAN_WEAPON2, "weapons/rocket_mode.wav", VOL_BASE, ATTN_NORM); + self.count = 1; } - - if(self.rl_detonate_later) - W_Rocket_RemoteExplode(); } + + if(self.rl_detonate_later) + W_Rocket_RemoteExplode(); } if(self.csqcprojectile_clientanimate == 0) @@ -345,10 +288,7 @@ void W_Rocket_Attack (void) setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot setorigin (missile, w_shotorg - v_forward * 3); // move it back so it hits the wall at the right point - if(g_laserguided_missile && self.laser_on) - W_SetupProjectileVelocity(missile, cvar("g_balance_rocketlauncher_laserguided_speedstart"), 0); - else - W_SetupProjectileVelocity(missile, cvar("g_balance_rocketlauncher_speedstart"), 0); + W_SetupProjectileVelocity(missile, cvar("g_balance_rocketlauncher_speedstart"), 0); missile.angles = vectoangles (missile.velocity); missile.touch = W_Rocket_Touch; @@ -357,7 +297,7 @@ void W_Rocket_Attack (void) missile.cnt = time + cvar("g_balance_rocketlauncher_lifetime"); missile.flags = FL_PROJECTILE; - CSQCProjectile(missile, cvar("g_balance_rocketlauncher_guiderate") == 0 && cvar("g_balance_rocketlauncher_speedaccel") == 0 && !g_laserguided_missile, PROJECTILE_ROCKET, FALSE); // because of fly sound + CSQCProjectile(missile, cvar("g_balance_rocketlauncher_guiderate") == 0 && cvar("g_balance_rocketlauncher_speedaccel") == 0, PROJECTILE_ROCKET, FALSE); // because of fly sound // muzzle flash for 1st person view flash = spawn (); @@ -473,71 +413,32 @@ float w_rlauncher(float req) } else if (req == WR_THINK) { - if(g_laserguided_missile) + if (self.BUTTON_ATCK) { - if (self.BUTTON_ATCK && self.rl_release) + if(self.rl_release || cvar("g_balance_rocketlauncher_guidestop")) + if(weapon_prepareattack(0, cvar("g_balance_rocketlauncher_refire"))) { - rockfound = 0; - for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self) - { - if(!rock.rl_detonate_later) - { - rock.rl_detonate_later = TRUE; - rockfound = 1; - } - } - if(rockfound) - sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", VOL_BASE, ATTN_NORM); - else - { - if (weapon_prepareattack(0, cvar("g_balance_rocketlauncher_refire"))) - { - W_Rocket_Attack(); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_rocketlauncher_animtime"), w_ready); - } - } + W_Rocket_Attack(); + weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_rocketlauncher_animtime"), w_ready); self.rl_release = 0; } - if (!self.BUTTON_ATCK) - self.rl_release = 1; - if (self.BUTTON_ATCK2) - if(self.exteriorweaponentity.attack_finished_single < time) - { - self.exteriorweaponentity.attack_finished_single = time + 0.4; - self.laser_on = !self.laser_on; - // UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds - sound (self, CHAN_WEAPON2, "weapons/rocket_mode.wav", VOL_BASE, ATTN_NORM); - } } else - { - if (self.BUTTON_ATCK) - { - if(self.rl_release || cvar("g_balance_rocketlauncher_guidestop")) - if(weapon_prepareattack(0, cvar("g_balance_rocketlauncher_refire"))) - { - W_Rocket_Attack(); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_rocketlauncher_animtime"), w_ready); - self.rl_release = 0; - } - } - else - self.rl_release = 1; + self.rl_release = 1; - if (self.BUTTON_ATCK2) + if (self.BUTTON_ATCK2) + { + rockfound = 0; + for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self) { - rockfound = 0; - for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self) + if(!rock.rl_detonate_later) { - if(!rock.rl_detonate_later) - { - rock.rl_detonate_later = TRUE; - rockfound = 1; - } + rock.rl_detonate_later = TRUE; + rockfound = 1; } - if(rockfound) - sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", VOL_BASE, ATTN_NORM); } + if(rockfound) + sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", VOL_BASE, ATTN_NORM); } } else if (req == WR_PRECACHE) @@ -549,10 +450,6 @@ float w_rlauncher(float req) precache_sound ("weapons/rocket_det.wav"); precache_sound ("weapons/rocket_fire.wav"); precache_sound ("weapons/rocket_mode.wav"); - if (g_laserguided_missile) - { - precache_model ("models/laser_dot.mdl"); // rocket launcher - } } else if (req == WR_SETUP) {