- if(g_laserguided_missile)
- {
- 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)