From 7671b9c358048a30a761164a52550cd8032f36c6 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 6 Jun 2013 15:54:00 +1000 Subject: [PATCH] Move norecoil to the mutator system --- qcsrc/server/autocvars.qh | 1 - qcsrc/server/cl_weaponsystem.qc | 3 +-- qcsrc/server/defs.qh | 2 +- qcsrc/server/g_world.qc | 4 ---- qcsrc/server/miscfunctions.qc | 2 +- qcsrc/server/mutators/mutator_norecoil.qc | 21 ++++++++++++++++++++ qcsrc/server/mutators/mutators.qh | 1 + qcsrc/server/progs.src | 1 + qcsrc/server/w_hlac.qc | 17 ++++++---------- qcsrc/server/w_uzi.qc | 24 +++++++++-------------- 10 files changed, 41 insertions(+), 35 deletions(-) create mode 100644 qcsrc/server/mutators/mutator_norecoil.qc diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 71c399312..aa5b291e3 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -931,7 +931,6 @@ float autocvar_g_nix_with_laser; float autocvar_g_nix_with_powerups; float autocvar_g_nodepthtestitems; float autocvar_g_nodepthtestplayers; -float autocvar_g_norecoil; float autocvar_g_onslaught_cp_buildhealth; float autocvar_g_onslaught_cp_buildtime; float autocvar_g_onslaught_cp_health; diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index 26af874e2..b990085ba 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -233,8 +233,7 @@ void W_SetupShot_Dir_ProjectileSize_Range(entity ent, vector s_forward, vector m ent.dphitcontentsmask = oldsolid; // restore solid type (generally SOLID_SLIDEBOX) - if (!g_norecoil) - ent.punchangle_x = recoil * -1; + ent.punchangle_x = recoil * -1; if (snd != "") { diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index 24f251670..1457836c8 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -16,7 +16,7 @@ noref float require_spawnfunc_prefix; // if this float exists, only functions wi // Globals -float g_cloaked, g_footsteps, g_jump_grunt, g_grappling_hook, g_minstagib, g_norecoil; +float g_cloaked, g_footsteps, g_jump_grunt, g_grappling_hook, g_minstagib; float g_warmup_limit; float g_warmup_allguns; float g_warmup_allow_timeout; diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 19961d8ae..85bab3c55 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -702,10 +702,6 @@ void spawnfunc_worldspawn (void) if(autocvar_g_weaponarena != "0") s = strcat(s, ":", autocvar_g_weaponarena, " arena"); - // TODO to mutator system - if(autocvar_g_norecoil) - s = strcat(s, ":norecoil"); - // TODO to mutator system if(autocvar_g_powerups == 0) s = strcat(s, ":no_powerups"); diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index e61f38754..76885d3ed 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -922,6 +922,7 @@ void readlevelcvars(void) CHECK_MUTATOR_ADD("g_midair", mutator_midair, 1); CHECK_MUTATOR_ADD("g_bloodloss", mutator_bloodloss, !cvar("g_minstagib")); CHECK_MUTATOR_ADD("g_random_gravity", mutator_random_gravity, 1); + CHECK_MUTATOR_ADD("g_norecoil", mutator_norecoil, 1); CHECK_MUTATOR_ADD("g_sandbox", sandbox, 1); #undef CHECK_MUTATOR_ADD @@ -956,7 +957,6 @@ void readlevelcvars(void) g_footsteps = cvar("g_footsteps"); g_grappling_hook = cvar("g_grappling_hook"); g_jetpack = cvar("g_jetpack"); - g_norecoil = cvar("g_norecoil"); sv_maxidle = cvar("sv_maxidle"); sv_maxidle_spectatorsareidle = cvar("sv_maxidle_spectatorsareidle"); sv_autotaunt = cvar("sv_autotaunt"); diff --git a/qcsrc/server/mutators/mutator_norecoil.qc b/qcsrc/server/mutators/mutator_norecoil.qc new file mode 100644 index 000000000..eed000c05 --- /dev/null +++ b/qcsrc/server/mutators/mutator_norecoil.qc @@ -0,0 +1,21 @@ +MUTATOR_HOOKFUNCTION(norecoil_PlayerThink) +{ + if(IS_PLAYER(self)) + self.punchangle = '0 0 0'; + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(norecoil_BuildMutatorsString) +{ + ret_string = strcat(ret_string, ":norecoil"); + return FALSE; +} + +MUTATOR_DEFINITION(mutator_norecoil) +{ + MUTATOR_HOOK(PlayerPreThink, norecoil_PlayerThink, CBC_ORDER_ANY); + MUTATOR_HOOK(BuildMutatorsString, midair_BuildMutatorsString, CBC_ORDER_ANY); + + return FALSE; +} diff --git a/qcsrc/server/mutators/mutators.qh b/qcsrc/server/mutators/mutators.qh index 36bc04559..ef3a7e9c9 100644 --- a/qcsrc/server/mutators/mutators.qh +++ b/qcsrc/server/mutators/mutators.qh @@ -25,5 +25,6 @@ MUTATOR_DECLARATION(mutator_pinata); MUTATOR_DECLARATION(mutator_midair); MUTATOR_DECLARATION(mutator_bloodloss); MUTATOR_DECLARATION(mutator_random_gravity); +MUTATOR_DECLARATION(mutator_norecoil); MUTATOR_DECLARATION(sandbox); diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index 37dc1a02c..e16e4e969 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -252,6 +252,7 @@ mutators/mutator_pinata.qc mutators/mutator_midair.qc mutators/mutator_bloodloss.qc mutators/mutator_random_gravity.qc +mutators/mutator_norecoil.qc ../warpzonelib/anglestransform.qc ../warpzonelib/mathlib.qc diff --git a/qcsrc/server/w_hlac.qc b/qcsrc/server/w_hlac.qc index 0b5d386fd..ec2d6726f 100644 --- a/qcsrc/server/w_hlac.qc +++ b/qcsrc/server/w_hlac.qc @@ -41,11 +41,9 @@ void W_HLAC_Attack (void) W_SetupShot (self, FALSE, 3, "weapons/lasergun_fire.wav", CH_WEAPON_A, autocvar_g_balance_hlac_primary_damage); pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); - if (!g_norecoil) - { - self.punchangle_x = random () - 0.5; - self.punchangle_y = random () - 0.5; - } + + self.punchangle_x = random () - 0.5; + self.punchangle_y = random () - 0.5; missile = spawn (); missile.owner = missile.realowner = self; @@ -128,12 +126,9 @@ void W_HLAC_Attack2 (void) for(i=autocvar_g_balance_hlac_secondary_shots;i>0;--i) W_HLAC_Attack2f(); - - if (!g_norecoil) - { - self.punchangle_x = random () - 0.5; - self.punchangle_y = random () - 0.5; - } + + self.punchangle_x = random () - 0.5; + self.punchangle_y = random () - 0.5; } // weapon frames diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc index 923ed9504..a1fa8a99c 100644 --- a/qcsrc/server/w_uzi.qc +++ b/qcsrc/server/w_uzi.qc @@ -52,11 +52,9 @@ void UziFlash() void W_UZI_Attack (float deathtype) { W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, ((self.misc_bulletcounter == 1) ? autocvar_g_balance_uzi_first_damage : autocvar_g_balance_uzi_sustained_damage)); - if (!g_norecoil) - { - self.punchangle_x = random () - 0.5; - self.punchangle_y = random () - 0.5; - } + + self.punchangle_x = random () - 0.5; + self.punchangle_y = random () - 0.5; // this attack_finished just enforces a cooldown at the end of a burst ATTACK_FINISHED(self) = time + autocvar_g_balance_uzi_first_refire * W_WeaponRateFactor(); @@ -129,11 +127,9 @@ void uzi_mode1_fire_auto() W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo); W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, autocvar_g_balance_uzi_sustained_damage); - if (!g_norecoil) - { - self.punchangle_x = random () - 0.5; - self.punchangle_y = random () - 0.5; - } + + self.punchangle_x = random () - 0.5; + self.punchangle_y = random () - 0.5; uzi_spread = bound(autocvar_g_balance_uzi_spread_min, autocvar_g_balance_uzi_spread_min + (autocvar_g_balance_uzi_spread_add * self.misc_bulletcounter), autocvar_g_balance_uzi_spread_max); fireBallisticBullet(w_shotorg, w_shotdir, uzi_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, autocvar_g_balance_uzi_sustained_force, WEP_UZI, 0, 1, autocvar_g_balance_uzi_bulletconstant); @@ -156,11 +152,9 @@ void uzi_mode1_fire_auto() void uzi_mode1_fire_burst() { W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, autocvar_g_balance_uzi_sustained_damage); - if (!g_norecoil) - { - self.punchangle_x = random () - 0.5; - self.punchangle_y = random () - 0.5; - } + + self.punchangle_x = random () - 0.5; + self.punchangle_y = random () - 0.5; fireBallisticBullet(w_shotorg, w_shotdir, autocvar_g_balance_uzi_burst_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, autocvar_g_balance_uzi_sustained_force, WEP_UZI, 0, 1, autocvar_g_balance_uzi_bulletconstant); endFireBallisticBullet(); -- 2.39.2