]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/w_rocketlauncher.qc
Merge remote branch 'refs/remotes/origin/mrbougo/sgmelee-body'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / w_rocketlauncher.qc
index a2ee89bc86beb01335be2c763e6b10b927da5357..d4056763a84d1e418075a0bd7ffe6a35318eb798 100644 (file)
@@ -43,6 +43,29 @@ void W_Rocket_Explode ()
        remove (self);
 }
 
+void W_Rocket_DoRemoteExplode ()
+{
+       W_Rocket_Unregister();
+
+       self.event_damage = SUB_Null;
+       self.takedamage = DAMAGE_NO;
+
+       RadiusDamage (self, self.owner, cvar("g_balance_rocketlauncher_remote_damage"), cvar("g_balance_rocketlauncher_remote_edgedamage"), cvar("g_balance_rocketlauncher_remote_radius"), world, cvar("g_balance_rocketlauncher_remote_force"), self.projectiledeathtype | HITTYPE_BOUNCE, world);
+
+       if (self.owner.weapon == WEP_ROCKET_LAUNCHER)
+       {
+               if(self.owner.ammo_rockets < cvar("g_balance_rocketlauncher_ammo"))
+               {
+                       self.owner.cnt = WEP_ROCKET_LAUNCHER;
+                       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);
+}
+
 entity FindLaserTarget(entity e, float dist_variance, float dot_variance)
 {
        entity head, selected;
@@ -105,36 +128,7 @@ void W_Rocket_RemoteExplode()
                        : (vlen(NearestPointOnBox(self.owner, self.origin) - self.origin) > cvar("g_balance_rocketlauncher_radius")) // safety device
                )
                {
-                       other = world;
-                       self.projectiledeathtype |= HITTYPE_BOUNCE;
-               }
-               else
-               {
-                       W_Rocket_Unregister();
-
-                       if(other.takedamage == DAMAGE_AIM)
-                               if(other.classname == "player")
-                                       if(IsDifferentTeam(self.owner, other))
-                                               if(IsFlying(other))
-                                                       AnnounceTo(self.owner, "airshot");
-
-                       self.event_damage = SUB_Null;
-                       self.takedamage = DAMAGE_NO;
-
-                       RadiusDamage (self, self.owner, cvar("g_balance_rocketlauncher_remote_damage"), cvar("g_balance_rocketlauncher_remote_edgedamage"), cvar("g_balance_rocketlauncher_remote_radius"), world, cvar("g_balance_rocketlauncher_remote_force"), self.projectiledeathtype, other);
-
-                       if (self.owner.weapon == WEP_ROCKET_LAUNCHER)
-                       {
-                               if(self.owner.ammo_rockets < cvar("g_balance_rocketlauncher_ammo"))
-                               {
-                                       self.owner.cnt = WEP_ROCKET_LAUNCHER;
-                                       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);
+                       W_Rocket_DoRemoteExplode();
                }
        }
 }
@@ -592,15 +586,15 @@ float w_rlauncher(float req)
                precache_sound("weapons/rocket_impact.wav");
        }
        else if (req == WR_SUICIDEMESSAGE)
-               w_deathtypestring = "exploded";
+               w_deathtypestring = "%s exploded";
        else if (req == WR_KILLMESSAGE)
        {
                if(w_deathtype & HITTYPE_BOUNCE) // (remote detonation)
-                       w_deathtypestring = "got too close to #'s rocket";
+                       w_deathtypestring = "%s got too close to %s's rocket";
                else if(w_deathtype & HITTYPE_SPLASH)
-                       w_deathtypestring = "almost dodged #'s rocket";
+                       w_deathtypestring = "%s almost dodged %s's rocket";
                else
-                       w_deathtypestring = "ate #'s rocket";
+                       w_deathtypestring = "%s ate %s's rocket";
        }
        return TRUE;
 }