Weapon Asset (WaW)
The purpose of the weapon asset should be fairly obvious, but the structure not so much. The header on Xbox 360 is 0x9AC bytes long.
enum weapType_t
{
WEAPTYPE_BULLET = 0x0,
WEAPTYPE_GRENADE = 0x1,
WEAPTYPE_PROJECTILE = 0x2,
WEAPTYPE_BINOCULARS = 0x3,
WEAPTYPE_GAS = 0x4,
WEAPTYPE_BOMB = 0x5,
WEAPTYPE_MINE = 0x6,
WEAPTYPE_NUM = 0x7
};
enum weapClass_t
{
WEAPCLASS_RIFLE = 0x0,
WEAPCLASS_MG = 0x1,
WEAPCLASS_SMG = 0x2,
WEAPCLASS_SPREAD = 0x3,
WEAPCLASS_PISTOL = 0x4,
WEAPCLASS_GRENADE = 0x5,
WEAPCLASS_ROCKETLAUNCHER = 0x6,
WEAPCLASS_TURRET = 0x7,
WEAPCLASS_NON_PLAYER = 0x8,
WEAPCLASS_GAS = 0x9,
WEAPCLASS_ITEM = 0xA,
WEAPCLASS_NUM = 0xB
};
enum PenetrateType
{
PENETRATE_TYPE_NONE = 0x0,
PENETRATE_TYPE_SMALL = 0x1,
PENETRATE_TYPE_MEDIUM = 0x2,
PENETRATE_TYPE_LARGE = 0x3,
PENETRATE_TYPE_COUNT = 0x4
};
enum ImpactType
{
IMPACT_TYPE_NONE = 0x0,
IMPACT_TYPE_BULLET_SMALL = 0x1,
IMPACT_TYPE_BULLET_LARGE = 0x2,
IMPACT_TYPE_BULLET_AP = 0x3,
IMPACT_TYPE_SHOTGUN = 0x4,
IMPACT_TYPE_GRENADE_BOUNCE = 0x5,
IMPACT_TYPE_GRENADE_EXPLODE = 0x6,
IMPACT_TYPE_RIFLE_EXPLODE = 0x7,
IMPACT_TYPE_ROCKET_EXPLODE = 0x7,
IMPACT_TYPE_PROJECTILE_DUD = 0x8,
IMPACT_TYPE_MORTAR_SHELL = 0x8,
IMPACT_TYPE_TANK_SHELL = 0x8,
IMPACT_TYPE_COUNT = 0x9
};
enum weapInventoryType_t
{
WEAPINVENTORY_PRIMARY = 0x0,
WEAPINVENTORY_OFFHAND = 0x1,
WEAPINVENTORY_ITEM = 0x2,
WEAPINVENTORY_ALTMODE = 0x3,
WEAPINVENTORYCOUNT = 0x4
};
enum weapFireType_t
{
WEAPON_FIRETYPE_FULLAUTO = 0x0,
WEAPON_FIRETYPE_SINGLESHOT = 0x1,
WEAPON_FIRETYPE_BURSTFIRE2 = 0x2,
WEAPON_FIRETYPE_BURSTFIRE3 = 0x3,
WEAPON_FIRETYPE_BURSTFIRE4 = 0x4,
WEAPON_FIRETYPECOUNT = 0x5
};
enum OffhandClass
{
OFFHAND_CLASS_NONE = 0x0,
OFFHAND_CLASS_FRAG_GRENADE = 0x1,
OFFHAND_CLASS_SMOKE_GRENADE = 0x2,
OFFHAND_CLASS_FLASH_GRENADE = 0x3,
OFFHAND_CLASS_COUNT = 0x4
};
enum weapStance_t
{
WEAPSTANCE_STAND = 0x0,
WEAPSTANCE_DUCK = 0x1,
WEAPSTANCE_PRONE = 0x2,
WEAPSTANCE_NUM = 0x3
};
enum activeReticleType_t
{
VEH_ACTIVE_RETICLE_NONE = 0x0,
VEH_ACTIVE_RETICLE_PIP_ON_A_STICK = 0x1,
VEH_ACTIVE_RETICLE_BOUNCING_DIAMOND = 0x2,
VEH_ACTIVE_RETICLE_COUNT = 0x3
};
enum surfaceNames_t
{
bark,
brick,
carpet,
cloth,
concrete,
dirt,
flesh,
foliage,
glass,
grass,
gravel,
ice,
metal,
mud,
paper,
plaster,
rock,
sand,
snow,
water,
wood,
asphalt,
ceramic,
plastic,
rubber,
cushion,
fruit,
paintedmetal,
player,
tallgrass,
opaqueglass
};
enum bodyParts_t
{
none,
helmet,
head,
neck,
torso_upper,
torso_lower,
right_arm_upper,
left_arm_upper,
right_arm_lower,
left_arm_lower,
right_hand,
left_hand,
right_leg_upper,
left_leg_upper,
right_leg_lower,
left_leg_lower,
right_foot,
left_foot,
gun
};
enum weaponIconRatioType_t
{
WEAPON_ICON_RATIO_1TO1 = 0x0,
WEAPON_ICON_RATIO_2TO1 = 0x1,
WEAPON_ICON_RATIO_4TO1 = 0x2,
WEAPON_ICON_RATIO_COUNT = 0x3
};
enum ammoCounterClipType_t
{
AMMO_COUNTER_CLIP_NONE = 0x0,
AMMO_COUNTER_CLIP_MAGAZINE = 0x1,
AMMO_COUNTER_CLIP_SHORTMAGAZINE = 0x2,
AMMO_COUNTER_CLIP_SHOTGUN = 0x3,
AMMO_COUNTER_CLIP_ROCKET = 0x4,
AMMO_COUNTER_CLIP_BELTFED = 0x5,
AMMO_COUNTER_CLIP_ALTWEAPON = 0x6,
AMMO_COUNTER_CLIP_COUNT = 0x7
};
enum weapOverlayReticle_t
{
WEAPOVERLAYRETICLE_NONE = 0x0,
WEAPOVERLAYRETICLE_CROSSHAIR = 0x1,
WEAPOVERLAYRETICLE_NUM = 0x2
};
enum WeapOverlayInteface_t
{
WEAPOVERLAYINTERFACE_NONE = 0x0,
WEAPOVERLAYINTERFACE_JAVELIN = 0x1,
WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2,
WEAPOVERLAYINTERFACECOUNT = 0x3
};
enum weapProjExposion_t
{
WEAPPROJEXP_GRENADE = 0x0,
WEAPPROJEXP_ROCKET = 0x1,
WEAPPROJEXP_FLASHBANG = 0x2,
WEAPPROJEXP_NONE = 0x3,
WEAPPROJEXP_DUD = 0x4,
WEAPPROJEXP_SMOKE = 0x5,
WEAPPROJEXP_HEAVY = 0x6,
WEAPPROJEXP_FIRE = 0x7,
WEAPPROJEXP_NAPALMBLOB = 0x8,
WEAPPROJEXP_NUM = 0x9,
};
enum WeapStickinessType
{
WEAPSTICKINESS_NONE = 0x0,
WEAPSTICKINESS_ALL = 0x1,
WEAPSTICKINESS_GROUND = 0x2,
WEAPSTICKINESS_GROUND_WITH_YAW = 0x3,
WEAPSTICKINESS_COUNT = 0x4
};
enum guidedMissileType_t
{
MISSILE_GUIDANCE_NONE = 0x0,
MISSILE_GUIDANCE_SIDEWINDER = 0x1,
MISSILE_GUIDANCE_HELLFIRE = 0x2,
MISSILE_GUIDANCE_JAVELIN = 0x3,
MISSILE_GUIDANCE_BALLISTIC = 0x4,
MISSILE_GUIDANCE_COUNT = 0x5
};
enum clipType_t
{
WEAPCLIP_BOTTOM = 0x1,
WEAPCLIP_TOP = 0x2,
WEAPCLIP_LEFT = 0x3,
WEAPCLIP_DP28 = 0x4,
WEAPCLIP_PTRS = 0x5,
WEAPCLIP_LMG = 0x6,
WEAPCLIP_COUNT = 0x7
};
struct flameTable
{
float streamChunkGravityStart;
float streamChunkGravityEnd;
float streamChunkMaxSize;
float streamChunkStartSize;
float streamChunkEndSize;
float streamChunkStartSizeRand;
float streamChunkEndSizeRand;
float streamChunkDistScalar;
float streamChunkDistSwayScale;
float streamChunkDistSwayVelMax;
float streamChunkSpeed;
float streamChunkDecel;
float streamChunkVelocityAddScale;
float streamChunkDuration;
float streamChunkDurationScaleMaxVelocity;
float streamChunkDurationVelScalar;
float streamChunkSizeSpeedScale;
float streamChunkSizeAgeScale;
float streamChunkSpawnFireIntervalStart;
float streamChunkSpawnFireIntervalEnd;
float streamChunkSpawnFireMinLifeFrac;
float streamChunkSpawnFireMaxLifeFrac;
float streamChunkFireMinLifeFrac;
float streamChunkFireMinLifeFracStart;
float streamChunkFireMinLifeFracEnd;
float streamChunkDripsMinLifeFrac;
float streamChunkDripsMinLifeFracStart;
float streamChunkDripsMinLifeFracEnd;
float streamChunkRotationRange;
float streamSizeRandSinWave;
float streamSizeRandCosWave;
float streamDripsChunkInterval;
float streamDripsChunkMinFrac;
float streamDripsChunkRandFrac;
float streamSmokeChunkInterval;
float streamSmokeChunkMinFrac;
float streamSmokeChunkRandFrac;
float streamChunkCullDistSizeFrac;
float streamChunkCullMinLife;
float streamChunkCullMaxLife;
float streamFuelSizeStart;
float streamFuelSizeEnd;
float streamFuelLength;
float streamFuelNumSegments;
float streamFuelAnimLoopTime;
float streamFlameSizeStart;
float streamFlameSizeEnd;
float streamFlameLength;
float streamFlameNumSegments;
float streamFlameAnimLoopTime;
float streamPrimaryLightRadius;
float streamPrimaryLightRadiusFlutter;
float streamPrimaryLightColor[3];
float streamPrimaryLightFlutterColor[3];
float fireLife;
float fireLifeRand;
float fireSpeedScale;
float fireSpeedScaleRand;
float fireVelocityAddZ;
float fireVelocityAddZRand;
float fireVelocityAddSideways;
float fireGravity;
float fireGravityEnd;
float fireMaxRotVel;
float fireFriction;
float fireEndSizeAdd;
float fireStartSizeScale;
float fireEndSizeScale;
float dripsLife;
float dripsLifeRand;
float dripsSpeedScale;
float dripsSpeedScaleRand;
float dripsVelocityAddZ;
float dripsVelocityAddZRand;
float dripsVelocityAddSideways;
float dripsGravity;
float dripsGravityEnd;
float dripsMaxRotVel;
float dripsFriction;
float dripsEndSizeAdd;
float dripsStartSizeScale;
float dripsEndSizeScale;
float smokeLife;
float smokeLifeRand;
float smokeSpeedScale;
float smokeVelocityAddZ;
float smokeGravity;
float smokeGravityEnd;
float smokeMaxRotation;
float smokeMaxRotVel;
float smokeFriction;
float smokeEndSizeAdd;
float smokeStartSizeAdd;
float smokeOriginSizeOfsZScale;
float smokeOriginOfsZ;
float smokeFadein;
float smokeFadeout;
float smokeMaxAlpha;
float smokeBrightness;
float smokeOriginOffset;
float collisionSpeedScale;
float collisionVolumeScale;
const char * name;
Material * fire;
Material * smoke;
Material * heat;
Material * drips;
Material * streamFuel;
Material * streamFuel2;
Material * streamFlame;
Material * streamFlame2;
snd_alias_list_name flameOffLoopSound;
snd_alias_list_name flameIgniteSound;
snd_alias_list_name flameOnLoopSound;
snd_alias_list_name flameCooldownSound;
};
struct WeaponDef
{
const char *szInternalName;
const char *szDisplayName;
const char *szOverlayName;
XModel *gunXModel[16];
XModel *handXModel;
const char *szDefaultXAnim;
const char *szIdleXAnim;
const char *szEmptyIdleXAnim;
const char *szFireXAnim;
const char *szHoldFireXAnim;
const char *szLastShotXAnim;
const char *szRechamberXAnim;
const char *szMeleeXAnim;
const char *szMeleeChargeXAnim;
const char *szReloadXAnim;
const char *szReloadEmptyXAnim;
const char *szReloadStartXAnim;
const char *szReloadEndXAnim;
const char *szRaiseXAnim;
const char *szFirstRaiseXAnim;
const char *szDropXAnim;
const char *szAltRaiseXAnim;
const char *szAltDropXAnim;
const char *szQuickRaiseXAnim;
const char *szQuickDropXAnim;
const char *szEmptyRaiseXAnim;
const char *szEmptyDropXAnim;
const char *szSprintInXAnim;
const char *szSprintLoopXAnim;
const char *szSprintOutXAnim;
const char *szDeployXAnim;
const char *szBreakdownXAnim;
const char *szDetonateXAnim;
const char *szNightVisionWearXAnim;
const char *szNightVisionRemoveXAnim;
const char *szAdsFireXAnim;
const char *szAdsLastShotXAnim;
const char *szAdsRechamberXAnim;
const char *szAdsUpXAnim;
const char *szAdsDownXAnim;
const char *szModeName;
unsigned __int16 hideTags[8];
unsigned __int16 notetrackSoundMapKeys[20];
unsigned __int16 notetrackSoundMapValues[20];
int playerAnimType;
weapType_t weapType;
weapClass_t weapClass;
PenetrateType penetrateType;
ImpactType impactType;
weapInventoryType_t inventoryType;
weapFireType_t fireType;
clipType_t clipType;
int overheatWeapon;
float overheatRate;
float cooldownRate;
float overheatEndVal;
int coolWhileFiring;
OffhandClass offhandClass;
weapStance_t stance;
FxEffectDef *viewFlashEffect;
FxEffectDef *worldFlashEffect;
snd_alias_list_name pickupSound;
snd_alias_list_name pickupSoundPlayer;
snd_alias_list_name ammoPickupSound;
snd_alias_list_name ammoPickupSoundPlayer;
snd_alias_list_name projectileSound;
snd_alias_list_name pullbackSound;
snd_alias_list_name pullbackSoundPlayer;
snd_alias_list_name fireSound;
snd_alias_list_name fireSoundPlayer;
snd_alias_list_name loopFireSound;
snd_alias_list_name loopFireSoundPlayer;
snd_alias_list_name stopFireSound;
snd_alias_list_name stopFireSoundPlayer;
snd_alias_list_name lastShotSound;
snd_alias_list_name lastShotSoundPlayer;
snd_alias_list_name emptyFireSound;
snd_alias_list_name emptyFireSoundPlayer;
snd_alias_list_name crackSound;
snd_alias_list_name whizbySound;
snd_alias_list_name meleeSwipeSound;
snd_alias_list_name meleeSwipeSoundPlayer;
snd_alias_list_name meleeHitSound;
snd_alias_list_name meleeMissSound;
snd_alias_list_name rechamberSound;
snd_alias_list_name rechamberSoundPlayer;
snd_alias_list_name reloadSound;
snd_alias_list_name reloadSoundPlayer;
snd_alias_list_name reloadEmptySound;
snd_alias_list_name reloadEmptySoundPlayer;
snd_alias_list_name reloadStartSound;
snd_alias_list_name reloadStartSoundPlayer;
snd_alias_list_name reloadEndSound;
snd_alias_list_name reloadEndSoundPlayer;
snd_alias_list_name rotateLoopSound;
snd_alias_list_name rotateLoopSoundPlayer;
snd_alias_list_name deploySound;
snd_alias_list_name deploySoundPlayer;
snd_alias_list_name finishDeploySound;
snd_alias_list_name finishDeploySoundPlayer;
snd_alias_list_name breakdownSound;
snd_alias_list_name breakdownSoundPlayer;
snd_alias_list_name finishBreakdownSound;
snd_alias_list_name finishBreakdownSoundPlayer;
snd_alias_list_name detonateSound;
snd_alias_list_name detonateSoundPlayer;
snd_alias_list_name nightVisionWearSound;
snd_alias_list_name nightVisionWearSoundPlayer;
snd_alias_list_name nightVisionRemoveSound;
snd_alias_list_name nightVisionRemoveSoundPlayer;
snd_alias_list_name altSwitchSound;
snd_alias_list_name altSwitchSoundPlayer;
snd_alias_list_name raiseSound;
snd_alias_list_name raiseSoundPlayer;
snd_alias_list_name firstRaiseSound;
snd_alias_list_name firstRaiseSoundPlayer;
snd_alias_list_name putawaySound;
snd_alias_list_name putawaySoundPlayer;
snd_alias_list_name overheatSound;
snd_alias_list_name overheatSoundPlayer;
snd_alias_list_name *bounceSound; //Refer to surfaceNames_t
const char * standMountedWeapdef;
const char * crouchMountedWeapdef;
const char * proneMountedWeapdef;
unsigned int standMountedWeapIndex;
unsigned int crouchMountedWeapIndex;
unsigned int proneMountedWeapIndex;
FxEffectDef * viewShellEjectEffect;
FxEffectDef * worldShellEjectEffect;
FxEffectDef * viewLastShotEjectEffect;
FxEffectDef * worldLastShotEjectEffect;
Material *reticleCenter;
Material *reticleSide;
int iReticleCenterSize;
int iReticleSideSize;
int iReticleMinOfs;
activeReticleType_t activeReticleType;
float vStandMove[3];
float vStandRot[3];
float vDuckedOfs[3];
float vDuckedMove[3];
float vDuckedSprintOfs[3];
float vDuckedSprintRot[3];
float vDuckedSprintBob[2];
float duckedSprintScale;
float vSprintOfs[3];
float vSprintRot[3];
float vSprintBob[2];
float sprintScale;
float vDuckedRot[3];
float vProneOfs[3];
float vProneMove[3];
float vProneRot[3];
float fPosMoveRate;
float fPosProneMoveRate;
float fStandMoveMinSpeed;
float fDuckedMoveMinSpeed;
float fProneMoveMinSpeed;
float fPosRotRate;
float fPosProneRotRate;
float fStandRotMinSpeed;
float fDuckedRotMinSpeed;
float fProneRotMinSpeed;
XModel *worldModel[16];
XModel *worldClipModel;
XModel *rocketModel;
XModel *knifeModel;
XModel *worldKnifeModel;
XModel *mountedModel;
Material *hudIcon;
weaponIconRatioType_t hudIconRatio;
Material *ammoCounterIcon;
weaponIconRatioType_t ammoCounterIconRatio;
ammoCounterClipType_t ammoCounterClip;
int iStartAmmo;
const char *szAmmoName;
int iAmmoIndex;
const char *szClipName;
int iClipIndex;
int iMaxAmmo;
int iClipSize;
int shotCount;
const char *szSharedAmmoCapName;
int iSharedAmmoCapIndex;
int iSharedAmmoCap;
int unlimitedAmmo;
int damage;
float damageDuration;
float damageInterval;
int playerDamage;
int iMeleeDamage;
int iDamageType;
int iFireDelay;
int iMeleeDelay;
int meleeChargeDelay;
int iDetonateDelay;
int iFireTime;
int iRechamberTime;
int iRechamberBoltTime;
int iHoldFireTime;
int iDetonateTime;
int iMeleeTime;
int meleeChargeTime;
int iReloadTime;
int reloadShowRocketTime;
int iReloadEmptyTime;
int iReloadAddTime;
int iReloadEmptyAddTime;
int iReloadStartTime;
int iReloadStartAddTime;
int iReloadEndTime;
int iDropTime;
int iRaiseTime;
int iAltDropTime;
int iAltRaiseTime;
int quickDropTime;
int quickRaiseTime;
int iFirstRaiseTime;
int iEmptyRaiseTime;
int iEmptyDropTime;
int sprintInTime;
int sprintLoopTime;
int sprintOutTime;
int deployTime;
int breakdownTime;
int nightVisionWearTime;
int nightVisionWearTimeFadeOutEnd;
int nightVisionWearTimePowerUp;
int nightVisionRemoveTime;
int nightVisionRemoveTimePowerDown;
int nightVisionRemoveTimeFadeInStart;
int fuseTime;
int aiFuseTime;
int requireLockonToFire;
int noAdsWhenMagEmpty;
int avoidDropCleanup;
float autoAimRange;
float aimAssistRange;
float aimAssistRangeAds;
int mountableWeapon;
float aimPadding;
float enemyCrosshairRange;
int crosshairColorChange;
float moveSpeedScale;
float adsMoveSpeedScale;
float sprintDurationScale;
float fAdsZoomFov;
float fAdsZoomInFrac;
float fAdsZoomOutFrac;
Material *overlayMaterial;
Material *overlayMaterialLowRes;
weapOverlayReticle_t overlayReticle;
WeapOverlayInteface_t overlayInterface;
float overlayWidth;
float overlayHeight;
float fAdsBobFactor;
float fAdsViewBobMult;
float fHipSpreadStandMin;
float fHipSpreadDuckedMin;
float fHipSpreadProneMin;
float hipSpreadStandMax;
float hipSpreadDuckedMax;
float hipSpreadProneMax;
float fHipSpreadDecayRate;
float fHipSpreadFireAdd;
float fHipSpreadTurnAdd;
float fHipSpreadMoveAdd;
float fHipSpreadDuckedDecay;
float fHipSpreadProneDecay;
float fHipReticleSidePos;
int iAdsTransInTime;
int iAdsTransOutTime;
float fAdsIdleAmount;
float fHipIdleAmount;
float adsIdleSpeed;
float hipIdleSpeed;
float fIdleCrouchFactor;
float fIdleProneFactor;
float fGunMaxPitch;
float fGunMaxYaw;
float swayMaxAngle;
float swayLerpSpeed;
float swayPitchScale;
float swayYawScale;
float swayHorizScale;
float swayVertScale;
float swayShellShockScale;
float adsSwayMaxAngle;
float adsSwayLerpSpeed;
float adsSwayPitchScale;
float adsSwayYawScale;
float adsSwayHorizScale;
float adsSwayVertScale;
int bRifleBullet;
int armorPiercing;
int bBoltAction;
int aimDownSight;
int bRechamberWhileAds;
float adsViewErrorMin;
float adsViewErrorMax;
int bCookOffHold;
int bClipOnly;
int canUseInVehicle;
int noDropsOrRaises;
int adsFireOnly;
int cancelAutoHolsterWhenEmpty;
int suppressAmmoReserveDisplay;
int enhanced;
int laserSightDuringNightvision;
int bayonet;
Material *killIcon;
weaponIconRatioType_t killIconRatio;
int flipKillIcon;
Material *dpadIcon;
weaponIconRatioType_t dpadIconRatio;
int bNoPartialReload;
int bSegmentedReload;
int noADSAutoReload;
int iReloadAmmoAdd;
int iReloadStartAdd;
const char *szAltWeaponName;
unsigned int altWeaponIndex;
int iDropAmmoMin;
int iDropAmmoMax;
int blocksProne;
int silenced;
int iExplosionRadius;
int iExplosionRadiusMin;
int iExplosionInnerDamage;
int iExplosionOuterDamage;
float damageConeAngle;
int iProjectileSpeed;
int iProjectileSpeedUp;
int iProjectileSpeedForward;
int iProjectileActivateDist;
float projLifetime;
float timeToAccelerate;
float projectileCurvature;
XModel *projectileModel;
weapProjExposion_t projExplosion;
FxEffectDef *projExplosionEffect;
int projExplosionEffectForceNormalUp;
FxEffectDef *projDudEffect;
snd_alias_list_name *projExplosionSound;
snd_alias_list_name *projDudSound;
snd_alias_list_name *mortarShellSound;
snd_alias_list_name *tankShellSound;
int bProjImpactExplode;
WeapStickinessType stickiness;
int hasDetonator;
int timedDetonation;
int rotate;
int holdButtonToThrow;
int freezeMovementWhenFiring;
float lowAmmoWarningThreshold;
float parallelBounce[31]; //Refer to surfaceNames_t
float perpendicularBounce[31]; //Refer to surfaceNames_t
FxEffectDef *projTrailEffect;
float vProjectileColor[3];
guidedMissileType_t guidedMissileType;
float maxSteeringAccel;
int projIgnitionDelay;
FxEffectDef *projIgnitionEffect;
snd_alias_list_t *projIgnitionSound;
float fAdsAimPitch;
float fAdsCrosshairInFrac;
float fAdsCrosshairOutFrac;
int adsGunKickReducedKickBullets;
float adsGunKickReducedKickPercent;
float fAdsGunKickPitchMin;
float fAdsGunKickPitchMax;
float fAdsGunKickYawMin;
float fAdsGunKickYawMax;
float fAdsGunKickAccel;
float fAdsGunKickSpeedMax;
float fAdsGunKickSpeedDecay;
float fAdsGunKickStaticDecay;
float fAdsViewKickPitchMin;
float fAdsViewKickPitchMax;
float fAdsViewKickYawMin;
float fAdsViewKickYawMax;
float fAdsViewKickCenterSpeed;
float fAdsViewScatterMin;
float fAdsViewScatterMax;
float fAdsSpread;
int hipGunKickReducedKickBullets;
float hipGunKickReducedKickPercent;
float fHipGunKickPitchMin;
float fHipGunKickPitchMax;
float fHipGunKickYawMin;
float fHipGunKickYawMax;
float fHipGunKickAccel;
float fHipGunKickSpeedMax;
float fHipGunKickSpeedDecay;
float fHipGunKickStaticDecay;
float fHipViewKickPitchMin;
float fHipViewKickPitchMax;
float fHipViewKickYawMin;
float fHipViewKickYawMax;
float fHipViewKickCenterSpeed;
float fHipViewScatterMin;
float fHipViewScatterMax;
float fightDist;
float maxDist;
const char * aiVsAiAccuracyGraphName;
const char * aiVsPlayerAccuracyGraphName;
vec2_t * aiVsAiAccuracyGraphKnots;
vec2_t * aiVsPlayerAccuracyGraphKnots;
vec2_t * aiVsAiOriginalAccuracyGraphKnots;
vec2_t * aiVsPlayerOriginalAccuracyGraphKnots;
int aiVsAiAccuracyGraphKnotCount;
int aiVsPlayerAccuracyGraphKnotCount;
int aiVsAiOriginalAccuracyGraphKnotCount;
int aiVsPlayerOriginalAccuracyGraphKnotCount;
int iPositionReloadTransTime;
float leftArc;
float rightArc;
float topArc;
float bottomArc;
float accuracy;
float aiSpread;
float playerSpread;
float minTurnSpeed[2];
float maxTurnSpeed[2];
float pitchConvergenceTime;
float yawConvergenceTime;
float suppressTime;
float maxRange;
float fAnimHorRotateInc;
float fPlayerPositionDist;
const char *szUseHintString;
const char *dropHintString;
int iUseHintStringIndex;
int dropHintStringIndex;
float horizViewJitter;
float vertViewJitter;
const char *szScript;
float fOOPosAnimLength[2];
int minDamage;
int minPlayerDamage;
float fMaxDamageRange;
float fMinDamageRange;
float destabilizationRateTime;
float destabilizationCurvatureMax;
int destabilizeDistance;
float locationDamageMultipliers[19]; //Refer to bodyParts_t
const char *fireRumble;
const char *meleeImpactRumble;
float adsDofStart;
float adsDofEnd;
float hipDofStart;
float hipDofEnd;
const char * firstPersonFlameTableName;
const char * thirdPersonFlameTableName;
flameTable firstPersonFlameTable;
flameTable thirdPersonFlameTable;
FxEffectDef * tagFx_preparationEffect;
FxEffectDef * tagFlash_preparationEffect;
};