Weapon Asset (BO2): Difference between revisions
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 | |||
{ | |||
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; | |||
[[:Category:Utilities#snd_alias_list_name|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; | |||
[[:Vectors#vec2_t|vec2_t]] * aiVsAiAccuracyGraphKnots; | |||
[[:Vectors#vec2_t|vec2_t]] * aiVsPlayerAccuracyGraphKnots; | |||
[[:Vectors#vec2_t|vec2_t]] * aiVsAiOriginalAccuracyGraphKnots; | |||
[[:Vectors#vec2_t|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 == | == 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".