SERVER: More accurate weapon walk and sprint speed math and data

This commit is contained in:
Ian 2023-03-08 20:03:35 -05:00
parent 377453f04b
commit acd2ac8062
2 changed files with 66 additions and 28 deletions

View file

@ -218,7 +218,7 @@ void() PlayerPreThink =
if (self.downed) { if (self.downed) {
self.maxspeed = 30; self.maxspeed = 30;
} else { } else {
self.maxspeed = 175; self.maxspeed = 190;
if (self.sprinting) { if (self.sprinting) {
#ifdef FTE #ifdef FTE
@ -234,7 +234,7 @@ void() PlayerPreThink =
#endif // FTE #endif // FTE
playrun1(); playrun1();
self.maxspeed *= 1.66; self.maxspeed *= 1.5; // down from 1.66x, to match WaW
} else if (!self.sprinting && !self.zoom) { } else if (!self.sprinting && !self.zoom) {
#ifdef FTE #ifdef FTE

View file

@ -1226,45 +1226,83 @@ float(float wep, float delaytype) getWeaponDelay =
return 0; return 0;
} }
float GetWeaponWalkSpeed(float perks, float weapontype) #define SPEED_MULTIPLIER_STANDARD 1
#define SPEED_MULTIPLIER_RIFLE 0.88
#define SPEED_MULTIPLIER_HEAVY 0.75
#define SPEED_MULTIPLIER_ULTRAHEAVY 0.66
float GetWeaponWalkSpeed(float perks, float weapon)
{ {
float spd; // leave this at 0 so people who add new weapons know they did something WRONG >:D
float speed_multiplier = 0;
spd = 0; switch (weapon) {
case W_COLT:
switch(weapontype) { case W_BIATCH:
default: spd = 1; case W_MP40:
case W_KAR: case W_AFTERBURNER:
case W_PPSH:
case W_REAPER:
case W_STG:
case W_SPATZ:
case W_THOMPSON:
case W_GIBS:
case W_TYPE:
case W_SAMURAI:
case W_DB:
case W_BORE:
case W_SAWNOFF:
case W_SNUFF:
case W_TRENCH:
case W_GUT:
case W_BAR:
case W_WIDOW:
case W_FG:
case W_IMPELLER:
case W_RAY:
case W_PORTER:
case W_TESLA:
case W_DG3:
case W_MP5K:
case W_KOLLIDER:
speed_multiplier = SPEED_MULTIPLIER_STANDARD;
break;
case W_357: case W_357:
case W_GEWEHR:
case W_M1:
case W_M1A1:
case W_KAR_SCOPE:
case W_KILLU: case W_KILLU:
case W_COMPRESSOR: case W_KAR:
case W_M1000:
case W_WIDDER:
case W_ARMAGEDDON: case W_ARMAGEDDON:
case W_KAR_SCOPE:
case W_HEADCRACKER: case W_HEADCRACKER:
spd = 0.9; case W_GEWEHR:
case W_M2: case W_COMPRESSOR:
spd = 0.67; case W_M1A1:
case W_MG: case W_WIDDER:
case W_BROWNING: case W_M1:
case W_PANZER: case W_M1000:
speed_multiplier = SPEED_MULTIPLIER_RIFLE;
break;
case W_PTRS: case W_PTRS:
case W_BARRACUDA:
case W_ACCELERATOR:
case W_PENETRATOR: case W_PENETRATOR:
spd = 0.75; case W_BROWNING:
case W_ACCELERATOR:
case W_MG:
case W_BARRACUDA:
case W_PANZER:
case W_LONGINUS:
speed_multiplier = SPEED_MULTIPLIER_HEAVY;
break;
case W_M2:
case W_FIW: case W_FIW:
spd = 0.85; speed_multiplier = SPEED_MULTIPLIER_ULTRAHEAVY;
break;
default:
break;
} }
if (perks & P_STAMIN) if (perks & P_STAMIN)
spd *= 1.07; speed_multiplier *= 1.07;
return spd; return speed_multiplier;
} }
// forward/back,right/left,down/up // forward/back,right/left,down/up
vector GetWeaponADSPos(float wep) { vector GetWeaponADSPos(float wep) {