]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Move footsteps & norecoil out of the mutator system
authorMario <mario.mario@y7mail.com>
Fri, 12 Jul 2013 00:36:55 +0000 (10:36 +1000)
committerMario <mario.mario@y7mail.com>
Fri, 12 Jul 2013 00:36:55 +0000 (10:36 +1000)
13 files changed:
qcsrc/server/autocvars.qh
qcsrc/server/cl_physics.qc
qcsrc/server/cl_weaponsystem.qc
qcsrc/server/defs.qh
qcsrc/server/g_world.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/mutator_footsteps.qc [deleted file]
qcsrc/server/mutators/mutator_norecoil.qc [deleted file]
qcsrc/server/mutators/mutators.qh
qcsrc/server/progs.src
qcsrc/server/sv_main.qc
qcsrc/server/w_hlac.qc
qcsrc/server/w_uzi.qc

index 63e31030e860054e507fabdb3e4588ca969b5302..3d640de5d0f09bd9aa4520d2772f54ce29768a91 100644 (file)
@@ -930,6 +930,7 @@ 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 329e7b56f023df91c9d432309f0d4ee56e2d654f..a7051ff14c4b18da5e95a228fae1ccd4c64c44ff 100644 (file)
@@ -852,6 +852,29 @@ void SV_PlayerPhysics()
                self.angles_z = 0;
        }
 
+       if(self.flags & FL_ONGROUND)
+       if(IS_PLAYER(self)) // no fall sounds for observers thank you very much
+       if(self.wasFlying)
+       {
+               self.wasFlying = 0;
+
+               if(self.waterlevel < WATERLEVEL_SWIMMING)
+               if(time >= self.ladder_time)
+               if not(self.hook)
+               {
+                       self.nextstep = time + 0.3 + random() * 0.1;
+                       trace_dphitq3surfaceflags = 0;
+                       tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
+                       if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
+                       {
+                               if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
+                                       GlobalSound(globalsound_metalfall, CH_PLAYER, VOICETYPE_PLAYERSOUND);
+                               else
+                                       GlobalSound(globalsound_fall, CH_PLAYER, VOICETYPE_PLAYERSOUND);
+                       }
+               }
+       }
+
        if(IsFlying(self))
                self.wasFlying = 1;
 
index 22404828d3bd14c9dd5e4706cde5e8dfa1926ff3..81a4f5a7ef895e4a704b91b9a02ea9c0aad4436a 100644 (file)
@@ -233,7 +233,8 @@ void W_SetupShot_Dir_ProjectileSize_Range(entity ent, vector s_forward, vector m
 
        ent.dphitcontentsmask = oldsolid; // restore solid type (generally SOLID_SLIDEBOX)
 
-       ent.punchangle_x = recoil * -1;
+       if (!autocvar_g_norecoil)
+               ent.punchangle_x = recoil * -1;
 
        if (snd != "")
        {
index 47e4ebe832ee2e41fb4eeb53199bcbb46e314059..74d4345b824529469b3855d185a249e14221ccd4 100644 (file)
@@ -16,7 +16,7 @@ noref float require_spawnfunc_prefix; // if this float exists, only functions wi
 
 // Globals
 
-float g_cloaked, g_grappling_hook, g_minstagib;
+float g_cloaked, g_footsteps, g_grappling_hook, g_minstagib;
 float g_warmup_limit;
 float g_warmup_allguns;
 float g_warmup_allow_timeout;
@@ -226,6 +226,9 @@ float alreadychangedlevel;
 .float in_swamp;              // bool
 .entity swampslug;            // Uses this to release from swamp ("untouch" fix)
 
+// footstep interval
+.float nextstep;
+
 float blockSpectators; //if set, new or existing spectators or observers will be removed unless they become a player within g_maxplayers_spectator_blocktime seconds
 .float spectatortime; //point in time since the client is spectating or observing
 void checkSpectatorBlock();
index 85bab3c55685cf5202c36bc9659b758a5d5f243a..19961d8ae607066ad60f884ac03e0730d3278fbf 100644 (file)
@@ -702,6 +702,10 @@ 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 7c4c339383329c385195a78fae60a9251c22fc3f..018e4a3cb7d165b7a89200d07c31881d6c9c9269 100644 (file)
@@ -919,13 +919,11 @@ 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_multijump", mutator_multijump, 1);
-       CHECK_MUTATOR_ADD("g_footsteps", mutator_footsteps, 1);
        CHECK_MUTATOR_ADD("g_melee_only", mutator_melee_only, !cvar("g_minstagib"));
        CHECK_MUTATOR_ADD("g_nades", mutator_nades, 1);
        CHECK_MUTATOR_ADD("g_sandbox", sandbox, 1);
-    CHECK_MUTATOR_ADD("g_riflearena", mutator_riflearena, !cvar("g_minstagib"));
+       CHECK_MUTATOR_ADD("g_riflearena", mutator_riflearena, !cvar("g_minstagib"));
        CHECK_MUTATOR_ADD("g_campcheck", mutator_campcheck, 1);
        
        #undef CHECK_MUTATOR_ADD
@@ -956,6 +954,7 @@ void readlevelcvars(void)
        g_cloaked = cvar("g_cloaked");
     if(g_cts)
         g_cloaked = 1; // always enable cloak in CTS
+       g_footsteps = cvar("g_footsteps");
        g_grappling_hook = cvar("g_grappling_hook");
        g_jetpack = cvar("g_jetpack");
        sv_maxidle = cvar("sv_maxidle");
@@ -1336,6 +1335,12 @@ void precache()
             precache_playermodel(s);
     }
 
+    if (g_footsteps)
+    {
+        PrecacheGlobalSound((globalsound_step = "misc/footstep0 6"));
+        PrecacheGlobalSound((globalsound_metalstep = "misc/metalfootstep0 6"));
+    }
+
     // gore and miscellaneous sounds
     //precache_sound ("misc/h2ohit.wav");
     precache_model ("models/hook.md3");
diff --git a/qcsrc/server/mutators/mutator_footsteps.qc b/qcsrc/server/mutators/mutator_footsteps.qc
deleted file mode 100644 (file)
index 1538c3f..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-// footstep interval
-.float nextstep;
-
-MUTATOR_HOOKFUNCTION(footsteps_PlayerPhysics)
-{
-       if(self.flags & FL_ONGROUND)
-       if(IS_PLAYER(self)) // no fall sounds for observers thank you very much
-       if(self.wasFlying)
-       {
-               self.wasFlying = 0;
-
-               if(self.waterlevel < WATERLEVEL_SWIMMING)
-               if(time >= self.ladder_time)
-               if not(self.hook)
-               {
-                       self.nextstep = time + 0.3 + random() * 0.1;
-                       trace_dphitq3surfaceflags = 0;
-                       tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
-                       if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
-                       {
-                               if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
-                                       GlobalSound(globalsound_metalfall, CH_PLAYER, VOICETYPE_PLAYERSOUND);
-                               else
-                                       GlobalSound(globalsound_fall, CH_PLAYER, VOICETYPE_PLAYERSOUND);
-                       }
-               }
-       }
-       
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(footsteps_StartFrame)
-{
-       entity oldself = self;
-       
-       if(gameover)
-               return FALSE;
-       
-       for(self = world; (self = findfloat(self, damagedbycontents, TRUE)); )
-       {
-               float velocity_len = vlen(self.velocity);
-               // play stupid sounds
-               if (self.flags & FL_ONGROUND)
-               if (velocity_len > autocvar_sv_maxspeed * 0.6)
-               if (!self.deadflag)
-               if (time < self.lastground + 0.2)
-               {
-                       if((time > self.nextstep) || (time < (self.nextstep - 10.0)))
-                       {
-                               self.nextstep = time + 0.3 + random() * 0.1;
-                               trace_dphitq3surfaceflags = 0;
-                               tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
-                               if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
-                               {
-                                       if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
-                                               GlobalSound(globalsound_metalstep, CH_PLAYER, VOICETYPE_PLAYERSOUND);
-                                       else
-                                               GlobalSound(globalsound_step, CH_PLAYER, VOICETYPE_PLAYERSOUND);
-                               }
-                       }
-               }
-       }
-       self = oldself;
-       
-       return FALSE;
-}
-
-MUTATOR_HOOKFUNCTION(footsteps_BuildMutatorsString)
-{
-       ret_string = strcat(ret_string, ":Footsteps");
-       return FALSE;
-}
-
-MUTATOR_DEFINITION(mutator_footsteps)
-{
-       MUTATOR_HOOK(PlayerPhysics, footsteps_PlayerPhysics, CBC_ORDER_ANY);
-       MUTATOR_HOOK(SV_StartFrame, footsteps_StartFrame, CBC_ORDER_ANY);
-       MUTATOR_HOOK(BuildMutatorsString, footsteps_BuildMutatorsString, CBC_ORDER_ANY);
-       
-       MUTATOR_ONADD
-       {
-               PrecacheGlobalSound((globalsound_step = "misc/footstep0 6"));
-        PrecacheGlobalSound((globalsound_metalstep = "misc/metalfootstep0 6"));
-       }
-
-       return FALSE;
-}
diff --git a/qcsrc/server/mutators/mutator_norecoil.qc b/qcsrc/server/mutators/mutator_norecoil.qc
deleted file mode 100644 (file)
index e2ce268..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-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, norecoil_BuildMutatorsString, CBC_ORDER_ANY);
-
-       return FALSE;
-}
index 84dad48ca310cf26466d4fc45b477cd4e7df3b6f..6af356658e1b687b64c7c7b2d95756e156212293 100644 (file)
@@ -25,9 +25,7 @@ MUTATOR_DECLARATION(mutator_pinata);
 MUTATOR_DECLARATION(mutator_midair);
 MUTATOR_DECLARATION(mutator_bloodloss);
 MUTATOR_DECLARATION(mutator_random_gravity);
-MUTATOR_DECLARATION(mutator_norecoil);
 MUTATOR_DECLARATION(mutator_multijump);
-MUTATOR_DECLARATION(mutator_footsteps);
 MUTATOR_DECLARATION(mutator_melee_only);
 MUTATOR_DECLARATION(mutator_nades);
 MUTATOR_DECLARATION(mutator_riflearena);
index 6ee5e68caa4ea44862383a63ab64a6a430dae4ed..839d1dd682919aa02428ae95da4faeda37bcfec7 100644 (file)
@@ -254,9 +254,7 @@ mutators/mutator_pinata.qc
 mutators/mutator_midair.qc
 mutators/mutator_bloodloss.qc
 mutators/mutator_random_gravity.qc
-mutators/mutator_norecoil.qc
 mutators/mutator_multijump.qc
-mutators/mutator_footsteps.qc
 mutators/mutator_melee_only.qc
 mutators/mutator_nades.qc
 mutators/mutator_riflearena.qc
index 424b124f561fd9433b82c66ac9b5ade70696d52d..a9b2443b73f1715fdf1678a7a8b781517a32f624 100644 (file)
@@ -106,6 +106,34 @@ void CreatureFrame (void)
 
                        if(autocvar_g_maxspeed > 0 && velocity_len > autocvar_g_maxspeed)
                                Damage (self, world, world, 100000, DEATH_SHOOTING_STAR, self.origin, '0 0 0');
+                       // play stupid sounds
+                       if (g_footsteps)
+                       if (!gameover)
+                       if (self.flags & FL_ONGROUND)
+                       if (velocity_len > autocvar_sv_maxspeed * 0.6)
+                       if (!self.deadflag)
+                       if (time < self.lastground + 0.2)
+                       {
+                               if((time > self.nextstep) || (time < (self.nextstep - 10.0)))
+                               {
+                                       self.nextstep = time + 0.3 + random() * 0.1;
+                                       trace_dphitq3surfaceflags = 0;
+                                       tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
+                                       /*
+                                       if(trace_fraction == 1)
+                                               dprint("nohit\n");
+                                       else
+                                               dprint(ftos(trace_dphitq3surfaceflags), "\n");
+                                       */
+                                       if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
+                                       {
+                                               if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
+                                                       GlobalSound(globalsound_metalstep, CH_PLAYER, VOICETYPE_PLAYERSOUND);
+                                               else
+                                                       GlobalSound(globalsound_step, CH_PLAYER, VOICETYPE_PLAYERSOUND);
+                                       }
+                               }
+                       }
                }
                
         self.oldvelocity = self.velocity;
index ec2d6726ff717bc0978cef4fe96ae68d90042d1d..618a21ffe8e35c6bea70f3c4bc67de25632186df 100644 (file)
@@ -41,9 +41,11 @@ 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);
-       
-       self.punchangle_x = random () - 0.5;
-       self.punchangle_y = random () - 0.5;
+       if (!autocvar_g_norecoil)
+       {
+               self.punchangle_x = random () - 0.5;
+               self.punchangle_y = random () - 0.5;
+       }
 
        missile = spawn ();
        missile.owner = missile.realowner = self;
@@ -126,9 +128,12 @@ void W_HLAC_Attack2 (void)
 
     for(i=autocvar_g_balance_hlac_secondary_shots;i>0;--i)
         W_HLAC_Attack2f();
-       
-       self.punchangle_x = random () - 0.5;
-       self.punchangle_y = random () - 0.5;
+
+       if (!autocvar_g_norecoil)
+       {
+               self.punchangle_x = random () - 0.5;
+               self.punchangle_y = random () - 0.5;
+       }
 }
 
 // weapon frames
index a1fa8a99c9dae1292dcbe0cac30bc7c3b85360a8..38793a96f2c22bef6d459982fd6613c4a8e1ca0b 100644 (file)
@@ -52,9 +52,11 @@ 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));
-       
-       self.punchangle_x = random () - 0.5;
-       self.punchangle_y = random () - 0.5;
+       if (!autocvar_g_norecoil)
+       {
+               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();
@@ -127,9 +129,11 @@ 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);
-       
-       self.punchangle_x = random () - 0.5;
-       self.punchangle_y = random () - 0.5;
+       if (!autocvar_g_norecoil)
+       {
+               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);
@@ -152,9 +156,11 @@ 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);
-       
-       self.punchangle_x = random () - 0.5;
-       self.punchangle_y = random () - 0.5;
+       if (!autocvar_g_norecoil)
+       {
+               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();