mirror of
https://github.com/nzp-team/quakec.git
synced 2024-11-15 16:51:36 +00:00
12a2633738
Adds proper gun recoil to FTE, as well as moves spread calculation to be relative to crosshairs. CSQC's crosshair values are now accurate to World at War as well. Weapons are also much more precise ADS, so the Kar is more viable. Shotguns also no longer reduce spread when ADS, in parity with World at War :^)
4099 lines
85 KiB
C++
4099 lines
85 KiB
C++
/*
|
|
shared/weapon_defines.qc
|
|
|
|
all weapon stats are stored here
|
|
|
|
Copyright (C) 2021-2022 NZ:P Team
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to:
|
|
|
|
Free Software Foundation, Inc.
|
|
59 Temple Place - Suite 330
|
|
Boston, MA 02111-1307, USA
|
|
|
|
*/
|
|
|
|
/*
|
|
Structs are MAGICAL!
|
|
*/
|
|
var struct {
|
|
string name;
|
|
float magSize;
|
|
float reserveSize;
|
|
string vmodel;
|
|
string vmodel2;
|
|
string gmodel;
|
|
float isDual;
|
|
float firetype;
|
|
float nonpap;
|
|
float pap;
|
|
float ispap;
|
|
float damage;
|
|
float shotcount;
|
|
float bodypen;
|
|
float penetration;
|
|
float spread;
|
|
float fdelay;
|
|
float rdelay;
|
|
float walkspeed;
|
|
string firesound;
|
|
float skin;
|
|
float recoil;
|
|
float crossmin;
|
|
float crossmax;
|
|
float lowmag;
|
|
float lowreserve;
|
|
vector flash;
|
|
float flashsize;
|
|
float papWpn;
|
|
vector adsofs;
|
|
} CustomWeapons[] =
|
|
{
|
|
|
|
};
|
|
|
|
string(float wep) GetWeaponName =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
return "Colt M1911";
|
|
case W_BIATCH:
|
|
return "Mustang & Sally";
|
|
case W_KAR:
|
|
return "Kar 98k";
|
|
case W_ARMAGEDDON:
|
|
return "Armageddon";
|
|
case W_THOMPSON:
|
|
return "Thompson";
|
|
case W_GIBS:
|
|
return "Gibs-O-Matic";
|
|
case W_357:
|
|
return ".357 Magnum";
|
|
case W_KILLU:
|
|
return ".357 Plus 1 K1L-u";
|
|
case W_BAR:
|
|
return "BAR";
|
|
case W_WIDOW:
|
|
return "The Widow Maker";
|
|
case W_BK:
|
|
return "Ballistic Knife";
|
|
case W_BROWNING:
|
|
return "Browning M1919";
|
|
case W_ACCELERATOR:
|
|
return "B115 Accelerator";
|
|
case W_DB:
|
|
return "Double-Barreled Shotgun";
|
|
case W_BORE:
|
|
return "24 Bore Long Range";
|
|
case W_FG:
|
|
return "FG42";
|
|
case W_IMPELLER:
|
|
return "420 Impeller";
|
|
case W_GEWEHR:
|
|
return "Gewehr 43";
|
|
case W_COMPRESSOR:
|
|
return "G115 Compressor";
|
|
case W_KAR_SCOPE:
|
|
return "Scoped Kar 98k";
|
|
case W_HEADCRACKER:
|
|
return "Headcracker";
|
|
case W_M1:
|
|
return "M1 Garand";
|
|
case W_M1000:
|
|
return "M1000";
|
|
case W_M1A1:
|
|
return "M1A1 Carbine";
|
|
case W_WIDDER:
|
|
return "Widdershins RC-1";
|
|
case W_M2:
|
|
return "M2 Flamethrower";
|
|
case W_FIW:
|
|
return "F1W Nitrogen Cooled";
|
|
case W_MP40:
|
|
return "MP40";
|
|
case W_AFTERBURNER:
|
|
return "The Afterburner";
|
|
case W_MP5K:
|
|
return "MP5K";
|
|
case W_KOLLIDER:
|
|
return "MP115 Kollider";
|
|
case W_MG:
|
|
return "MG42";
|
|
case W_BARRACUDA:
|
|
return "Barracuda FU-A11";
|
|
case W_PANZER:
|
|
return "Panzerschrek";
|
|
case W_LONGINUS:
|
|
return "Longinus";
|
|
case W_PPSH:
|
|
return "PPSh-41";
|
|
case W_REAPER:
|
|
return "The Reaper";
|
|
case W_PTRS:
|
|
return "PTRS-41";
|
|
case W_PENETRATOR:
|
|
return "The Penetrator";
|
|
case W_RAY:
|
|
return "Ray Gun";
|
|
case W_PORTER:
|
|
return "Porter's X2 Ray Gun";
|
|
case W_SAWNOFF:
|
|
return "Sawnoff shotgun";
|
|
case W_SNUFF:
|
|
return "The Snuff Box";
|
|
case W_STG:
|
|
return "STG-44";
|
|
case W_SPATZ:
|
|
return "Spatz-447 +";
|
|
case W_TRENCH:
|
|
return "M1897 Trench Gun";
|
|
case W_GUT:
|
|
return "Gut Shot";
|
|
case W_TYPE:
|
|
return "Type 100";
|
|
case W_SAMURAI:
|
|
return "1001 Samurais";
|
|
case W_BOWIE:
|
|
return "Bowie Knife";
|
|
case W_GRENADE:
|
|
return "Grenades";
|
|
case W_BETTY:
|
|
return "Bouncing Betty";
|
|
case W_TESLA:
|
|
return "Wunderwaffe DG-2";
|
|
case W_DG3:
|
|
return "Wunderwaffe DG-3 JZ";
|
|
default:
|
|
return " ";
|
|
}
|
|
}
|
|
|
|
string(float perk) GetPerkName =
|
|
{
|
|
switch (perk)
|
|
{
|
|
case 1:
|
|
return "Quick Revive";
|
|
case 2:
|
|
return "Juggernog";
|
|
case 3:
|
|
return "Speed Cola";
|
|
case 4:
|
|
return "Double Tap";
|
|
case 5:
|
|
return "Stamin-Up";
|
|
case 6:
|
|
return "PhD Flopper";
|
|
case 7:
|
|
return "Deadshot Daiquiri";
|
|
case 8:
|
|
return "Mule Kick";
|
|
default:
|
|
return "NULL";
|
|
}
|
|
}
|
|
|
|
float(float wep) GetFiretype =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
return 1;
|
|
case W_BIATCH:
|
|
return 3;
|
|
case W_KAR:
|
|
return 1;
|
|
case W_ARMAGEDDON:
|
|
return 1;
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
return 0;
|
|
case W_357:
|
|
case W_KILLU:
|
|
return 1;
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
return 0;
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
return 0;
|
|
case W_DB:
|
|
case W_BORE:
|
|
return 1;
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
return 0;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
return 1;
|
|
case W_KAR_SCOPE:
|
|
return 1;
|
|
case W_HEADCRACKER:
|
|
return 0;
|
|
case W_M1:
|
|
case W_M1000:
|
|
return 1;
|
|
case W_M1A1:
|
|
return 1;
|
|
case W_WIDDER:
|
|
return 0;
|
|
case W_M2:
|
|
case W_FIW:
|
|
return 6;
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
return 0;
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
return 0;
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
return 0;
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
return 3;
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
return 0;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
return 0;
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
return 4;
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
return 1;
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
return 0;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
return 1;
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
return 0;
|
|
case W_TESLA:
|
|
case W_DG3:
|
|
return 5;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
#define HEAD_X 0
|
|
#define UPPER_TORSO_X 1
|
|
#define LOWER_TORSO_X 2
|
|
#define LIMBS_X 3
|
|
|
|
float(float wep, float type) getWeaponMultiplier =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
case W_BIATCH:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 3;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 3.5;
|
|
case UPPER_TORSO_X: return 1.8;
|
|
case LOWER_TORSO_X: return 1.7;
|
|
case LIMBS_X: return 0.7;
|
|
}
|
|
break;
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 4;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_357:
|
|
case W_KILLU:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 1.4;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 2.7;
|
|
case UPPER_TORSO_X: return 1.8;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1.5;
|
|
}
|
|
break;
|
|
case W_BK:
|
|
return 1;
|
|
break;
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 3;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_DB:
|
|
case W_BORE:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 1;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 2.7;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1.5;
|
|
}
|
|
break;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 2.7;
|
|
case UPPER_TORSO_X: return 1.25;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 0.8;
|
|
}
|
|
break;
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 10;
|
|
case UPPER_TORSO_X: return 1.5;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_M1:
|
|
case W_M1000:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 2.7;
|
|
case UPPER_TORSO_X: return 1.25;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 0.7;
|
|
}
|
|
break;
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 2.7;
|
|
case UPPER_TORSO_X: return 1.25;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 0.7;
|
|
}
|
|
break;
|
|
case W_M2:
|
|
case W_FIW:
|
|
return 3;
|
|
break;
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 4;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_MP5K:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 4;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_KOLLIDER:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 5;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 3;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
return 3;
|
|
break;
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 3;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 4;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
return 3;
|
|
break;
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 1;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 2.7;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 0.5;
|
|
}
|
|
break;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 1;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
switch (type)
|
|
{
|
|
case HEAD_X: return 4;
|
|
case UPPER_TORSO_X: return 1;
|
|
case LOWER_TORSO_X: return 1;
|
|
case LIMBS_X: return 1;
|
|
}
|
|
break;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
float(float wep) getWeaponMag =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
return 8;
|
|
case W_BIATCH:
|
|
return 6;
|
|
case W_KAR:
|
|
return 5;
|
|
case W_ARMAGEDDON:
|
|
return 8;
|
|
case W_THOMPSON:
|
|
return 20;
|
|
case W_GIBS:
|
|
return 40;
|
|
case W_357:
|
|
case W_KILLU:
|
|
return 6;
|
|
case W_BAR:
|
|
return 20;
|
|
case W_WIDOW:
|
|
return 30;
|
|
case W_BROWNING:
|
|
return 125;
|
|
case W_ACCELERATOR:
|
|
return 125;
|
|
case W_DB:
|
|
case W_BORE:
|
|
return 2;
|
|
case W_FG:
|
|
return 32;
|
|
case W_IMPELLER:
|
|
return 64;
|
|
case W_GEWEHR:
|
|
return 12;
|
|
case W_COMPRESSOR:
|
|
return 10;
|
|
case W_KAR_SCOPE:
|
|
return 5;
|
|
case W_HEADCRACKER:
|
|
return 10;
|
|
case W_M1:
|
|
return 8;
|
|
case W_M1000:
|
|
return 12;
|
|
case W_M1A1:
|
|
return 15;
|
|
case W_WIDDER:
|
|
return 15;
|
|
case W_M2:
|
|
return 200;
|
|
case W_FIW:
|
|
return 400;
|
|
case W_MP40:
|
|
return 32;
|
|
case W_AFTERBURNER:
|
|
return 64;
|
|
case W_MP5K:
|
|
return 30;
|
|
case W_KOLLIDER:
|
|
return 40;
|
|
case W_MG:
|
|
return 125;
|
|
case W_BARRACUDA:
|
|
return 125;
|
|
case W_PANZER:
|
|
return 1;
|
|
case W_LONGINUS:
|
|
return 3;
|
|
case W_PPSH:
|
|
return 71;
|
|
case W_REAPER:
|
|
return 115;
|
|
case W_PTRS:
|
|
return 5;
|
|
case W_PENETRATOR:
|
|
return 8;
|
|
case W_RAY:
|
|
return 20;
|
|
case W_PORTER:
|
|
return 40;
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
return 2;
|
|
case W_STG:
|
|
return 30;
|
|
case W_SPATZ:
|
|
return 60;
|
|
case W_TRENCH:
|
|
return 6;
|
|
case W_GUT:
|
|
return 10;
|
|
case W_TYPE:
|
|
return 30;
|
|
case W_SAMURAI:
|
|
return 60;
|
|
case W_TESLA:
|
|
return 3;
|
|
case W_DG3:
|
|
return 6;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
float(float wep) getWeaponAmmo =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
return 80;
|
|
case W_BIATCH:
|
|
return 80;
|
|
case W_KAR:
|
|
return 50;
|
|
case W_ARMAGEDDON:
|
|
return 60;
|
|
case W_THOMPSON:
|
|
return 200;
|
|
case W_GIBS:
|
|
return 250;
|
|
case W_357:
|
|
case W_KILLU:
|
|
return 80;
|
|
case W_BAR:
|
|
return 140;
|
|
case W_WIDOW:
|
|
return 180;
|
|
case W_BROWNING:
|
|
return 500;
|
|
case W_ACCELERATOR:
|
|
return 750;
|
|
case W_DB:
|
|
return 60;
|
|
case W_BORE:
|
|
return 60;
|
|
case W_FG:
|
|
return 192;
|
|
case W_IMPELLER:
|
|
return 400;
|
|
case W_GEWEHR:
|
|
return 120;
|
|
case W_COMPRESSOR:
|
|
return 170;
|
|
case W_KAR_SCOPE:
|
|
return 50;
|
|
case W_HEADCRACKER:
|
|
return 100;
|
|
case W_M1:
|
|
return 128;
|
|
case W_M1000:
|
|
return 150;
|
|
case W_M1A1:
|
|
return 120;
|
|
case W_WIDDER:
|
|
return 150;
|
|
case W_M2:
|
|
case W_FIW:
|
|
return 0;
|
|
case W_MP40:
|
|
return 192;
|
|
case W_AFTERBURNER:
|
|
return 192;
|
|
case W_MP5K:
|
|
return 120;
|
|
case W_KOLLIDER:
|
|
return 200;
|
|
case W_MG:
|
|
return 500;
|
|
case W_BARRACUDA:
|
|
return 750;
|
|
case W_PANZER:
|
|
return 20;
|
|
case W_LONGINUS:
|
|
return 30;
|
|
case W_PPSH:
|
|
return 355;
|
|
case W_REAPER:
|
|
return 700;
|
|
case W_PTRS:
|
|
return 60;
|
|
case W_PENETRATOR:
|
|
return 60;
|
|
case W_RAY:
|
|
return 160;
|
|
case W_PORTER:
|
|
return 200;
|
|
case W_SAWNOFF:
|
|
return 60;
|
|
case W_SNUFF:
|
|
return 60;
|
|
case W_STG:
|
|
return 180;
|
|
case W_SPATZ:
|
|
return 300;
|
|
case W_TRENCH:
|
|
return 60;
|
|
case W_GUT:
|
|
return 60;
|
|
case W_TYPE:
|
|
return 160;
|
|
case W_SAMURAI:
|
|
return 220;
|
|
case W_TESLA:
|
|
return 15;
|
|
case W_DG3:
|
|
return 32;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
float(float wep) getWeaponDamage =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
return 20;
|
|
case W_BIATCH:
|
|
return 1000;
|
|
case W_KAR:
|
|
return 100;
|
|
case W_ARMAGEDDON:
|
|
return 200;
|
|
case W_THOMPSON:
|
|
return 120;
|
|
case W_GIBS:
|
|
return 200;
|
|
case W_357:
|
|
return 1000;
|
|
case W_KILLU:
|
|
return 1400;
|
|
case W_BAR:
|
|
return 100;
|
|
case W_WIDOW:
|
|
return 200;
|
|
case W_BROWNING:
|
|
return 130;
|
|
case W_ACCELERATOR:
|
|
return 130;
|
|
case W_DB:
|
|
return 160;
|
|
case W_BORE:
|
|
return 320;
|
|
case W_FG:
|
|
return 100;
|
|
case W_IMPELLER:
|
|
return 110;
|
|
case W_GEWEHR:
|
|
return 90;
|
|
case W_COMPRESSOR:
|
|
return 200;
|
|
case W_KAR_SCOPE:
|
|
return 800;
|
|
case W_HEADCRACKER:
|
|
return 1000;
|
|
case W_M1:
|
|
return 105;
|
|
case W_M1000:
|
|
return 200;
|
|
case W_M1A1:
|
|
return 120;
|
|
case W_WIDDER:
|
|
return 200;
|
|
case W_MP40:
|
|
return 100;
|
|
case W_AFTERBURNER:
|
|
return 200;
|
|
case W_MP5K:
|
|
return 100;
|
|
case W_KOLLIDER:
|
|
return 140;
|
|
case W_MG:
|
|
return 130;
|
|
case W_BARRACUDA:
|
|
return 130;
|
|
case W_PANZER:
|
|
return 600;
|
|
case W_LONGINUS:
|
|
return 1000;
|
|
case W_PPSH:
|
|
return 100;
|
|
case W_REAPER:
|
|
return 150;
|
|
case W_PTRS:
|
|
return 1000;
|
|
case W_PENETRATOR:
|
|
return 1000;
|
|
case W_RAY:
|
|
return 1000;
|
|
case W_PORTER:
|
|
return 1000;
|
|
case W_SAWNOFF:
|
|
return 240;
|
|
case W_SNUFF:
|
|
return 240;
|
|
case W_STG:
|
|
return 100;
|
|
case W_SPATZ:
|
|
return 150;
|
|
case W_TRENCH:
|
|
return 120;
|
|
case W_GUT:
|
|
return 240;
|
|
case W_TYPE:
|
|
return 100;
|
|
case W_SAMURAI:
|
|
return 200;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
float(float wep) GetWeaponShotcount =
|
|
{
|
|
|
|
switch(wep)
|
|
{
|
|
case W_DB:
|
|
return 8;
|
|
case W_BORE:
|
|
return 10;
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
return 8;
|
|
case W_TRENCH:
|
|
return 8;
|
|
case W_GUT:
|
|
return 10;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
float(float wep, float penetration_times) getWeaponPenetration =
|
|
{
|
|
if (!penetration_times)
|
|
return 2;
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
case W_BIATCH:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.75;
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
if (penetration_times >= 3)
|
|
return 0;
|
|
return 1;
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.8;
|
|
case W_357:
|
|
case W_KILLU:
|
|
if (penetration_times >= 3)
|
|
return 0;
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
if (penetration_times >= 3)
|
|
return 0;
|
|
return 1;
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
if (penetration_times >= 3)
|
|
return 0;
|
|
return 1;
|
|
case W_DB:
|
|
case W_BORE:
|
|
if (penetration_times >= 1)
|
|
return 0;
|
|
return 0.5;
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.9;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.9;
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
if (penetration_times >= 3)
|
|
return 0;
|
|
return 1;
|
|
case W_M1:
|
|
case W_M1000:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.9;
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.9;
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.8;
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.8;
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
if (penetration_times >= 3)
|
|
return 0;
|
|
return 1;
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.75;
|
|
case W_PTRS:
|
|
if (penetration_times >= 3)
|
|
return 0;
|
|
return 1;
|
|
case W_PENETRATOR:
|
|
if (penetration_times >= 5)
|
|
return 0;
|
|
return 1;
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
if (penetration_times >= 1)
|
|
return 0;
|
|
return 0.4;
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.8;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
if (penetration_times >= 1)
|
|
return 0;
|
|
return 0.7;
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
if (penetration_times >= 2)
|
|
return 0;
|
|
return 0.8;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
float(float wep, float delaytype) getWeaponDelay =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
if (delaytype == RELOAD)
|
|
return 1.9;
|
|
else if (delaytype == FIRE)
|
|
return 0.100;
|
|
case W_BIATCH:
|
|
if (delaytype == RELOAD)
|
|
return 1.9;
|
|
else if (delaytype == FIRE)
|
|
return 0.225;
|
|
case W_ARMAGEDDON:
|
|
case W_KAR:
|
|
if (delaytype == RELOAD)
|
|
return 1.8;
|
|
else if (delaytype == FIRE)
|
|
return 0.3;
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
if (delaytype == RELOAD)
|
|
return 2.1;
|
|
else if (delaytype == FIRE) {
|
|
if (wep == W_THOMPSON)
|
|
return 0.085;
|
|
return 0.07;
|
|
}
|
|
case W_357:
|
|
case W_KILLU:
|
|
if (delaytype == RELOAD)
|
|
return 3;
|
|
else if (delaytype == FIRE)
|
|
return 0.4;
|
|
case W_BAR:
|
|
if (delaytype == RELOAD)
|
|
return 2.75;
|
|
else if (delaytype == FIRE)
|
|
return 0.17;
|
|
case W_WIDOW:
|
|
if (delaytype == RELOAD)
|
|
return 3.5;
|
|
else if (delaytype == FIRE)
|
|
return 0.12;
|
|
case W_BROWNING:
|
|
if (delaytype == RELOAD_EMP)
|
|
return 2;
|
|
if (delaytype == RELOAD_PAR)
|
|
return 3;
|
|
if (delaytype == RELOAD)
|
|
return 4.0;
|
|
else if (delaytype == FIRE)
|
|
return 0.104;
|
|
case W_ACCELERATOR:
|
|
if (delaytype == RELOAD_EMP)
|
|
return 2;
|
|
if (delaytype == RELOAD_PAR)
|
|
return 3;
|
|
if (delaytype == RELOAD)
|
|
return 4;
|
|
else if (delaytype == FIRE)
|
|
return 0.088;
|
|
case W_DB:
|
|
if (delaytype == RELOAD)
|
|
return 3;
|
|
else if (delaytype == FIRE)
|
|
return 0.5;
|
|
case W_BORE:
|
|
if (delaytype == RELOAD)
|
|
return 2.5;
|
|
else if (delaytype == FIRE)
|
|
return 0.5;
|
|
case W_FG:
|
|
if (delaytype == RELOAD)
|
|
return 2.6;
|
|
else if (delaytype == FIRE)
|
|
return 0.075;
|
|
case W_IMPELLER:
|
|
if (delaytype == RELOAD)
|
|
return 2.6;
|
|
else if (delaytype == FIRE)
|
|
return 0.068;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
if (delaytype == RELOAD)
|
|
return 3;
|
|
else if (delaytype == FIRE)
|
|
return 0.200;
|
|
case W_M1:
|
|
case W_M1000:
|
|
if (delaytype == RELOAD_EMP)
|
|
return 0.4;
|
|
if (delaytype == RELOAD_PAR)
|
|
return 1.4;
|
|
if (delaytype == RELOAD)
|
|
return 1.4;
|
|
else if (delaytype == FIRE)
|
|
return 0.275;
|
|
case W_M1A1:
|
|
if (delaytype == RELOAD)
|
|
return 2.9;
|
|
else if (delaytype == FIRE)
|
|
return 0.220;
|
|
case W_WIDDER:
|
|
if (delaytype == RELOAD)
|
|
return 2.9;
|
|
else if (delaytype == FIRE)
|
|
return 0.150;
|
|
case W_M2:
|
|
case W_FIW:
|
|
if (delaytype == RELOAD)
|
|
return 2.7;
|
|
else if (delaytype == FIRE)
|
|
return 0.02;
|
|
case W_MP40:
|
|
if (delaytype == RELOAD)
|
|
return 2.3;
|
|
else if (delaytype == FIRE)
|
|
return 0.120;
|
|
case W_AFTERBURNER:
|
|
if (delaytype == RELOAD)
|
|
return 2.3;
|
|
else if (delaytype == FIRE)
|
|
return 0.110;
|
|
case W_MP5K:
|
|
if (delaytype == RELOAD)
|
|
return 3.2;
|
|
else if (delaytype == FIRE)
|
|
return 0.085;
|
|
case W_KOLLIDER:
|
|
if (delaytype == RELOAD)
|
|
return 3.2;
|
|
else if (delaytype == FIRE)
|
|
return 0.085;
|
|
case W_MG:
|
|
if (delaytype == RELOAD)
|
|
return 4;
|
|
else if (delaytype == FIRE)
|
|
return 0.065;
|
|
case W_BARRACUDA:
|
|
if (delaytype == RELOAD)
|
|
return 4;
|
|
else if (delaytype == FIRE)
|
|
return 0.05;
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
if (delaytype == RELOAD)
|
|
return 1.55;
|
|
else if (delaytype == FIRE)
|
|
return 0.331;
|
|
case W_PPSH:
|
|
if (delaytype == RELOAD)
|
|
return 2.1;
|
|
else if (delaytype == FIRE)
|
|
return 0.05;
|
|
case W_REAPER:
|
|
if (delaytype == RELOAD)
|
|
return 2.1;
|
|
else if (delaytype == FIRE)
|
|
return 0.04;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
if (delaytype == RELOAD)
|
|
return 3;
|
|
else if (delaytype == FIRE)
|
|
return 0.8;
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
if (delaytype == RELOAD)
|
|
return 2.75;
|
|
else if (delaytype == FIRE)
|
|
return 0.35;
|
|
case W_SAWNOFF:
|
|
if (delaytype == RELOAD)
|
|
return 2.65;
|
|
else if (delaytype == FIRE)
|
|
return 0.283;
|
|
case W_SNUFF:
|
|
if (delaytype == RELOAD)
|
|
return 2;
|
|
else if (delaytype == FIRE)
|
|
return 0.283;
|
|
case W_STG:
|
|
if (delaytype == RELOAD)
|
|
return 2.5;
|
|
else if (delaytype == FIRE)
|
|
return 0.110;
|
|
case W_SPATZ:
|
|
if (delaytype == RELOAD)
|
|
return 2.15;
|
|
else if (delaytype == FIRE)
|
|
return 0.08;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
if (delaytype == RELOAD)
|
|
return 2.2;
|
|
else if (delaytype == FIRE)
|
|
return 0.283;
|
|
case W_TYPE:
|
|
if (delaytype == RELOAD)
|
|
return 2.25;
|
|
else if (delaytype == FIRE)
|
|
return 0.09;
|
|
case W_SAMURAI:
|
|
if (delaytype == RELOAD)
|
|
return 2.25;
|
|
else if (delaytype == FIRE)
|
|
return 0.07;
|
|
case W_TESLA:
|
|
if (delaytype == RELOAD)
|
|
return 4;
|
|
else if (delaytype == FIRE)
|
|
return 1;
|
|
break;
|
|
case W_DG3:
|
|
if (delaytype == RELOAD)
|
|
return 3.3;
|
|
else if (delaytype == FIRE)
|
|
return 1;
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
float GetWeaponWalkSpeed(float perks, float weapontype)
|
|
{
|
|
float spd;
|
|
|
|
spd = 0;
|
|
|
|
switch(weapontype) {
|
|
default: spd = 1;
|
|
case W_KAR:
|
|
case W_357:
|
|
case W_GEWEHR:
|
|
case W_M1:
|
|
case W_M1A1:
|
|
case W_KAR_SCOPE:
|
|
case W_KILLU:
|
|
case W_COMPRESSOR:
|
|
case W_M1000:
|
|
case W_WIDDER:
|
|
case W_ARMAGEDDON:
|
|
case W_HEADCRACKER:
|
|
spd = 0.9;
|
|
case W_M2:
|
|
spd = 0.67;
|
|
case W_MG:
|
|
case W_BROWNING:
|
|
case W_PANZER:
|
|
case W_PTRS:
|
|
case W_BARRACUDA:
|
|
case W_ACCELERATOR:
|
|
case W_PENETRATOR:
|
|
spd = 0.75;
|
|
case W_FIW:
|
|
spd = 0.85;
|
|
}
|
|
|
|
if (perks & P_STAMIN)
|
|
spd *= 1.07;
|
|
|
|
return spd;
|
|
}
|
|
// forward/back,right/left,down/up
|
|
vector GetWeaponADSPos(float wep) {
|
|
|
|
switch (wep) {
|
|
case W_COLT:
|
|
return [-2.99, 2.67, 0.92];
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
return [-2.19, 2.67, 1.5];
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
return [0.5, 3.03, 1.63];
|
|
case W_357:
|
|
case W_KILLU:
|
|
return [-2.6, 4.10, 0.5];
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
return [2.7, 1.90, 1.27];
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
return [-4.6, 3.95, 1.68];
|
|
case W_DB:
|
|
case W_BORE:
|
|
case W_SAWNOFF:
|
|
return [2.0, 2.9, 1.0];
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
return [-6.5, 7.4, 3.27];
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
return [-0.2, 2.55, 2.63];
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
return [-2.19, 2.67, 0.42];
|
|
case W_M1:
|
|
case W_M1000:
|
|
return [-1.6, 3.80, 1.12];
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
return [-3.0, 2.6, 1.6];
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
return [0.01, 5.65, 3.25];
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
return [-5.19, 5.15, 2.75];
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
return [-2.0, 3.35, 1.84];
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
return [-2.0, 3.68, 1.5];
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
return [-9.79, 6.6, 2.44];
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
return [-9.79, 4.86, 1.54];
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
return [0, 2.80, 1.1];
|
|
case W_M2:
|
|
case W_FIW:
|
|
return [0, 0.89, 0.82];
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
return [-1.50, 6.25, 0.87];
|
|
default:
|
|
return [0, 0, 0];
|
|
}
|
|
}
|
|
|
|
/*
|
|
===========================
|
|
Weapon PSP ADS Declarations
|
|
===========================
|
|
*/
|
|
|
|
vector GetWeaponADSOfs_PSP(float wep) =
|
|
{
|
|
|
|
switch(wep)
|
|
{
|
|
case W_COLT:
|
|
case W_BIATCH:
|
|
return [-5479.2, 1650, 0];
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
return [-5495.9, 2606.9, 0];
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
return [-5286, 706.1, 0];
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
return [-6200.3, 3407.6, 0];
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
return [-5527.1, 2880.3, 0];
|
|
case W_357:
|
|
case W_KILLU:
|
|
return [-8306.5, 879.2, 0];
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
return [-6643.7, 3509.2, 0];
|
|
case W_DB:
|
|
case W_BORE:
|
|
case W_SAWNOFF:
|
|
return [-5801.7, 2912.1, 0];
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
return [-5387.8, 3200.9, 0];
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
return [-3903.3, 2564.5, 0];
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
return [-14800, 6000, 0];
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
return [-12700, 2086.9, 0];
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
return [-5150, 5300, 0];
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
return [-7500, 3000, 0];
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
return [-11400, 6700, 0];
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
return [-10400, 5500, 0];
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
return [-400, -200, 0];
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
return [-9834, 2920, 0];
|
|
case W_M1:
|
|
case W_M1000:
|
|
return [-7700, 2200, 0];
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
return [-8000, 3020, -7000];
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
return [-14000, 5386.9, 0];
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
return [-3479.2, -650, 0];
|
|
default:
|
|
//Large values > 20ish cause weapon to flicker, scale model down if we encounter!
|
|
//Scale better be 4.3, or else viewbobbing is going to be inaccurate.
|
|
return [-5.4792, 1.6500, 0];
|
|
}
|
|
};
|
|
|
|
float(float wep, float frametype, optional float z) GetFrame =
|
|
{
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 2;
|
|
case RELOAD_START:
|
|
return 3;
|
|
case RELOAD_END:
|
|
return 26;
|
|
case SPRINT_IN_START:
|
|
return 33;
|
|
case SPRINT_IN_END:
|
|
return 34;
|
|
case SPRINT_START:
|
|
return 35;
|
|
case SPRINT_END:
|
|
return 40;
|
|
case SPRINT_OUT_START:
|
|
return 41;
|
|
case SPRINT_OUT_END:
|
|
return 42;
|
|
case TAKE_OUT_START:
|
|
return 29;
|
|
case TAKE_OUT_END:
|
|
return 32;
|
|
case PUT_OUT_START:
|
|
return 26;
|
|
case PUT_OUT_END:
|
|
return 29;
|
|
case RELOAD_CANCEL:
|
|
return 13;
|
|
}
|
|
break;
|
|
case W_BIATCH:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 2;
|
|
case RELOAD_START:
|
|
return 3;
|
|
case RELOAD_END:
|
|
return 36;
|
|
case SPRINT_IN_START:
|
|
return 33;
|
|
case SPRINT_IN_END:
|
|
return 34;
|
|
case SPRINT_START:
|
|
return 44;
|
|
case SPRINT_END:
|
|
return 43;
|
|
case SPRINT_OUT_START:
|
|
return 50;
|
|
case SPRINT_OUT_END:
|
|
return 42;
|
|
case TAKE_OUT_START:
|
|
return 39;
|
|
case TAKE_OUT_END:
|
|
return 42;
|
|
case PUT_OUT_START:
|
|
return 36;
|
|
case PUT_OUT_END:
|
|
return 39;
|
|
case RELOAD_CANCEL:
|
|
return 13;
|
|
}
|
|
break;
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 3;
|
|
case RELOAD_START:
|
|
return 14;
|
|
case RELOAD_END:
|
|
return 28;
|
|
case SPRINT_IN_START:
|
|
return 29;
|
|
case SPRINT_IN_END:
|
|
return 30;
|
|
case SPRINT_OUT_START:
|
|
return 30;
|
|
case SPRINT_OUT_END:
|
|
return 29;
|
|
case TAKE_OUT_START:
|
|
return 33;
|
|
case TAKE_OUT_END:
|
|
return 35;
|
|
case PUT_OUT_START:
|
|
return 32;
|
|
case PUT_OUT_END:
|
|
return 33;
|
|
case RELOAD_CANCEL:
|
|
return 21;
|
|
}
|
|
break;
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 2;
|
|
case RELOAD_START:
|
|
return 3;
|
|
case RELOAD_END:
|
|
return 25;
|
|
case SPRINT_IN_START:
|
|
return 26;
|
|
case SPRINT_IN_END:
|
|
return 27;
|
|
case SPRINT_OUT_START:
|
|
return 28;
|
|
case SPRINT_OUT_END:
|
|
return 29;
|
|
case TAKE_OUT_START:
|
|
return 32;
|
|
case TAKE_OUT_END:
|
|
return 35;
|
|
case PUT_OUT_START:
|
|
return 29;
|
|
case PUT_OUT_END:
|
|
return 32;
|
|
case RELOAD_CANCEL:
|
|
return 15;
|
|
}
|
|
break;
|
|
case W_357:
|
|
case W_KILLU:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 3;
|
|
case RELOAD_START:
|
|
return 4;
|
|
case RELOAD_END:
|
|
return 25;
|
|
case SPRINT_IN_START:
|
|
return 32;
|
|
case SPRINT_IN_END:
|
|
return 33;
|
|
case SPRINT_START:
|
|
return 35;
|
|
case SPRINT_END:
|
|
return 40;
|
|
case SPRINT_OUT_START:
|
|
return 41;
|
|
case SPRINT_OUT_END:
|
|
return 42;
|
|
case TAKE_OUT_START:
|
|
return 29;
|
|
case TAKE_OUT_END:
|
|
return 31;
|
|
case PUT_OUT_START:
|
|
return 26;
|
|
case PUT_OUT_END:
|
|
return 28;
|
|
case RELOAD_CANCEL:
|
|
return 14;
|
|
}
|
|
break;
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 2;
|
|
case RELOAD_START:
|
|
return 3;
|
|
case RELOAD_END:
|
|
return 36;
|
|
case SPRINT_IN_START:
|
|
return 37;
|
|
case SPRINT_IN_END:
|
|
return 38;
|
|
case SPRINT_OUT_START:
|
|
return 38;
|
|
case SPRINT_OUT_END:
|
|
return 37;
|
|
case TAKE_OUT_START:
|
|
return 41;
|
|
case TAKE_OUT_END:
|
|
return 39;
|
|
case PUT_OUT_START:
|
|
return 39;
|
|
case PUT_OUT_END:
|
|
return 41;
|
|
case RELOAD_CANCEL:
|
|
return 21;
|
|
}
|
|
break;
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 2;
|
|
case RELOAD_PART_START:
|
|
return 4;
|
|
case RELOAD_PART_END:
|
|
return 24;
|
|
case RELOAD_EMPTY_START:
|
|
return 57;
|
|
case RELOAD_EMPTY_END:
|
|
return 72;
|
|
case RELOAD_START:
|
|
return 25;
|
|
case RELOAD_END:
|
|
return 54;
|
|
case SPRINT_IN_START:
|
|
return 75;
|
|
case SPRINT_IN_END:
|
|
return 76;
|
|
case SPRINT_OUT_START:
|
|
return 76;
|
|
case SPRINT_OUT_END:
|
|
return 77;
|
|
case TAKE_OUT_START:
|
|
return 79;
|
|
case TAKE_OUT_END:
|
|
return 81;
|
|
case PUT_OUT_START:
|
|
return 77;
|
|
case PUT_OUT_END:
|
|
return 79;
|
|
case RELOAD_CANCEL:
|
|
return 37;
|
|
}
|
|
break;
|
|
case W_SAWNOFF:
|
|
case W_DB:
|
|
case W_BORE:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 4;
|
|
case RELOAD_START:
|
|
return 5;
|
|
case RELOAD_END:
|
|
return 31;
|
|
case SPRINT_IN_START:
|
|
return 32;
|
|
case SPRINT_IN_END:
|
|
return 33;
|
|
case SPRINT_OUT_START:
|
|
return 33;
|
|
case SPRINT_OUT_END:
|
|
return 31;
|
|
case TAKE_OUT_START:
|
|
return 38;
|
|
case TAKE_OUT_END:
|
|
return 41;
|
|
case PUT_OUT_START:
|
|
return 35;
|
|
case PUT_OUT_END:
|
|
return 37;
|
|
case RELOAD_CANCEL:
|
|
return 22;
|
|
}
|
|
break;
|
|
case W_SNUFF:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 4;
|
|
case RELOAD_START:
|
|
return 5;
|
|
case RELOAD_END:
|
|
return 45;
|
|
case SPRINT_IN_START:
|
|
return 53;
|
|
case SPRINT_IN_END:
|
|
return 58;
|
|
case SPRINT_OUT_START:
|
|
return 33;
|
|
case SPRINT_OUT_END:
|
|
return 31;
|
|
case TAKE_OUT_START:
|
|
return 46;
|
|
case TAKE_OUT_END:
|
|
return 49;
|
|
case PUT_OUT_START:
|
|
return 59;
|
|
case PUT_OUT_END:
|
|
return 52;
|
|
case RELOAD_CANCEL:
|
|
return 34;
|
|
}
|
|
break;
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 3;
|
|
case RELOAD_START:
|
|
return 41;
|
|
case RELOAD_END:
|
|
return 88;
|
|
case SPRINT_IN_START:
|
|
return 29;
|
|
case SPRINT_IN_END:
|
|
return 33;
|
|
case SPRINT_OUT_START:
|
|
return 34;
|
|
case SPRINT_OUT_END:
|
|
return 37;
|
|
case TAKE_OUT_START:
|
|
return 8;
|
|
case TAKE_OUT_END:
|
|
return 15;
|
|
case PUT_OUT_START:
|
|
return 3;
|
|
case PUT_OUT_END:
|
|
return 7;
|
|
case RELOAD_CANCEL:
|
|
return 64;
|
|
}
|
|
break;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 2;
|
|
case FIRE_END:
|
|
return 4;
|
|
case RELOAD_START:
|
|
return 11;
|
|
case RELOAD_END:
|
|
return 52;
|
|
case SPRINT_IN_START:
|
|
return 55;
|
|
case SPRINT_IN_END:
|
|
return 57;
|
|
case SPRINT_OUT_START:
|
|
return 59;
|
|
case SPRINT_OUT_END:
|
|
return 61;
|
|
case TAKE_OUT_START:
|
|
return 75;
|
|
case TAKE_OUT_END:
|
|
return 83;
|
|
case PUT_OUT_START:
|
|
return 64;
|
|
case PUT_OUT_END:
|
|
return 71;
|
|
case RELOAD_CANCEL:
|
|
return 36;
|
|
}
|
|
break;
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 3;
|
|
case SPRINT_IN_START:
|
|
return 36;
|
|
case SPRINT_IN_END:
|
|
return 37;
|
|
case SPRINT_OUT_START:
|
|
return 37;
|
|
case SPRINT_OUT_END:
|
|
return 36;
|
|
case TAKE_OUT_START:
|
|
return 33;
|
|
case TAKE_OUT_END:
|
|
return 35;
|
|
case PUT_OUT_START:
|
|
return 32;
|
|
case PUT_OUT_END:
|
|
return 33;
|
|
case RELOAD_CANCEL:
|
|
return 21;
|
|
}
|
|
break;
|
|
case W_M1:
|
|
case W_M1000:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 2;
|
|
case RELOAD_EMPTY_START:
|
|
return 4;
|
|
case RELOAD_EMPTY_END:
|
|
return 10;
|
|
case RELOAD_PART_START:
|
|
return 21;
|
|
case RELOAD_PART_END:
|
|
return 30;
|
|
case RELOAD_START:
|
|
return 10;
|
|
case RELOAD_END:
|
|
return 20;
|
|
case SPRINT_IN_START:
|
|
return 32;
|
|
case SPRINT_IN_END:
|
|
return 33;
|
|
case SPRINT_OUT_START:
|
|
return 34;
|
|
case SPRINT_OUT_END:
|
|
return 35;
|
|
case TAKE_OUT_START:
|
|
return 40;
|
|
case TAKE_OUT_END:
|
|
return 43;
|
|
case PUT_OUT_START:
|
|
return 36;
|
|
case PUT_OUT_END:
|
|
return 39;
|
|
case RELOAD_CANCEL:
|
|
return 14;
|
|
}
|
|
break;
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 2;
|
|
case RELOAD_START:
|
|
return 3;
|
|
case RELOAD_END:
|
|
return 29;
|
|
case SPRINT_IN_START:
|
|
return 37;
|
|
case SPRINT_IN_END:
|
|
return 38;
|
|
case SPRINT_OUT_START:
|
|
return 38;
|
|
case SPRINT_OUT_END:
|
|
return 37;
|
|
case TAKE_OUT_START:
|
|
return 33;
|
|
case TAKE_OUT_END:
|
|
return 36;
|
|
case PUT_OUT_START:
|
|
return 30;
|
|
case PUT_OUT_END:
|
|
return 33;
|
|
case RELOAD_CANCEL:
|
|
return 17;
|
|
}
|
|
break;
|
|
case W_FIW:
|
|
case W_M2:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 0;
|
|
case FIRE_END:
|
|
return 0;
|
|
case SPRINT_IN_START:
|
|
return 0;
|
|
case SPRINT_IN_END:
|
|
return 0;
|
|
case SPRINT_OUT_START:
|
|
return 8;
|
|
case SPRINT_OUT_END:
|
|
return 0;
|
|
case TAKE_OUT_START:
|
|
return 2;
|
|
case TAKE_OUT_END:
|
|
return 1;
|
|
case PUT_OUT_START:
|
|
return 1;
|
|
case PUT_OUT_END:
|
|
return 2;
|
|
case RELOAD_CANCEL:
|
|
return 0;
|
|
}
|
|
break;
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 2;
|
|
case RELOAD_START:
|
|
return 4;
|
|
case RELOAD_END:
|
|
return 31;
|
|
case SPRINT_IN_START:
|
|
return 39;
|
|
case SPRINT_IN_END:
|
|
return 41;
|
|
case SPRINT_OUT_START:
|
|
return 42;
|
|
case SPRINT_OUT_END:
|
|
return 46;
|
|
case TAKE_OUT_START:
|
|
return 35;
|
|
case TAKE_OUT_END:
|
|
return 37;
|
|
case PUT_OUT_START:
|
|
return 32;
|
|
case PUT_OUT_END:
|
|
return 34;
|
|
case RELOAD_CANCEL:
|
|
return 18;
|
|
}
|
|
break;
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 2;
|
|
case FIRE_END:
|
|
return 4;
|
|
case RELOAD_START:
|
|
return 7;
|
|
case RELOAD_END:
|
|
return 50;
|
|
case SPRINT_IN_START:
|
|
return 62;
|
|
case SPRINT_IN_END:
|
|
return 64;
|
|
case SPRINT_OUT_START:
|
|
return 65;
|
|
case SPRINT_OUT_END:
|
|
return 67;
|
|
case TAKE_OUT_START:
|
|
return 56;
|
|
case TAKE_OUT_END:
|
|
return 59;
|
|
case PUT_OUT_START:
|
|
return 52;
|
|
case PUT_OUT_END:
|
|
return 55;
|
|
case RELOAD_CANCEL:
|
|
return 33;
|
|
}
|
|
break;
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 2;
|
|
case RELOAD_START:
|
|
return 3;
|
|
case RELOAD_END:
|
|
return 38;
|
|
case SPRINT_IN_START:
|
|
return 39;
|
|
case SPRINT_IN_END:
|
|
return 40;
|
|
case SPRINT_OUT_START:
|
|
return 40;
|
|
case SPRINT_OUT_END:
|
|
return 38;
|
|
case TAKE_OUT_START:
|
|
return 43;
|
|
case TAKE_OUT_END:
|
|
return 47;
|
|
case PUT_OUT_START:
|
|
return 42;
|
|
case PUT_OUT_END:
|
|
return 43;
|
|
case RELOAD_CANCEL:
|
|
return 21;
|
|
}
|
|
break;
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 6;
|
|
case RELOAD_START:
|
|
return 7;
|
|
case RELOAD_END:
|
|
return 28;
|
|
case SPRINT_IN_START:
|
|
return 37;
|
|
case SPRINT_IN_END:
|
|
return 38;
|
|
case SPRINT_OUT_START:
|
|
return 45;
|
|
case SPRINT_OUT_END:
|
|
return 45;
|
|
case TAKE_OUT_START:
|
|
return 44;
|
|
case TAKE_OUT_END:
|
|
return 45;
|
|
case PUT_OUT_START:
|
|
return 39;
|
|
case PUT_OUT_END:
|
|
return 42;
|
|
case RELOAD_CANCEL:
|
|
return 16;
|
|
case AIM_IN_END:
|
|
return 33;
|
|
}
|
|
break;
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 0;
|
|
case FIRE_END:
|
|
return 1;
|
|
case RELOAD_START:
|
|
return 5;
|
|
case RELOAD_END:
|
|
return 38;
|
|
case SPRINT_IN_START:
|
|
return 40;
|
|
case SPRINT_IN_END:
|
|
return 42;
|
|
case SPRINT_OUT_START:
|
|
return 43;
|
|
case SPRINT_OUT_END:
|
|
return 45;
|
|
case TAKE_OUT_START:
|
|
return 49;
|
|
case TAKE_OUT_END:
|
|
return 52;
|
|
case PUT_OUT_START:
|
|
return 46;
|
|
case PUT_OUT_END:
|
|
return 48;
|
|
case RELOAD_CANCEL:
|
|
return 22;
|
|
}
|
|
break;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 4;
|
|
case RELOAD_START:
|
|
return 5;
|
|
case RELOAD_END:
|
|
return 32;
|
|
case SPRINT_IN_START:
|
|
return 48;
|
|
case SPRINT_IN_END:
|
|
return 50;
|
|
case SPRINT_OUT_START:
|
|
return 51;
|
|
case SPRINT_OUT_END:
|
|
return 54;
|
|
case TAKE_OUT_START:
|
|
return 44;
|
|
case TAKE_OUT_END:
|
|
return 47;
|
|
case PUT_OUT_START:
|
|
return 41;
|
|
case PUT_OUT_END:
|
|
return 44;
|
|
case RELOAD_CANCEL:
|
|
return 16;
|
|
}
|
|
break;
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 3;
|
|
case FIRE_END:
|
|
return 7;
|
|
case RELOAD_START:
|
|
return 9;
|
|
case RELOAD_END:
|
|
return 54;
|
|
case SPRINT_IN_START:
|
|
return 60;
|
|
case SPRINT_IN_END:
|
|
return 64;
|
|
case SPRINT_START:
|
|
return 64;
|
|
case SPRINT_END:
|
|
return 69;
|
|
case SPRINT_OUT_START:
|
|
return 70;
|
|
case SPRINT_OUT_END:
|
|
return 73;
|
|
case TAKE_OUT_START:
|
|
return 57;
|
|
case TAKE_OUT_END:
|
|
return 59;
|
|
case PUT_OUT_START:
|
|
return 54;
|
|
case PUT_OUT_END:
|
|
return 56;
|
|
case RELOAD_CANCEL:
|
|
return 36;
|
|
}
|
|
break;
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 3;
|
|
case RELOAD_START:
|
|
return 6;
|
|
case RELOAD_END:
|
|
return 49;
|
|
case SPRINT_IN_START:
|
|
return 63;
|
|
case SPRINT_IN_END:
|
|
return 67;
|
|
case SPRINT_OUT_START:
|
|
return 68;
|
|
case SPRINT_OUT_END:
|
|
return 73;
|
|
case TAKE_OUT_START:
|
|
return 54;
|
|
case TAKE_OUT_END:
|
|
return 61;
|
|
case PUT_OUT_START:
|
|
return 50;
|
|
case PUT_OUT_END:
|
|
return 53;
|
|
case RELOAD_CANCEL:
|
|
return 30;
|
|
}
|
|
break;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 3;
|
|
case SPRINT_IN_START:
|
|
return 27;
|
|
case SPRINT_IN_END:
|
|
return 28;
|
|
case SPRINT_OUT_START:
|
|
return 27;
|
|
case SPRINT_OUT_END:
|
|
return 26;
|
|
case TAKE_OUT_START:
|
|
return 32;
|
|
case TAKE_OUT_END:
|
|
return 36;
|
|
case PUT_OUT_START:
|
|
return 30;
|
|
case PUT_OUT_END:
|
|
return 32;
|
|
case RELOAD_CANCEL:
|
|
return 20;
|
|
}
|
|
break;
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 0;
|
|
case FIRE_END:
|
|
return 1;
|
|
case RELOAD_START:
|
|
return 2;
|
|
case RELOAD_END:
|
|
return 24;
|
|
case SPRINT_IN_START:
|
|
return 35;
|
|
case SPRINT_IN_END:
|
|
return 37;
|
|
case SPRINT_OUT_START:
|
|
return 38;
|
|
case SPRINT_OUT_END:
|
|
return 40;
|
|
case TAKE_OUT_START:
|
|
return 38;
|
|
case TAKE_OUT_END:
|
|
return 41;
|
|
case PUT_OUT_START:
|
|
return 35;
|
|
case PUT_OUT_END:
|
|
return 38;
|
|
case RELOAD_CANCEL:
|
|
return 16;
|
|
case AIM_IN_END:
|
|
return 28;
|
|
case AIM_IN_START:
|
|
return 27;
|
|
}
|
|
break;
|
|
case W_TESLA:
|
|
case W_DG3:
|
|
switch (frametype)
|
|
{
|
|
case FIRE_START:
|
|
return 1;
|
|
case FIRE_END:
|
|
return 4;
|
|
case RELOAD_START:
|
|
return 9;
|
|
case RELOAD_END:
|
|
return 58;
|
|
case SPRINT_IN_START:
|
|
return 60;
|
|
case SPRINT_IN_END:
|
|
return 63;
|
|
case SPRINT_OUT_START:
|
|
return 63;
|
|
case SPRINT_OUT_END:
|
|
return 66;
|
|
case TAKE_OUT_START:
|
|
return 72;
|
|
case TAKE_OUT_END:
|
|
return 76;
|
|
case PUT_OUT_START:
|
|
return 66;
|
|
case PUT_OUT_END:
|
|
return 71;
|
|
case RELOAD_CANCEL:
|
|
return 16;
|
|
}
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
string(float wep, float gorvmodel) GetWeaponModel =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
if (gorvmodel)
|
|
return ("models/weapons/m1911/g_colt.mdl");
|
|
else
|
|
return ("models/weapons/m1911/v_colt.mdl");
|
|
case W_BIATCH:
|
|
if (gorvmodel)
|
|
return ("models/weapons/m1911/g_colt.mdl");
|
|
else
|
|
return ("models/weapons/m1911/v_biatch_right.mdl");
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
if (gorvmodel)
|
|
return ("models/weapons/kar/g_kar.mdl");
|
|
else
|
|
return ("models/weapons/kar/v_kar.mdl");
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
if (gorvmodel)
|
|
return ("models/weapons/thomp/g_thomp.mdl");
|
|
else
|
|
return ("models/weapons/thomp/v_thomp.mdl");
|
|
case W_357:
|
|
case W_KILLU:
|
|
if (gorvmodel)
|
|
return ("models/weapons/357/g_357.mdl");
|
|
else
|
|
return ("models/weapons/357/v_357.mdl");
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
if (gorvmodel)
|
|
return ("models/weapons/bar/g_bar.mdl");
|
|
else
|
|
return ("models/weapons/bar/v_bar.mdl");
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
if (gorvmodel)
|
|
return ("models/weapons/browning/g_browning.mdl");
|
|
else
|
|
return ("models/weapons/browning/v_browning.mdl");
|
|
case W_DB:
|
|
case W_BORE:
|
|
if (gorvmodel)
|
|
return ("models/weapons/db/g_db.mdl");
|
|
else
|
|
return ("models/weapons/db/v_db.mdl");
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
if (gorvmodel)
|
|
return ("models/weapons/fg42/g_fg.mdl");
|
|
else
|
|
return ("models/weapons/fg42/v_fg.mdl");
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
if (gorvmodel)
|
|
return ("models/weapons/gewehr/g_gewehr.mdl");
|
|
else
|
|
return ("models/weapons/gewehr/v_gewehr.mdl");
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
if (gorvmodel)
|
|
return ("models/weapons/kar/g_kars.mdl");
|
|
else
|
|
return ("models/weapons/kar/v_kar.mdl");
|
|
case W_M1:
|
|
case W_M1000:
|
|
if (gorvmodel)
|
|
return ("models/weapons/garand/g_m1.mdl");
|
|
else
|
|
return ("models/weapons/garand/v_m1.mdl");
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
if (gorvmodel)
|
|
return ("models/weapons/m1carbine/g_m1a1.mdl");
|
|
else
|
|
return ("models/weapons/m1carbine/v_m1a1.mdl");
|
|
case W_M2:
|
|
case W_FIW:
|
|
if (gorvmodel)
|
|
return ("models/weapons/m2flame/g_m2flame.mdl");
|
|
else
|
|
return ("models/weapons/m2flame/v_m2flame.mdl");
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
if (gorvmodel)
|
|
return ("models/weapons/mp40/g_mp40.mdl");
|
|
else
|
|
return ("models/weapons/mp40/v_mp40.mdl");
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
if (gorvmodel)
|
|
return ("models/weapons/mp5k/g_mp5k.mdl");
|
|
else
|
|
return ("models/weapons/mp5k/v_mp5k.mdl");
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
if (gorvmodel)
|
|
return ("models/weapons/mg/g_mg.mdl");
|
|
else
|
|
return ("models/weapons/mg/v_mg.mdl");
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
if (gorvmodel)
|
|
return ("models/weapons/panzer/g_panzer.mdl");
|
|
else
|
|
return ("models/weapons/panzer/v_panzer.mdl");
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
if (gorvmodel)
|
|
return ("models/weapons/ppsh/g_ppsh.mdl");
|
|
else
|
|
return ("models/weapons/ppsh/v_ppsh.mdl");
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
if (gorvmodel)
|
|
return ("models/weapons/ptrs/g_ptrs.mdl");
|
|
else
|
|
return ("models/weapons/ptrs/v_ptrs.mdl");
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
if (gorvmodel)
|
|
return ("models/weapons/ray/g_ray.mdl");
|
|
else
|
|
return ("models/weapons/ray/v_ray.mdl");
|
|
case W_SAWNOFF:
|
|
if (gorvmodel)
|
|
return ("models/weapons/sawnoff/g_sawnoff.mdl");
|
|
else
|
|
return ("models/weapons/sawnoff/v_sawnoff.mdl");
|
|
case W_SNUFF:
|
|
if (gorvmodel)
|
|
return ("models/weapons/sawnoff/g_sawnoff.mdl");
|
|
else
|
|
return ("models/weapons/sawnoff/v_snuff_right.mdl");
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
if (gorvmodel)
|
|
return ("models/weapons/stg/g_stg.mdl");
|
|
else
|
|
return ("models/weapons/stg/v_stg.mdl");
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
if (gorvmodel)
|
|
return ("models/weapons/trench/g_trench.mdl");
|
|
else
|
|
return ("models/weapons/trench/v_trench.mdl");
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
if (gorvmodel)
|
|
return ("models/weapons/type/g_type.mdl");
|
|
else
|
|
return ("models/weapons/type/v_type.mdl");
|
|
case W_GRENADE:
|
|
if (gorvmodel)
|
|
return ("models/weapons/grenade/g_grenade.mdl");
|
|
else
|
|
return ("models/weapons/grenade/v_grenade.mdl");
|
|
case W_BETTY:
|
|
if (gorvmodel)
|
|
return ("models/weapons/grenade/g_betty.mdl");
|
|
else
|
|
return ("models/weapons/grenade/v_betty.mdl");
|
|
case W_BOWIE:
|
|
if (gorvmodel)
|
|
return ("models/weapons/knife/g_bowie.mdl");
|
|
else
|
|
return ("models/weapons/knife/v_bowie.mdl");
|
|
case W_DG3:
|
|
case W_TESLA:
|
|
if (gorvmodel)
|
|
return ("models/weapons/tesla/g_tesla.mdl");
|
|
else
|
|
return ("models/weapons/tesla/v_tesla.mdl");
|
|
case W_BK:
|
|
if (gorvmodel)
|
|
return ("models/weapons/bk/g_bk.mdl");
|
|
else
|
|
return ("models/weapons/bk/v_bk.mdl");
|
|
}
|
|
|
|
return ("");
|
|
}
|
|
|
|
string(float wep) GetWeapon2Model =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_BIATCH:
|
|
return ("models/weapons/m1911/v_biatch_left.mdl");
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
return ("models/weapons/kar/v_karscope.mdl");
|
|
case W_SNUFF:
|
|
return ("models/weapons/sawnoff/v_snuff_left.mdl");
|
|
default:
|
|
return "";
|
|
}
|
|
|
|
return ("");
|
|
}
|
|
|
|
string(float wep) GetWeaponSound =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_BIATCH:
|
|
case W_COLT:
|
|
return "sounds/weapons/colt/shoot.wav";
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
return "sounds/weapons/kar/shoot.wav";
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
return "sounds/weapons/thomp/shoot.wav";
|
|
case W_357:
|
|
case W_KILLU:
|
|
return "sounds/weapons/357/shoot.wav";
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
return "sounds/weapons/bar/shoot.wav";
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
return "sounds/weapons/browning/shoot.wav";
|
|
case W_DB:
|
|
case W_BORE:
|
|
return "sounds/weapons/shotgun/shoot.wav";
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
return "sounds/weapons/fg42/shoot.wav";
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
return "sounds/weapons/gewehr/shoot.wav";
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
return "sounds/weapons/kar/shoot.wav";
|
|
case W_M1:
|
|
case W_M1000:
|
|
return "sounds/weapons/garand/shoot.wav";
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
return "sounds/weapons/m1carbine/shoot.wav";
|
|
case W_M2:
|
|
return "sounds/weapons/m2flame/flamethrower.wav";
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
return "sounds/weapons/mp40/shoot.wav";
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
return "sounds/weapons/mp5k/shoot.wav";
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
return "sounds/weapons/mg42/shoot.wav";
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
return "sounds/weapons/panzer/shoot.wav";
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
return "sounds/weapons/ppsh/shoot.wav";
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
return "sounds/weapons/ptrs/shoot.wav";
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
return "sounds/weapons/raygun/shoot.wav";
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
return "sounds/weapons/shotgun/shoot.wav";
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
return "sounds/weapons/stg/shoot.wav";
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
return "sounds/weapons/shotgun/shoot.wav";
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
return "sounds/weapons/type100/shoot.wav";
|
|
case W_TESLA:
|
|
case W_DG3:
|
|
return "sounds/weapons/tesla/shoot.wav";
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
float(float wep) IsDualWeapon = {
|
|
|
|
switch(wep) {
|
|
case W_BIATCH:
|
|
return 1;
|
|
case W_SNUFF:
|
|
return 1;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
string(float wep) GetLeftWeaponModel = {
|
|
|
|
switch(wep) {
|
|
case W_BIATCH:
|
|
return "models/weapons/m1911/v_biatch_left.mdl";
|
|
case W_SNUFF:
|
|
return "models/weapons/sawnoff/v_snuff_left.mdl";
|
|
default:
|
|
return "";
|
|
}
|
|
}
|
|
|
|
float(float wep) IsPapWeapon = {
|
|
|
|
switch(wep) {
|
|
case W_BIATCH:
|
|
case W_ARMAGEDDON:
|
|
case W_GIBS:
|
|
case W_KILLU:
|
|
case W_WIDOW:
|
|
case W_ACCELERATOR:
|
|
case W_BORE:
|
|
case W_IMPELLER:
|
|
case W_COMPRESSOR:
|
|
case W_HEADCRACKER:
|
|
case W_M1000:
|
|
case W_WIDDER:
|
|
case W_AFTERBURNER:
|
|
case W_KOLLIDER:
|
|
case W_BARRACUDA:
|
|
case W_LONGINUS:
|
|
case W_REAPER:
|
|
case W_PENETRATOR:
|
|
case W_PORTER:
|
|
case W_SNUFF:
|
|
case W_SPATZ:
|
|
case W_GUT:
|
|
case W_SAMURAI:
|
|
case W_DG3:
|
|
return 1;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
float(float wep) GetWepSkin = {
|
|
|
|
switch(wep) {
|
|
case W_BIATCH:
|
|
return 0;
|
|
case W_SNUFF:
|
|
return 0;
|
|
default:
|
|
if (IsPapWeapon(wep)) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
float(float wep) EqualNonPapWeapon =
|
|
{
|
|
|
|
switch (wep) {
|
|
case W_BIATCH:
|
|
return W_COLT;
|
|
case W_ARMAGEDDON:
|
|
return W_KAR;
|
|
case W_GIBS:
|
|
return W_THOMPSON;
|
|
case W_KILLU:
|
|
return W_357;
|
|
case W_WIDOW:
|
|
return W_BAR;
|
|
case W_ACCELERATOR:
|
|
return W_BROWNING;
|
|
case W_BORE:
|
|
return W_DB;
|
|
case W_IMPELLER:
|
|
return W_FG;
|
|
case W_COMPRESSOR:
|
|
return W_GEWEHR;
|
|
case W_HEADCRACKER:
|
|
return W_KAR_SCOPE;
|
|
case W_M1000:
|
|
return W_M1;
|
|
case W_WIDDER:
|
|
return W_M1A1;
|
|
case W_AFTERBURNER:
|
|
return W_MP40;
|
|
case W_KOLLIDER:
|
|
return W_MP5K;
|
|
case W_BARRACUDA:
|
|
return W_MG;
|
|
case W_LONGINUS:
|
|
return W_PANZER;
|
|
case W_REAPER:
|
|
return W_PPSH;
|
|
case W_PENETRATOR:
|
|
return W_PTRS;
|
|
case W_PORTER:
|
|
return W_RAY;
|
|
case W_SNUFF:
|
|
return W_SAWNOFF;
|
|
case W_SPATZ:
|
|
return W_STG;
|
|
case W_GUT:
|
|
return W_TRENCH;
|
|
case W_SAMURAI:
|
|
return W_TYPE;
|
|
case W_M14:
|
|
return W_M14;
|
|
case W_CUSTOM2:
|
|
return W_CUSTOM1;
|
|
case W_CUSTOM4:
|
|
return W_CUSTOM3;
|
|
case W_DG3:
|
|
return W_TESLA;
|
|
case W_FIW:
|
|
return W_M2;
|
|
default:
|
|
return wep;
|
|
}
|
|
}
|
|
float(float wep) EqualPapWeapon =
|
|
{
|
|
|
|
switch (wep) {
|
|
case W_COLT:
|
|
return W_BIATCH;
|
|
case W_KAR:
|
|
return W_ARMAGEDDON;
|
|
case W_THOMPSON:
|
|
return W_GIBS;
|
|
case W_357:
|
|
return W_KILLU;
|
|
case W_BAR:
|
|
return W_WIDOW;
|
|
case W_BROWNING:
|
|
return W_ACCELERATOR;
|
|
case W_DB:
|
|
return W_BORE;
|
|
case W_FG:
|
|
return W_IMPELLER;
|
|
case W_GEWEHR:
|
|
return W_COMPRESSOR;
|
|
case W_KAR_SCOPE:
|
|
return W_HEADCRACKER;
|
|
case W_M1:
|
|
return W_M1000;
|
|
case W_M1A1:
|
|
return W_WIDDER;
|
|
case W_MP40:
|
|
return W_AFTERBURNER;
|
|
case W_MP5K:
|
|
return W_KOLLIDER;
|
|
case W_MG:
|
|
return W_BARRACUDA;
|
|
case W_PANZER:
|
|
return W_LONGINUS;
|
|
case W_PPSH:
|
|
return W_REAPER;
|
|
case W_PTRS:
|
|
return W_PENETRATOR;
|
|
case W_RAY:
|
|
return W_PORTER;
|
|
case W_SAWNOFF:
|
|
return W_SNUFF;
|
|
case W_STG:
|
|
return W_SPATZ;
|
|
case W_TRENCH:
|
|
return W_GUT;
|
|
case W_TYPE:
|
|
return W_SAMURAI;
|
|
case W_TESLA:
|
|
return W_DG3;
|
|
case W_M14:
|
|
return W_M14;
|
|
case W_M2:
|
|
return W_FIW;
|
|
default:
|
|
return wep;
|
|
}
|
|
}
|
|
|
|
void (float wep, float anim_style, float dualwep, float curweaponframe) PlayWeaponSound =
|
|
{
|
|
if (anim_style == KNIFE) {
|
|
if (curweaponframe == 6) {
|
|
self.punchangle_x = -2;
|
|
self.punchangle_y = -5;
|
|
} else if (curweaponframe == 7) {
|
|
self.punchangle_x = 5;
|
|
self.punchangle_y = 10;
|
|
}
|
|
}
|
|
|
|
if (anim_style == FIRE)
|
|
{
|
|
if (wep == W_KAR || wep == W_ARMAGEDDON || wep == W_KAR_SCOPE || wep == W_HEADCRACKER)
|
|
{
|
|
if (curweaponframe == 6)
|
|
sound (self ,5, "sounds/weapons/kar/boltup.wav", 1, ATTN_NORM);
|
|
else if (curweaponframe == 7)
|
|
sound (self ,5, "sounds/weapons/kar/boltback.wav", 1, ATTN_NORM);
|
|
else if (curweaponframe == 9)
|
|
sound (self ,5, "sounds/weapons/kar/boltforward.wav", 1, ATTN_NORM);
|
|
else if (curweaponframe == 10)
|
|
sound (self ,5, "sounds/weapons/kar/boltdown.wav", 1, ATTN_NORM);
|
|
}
|
|
else if (wep == W_TRENCH || wep == W_GUT)
|
|
{
|
|
if (curweaponframe == 7)
|
|
sound (self ,5, "sounds/weapons/shotgun/pump.wav", 1, ATTN_NORM);
|
|
}
|
|
} else if (anim_style != RELOAD) {
|
|
return;
|
|
}
|
|
|
|
|
|
switch (wep) {
|
|
case W_COLT:
|
|
if (curweaponframe == 5) {
|
|
sound (self ,5, "sounds/weapons/colt/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 12) {
|
|
sound (self ,5, "sounds/weapons/colt/magin.wav", 1, ATTN_NORM);
|
|
} else if(curweaponframe == 18) {
|
|
sound (self ,5, "sounds/weapons/colt/slide.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
if (curweaponframe == 15) {
|
|
sound (self ,5, "sounds/weapons/kar/boltup.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 16) {
|
|
sound (self ,5, "sounds/weapons/kar/boltback.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 20) {
|
|
sound (self ,5, "sounds/weapons/kar/clipin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 25) {
|
|
sound (self ,5, "sounds/weapons/kar/boltforward.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 26) {
|
|
sound (self ,5, "sounds/weapons/kar/clipoff.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 27) {
|
|
sound (self ,5, "sounds/weapons/kar/boltdown.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
if (curweaponframe == 6) {
|
|
sound (self ,5, "sounds/weapons/thomp/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 12) {
|
|
sound (self ,5, "sounds/weapons/thomp/magin.wav", 1, ATTN_NORM);}
|
|
else if (curweaponframe == 19) {
|
|
sound (self ,5, "sounds/weapons/thomp/boltback.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_357:
|
|
case W_KILLU:
|
|
if (curweaponframe == 5) {
|
|
sound (self ,5, "sounds/weapons/357/open.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 9) {
|
|
sound (self ,5, "sounds/weapons/357/out.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 15) {
|
|
sound (self ,5, "sounds/weapons/357/in.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 20) {
|
|
sound (self ,5, "sounds/weapons/357/close.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
if (curweaponframe == 6 || curweaponframe == 31) {
|
|
sound (self ,5, "sounds/weapons/bar/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 19 || curweaponframe == 29) {
|
|
sound (self ,5, "sounds/weapons/bar/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 23) {
|
|
sound (self ,5, "sounds/weapons/bar/maghit.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
if (curweaponframe == 6 || curweaponframe == 60) {
|
|
sound (self ,5, "sounds/weapons/browning/boltback.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 16 || curweaponframe == 69) {
|
|
sound (self ,5, "sounds/weapons/browning/topopen.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 21) {
|
|
sound (self ,5, "sounds/weapons/browning/chainoff.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 27) {
|
|
sound (self ,5, "sounds/weapons/browning/chainon.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 30) {
|
|
sound (self ,5, "sounds/weapons/browning/chainplace.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 36) {
|
|
sound (self ,5, "sounds/weapons/browning/topclose.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 41) {
|
|
sound (self ,5, "sounds/weapons/browning/tophit.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 48) {
|
|
sound (self ,5, "sounds/weapons/browning/boltforward.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_DB:
|
|
case W_SAWNOFF:
|
|
case W_BORE:
|
|
if (curweaponframe == 6) {
|
|
sound (self ,5, "sounds/weapons/shotgun/open.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 12) {
|
|
sound (self ,5, "sounds/weapons/shotgun/out.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 20) {
|
|
sound (self ,5, "sounds/weapons/shotgun/in.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 26) {
|
|
sound (self ,5, "sounds/weapons/shotgun/close.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_SNUFF:
|
|
if (curweaponframe == 15) {
|
|
sound (self ,5, "sounds/weapons/shotgun/open.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 23) {
|
|
sound (self ,5, "sounds/weapons/shotgun/out.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 33) {
|
|
sound (self ,5, "sounds/weapons/shotgun/in.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 40) {
|
|
sound (self ,5, "sounds/weapons/shotgun/close.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
if (curweaponframe == 43) {
|
|
sound (self ,5, "sounds/weapons/fg42/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 60) {
|
|
sound (self ,5, "sounds/weapons/fg42/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 72) {
|
|
sound (self ,5, "sounds/weapons/fg42/boltback.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 77) {
|
|
sound (self ,5, "sounds/weapons/fg42/boltforward.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
if (curweaponframe == 21) {
|
|
sound (self ,5, "sounds/weapons/gewehr/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 32) {
|
|
sound (self ,5, "sounds/weapons/gewehr/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 36) {
|
|
sound (self ,5, "sounds/weapons/gewehr/maghit.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 45) {
|
|
sound (self ,5, "sounds/weapons/gewehr/boltrelease.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
if (curweaponframe == 15) {
|
|
sound (self ,5, "sounds/weapons/kar/boltup.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 16) {
|
|
sound (self ,5, "sounds/weapons/kar/boltback.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 20) {
|
|
sound (self ,5, "sounds/weapons/kar/insert.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 25) {
|
|
sound (self ,5, "sounds/weapons/kar/boltforward.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 27) {
|
|
sound (self ,5, "sounds/weapons/kar/boltdown.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_M1:
|
|
case W_M1000:
|
|
if (curweaponframe == 5 || curweaponframe == 25) {
|
|
sound (self ,5, "sounds/weapons/garand/clipout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 13) {
|
|
sound (self ,5, "sounds/weapons/garand/clipin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 15) {
|
|
sound (self ,5, "sounds/weapons/garand/boltrelease.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 24) {
|
|
sound (self ,5, "sounds/weapons/garand/clippush.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
if (curweaponframe == 6) {
|
|
sound (self ,5, "sounds/weapons/m1carbine/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 14) {
|
|
sound (self ,5, "sounds/weapons/m1carbine/magin.wav", 1, ATTN_NORM);
|
|
} else if(curweaponframe == 16) {
|
|
sound (self ,5, "sounds/weapons/m1carbine/maghit.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 24) {
|
|
sound (self ,5, "sounds/weapons/m1carbine/bolt.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
if (curweaponframe == 7) {
|
|
sound (self ,5, "sounds/weapons/mp40/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 17) {
|
|
sound (self ,5, "sounds/weapons/mp40/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 25) {
|
|
sound (self ,5, "sounds/weapons/mp40/boltback.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
if (curweaponframe == 16) {
|
|
sound (self ,5, "sounds/weapons/mp5k/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 31) {
|
|
sound (self ,5, "sounds/weapons/mp5k/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 39) {
|
|
sound (self ,5, "sounds/weapons/mp5k/slap.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
if (curweaponframe == 12) {
|
|
sound (self ,5, "sounds/weapons/panzer/move.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 16) {
|
|
sound (self ,5, "sounds/weapons/panzer/insert.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
if (curweaponframe == 8) {
|
|
sound (self ,5, "sounds/weapons/mg42/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 19) {
|
|
sound (self ,5, "sounds/weapons/mg42/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 29) {
|
|
sound (self ,5, "sounds/weapons/mg42/charge.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
if (curweaponframe == 8) {
|
|
sound (self ,5, "sounds/weapons/ppsh/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 20) {
|
|
sound (self ,5, "sounds/weapons/ppsh/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 22) {
|
|
sound (self ,5, "sounds/weapons/ppsh/maghit.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 30) {
|
|
sound (self ,5, "sounds/weapons/ppsh/boltback.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 33) {
|
|
sound (self ,5, "sounds/weapons/ppsh/boltrelease.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
if (curweaponframe == 6) {
|
|
sound (self ,5, "sounds/weapons/ptrs/open.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 18) {
|
|
sound (self ,5, "sounds/weapons/ptrs/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 21) {
|
|
sound (self ,5, "sounds/weapons/ptrs/maghit.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 27) {
|
|
sound (self ,5, "sounds/weapons/ptrs/close.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
if (curweaponframe == 14) {
|
|
sound (self ,5, "sounds/weapons/raygun/open.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 23) {
|
|
sound (self ,5, "sounds/weapons/raygun/out.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 36) {
|
|
sound (self ,5, "sounds/weapons/raygun/in.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 45) {
|
|
sound (self ,5, "sounds/weapons/raygun/close.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
if (curweaponframe == 15) {
|
|
sound (self ,5, "sounds/weapons/stg/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 28) {
|
|
sound (self ,5, "sounds/weapons/stg/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 37) {
|
|
sound (self ,5, "sounds/weapons/stg/boltback.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 41) {
|
|
sound (self ,5, "sounds/weapons/stg/boltrelease.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
if (curweaponframe == 19) {
|
|
sound (self ,5, "sounds/weapons/shotgun/insert.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
if (curweaponframe == 6) {
|
|
sound (self ,5, "sounds/weapons/type100/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 15) {
|
|
sound (self ,5, "sounds/weapons/type100/magin.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 20) {
|
|
sound (self ,5, "sounds/weapons/type100/boltpull.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_BIATCH:
|
|
if (curweaponframe == 10) {
|
|
sound (self ,5, "sounds/weapons/colt/magout.wav", 1, ATTN_NORM);
|
|
} else if (curweaponframe == 19) {
|
|
sound (self ,5, "sounds/weapons/colt/magin.wav", 1, ATTN_NORM);
|
|
} else if(curweaponframe == 26) {
|
|
sound (self ,5, "sounds/weapons/colt/slide.wav", 1, ATTN_NORM);
|
|
}
|
|
break;
|
|
case W_TESLA:
|
|
case W_DG3:
|
|
if (curweaponframe == 20)
|
|
sound (self ,5, "sounds/weapons/tesla/switchoff.wav", 1, ATTN_NORM);
|
|
else if (curweaponframe == 25)
|
|
sound (self ,5, "sounds/weapons/tesla/pulllever.wav", 1, ATTN_NORM);
|
|
else if (curweaponframe == 31)
|
|
sound (self ,5, "sounds/weapons/tesla/glassbreak.wav", 1, ATTN_NORM);
|
|
else if (curweaponframe == 38)
|
|
sound (self ,5, "sounds/weapons/tesla/clipin.wav", 1, ATTN_NORM);
|
|
else if (curweaponframe == 43)
|
|
sound (self ,5, "sounds/weapons/tesla/clipoff.wav", 1, ATTN_NORM);
|
|
else if (curweaponframe == 51)
|
|
sound (self ,5, "sounds/weapons/tesla/switchon.wav", 1, ATTN_NORM);
|
|
}
|
|
}
|
|
|
|
|
|
void(float weptype) precache_extra =
|
|
{
|
|
|
|
switch (weptype) {
|
|
case W_COLT:
|
|
case W_BIATCH:
|
|
precache_sound("sounds/weapons/colt/shoot.wav");
|
|
precache_sound("sounds/weapons/colt/magout.wav");
|
|
precache_sound("sounds/weapons/colt/magin.wav");
|
|
precache_sound("sounds/weapons/colt/slide.wav");
|
|
precache_model ("models/weapons/m1911/v_biatch_right.mdl"); // sprite explosion
|
|
precache_model ("models/weapons/m1911/v_biatch_left.mdl");
|
|
break;
|
|
case W_KAR_SCOPE:
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
precache_sound ("sounds/weapons/kar/boltup.wav");
|
|
precache_sound ("sounds/weapons/kar/boltback.wav");
|
|
precache_sound ("sounds/weapons/kar/boltforward.wav");
|
|
precache_sound ("sounds/weapons/kar/boltdown.wav");
|
|
precache_sound ("sounds/weapons/kar/clipin.wav");
|
|
precache_sound ("sounds/weapons/kar/clipoff.wav");
|
|
precache_sound ("sounds/weapons/kar/shoot.wav");
|
|
precache_sound ("sounds/weapons/kar/insert.wav");
|
|
precache_model ("models/weapons/kar/v_karscope.mdl");
|
|
break;
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
precache_sound("sounds/weapons/thomp/magout.wav");
|
|
precache_sound("sounds/weapons/thomp/magin.wav");
|
|
precache_sound("sounds/weapons/thomp/boltback.wav");
|
|
precache_sound("sounds/weapons/thomp/shoot.wav");
|
|
break;
|
|
case W_357:
|
|
case W_KILLU:
|
|
precache_sound("sounds/weapons/357/open.wav");
|
|
precache_sound("sounds/weapons/357/out.wav");
|
|
precache_sound("sounds/weapons/357/in.wav");
|
|
precache_sound("sounds/weapons/357/close.wav");
|
|
precache_sound("sounds/weapons/357/shoot.wav");
|
|
break;
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
precache_sound("sounds/weapons/bar/shoot.wav");
|
|
precache_sound("sounds/weapons/bar/magout.wav");
|
|
precache_sound("sounds/weapons/bar/magin.wav");
|
|
precache_sound("sounds/weapons/bar/maghit.wav");
|
|
break;
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
precache_sound ("sounds/weapons/browning/boltback.wav");
|
|
precache_sound ("sounds/weapons/browning/topopen.wav");
|
|
precache_sound ("sounds/weapons/browning/chainoff.wav");
|
|
precache_sound ("sounds/weapons/browning/boltback.wav");
|
|
precache_sound ("sounds/weapons/browning/topopen.wav");
|
|
precache_sound ("sounds/weapons/browning/chainon.wav");
|
|
precache_sound ("sounds/weapons/browning/chainplace.wav");
|
|
precache_sound ("sounds/weapons/browning/topclose.wav");
|
|
precache_sound ("sounds/weapons/browning/tophit.wav");
|
|
precache_sound ("sounds/weapons/browning/boltforward.wav");
|
|
precache_sound ("sounds/weapons/browning/shoot.wav");
|
|
break;
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
case W_DB:
|
|
case W_BORE:
|
|
precache_sound("sounds/weapons/shotgun/open.wav");
|
|
precache_sound("sounds/weapons/shotgun/out.wav");
|
|
precache_sound("sounds/weapons/shotgun/in.wav");
|
|
precache_sound("sounds/weapons/shotgun/close.wav");
|
|
precache_sound("sounds/weapons/shotgun/shoot.wav");
|
|
|
|
//lotta stuff here, so let's make sure we don't add unless ABSOLUTELY necessary..
|
|
if (weptype == W_SAWNOFF || weptype == W_SNUFF)
|
|
precache_model("models/weapons/sawnoff/v_snuff_right.mdl");
|
|
precache_model("models/weapons/sawnoff/v_snuff_left.mdl");
|
|
break;
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
precache_sound("sounds/weapons/fg42/magout.wav");
|
|
precache_sound("sounds/weapons/fg42/magin.wav");
|
|
precache_sound("sounds/weapons/fg42/boltback.wav");
|
|
precache_sound("sounds/weapons/fg42/boltforward.wav");
|
|
precache_sound("sounds/weapons/fg42/shoot.wav");
|
|
break;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
precache_sound("sounds/weapons/gewehr/magout.wav");
|
|
precache_sound("sounds/weapons/gewehr/magin.wav");
|
|
precache_sound("sounds/weapons/gewehr/maghit.wav");
|
|
precache_sound("sounds/weapons/gewehr/boltrelease.wav");
|
|
precache_sound("sounds/weapons/gewehr/shoot.wav");
|
|
break;
|
|
case W_M1:
|
|
case W_M1000:
|
|
precache_sound ("sounds/weapons/garand/clipout.wav");
|
|
precache_sound ("sounds/weapons/garand/clipin.wav");
|
|
precache_sound ("sounds/weapons/garand/clippush.wav");
|
|
precache_sound ("sounds/weapons/garand/boltrelease.wav");
|
|
precache_sound ("sounds/weapons/garand/shoot.wav");
|
|
break;
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
precache_sound("sounds/weapons/m1carbine/shoot.wav");
|
|
precache_sound("sounds/weapons/m1carbine/magout.wav");
|
|
precache_sound("sounds/weapons/m1carbine/magin.wav");
|
|
precache_sound("sounds/weapons/m1carbine/maghit.wav");
|
|
precache_sound("sounds/weapons/m1carbine/bolt.wav");
|
|
break;
|
|
case W_M2:
|
|
precache_sound("sounds/weapons/m2flame/flamethrower.wav");
|
|
precache_model("models/sprites/flame.spr");
|
|
break;
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
precache_sound ("sounds/weapons/mp40/shoot.wav");
|
|
precache_sound ("sounds/weapons/mp40/magout.wav");
|
|
precache_sound ("sounds/weapons/mp40/magin.wav");
|
|
precache_sound ("sounds/weapons/mp40/boltback.wav");
|
|
break;
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
precache_sound ("sounds/weapons/mp5k/shoot.wav");
|
|
precache_sound ("sounds/weapons/mp5k/magout.wav");
|
|
precache_sound ("sounds/weapons/mp5k/magin.wav");
|
|
precache_sound ("sounds/weapons/mp5k/slap.wav");
|
|
break;
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
precache_sound("sounds/weapons/mg42/magout.wav");
|
|
precache_sound("sounds/weapons/mg42/magin.wav");
|
|
precache_sound("sounds/weapons/mg42/charge.wav");
|
|
precache_sound("sounds/weapons/mg42/shoot.wav");
|
|
break;
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
precache_sound ("sounds/weapons/panzer/move.wav");
|
|
precache_sound ("sounds/weapons/panzer/insert.wav");
|
|
precache_sound ("sounds/weapons/panzer/shoot.wav");
|
|
//precache_model ("progs/shark.mdl");
|
|
break;
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
precache_sound("sounds/weapons/ppsh/magout.wav");
|
|
precache_sound("sounds/weapons/ppsh/magin.wav");
|
|
precache_sound("sounds/weapons/ppsh/maghit.wav");
|
|
precache_sound("sounds/weapons/ppsh/boltback.wav");
|
|
precache_sound("sounds/weapons/ppsh/boltrelease.wav");
|
|
precache_sound("sounds/weapons/ppsh/shoot.wav");
|
|
break;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
precache_sound ("sounds/weapons/ptrs/open.wav");
|
|
precache_sound ("sounds/weapons/ptrs/maghit.wav");
|
|
precache_sound ("sounds/weapons/ptrs/magin.wav");
|
|
precache_sound ("sounds/weapons/ptrs/close.wav");
|
|
precache_sound ("sounds/weapons/ptrs/shoot.wav");
|
|
break;
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
precache_sound("sounds/weapons/raygun/open.wav");
|
|
precache_sound("sounds/weapons/raygun/out.wav");
|
|
precache_sound("sounds/weapons/raygun/in.wav");
|
|
precache_sound("sounds/weapons/raygun/close.wav");
|
|
precache_sound("sounds/weapons/raygun/shoot.wav");
|
|
precache_model("models/misc/raybeam.mdl");
|
|
break;
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
precache_sound ("sounds/weapons/stg/magout.wav");
|
|
precache_sound ("sounds/weapons/stg/magin.wav");
|
|
precache_sound ("sounds/weapons/stg/shoot.wav");
|
|
precache_sound ("sounds/weapons/stg/boltback.wav");
|
|
precache_sound ("sounds/weapons/stg/boltrelease.wav");
|
|
break;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
precache_sound ("sounds/weapons/shotgun/pump.wav");
|
|
precache_sound ("sounds/weapons/shotgun/insert.wav");
|
|
precache_sound ("sounds/weapons/shotgun/shoot.wav");
|
|
break;
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
precache_sound("sounds/weapons/type100/magout.wav");
|
|
precache_sound("sounds/weapons/type100/magin.wav");
|
|
precache_sound("sounds/weapons/type100/boltpull.wav");
|
|
precache_sound("sounds/weapons/type100/shoot.wav");
|
|
break;
|
|
case W_TESLA:
|
|
case W_DG3:
|
|
precache_model("models/sprites/lightning.spr");
|
|
precache_sound("sounds/weapons/tesla/switchoff.wav");
|
|
precache_sound("sounds/weapons/tesla/pulllever.wav");
|
|
precache_sound("sounds/weapons/tesla/glassbreak.wav");
|
|
precache_sound("sounds/weapons/tesla/clipin.wav");
|
|
precache_sound("sounds/weapons/tesla/clipoff.wav");
|
|
precache_sound("sounds/weapons/tesla/switchon.wav");
|
|
precache_sound("sounds/weapons/tesla/shoot.wav");
|
|
break;
|
|
case W_GRENADE:
|
|
precache_model("models/props/grenade_bag.mdl");
|
|
break;
|
|
}
|
|
}
|
|
|
|
float(float wep) getWeaponRecoilReturn =
|
|
{
|
|
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
return 750;
|
|
break;
|
|
case W_BIATCH:
|
|
return 750;
|
|
break;
|
|
case W_KAR:
|
|
return 750;
|
|
break;
|
|
case W_ARMAGEDDON:
|
|
return 750;
|
|
break;
|
|
case W_THOMPSON:
|
|
return 950;
|
|
break;
|
|
case W_GIBS:
|
|
return 950;
|
|
break;
|
|
case W_357:
|
|
return 1500;
|
|
break;
|
|
case W_KILLU:
|
|
return 1500;
|
|
break;
|
|
case W_BAR:
|
|
return 460;
|
|
break;
|
|
case W_WIDOW:
|
|
return 460;
|
|
break;
|
|
case W_BROWNING:
|
|
return 950;
|
|
break;
|
|
case W_ACCELERATOR:
|
|
return 950;
|
|
break;
|
|
case W_DB:
|
|
return 1000;
|
|
break;
|
|
case W_BORE:
|
|
return 1000;
|
|
break;
|
|
case W_FG:
|
|
return 1129;
|
|
break;
|
|
case W_IMPELLER:
|
|
return 1129;
|
|
break;
|
|
case W_GEWEHR:
|
|
return 1500;
|
|
break;
|
|
case W_COMPRESSOR:
|
|
return 1500;
|
|
break;
|
|
case W_KAR_SCOPE:
|
|
return 750;
|
|
break;
|
|
case W_HEADCRACKER:
|
|
return 750;
|
|
break;
|
|
case W_M1:
|
|
return 1500;
|
|
break;
|
|
case W_M1000:
|
|
return 1500;
|
|
break;
|
|
case W_M1A1:
|
|
return 1500;
|
|
break;
|
|
case W_WIDDER:
|
|
return 1500;
|
|
break;
|
|
case W_MP40:
|
|
return 2538;
|
|
break;
|
|
case W_AFTERBURNER:
|
|
return 2538;
|
|
break;
|
|
case W_MP5K:
|
|
return 1255;
|
|
break;
|
|
case W_KOLLIDER:
|
|
return 1255;
|
|
break;
|
|
case W_MG:
|
|
return 1778;
|
|
break;
|
|
case W_BARRACUDA:
|
|
return 1778;
|
|
break;
|
|
case W_PANZER:
|
|
return 0;
|
|
break;
|
|
case W_LONGINUS:
|
|
return 0;
|
|
break;
|
|
case W_PPSH:
|
|
return 1255;
|
|
break;
|
|
case W_REAPER:
|
|
return 1255;
|
|
break;
|
|
case W_PTRS:
|
|
return 1500;
|
|
break;
|
|
case W_PENETRATOR:
|
|
return 1500;
|
|
break;
|
|
case W_RAY:
|
|
return 0;
|
|
break;
|
|
case W_PORTER:
|
|
return 0;
|
|
break;
|
|
case W_SAWNOFF:
|
|
return 1000;
|
|
break;
|
|
case W_SNUFF:
|
|
return 1000;
|
|
break;
|
|
case W_STG:
|
|
return 2400;
|
|
break;
|
|
case W_SPATZ:
|
|
return 2400;
|
|
break;
|
|
case W_TRENCH:
|
|
return 500;
|
|
break;
|
|
case W_GUT:
|
|
return 500;
|
|
break;
|
|
case W_TYPE:
|
|
return 1813;
|
|
break;
|
|
case W_SAMURAI:
|
|
return 1813;
|
|
break;
|
|
case W_TESLA:
|
|
case W_DG3:
|
|
return 1813;
|
|
break;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
float(float weapon, float stance) CrossHairWeapon =
|
|
{
|
|
float crosshair_spread = 0;
|
|
|
|
switch(weapon)
|
|
{
|
|
case W_COLT:
|
|
case W_BIATCH:
|
|
case W_357:
|
|
case W_KILLU:
|
|
crosshair_spread = 22;
|
|
break;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
crosshair_spread = 65;
|
|
break;
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
crosshair_spread = 10;
|
|
break;
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
crosshair_spread = 30;
|
|
break;
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
crosshair_spread = 50;
|
|
break;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
case W_DB:
|
|
case W_BORE:
|
|
crosshair_spread = 35;
|
|
break;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
case W_M1:
|
|
case W_M1000:
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
crosshair_spread = 5;
|
|
break;
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
case W_TESLA:
|
|
crosshair_spread = 0;
|
|
break;
|
|
default:
|
|
crosshair_spread = 0;
|
|
break;
|
|
}
|
|
|
|
// early out
|
|
if (crosshair_spread == 0)
|
|
return crosshair_spread;
|
|
|
|
// pretty sure CoD doesn't compute this, but we're cooler than CoD
|
|
switch(stance) {
|
|
case 2:
|
|
return crosshair_spread;
|
|
case 1:
|
|
return crosshair_spread * 0.90;
|
|
case 0:
|
|
return crosshair_spread * 0.85;
|
|
default: return 0;
|
|
}
|
|
|
|
return crosshair_spread;
|
|
}
|
|
|
|
float(float weapon, float stance) CrossHairMaxSpread =
|
|
{
|
|
float crosshair_spread = 0;
|
|
|
|
switch(weapon)
|
|
{
|
|
case W_COLT:
|
|
case W_BIATCH:
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
case W_357:
|
|
case W_KILLU:
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
crosshair_spread = 48;
|
|
break;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
crosshair_spread = 75;
|
|
break;
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
crosshair_spread = 50;
|
|
break;
|
|
case W_DB:
|
|
case W_BORE:
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
case W_M1:
|
|
case W_M1000:
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
crosshair_spread = 35;
|
|
break;
|
|
case W_PANZER:
|
|
case W_LONGINUS:
|
|
case W_TESLA:
|
|
crosshair_spread = 0;
|
|
break;
|
|
default:
|
|
crosshair_spread = 0;
|
|
break;
|
|
}
|
|
|
|
// early out
|
|
if (crosshair_spread == 0)
|
|
return crosshair_spread;
|
|
|
|
// pretty sure CoD doesn't compute this, but we're cooler than CoD
|
|
switch(stance) {
|
|
case 2:
|
|
return crosshair_spread;
|
|
case 1:
|
|
return crosshair_spread * 0.90;
|
|
case 0:
|
|
return crosshair_spread * 0.85;
|
|
default: return 0;
|
|
}
|
|
|
|
return crosshair_spread;
|
|
}
|
|
|
|
float(float wep) W_SpreadAffectedByADS =
|
|
{
|
|
switch (wep) {
|
|
case W_SAWNOFF:
|
|
case W_SNUFF:
|
|
case W_DB:
|
|
case W_BORE:
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
return false;
|
|
default:
|
|
return true;
|
|
}
|
|
}
|
|
|
|
float(float wep, float is_moving, float stance) GetWeaponSpread =
|
|
{
|
|
float magic_number = 1.15;
|
|
|
|
if (!is_moving) {
|
|
return (CrossHairWeapon(wep, stance));
|
|
} else {
|
|
return (CrossHairMaxSpread(wep, stance)/2) * magic_number;
|
|
}
|
|
}
|
|
|
|
//
|
|
// W_IsLowAmmo(weapon, value, mag_not_reserve)
|
|
// Determine if the weapon is low on ammo on the Magazine
|
|
// or in its Reserve.
|
|
//
|
|
float(float weapon, float value, float mag_not_reserve) W_IsLowAmmo =
|
|
{
|
|
// Check the Reserve
|
|
if (mag_not_reserve == false) {
|
|
// If there's 20% or less of maximum capacity
|
|
if (value / getWeaponAmmo(weapon) <= 0.2)
|
|
return true;
|
|
return false;
|
|
}
|
|
// Check the Magazine
|
|
else {
|
|
// Initial check: always return true if there's only one
|
|
// round left and that's not the maximum clip size.
|
|
if (value == 1 && value != getWeaponMag(weapon))
|
|
return true;
|
|
|
|
// If there's less than 33%
|
|
if (value / getWeaponMag(weapon) < 0.33)
|
|
return true;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// PSP Specific!!
|
|
vector(float wep) GetWeaponRecoil =
|
|
{
|
|
vector guaranteed = '0 0 0';
|
|
vector kick_change = '0 0 0';
|
|
vector final_kick = '0 0 0';
|
|
float change_1, change_2, change_3,total_recoil, r, temp1, temp2;
|
|
switch (wep)
|
|
{
|
|
case W_COLT:
|
|
guaranteed = '0 35 0';
|
|
kick_change = '25 15 25';
|
|
break;
|
|
case W_BIATCH:
|
|
guaranteed = '0 35 0';
|
|
kick_change = '25 15 25';
|
|
break;
|
|
case W_357:
|
|
guaranteed = '0 80 50';
|
|
kick_change = '0 60 40';
|
|
break;
|
|
case W_KILLU:
|
|
guaranteed = '0 80 50';
|
|
kick_change = '0 60 40';
|
|
break;
|
|
case W_THOMPSON:
|
|
kick_change = '74 74 85';
|
|
break;
|
|
case W_GIBS:
|
|
kick_change = '74 74 85';
|
|
break;
|
|
case W_MP40:
|
|
kick_change = '44 44 44';
|
|
break;
|
|
case W_AFTERBURNER:
|
|
kick_change = '44 44 44';
|
|
break;
|
|
case W_MP5K:
|
|
kick_change = '44 44 44';
|
|
break;
|
|
case W_KOLLIDER:
|
|
kick_change = '44 44 44';
|
|
break;
|
|
case W_TYPE:
|
|
kick_change = '44 44 44';
|
|
break;
|
|
case W_SAMURAI:
|
|
kick_change = '24 74 24';
|
|
break;
|
|
case W_PPSH:
|
|
kick_change = '4 22 4';
|
|
break;
|
|
case W_REAPER:
|
|
kick_change = '4 22 4';
|
|
break;
|
|
case W_GEWEHR:
|
|
kick_change = '50 60 50';
|
|
break;
|
|
case W_COMPRESSOR:
|
|
kick_change = '50 60 50';
|
|
break;
|
|
case W_M1:
|
|
guaranteed = '0 35 0';
|
|
kick_change = '30 30 30';
|
|
break;
|
|
case W_M1000:
|
|
guaranteed = '0 35 0';
|
|
kick_change = '30 30 30';
|
|
break;
|
|
case W_STG:
|
|
kick_change = '15 44 15';
|
|
break;
|
|
case W_SPATZ:
|
|
kick_change = '15 44 15';
|
|
break;
|
|
case W_M1A1:
|
|
kick_change = '50 60 50';
|
|
break;
|
|
case W_WIDDER:
|
|
kick_change = '50 60 50';
|
|
break;
|
|
case W_KAR:
|
|
guaranteed = '0 50 0';
|
|
kick_change = '25 30 25';
|
|
break;
|
|
case W_ARMAGEDDON:
|
|
guaranteed = '0 50 0';
|
|
kick_change = '25 30 25';
|
|
break;
|
|
case W_KAR_SCOPE:
|
|
guaranteed = '0 50 0';
|
|
kick_change = '25 30 25';
|
|
break;
|
|
case W_HEADCRACKER:
|
|
guaranteed = '0 50 0';
|
|
kick_change = '25 30 25';
|
|
break;
|
|
case W_PTRS:
|
|
guaranteed = '0 100 85';
|
|
kick_change = '0 95 75';
|
|
break;
|
|
case W_PENETRATOR:
|
|
guaranteed = '0 100 85';
|
|
kick_change = '0 95 75';
|
|
break;
|
|
case W_TRENCH:
|
|
guaranteed = '0 100 85';
|
|
kick_change = '0 95 75';
|
|
break;
|
|
case W_GUT:
|
|
guaranteed = '0 100 85';
|
|
kick_change = '0 95 75';
|
|
break;
|
|
case W_DB:
|
|
guaranteed = '0 95 0';
|
|
kick_change = '45 85 45';
|
|
break;
|
|
case W_BORE:
|
|
guaranteed = '0 95 0';
|
|
kick_change = '45 85 45';
|
|
break;
|
|
case W_SAWNOFF:
|
|
guaranteed = '0 95 0';
|
|
kick_change = '45 85 45';
|
|
break;
|
|
case W_SNUFF:
|
|
guaranteed = '0 95 0';
|
|
kick_change = '45 85 45';
|
|
break;
|
|
case W_BAR:
|
|
kick_change = '0 50 0';
|
|
break;
|
|
case W_WIDOW:
|
|
kick_change = '0 50 0';
|
|
break;
|
|
case W_MG:
|
|
kick_change = '40 30 40';
|
|
break;
|
|
case W_BARRACUDA:
|
|
kick_change = '40 30 40';
|
|
break;
|
|
case W_FG:
|
|
kick_change = '30 45 0';
|
|
break;
|
|
case W_IMPELLER:
|
|
kick_change = '30 45 0';
|
|
break;
|
|
case W_BROWNING:
|
|
kick_change = '50 66 50';
|
|
break;
|
|
case W_ACCELERATOR:
|
|
kick_change = '50 66 50';
|
|
break;
|
|
case W_TESLA:
|
|
case W_DG3:
|
|
kick_change = '74 74 85';
|
|
break;
|
|
}
|
|
total_recoil = kick_change_x + kick_change_y + kick_change_z;
|
|
|
|
change_1 = (kick_change_x)/total_recoil;
|
|
change_2 = (kick_change_y)/total_recoil;
|
|
change_3 = (kick_change_z)/total_recoil;
|
|
|
|
r = random();
|
|
temp1 = change_1 + change_2;
|
|
temp2 = change_1 + change_2 + change_3;
|
|
|
|
if (r < change_1)
|
|
final_kick_y = kick_change_x*0.4;
|
|
else if (r < temp1)
|
|
final_kick_x = kick_change_y*-0.4;
|
|
else if (r < temp2)
|
|
final_kick_y = kick_change_z*-0.4;
|
|
|
|
final_kick_y = final_kick_y + guaranteed_x;
|
|
final_kick_x = final_kick_x - guaranteed_y;
|
|
final_kick_y = final_kick_y - guaranteed_z;
|
|
|
|
final_kick_x = final_kick_x / 10;
|
|
final_kick_y = final_kick_y / 10;
|
|
final_kick_z = final_kick_z / 10;
|
|
//bprint (vtos(final_kick));
|
|
//bprint ("\n");
|
|
return final_kick;
|
|
}
|
|
|
|
// Flash offset is multiplied because vectors have limited precision within qc
|
|
vector (float wep) GetWeaponFlash_Offset =
|
|
{
|
|
switch(wep) {
|
|
case W_COLT:
|
|
return [5488, -2742, 35300];
|
|
case W_BIATCH:
|
|
return [8588, -3842, 35300];
|
|
case W_KAR:
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
case W_ARMAGEDDON:
|
|
return [5560, -4582, 75833];
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
return [6203, -5740, 57670];
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
return [5550, -4118, 62364];
|
|
case W_357:
|
|
case W_KILLU:
|
|
return [8193, -2353, 50527];
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
return [6806, -9375, 81713];
|
|
case W_DB:
|
|
case W_BORE:
|
|
return [5801, -4300, 83174];
|
|
case W_SAWNOFF:
|
|
return [5801, -4414, 44820];
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
return [5317, -5331, 70583];
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
return [3899, -5021, 78199];
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
return [14000, -12000, 110000];
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
return [6500, -8500, 65000];
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
return [11100, -9000, 86300];
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
return [11300, -11300, 85000];
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
return [19300, -15300, 85000];
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
return [10300, -10230, 100000];
|
|
case W_M1:
|
|
case W_M1000:
|
|
return [3506, -1500, 33000];
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
return [15726, -23375, 170713];
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
return [10988, -14242, 180300];
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
return [488, -2300, 25300];
|
|
default:
|
|
return [5488, -2742, 35300];
|
|
}
|
|
return [0, 0, 0];
|
|
}
|
|
|
|
float (float wep) GetWeaponFlash_Size = {
|
|
|
|
switch(wep) {
|
|
case W_COLT:
|
|
return 5;
|
|
case W_BIATCH:
|
|
return 5;
|
|
case W_KAR:
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
case W_ARMAGEDDON:
|
|
return 15;
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
return 8;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
return 19;
|
|
case W_357:
|
|
case W_KILLU:
|
|
return 7;
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
return 16;
|
|
case W_DB:
|
|
case W_BORE:
|
|
return 18;
|
|
case W_SAWNOFF:
|
|
return 20;
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
return 14;
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
return 16;
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
return 18;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
return 12;
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
return 14;
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
return 14;
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
return 14;
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
return 16;
|
|
case W_M1:
|
|
case W_M1000:
|
|
return 5;
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
return 27;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
return 30;
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
return 5;
|
|
default:
|
|
return 5;
|
|
}
|
|
}
|
|
|
|
// Returns the amount needed to zoom in a weapon. In near-fov "units".
|
|
float(float wep) GetWeaponZoomAmount =
|
|
{
|
|
switch(wep) {
|
|
case W_COLT:
|
|
return 10;
|
|
case W_KAR:
|
|
case W_ARMAGEDDON:
|
|
return 25;
|
|
case W_KAR_SCOPE:
|
|
case W_HEADCRACKER:
|
|
return 50;
|
|
case W_THOMPSON:
|
|
case W_GIBS:
|
|
return 10;
|
|
case W_TRENCH:
|
|
case W_GUT:
|
|
return 10;
|
|
case W_357:
|
|
case W_KILLU:
|
|
return 5;
|
|
case W_MG:
|
|
case W_BARRACUDA:
|
|
return 15;
|
|
case W_DB:
|
|
case W_BORE:
|
|
case W_SAWNOFF:
|
|
return 10;
|
|
case W_M1A1:
|
|
case W_WIDDER:
|
|
return 20;
|
|
case W_BAR:
|
|
case W_WIDOW:
|
|
return 30;
|
|
case W_FG:
|
|
case W_IMPELLER:
|
|
return 30;
|
|
case W_GEWEHR:
|
|
case W_COMPRESSOR:
|
|
return 25;
|
|
case W_PPSH:
|
|
case W_REAPER:
|
|
return 10;
|
|
case W_MP40:
|
|
case W_AFTERBURNER:
|
|
return 10;
|
|
case W_MP5K:
|
|
case W_KOLLIDER:
|
|
return 10;
|
|
case W_STG:
|
|
case W_SPATZ:
|
|
return 20;
|
|
case W_M1:
|
|
case W_M1000:
|
|
return 25;
|
|
case W_BROWNING:
|
|
case W_ACCELERATOR:
|
|
return 15;
|
|
case W_PTRS:
|
|
case W_PENETRATOR:
|
|
return 50;
|
|
case W_TYPE:
|
|
case W_SAMURAI:
|
|
return 10;
|
|
case W_RAY:
|
|
case W_PORTER:
|
|
return 5;
|
|
default: return 0;
|
|
}
|
|
|
|
return 0;
|
|
}
|