Weapon Asset (BO2)

From COD Engine Research
Revision as of 18:44, 9 January 2014 by CraigChrist8239 (talk | contribs)

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;
 char * 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".