]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Move norecoil to the mutator system
authorMario <mario.mario@y7mail.com>
Thu, 6 Jun 2013 05:54:00 +0000 (15:54 +1000)
committerMario <mario.mario@y7mail.com>
Thu, 6 Jun 2013 05:54:00 +0000 (15:54 +1000)
qcsrc/server/autocvars.qh
qcsrc/server/cl_weaponsystem.qc
qcsrc/server/defs.qh
qcsrc/server/g_world.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/mutator_norecoil.qc [new file with mode: 0644]
qcsrc/server/mutators/mutators.qh
qcsrc/server/progs.src
qcsrc/server/w_hlac.qc
qcsrc/server/w_uzi.qc

index 71c399312d3887c3577215acafb3385e48bb9fde..aa5b291e33e8d148be824d1aa7fa4ff4feda4037 100644 (file)
@@ -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;
index 26af874e2afdb88abe26f2532a55a89b79622969..b990085ba15f05a09f68fdf9b6326a165c38f90c 100644 (file)
@@ -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 != "")
        {
index 24f251670d0199edcfe880013c7e7986927d2a86..1457836c80e4586320e788e99fc6971c0f560bc3 100644 (file)
@@ -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;
index 19961d8ae607066ad60f884ac03e0730d3278fbf..85bab3c55685cf5202c36bc9659b758a5d5f243a 100644 (file)
@@ -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");
index e61f387541c8c8f1422be8c037e2565568bb9ff9..76885d3ed95c03290acc0b69994bcb56e28568e5 100644 (file)
@@ -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 (file)
index 0000000..eed000c
--- /dev/null
@@ -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;
+}
index 36bc045593b75a5b508f208fda6641aec5ed21d3..ef3a7e9c9988201c2d3a131702eae0226f72643b 100644 (file)
@@ -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);
index 37dc1a02ceeeefe31d6dbe8d6eb3eb2227cb481a..e16e4e969a809fce1e66e548aa2264c1fcf5e5ae 100644 (file)
@@ -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
index 0b5d386fd85aebb6294977b673a512e1c87daa70..ec2d6726ff717bc0978cef4fe96ae68d90042d1d 100644 (file)
@@ -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
index 923ed9504c9f075f7c917981689d76d3cd4ecd9c..a1fa8a99c9dae1292dcbe0cac30bc7c3b85360a8 100644 (file)
@@ -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();