diff --git a/src/client/cstrike/progs.src b/src/client/cstrike/progs.src index f83c38c1..b316986e 100644 --- a/src/client/cstrike/progs.src +++ b/src/client/cstrike/progs.src @@ -40,6 +40,7 @@ ../../shared/valve/animations.c ../../shared/cstrike/player.cpp ../player.c +../../shared/cstrike/pmove.c ../../shared/pmove.c predict.c ../predict.c diff --git a/src/client/gearbox/progs.src b/src/client/gearbox/progs.src index 853bed9b..d883bad8 100644 --- a/src/client/gearbox/progs.src +++ b/src/client/gearbox/progs.src @@ -36,6 +36,7 @@ ../../shared/valve/animations.c ../../shared/gearbox/player.cpp ../player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/predict.c ../predict.c diff --git a/src/client/hunger/progs.src b/src/client/hunger/progs.src index 02ba026b..921dc722 100644 --- a/src/client/hunger/progs.src +++ b/src/client/hunger/progs.src @@ -36,6 +36,7 @@ ../../shared/valve/animations.c ../../shared/hunger/player.cpp ../player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/predict.c ../predict.c diff --git a/src/client/poke646/progs.src b/src/client/poke646/progs.src index a37e0879..2f69ff89 100644 --- a/src/client/poke646/progs.src +++ b/src/client/poke646/progs.src @@ -36,6 +36,7 @@ ../../shared/valve/animations.c ../../shared/valve/player.cpp ../player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/predict.c ../predict.c diff --git a/src/client/rewolf/progs.src b/src/client/rewolf/progs.src index d9ced9cf..b354626e 100755 --- a/src/client/rewolf/progs.src +++ b/src/client/rewolf/progs.src @@ -43,6 +43,7 @@ decore.cpp ../../shared/valve/animations.c ../../shared/rewolf/player.cpp ../player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/predict.c ../predict.c diff --git a/src/client/scihunt/progs.src b/src/client/scihunt/progs.src index 5545d550..fe4d2773 100644 --- a/src/client/scihunt/progs.src +++ b/src/client/scihunt/progs.src @@ -39,6 +39,7 @@ ../../shared/valve/animations.c ../../shared/scihunt/player.cpp ../player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/predict.c ../predict.c diff --git a/src/client/tfc/progs.src b/src/client/tfc/progs.src index 78dd1ccf..7e5d6cb6 100755 --- a/src/client/tfc/progs.src +++ b/src/client/tfc/progs.src @@ -42,6 +42,7 @@ init.c ../../shared/valve/animations.c ../../shared/valve/player.cpp ../player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/predict.c ../predict.c diff --git a/src/client/valve/progs.src b/src/client/valve/progs.src index 27231eae..c98a751f 100755 --- a/src/client/valve/progs.src +++ b/src/client/valve/progs.src @@ -40,6 +40,7 @@ ../../shared/valve/animations.c ../../shared/valve/player.cpp ../player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/predict.c ../predict.c diff --git a/src/server/cstrike/progs.src b/src/server/cstrike/progs.src index fe1e221d..a6c3493a 100755 --- a/src/server/cstrike/progs.src +++ b/src/server/cstrike/progs.src @@ -31,6 +31,7 @@ ../../shared/effects.c ../cstrike/player.c +../../shared/cstrike/pmove.c ../../shared/pmove.c ../valve/spectator.c diff --git a/src/server/gearbox/progs.src b/src/server/gearbox/progs.src index 568a81bc..651d4fa4 100755 --- a/src/server/gearbox/progs.src +++ b/src/server/gearbox/progs.src @@ -68,6 +68,7 @@ ../../shared/effects.c ../valve/player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/spectator.c ../../shared/gearbox/items.h diff --git a/src/server/hunger/progs.src b/src/server/hunger/progs.src index d4500d83..0b25d3d4 100755 --- a/src/server/hunger/progs.src +++ b/src/server/hunger/progs.src @@ -65,6 +65,7 @@ ../../shared/effects.c ../valve/player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/spectator.c ../../shared/hunger/items.h diff --git a/src/server/poke646/progs.src b/src/server/poke646/progs.src index cdaa7ca7..dabe36ce 100755 --- a/src/server/poke646/progs.src +++ b/src/server/poke646/progs.src @@ -65,6 +65,7 @@ ../../shared/effects.c ../valve/player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/spectator.c ../../shared/poke646/items.h diff --git a/src/server/rewolf/progs.src b/src/server/rewolf/progs.src index 25a2ad78..d6959ea3 100755 --- a/src/server/rewolf/progs.src +++ b/src/server/rewolf/progs.src @@ -37,6 +37,7 @@ monster_human_gunman.cpp monster_human_unarmed.cpp ../../shared/effects.c ../valve/player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/spectator.c ../../shared/rewolf/items.h diff --git a/src/server/scihunt/progs.src b/src/server/scihunt/progs.src index 11c8940d..0025b893 100755 --- a/src/server/scihunt/progs.src +++ b/src/server/scihunt/progs.src @@ -67,6 +67,7 @@ monster_scientist.cpp ../../shared/effects.c ../valve/player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/spectator.c ../../shared/scihunt/items.h diff --git a/src/server/tfc/progs.src b/src/server/tfc/progs.src index 204684dc..a08e1648 100755 --- a/src/server/tfc/progs.src +++ b/src/server/tfc/progs.src @@ -29,6 +29,7 @@ ../../shared/effects.c ../valve/player.c +../../shared/valve/pmove.c ../../shared/pmove.c ../valve/spectator.c diff --git a/src/server/valve/progs.src b/src/server/valve/progs.src index bb77bd6f..0ce7202f 100755 --- a/src/server/valve/progs.src +++ b/src/server/valve/progs.src @@ -64,6 +64,7 @@ ../../shared/effects.c player.c +../../shared/valve/pmove.c ../../shared/pmove.c spectator.c ../../shared/valve/items.h diff --git a/src/shared/cstrike/defs.h b/src/shared/cstrike/defs.h index 861571a8..f262d485 100644 --- a/src/shared/cstrike/defs.h +++ b/src/shared/cstrike/defs.h @@ -15,6 +15,7 @@ */ #include "radio.h" +#include "weapons.h" enum { diff --git a/src/shared/cstrike/pmove.c b/src/shared/cstrike/pmove.c new file mode 100644 index 00000000..d390784e --- /dev/null +++ b/src/shared/cstrike/pmove.c @@ -0,0 +1,98 @@ + +float GamePMove_Maxspeed(player target) +{ + float spd = serverkeyfloat("phy_maxspeed"); + + switch (target.activeweapon) + { + case WEAPON_NONE: + spd *= 1.0f; + break; + case WEAPON_M3: + spd *= 0.92f; + break; + case WEAPON_XM1014: + spd *= 0.96f; + break; + case WEAPON_MP5: + spd *= 1.0f; + break; + case WEAPON_P90: + spd *= 0.98f; + break; + case WEAPON_UMP45: + spd *= 1.0f; + break; + case WEAPON_MAC10: + spd *= 1.0f; + break; + case WEAPON_TMP: + spd *= 1.0f; + break; + case WEAPON_AK47: + spd *= 0.88f; + break; + case WEAPON_SG552: + spd *= 0.94f; + break; + case WEAPON_M4A1: + spd *= 0.92f; + break; + case WEAPON_AUG: + spd *= 0.96f; + break; + case WEAPON_SCOUT: + spd *= 1.04f; + break; + case WEAPON_AWP: + spd *= 0.84f; + break; + case WEAPON_G3SG1: + spd *= 0.84f; + break; + case WEAPON_SG550: + spd *= 0.84f; + break; + case WEAPON_PARA: + spd *= 0.88f; + break; + case WEAPON_USP45: + spd *= 1.0f; + break; + case WEAPON_GLOCK18: + spd *= 1.0f; + break; + case WEAPON_DEAGLE: + spd *= 1.0f; + break; + case WEAPON_P228: + spd *= 1.0f; + break; + case WEAPON_ELITES: + spd *= 1.0f; + break; + case WEAPON_FIVESEVEN: + spd *= 1.0f; + break; + case WEAPON_KNIFE: + spd *= 1.0f; + break; + case WEAPON_HEGRENADE: + spd *= 1.0f; + break; + case WEAPON_FLASHBANG: + spd *= 1.0f; + break; + case WEAPON_SMOKEGRENADE: + spd *= 1.0f; + break; + case WEAPON_C4BOMB: + spd *= 1.0f; + break; + } + + if (target.flags & FL_CROUCHING) + spd *= 0.5f; + + return spd; +} diff --git a/src/shared/pmove.c b/src/shared/pmove.c index a4b9c0c8..13fa2a6a 100644 --- a/src/shared/pmove.c +++ b/src/shared/pmove.c @@ -751,7 +751,7 @@ PMove_Run(void) #endif /* maxspeed changes when crouching, TODO: make this game-specific */ - self.maxspeed = (self.flags & FL_CROUCHING) ? 135 : 270; + self.maxspeed = GamePMove_Maxspeed(self); /* when pressing the 'use' button, we also walk slower for precision */ if (input_buttons & INPUT_BUTTON5) { diff --git a/src/shared/valve/pmove.c b/src/shared/valve/pmove.c new file mode 100644 index 00000000..f2130048 --- /dev/null +++ b/src/shared/valve/pmove.c @@ -0,0 +1,4 @@ +float GamePMove_Maxspeed(player target) +{ + return (target.flags & FL_CROUCHING) ? 135 : 270; +}