From 0b3efdab332718e1dc717a53a4330a44ce9fc55c Mon Sep 17 00:00:00 2001
From: Rudolf Polzer <rpolzer@nb-04.(none)>
Date: Thu, 4 Feb 2010 13:54:17 +0100
Subject: [PATCH] more seeker fixes

---
 balance.cfg                |  2 ++
 balance25.cfg              |  2 ++
 balanceNexrun.cfg          |  2 ++
 balanceSamual.cfg          |  3 +++
 qcsrc/client/projectile.qc |  2 +-
 qcsrc/server/t_items.qc    |  6 ------
 qcsrc/server/w_all.qc      |  1 +
 qcsrc/server/w_seeker.qc   | 18 ++++++------------
 8 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/balance.cfg b/balance.cfg
index f76f4e08b9..36a260a381 100644
--- a/balance.cfg
+++ b/balance.cfg
@@ -603,6 +603,7 @@ set g_balance_seeker_flac_lifetime_rand 0.05
 set g_balance_seeker_flac_radius 100
 set g_balance_seeker_flac_refire 0.1
 set g_balance_seeker_flac_speed 3000
+set g_balance_seeker_flac_speed_up 1000
 set g_balance_seeker_flac_spread 0.4
 set g_balance_seeker_missile_accel 1.05
 set g_balance_seeker_missile_ammo 2
@@ -626,6 +627,7 @@ set g_balance_seeker_missile_smart_mindist 800
 set g_balance_seeker_missile_smart_trace_max 2500
 set g_balance_seeker_missile_smart_trace_min 1000
 set g_balance_seeker_missile_speed 700
+set g_balance_seeker_missile_speed_up 300
 set g_balance_seeker_missile_speed_max 1250
 set g_balance_seeker_missile_turnrate 0.65
 set g_balance_seeker_tag_ammo 1
diff --git a/balance25.cfg b/balance25.cfg
index 5459dcf160..3a758f1236 100644
--- a/balance25.cfg
+++ b/balance25.cfg
@@ -602,6 +602,7 @@ set g_balance_seeker_flac_lifetime_rand 0.05
 set g_balance_seeker_flac_radius 100
 set g_balance_seeker_flac_refire 0.1
 set g_balance_seeker_flac_speed 3000
+set g_balance_seeker_flac_speed_up 1000
 set g_balance_seeker_flac_spread 0.4
 set g_balance_seeker_missile_accel 1.05
 set g_balance_seeker_missile_ammo 2
@@ -625,6 +626,7 @@ set g_balance_seeker_missile_smart_mindist 800
 set g_balance_seeker_missile_smart_trace_max 2500
 set g_balance_seeker_missile_smart_trace_min 1000
 set g_balance_seeker_missile_speed 700
+set g_balance_seeker_missile_speed_up 300
 set g_balance_seeker_missile_speed_max 1250
 set g_balance_seeker_missile_turnrate 0.65
 set g_balance_seeker_tag_ammo 1
diff --git a/balanceNexrun.cfg b/balanceNexrun.cfg
index 537b47bab3..7992e7bc64 100644
--- a/balanceNexrun.cfg
+++ b/balanceNexrun.cfg
@@ -603,6 +603,7 @@ set g_balance_seeker_flac_lifetime_rand 0.05
 set g_balance_seeker_flac_radius 100
 set g_balance_seeker_flac_refire 0.1
 set g_balance_seeker_flac_speed 3000
+set g_balance_seeker_flac_speed_up 1000
 set g_balance_seeker_flac_spread 0.4
 set g_balance_seeker_missile_accel 1.05
 set g_balance_seeker_missile_ammo 2
@@ -626,6 +627,7 @@ set g_balance_seeker_missile_smart_mindist 800
 set g_balance_seeker_missile_smart_trace_max 2500
 set g_balance_seeker_missile_smart_trace_min 1000
 set g_balance_seeker_missile_speed 700
+set g_balance_seeker_missile_speed_up 300
 set g_balance_seeker_missile_speed_max 1250
 set g_balance_seeker_missile_turnrate 0.65
 set g_balance_seeker_tag_ammo 1
diff --git a/balanceSamual.cfg b/balanceSamual.cfg
index c23691a8dd..862ff0b038 100644
--- a/balanceSamual.cfg
+++ b/balanceSamual.cfg
@@ -20,6 +20,7 @@ set g_weaponreplace_hlac 0 // I don't particularly like this weapon.
 set g_weaponreplace_campingrifle ""
 set g_weaponreplace_tuba ""
 set g_weaponreplace_fireball 0 // Don't kill me div0, just for now until I figure out a good balance for it.
+set g_weaponreplace_seeker ""
 set sv_q3acompat_machineshotgunswap 0 "shorthand for swapping uzi and shotgun (for Q3A map compatibility)"
 // }}}
 
@@ -602,6 +603,7 @@ set g_balance_seeker_flac_lifetime_rand 0.05
 set g_balance_seeker_flac_radius 100
 set g_balance_seeker_flac_refire 0.1
 set g_balance_seeker_flac_speed 3000
+set g_balance_seeker_flac_speed_up 1000
 set g_balance_seeker_flac_spread 0.4
 set g_balance_seeker_missile_accel 1.05
 set g_balance_seeker_missile_ammo 2
@@ -625,6 +627,7 @@ set g_balance_seeker_missile_smart_mindist 800
 set g_balance_seeker_missile_smart_trace_max 2500
 set g_balance_seeker_missile_smart_trace_min 1000
 set g_balance_seeker_missile_speed 700
+set g_balance_seeker_missile_speed_up 300
 set g_balance_seeker_missile_speed_max 1250
 set g_balance_seeker_missile_turnrate 0.65
 set g_balance_seeker_tag_ammo 1
diff --git a/qcsrc/client/projectile.qc b/qcsrc/client/projectile.qc
index 4c057929d5..d77e03c09a 100644
--- a/qcsrc/client/projectile.qc
+++ b/qcsrc/client/projectile.qc
@@ -269,7 +269,7 @@ void Ent_Projectile()
 			case PROJECTILE_FIREBALL: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("fireball"); break; // particle effect is good enough
 			case PROJECTILE_FIREMINE: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("firemine"); break; // particle effect is good enough
 			case PROJECTILE_TAG: setmodel(self, "models/laser.mdl"); self.traileffect = particleeffectnum("TR_ROCKET"); break;
-			case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.md3"); self.scale = 0.4; self.traileffect = particleeffectnum("TR_ROCKET"); break;
+			case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; self.traileffect = particleeffectnum("TR_ROCKET"); break;
 			case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.scale = 2; self.traileffect = particleeffectnum("TR_ROCKET"); break;
 			default:
 				error("Received invalid CSQC projectile, can't work with this!");
diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc
index 9d32f3234b..df762dbe32 100644
--- a/qcsrc/server/t_items.qc
+++ b/qcsrc/server/t_items.qc
@@ -1487,12 +1487,6 @@ void spawnfunc_item_jetpack(void)
 	StartItem ("models/items/g_jetpack.md3", "misc/itempickup.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Jet pack", IT_JETPACK, 0, FL_POWERUP, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
 }
 
-// we no longer have the seeker
-void spawnfunc_weapon_seeker()
-{
-	spawnfunc_weapon_fireball();
-}
-
 
 #define OP_SET 0
 #define OP_MIN 1
diff --git a/qcsrc/server/w_all.qc b/qcsrc/server/w_all.qc
index fdb02cf6bf..9a9b383024 100644
--- a/qcsrc/server/w_all.qc
+++ b/qcsrc/server/w_all.qc
@@ -14,3 +14,4 @@
 #include "w_tuba.qc"
 #include "w_campingrifle.qc"
 #include "w_fireball.qc"
+#include "w_seeker.qc"
diff --git a/qcsrc/server/w_seeker.qc b/qcsrc/server/w_seeker.qc
index b863875d4c..c50e13c773 100644
--- a/qcsrc/server/w_seeker.qc
+++ b/qcsrc/server/w_seeker.qc
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 9, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MEDIUM, "seeker", "seeker", "T.A.G. Seeker");
+REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 9, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "seeker", "seeker", "T.A.G. Seeker");
 #else
 //.float speed; = switchweapon
 //.float proxytime; = autoswitch
@@ -8,7 +8,7 @@ REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 9, WEP_FLAG_NORMAL | WEP_TYPE_SPLA
 void Seeker_Missile_Explode ()
 {
 	self.event_damage = SUB_Null;
-	RadiusDamage (self, self.owner, cvar("g_balance_seeker_missile_damage"), cvar("g_balance_seeker_missile_edgedamage"), cvar("g_balance_seeker_missile_radius"), world, cvar("g_balance_seeker_missile_force"), self.projectiledeathtype, other, WEP_SEEKER);
+	RadiusDamage (self, self.owner, cvar("g_balance_seeker_missile_damage"), cvar("g_balance_seeker_missile_edgedamage"), cvar("g_balance_seeker_missile_radius"), world, cvar("g_balance_seeker_missile_force"), self.projectiledeathtype, other);
 
 	remove (self);
 }
@@ -187,7 +187,6 @@ void Seeker_Fire_Missile(vector f_diff)
 	missile.nextthink       = time;// + 0.2;// + cvar("g_balance_seeker_missile_activate_delay");
 	missile.cnt             = time + cvar("g_balance_seeker_missile_lifetime");
 	missile.enemy           = self.enemy;
-	missile.switchweapon           = cvar("g_balance_seeker_missile_speed");
 	missile.solid           = SOLID_BBOX;
 	missile.scale           = 2;
 	missile.takedamage          = DAMAGE_YES;
@@ -203,8 +202,7 @@ void Seeker_Fire_Missile(vector f_diff)
 
 	missile.flags       = FL_PROJECTILE;
 
-	missile.velocity    = (w_shotdir + '0 0 0.45') * missile.switchweapon;
-	W_SetupProjectileVelocity(missile);
+	W_SETUPPROJECTILEVELOCITY_UP(missile, g_balance_seeker_missile);
 
 	missile.switchweapon = vlen(missile.velocity);
 	missile.angles = vectoangles (missile.velocity);
@@ -344,9 +342,8 @@ void Seeker_Fire_Tag()
 
 	missile.flags       = FL_PROJECTILE;
 
-	missile.velocity    = w_shotdir  * cvar("g_balance_seeker_tag_speed");
 	missile.movetype    = MOVETYPE_FLY;
-	W_SetupProjectileVelocity(missile);
+	W_SETUPPROJECTILEVELOCITY(missile, g_balance_seeker_tag);
 	missile.angles = vectoangles (missile.velocity);
 
 	CSQCProjectile(missile, TRUE, PROJECTILE_TAG, FALSE); // has sound
@@ -357,7 +354,7 @@ void Seeker_Flac_Explode ()
 {
 	self.event_damage = SUB_Null;
 
-	RadiusDamage (self, self.owner, cvar("g_balance_seeker_flac_damage"), cvar("g_balance_seeker_flac_edgedamage"), cvar("g_balance_seeker_flac_radius"), world, cvar("g_balance_seeker_flac_force"), self.projectiledeathtype, other, WEP_SEEKER);
+	RadiusDamage (self, self.owner, cvar("g_balance_seeker_flac_damage"), cvar("g_balance_seeker_flac_edgedamage"), cvar("g_balance_seeker_flac_radius"), world, cvar("g_balance_seeker_flac_force"), self.projectiledeathtype, other);
 
 	remove (self);
 }
@@ -417,10 +414,7 @@ void Seeker_Fire_Flac()
 	missile.projectiledeathtype = WEP_SEEKER | HITTYPE_SECONDARY;
 
 	missile.movetype = MOVETYPE_FLY;
-	w_shotdir = w_shotdir + '0 0 0.3';
-	missile.velocity    = (w_shotdir  + randomvec() * cvar("g_balance_seeker_flac_spread")) * cvar("g_balance_seeker_flac_speed");
-
-	W_SetupProjectileVelocity(missile);
+	W_SETUPPROJECTILEVELOCITY_UP(missile, g_balance_seeker_flac);
 
 	missile.angles = vectoangles (missile.velocity);
 	missile.flags = FL_PROJECTILE;
-- 
2.39.5