From 97434f1c0bf1b95249bdca7398f87e9b302935f0 Mon Sep 17 00:00:00 2001 From: div0 Date: Fri, 7 Aug 2009 14:28:48 +0000 Subject: [PATCH] also make projectile speed variable :P git-svn-id: svn://svn.icculus.org/nexuiz/trunk@7383 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 3 ++- data/qcsrc/server/bots.qc | 2 ++ data/qcsrc/server/cl_weaponsystem.qc | 16 +++++++++------- data/qcsrc/server/miscfunctions.qc | 2 ++ data/qcsrc/server/w_hlac.qc | 2 +- data/qcsrc/server/w_minstanex.qc | 2 +- data/qcsrc/server/w_rocketlauncher.qc | 14 +++++++------- data/qcsrc/server/w_uzi.qc | 2 +- 8 files changed, 25 insertions(+), 18 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 48274e477..e016ff22b 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -1592,7 +1592,8 @@ set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen set g_balance_pause_fuel_rot 5 set g_balance_pause_fuel_rot_spawn 10 -set g_weaponspeedfactor 1 "weapon fire rate multiplier" +set g_weaponspeedfactor 1 "weapon projectile speed multiplier" +set g_weaponratefactor 1 "weapon fire rate multiplier" set g_weapondamagefactor 1 "weapon damage multiplier" set g_weaponforcefactor 1 "weapon force multiplier" diff --git a/data/qcsrc/server/bots.qc b/data/qcsrc/server/bots.qc index 76506df5a..17bc23f4a 100644 --- a/data/qcsrc/server/bots.qc +++ b/data/qcsrc/server/bots.qc @@ -2415,6 +2415,8 @@ float bot_aim(float shotspeed, float shotspeedupward, float maxshottime, float a dprint(", ", ftos(applygravity)); dprint(");\n"); */ + shotspeed *= g_weaponspeedfactor; + shotspeedupward *= g_weaponspeedfactor; if (!shotspeed) { dprint("bot_aim: WARNING: weapon ", W_Name(self.weapon), " shotspeed is zero!\n"); diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 7bf0c4e03..aa4c2b29b 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -7,10 +7,10 @@ =========================================================================== */ -float W_WeaponSpeedFactor() +float W_WeaponRateFactor() { float t; - t = 1.0 / g_weaponspeedfactor; + t = 1.0 / g_weaponratefactor; if(g_runematch) { @@ -640,7 +640,7 @@ void CL_Weaponentity_Think() f = 0; if (self.state == WS_RAISE) { - f = (self.owner.weapon_nextthink - time) * g_weaponspeedfactor / cvar("g_balance_weaponswitchdelay"); + f = (self.owner.weapon_nextthink - time) * g_weaponratefactor / cvar("g_balance_weaponswitchdelay"); self.angles_x = -90 * f * f; if (qcweaponanimation) { @@ -650,7 +650,7 @@ void CL_Weaponentity_Think() } else if (self.state == WS_DROP) { - f = 1 - (self.owner.weapon_nextthink - time) * g_weaponspeedfactor / cvar("g_balance_weaponswitchdelay"); + f = 1 - (self.owner.weapon_nextthink - time) * g_weaponratefactor / cvar("g_balance_weaponswitchdelay"); self.angles_x = -90 * f * f; if (qcweaponanimation) { @@ -1034,7 +1034,7 @@ float weapon_prepareattack(float secondary, float attacktime) ATTACK_FINISHED(self) = time; //dprint("resetting attack finished to ", ftos(time), "\n"); } - ATTACK_FINISHED(self) = ATTACK_FINISHED(self) + attacktime * W_WeaponSpeedFactor(); + ATTACK_FINISHED(self) = ATTACK_FINISHED(self) + attacktime * W_WeaponRateFactor(); } self.bulletcounter += 1; //dprint("attack finished ", ftos(ATTACK_FINISHED(self)), "\n"); @@ -1137,7 +1137,7 @@ void weapon_thinkf(float fr, float t, void() func) a = self.weaponentity.anim_fire2; else if (fr == WFRAME_RELOAD) a = self.weaponentity.anim_reload; - a_z *= g_weaponspeedfactor; + a_z *= g_weaponratefactor; setanim(self.weaponentity, a, restartanim == FALSE, restartanim, restartanim); } } @@ -1151,7 +1151,7 @@ void weapon_thinkf(float fr, float t, void() func) backtrace("Tried to override initial weapon think function - should this really happen?"); } - t *= W_WeaponSpeedFactor(); + t *= W_WeaponRateFactor(); // VorteX: haste can be added here if (self.weapon_think == w_ready) @@ -1192,6 +1192,8 @@ vector W_CalculateProjectileVelocity(vector pvelocity, vector mvelocity) float nstyle; vector outvelocity; + mvelocity = mvelocity * g_weaponspeedfactor; + mdirection = normalize(mvelocity); mspeed = vlen(mvelocity); diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index f00a3d5cf..f15fb1fa2 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -704,6 +704,7 @@ float g_pickup_healthmega_max; float g_weaponarena; string g_weaponarena_list; float g_weaponspeedfactor; +float g_weaponratefactor; float g_weapondamagefactor; float g_weaponforcefactor; @@ -1077,6 +1078,7 @@ void readlevelcvars(void) g_weaponarena = 0; g_weaponspeedfactor = cvar("g_weaponspeedfactor"); + g_weaponratefactor = cvar("g_weaponratefactor"); g_weapondamagefactor = cvar("g_weapondamagefactor"); g_weaponforcefactor = cvar("g_weaponforcefactor"); diff --git a/data/qcsrc/server/w_hlac.qc b/data/qcsrc/server/w_hlac.qc index 0c93a8a42..73ae1a0da 100644 --- a/data/qcsrc/server/w_hlac.qc +++ b/data/qcsrc/server/w_hlac.qc @@ -156,7 +156,7 @@ void HLAC_fire1_02() return; } - ATTACK_FINISHED(self) = time + cvar("g_balance_hlac_primary_refire") * W_WeaponSpeedFactor(); + ATTACK_FINISHED(self) = time + cvar("g_balance_hlac_primary_refire") * W_WeaponRateFactor(); W_HLAC_Attack(); self.HLAC_bulletcounter = self.HLAC_bulletcounter + 1; weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_hlac_primary_refire"), HLAC_fire1_02); diff --git a/data/qcsrc/server/w_minstanex.qc b/data/qcsrc/server/w_minstanex.qc index 47f73293d..f84f04cf5 100644 --- a/data/qcsrc/server/w_minstanex.qc +++ b/data/qcsrc/server/w_minstanex.qc @@ -151,7 +151,7 @@ float w_minstanex(float req) { if (self.jump_interval <= time) { - self.jump_interval = time + 0.9; + self.jump_interval = time + 0.9 * W_WeaponRateFactor(); W_Laser_Attack(FALSE); } } diff --git a/data/qcsrc/server/w_rocketlauncher.qc b/data/qcsrc/server/w_rocketlauncher.qc index 8a02ac5f6..27efdd6f4 100644 --- a/data/qcsrc/server/w_rocketlauncher.qc +++ b/data/qcsrc/server/w_rocketlauncher.qc @@ -26,7 +26,7 @@ void W_Rocket_Explode (void) self.owner.switchweapon = w_getbestweapon(self.owner); } if(g_laserguided_missile) - ATTACK_FINISHED(self.owner) = time + cvar("g_balance_rocketlauncher_refire") * W_WeaponSpeedFactor(); + ATTACK_FINISHED(self.owner) = time + cvar("g_balance_rocketlauncher_refire") * W_WeaponRateFactor(); } remove (self); } @@ -143,7 +143,7 @@ void W_Rocket_Think (void) { // accelerate makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0'); - velspeed = cvar("g_balance_rocketlauncher_laserguided_speed") - (self.velocity * v_forward); + 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); } @@ -151,9 +151,9 @@ void W_Rocket_Think (void) { // accelerate makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0'); - velspeed = cvar("g_balance_rocketlauncher_speed") - (self.velocity * v_forward); + 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") * frametime, velspeed); + self.velocity = self.velocity + v_forward * min(cvar("g_balance_rocketlauncher_speedaccel") * g_weaponspeedfactor * frametime, velspeed); } // laser guided, or remote detonation @@ -194,7 +194,7 @@ void W_Rocket_Think (void) 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_WeaponSpeedFactor(); + ATTACK_FINISHED(self.owner) = time + 0.2 * W_WeaponRateFactor(); } } else @@ -282,9 +282,9 @@ void W_Rocket_Attack (void) 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) - missile.velocity = w_shotdir * cvar("g_balance_rocketlauncher_laserguided_speedstart"); + missile.velocity = w_shotdir * cvar("g_balance_rocketlauncher_laserguided_speedstart") * g_weaponspeedfactor; else - missile.velocity = w_shotdir * cvar("g_balance_rocketlauncher_speedstart"); + missile.velocity = w_shotdir * cvar("g_balance_rocketlauncher_speedstart") * g_weaponspeedfactor; W_SetupProjectileVelocity(missile); missile.angles = vectoangles (missile.velocity); diff --git a/data/qcsrc/server/w_uzi.qc b/data/qcsrc/server/w_uzi.qc index dd0f18358..f83817bd6 100644 --- a/data/qcsrc/server/w_uzi.qc +++ b/data/qcsrc/server/w_uzi.qc @@ -30,7 +30,7 @@ void W_Uzi_Attack (float deathtype) } // this attack_finished just enforces a cooldown at the end of a burst - ATTACK_FINISHED(self) = time + cvar("g_balance_uzi_first_refire") * W_WeaponSpeedFactor(); + ATTACK_FINISHED(self) = time + cvar("g_balance_uzi_first_refire") * W_WeaponRateFactor(); if (self.uzi_bulletcounter == 1) fireBallisticBullet(w_shotorg, w_shotdir, cvar("g_balance_uzi_first_spread"), cvar("g_balance_uzi_speed"), 5, cvar("g_balance_uzi_first_damage"), 0, cvar("g_balance_uzi_first_force"), deathtype, 0, 1, cvar("g_balance_uzi_bulletconstant")); -- 2.39.2