Weapon Asset (BO2): Difference between revisions

From COD Engine Research
Created page with "__NOTOC__ Category:Assets Category:BO2 The purpose of the weapon asset should be fairly obvious, but the structure not so much. The weapon asset on Black Ops 2 continu..."
 
No edit summary
Line 4: Line 4:
The purpose of the weapon asset should be fairly obvious, but the structure not so much. The weapon asset on Black Ops 2 continues on the Modern Warfare 2 idea of the "WeaponVariantDef". On Xbox 360 the WeaponVariantDef is 0x2CC bytes, while the WeaponDef is 0x990.
The purpose of the weapon asset should be fairly obvious, but the structure not so much. The weapon asset on Black Ops 2 continues on the Modern Warfare 2 idea of the "WeaponVariantDef". On Xbox 360 the WeaponVariantDef is 0x2CC bytes, while the WeaponDef is 0x990.
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
enum AnimationType : int
enum AnimationType : int
{
{
  none = 0,
  none = 0,
  default = 1,
  default = 1,
  other = 2,
  other = 2,
  sniper = 3,
  sniper = 3,
  m203 = 4,
  m203 = 4,
  hold = 5,
  hold = 5,
  briefcase = 6,
  briefcase = 6,
  reviver = 7,
  reviver = 7,
  radio = 8,
  radio = 8,
  dualwield = 9,
  dualwield = 9,
  remotecontrol = 10,
  remotecontrol = 10,
  crossbow = 11,
  crossbow = 11,
  minigun = 12,
  minigun = 12,
  beltfed = 13,  
  beltfed = 13,  
  g11 = 14,
  g11 = 14,
  rearclip = 15,
  rearclip = 15,
  handleclip = 16,
  handleclip = 16,
  rearclipsniper = 17,
  rearclipsniper = 17,
  ballisticknife = 18,
  ballisticknife = 18,
  singleknife = 19,
  singleknife = 19,
  nopump = 20,
  nopump = 20,
  hatchet = 21,
  hatchet = 21,
  grimreaper = 22,
  grimreaper = 22,
  zipline = 23,
  zipline = 23,
  riotshield = 24,
  riotshield = 24,
  tablet = 25,
  tablet = 25,
  turned = 26,
  turned = 26,
  screecher = 27,
  screecher = 27,
  PLAYER_ANIM_TYPE_MAX
  PLAYER_ANIM_TYPE_MAX
};
};
 
enum weapType_t : int
enum weapType_t : int
{
{
  WEAPTYPE_BULLET = 0,
  WEAPTYPE_BULLET = 0,
  WEAPTYPE_GRENADE = 1,
  WEAPTYPE_GRENADE = 1,
  WEAPTYPE_PROJECTILE = 2,
  WEAPTYPE_PROJECTILE = 2,
  WEAPTYPE_BINOCULARS = 3,
  WEAPTYPE_BINOCULARS = 3,
  WEAPTYPE_GAS = 4,
  WEAPTYPE_GAS = 4,
  WEAPTYPE_BOMB = 5,
  WEAPTYPE_BOMB = 5,
  WEAPTYPE_MINE = 6,
  WEAPTYPE_MINE = 6,
  WEAPTYPE_MELEE = 7,
  WEAPTYPE_MELEE = 7,
  WEAPTYPE_RIOTSHIELD = 8,
  WEAPTYPE_RIOTSHIELD = 8,
  WEAPTYPE_MAX
  WEAPTYPE_MAX
};
};
 
enum weapClass_t : int
enum weapClass_t : int
{
{
  WEAPCLASS_RIFLE = 0,
  WEAPCLASS_RIFLE = 0,
  WEAPCLASS_MG = 1,
  WEAPCLASS_MG = 1,
  WEAPCLASS_SMG = 2,
  WEAPCLASS_SMG = 2,
  WEAPCLASS_SPREAD = 3,
  WEAPCLASS_SPREAD = 3,
  WEAPCLASS_PISTOL = 4,
  WEAPCLASS_PISTOL = 4,
  WEAPCLASS_GRENADE = 5,
  WEAPCLASS_GRENADE = 5,
  WEAPCLASS_ROCKETLAUNCHER = 6,
  WEAPCLASS_ROCKETLAUNCHER = 6,
  WEAPCLASS_TURRET = 7,
  WEAPCLASS_TURRET = 7,
  WEAPCLASS_NON_PLAYER = 8,
  WEAPCLASS_NON_PLAYER = 8,
  WEAPCLASS_GAS = 9,
  WEAPCLASS_GAS = 9,
  WEAPCLASS_ITEM  = 10,
  WEAPCLASS_ITEM  = 10,
  WEAPCLASS_MELEE = 11,
  WEAPCLASS_MELEE = 11,
  WEAPCLASS_KILLSTREAK_ALT_STORED_WEAPON = 12,
  WEAPCLASS_KILLSTREAK_ALT_STORED_WEAPON = 12,
  WEAPCLASS_PISTOL_SPREAD = 13,
  WEAPCLASS_PISTOL_SPREAD = 13,
  WEAPCLASS_MAX
  WEAPCLASS_MAX
};
};
 
enum weapClass_t : int
enum weapClass_t : int
{
{
  WEAPCLASS_RIFLE = 0,
  WEAPCLASS_RIFLE = 0,
  WEAPCLASS_MG = 1,
  WEAPCLASS_MG = 1,
  WEAPCLASS_SMG = 2,
  WEAPCLASS_SMG = 2,
  WEAPCLASS_SPREAD = 3,
  WEAPCLASS_SPREAD = 3,
  WEAPCLASS_PISTOL = 4,
  WEAPCLASS_PISTOL = 4,
  WEAPCLASS_GRENADE = 5,
  WEAPCLASS_GRENADE = 5,
  WEAPCLASS_ROCKETLAUNCHER = 6,
  WEAPCLASS_ROCKETLAUNCHER = 6,
  WEAPCLASS_TURRET = 7,
  WEAPCLASS_TURRET = 7,
  WEAPCLASS_NON_PLAYER = 8,
  WEAPCLASS_NON_PLAYER = 8,
  WEAPCLASS_GAS = 9,
  WEAPCLASS_GAS = 9,
  WEAPCLASS_ITEM  = 10,
  WEAPCLASS_ITEM  = 10,
  WEAPCLASS_MELEE = 11,
  WEAPCLASS_MELEE = 11,
  WEAPCLASS_KILLSTREAK_ALT_STORED_WEAPON = 12,
  WEAPCLASS_KILLSTREAK_ALT_STORED_WEAPON = 12,
  WEAPCLASS_PISTOL_SPREAD = 13,
  WEAPCLASS_PISTOL_SPREAD = 13,
  WEAPCLASS_MAX
  WEAPCLASS_MAX
};
};
 
enum weaponIconRatioType_t : int
enum weaponIconRatioType_t : int
{
{
  WEAPON_ICON_RATIO_1TO1 = 0,
  WEAPON_ICON_RATIO_1TO1 = 0,
  WEAPON_ICON_RATIO_2TO1 = 1,
  WEAPON_ICON_RATIO_2TO1 = 1,
  WEAPON_ICON_RATIO_4TO1 = 2,
  WEAPON_ICON_RATIO_4TO1 = 2,
  WEAPON_ICON_RATIO_MAX
  WEAPON_ICON_RATIO_MAX
};
};
 
enum PenetrateType : int
enum PenetrateType : int
{
{
  PENETRATE_TYPE_NONE = 0,
  PENETRATE_TYPE_NONE = 0,
  PENETRATE_TYPE_SMALL = 1,
  PENETRATE_TYPE_SMALL = 1,
  PENETRATE_TYPE_MEDIUM = 2,
  PENETRATE_TYPE_MEDIUM = 2,
  PENETRATE_TYPE_LARGE = 3,
  PENETRATE_TYPE_LARGE = 3,
  PENETRATE_TYPE_MAX  
  PENETRATE_TYPE_MAX  
};
};
 
enum weapStance_t : int
enum weapStance_t : int
{
{
  WEAPSTANCE_STAND = 0x0,
  WEAPSTANCE_STAND = 0x0,
  WEAPSTANCE_DUCK = 0x1,
  WEAPSTANCE_DUCK = 0x1,
  WEAPSTANCE_PRONE = 0x2,
  WEAPSTANCE_PRONE = 0x2,
  WEAPSTANCE_MAX
  WEAPSTANCE_MAX
};
};
 
enum ammoCounterClipType_t : int
enum ammoCounterClipType_t : int
{
{
  AMMO_COUNTER_CLIP_NONE = 0,
  AMMO_COUNTER_CLIP_NONE = 0,
  AMMO_COUNTER_CLIP_MAGAZINE = 1,
  AMMO_COUNTER_CLIP_MAGAZINE = 1,
  AMMO_COUNTER_CLIP_SHORTMAGAZINE = 2,
  AMMO_COUNTER_CLIP_SHORTMAGAZINE = 2,
  AMMO_COUNTER_CLIP_SHOTGUN = 3,
  AMMO_COUNTER_CLIP_SHOTGUN = 3,
  AMMO_COUNTER_CLIP_ROCKET = 4,
  AMMO_COUNTER_CLIP_ROCKET = 4,
  AMMO_COUNTER_CLIP_BELTFED = 5,
  AMMO_COUNTER_CLIP_BELTFED = 5,
  AMMO_COUNTER_CLIP_ALTWEAPON = 6,
  AMMO_COUNTER_CLIP_ALTWEAPON = 6,
  AMMO_COUNTER_CLIP_MAX
  AMMO_COUNTER_CLIP_MAX
};
};
 
enum weapOverlayReticle_t
enum weapOverlayReticle_t
{
{
  WEAPOVERLAYRETICLE_NONE = 0x0,
  WEAPOVERLAYRETICLE_NONE = 0x0,
  WEAPOVERLAYRETICLE_CROSSHAIR = 0x1,
  WEAPOVERLAYRETICLE_CROSSHAIR = 0x1,
  WEAPOVERLAYRETICLE_MAX
  WEAPOVERLAYRETICLE_MAX
};
};
 
enum weapOverlayInterface_t
enum weapOverlayInterface_t
{
{
  WEAPOVERLAYINTERFACE_NONE = 0x0,
  WEAPOVERLAYINTERFACE_NONE = 0x0,
  WEAPOVERLAYINTERFACE_JAVELIN = 0x1,
  WEAPOVERLAYINTERFACE_JAVELIN = 0x1,
  WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2,
  WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2,
  WEAPOVERLAYINTERFACE_MAX
  WEAPOVERLAYINTERFACE_MAX
};
};
 
enum weapInventoryType_t : int
enum weapInventoryType_t : int
{
{
  WEAPINVENTORY_PRIMARY = 0,
  WEAPINVENTORY_PRIMARY = 0,
  WEAPINVENTORY_OFFHAND = 1,
  WEAPINVENTORY_OFFHAND = 1,
  WEAPINVENTORY_ITEM = 2,
  WEAPINVENTORY_ITEM = 2,
  WEAPINVENTORY_ALTMODE = 3,
  WEAPINVENTORY_ALTMODE = 3,
  WEAPINVENTORY_MELEE = 4,
  WEAPINVENTORY_MELEE = 4,
  WEAPINVENTORY_DW_LEFT_HAND = 5,
  WEAPINVENTORY_DW_LEFT_HAND = 5,
  WEAPINVENTORY_MAX
  WEAPINVENTORY_MAX
};
};
 
enum ImpactType : int
enum ImpactType : int
{
{
  IMPACT_TYPE_NONE = 0,
  IMPACT_TYPE_NONE = 0,
  IMPACT_TYPE_BULLET_SMALL = 1,
  IMPACT_TYPE_BULLET_SMALL = 1,
  IMPACT_TYPE_BULLET_LARGE = 2,
  IMPACT_TYPE_BULLET_LARGE = 2,
  IMPACT_TYPE_BULLET_AP = 3,
  IMPACT_TYPE_BULLET_AP = 3,
  IMPACT_TYPE_BULLET_XTREME = 4,
  IMPACT_TYPE_BULLET_XTREME = 4,
  IMPACT_TYPE_SHOTGUN = 5,
  IMPACT_TYPE_SHOTGUN = 5,
  IMPACT_TYPE_GRENADE_BOUNCE = 6,
  IMPACT_TYPE_GRENADE_BOUNCE = 6,
  IMPACT_TYPE_GRENADE_EXPLODE = 7,
  IMPACT_TYPE_GRENADE_EXPLODE = 7,
  IMPACT_TYPE_RIFLE_GRENADE = 8,
  IMPACT_TYPE_RIFLE_GRENADE = 8,
  IMPACT_TYPE_ROCKET_EXPLODE = 9,
  IMPACT_TYPE_ROCKET_EXPLODE = 9,
  IMPACT_TYPE_ROCKET_EXPLODE_XTREME = 10,
  IMPACT_TYPE_ROCKET_EXPLODE_XTREME = 10,
  IMPACT_TYPE_PROJECTILE_DUD = 11,
  IMPACT_TYPE_PROJECTILE_DUD = 11,
  IMPACT_TYPE_MORTAR_SHELL = 12,
  IMPACT_TYPE_MORTAR_SHELL = 12,
  IMPACT_TYPE_TANK_SHELL = 13,
  IMPACT_TYPE_TANK_SHELL = 13,
  IMPACT_TYPE_BOLT = 14,
  IMPACT_TYPE_BOLT = 14,
  IMPACT_TYPE_BLADE = 15,
  IMPACT_TYPE_BLADE = 15,
  IMPACT_TYPE_MAX
  IMPACT_TYPE_MAX
};
};
 
enum weapFireType_t : int
enum weapFireType_t : int
{
{
  WEAPON_FIRETYPE_FULLAUTO = 0,
  WEAPON_FIRETYPE_FULLAUTO = 0,
  WEAPON_FIRETYPE_SINGLESHOT = 1,
  WEAPON_FIRETYPE_SINGLESHOT = 1,
  WEAPON_FIRETYPE_2ROUNDBURST = 2,
  WEAPON_FIRETYPE_2ROUNDBURST = 2,
  WEAPON_FIRETYPE_3ROUNDBURST = 3,
  WEAPON_FIRETYPE_3ROUNDBURST = 3,
  WEAPON_FIRETYPE_4ROUNDBURST = 4,
  WEAPON_FIRETYPE_4ROUNDBURST = 4,
  WEAPON_FIRETYPE_5ROUNDBURST = 5,
  WEAPON_FIRETYPE_5ROUNDBURST = 5,
  WEAPON_FIRETYPE_STACKEDFIRE = 6,
  WEAPON_FIRETYPE_STACKEDFIRE = 6,
  WEAPON_FIRETYPE_MINIGUN = 7,
  WEAPON_FIRETYPE_MINIGUN = 7,
  WEAPON_FIRETYPE_CHARGESHOT = 8,
  WEAPON_FIRETYPE_CHARGESHOT = 8,
  WEAPON_FIRETYPE_JETGUN = 9,
  WEAPON_FIRETYPE_JETGUN = 9,
  WEAPON_FIRETYPE_MAX
  WEAPON_FIRETYPE_MAX
};
};
 
enum ClipTypes : int
enum ClipTypes : int
{
{
  bottom = 0,
  bottom = 0,
  top = 1,
  top = 1,
  left = 2,
  left = 2,
  dp28 = 3,
  dp28 = 3,
  ptrs = 4,
  ptrs = 4,
  lmg = 5,
  lmg = 5,
  CLIPTYPE_MAX
  CLIPTYPE_MAX
};
};
 
enum BarrelType : int
enum BarrelType : int
{
{
  SINGLE = 0,
  SINGLE = 0,
  DUAL = 1,
  DUAL = 1,
  DUAL_ALT = 2,
  DUAL_ALT = 2,
  QUAD = 3,
  QUAD = 3,
  QUAD_ALT = 4,
  QUAD_ALT = 4,
  QUAD_DOUBLE_ALT = 5,
  QUAD_DOUBLE_ALT = 5,
  BARRELTYPE_MAX
  BARRELTYPE_MAX
};
};
 
enum surfaceNames_t
enum surfaceNames_t
{
{
  bark,
  bark,
  brick,
  brick,
  carpet,
  carpet,
  cloth,
  cloth,
  concrete,
  concrete,
  dirt,
  dirt,
  flesh,
  flesh,
  foliage,
  foliage,
  glass,
  glass,
  grass,
  grass,
  gravel,
  gravel,
  ice,
  ice,
  metal,
  metal,
  mud,
  mud,
  paper,
  paper,
  plaster,
  plaster,
  rock,
  rock,
  sand,
  sand,
  snow,
  snow,
  water,
  water,
  wood,
  wood,
  asphalt,
  asphalt,
  ceramic,
  ceramic,
  plastic,
  plastic,
  rubber,
  rubber,
  cushion,
  cushion,
  fruit,
  fruit,
  paintedmetal,
  paintedmetal,
  player,
  player,
  tallgrass,
  tallgrass,
  riotshield,
  riotshield,
  opaqueglass
  opaqueglass
};
};
 
enum StickType : int
enum StickType : int
{
{
  DONT = 0,
  DONT = 0,
  ALL = 1,
  ALL = 1,
  ALL_EXCEPT_PLAYER = 2,
  ALL_EXCEPT_PLAYER = 2,
  GROUND = 3,
  GROUND = 3,
  GROUND_MAINTAIN_YAW = 4,
  GROUND_MAINTAIN_YAW = 4,
  FLESH = 5,
  FLESH = 5,
  STICK_MAX
  STICK_MAX
};
};
 
enum RotType : int
enum RotType : int
{
{
  BOTH_AXIS = 0,
  BOTH_AXIS = 0,
  ONE_AXIS = 1,
  ONE_AXIS = 1,
  CYLINDER = 2,
  CYLINDER = 2,
  ROTATION_MAX
  ROTATION_MAX
};
};
 
enum guidedMissileType_t
enum guidedMissileType_t
{
{
  MISSILE_GUIDANCE_NONE = 0x0,
  MISSILE_GUIDANCE_NONE = 0x0,
  MISSILE_GUIDANCE_SIDEWINDER = 0x1,
  MISSILE_GUIDANCE_SIDEWINDER = 0x1,
  MISSILE_GUIDANCE_HELLFIRE = 0x2,
  MISSILE_GUIDANCE_HELLFIRE = 0x2,
  MISSILE_GUIDANCE_JAVELIN = 0x3,
  MISSILE_GUIDANCE_JAVELIN = 0x3,
  MISSILE_GUIDANCE_BALLISTIC = 0x4,
  MISSILE_GUIDANCE_BALLISTIC = 0x4,
  MISSILE_GUIDANCE_WIRE = 0x5,
  MISSILE_GUIDANCE_WIRE = 0x5,
  MISSILE_GUIDANCE_TV = 0x6,
  MISSILE_GUIDANCE_TV = 0x6,
  MISSILE_GUIDANCE_DRONE = 0x7,
  MISSILE_GUIDANCE_DRONE = 0x7,
  MISSILE_GUIDANCE_HEAT = 0x8,
  MISSILE_GUIDANCE_HEAT = 0x8,
  MISSILE_GUIDANCE_MAX
  MISSILE_GUIDANCE_MAX
};
};
 
enum bodyParts_t
enum bodyParts_t
{
{
  none,
  none,
  helmet,
  helmet,
  head,
  head,
  neck,
  neck,
  torso_upper,
  torso_upper,
  torso_mid,  
  torso_mid,  
  torso_lower,
  torso_lower,
  right_arm_upper,
  right_arm_upper,
  left_arm_upper,
  left_arm_upper,
  right_arm_lower,
  right_arm_lower,
  left_arm_lower,
  left_arm_lower,
  right_hand,
  right_hand,
  left_hand,
  left_hand,
  right_leg_upper,
  right_leg_upper,
  left_leg_upper,
  left_leg_upper,
  right_leg_lower,
  right_leg_lower,
  left_leg_lower,  
  left_leg_lower,  
  right_foot,
  right_foot,
  left_foot,
  left_foot,
  gun,
  gun,
  riotshield
  riotshield
};
};
 
struct ProjectileExplosionEffect
struct ProjectileExplosionEffect
{
{
  FxEffectDef * projExplosionEffect;
  FxEffectDef * projExplosionEffect;
  bool projExplosionEffectForceNormalUp;
  bool projExplosionEffectForceNormalUp;
};
};
 
struct FlameTable
struct FlameTable
{
{
  float streamChunkGravityStart;
  float streamChunkGravityStart;
  float streamChunkGravityEnd;
  float streamChunkGravityEnd;
  float streamChunkMaxSize;
  float streamChunkMaxSize;
  float streamChunkStartSize;
  float streamChunkStartSize;
  float streamChunkEndSize;
  float streamChunkEndSize;
  float streamChunkStartSizeRand;
  float streamChunkStartSizeRand;
  float streamChunkEndSizeRand;
  float streamChunkEndSizeRand;
  float streamChunkDistScalar;
  float streamChunkDistScalar;
  float streamChunkDistSwayScale;
  float streamChunkDistSwayScale;
  float streamChunkDistSwayVelMax;
  float streamChunkDistSwayVelMax;
  float streamChunkSpeed;
  float streamChunkSpeed;
  float streamChunkDecel;
  float streamChunkDecel;
  float streamChunkVelocityAddScale;
  float streamChunkVelocityAddScale;
  float streamChunkDuration;
  float streamChunkDuration;
  float streamChunkDurationScaleMaxVel;
  float streamChunkDurationScaleMaxVel;
  float streamChunkDurationVelScalar;
  float streamChunkDurationVelScalar;
  float streamChunkSizeSpeedScale;
  float streamChunkSizeSpeedScale;
  float streamChunkSizeAgeScale;
  float streamChunkSizeAgeScale;
  float streamChunkSpawnFireIntervalSt;
  float streamChunkSpawnFireIntervalSt;
  float streamChunkSpawnFireIntervalEn;
  float streamChunkSpawnFireIntervalEn;
  float streamChunkSpawnFireMinLifeFra;
  float streamChunkSpawnFireMinLifeFra;
  float streamChunkSpawnFireMaxLifeFra;
  float streamChunkSpawnFireMaxLifeFra;
  float streamChunkFireMinLifeFrac;
  float streamChunkFireMinLifeFrac;
  float streamChunkFireMinLifeFracStar;
  float streamChunkFireMinLifeFracStar;
  float streamChunkFireMinLifeFracEnd;
  float streamChunkFireMinLifeFracEnd;
  float streamChunkDripsMinLifeFrac;
  float streamChunkDripsMinLifeFrac;
  float streamChunkDripsMinLifeFracSta;
  float streamChunkDripsMinLifeFracSta;
  float streamChunkDripsMinLifeFracEnd;
  float streamChunkDripsMinLifeFracEnd;
  float streamChunkRotationRange;
  float streamChunkRotationRange;
  float streamSizeRandSinWave;
  float streamSizeRandSinWave;
  float streamSizeRandCosWave;
  float streamSizeRandCosWave;
  float streamDripsChunkInterval;
  float streamDripsChunkInterval;
  float streamDripsChunkMinFrac;
  float streamDripsChunkMinFrac;
  float streamDripsChunkRandFrac;
  float streamDripsChunkRandFrac;
  float streamSmokeChunkInterval;
  float streamSmokeChunkInterval;
  float streamSmokeChunkMinFrac;
  float streamSmokeChunkMinFrac;
  float streamSmokeChunkRandFrac;
  float streamSmokeChunkRandFrac;
  float streamChunkCullDistSizeFrac;
  float streamChunkCullDistSizeFrac;
  float streamChunkCullMinLife;
  float streamChunkCullMinLife;
  float streamChunkCullMaxLife;
  float streamChunkCullMaxLife;
  float streamFuelSizeStart;
  float streamFuelSizeStart;
  float streamFuelSizeEnd;
  float streamFuelSizeEnd;
  float streamFuelLength;
  float streamFuelLength;
  float streamFuelNumSegments;
  float streamFuelNumSegments;
  float streamFuelAnimLoopTime;
  float streamFuelAnimLoopTime;
  float streamFlameSizeStart;
  float streamFlameSizeStart;
  float streamFlameSizeEnd;
  float streamFlameSizeEnd;
  float streamFlameLength;
  float streamFlameLength;
  float streamFlameNumSegments;
  float streamFlameNumSegments;
  float streamFlameAnimLoopTime;
  float streamFlameAnimLoopTime;
  float streamPrimaryLightRadius;
  float streamPrimaryLightRadius;
  float streamPrimaryLightRadiusFlutte;
  float streamPrimaryLightRadiusFlutte;
  float streamPrimaryLightR;
  float streamPrimaryLightR;
  float streamPrimaryLightG;
  float streamPrimaryLightG;
  float streamPrimaryLightB;
  float streamPrimaryLightB;
  float streamPrimaryLightFlutterR;
  float streamPrimaryLightFlutterR;
  float streamPrimaryLightFlutterG;
  float streamPrimaryLightFlutterG;
  float streamPrimaryLightFlutterB;
  float streamPrimaryLightFlutterB;
  float fireLife;
  float fireLife;
  float fireLifeRand;
  float fireLifeRand;
  float fireSpeedScale;
  float fireSpeedScale;
  float fireSpeedScaleRand;
  float fireSpeedScaleRand;
  float fireVelocityAddZ;
  float fireVelocityAddZ;
  float fireVelocityAddZRand;
  float fireVelocityAddZRand;
  float fireVelocityAddSideways;
  float fireVelocityAddSideways;
  float fireGravity;
  float fireGravity;
  float fireGravityEnd;
  float fireGravityEnd;
  float fireMaxRotVel;
  float fireMaxRotVel;
  float fireFriction;
  float fireFriction;
  float fireEndSizeAdd;
  float fireEndSizeAdd;
  float fireStartSizeScale;
  float fireStartSizeScale;
  float fireEndSizeScale;
  float fireEndSizeScale;
  float fireBrightness;
  float fireBrightness;
  float dripsLife;
  float dripsLife;
  float dripsLifeRand;
  float dripsLifeRand;
  float dripsSpeedScale;
  float dripsSpeedScale;
  float dripsSpeedScaleRand;
  float dripsSpeedScaleRand;
  float dripsVelocityAddZ;
  float dripsVelocityAddZ;
  float dripsVelocityAddZRand;
  float dripsVelocityAddZRand;
  float dripsVelocityAddSideways;
  float dripsVelocityAddSideways;
  float dripsGravity;
  float dripsGravity;
  float dripsGravityEnd;
  float dripsGravityEnd;
  float dripsMaxRotVel;
  float dripsMaxRotVel;
  float dripsFriction;
  float dripsFriction;
  float dripsEndSizeAdd;
  float dripsEndSizeAdd;
  float dripsStartSizeScale;
  float dripsStartSizeScale;
  float dripsEndSizeScale;
  float dripsEndSizeScale;
  float dripsBrightness;
  float dripsBrightness;
  float smokeLife;
  float smokeLife;
  float smokeLifeRand;
  float smokeLifeRand;
  float smokeSpeedScale;
  float smokeSpeedScale;
  float smokeVelocityAddZ;
  float smokeVelocityAddZ;
  float smokeGravity;
  float smokeGravity;
  float smokeGravityEnd;
  float smokeGravityEnd;
  float smokeMaxRotation;
  float smokeMaxRotation;
  float smokeMaxRotVel;
  float smokeMaxRotVel;
  float smokeFriction;
  float smokeFriction;
  float smokeEndSizeAdd;
  float smokeEndSizeAdd;
  float smokeStartSizeAdd;
  float smokeStartSizeAdd;
  float smokeOriginSizeOfsZScale;
  float smokeOriginSizeOfsZScale;
  float smokeOriginOfsZ;
  float smokeOriginOfsZ;
  float smokeFadein;
  float smokeFadein;
  float smokeFadeout;
  float smokeFadeout;
  float smokeMaxAlpha;
  float smokeMaxAlpha;
  float smokeBrightness;
  float smokeBrightness;
  float smokeOriginOffset;
  float smokeOriginOffset;
  float collisionSpeedScale;
  float collisionSpeedScale;
  float collisionVolumeScale;
  float collisionVolumeScale;
  const char * name;
  const char * name;
  Material * fire;
  Material * fire;
  Material * smoke;
  Material * smoke;
  Material * heat;
  Material * heat;
  Material * drips;
  Material * drips;
  Material * streamFuel;
  Material * streamFuel;
  Material * streamFuel2;
  Material * streamFuel2;
  Material * streamFlame;
  Material * streamFlame;
  Material * streamFlame2;
  Material * streamFlame2;
  const char * flameOffLoopSound;
  const char * flameOffLoopSound;
  const char * flameIgniteSound;
  const char * flameIgniteSound;
  const char * flameOnLoopSound;
  const char * flameOnLoopSound;
  const char * flameCooldownSound;
  const char * flameCooldownSound;
};
};
 
struct WeaponDef
struct WeaponDef
{
{
  const char * AIOverlayDescription;
  const char * AIOverlayDescription;
  XModel * * gunModel;
  XModel * * gunModel;
  XModel * handModel;
  XModel * handModel;
  const char * modeName;
  const char * modeName;
  ScriptString (*noteTrackSoundMapKeys[0x14]);
  ScriptString (*noteTrackSoundMapKeys[0x14]);
  ScriptString (*notetrackSoundMapValues[0x14]);
  ScriptString (*notetrackSoundMapValues[0x14]);
  AnimationType playerAnimType;
  AnimationType playerAnimType;
  weapType_t weaponType;
  weapType_t weaponType;
  weapClass_t weaponClass;
  weapClass_t weaponClass;
  PenetrateType penetrateType;
  PenetrateType penetrateType;
  ImpactType impactType;
  ImpactType impactType;
  weapInventoryType_t inventoryType;
  weapInventoryType_t inventoryType;
  weapFireType_t fireType;
  weapFireType_t fireType;
  ClipTypes clipType;
  ClipTypes clipType;
  BarrelType barrelType;
  BarrelType barrelType;
      int unknown1;
        int unknown1;
  const char * parentWeaponName;
  const char * parentWeaponName;
  int jamFireTime;
  int jamFireTime;
  int overheatWeapon;
  int overheatWeapon;
  float overheatRate;
  float overheatRate;
  float cooldownRate;
  float cooldownRate;
  float overheatEndVal;
  float overheatEndVal;
  bool coolWhileFiring;
  bool coolWhileFiring;
  bool fuelTankWeapon;
  bool fuelTankWeapon;
  int tankLifeTime;
  int tankLifeTime;
  OffhandClass offhandClass;
  OffhandClass offhandClass;
  int offhandSlot;
  int offhandSlot;
  weapStance_t stance;
  weapStance_t stance;
  FxEffectDef * viewFlashEffect;
  FxEffectDef * viewFlashEffect;
  FxEffectDef * worldFlashEffect;
  FxEffectDef * worldFlashEffect;
  FxEffectDef * barrelCooldownEffect;
  FxEffectDef * barrelCooldownEffect;
  int barrelCooldownMinCount;
  int barrelCooldownMinCount;
  float viewFlashOffset[3];
  float viewFlashOffset[3];
  float worldFlashOffset[3];
  float worldFlashOffset[3];
  char * pickupSound;
  char * pickupSound;
  char * pickupSoundPlayer;
  char * pickupSoundPlayer;
  char * ammoPickupSound;
  char * ammoPickupSound;
  char * ammoPickupSoundPlayer;
  char * ammoPickupSoundPlayer;
  char * projectileSound;
  char * projectileSound;
  char * pullbackSound;
  char * pullbackSound;
  char * pullbackSoundPlayer;
  char * pullbackSoundPlayer;
  char * fireSound;
  char * fireSound;
  char * fireSoundPlayer;
  char * fireSoundPlayer;
  char * loopFireSound;
  char * loopFireSound;
  char * loopFireSoundPlayer;
  char * loopFireSoundPlayer;
  char * loopFireEndSound;
  char * loopFireEndSound;
  char * loopFireEndSoundPlayer;
  char * loopFireEndSoundPlayer;
  char * startFireSound;
  char * startFireSound;
  char * stopFireSound;
  char * stopFireSound;
  char * killcamStartFireSound;
  char * killcamStartFireSound;
  char * startFireSoundPlayer;
  char * startFireSoundPlayer;
  char * stopFireSoundPlayer;
  char * stopFireSoundPlayer;
  char * killcamStartFireSoundPlayer;
  char * killcamStartFireSoundPlayer;
  char * lastShotSound;
  char * lastShotSound;
  char * lastShotSoundPlayer;
  char * lastShotSoundPlayer;
  char * emptyFireSound;
  char * emptyFireSound;
  char * emptyFireSoundPlayer;
  char * emptyFireSoundPlayer;
  char * crackSound;
  char * crackSound;
  char * whizbySound;
  char * whizbySound;
  char * meleeSwipeSound;
  char * meleeSwipeSound;
  char * meleeSwipeSoundPlayer;
  char * meleeSwipeSoundPlayer;
  char * meleeHitSound;
  char * meleeHitSound;
  char * meleeMissSound;
  char * meleeMissSound;
  char * rechamberSound;
  char * rechamberSound;
  char * rechamberSoundPlayer;
  char * rechamberSoundPlayer;
  char * reloadSound;
  char * reloadSound;
  char * reloadSoundPlayer;
  char * reloadSoundPlayer;
  char * reloadEmptySound;
  char * reloadEmptySound;
  char * reloadEmptySoundPlayer;
  char * reloadEmptySoundPlayer;
  char * reloadStartSound;
  char * reloadStartSound;
  char * reloadStartSoundPlayer;
  char * reloadStartSoundPlayer;
  char * reloadEndSound;
  char * reloadEndSound;
  char * reloadEndSoundPlayer;
  char * reloadEndSoundPlayer;
  char * rotateLoopSound;
  char * rotateLoopSound;
  char * rotateLoopSoundPlayer;
  char * rotateLoopSoundPlayer;
  char * rotateStopSound;
  char * rotateStopSound;
  char * rotateStopSoundPlayer;
  char * rotateStopSoundPlayer;
  char * deploySound;
  char * deploySound;
  char * deploySoundPlayer;
  char * deploySoundPlayer;
  char * finishDeploySound;
  char * finishDeploySound;
  char * finishDeploySoundPlayer;
  char * finishDeploySoundPlayer;
  char * breakdownSound;
  char * breakdownSound;
  char * breakdownSoundPlayer;
  char * breakdownSoundPlayer;
  char * finishBreakdownSound;
  char * finishBreakdownSound;
  char * finishBreakdownSoundPlayer;
  char * finishBreakdownSoundPlayer;
  char * detonateSound;
  char * detonateSound;
  char * detonateSoundPlayer;
  char * detonateSoundPlayer;
  char * nightVisionWearSound;
  char * nightVisionWearSound;
  char * nightVisionWearSoundPlayer;
  char * nightVisionWearSoundPlayer;
  char * nightVisionRemoveSound;
  char * nightVisionRemoveSound;
  char * nightVisionRemoveSoundPlayer;
  char * nightVisionRemoveSoundPlayer;
  char * altSwitchSound;
  char * altSwitchSound;
  char * altSwitchSoundPlayer;
  char * altSwitchSoundPlayer;
  char * raiseSound;
  char * raiseSound;
  char * raiseSoundPlayer;
  char * raiseSoundPlayer;
  char * firstRaiseSound;
  char * firstRaiseSound;
  char * firstRaiseSoundPlayer;
  char * firstRaiseSoundPlayer;
  char * adsRaiseSoundPlayer;
  char * adsRaiseSoundPlayer;
  char * adsLowerSoundPlayer;
  char * adsLowerSoundPlayer;
  char * putawaySound;
  char * putawaySound;
  char * putawaySoundPlayer;
  char * putawaySoundPlayer;
  char * overheatSound;
  char * overheatSound;
  char * overheatSoundPlayer;
  char * overheatSoundPlayer;
  char * adsZoomSound;
  char * adsZoomSound;
  char * shellCasing;
  char * shellCasing;
  char * shellCasingPlayer;
  char * shellCasingPlayer;
  char * * bounceSounds;    //Refer to surfaceNames_t
  char * * bounceSounds;    //Refer to surfaceNames_t
  const char * standMountedWeapdef;
  const char * standMountedWeapdef;
  const char * crouchMountedWeapdef;
  const char * crouchMountedWeapdef;
  const char * proneMountedWeapdef;
  const char * proneMountedWeapdef;
  unsigned int standMountedWeapIndex;
  unsigned int standMountedWeapIndex;
  unsigned int crouchMountedWeapIndex;
  unsigned int crouchMountedWeapIndex;
  unsigned int proneMountedWeapIndex;
  unsigned int proneMountedWeapIndex;
  FxEffectDef * viewShellEjectEffect;
  FxEffectDef * viewShellEjectEffect;
  FxEffectDef * worldShellEjectEffect;
  FxEffectDef * worldShellEjectEffect;
  FxEffectDef * viewLastShotEjectEffect;
  FxEffectDef * viewLastShotEjectEffect;
  FxEffectDef * worldLastShotEjectEffect;
  FxEffectDef * worldLastShotEjectEffect;
  Material *reticleCenter;
  Material *reticleCenter;
  Material *reticleSide;
  Material *reticleSide;
  int iReticleCenterSize;
  int iReticleCenterSize;
  int iReticleSideSize;
  int iReticleSideSize;
  int iReticleMinOfs;
  int iReticleMinOfs;
  activeReticleType_t activeReticleType;
  activeReticleType_t activeReticleType;
  float vStandMove[3];
  float vStandMove[3];
  float vStandRot[3];
  float vStandRot[3];
  float vDuckedOfs[3];
  float vDuckedOfs[3];
  float vDuckedMove[3];
  float vDuckedMove[3];
  float vDuckedSprintOfs[3];
  float vDuckedSprintOfs[3];
  float vDuckedSprintRot[3];
  float vDuckedSprintRot[3];
  float vDuckedSprintBob[2];
  float vDuckedSprintBob[2];
  float duckedSprintScale;
  float duckedSprintScale;
  float vSprintOfs[3];
  float vSprintOfs[3];
  float vSprintRot[3];
  float vSprintRot[3];
  float vSprintBob[2];
  float vSprintBob[2];
  float sprintScale;
  float sprintScale;
  float vLowReadyOfs[3];
  float vLowReadyOfs[3];
  float vLowReadyRot[3];
  float vLowReadyRot[3];
  float vRideOfs[3];
  float vRideOfs[3];
  float vRideRot[3];
  float vRideRot[3];
  float vDTPOfs[3];
  float vDTPOfs[3];
  float vDTPRot[3];
  float vDTPRot[3];
  float vDTPBob[2];
  float vDTPBob[2];
  float DTPScale;
  float DTPScale;
  float vMantleOfs[3];
  float vMantleOfs[3];
  float vMantleRot[3];
  float vMantleRot[3];
  float vSlideOfs[3];
  float vSlideOfs[3];
  float vSlideRot[3];
  float vSlideRot[3];
  float vDuckedRot[3];
  float vDuckedRot[3];
  float vProneOfs[3];
  float vProneOfs[3];
  float vProneMove[3];
  float vProneMove[3];
  float vProneRot[3];
  float vProneRot[3];
  float vStrafeMove[3];
  float vStrafeMove[3];
  float vStrafeRot[3];
  float vStrafeRot[3];
  float fPosMoveRate;
  float fPosMoveRate;
  float fPosProneMoveRate;
  float fPosProneMoveRate;
  float fStandMoveMinSpeed;
  float fStandMoveMinSpeed;
  float fDuckedMoveMinSpeed;
  float fDuckedMoveMinSpeed;
  float fProneMoveMinSpeed;
  float fProneMoveMinSpeed;
  float fPosRotRate;
  float fPosRotRate;
  float fPosProneRotRate;
  float fPosProneRotRate;
  float fStandRotMinSpeed;
  float fStandRotMinSpeed;
  float fDuckedRotMinSpeed;
  float fDuckedRotMinSpeed;
  float fProneRotMinSpeed;
  float fProneRotMinSpeed;
  XModel * *worldModel;
  XModel * *worldModel;
  XModel *worldClipModel;
  XModel *worldClipModel;
  XModel *rocketModel;
  XModel *rocketModel;
  XModel *mountedModel;
  XModel *mountedModel;
  XModel *additionalMeleeModel;
  XModel *additionalMeleeModel;
  Material * fireTypeIcon;
  Material * fireTypeIcon;
  Material * hudIcon;
  Material * hudIcon;
  weaponIconRatioType_t hudIconRatio;
  weaponIconRatioType_t hudIconRatio;
  Material * indicatorIcon;
  Material * indicatorIcon;
  weaponIconRatioType_t indicatorIconRatio;
  weaponIconRatioType_t indicatorIconRatio;
  Material * ammoCounterIcon;
  Material * ammoCounterIcon;
  weaponIconRatioType_t ammoCounterIconRatio;
  weaponIconRatioType_t ammoCounterIconRatio;
  ammoCounterClipType_t ammoCounterClip;
  ammoCounterClipType_t ammoCounterClip;
  int iStartAmmo;
  int iStartAmmo;
  int iMaxAmmo;
  int iMaxAmmo;
  int shotCount;
  int shotCount;
  const char *szSharedAmmoCapName;
  const char *szSharedAmmoCapName;
  int iSharedAmmoCapIndex;
  int iSharedAmmoCapIndex;
  int iSharedAmmoCap;
  int iSharedAmmoCap;
  bool unlimitedAmmo;
  bool unlimitedAmmo;
  bool ammoCountClipRelative;
  bool ammoCountClipRelative;
  int damage[6];
  int damage[6];
  float damageRange[6];
  float damageRange[6];
  int minPlayerDamage;
  int minPlayerDamage;
  float damageDuration;
  float damageDuration;
  float damageInterval;
  float damageInterval;
  int playerDamage;
  int playerDamage;
  int iMeleeDamage;
  int iMeleeDamage;
  int iDamageType;
  int iDamageType;
  ScriptString explosionTag;
  ScriptString explosionTag;
  int iFireDelay;
  int iFireDelay;
  int iMeleeDelay;
  int iMeleeDelay;
  int meleeChargeDelay;
  int meleeChargeDelay;
  int iDetonateDelay;
  int iDetonateDelay;
  int iSpinUpTime;
  int iSpinUpTime;
  int iSpinDownTime;
  int iSpinDownTime;
  float spinRate;
  float spinRate;
  char * spinLoopSound;
  char * spinLoopSound;
  char * spinLoopSoundPlayer;
  char * spinLoopSoundPlayer;
  char * startSpinSound;
  char * startSpinSound;
  char * startSpinSoundPlayer;
  char * startSpinSoundPlayer;
  char * stopSpinSound;
  char * stopSpinSound;
  char * stopSpinSoundPlayer;
  char * stopSpinSoundPlayer;
  bool applySpinPitch;
  bool applySpinPitch;
  int fireTime;
  int fireTime;
  int iFireTime;
  int iFireTime;
  int iLastFireTime;
  int iLastFireTime;
  int iRechamberTime;
  int iRechamberTime;
  int iRechamberBoltTime;
  int iRechamberBoltTime;
  int iHoldFireTime;
  int iHoldFireTime;
  int iDetonateTime;
  int iDetonateTime;
  int iMeleeTime;
  int iMeleeTime;
  int iBurstFireDelay;
  int iBurstFireDelay;
  int meleeChargeTime;
  int meleeChargeTime;
      char unknown2[0x8];
        char unknown2[0x8];
  int reloadShowRocketTime;
  int reloadShowRocketTime;
  int iReloadEmtpyTime;
  int iReloadEmtpyTime;
  int iReloadAddTime;
  int iReloadAddTime;
  int iReloadEmptyAddTime;
  int iReloadEmptyAddTime;
  int iReloadQuickAddTime;
  int iReloadQuickAddTime;
  int iReloadQuickEmptyAddTime;
  int iReloadQuickEmptyAddTime;
  int iReloadStartTime;
  int iReloadStartTime;
  int iReloadStartAddTime;
  int iReloadStartAddTime;
  int iReloadEndTime;
  int iReloadEndTime;
  int iDropTime;
  int iDropTime;
  int iRaiseTime;
  int iRaiseTime;
  int iAltDropTime;
  int iAltDropTime;
  int iQuickDropTime;
  int iQuickDropTime;
  int iQuickRaiseTime;
  int iQuickRaiseTime;
  int iFirstRaiseTime;
  int iFirstRaiseTime;
  int iEmptyRaiseTime;
  int iEmptyRaiseTime;
  int iEmptyDropTime;
  int iEmptyDropTime;
  int sprintInTime;
  int sprintInTime;
  int sprintLoopTime;
  int sprintLoopTime;
  int sprintOutTime;
  int sprintOutTime;
  int lowReadyInTime;
  int lowReadyInTime;
  int lowReadyLoopTime;
  int lowReadyLoopTime;
  int lowReadyOutTime;
  int lowReadyOutTime;
  int contFireInTime;
  int contFireInTime;
  int contFireLoopTime;
  int contFireLoopTime;
  int contFireOutTime;
  int contFireOutTime;
  int DTPInTime;
  int DTPInTime;
  int DTPLoopTime;
  int DTPLoopTime;
  int DTPOutTime;
  int DTPOutTime;
  int crawlInTime;
  int crawlInTime;
  int crawlForwardTime;
  int crawlForwardTime;
  int crawlBackTime;
  int crawlBackTime;
  int crawlRightTime;
  int crawlRightTime;
  int crawlLeftTime;
  int crawlLeftTime;
  int crawlOutFireTime;
  int crawlOutFireTime;
  int crawlOutTime;
  int crawlOutTime;
  int slideInTime;
  int slideInTime;
  int deployTime;
  int deployTime;
  int breakdownTime;
  int breakdownTime;
  int fireTime2;        //For some reason, BO2 has 2 instances of these. I have never seen them not equal.
  int fireTime2;        //For some reason, BO2 has 2 instances of these. I have never seen them not equal.
  int nightVisionWearTime;
  int nightVisionWearTime;
  int nightVisionWearTimeFadeOutEnd;
  int nightVisionWearTimeFadeOutEnd;
  int nightVisionWearTimePowerUp;
  int nightVisionWearTimePowerUp;
  int nightVisionRemoveTime;
  int nightVisionRemoveTime;
  int nightVisionRemoveTimePowerDown;
  int nightVisionRemoveTimePowerDown;
  int nightVisionRemoveTimeFadeInStart;
  int nightVisionRemoveTimeFadeInStart;
  int fuseTime;
  int fuseTime;
  int aifuseTime;
  int aifuseTime;
  int lockOnRadius;
  int lockOnRadius;
  int lockOnSpeed;
  int lockOnSpeed;
  bool requireLockonToFire;
  bool requireLockonToFire;
  bool noAdsWhenMagEmpty;
  bool noAdsWhenMagEmpty;
  bool avoidDropCleanup;
  bool avoidDropCleanup;
  int stackFire;
  int stackFire;
  float stackFireSpread;
  float stackFireSpread;
  float stackFireAccuracyDecay;
  float stackFireAccuracyDecay;
  char * stackSound;
  char * stackSound;
  float autoAimRange;
  float autoAimRange;
  float aimAssistRange;
  float aimAssistRange;
  bool mountableWeapon;
  bool mountableWeapon;
  float aimPadding;
  float aimPadding;
  float enemyCrosshairRange;
  float enemyCrosshairRange;
  bool crosshairColorChange;
  bool crosshairColorChange;
  float moveSpeedScale;
  float moveSpeedScale;
  float adsMoveSpeedScale;
  float adsMoveSpeedScale;
  float sprintDurationScale;
  float sprintDurationScale;
  weapOverlayReticle_t adsOverlayReticle;
  weapOverlayReticle_t adsOverlayReticle;
  weapOverlayInterface_t adsOverlayInterface;
  weapOverlayInterface_t adsOverlayInterface;
  float adsOverlayWidth;
  float adsOverlayWidth;
  float adsOverlayHeight;
  float adsOverlayHeight;
  float fAdsBobFactor;
  float fAdsBobFactor;
  float fAdsViewBobMult;
  float fAdsViewBobMult;
  bool holdBreathToSteady;
  bool holdBreathToSteady;
  float fHipSpreadStandMin;
  float fHipSpreadStandMin;
  float fHipSpreadDuckedMin;
  float fHipSpreadDuckedMin;
  float fHipSpreadProneMin;
  float fHipSpreadProneMin;
  float hipSpreadStandMax;
  float hipSpreadStandMax;
  float hipSpreadDuckedMax;
  float hipSpreadDuckedMax;
  float hipSpreadProneMax;
  float hipSpreadProneMax;
  float fHipSpreadDecayRate;
  float fHipSpreadDecayRate;
  float fHipSpreadFireAdd;
  float fHipSpreadFireAdd;
  float fHipSpreadTurnAdd;
  float fHipSpreadTurnAdd;
  float fHipSpreadMoveAdd;
  float fHipSpreadMoveAdd;
  float fHipSpreadDuckedDecay;
  float fHipSpreadDuckedDecay;
  float fHipSpreadProneDecay;
  float fHipSpreadProneDecay;
  float fHipReticleSidePos;
  float fHipReticleSidePos;
  float fAdsIdleAmount;
  float fAdsIdleAmount;
  float fHipIdleAmount;
  float fHipIdleAmount;
  float adsIdleSpeed;
  float adsIdleSpeed;
  float hipIdleSpeed;
  float hipIdleSpeed;
  float fIdleCrouchFactor;
  float fIdleCrouchFactor;
  float fIdleProneFactor;
  float fIdleProneFactor;
  float fGunMaxPitch;
  float fGunMaxPitch;
  float fGunMaxYaw;
  float fGunMaxYaw;
  float swayMaxAngle;
  float swayMaxAngle;
  float swayLerpSpeed;
  float swayLerpSpeed;
  float swayPitchScale;
  float swayPitchScale;
  float swayYawScale;
  float swayYawScale;
  float swayHorizScale;
  float swayHorizScale;
  float swayVertScale;
  float swayVertScale;
  float swayShellShockScale;
  float swayShellShockScale;
  float adsSwayMaxAngle;
  float adsSwayMaxAngle;
  float adsSwayLerpSpeed;
  float adsSwayLerpSpeed;
  float adsSwayPitchScale;
  float adsSwayPitchScale;
  float adsSwayYawScale;
  float adsSwayYawScale;
  bool sharedAmmo;
  bool sharedAmmo;
  bool rifleBullet;
  bool rifleBullet;
  bool armorPiercing;
  bool armorPiercing;
  bool airburstWeapon;
  bool airburstWeapon;
  bool boltAction;
  bool boltAction;
  bool useAltTagFlash;
  bool useAltTagFlash;
  bool useAntiLagRewind;
  bool useAntiLagRewind;
  bool isCarriedKillstreakWeapon;
  bool isCarriedKillstreakWeapon;
  bool aimDownSight;
  bool aimDownSight;
  bool rechamberWhileAds;
  bool rechamberWhileAds;
  bool reloadWhileAds;
  bool reloadWhileAds;
  float adsViewErrorMin;
  float adsViewErrorMin;
  float adsViewErrorMax;
  float adsViewErrorMax;
  bool cookOffHold;
  bool cookOffHold;
  bool clipOnly;
  bool clipOnly;
  bool canUseInVehicle;
  bool canUseInVehicle;
  bool noDropsOrRaises;
  bool noDropsOrRaises;
  bool adsFire;
  bool adsFire;
  bool cancelAutoHolsterWhenEmpty;
  bool cancelAutoHolsterWhenEmpty;
  bool suppressAmmoReserveDisplay;
  bool suppressAmmoReserveDisplay;
  bool laserSight;
  bool laserSight;
  bool laserSightDuringNightvision;
  bool laserSightDuringNightvision;
  bool hideThirdPerson;
  bool hideThirdPerson;
  bool bayonet;
  bool bayonet;
  bool dualWield;
  bool dualWield;
  bool explodeOnGround;
  bool explodeOnGround;
  bool throwBack;
  bool throwBack;
  bool retrievable;
  bool retrievable;
  bool dieOnRespawn;
  bool dieOnRespawn;
  bool noThirdPersonDropsOrRaises;
  bool noThirdPersonDropsOrRaises;
  bool continuousFire;
  bool continuousFire;
  bool noPing;
  bool noPing;
  bool forceBounce;
  bool forceBounce;
  bool useDroppedModelAsStowed;
  bool useDroppedModelAsStowed;
  bool noQuickDropWhenEmpty;
  bool noQuickDropWhenEmpty;
  bool keepCrosshairWhenAds;
  bool keepCrosshairWhenAds;
  bool useOnlyAltWeaponHideTagsInAltMode;
  bool useOnlyAltWeaponHideTagsInAltMode;
  bool altWeaponAdsOnly;
  bool altWeaponAdsOnly;
  bool altWeaponDisableSwitching;
  bool altWeaponDisableSwitching;
  Material *killIcon;
  Material *killIcon;
  weaponIconRatioType_t killIconRatio;
  weaponIconRatioType_t killIconRatio;
  bool flipKillIcon;
  bool flipKillIcon;
  bool noPartialReload;
  bool noPartialReload;
  bool segmentedReload;
  bool segmentedReload;
  bool noADSAutoReload;
  bool noADSAutoReload;
  int iReloadAmmoAdd;
  int iReloadAmmoAdd;
  int iReloadStartAdd;
  int iReloadStartAdd;
  const char * grenadeWeapon;
  const char * grenadeWeapon;
  const char * dualWieldWeapon;
  const char * dualWieldWeapon;
  unsigned int dualWieldWeaponIndex;
  unsigned int dualWieldWeaponIndex;
  int iDropAmmoMin;
  int iDropAmmoMin;
  int iDropAmmoMax;
  int iDropAmmoMax;
  int iDropClipAmmoMin;
  int iDropClipAmmoMin;
  int iDropClipAmmoMax;
  int iDropClipAmmoMax;
  int iShotsBeforeRechamber;
  int iShotsBeforeRechamber;
  bool blocksProne;
  bool blocksProne;
  bool showIndicator;
  bool showIndicator;
  int isRollingGrenade;  
  int isRollingGrenade;  
  int useBallisticPrediction;
  int useBallisticPrediction;
  int isValuable;
  int isValuable;
  int isTacticalInsertion;
  int isTacticalInsertion;
  bool isReviveWeapon;
  bool isReviveWeapon;
  bool bUseRigidBodyOnVehicle;
  bool bUseRigidBodyOnVehicle;
  int iExplosionRadius;
  int iExplosionRadius;
  int iExplosionRadiusMin;
  int iExplosionRadiusMin;
  int iIndicatorRadius;
  int iIndicatorRadius;
  int iExplosionInnerDamage;
  int iExplosionInnerDamage;
  int iExplosionOuterDamage;
  int iExplosionOuterDamage;
  float damageConeAngle;
  float damageConeAngle;
  int iProjectileSpeed;
  int iProjectileSpeed;
  int iProjectileSpeedUp;
  int iProjectileSpeedUp;
  int iProjectileSpeedRelativeUp;
  int iProjectileSpeedRelativeUp;
  int iProjectileSpeedForward;
  int iProjectileSpeedForward;
  float projectileTakeParentVel;
  float projectileTakeParentVel;
  int iProjectileActivateDist;
  int iProjectileActivateDist;
  float projLifetime;
  float projLifetime;
  float timeToAccelerate;
  float timeToAccelerate;
  float projectileCurvature;
  float projectileCurvature;
  XModel *projectileModel;
  XModel *projectileModel;
  weapProjExposion_t projExplosion;
  weapProjExposion_t projExplosion;
  ProjectileExplosionEffect projExplosionEffect[5];
  ProjectileExplosionEffect projExplosionEffect[5];
  FxEffectDef * projDudEffect;
  FxEffectDef * projDudEffect;
  char * projExplosionSound;
  char * projExplosionSound;
  char * projDudSound;
  char * projDudSound;
  char * mortarShellSound;
  char * mortarShellSound;
  char * tankShellSound;
  char * tankShellSound;
  bool projImpactExplode;
  bool projImpactExplode;
  bool sentientImpactExplode;
  bool sentientImpactExplode;
  bool explodeWhenStationary;
  bool explodeWhenStationary;
  bool bulletImpactExplode;
  bool bulletImpactExplode;
  StickType stickiness;
  StickType stickiness;
  RotType rotateType;
  RotType rotateType;
  bool plantable;
  bool plantable;
  bool hasDetonator;
  bool hasDetonator;
  bool timedDetonation;
  bool timedDetonation;
  bool noCrumpleMissile;
  bool noCrumpleMissile;
  bool rotate;
  bool rotate;
  bool keepRolling;  
  bool keepRolling;  
  bool holdButtonToThrow;
  bool holdButtonToThrow;
  bool offhandHoldIsCancelable;
  bool offhandHoldIsCancelable;
  bool freezeMovementWhenFiring;
  bool freezeMovementWhenFiring;
  float lowAmmoWarningThreshold;
  float lowAmmoWarningThreshold;
  bool bDisallowAtMatchStart;
  bool bDisallowAtMatchStart;
  float meleeChargeRange;
  float meleeChargeRange;
  bool useAsMelee;
  bool useAsMelee;
  bool isCameraSensor;
  bool isCameraSensor;
  bool isAcousticSensor;
  bool isAcousticSensor;
  bool isLaserSensor;
  bool isLaserSensor;
  bool isHoldeUseGrenade;
  bool isHoldeUseGrenade;
char unknown3[0xB];
char unknown3[0xB];
  FxEffectDef * projTrailEffect;
  FxEffectDef * projTrailEffect;
  float vPorjectileColor[3];
  float vPorjectileColor[3];
  guidedMissileType_t guidedMissileType;
  guidedMissileType_t guidedMissileType;
  float maxSteeringAccel;
  float maxSteeringAccel;
  int projIgnitionDelay;
  int projIgnitionDelay;
  FxEffectDef *projIgnitionEffect;
  FxEffectDef *projIgnitionEffect;
  [[:Category:Utilities#snd_alias_list_name|snd_alias_list_name]] projIgnitionSound;
  [[:Category:Utilities#snd_alias_list_name|snd_alias_list_name]] projIgnitionSound;
  float fAdsAimPitch;
  float fAdsAimPitch;
  float fAdsCrosshairInFrac;
  float fAdsCrosshairInFrac;
  float fAdsCrosshairOutFrac;
  float fAdsCrosshairOutFrac;
  int adsGunKickReducedKickBullets;
  int adsGunKickReducedKickBullets;
  float adsGunKickReducedKickPercent;
  float adsGunKickReducedKickPercent;
  float fAdsGunKickPitchMin;
  float fAdsGunKickPitchMin;
  float fAdsGunKickPitchMax;
  float fAdsGunKickPitchMax;
  float fAdsGunKickYawMin;
  float fAdsGunKickYawMin;
  float fAdsGunKickYawMax;
  float fAdsGunKickYawMax;
  float fAdsGunKickAccel;
  float fAdsGunKickAccel;
  float fAdsGunKickSpeedMax;
  float fAdsGunKickSpeedMax;
  float fAdsGunKickSpeedDecay;
  float fAdsGunKickSpeedDecay;
  float fAdsGunKickStaticDecay;
  float fAdsGunKickStaticDecay;
  float fAdsViewKickPitchMin;
  float fAdsViewKickPitchMin;
  float fAdsViewKickPitchMax;
  float fAdsViewKickPitchMax;
  float fAdsViewKickMinMagnitude;
  float fAdsViewKickMinMagnitude;
  float fAdsViewKickYawMin;
  float fAdsViewKickYawMin;
  float fAdsViewKickYawMax;
  float fAdsViewKickYawMax;
  float fAdsRecoilReductionRate;
  float fAdsRecoilReductionRate;
  float fAdsRecoilReductionLimit;
  float fAdsRecoilReductionLimit;
  float fAdsRecoilReturnRate;
  float fAdsRecoilReturnRate;
  float fAdsViewScatterMin;
  float fAdsViewScatterMin;
  float fAdsViewScatterMax;
  float fAdsViewScatterMax;
  float fAdsSpread;
  float fAdsSpread;
  int hipGunKickReducedKickBullets;
  int hipGunKickReducedKickBullets;
  float hipGunKickReducedKickPercent;
  float hipGunKickReducedKickPercent;
  float fHipGunKickPitchMin;
  float fHipGunKickPitchMin;
  float fHipGunKickPitchMax;
  float fHipGunKickPitchMax;
  float fHipGunKickYawMin;
  float fHipGunKickYawMin;
  float fHipGunKickYawMax;
  float fHipGunKickYawMax;
  float fHipGunKickAccel;
  float fHipGunKickAccel;
  float fHipGunKickSpeedMax;
  float fHipGunKickSpeedMax;
  float fHipGunKickSpeedDecay;
  float fHipGunKickSpeedDecay;
  float fHipGunKickStaticDecay;
  float fHipGunKickStaticDecay;
  float fHipViewKickPitchMin;
  float fHipViewKickPitchMin;
  float fHipViewKickPitchMax;
  float fHipViewKickPitchMax;
  float fHipViewKickMinMagnitude;
  float fHipViewKickMinMagnitude;
  float fHipViewKickYawMin;
  float fHipViewKickYawMin;
  float fHipViewKickYawMax;
  float fHipViewKickYawMax;
  float fHipViewScatterMin;
  float fHipViewScatterMin;
  float fHipViewScatterMax;
  float fHipViewScatterMax;
  float fAdsViewKickCenterDuckedScale;
  float fAdsViewKickCenterDuckedScale;
  float fAdsViewKickCenterProneScale;
  float fAdsViewKickCenterProneScale;
  float fAntiQuickScopeTime;
  float fAntiQuickScopeTime;
  float fAntiQuickScopeScale;
  float fAntiQuickScopeScale;
  float fAntiQuickScopeSpreadMultiplier;
  float fAntiQuickScopeSpreadMultiplier;
  float fAntiQuickScopeSpreadMax;
  float fAntiQuickScopeSpreadMax;
  float fAntiQuickScopeSwayFactor;
  float fAntiQuickScopeSwayFactor;
  float fightDist;
  float fightDist;
  float maxDist;
  float maxDist;
  const char * aiVsAiAccuracyGraphName;
  const char * aiVsAiAccuracyGraphName;
  const char * aiVsPlayerAccuracyGraphName;
  const char * aiVsPlayerAccuracyGraphName;
  [[:Vectors#vec2_t|vec2_t]] * aiVsAiAccuracyGraphKnots;
  [[:Vectors#vec2_t|vec2_t]] * aiVsAiAccuracyGraphKnots;
  [[:Vectors#vec2_t|vec2_t]] * aiVsPlayerAccuracyGraphKnots;
  [[:Vectors#vec2_t|vec2_t]] * aiVsPlayerAccuracyGraphKnots;
  [[:Vectors#vec2_t|vec2_t]] * aiVsAiOriginalAccuracyGraphKnots;
  [[:Vectors#vec2_t|vec2_t]] * aiVsAiOriginalAccuracyGraphKnots;
  [[:Vectors#vec2_t|vec2_t]] * aiVsPlayerOriginalAccuracyGraphKnots;
  [[:Vectors#vec2_t|vec2_t]] * aiVsPlayerOriginalAccuracyGraphKnots;
  int aiVsAiAccuracyGraphKnotCount;
  int aiVsAiAccuracyGraphKnotCount;
  int aiVsPlayerAccuracyGraphKnotCount;
  int aiVsPlayerAccuracyGraphKnotCount;
  int aiVsAiOriginalAccuracyGraphKnotCount;
  int aiVsAiOriginalAccuracyGraphKnotCount;
  int aiVsPlayerOriginalAccuracyGraphKnotCount;
  int aiVsPlayerOriginalAccuracyGraphKnotCount;
  int iPositionReloadTransTime;
  int iPositionReloadTransTime;
  float leftArc;
  float leftArc;
  float rightArc;
  float rightArc;
  float topArc;
  float topArc;
  float bottomArc;
  float bottomArc;
  float accuracy;
  float accuracy;
  float aiSpread;
  float aiSpread;
  float playerSpread;
  float playerSpread;
  float minTurnSpeed[2];
  float minTurnSpeed[2];
  float maxTurnSpeed[2];
  float maxTurnSpeed[2];
  float pitchConvergenceTime;
  float pitchConvergenceTime;
  float yawConvergenceTime;
  float yawConvergenceTime;
  float suppressTime;
  float suppressTime;
  float maxRange;
  float maxRange;
  float fAnimHorRotateInc;
  float fAnimHorRotateInc;
  float fPlayerPositionDist;
  float fPlayerPositionDist;
  const char *szUseHintString;
  const char *szUseHintString;
  const char *dropHintString;
  const char *dropHintString;
  int iUseHintStringIndex;
  int iUseHintStringIndex;
  int dropHintStringIndex;
  int dropHintStringIndex;
  float horizViewJitter;
  float horizViewJitter;
  float vertViewJitter;
  float vertViewJitter;
  float cameraShakeScale;
  float cameraShakeScale;
  int cameraShakeDuration;
  int cameraShakeDuration;
  int cameraShakeRadius;
  int cameraShakeRadius;
  float explosionCameraShakeScale;
  float explosionCameraShakeScale;
  int explosionCameraShakeDuration;
  int explosionCameraShakeDuration;
  int explosionCameraSHakeRadius;
  int explosionCameraSHakeRadius;
  const char *szScript;
  const char *szScript;
  float destabilizationRateTime;
  float destabilizationRateTime;
  float destabilizationCurvatureMax;
  float destabilizationCurvatureMax;
  int destabilizeDistance;
  int destabilizeDistance;
  float * locationDamageMultipliers;      //Refer to bodyParts_t
  float * locationDamageMultipliers;      //Refer to bodyParts_t
  const char *fireRumble;
  const char *fireRumble;
  const char *meleeImpactRumble;
  const char *meleeImpactRumble;
  const char *reloadRumble;
  const char *reloadRumble;
  const char *explosionRumble;
  const char *explosionRumble;
  Tracer * tracer;
  Tracer * tracer;
  Tracer * enemyTracer;
  Tracer * enemyTracer;
  float adsDofStart;
  float adsDofStart;
  float adsDofEnd;
  float adsDofEnd;
  float hipDofStart;
  float hipDofStart;
  float hipDofEnd;
  float hipDofEnd;
  float scanSpeed;
  float scanSpeed;
  float scanAccel;
  float scanAccel;
  int scanPauseTime;
  int scanPauseTime;
  const char * flameTableFirstPerson;
  const char * flameTableFirstPerson;
  const char * flameTableThirdPerson;
  const char * flameTableThirdPerson;
  FlameTable * firstPersonFlameTable;
  FlameTable * firstPersonFlameTable;
  FlameTable * thirdPersonFlameTable;
  FlameTable * thirdPersonFlameTable;
  FxEffectDef * tagFx_preparationEffect;
  FxEffectDef * tagFx_preparationEffect;
  FxEffectDef * tagFlash_preparationEffect;
  FxEffectDef * tagFlash_preparationEffect;
  bool doGibbing;
  bool doGibbing;
  float maxGibDistance;
  float maxGibDistance;
  float altScopeADSTransInTime;
  float altScopeADSTransInTime;
  float altScopeADSTransOutTime;
  float altScopeADSTransOutTime;
  int introFireTime;
  int introFireTime;
  int introFireLength;
  int introFireLength;
  FxEffectDef * meleeSwipeEffect; //FxEffectDef
  FxEffectDef * meleeSwipeEffect; //FxEffectDef
  FxEffectDef * meleeImpactEffect; //FxEffectDef
  FxEffectDef * meleeImpactEffect; //FxEffectDef
  FxEffectDef * meleeImpactNoBloodEffect;
  FxEffectDef * meleeImpactNoBloodEffect;
  char * throwBackType;
  char * throwBackType;
  WeaponCamo * camo;
  WeaponCamo * camo;
  float customFloat[3];
  float customFloat[3];
  __declspec(align(4)) bool customBool0;
  __declspec(align(4)) bool customBool0;
  __declspec(align(4)) bool customBool1;
  __declspec(align(4)) bool customBool1;
  __declspec(align(4)) bool customBool2;
  __declspec(align(4)) bool customBool2;
};
};
 
struct WeaponVarientDef
struct WeaponVarientDef
{
{
  char * name;
  char * name;
      int unknown1;
        int unknown1;
  WeaponDef * info;
  WeaponDef * info;
  const char * szDisplayName;
  const char * szDisplayName;
  const char * altWeapon;
  const char * altWeapon;
  const char * attachmentUnique;
  const char * attachmentUnique;
  WeaponAttachment **attachments;      //Count = 0x3F
  WeaponAttachment **attachments;      //Count = 0x3F
  WeaponUniqueAttachment **unqAttachments;      //Count = 0x5F
  WeaponUniqueAttachment **unqAttachments;      //Count = 0x5F
      char * * unknownStringArray1; //Count = 0x58
char * * unknownStringArray1; //Count = 0x58
  ScriptString (*hideTags[0x20]);
  ScriptString (*hideTags[0x20]);
      XModel **unknownModelArray1;      //Count = 8
        XModel **unknownModelArray1;      //Count = 8
      XModel **unknownModelArray2;      //Count = 8
        XModel **unknownModelArray2;      //Count = 8
      char * * unknownStringArray2; //Count = 8
char * * unknownStringArray2; //Count = 8
      char * * unknownStringArray3; //Count = 8
char * * unknownStringArray3; //Count = 8
  float attachViewModelOffset[8][3];
  float attachViewModelOffset[8][3];
  float attachWorldModelOffset[8][3];
  float attachWorldModelOffset[8][3];
  float attachViewModelRotation[8][3];
  float attachViewModelRotation[8][3];
  float attachWorldModelRotation[8][3];
  float attachWorldModelRotation[8][3];
  float stowedModelOffsets[3];
  float stowedModelOffsets[3];
  float stowedModelRotation[3];
  float stowedModelRotation[3];
      char unknown2[0x8];
        char unknown2[0x8];
  bool ignoreAttachments;
  bool ignoreAttachments;
  int iClipSize;
  int iClipSize;
  int iReloadTime;
  int iReloadTime;
  int iReloadEmptyTime;
  int iReloadEmptyTime;
  int iReloadQuickTime;
  int iReloadQuickTime;
  int iReloadQuickEmptyTime;
  int iReloadQuickEmptyTime;
  int iAdsTransInTime;
  int iAdsTransInTime;
  int iAdsTransOutTime;
  int iAdsTransOutTime;
  int iAltRaiseTime;
  int iAltRaiseTime;
  const char *szAmmoDisplayName;
  const char *szAmmoDisplayName;
  const char *szAmmoName;
  const char *szAmmoName;
  int iAmmoIndex;
  int iAmmoIndex;
  const char *szClipName;
  const char *szClipName;
  int iClipIndex;
  int iClipIndex;
  float aimAssistRangeAds;
  float aimAssistRangeAds;
  float adsSwayHorizScale;
  float adsSwayHorizScale;
  float adsSwayVertScale;
  float adsSwayVertScale;
  float fAdsViewKickCenterSpeed;
  float fAdsViewKickCenterSpeed;
  float fHipViewKickCenterSpeed;
  float fHipViewKickCenterSpeed;
  float fAdsZoomFov[3];
  float fAdsZoomFov[3];
  float adsZoomInFrac;
  float adsZoomInFrac;
  float adsZoomOutFrac;
  float adsZoomOutFrac;
  float adsOverlayAlphaScale;
  float adsOverlayAlphaScale;
      int unknown3;
        int unknown3;
      int unknown4;
        int unknown4;
  bool silenced;
  bool silenced;
  bool dualMag;
  bool dualMag;
  bool infrared;
  bool infrared;
  bool tvguided;
  bool tvguided;
  int perks[2];
  int perks[2];
  bool antiQuickScope;
  bool antiQuickScope;
  Material * AdsOverlayShader;
  Material * AdsOverlayShader;
  Material * AdsOverlayShaderLowRes;
  Material * AdsOverlayShaderLowRes;
  Material * dpadIcon;
  Material * dpadIcon;
  weaponIconRatioType_t dpadIconRatio;
  weaponIconRatioType_t dpadIconRatio;
  bool noAmmoOnDpadIcon;
  bool noAmmoOnDpadIcon;
  bool mmsWeapon;
  bool mmsWeapon;
  bool mssInScope;
  bool mssInScope;
  float mmsFOV;
  float mmsFOV;
  float mmsAspect;
  float mmsAspect;
  float mmsMaxDist;
  float mmsMaxDist;
  float ikLeftHandIdlePos[3];
  float ikLeftHandIdlePos[3];
  float ikLeftHandOffset[3];
  float ikLeftHandOffset[3];
  float ikLeftHandRotation[3];
  float ikLeftHandRotation[3];
  bool usingLeftHandProneIK;
  bool usingLeftHandProneIK;
  float ikLeftHandProneOffset[3];
  float ikLeftHandProneOffset[3];
  float ikLeftHandProneRotation[3];
  float ikLeftHandProneRotation[3];
  float ikLeftHandUiViewerOffset[3];
  float ikLeftHandUiViewerOffset[3];
  float ikLeftHandUiViewerRotation[3];
  float ikLeftHandUiViewerRotation[3];
};
};
== Source Format ==
== Source Format ==
The weapon source files are raw text files with no extension, located at "raw/weapons/sp/" for SP weapons and "raw/weapons/mp/" for MP weapons (Speculation is that zombie weapons go in "raw/weapons/zm/"). They use the same format as many other assets, with each setting name and value separated by a back-slash. The first setting identifies the file, and for weapons the identifier string is "WEAPONFILE".
The weapon source files are raw text files with no extension, located at "raw/weapons/sp/" for SP weapons and "raw/weapons/mp/" for MP weapons (Speculation is that zombie weapons go in "raw/weapons/zm/"). They use the same format as many other assets, with each setting name and value separated by a back-slash. The first setting identifies the file, and for weapons the identifier string is "WEAPONFILE".

Revision as of 18:40, 9 January 2014

The purpose of the weapon asset should be fairly obvious, but the structure not so much. The weapon asset on Black Ops 2 continues on the Modern Warfare 2 idea of the "WeaponVariantDef". On Xbox 360 the WeaponVariantDef is 0x2CC bytes, while the WeaponDef is 0x990. <syntaxhighlight lang="cpp"> enum AnimationType : int {

 none = 0,
 default = 1,
 other = 2,
 sniper = 3,
 m203 = 4,
 hold = 5,
 briefcase = 6,
 reviver = 7,
 radio = 8,
 dualwield = 9,
 remotecontrol = 10,
 crossbow = 11,
 minigun = 12,
 beltfed = 13, 
 g11 = 14,
 rearclip = 15,
 handleclip = 16,
 rearclipsniper = 17,
 ballisticknife = 18,
 singleknife = 19,
 nopump = 20,
 hatchet = 21,
 grimreaper = 22,
 zipline = 23,
 riotshield = 24,
 tablet = 25,
 turned = 26,
 screecher = 27,
 PLAYER_ANIM_TYPE_MAX

};

enum weapType_t : int {

 WEAPTYPE_BULLET = 0,
 WEAPTYPE_GRENADE = 1,
 WEAPTYPE_PROJECTILE = 2,
 WEAPTYPE_BINOCULARS = 3,
 WEAPTYPE_GAS = 4,
 WEAPTYPE_BOMB = 5,
 WEAPTYPE_MINE = 6,
 WEAPTYPE_MELEE = 7,
 WEAPTYPE_RIOTSHIELD = 8,
 WEAPTYPE_MAX

};

enum weapClass_t : int {

 WEAPCLASS_RIFLE = 0,
 WEAPCLASS_MG = 1,
 WEAPCLASS_SMG = 2,
 WEAPCLASS_SPREAD = 3,
 WEAPCLASS_PISTOL = 4,
 WEAPCLASS_GRENADE = 5,
 WEAPCLASS_ROCKETLAUNCHER = 6,
 WEAPCLASS_TURRET = 7,
 WEAPCLASS_NON_PLAYER = 8,
 WEAPCLASS_GAS = 9,
 WEAPCLASS_ITEM  = 10,
 WEAPCLASS_MELEE = 11,
 WEAPCLASS_KILLSTREAK_ALT_STORED_WEAPON = 12,
 WEAPCLASS_PISTOL_SPREAD = 13,
 WEAPCLASS_MAX

};

enum weapClass_t : int {

 WEAPCLASS_RIFLE = 0,
 WEAPCLASS_MG = 1,
 WEAPCLASS_SMG = 2,
 WEAPCLASS_SPREAD = 3,
 WEAPCLASS_PISTOL = 4,
 WEAPCLASS_GRENADE = 5,
 WEAPCLASS_ROCKETLAUNCHER = 6,
 WEAPCLASS_TURRET = 7,
 WEAPCLASS_NON_PLAYER = 8,
 WEAPCLASS_GAS = 9,
 WEAPCLASS_ITEM  = 10,
 WEAPCLASS_MELEE = 11,
 WEAPCLASS_KILLSTREAK_ALT_STORED_WEAPON = 12,
 WEAPCLASS_PISTOL_SPREAD = 13,
 WEAPCLASS_MAX

};

enum weaponIconRatioType_t : int {

 WEAPON_ICON_RATIO_1TO1 = 0,
 WEAPON_ICON_RATIO_2TO1 = 1,
 WEAPON_ICON_RATIO_4TO1 = 2,
 WEAPON_ICON_RATIO_MAX

};

enum PenetrateType : int {

 PENETRATE_TYPE_NONE = 0,
 PENETRATE_TYPE_SMALL = 1,
 PENETRATE_TYPE_MEDIUM = 2,
 PENETRATE_TYPE_LARGE = 3,
 PENETRATE_TYPE_MAX 

};

enum weapStance_t : int {

 WEAPSTANCE_STAND = 0x0,
 WEAPSTANCE_DUCK = 0x1,
 WEAPSTANCE_PRONE = 0x2,
 WEAPSTANCE_MAX

};

enum ammoCounterClipType_t : int {

 AMMO_COUNTER_CLIP_NONE = 0,
 AMMO_COUNTER_CLIP_MAGAZINE = 1,
 AMMO_COUNTER_CLIP_SHORTMAGAZINE = 2,
 AMMO_COUNTER_CLIP_SHOTGUN = 3,
 AMMO_COUNTER_CLIP_ROCKET = 4,
 AMMO_COUNTER_CLIP_BELTFED = 5,
 AMMO_COUNTER_CLIP_ALTWEAPON = 6,
 AMMO_COUNTER_CLIP_MAX

};

enum weapOverlayReticle_t {

 WEAPOVERLAYRETICLE_NONE = 0x0,
 WEAPOVERLAYRETICLE_CROSSHAIR = 0x1,
 WEAPOVERLAYRETICLE_MAX

};

enum weapOverlayInterface_t {

 WEAPOVERLAYINTERFACE_NONE = 0x0,
 WEAPOVERLAYINTERFACE_JAVELIN = 0x1,
 WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2,
 WEAPOVERLAYINTERFACE_MAX

};

enum weapInventoryType_t : int {

 WEAPINVENTORY_PRIMARY = 0,
 WEAPINVENTORY_OFFHAND = 1,
 WEAPINVENTORY_ITEM = 2,
 WEAPINVENTORY_ALTMODE = 3,
 WEAPINVENTORY_MELEE = 4,
 WEAPINVENTORY_DW_LEFT_HAND = 5,
 WEAPINVENTORY_MAX

};

enum ImpactType : int {

 IMPACT_TYPE_NONE = 0,
 IMPACT_TYPE_BULLET_SMALL = 1,
 IMPACT_TYPE_BULLET_LARGE = 2,
 IMPACT_TYPE_BULLET_AP = 3,
 IMPACT_TYPE_BULLET_XTREME = 4,
 IMPACT_TYPE_SHOTGUN = 5,
 IMPACT_TYPE_GRENADE_BOUNCE = 6,
 IMPACT_TYPE_GRENADE_EXPLODE = 7,
 IMPACT_TYPE_RIFLE_GRENADE = 8,
 IMPACT_TYPE_ROCKET_EXPLODE = 9,
 IMPACT_TYPE_ROCKET_EXPLODE_XTREME = 10,
 IMPACT_TYPE_PROJECTILE_DUD = 11,
 IMPACT_TYPE_MORTAR_SHELL = 12,
 IMPACT_TYPE_TANK_SHELL = 13,
 IMPACT_TYPE_BOLT = 14,
 IMPACT_TYPE_BLADE = 15,
 IMPACT_TYPE_MAX

};

enum weapFireType_t : int {

 WEAPON_FIRETYPE_FULLAUTO = 0,
 WEAPON_FIRETYPE_SINGLESHOT = 1,
 WEAPON_FIRETYPE_2ROUNDBURST = 2,
 WEAPON_FIRETYPE_3ROUNDBURST = 3,
 WEAPON_FIRETYPE_4ROUNDBURST = 4,
 WEAPON_FIRETYPE_5ROUNDBURST = 5,
 WEAPON_FIRETYPE_STACKEDFIRE = 6,
 WEAPON_FIRETYPE_MINIGUN = 7,
 WEAPON_FIRETYPE_CHARGESHOT = 8,
 WEAPON_FIRETYPE_JETGUN = 9,
 WEAPON_FIRETYPE_MAX

};

enum ClipTypes : int {

 bottom = 0,
 top = 1,
 left = 2,
 dp28 = 3,
 ptrs = 4,
 lmg = 5,
 CLIPTYPE_MAX

};

enum BarrelType : int {

 SINGLE = 0,
 DUAL = 1,
 DUAL_ALT = 2,
 QUAD = 3,
 QUAD_ALT = 4,
 QUAD_DOUBLE_ALT = 5,
 BARRELTYPE_MAX

};

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,
 riotshield,
 opaqueglass

};

enum StickType : int {

 DONT = 0,
 ALL = 1,
 ALL_EXCEPT_PLAYER = 2,
 GROUND = 3,
 GROUND_MAINTAIN_YAW = 4,
 FLESH = 5,
 STICK_MAX

};

enum RotType : int {

 BOTH_AXIS = 0,
 ONE_AXIS = 1,
 CYLINDER = 2,
 ROTATION_MAX

};

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_WIRE = 0x5,
 MISSILE_GUIDANCE_TV = 0x6,
 MISSILE_GUIDANCE_DRONE = 0x7,
 MISSILE_GUIDANCE_HEAT = 0x8,
 MISSILE_GUIDANCE_MAX

};

enum bodyParts_t {

 none,
 helmet,
 head,
 neck,
 torso_upper,
 torso_mid, 
 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,
 riotshield

};

struct ProjectileExplosionEffect {

 FxEffectDef * projExplosionEffect;
 bool projExplosionEffectForceNormalUp;

};

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 streamChunkDurationScaleMaxVel;
 float streamChunkDurationVelScalar;
 float streamChunkSizeSpeedScale;
 float streamChunkSizeAgeScale;
 float streamChunkSpawnFireIntervalSt;
 float streamChunkSpawnFireIntervalEn;
 float streamChunkSpawnFireMinLifeFra;
 float streamChunkSpawnFireMaxLifeFra;
 float streamChunkFireMinLifeFrac;
 float streamChunkFireMinLifeFracStar;
 float streamChunkFireMinLifeFracEnd;
 float streamChunkDripsMinLifeFrac;
 float streamChunkDripsMinLifeFracSta;
 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 streamPrimaryLightRadiusFlutte;
 float streamPrimaryLightR;
 float streamPrimaryLightG;
 float streamPrimaryLightB;
 float streamPrimaryLightFlutterR;
 float streamPrimaryLightFlutterG;
 float streamPrimaryLightFlutterB;
 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 fireBrightness;
 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 dripsBrightness;
 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;
 const char * flameOffLoopSound;
 const char * flameIgniteSound;
 const char * flameOnLoopSound;
 const char * flameCooldownSound;

};

struct WeaponDef {

 const char * AIOverlayDescription;
 XModel * * gunModel;
 XModel * handModel;
 const char * modeName;
 ScriptString (*noteTrackSoundMapKeys[0x14]);
 ScriptString (*notetrackSoundMapValues[0x14]);
 AnimationType playerAnimType;
 weapType_t weaponType;
 weapClass_t weaponClass;
 PenetrateType penetrateType;
 ImpactType impactType;
 weapInventoryType_t inventoryType;
 weapFireType_t fireType;							
 ClipTypes clipType;
 BarrelType barrelType;
      int unknown1;
 const char * parentWeaponName;
 int jamFireTime;
 int overheatWeapon;
 float overheatRate;
 float cooldownRate;
 float overheatEndVal;
 bool coolWhileFiring;
 bool fuelTankWeapon;
 int tankLifeTime;
 OffhandClass offhandClass;
 int offhandSlot;
 weapStance_t stance;
 FxEffectDef * viewFlashEffect;
 FxEffectDef * worldFlashEffect;
 FxEffectDef * barrelCooldownEffect;
 int barrelCooldownMinCount;
 float viewFlashOffset[3];
 float worldFlashOffset[3];
 char * pickupSound;
 char * pickupSoundPlayer;
 char * ammoPickupSound;
 char * ammoPickupSoundPlayer;
 char * projectileSound;
 char * pullbackSound;
 char * pullbackSoundPlayer;
 char * fireSound;
 char * fireSoundPlayer;
 char * loopFireSound;
 char * loopFireSoundPlayer;
 char * loopFireEndSound;
 char * loopFireEndSoundPlayer;
 char * startFireSound;
 char * stopFireSound;
 char * killcamStartFireSound;
 char * startFireSoundPlayer;
 char * stopFireSoundPlayer;
 char * killcamStartFireSoundPlayer;
 char * lastShotSound;
 char * lastShotSoundPlayer;
 char * emptyFireSound;
 char * emptyFireSoundPlayer;
 char * crackSound;
 char * whizbySound;
 char * meleeSwipeSound;
 char * meleeSwipeSoundPlayer;
 char * meleeHitSound;
 char * meleeMissSound;
 char * rechamberSound;
 char * rechamberSoundPlayer;
 char * reloadSound;
 char * reloadSoundPlayer;
 char * reloadEmptySound;
 char * reloadEmptySoundPlayer;
 char * reloadStartSound;
 char * reloadStartSoundPlayer;
 char * reloadEndSound;
 char * reloadEndSoundPlayer;
 char * rotateLoopSound;
 char * rotateLoopSoundPlayer;
 char * rotateStopSound;
 char * rotateStopSoundPlayer;
 char * deploySound;
 char * deploySoundPlayer;
 char * finishDeploySound;
 char * finishDeploySoundPlayer;
 char * breakdownSound;
 char * breakdownSoundPlayer;
 char * finishBreakdownSound;
 char * finishBreakdownSoundPlayer;
 char * detonateSound;
 char * detonateSoundPlayer;
 char * nightVisionWearSound;
 char * nightVisionWearSoundPlayer;
 char * nightVisionRemoveSound;
 char * nightVisionRemoveSoundPlayer;
 char * altSwitchSound;
 char * altSwitchSoundPlayer;
 char * raiseSound;
 char * raiseSoundPlayer;
 char * firstRaiseSound;
 char * firstRaiseSoundPlayer;
 char * adsRaiseSoundPlayer;
 char * adsLowerSoundPlayer;
 char * putawaySound;
 char * putawaySoundPlayer;
 char * overheatSound;
 char * overheatSoundPlayer;
 char * adsZoomSound;
 char * shellCasing;
 char * shellCasingPlayer;
 char * * bounceSounds;    //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 vLowReadyOfs[3];
 float vLowReadyRot[3];
 float vRideOfs[3];
 float vRideRot[3];
 float vDTPOfs[3];
 float vDTPRot[3];
 float vDTPBob[2];
 float DTPScale;
 float vMantleOfs[3];
 float vMantleRot[3];
 float vSlideOfs[3];
 float vSlideRot[3];
 float vDuckedRot[3];
 float vProneOfs[3];
 float vProneMove[3];
 float vProneRot[3];
 float vStrafeMove[3];
 float vStrafeRot[3];
 float fPosMoveRate;
 float fPosProneMoveRate;
 float fStandMoveMinSpeed;
 float fDuckedMoveMinSpeed;
 float fProneMoveMinSpeed;
 float fPosRotRate;
 float fPosProneRotRate;
 float fStandRotMinSpeed;
 float fDuckedRotMinSpeed;
 float fProneRotMinSpeed;
 XModel * *worldModel;
 XModel *worldClipModel;
 XModel *rocketModel;
 XModel *mountedModel;
 XModel *additionalMeleeModel;
 Material * fireTypeIcon;
 Material * hudIcon;
 weaponIconRatioType_t hudIconRatio;
 Material * indicatorIcon;
 weaponIconRatioType_t indicatorIconRatio;
 Material * ammoCounterIcon;
 weaponIconRatioType_t ammoCounterIconRatio;
 ammoCounterClipType_t ammoCounterClip;
 int iStartAmmo;
 int iMaxAmmo;
 int shotCount;
 const char *szSharedAmmoCapName;
 int iSharedAmmoCapIndex;
 int iSharedAmmoCap;
 bool unlimitedAmmo;
 bool ammoCountClipRelative;
 int damage[6];
 float damageRange[6];
 int minPlayerDamage;
 float damageDuration;
 float damageInterval;
 int playerDamage;
 int iMeleeDamage;
 int iDamageType;
 ScriptString explosionTag;
 int iFireDelay;
 int iMeleeDelay;
 int meleeChargeDelay;
 int iDetonateDelay;
 int iSpinUpTime;
 int iSpinDownTime;
 float spinRate;
 char * spinLoopSound;
 char * spinLoopSoundPlayer;
 char * startSpinSound;
 char * startSpinSoundPlayer;
 char * stopSpinSound;
 char * stopSpinSoundPlayer;
 bool applySpinPitch;
 int fireTime;
 int iFireTime;
 int iLastFireTime;
 int iRechamberTime;
 int iRechamberBoltTime;
 int iHoldFireTime;
 int iDetonateTime;
 int iMeleeTime;
 int iBurstFireDelay;
 int meleeChargeTime;
      char unknown2[0x8];
 int reloadShowRocketTime;
 int iReloadEmtpyTime;
 int iReloadAddTime;
 int iReloadEmptyAddTime;
 int iReloadQuickAddTime;
 int iReloadQuickEmptyAddTime;
 int iReloadStartTime;
 int iReloadStartAddTime;
 int iReloadEndTime;
 int iDropTime;
 int iRaiseTime;
 int iAltDropTime;
 int iQuickDropTime;
 int iQuickRaiseTime;
 int iFirstRaiseTime;
 int iEmptyRaiseTime;
 int iEmptyDropTime;
 int sprintInTime;
 int sprintLoopTime;
 int sprintOutTime;
 int lowReadyInTime;
 int lowReadyLoopTime;
 int lowReadyOutTime;
 int contFireInTime;
 int contFireLoopTime;
 int contFireOutTime;
 int DTPInTime;
 int DTPLoopTime;
 int DTPOutTime;
 int crawlInTime;
 int crawlForwardTime;
 int crawlBackTime;
 int crawlRightTime;
 int crawlLeftTime;
 int crawlOutFireTime;
 int crawlOutTime;
 int slideInTime;
 int deployTime;
 int breakdownTime;
 int fireTime2;        //For some reason, BO2 has 2 instances of these. I have never seen them not equal.
 int nightVisionWearTime;
 int nightVisionWearTimeFadeOutEnd;
 int nightVisionWearTimePowerUp;
 int nightVisionRemoveTime;
 int nightVisionRemoveTimePowerDown;
 int nightVisionRemoveTimeFadeInStart;
 int fuseTime;
 int aifuseTime;
 int lockOnRadius;
 int lockOnSpeed;
 bool requireLockonToFire;
 bool noAdsWhenMagEmpty;
 bool avoidDropCleanup;
 int stackFire;
 float stackFireSpread;
 float stackFireAccuracyDecay;
 char * stackSound;
 float autoAimRange;
 float aimAssistRange;
 bool mountableWeapon;
 float aimPadding;
 float enemyCrosshairRange;
 bool crosshairColorChange;
 float moveSpeedScale;
 float adsMoveSpeedScale;
 float sprintDurationScale;
 weapOverlayReticle_t adsOverlayReticle;
 weapOverlayInterface_t adsOverlayInterface;
 float adsOverlayWidth;
 float adsOverlayHeight;
 float fAdsBobFactor;
 float fAdsViewBobMult;
 bool holdBreathToSteady;
 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;
 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;
 bool sharedAmmo;
 bool rifleBullet;
 bool armorPiercing;
 bool airburstWeapon;
 bool boltAction;
 bool useAltTagFlash;
 bool useAntiLagRewind;
 bool isCarriedKillstreakWeapon;
 bool aimDownSight;
 bool rechamberWhileAds;
 bool reloadWhileAds;
 float adsViewErrorMin;
 float adsViewErrorMax;
 bool cookOffHold;
 bool clipOnly;
 bool canUseInVehicle;
 bool noDropsOrRaises;
 bool adsFire;
 bool cancelAutoHolsterWhenEmpty;
 bool suppressAmmoReserveDisplay;
 bool laserSight;
 bool laserSightDuringNightvision;
 bool hideThirdPerson;
 bool bayonet;
 bool dualWield;
 bool explodeOnGround;
 bool throwBack;
 bool retrievable;
 bool dieOnRespawn;
 bool noThirdPersonDropsOrRaises;
 bool continuousFire;
 bool noPing;
 bool forceBounce;
 bool useDroppedModelAsStowed;
 bool noQuickDropWhenEmpty;
 bool keepCrosshairWhenAds;
 bool useOnlyAltWeaponHideTagsInAltMode;
 bool altWeaponAdsOnly;
 bool altWeaponDisableSwitching;
 Material *killIcon;
 weaponIconRatioType_t killIconRatio;
 bool flipKillIcon;
 bool noPartialReload;
 bool segmentedReload;
 bool noADSAutoReload;
 int iReloadAmmoAdd;
 int iReloadStartAdd;
 const char * grenadeWeapon;
 const char * dualWieldWeapon;
 unsigned int dualWieldWeaponIndex;
 int iDropAmmoMin;
 int iDropAmmoMax;
 int iDropClipAmmoMin;
 int iDropClipAmmoMax;
 int iShotsBeforeRechamber;
 bool blocksProne;
 bool showIndicator;
 int isRollingGrenade; 
 int useBallisticPrediction;
 int isValuable;
 int isTacticalInsertion;
 bool isReviveWeapon;
 bool bUseRigidBodyOnVehicle;
 int iExplosionRadius;
 int iExplosionRadiusMin;
 int iIndicatorRadius;
 int iExplosionInnerDamage;
 int iExplosionOuterDamage;
 float damageConeAngle;
 int iProjectileSpeed;
 int iProjectileSpeedUp;
 int iProjectileSpeedRelativeUp;
 int iProjectileSpeedForward;
 float projectileTakeParentVel;
 int iProjectileActivateDist;
 float projLifetime;
 float timeToAccelerate;
 float projectileCurvature;
 XModel *projectileModel;
 weapProjExposion_t projExplosion;
 ProjectileExplosionEffect projExplosionEffect[5];
 FxEffectDef * projDudEffect;
 char * projExplosionSound;
 char * projDudSound;
 char * mortarShellSound;
 char * tankShellSound;
 bool projImpactExplode;
 bool sentientImpactExplode;
 bool explodeWhenStationary;
 bool bulletImpactExplode;
 StickType stickiness;
 RotType rotateType;
 bool plantable;
 bool hasDetonator;
 bool timedDetonation;
 bool noCrumpleMissile;
 bool rotate;
 bool keepRolling; 
 bool holdButtonToThrow;
 bool offhandHoldIsCancelable;
 bool freezeMovementWhenFiring;
 float lowAmmoWarningThreshold;
 bool bDisallowAtMatchStart;
 float meleeChargeRange;
 bool useAsMelee;
 bool isCameraSensor;
 bool isAcousticSensor;
 bool isLaserSensor;
 bool isHoldeUseGrenade;

char unknown3[0xB];

 FxEffectDef * projTrailEffect;
 float vPorjectileColor[3];
 guidedMissileType_t guidedMissileType;
 float maxSteeringAccel;
 int projIgnitionDelay;
 FxEffectDef *projIgnitionEffect;
 snd_alias_list_name 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 fAdsViewKickMinMagnitude;
 float fAdsViewKickYawMin;
 float fAdsViewKickYawMax;
 float fAdsRecoilReductionRate;
 float fAdsRecoilReductionLimit;
 float fAdsRecoilReturnRate;
 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 fHipViewKickMinMagnitude;
 float fHipViewKickYawMin;
 float fHipViewKickYawMax;
 float fHipViewScatterMin;
 float fHipViewScatterMax;
 float fAdsViewKickCenterDuckedScale;
 float fAdsViewKickCenterProneScale;
 float fAntiQuickScopeTime;
 float fAntiQuickScopeScale;
 float fAntiQuickScopeSpreadMultiplier;
 float fAntiQuickScopeSpreadMax;
 float fAntiQuickScopeSwayFactor;
 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;
 float cameraShakeScale;
 int cameraShakeDuration;
 int cameraShakeRadius;
 float explosionCameraShakeScale;
 int explosionCameraShakeDuration;
 int explosionCameraSHakeRadius;
 const char *szScript;
 float destabilizationRateTime;
 float destabilizationCurvatureMax;
 int destabilizeDistance;
 float * locationDamageMultipliers;      //Refer to bodyParts_t
 const char *fireRumble;
 const char *meleeImpactRumble;
 const char *reloadRumble;
 const char *explosionRumble;
 Tracer * tracer;
 Tracer * enemyTracer;
 float adsDofStart;
 float adsDofEnd;
 float hipDofStart;
 float hipDofEnd;
 float scanSpeed;
 float scanAccel;
 int scanPauseTime;
 const char * flameTableFirstPerson;
 const char * flameTableThirdPerson;
 FlameTable * firstPersonFlameTable;
 FlameTable * thirdPersonFlameTable;
 FxEffectDef * tagFx_preparationEffect;
 FxEffectDef * tagFlash_preparationEffect;
 bool doGibbing;
 float maxGibDistance;
 float altScopeADSTransInTime;
 float altScopeADSTransOutTime;
 int introFireTime;
 int introFireLength;
 FxEffectDef * meleeSwipeEffect;						//FxEffectDef
 FxEffectDef * meleeImpactEffect;						//FxEffectDef
 FxEffectDef * meleeImpactNoBloodEffect;
 char * throwBackType;
 WeaponCamo * camo;
 float customFloat[3];
 __declspec(align(4)) bool customBool0;
 __declspec(align(4)) bool customBool1;
 __declspec(align(4)) bool customBool2;

};

struct WeaponVarientDef {

 char * name;
      int unknown1;
 WeaponDef * info;
 const char * szDisplayName;
 const char * altWeapon;
 const char * attachmentUnique;
 WeaponAttachment **attachments;      //Count = 0x3F
 WeaponUniqueAttachment **unqAttachments;      //Count = 0x5F
      char * * unknownStringArray1;				//Count = 0x58
 ScriptString (*hideTags[0x20]);
      XModel **unknownModelArray1;      //Count = 8
      XModel **unknownModelArray2;      //Count = 8
      char * * unknownStringArray2;				//Count = 8
      char * * unknownStringArray3;				//Count = 8
 float attachViewModelOffset[8][3];
 float attachWorldModelOffset[8][3];
 float attachViewModelRotation[8][3];
 float attachWorldModelRotation[8][3];
 float stowedModelOffsets[3];
 float stowedModelRotation[3];
      char unknown2[0x8];
 bool ignoreAttachments;
 int iClipSize;
 int iReloadTime;
 int iReloadEmptyTime;
 int iReloadQuickTime;
 int iReloadQuickEmptyTime;
 int iAdsTransInTime;
 int iAdsTransOutTime;
 int iAltRaiseTime;
 const char *szAmmoDisplayName;
 const char *szAmmoName;
 int iAmmoIndex;
 const char *szClipName;
 int iClipIndex;
 float aimAssistRangeAds;
 float adsSwayHorizScale;
 float adsSwayVertScale;
 float fAdsViewKickCenterSpeed;
 float fHipViewKickCenterSpeed;
 float fAdsZoomFov[3];
 float adsZoomInFrac;
 float adsZoomOutFrac;
 float adsOverlayAlphaScale;
      int unknown3;
      int unknown4;
 bool silenced;
 bool dualMag;
 bool infrared;
 bool tvguided;
 int perks[2];
 bool antiQuickScope;
 Material * AdsOverlayShader;
 Material * AdsOverlayShaderLowRes;
 Material * dpadIcon;
 weaponIconRatioType_t dpadIconRatio;
 bool noAmmoOnDpadIcon;
 bool mmsWeapon;
 bool mssInScope;
 float mmsFOV;
 float mmsAspect;
 float mmsMaxDist;
 float ikLeftHandIdlePos[3];
 float ikLeftHandOffset[3];
 float ikLeftHandRotation[3];
 bool usingLeftHandProneIK;
 float ikLeftHandProneOffset[3];
 float ikLeftHandProneRotation[3];
 float ikLeftHandUiViewerOffset[3];
 float ikLeftHandUiViewerRotation[3];

};

Source Format

The weapon source files are raw text files with no extension, located at "raw/weapons/sp/" for SP weapons and "raw/weapons/mp/" for MP weapons (Speculation is that zombie weapons go in "raw/weapons/zm/"). They use the same format as many other assets, with each setting name and value separated by a back-slash. The first setting identifies the file, and for weapons the identifier string is "WEAPONFILE".