mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-07-27 02:10:38 +00:00
feat: IW3 weapon loading and dumping (#867)
* feat: IW3 weapon loading and dumping * chore: adjust weapon strings for iw3 * chore: use original capitalization for aifuseTime * chore: remove unused alternative iw3 csp fields * chore: add missing checks and style the code similar to t5 * chore: small code smells in t5 weapon loader * feat: add iw3 gdt loader * chore: adjust weapon loader file names to t5 style * feat: add gdt dumper for iw3 weapons --------- Co-authored-by: Jan Laupetin <[email protected]>
This commit is contained in:
@@ -0,0 +1,511 @@
|
||||
#pragma once
|
||||
#include "Game/IW3/IW3.h"
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
namespace IW3
|
||||
{
|
||||
inline cspField_t weapon_fields[]{
|
||||
{"displayName", offsetof(WeaponDef, szDisplayName), CSPFT_STRING },
|
||||
{"AIOverlayDescription", offsetof(WeaponDef, szOverlayName), CSPFT_STRING },
|
||||
{"modeName", offsetof(WeaponDef, szModeName), CSPFT_STRING },
|
||||
{"playerAnimType", offsetof(WeaponDef, playerAnimType), WFT_ANIMTYPE },
|
||||
{"gunModel", offsetof(WeaponDef, gunXModel[0]), CSPFT_XMODEL },
|
||||
{"gunModel2", offsetof(WeaponDef, gunXModel[1]), CSPFT_XMODEL },
|
||||
{"gunModel3", offsetof(WeaponDef, gunXModel[2]), CSPFT_XMODEL },
|
||||
{"gunModel4", offsetof(WeaponDef, gunXModel[3]), CSPFT_XMODEL },
|
||||
{"gunModel5", offsetof(WeaponDef, gunXModel[4]), CSPFT_XMODEL },
|
||||
{"gunModel6", offsetof(WeaponDef, gunXModel[5]), CSPFT_XMODEL },
|
||||
{"gunModel7", offsetof(WeaponDef, gunXModel[6]), CSPFT_XMODEL },
|
||||
{"gunModel8", offsetof(WeaponDef, gunXModel[7]), CSPFT_XMODEL },
|
||||
{"gunModel9", offsetof(WeaponDef, gunXModel[8]), CSPFT_XMODEL },
|
||||
{"gunModel10", offsetof(WeaponDef, gunXModel[9]), CSPFT_XMODEL },
|
||||
{"gunModel11", offsetof(WeaponDef, gunXModel[10]), CSPFT_XMODEL },
|
||||
{"gunModel12", offsetof(WeaponDef, gunXModel[11]), CSPFT_XMODEL },
|
||||
{"gunModel13", offsetof(WeaponDef, gunXModel[12]), CSPFT_XMODEL },
|
||||
{"gunModel14", offsetof(WeaponDef, gunXModel[13]), CSPFT_XMODEL },
|
||||
{"gunModel15", offsetof(WeaponDef, gunXModel[14]), CSPFT_XMODEL },
|
||||
{"gunModel16", offsetof(WeaponDef, gunXModel[15]), CSPFT_XMODEL },
|
||||
{"handModel", offsetof(WeaponDef, handXModel), CSPFT_XMODEL },
|
||||
{"hideTags", offsetof(WeaponDef, hideTags), WFT_HIDETAGS },
|
||||
{"notetrackSoundMap", offsetof(WeaponDef, notetrackSoundMapKeys), WFT_NOTETRACKSOUNDMAP },
|
||||
{"idleAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_IDLE]), WFT_ANIM_NAME },
|
||||
{"emptyIdleAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_EMPTY_IDLE]), WFT_ANIM_NAME },
|
||||
{"fireAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_FIRE]), WFT_ANIM_NAME },
|
||||
{"holdFireAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_HOLD_FIRE]), WFT_ANIM_NAME },
|
||||
{"lastShotAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_LASTSHOT]), WFT_ANIM_NAME },
|
||||
{"detonateAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_DETONATE]), WFT_ANIM_NAME },
|
||||
{"rechamberAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_RECHAMBER]), WFT_ANIM_NAME },
|
||||
{"meleeAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_MELEE]), WFT_ANIM_NAME },
|
||||
{"meleeChargeAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_MELEE_CHARGE]), WFT_ANIM_NAME },
|
||||
{"reloadAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_RELOAD]), WFT_ANIM_NAME },
|
||||
{"reloadEmptyAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_RELOAD_EMPTY]), WFT_ANIM_NAME },
|
||||
{"reloadStartAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_RELOAD_START]), WFT_ANIM_NAME },
|
||||
{"reloadEndAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_RELOAD_END]), WFT_ANIM_NAME },
|
||||
{"raiseAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_RAISE]), WFT_ANIM_NAME },
|
||||
{"dropAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_DROP]), WFT_ANIM_NAME },
|
||||
{"firstRaiseAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_FIRST_RAISE]), WFT_ANIM_NAME },
|
||||
{"altRaiseAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_ALT_RAISE]), WFT_ANIM_NAME },
|
||||
{"altDropAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_ALT_DROP]), WFT_ANIM_NAME },
|
||||
{"quickRaiseAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_QUICK_RAISE]), WFT_ANIM_NAME },
|
||||
{"quickDropAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_QUICK_DROP]), WFT_ANIM_NAME },
|
||||
{"emptyRaiseAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_EMPTY_RAISE]), WFT_ANIM_NAME },
|
||||
{"emptyDropAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_EMPTY_DROP]), WFT_ANIM_NAME },
|
||||
{"sprintInAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_SPRINT_IN]), WFT_ANIM_NAME },
|
||||
{"sprintLoopAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_SPRINT_LOOP]), WFT_ANIM_NAME },
|
||||
{"sprintOutAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_SPRINT_OUT]), WFT_ANIM_NAME },
|
||||
{"nightVisionWearAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_NIGHTVISION_WEAR]), WFT_ANIM_NAME },
|
||||
{"nightVisionRemoveAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_NIGHTVISION_REMOVE]), WFT_ANIM_NAME },
|
||||
{"adsFireAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_ADS_FIRE]), WFT_ANIM_NAME },
|
||||
{"adsLastShotAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_ADS_LASTSHOT]), WFT_ANIM_NAME },
|
||||
{"adsRechamberAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_ADS_RECHAMBER]), WFT_ANIM_NAME },
|
||||
{"adsUpAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_ADS_UP]), WFT_ANIM_NAME },
|
||||
{"adsDownAnim", offsetof(WeaponDef, szXAnims[WEAP_ANIM_ADS_DOWN]), WFT_ANIM_NAME },
|
||||
{"script", offsetof(WeaponDef, szScript), CSPFT_STRING },
|
||||
{"weaponType", offsetof(WeaponDef, weapType), WFT_WEAPONTYPE },
|
||||
{"weaponClass", offsetof(WeaponDef, weapClass), WFT_WEAPONCLASS },
|
||||
{"penetrateType", offsetof(WeaponDef, penetrateType), WFT_PENETRATE_TYPE },
|
||||
{"impactType", offsetof(WeaponDef, impactType), WFT_IMPACT_TYPE },
|
||||
{"inventoryType", offsetof(WeaponDef, inventoryType), WFT_INVENTORYTYPE },
|
||||
{"fireType", offsetof(WeaponDef, fireType), WFT_FIRETYPE },
|
||||
{"offhandClass", offsetof(WeaponDef, offhandClass), WFT_OFFHAND_CLASS },
|
||||
{"viewFlashEffect", offsetof(WeaponDef, viewFlashEffect), CSPFT_FX },
|
||||
{"worldFlashEffect", offsetof(WeaponDef, worldFlashEffect), CSPFT_FX },
|
||||
{"pickupSound", offsetof(WeaponDef, pickupSound), CSPFT_SOUND },
|
||||
{"pickupSoundPlayer", offsetof(WeaponDef, pickupSoundPlayer), CSPFT_SOUND },
|
||||
{"ammoPickupSound", offsetof(WeaponDef, ammoPickupSound), CSPFT_SOUND },
|
||||
{"ammoPickupSoundPlayer", offsetof(WeaponDef, ammoPickupSoundPlayer), CSPFT_SOUND },
|
||||
{"projectileSound", offsetof(WeaponDef, projectileSound), CSPFT_SOUND },
|
||||
{"pullbackSound", offsetof(WeaponDef, pullbackSound), CSPFT_SOUND },
|
||||
{"pullbackSoundPlayer", offsetof(WeaponDef, pullbackSoundPlayer), CSPFT_SOUND },
|
||||
{"fireSound", offsetof(WeaponDef, fireSound), CSPFT_SOUND },
|
||||
{"fireSoundPlayer", offsetof(WeaponDef, fireSoundPlayer), CSPFT_SOUND },
|
||||
{"loopFireSound", offsetof(WeaponDef, fireLoopSound), CSPFT_SOUND },
|
||||
{"loopFireSoundPlayer", offsetof(WeaponDef, fireLoopSoundPlayer), CSPFT_SOUND },
|
||||
{"stopFireSound", offsetof(WeaponDef, fireStopSound), CSPFT_SOUND },
|
||||
{"stopFireSoundPlayer", offsetof(WeaponDef, fireStopSoundPlayer), CSPFT_SOUND },
|
||||
{"lastShotSound", offsetof(WeaponDef, fireLastSound), CSPFT_SOUND },
|
||||
{"lastShotSoundPlayer", offsetof(WeaponDef, fireLastSoundPlayer), CSPFT_SOUND },
|
||||
{"emptyFireSound", offsetof(WeaponDef, emptyFireSound), CSPFT_SOUND },
|
||||
{"emptyFireSoundPlayer", offsetof(WeaponDef, emptyFireSoundPlayer), CSPFT_SOUND },
|
||||
{"meleeSwipeSound", offsetof(WeaponDef, meleeSwipeSound), CSPFT_SOUND },
|
||||
{"meleeSwipeSoundPlayer", offsetof(WeaponDef, meleeSwipeSoundPlayer), CSPFT_SOUND },
|
||||
{"meleeHitSound", offsetof(WeaponDef, meleeHitSound), CSPFT_SOUND },
|
||||
{"meleeMissSound", offsetof(WeaponDef, meleeMissSound), CSPFT_SOUND },
|
||||
{"rechamberSound", offsetof(WeaponDef, rechamberSound), CSPFT_SOUND },
|
||||
{"rechamberSoundPlayer", offsetof(WeaponDef, rechamberSoundPlayer), CSPFT_SOUND },
|
||||
{"reloadSound", offsetof(WeaponDef, reloadSound), CSPFT_SOUND },
|
||||
{"reloadSoundPlayer", offsetof(WeaponDef, reloadSoundPlayer), CSPFT_SOUND },
|
||||
{"reloadEmptySound", offsetof(WeaponDef, reloadEmptySound), CSPFT_SOUND },
|
||||
{"reloadEmptySoundPlayer", offsetof(WeaponDef, reloadEmptySoundPlayer), CSPFT_SOUND },
|
||||
{"reloadStartSound", offsetof(WeaponDef, reloadStartSound), CSPFT_SOUND },
|
||||
{"reloadStartSoundPlayer", offsetof(WeaponDef, reloadStartSoundPlayer), CSPFT_SOUND },
|
||||
{"reloadEndSound", offsetof(WeaponDef, reloadEndSound), CSPFT_SOUND },
|
||||
{"reloadEndSoundPlayer", offsetof(WeaponDef, reloadEndSoundPlayer), CSPFT_SOUND },
|
||||
{"detonateSound", offsetof(WeaponDef, detonateSound), CSPFT_SOUND },
|
||||
{"detonateSoundPlayer", offsetof(WeaponDef, detonateSoundPlayer), CSPFT_SOUND },
|
||||
{"nightVisionWearSound", offsetof(WeaponDef, nightVisionWearSound), CSPFT_SOUND },
|
||||
{"nightVisionWearSoundPlayer", offsetof(WeaponDef, nightVisionWearSoundPlayer), CSPFT_SOUND },
|
||||
{"nightVisionRemoveSound", offsetof(WeaponDef, nightVisionRemoveSound), CSPFT_SOUND },
|
||||
{"nightVisionRemoveSoundPlayer", offsetof(WeaponDef, nightVisionRemoveSoundPlayer), CSPFT_SOUND },
|
||||
{"raiseSound", offsetof(WeaponDef, raiseSound), CSPFT_SOUND },
|
||||
{"raiseSoundPlayer", offsetof(WeaponDef, raiseSoundPlayer), CSPFT_SOUND },
|
||||
{"firstRaiseSound", offsetof(WeaponDef, firstRaiseSound), CSPFT_SOUND },
|
||||
{"firstRaiseSoundPlayer", offsetof(WeaponDef, firstRaiseSoundPlayer), CSPFT_SOUND },
|
||||
{"altSwitchSound", offsetof(WeaponDef, altSwitchSound), CSPFT_SOUND },
|
||||
{"altSwitchSoundPlayer", offsetof(WeaponDef, altSwitchSoundPlayer), CSPFT_SOUND },
|
||||
{"putawaySound", offsetof(WeaponDef, putawaySound), CSPFT_SOUND },
|
||||
{"putawaySoundPlayer", offsetof(WeaponDef, putawaySoundPlayer), CSPFT_SOUND },
|
||||
{"bounceSound", offsetof(WeaponDef, bounceSound), WFT_BOUNCE_SOUND },
|
||||
{"viewShellEjectEffect", offsetof(WeaponDef, viewShellEjectEffect), CSPFT_FX },
|
||||
{"worldShellEjectEffect", offsetof(WeaponDef, worldShellEjectEffect), CSPFT_FX },
|
||||
{"viewLastShotEjectEffect", offsetof(WeaponDef, viewLastShotEjectEffect), CSPFT_FX },
|
||||
{"worldLastShotEjectEffect", offsetof(WeaponDef, worldLastShotEjectEffect), CSPFT_FX },
|
||||
{"reticleCenter", offsetof(WeaponDef, reticleCenter), CSPFT_MATERIAL },
|
||||
{"reticleSide", offsetof(WeaponDef, reticleSide), CSPFT_MATERIAL },
|
||||
{"reticleCenterSize", offsetof(WeaponDef, iReticleCenterSize), CSPFT_INT },
|
||||
{"reticleSideSize", offsetof(WeaponDef, iReticleSideSize), CSPFT_INT },
|
||||
{"reticleMinOfs", offsetof(WeaponDef, iReticleMinOfs), CSPFT_INT },
|
||||
{"activeReticleType", offsetof(WeaponDef, activeReticleType), WFT_ACTIVE_RETICLE_TYPE },
|
||||
{"standMoveF", offsetof(WeaponDef, vStandMove[0]), CSPFT_FLOAT },
|
||||
{"standMoveR", offsetof(WeaponDef, vStandMove[1]), CSPFT_FLOAT },
|
||||
{"standMoveU", offsetof(WeaponDef, vStandMove[2]), CSPFT_FLOAT },
|
||||
{"standRotP", offsetof(WeaponDef, vStandRot[0]), CSPFT_FLOAT },
|
||||
{"standRotY", offsetof(WeaponDef, vStandRot[1]), CSPFT_FLOAT },
|
||||
{"standRotR", offsetof(WeaponDef, vStandRot[2]), CSPFT_FLOAT },
|
||||
{"duckedOfsF", offsetof(WeaponDef, vDuckedOfs[0]), CSPFT_FLOAT },
|
||||
{"duckedOfsR", offsetof(WeaponDef, vDuckedOfs[1]), CSPFT_FLOAT },
|
||||
{"duckedOfsU", offsetof(WeaponDef, vDuckedOfs[2]), CSPFT_FLOAT },
|
||||
{"duckedMoveF", offsetof(WeaponDef, vDuckedMove[0]), CSPFT_FLOAT },
|
||||
{"duckedMoveR", offsetof(WeaponDef, vDuckedMove[1]), CSPFT_FLOAT },
|
||||
{"duckedMoveU", offsetof(WeaponDef, vDuckedMove[2]), CSPFT_FLOAT },
|
||||
{"duckedRotP", offsetof(WeaponDef, vDuckedRot[0]), CSPFT_FLOAT },
|
||||
{"duckedRotY", offsetof(WeaponDef, vDuckedRot[1]), CSPFT_FLOAT },
|
||||
{"duckedRotR", offsetof(WeaponDef, vDuckedRot[2]), CSPFT_FLOAT },
|
||||
{"proneOfsF", offsetof(WeaponDef, vProneOfs[0]), CSPFT_FLOAT },
|
||||
{"proneOfsR", offsetof(WeaponDef, vProneOfs[1]), CSPFT_FLOAT },
|
||||
{"proneOfsU", offsetof(WeaponDef, vProneOfs[2]), CSPFT_FLOAT },
|
||||
{"proneMoveF", offsetof(WeaponDef, vProneMove[0]), CSPFT_FLOAT },
|
||||
{"proneMoveR", offsetof(WeaponDef, vProneMove[1]), CSPFT_FLOAT },
|
||||
{"proneMoveU", offsetof(WeaponDef, vProneMove[2]), CSPFT_FLOAT },
|
||||
{"proneRotP", offsetof(WeaponDef, vProneRot[0]), CSPFT_FLOAT },
|
||||
{"proneRotY", offsetof(WeaponDef, vProneRot[1]), CSPFT_FLOAT },
|
||||
{"proneRotR", offsetof(WeaponDef, vProneRot[2]), CSPFT_FLOAT },
|
||||
{"posMoveRate", offsetof(WeaponDef, fPosMoveRate), CSPFT_FLOAT },
|
||||
{"posProneMoveRate", offsetof(WeaponDef, fPosProneMoveRate), CSPFT_FLOAT },
|
||||
{"standMoveMinSpeed", offsetof(WeaponDef, fStandMoveMinSpeed), CSPFT_FLOAT },
|
||||
{"duckedMoveMinSpeed", offsetof(WeaponDef, fDuckedMoveMinSpeed), CSPFT_FLOAT },
|
||||
{"proneMoveMinSpeed", offsetof(WeaponDef, fProneMoveMinSpeed), CSPFT_FLOAT },
|
||||
{"posRotRate", offsetof(WeaponDef, fPosRotRate), CSPFT_FLOAT },
|
||||
{"posProneRotRate", offsetof(WeaponDef, fPosProneRotRate), CSPFT_FLOAT },
|
||||
{"standRotMinSpeed", offsetof(WeaponDef, fStandRotMinSpeed), CSPFT_FLOAT },
|
||||
{"duckedRotMinSpeed", offsetof(WeaponDef, fDuckedRotMinSpeed), CSPFT_FLOAT },
|
||||
{"proneRotMinSpeed", offsetof(WeaponDef, fProneRotMinSpeed), CSPFT_FLOAT },
|
||||
{"worldModel", offsetof(WeaponDef, worldModel[0]), CSPFT_XMODEL },
|
||||
{"worldModel2", offsetof(WeaponDef, worldModel[1]), CSPFT_XMODEL },
|
||||
{"worldModel3", offsetof(WeaponDef, worldModel[2]), CSPFT_XMODEL },
|
||||
{"worldModel4", offsetof(WeaponDef, worldModel[3]), CSPFT_XMODEL },
|
||||
{"worldModel5", offsetof(WeaponDef, worldModel[4]), CSPFT_XMODEL },
|
||||
{"worldModel6", offsetof(WeaponDef, worldModel[5]), CSPFT_XMODEL },
|
||||
{"worldModel7", offsetof(WeaponDef, worldModel[6]), CSPFT_XMODEL },
|
||||
{"worldModel8", offsetof(WeaponDef, worldModel[7]), CSPFT_XMODEL },
|
||||
{"worldModel9", offsetof(WeaponDef, worldModel[8]), CSPFT_XMODEL },
|
||||
{"worldModel10", offsetof(WeaponDef, worldModel[9]), CSPFT_XMODEL },
|
||||
{"worldModel11", offsetof(WeaponDef, worldModel[10]), CSPFT_XMODEL },
|
||||
{"worldModel12", offsetof(WeaponDef, worldModel[11]), CSPFT_XMODEL },
|
||||
{"worldModel13", offsetof(WeaponDef, worldModel[12]), CSPFT_XMODEL },
|
||||
{"worldModel14", offsetof(WeaponDef, worldModel[13]), CSPFT_XMODEL },
|
||||
{"worldModel15", offsetof(WeaponDef, worldModel[14]), CSPFT_XMODEL },
|
||||
{"worldModel16", offsetof(WeaponDef, worldModel[15]), CSPFT_XMODEL },
|
||||
{"worldClipModel", offsetof(WeaponDef, worldClipModel), CSPFT_XMODEL },
|
||||
{"rocketModel", offsetof(WeaponDef, rocketModel), CSPFT_XMODEL },
|
||||
{"knifeModel", offsetof(WeaponDef, knifeModel), CSPFT_XMODEL },
|
||||
{"worldKnifeModel", offsetof(WeaponDef, worldKnifeModel), CSPFT_XMODEL },
|
||||
{"hudIcon", offsetof(WeaponDef, hudIcon), CSPFT_MATERIAL },
|
||||
{"hudIconRatio", offsetof(WeaponDef, hudIconRatio), WFT_ICONRATIO_HUD },
|
||||
{"ammoCounterIcon", offsetof(WeaponDef, ammoCounterIcon), CSPFT_MATERIAL },
|
||||
{"ammoCounterIconRatio", offsetof(WeaponDef, ammoCounterIconRatio), WFT_ICONRATIO_AMMOCOUNTER},
|
||||
{"ammoCounterClip", offsetof(WeaponDef, ammoCounterClip), WFT_AMMOCOUNTER_CLIPTYPE },
|
||||
{"startAmmo", offsetof(WeaponDef, iStartAmmo), CSPFT_INT },
|
||||
{"ammoName", offsetof(WeaponDef, szAmmoName), CSPFT_STRING },
|
||||
{"clipName", offsetof(WeaponDef, szClipName), CSPFT_STRING },
|
||||
{"maxAmmo", offsetof(WeaponDef, iMaxAmmo), CSPFT_INT },
|
||||
{"clipSize", offsetof(WeaponDef, iClipSize), CSPFT_INT },
|
||||
{"shotCount", offsetof(WeaponDef, shotCount), CSPFT_INT },
|
||||
{"sharedAmmoCapName", offsetof(WeaponDef, szSharedAmmoCapName), CSPFT_STRING },
|
||||
{"sharedAmmoCap", offsetof(WeaponDef, iSharedAmmoCap), CSPFT_INT },
|
||||
{"damage", offsetof(WeaponDef, damage), CSPFT_INT },
|
||||
{"playerDamage", offsetof(WeaponDef, playerDamage), CSPFT_INT },
|
||||
{"meleeDamage", offsetof(WeaponDef, iMeleeDamage), CSPFT_INT },
|
||||
{"minDamage", offsetof(WeaponDef, minDamage), CSPFT_INT },
|
||||
{"minPlayerDamage", offsetof(WeaponDef, minPlayerDamage), CSPFT_INT },
|
||||
{"maxDamageRange", offsetof(WeaponDef, fMaxDamageRange), CSPFT_FLOAT },
|
||||
{"minDamageRange", offsetof(WeaponDef, fMinDamageRange), CSPFT_FLOAT },
|
||||
{"destabilizationRateTime", offsetof(WeaponDef, destabilizationRateTime), CSPFT_FLOAT },
|
||||
{"destabilizationCurvatureMax", offsetof(WeaponDef, destabilizationCurvatureMax), CSPFT_FLOAT },
|
||||
{"destabilizeDistance", offsetof(WeaponDef, destabilizeDistance), CSPFT_INT },
|
||||
{"fireDelay", offsetof(WeaponDef, iFireDelay), CSPFT_MILLISECONDS },
|
||||
{"meleeDelay", offsetof(WeaponDef, iMeleeDelay), CSPFT_MILLISECONDS },
|
||||
{"meleeChargeDelay", offsetof(WeaponDef, meleeChargeDelay), CSPFT_MILLISECONDS },
|
||||
{"fireTime", offsetof(WeaponDef, iFireTime), CSPFT_MILLISECONDS },
|
||||
{"rechamberTime", offsetof(WeaponDef, iRechamberTime), CSPFT_MILLISECONDS },
|
||||
{"rechamberBoltTime", offsetof(WeaponDef, iRechamberBoltTime), CSPFT_MILLISECONDS },
|
||||
{"holdFireTime", offsetof(WeaponDef, iHoldFireTime), CSPFT_MILLISECONDS },
|
||||
{"detonateTime", offsetof(WeaponDef, iDetonateTime), CSPFT_MILLISECONDS },
|
||||
{"detonateDelay", offsetof(WeaponDef, iDetonateDelay), CSPFT_MILLISECONDS },
|
||||
{"meleeTime", offsetof(WeaponDef, iMeleeTime), CSPFT_MILLISECONDS },
|
||||
{"meleeChargeTime", offsetof(WeaponDef, meleeChargeTime), CSPFT_MILLISECONDS },
|
||||
{"reloadTime", offsetof(WeaponDef, iReloadTime), CSPFT_MILLISECONDS },
|
||||
{"reloadShowRocketTime", offsetof(WeaponDef, reloadShowRocketTime), CSPFT_MILLISECONDS },
|
||||
{"reloadEmptyTime", offsetof(WeaponDef, iReloadEmptyTime), CSPFT_MILLISECONDS },
|
||||
{"reloadAddTime", offsetof(WeaponDef, iReloadAddTime), CSPFT_MILLISECONDS },
|
||||
{"reloadStartTime", offsetof(WeaponDef, iReloadStartTime), CSPFT_MILLISECONDS },
|
||||
{"reloadStartAddTime", offsetof(WeaponDef, iReloadStartAddTime), CSPFT_MILLISECONDS },
|
||||
{"reloadEndTime", offsetof(WeaponDef, iReloadEndTime), CSPFT_MILLISECONDS },
|
||||
{"dropTime", offsetof(WeaponDef, iDropTime), CSPFT_MILLISECONDS },
|
||||
{"raiseTime", offsetof(WeaponDef, iRaiseTime), CSPFT_MILLISECONDS },
|
||||
{"altDropTime", offsetof(WeaponDef, iAltDropTime), CSPFT_MILLISECONDS },
|
||||
{"altRaiseTime", offsetof(WeaponDef, iAltRaiseTime), CSPFT_MILLISECONDS },
|
||||
{"quickDropTime", offsetof(WeaponDef, quickDropTime), CSPFT_MILLISECONDS },
|
||||
{"quickRaiseTime", offsetof(WeaponDef, quickRaiseTime), CSPFT_MILLISECONDS },
|
||||
{"firstRaiseTime", offsetof(WeaponDef, iFirstRaiseTime), CSPFT_MILLISECONDS },
|
||||
{"emptyRaiseTime", offsetof(WeaponDef, iEmptyRaiseTime), CSPFT_MILLISECONDS },
|
||||
{"emptyDropTime", offsetof(WeaponDef, iEmptyDropTime), CSPFT_MILLISECONDS },
|
||||
{"sprintInTime", offsetof(WeaponDef, sprintInTime), CSPFT_MILLISECONDS },
|
||||
{"sprintLoopTime", offsetof(WeaponDef, sprintLoopTime), CSPFT_MILLISECONDS },
|
||||
{"sprintOutTime", offsetof(WeaponDef, sprintOutTime), CSPFT_MILLISECONDS },
|
||||
{"nightVisionWearTime", offsetof(WeaponDef, nightVisionWearTime), CSPFT_MILLISECONDS },
|
||||
{"nightVisionWearTimeFadeOutEnd", offsetof(WeaponDef, nightVisionWearTimeFadeOutEnd), CSPFT_MILLISECONDS },
|
||||
{"nightVisionWearTimePowerUp", offsetof(WeaponDef, nightVisionWearTimePowerUp), CSPFT_MILLISECONDS },
|
||||
{"nightVisionRemoveTime", offsetof(WeaponDef, nightVisionRemoveTime), CSPFT_MILLISECONDS },
|
||||
{"nightVisionRemoveTimePowerDown", offsetof(WeaponDef, nightVisionRemoveTimePowerDown), CSPFT_MILLISECONDS },
|
||||
{"nightVisionRemoveTimeFadeInStart", offsetof(WeaponDef, nightVisionRemoveTimeFadeInStart), CSPFT_MILLISECONDS },
|
||||
{"fuseTime", offsetof(WeaponDef, fuseTime), CSPFT_MILLISECONDS },
|
||||
{"aifuseTime", offsetof(WeaponDef, aiFuseTime), CSPFT_MILLISECONDS },
|
||||
{"requireLockonToFire", offsetof(WeaponDef, requireLockonToFire), CSPFT_QBOOLEAN },
|
||||
{"noAdsWhenMagEmpty", offsetof(WeaponDef, noAdsWhenMagEmpty), CSPFT_QBOOLEAN },
|
||||
{"avoidDropCleanup", offsetof(WeaponDef, avoidDropCleanup), CSPFT_QBOOLEAN },
|
||||
{"autoAimRange", offsetof(WeaponDef, autoAimRange), CSPFT_FLOAT },
|
||||
{"aimAssistRange", offsetof(WeaponDef, aimAssistRange), CSPFT_FLOAT },
|
||||
{"aimAssistRangeAds", offsetof(WeaponDef, aimAssistRangeAds), CSPFT_FLOAT },
|
||||
{"aimPadding", offsetof(WeaponDef, aimPadding), CSPFT_FLOAT },
|
||||
{"enemyCrosshairRange", offsetof(WeaponDef, enemyCrosshairRange), CSPFT_FLOAT },
|
||||
{"crosshairColorChange", offsetof(WeaponDef, crosshairColorChange), CSPFT_QBOOLEAN },
|
||||
{"moveSpeedScale", offsetof(WeaponDef, moveSpeedScale), CSPFT_FLOAT },
|
||||
{"adsMoveSpeedScale", offsetof(WeaponDef, adsMoveSpeedScale), CSPFT_FLOAT },
|
||||
{"sprintDurationScale", offsetof(WeaponDef, sprintDurationScale), CSPFT_FLOAT },
|
||||
{"idleCrouchFactor", offsetof(WeaponDef, fIdleCrouchFactor), CSPFT_FLOAT },
|
||||
{"idleProneFactor", offsetof(WeaponDef, fIdleProneFactor), CSPFT_FLOAT },
|
||||
{"gunMaxPitch", offsetof(WeaponDef, fGunMaxPitch), CSPFT_FLOAT },
|
||||
{"gunMaxYaw", offsetof(WeaponDef, fGunMaxYaw), CSPFT_FLOAT },
|
||||
{"swayMaxAngle", offsetof(WeaponDef, swayMaxAngle), CSPFT_FLOAT },
|
||||
{"swayLerpSpeed", offsetof(WeaponDef, swayLerpSpeed), CSPFT_FLOAT },
|
||||
{"swayPitchScale", offsetof(WeaponDef, swayPitchScale), CSPFT_FLOAT },
|
||||
{"swayYawScale", offsetof(WeaponDef, swayYawScale), CSPFT_FLOAT },
|
||||
{"swayHorizScale", offsetof(WeaponDef, swayHorizScale), CSPFT_FLOAT },
|
||||
{"swayVertScale", offsetof(WeaponDef, swayVertScale), CSPFT_FLOAT },
|
||||
{"swayShellShockScale", offsetof(WeaponDef, swayShellShockScale), CSPFT_FLOAT },
|
||||
{"adsSwayMaxAngle", offsetof(WeaponDef, adsSwayMaxAngle), CSPFT_FLOAT },
|
||||
{"adsSwayLerpSpeed", offsetof(WeaponDef, adsSwayLerpSpeed), CSPFT_FLOAT },
|
||||
{"adsSwayPitchScale", offsetof(WeaponDef, adsSwayPitchScale), CSPFT_FLOAT },
|
||||
{"adsSwayYawScale", offsetof(WeaponDef, adsSwayYawScale), CSPFT_FLOAT },
|
||||
{"adsSwayHorizScale", offsetof(WeaponDef, adsSwayHorizScale), CSPFT_FLOAT },
|
||||
{"adsSwayVertScale", offsetof(WeaponDef, adsSwayVertScale), CSPFT_FLOAT },
|
||||
{"rifleBullet", offsetof(WeaponDef, bRifleBullet), CSPFT_QBOOLEAN },
|
||||
{"armorPiercing", offsetof(WeaponDef, armorPiercing), CSPFT_QBOOLEAN },
|
||||
{"boltAction", offsetof(WeaponDef, bBoltAction), CSPFT_QBOOLEAN },
|
||||
{"aimDownSight", offsetof(WeaponDef, aimDownSight), CSPFT_QBOOLEAN },
|
||||
{"rechamberWhileAds", offsetof(WeaponDef, bRechamberWhileAds), CSPFT_QBOOLEAN },
|
||||
{"adsViewErrorMin", offsetof(WeaponDef, adsViewErrorMin), CSPFT_FLOAT },
|
||||
{"adsViewErrorMax", offsetof(WeaponDef, adsViewErrorMax), CSPFT_FLOAT },
|
||||
{"clipOnly", offsetof(WeaponDef, bClipOnly), CSPFT_QBOOLEAN },
|
||||
{"cookOffHold", offsetof(WeaponDef, bCookOffHold), CSPFT_QBOOLEAN },
|
||||
{"adsFire", offsetof(WeaponDef, adsFireOnly), CSPFT_QBOOLEAN },
|
||||
{"cancelAutoHolsterWhenEmpty", offsetof(WeaponDef, cancelAutoHolsterWhenEmpty), CSPFT_QBOOLEAN },
|
||||
{"suppressAmmoReserveDisplay", offsetof(WeaponDef, suppressAmmoReserveDisplay), CSPFT_QBOOLEAN },
|
||||
{"enhanced", offsetof(WeaponDef, enhanced), CSPFT_QBOOLEAN },
|
||||
{"laserSightDuringNightvision", offsetof(WeaponDef, laserSightDuringNightvision), CSPFT_QBOOLEAN },
|
||||
{"killIcon", offsetof(WeaponDef, killIcon), CSPFT_MATERIAL },
|
||||
{"killIconRatio", offsetof(WeaponDef, killIconRatio), WFT_ICONRATIO_KILL },
|
||||
{"flipKillIcon", offsetof(WeaponDef, flipKillIcon), CSPFT_QBOOLEAN },
|
||||
{"dpadIcon", offsetof(WeaponDef, dpadIcon), CSPFT_MATERIAL },
|
||||
{"dpadIconRatio", offsetof(WeaponDef, dpadIconRatio), WFT_ICONRATIO_DPAD },
|
||||
{"noPartialReload", offsetof(WeaponDef, bNoPartialReload), CSPFT_QBOOLEAN },
|
||||
{"segmentedReload", offsetof(WeaponDef, bSegmentedReload), CSPFT_QBOOLEAN },
|
||||
{"reloadAmmoAdd", offsetof(WeaponDef, iReloadAmmoAdd), CSPFT_INT },
|
||||
{"reloadStartAdd", offsetof(WeaponDef, iReloadStartAdd), CSPFT_INT },
|
||||
{"altWeapon", offsetof(WeaponDef, szAltWeaponName), CSPFT_STRING },
|
||||
{"dropAmmoMin", offsetof(WeaponDef, iDropAmmoMin), CSPFT_INT },
|
||||
{"dropAmmoMax", offsetof(WeaponDef, iDropAmmoMax), CSPFT_INT },
|
||||
{"blocksProne", offsetof(WeaponDef, blocksProne), CSPFT_QBOOLEAN },
|
||||
{"silenced", offsetof(WeaponDef, silenced), CSPFT_QBOOLEAN },
|
||||
{"explosionRadius", offsetof(WeaponDef, iExplosionRadius), CSPFT_INT },
|
||||
{"explosionRadiusMin", offsetof(WeaponDef, iExplosionRadiusMin), CSPFT_INT },
|
||||
{"explosionInnerDamage", offsetof(WeaponDef, iExplosionInnerDamage), CSPFT_INT },
|
||||
{"explosionOuterDamage", offsetof(WeaponDef, iExplosionOuterDamage), CSPFT_INT },
|
||||
{"damageConeAngle", offsetof(WeaponDef, damageConeAngle), CSPFT_FLOAT },
|
||||
{"projectileSpeed", offsetof(WeaponDef, iProjectileSpeed), CSPFT_INT },
|
||||
{"projectileSpeedUp", offsetof(WeaponDef, iProjectileSpeedUp), CSPFT_INT },
|
||||
{"projectileSpeedForward", offsetof(WeaponDef, iProjectileSpeedForward), CSPFT_INT },
|
||||
{"projectileActivateDist", offsetof(WeaponDef, iProjectileActivateDist), CSPFT_INT },
|
||||
{"projectileLifetime", offsetof(WeaponDef, projLifetime), CSPFT_FLOAT },
|
||||
{"timeToAccelerate", offsetof(WeaponDef, timeToAccelerate), CSPFT_FLOAT },
|
||||
{"projectileCurvature", offsetof(WeaponDef, projectileCurvature), CSPFT_FLOAT },
|
||||
{"projectileModel", offsetof(WeaponDef, projectileModel), CSPFT_XMODEL },
|
||||
{"projExplosionType", offsetof(WeaponDef, projExplosion), WFT_PROJ_EXPLOSION },
|
||||
{"projExplosionEffect", offsetof(WeaponDef, projExplosionEffect), CSPFT_FX },
|
||||
{"projExplosionEffectForceNormalUp", offsetof(WeaponDef, projExplosionEffectForceNormalUp), CSPFT_QBOOLEAN },
|
||||
{"projExplosionSound", offsetof(WeaponDef, projExplosionSound), CSPFT_SOUND },
|
||||
{"projDudEffect", offsetof(WeaponDef, projDudEffect), CSPFT_FX },
|
||||
{"projDudSound", offsetof(WeaponDef, projDudSound), CSPFT_SOUND },
|
||||
{"projImpactExplode", offsetof(WeaponDef, bProjImpactExplode), CSPFT_QBOOLEAN },
|
||||
{"stickiness", offsetof(WeaponDef, stickiness), WFT_STICKINESS },
|
||||
{"hasDetonator", offsetof(WeaponDef, hasDetonator), CSPFT_QBOOLEAN },
|
||||
{"timedDetonation", offsetof(WeaponDef, timedDetonation), CSPFT_QBOOLEAN },
|
||||
{"rotate", offsetof(WeaponDef, rotate), CSPFT_QBOOLEAN },
|
||||
{"holdButtonToThrow", offsetof(WeaponDef, holdButtonToThrow), CSPFT_QBOOLEAN },
|
||||
{"freezeMovementWhenFiring", offsetof(WeaponDef, freezeMovementWhenFiring), CSPFT_QBOOLEAN },
|
||||
{"lowAmmoWarningThreshold", offsetof(WeaponDef, lowAmmoWarningThreshold), CSPFT_FLOAT },
|
||||
{"parallelDefaultBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_DEFAULT]), CSPFT_FLOAT },
|
||||
{"parallelBarkBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_BARK]), CSPFT_FLOAT },
|
||||
{"parallelBrickBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_BRICK]), CSPFT_FLOAT },
|
||||
{"parallelCarpetBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_CARPET]), CSPFT_FLOAT },
|
||||
{"parallelClothBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_CLOTH]), CSPFT_FLOAT },
|
||||
{"parallelConcreteBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_CONCRETE]), CSPFT_FLOAT },
|
||||
{"parallelDirtBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_DIRT]), CSPFT_FLOAT },
|
||||
{"parallelFleshBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_FLESH]), CSPFT_FLOAT },
|
||||
{"parallelFoliageBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_FOLIAGE]), CSPFT_FLOAT },
|
||||
{"parallelGlassBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_GLASS]), CSPFT_FLOAT },
|
||||
{"parallelGrassBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_GRASS]), CSPFT_FLOAT },
|
||||
{"parallelGravelBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_GRAVEL]), CSPFT_FLOAT },
|
||||
{"parallelIceBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_ICE]), CSPFT_FLOAT },
|
||||
{"parallelMetalBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_METAL]), CSPFT_FLOAT },
|
||||
{"parallelMudBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_MUD]), CSPFT_FLOAT },
|
||||
{"parallelPaperBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_PAPER]), CSPFT_FLOAT },
|
||||
{"parallelPlasterBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_PLASTER]), CSPFT_FLOAT },
|
||||
{"parallelRockBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_ROCK]), CSPFT_FLOAT },
|
||||
{"parallelSandBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_SAND]), CSPFT_FLOAT },
|
||||
{"parallelSnowBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_SNOW]), CSPFT_FLOAT },
|
||||
{"parallelWaterBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_WATER]), CSPFT_FLOAT },
|
||||
{"parallelWoodBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_WOOD]), CSPFT_FLOAT },
|
||||
{"parallelAsphaltBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_ASPHALT]), CSPFT_FLOAT },
|
||||
{"parallelCeramicBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_CERAMIC]), CSPFT_FLOAT },
|
||||
{"parallelPlasticBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_PLASTIC]), CSPFT_FLOAT },
|
||||
{"parallelRubberBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_RUBBER]), CSPFT_FLOAT },
|
||||
{"parallelCushionBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_CUSHION]), CSPFT_FLOAT },
|
||||
{"parallelFruitBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_FRUIT]), CSPFT_FLOAT },
|
||||
{"parallelPaintedMetalBounce", offsetof(WeaponDef, parallelBounce[SURF_TYPE_PAINTED_METAL]), CSPFT_FLOAT },
|
||||
{"perpendicularDefaultBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_DEFAULT]), CSPFT_FLOAT },
|
||||
{"perpendicularBarkBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_BARK]), CSPFT_FLOAT },
|
||||
{"perpendicularBrickBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_BRICK]), CSPFT_FLOAT },
|
||||
{"perpendicularCarpetBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_CARPET]), CSPFT_FLOAT },
|
||||
{"perpendicularClothBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_CLOTH]), CSPFT_FLOAT },
|
||||
{"perpendicularConcreteBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_CONCRETE]), CSPFT_FLOAT },
|
||||
{"perpendicularDirtBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_DIRT]), CSPFT_FLOAT },
|
||||
{"perpendicularFleshBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_FLESH]), CSPFT_FLOAT },
|
||||
{"perpendicularFoliageBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_FOLIAGE]), CSPFT_FLOAT },
|
||||
{"perpendicularGlassBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_GLASS]), CSPFT_FLOAT },
|
||||
{"perpendicularGrassBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_GRASS]), CSPFT_FLOAT },
|
||||
{"perpendicularGravelBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_GRAVEL]), CSPFT_FLOAT },
|
||||
{"perpendicularIceBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_ICE]), CSPFT_FLOAT },
|
||||
{"perpendicularMetalBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_METAL]), CSPFT_FLOAT },
|
||||
{"perpendicularMudBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_MUD]), CSPFT_FLOAT },
|
||||
{"perpendicularPaperBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_PAPER]), CSPFT_FLOAT },
|
||||
{"perpendicularPlasterBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_PLASTER]), CSPFT_FLOAT },
|
||||
{"perpendicularRockBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_ROCK]), CSPFT_FLOAT },
|
||||
{"perpendicularSandBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_SAND]), CSPFT_FLOAT },
|
||||
{"perpendicularSnowBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_SNOW]), CSPFT_FLOAT },
|
||||
{"perpendicularWaterBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_WATER]), CSPFT_FLOAT },
|
||||
{"perpendicularWoodBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_WOOD]), CSPFT_FLOAT },
|
||||
{"perpendicularAsphaltBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_ASPHALT]), CSPFT_FLOAT },
|
||||
{"perpendicularCeramicBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_CERAMIC]), CSPFT_FLOAT },
|
||||
{"perpendicularPlasticBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_PLASTIC]), CSPFT_FLOAT },
|
||||
{"perpendicularRubberBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_RUBBER]), CSPFT_FLOAT },
|
||||
{"perpendicularCushionBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_CUSHION]), CSPFT_FLOAT },
|
||||
{"perpendicularFruitBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_FRUIT]), CSPFT_FLOAT },
|
||||
{"perpendicularPaintedMetalBounce", offsetof(WeaponDef, perpendicularBounce[SURF_TYPE_PAINTED_METAL]), CSPFT_FLOAT },
|
||||
{"projTrailEffect", offsetof(WeaponDef, projTrailEffect), CSPFT_FX },
|
||||
{"projectileRed", offsetof(WeaponDef, vProjectileColor[0]), CSPFT_FLOAT },
|
||||
{"projectileGreen", offsetof(WeaponDef, vProjectileColor[1]), CSPFT_FLOAT },
|
||||
{"projectileBlue", offsetof(WeaponDef, vProjectileColor[2]), CSPFT_FLOAT },
|
||||
{"guidedMissileType", offsetof(WeaponDef, guidedMissileType), WFT_GUIDED_MISSILE_TYPE },
|
||||
{"maxSteeringAccel", offsetof(WeaponDef, maxSteeringAccel), CSPFT_FLOAT },
|
||||
{"projIgnitionDelay", offsetof(WeaponDef, projIgnitionDelay), CSPFT_INT },
|
||||
{"projIgnitionEffect", offsetof(WeaponDef, projIgnitionEffect), CSPFT_FX },
|
||||
{"projIgnitionSound", offsetof(WeaponDef, projIgnitionSound), CSPFT_SOUND },
|
||||
{"adsTransInTime", offsetof(WeaponDef, iAdsTransInTime), CSPFT_MILLISECONDS },
|
||||
{"adsTransOutTime", offsetof(WeaponDef, iAdsTransOutTime), CSPFT_MILLISECONDS },
|
||||
{"adsIdleAmount", offsetof(WeaponDef, fAdsIdleAmount), CSPFT_FLOAT },
|
||||
{"adsIdleSpeed", offsetof(WeaponDef, adsIdleSpeed), CSPFT_FLOAT },
|
||||
{"adsZoomFov", offsetof(WeaponDef, fAdsZoomFov), CSPFT_FLOAT },
|
||||
{"adsZoomInFrac", offsetof(WeaponDef, fAdsZoomInFrac), CSPFT_FLOAT },
|
||||
{"adsZoomOutFrac", offsetof(WeaponDef, fAdsZoomOutFrac), CSPFT_FLOAT },
|
||||
{"adsOverlayShader", offsetof(WeaponDef, overlayMaterial), CSPFT_MATERIAL },
|
||||
{"adsOverlayShaderLowRes", offsetof(WeaponDef, overlayMaterialLowRes), CSPFT_MATERIAL },
|
||||
{"adsOverlayReticle", offsetof(WeaponDef, overlayReticle), WFT_OVERLAYRETICLE },
|
||||
{"adsOverlayInterface", offsetof(WeaponDef, overlayInterface), WFT_OVERLAYINTERFACE },
|
||||
{"adsOverlayWidth", offsetof(WeaponDef, overlayWidth), CSPFT_FLOAT },
|
||||
{"adsOverlayHeight", offsetof(WeaponDef, overlayHeight), CSPFT_FLOAT },
|
||||
{"adsBobFactor", offsetof(WeaponDef, fAdsBobFactor), CSPFT_FLOAT },
|
||||
{"adsViewBobMult", offsetof(WeaponDef, fAdsViewBobMult), CSPFT_FLOAT },
|
||||
{"adsAimPitch", offsetof(WeaponDef, fAdsAimPitch), CSPFT_FLOAT },
|
||||
{"adsCrosshairInFrac", offsetof(WeaponDef, fAdsCrosshairInFrac), CSPFT_FLOAT },
|
||||
{"adsCrosshairOutFrac", offsetof(WeaponDef, fAdsCrosshairOutFrac), CSPFT_FLOAT },
|
||||
{"adsReloadTransTime", offsetof(WeaponDef, iPositionReloadTransTime), CSPFT_MILLISECONDS },
|
||||
{"adsGunKickReducedKickBullets", offsetof(WeaponDef, adsGunKickReducedKickBullets), CSPFT_INT },
|
||||
{"adsGunKickReducedKickPercent", offsetof(WeaponDef, adsGunKickReducedKickPercent), CSPFT_FLOAT },
|
||||
{"adsGunKickPitchMin", offsetof(WeaponDef, fAdsGunKickPitchMin), CSPFT_FLOAT },
|
||||
{"adsGunKickPitchMax", offsetof(WeaponDef, fAdsGunKickPitchMax), CSPFT_FLOAT },
|
||||
{"adsGunKickYawMin", offsetof(WeaponDef, fAdsGunKickYawMin), CSPFT_FLOAT },
|
||||
{"adsGunKickYawMax", offsetof(WeaponDef, fAdsGunKickYawMax), CSPFT_FLOAT },
|
||||
{"adsGunKickAccel", offsetof(WeaponDef, fAdsGunKickAccel), CSPFT_FLOAT },
|
||||
{"adsGunKickSpeedMax", offsetof(WeaponDef, fAdsGunKickSpeedMax), CSPFT_FLOAT },
|
||||
{"adsGunKickSpeedDecay", offsetof(WeaponDef, fAdsGunKickSpeedDecay), CSPFT_FLOAT },
|
||||
{"adsGunKickStaticDecay", offsetof(WeaponDef, fAdsGunKickStaticDecay), CSPFT_FLOAT },
|
||||
{"adsViewKickPitchMin", offsetof(WeaponDef, fAdsViewKickPitchMin), CSPFT_FLOAT },
|
||||
{"adsViewKickPitchMax", offsetof(WeaponDef, fAdsViewKickPitchMax), CSPFT_FLOAT },
|
||||
{"adsViewKickYawMin", offsetof(WeaponDef, fAdsViewKickYawMin), CSPFT_FLOAT },
|
||||
{"adsViewKickYawMax", offsetof(WeaponDef, fAdsViewKickYawMax), CSPFT_FLOAT },
|
||||
{"adsViewKickCenterSpeed", offsetof(WeaponDef, fAdsViewKickCenterSpeed), CSPFT_FLOAT },
|
||||
{"adsSpread", offsetof(WeaponDef, fAdsSpread), CSPFT_FLOAT },
|
||||
{"hipSpreadStandMin", offsetof(WeaponDef, fHipSpreadStandMin), CSPFT_FLOAT },
|
||||
{"hipSpreadDuckedMin", offsetof(WeaponDef, fHipSpreadDuckedMin), CSPFT_FLOAT },
|
||||
{"hipSpreadProneMin", offsetof(WeaponDef, fHipSpreadProneMin), CSPFT_FLOAT },
|
||||
{"hipSpreadMax", offsetof(WeaponDef, hipSpreadStandMax), CSPFT_FLOAT },
|
||||
{"hipSpreadDuckedMax", offsetof(WeaponDef, hipSpreadDuckedMax), CSPFT_FLOAT },
|
||||
{"hipSpreadProneMax", offsetof(WeaponDef, hipSpreadProneMax), CSPFT_FLOAT },
|
||||
{"hipSpreadDecayRate", offsetof(WeaponDef, fHipSpreadDecayRate), CSPFT_FLOAT },
|
||||
{"hipSpreadFireAdd", offsetof(WeaponDef, fHipSpreadFireAdd), CSPFT_FLOAT },
|
||||
{"hipSpreadTurnAdd", offsetof(WeaponDef, fHipSpreadTurnAdd), CSPFT_FLOAT },
|
||||
{"hipSpreadMoveAdd", offsetof(WeaponDef, fHipSpreadMoveAdd), CSPFT_FLOAT },
|
||||
{"hipSpreadDuckedDecay", offsetof(WeaponDef, fHipSpreadDuckedDecay), CSPFT_FLOAT },
|
||||
{"hipSpreadProneDecay", offsetof(WeaponDef, fHipSpreadProneDecay), CSPFT_FLOAT },
|
||||
{"hipReticleSidePos", offsetof(WeaponDef, fHipReticleSidePos), CSPFT_FLOAT },
|
||||
{"hipIdleAmount", offsetof(WeaponDef, fHipIdleAmount), CSPFT_FLOAT },
|
||||
{"hipIdleSpeed", offsetof(WeaponDef, hipIdleSpeed), CSPFT_FLOAT },
|
||||
{"hipGunKickReducedKickBullets", offsetof(WeaponDef, hipGunKickReducedKickBullets), CSPFT_INT },
|
||||
{"hipGunKickReducedKickPercent", offsetof(WeaponDef, hipGunKickReducedKickPercent), CSPFT_FLOAT },
|
||||
{"hipGunKickPitchMin", offsetof(WeaponDef, fHipGunKickPitchMin), CSPFT_FLOAT },
|
||||
{"hipGunKickPitchMax", offsetof(WeaponDef, fHipGunKickPitchMax), CSPFT_FLOAT },
|
||||
{"hipGunKickYawMin", offsetof(WeaponDef, fHipGunKickYawMin), CSPFT_FLOAT },
|
||||
{"hipGunKickYawMax", offsetof(WeaponDef, fHipGunKickYawMax), CSPFT_FLOAT },
|
||||
{"hipGunKickAccel", offsetof(WeaponDef, fHipGunKickAccel), CSPFT_FLOAT },
|
||||
{"hipGunKickSpeedMax", offsetof(WeaponDef, fHipGunKickSpeedMax), CSPFT_FLOAT },
|
||||
{"hipGunKickSpeedDecay", offsetof(WeaponDef, fHipGunKickSpeedDecay), CSPFT_FLOAT },
|
||||
{"hipGunKickStaticDecay", offsetof(WeaponDef, fHipGunKickStaticDecay), CSPFT_FLOAT },
|
||||
{"hipViewKickPitchMin", offsetof(WeaponDef, fHipViewKickPitchMin), CSPFT_FLOAT },
|
||||
{"hipViewKickPitchMax", offsetof(WeaponDef, fHipViewKickPitchMax), CSPFT_FLOAT },
|
||||
{"hipViewKickYawMin", offsetof(WeaponDef, fHipViewKickYawMin), CSPFT_FLOAT },
|
||||
{"hipViewKickYawMax", offsetof(WeaponDef, fHipViewKickYawMax), CSPFT_FLOAT },
|
||||
{"hipViewKickCenterSpeed", offsetof(WeaponDef, fHipViewKickCenterSpeed), CSPFT_FLOAT },
|
||||
{"leftArc", offsetof(WeaponDef, leftArc), CSPFT_FLOAT },
|
||||
{"rightArc", offsetof(WeaponDef, rightArc), CSPFT_FLOAT },
|
||||
{"topArc", offsetof(WeaponDef, topArc), CSPFT_FLOAT },
|
||||
{"bottomArc", offsetof(WeaponDef, bottomArc), CSPFT_FLOAT },
|
||||
{"accuracy", offsetof(WeaponDef, accuracy), CSPFT_FLOAT },
|
||||
{"aiSpread", offsetof(WeaponDef, aiSpread), CSPFT_FLOAT },
|
||||
{"playerSpread", offsetof(WeaponDef, playerSpread), CSPFT_FLOAT },
|
||||
{"maxVertTurnSpeed", offsetof(WeaponDef, maxTurnSpeed[0]), CSPFT_FLOAT },
|
||||
{"maxHorTurnSpeed", offsetof(WeaponDef, maxTurnSpeed[1]), CSPFT_FLOAT },
|
||||
{"minVertTurnSpeed", offsetof(WeaponDef, minTurnSpeed[0]), CSPFT_FLOAT },
|
||||
{"minHorTurnSpeed", offsetof(WeaponDef, minTurnSpeed[1]), CSPFT_FLOAT },
|
||||
{"pitchConvergenceTime", offsetof(WeaponDef, pitchConvergenceTime), CSPFT_FLOAT },
|
||||
{"yawConvergenceTime", offsetof(WeaponDef, yawConvergenceTime), CSPFT_FLOAT },
|
||||
{"suppressionTime", offsetof(WeaponDef, suppressTime), CSPFT_FLOAT },
|
||||
{"maxRange", offsetof(WeaponDef, maxRange), CSPFT_FLOAT },
|
||||
{"animHorRotateInc", offsetof(WeaponDef, fAnimHorRotateInc), CSPFT_FLOAT },
|
||||
{"playerPositionDist", offsetof(WeaponDef, fPlayerPositionDist), CSPFT_FLOAT },
|
||||
{"stance", offsetof(WeaponDef, stance), WFT_STANCE },
|
||||
{"useHintString", offsetof(WeaponDef, szUseHintString), CSPFT_STRING },
|
||||
{"dropHintString", offsetof(WeaponDef, dropHintString), CSPFT_STRING },
|
||||
{"horizViewJitter", offsetof(WeaponDef, horizViewJitter), CSPFT_FLOAT },
|
||||
{"vertViewJitter", offsetof(WeaponDef, vertViewJitter), CSPFT_FLOAT },
|
||||
{"fightDist", offsetof(WeaponDef, fightDist), CSPFT_FLOAT },
|
||||
{"maxDist", offsetof(WeaponDef, maxDist), CSPFT_FLOAT },
|
||||
{"aiVsAiAccuracyGraph", offsetof(WeaponDef, aiVsAiAccuracyGraphName), CSPFT_STRING },
|
||||
{"aiVsPlayerAccuracyGraph", offsetof(WeaponDef, aiVsPlayerAccuracyGraphName), CSPFT_STRING },
|
||||
{"locNone", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_NONE]), CSPFT_FLOAT },
|
||||
{"locHelmet", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_HELMET]), CSPFT_FLOAT },
|
||||
{"locHead", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_HEAD]), CSPFT_FLOAT },
|
||||
{"locNeck", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_NECK]), CSPFT_FLOAT },
|
||||
{"locTorsoUpper", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_TORSO_UPR]), CSPFT_FLOAT },
|
||||
{"locTorsoLower", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_TORSO_LWR]), CSPFT_FLOAT },
|
||||
{"locRightArmUpper", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_R_ARM_UPR]), CSPFT_FLOAT },
|
||||
{"locRightArmLower", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_R_ARM_LWR]), CSPFT_FLOAT },
|
||||
{"locRightHand", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_R_HAND]), CSPFT_FLOAT },
|
||||
{"locLeftArmUpper", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_L_ARM_UPR]), CSPFT_FLOAT },
|
||||
{"locLeftArmLower", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_L_ARM_LWR]), CSPFT_FLOAT },
|
||||
{"locLeftHand", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_L_HAND]), CSPFT_FLOAT },
|
||||
{"locRightLegUpper", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_R_LEG_UPR]), CSPFT_FLOAT },
|
||||
{"locRightLegLower", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_R_LEG_LWR]), CSPFT_FLOAT },
|
||||
{"locRightFoot", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_R_FOOT]), CSPFT_FLOAT },
|
||||
{"locLeftLegUpper", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_L_LEG_UPR]), CSPFT_FLOAT },
|
||||
{"locLeftLegLower", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_L_LEG_LWR]), CSPFT_FLOAT },
|
||||
{"locLeftFoot", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_L_FOOT]), CSPFT_FLOAT },
|
||||
{"locGun", offsetof(WeaponDef, locationDamageMultipliers[HITLOC_GUN]), CSPFT_FLOAT },
|
||||
{"fireRumble", offsetof(WeaponDef, fireRumble), CSPFT_STRING },
|
||||
{"meleeImpactRumble", offsetof(WeaponDef, meleeImpactRumble), CSPFT_STRING },
|
||||
{"adsDofStart", offsetof(WeaponDef, adsDofStart), CSPFT_FLOAT },
|
||||
{"adsDofEnd", offsetof(WeaponDef, adsDofEnd), CSPFT_FLOAT },
|
||||
};
|
||||
} // namespace IW3
|
||||
@@ -0,0 +1,172 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/IW3/IW3.h"
|
||||
|
||||
namespace IW3
|
||||
{
|
||||
inline const char* szWeapTypeNames[]{
|
||||
"bullet",
|
||||
"grenade",
|
||||
"projectile",
|
||||
"binoculars",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(szWeapTypeNames)> == WEAPTYPE_NUM);
|
||||
|
||||
inline const char* szWeapClassNames[]{
|
||||
"rifle",
|
||||
"mg",
|
||||
"smg",
|
||||
"spread",
|
||||
"pistol",
|
||||
"grenade",
|
||||
"rocketlauncher",
|
||||
"turret",
|
||||
"non-player",
|
||||
"item",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(szWeapClassNames)> == WEAPCLASS_NUM);
|
||||
|
||||
inline const char* szWeapOverlayReticleNames[]{
|
||||
"none",
|
||||
"crosshair",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(szWeapOverlayReticleNames)> == WEAPOVERLAYRETICLE_NUM);
|
||||
|
||||
inline const char* penetrateTypeNames[]{
|
||||
"none",
|
||||
"small",
|
||||
"medium",
|
||||
"large",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(penetrateTypeNames)> == PENETRATE_TYPE_NUM);
|
||||
|
||||
inline const char* impactTypeNames[]{
|
||||
"none",
|
||||
"bullet_small",
|
||||
"bullet_large",
|
||||
"bullet_ap",
|
||||
"shotgun",
|
||||
"grenade_bounce",
|
||||
"grenade_explode",
|
||||
"rocket_explode",
|
||||
"projectile_dud",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(impactTypeNames)> == IMPACT_TYPE_NUM);
|
||||
|
||||
inline const char* szWeapStanceNames[]{
|
||||
"stand",
|
||||
"duck",
|
||||
"prone",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(szWeapStanceNames)> == WEAPSTANCE_NUM);
|
||||
|
||||
inline const char* szProjectileExplosionNames[]{
|
||||
"grenade",
|
||||
"rocket",
|
||||
"flashbang",
|
||||
"none",
|
||||
"dud",
|
||||
"smoke",
|
||||
"heavy explosive",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(szProjectileExplosionNames)> == WEAPPROJEXP_NUM);
|
||||
|
||||
inline const char* offhandClassNames[]{
|
||||
"None",
|
||||
"Frag Grenade",
|
||||
"Smoke Grenade",
|
||||
"Flash Grenade",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(offhandClassNames)> == OFFHAND_CLASS_NUM);
|
||||
|
||||
// mp/playeranimtypes.txt
|
||||
inline const char* playerAnimTypeNames[]{
|
||||
"none",
|
||||
"other",
|
||||
"pistol",
|
||||
"smg",
|
||||
"autorifle",
|
||||
"mg",
|
||||
"sniper",
|
||||
"rocketlauncher",
|
||||
"explosive",
|
||||
"grenade",
|
||||
"turret",
|
||||
"c4",
|
||||
"m203",
|
||||
"hold",
|
||||
"briefcase",
|
||||
};
|
||||
|
||||
inline const char* activeReticleNames[]{
|
||||
"None",
|
||||
"Pip-On-A-Stick",
|
||||
"Bouncing diamond",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(activeReticleNames)> == VEH_ACTIVE_RETICLE_NUM);
|
||||
|
||||
inline const char* guidedMissileNames[]{
|
||||
"None",
|
||||
"Sidewinder",
|
||||
"Hellfire",
|
||||
"Javelin",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(guidedMissileNames)> == MISSILE_GUIDANCE_NUM);
|
||||
|
||||
inline const char* stickinessNames[]{
|
||||
"Don't stick",
|
||||
"Stick to all",
|
||||
"Stick to ground",
|
||||
"Stick to ground, maintain yaw",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(stickinessNames)> == WEAPSTICKINESS_NUM);
|
||||
|
||||
inline const char* overlayInterfaceNames[]{
|
||||
"None",
|
||||
"Javelin",
|
||||
"Turret Scope",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(overlayInterfaceNames)> == WEAPOVERLAYINTERFACE_NUM);
|
||||
|
||||
inline const char* szWeapInventoryTypeNames[]{
|
||||
"primary",
|
||||
"offhand",
|
||||
"item",
|
||||
"altmode",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(szWeapInventoryTypeNames)> == WEAPINVENTORY_NUM);
|
||||
|
||||
inline const char* szWeapFireTypeNames[]{
|
||||
"Full Auto",
|
||||
"Single Shot",
|
||||
"2-Round Burst",
|
||||
"3-Round Burst",
|
||||
"4-Round Burst",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(szWeapFireTypeNames)> == WEAPON_FIRETYPE_NUM);
|
||||
|
||||
inline const char* ammoCounterClipNames[]{
|
||||
"None",
|
||||
"Magazine",
|
||||
"ShortMagazine",
|
||||
"Shotgun",
|
||||
"Rocket",
|
||||
"Beltfed",
|
||||
"AltWeapon",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(ammoCounterClipNames)> == AMMO_COUNTER_CLIP_NUM);
|
||||
|
||||
inline const char* weapIconRatioNames[]{
|
||||
"1:1",
|
||||
"2:1",
|
||||
"4:1",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(weapIconRatioNames)> == WEAPON_ICON_RATIO_NUM);
|
||||
|
||||
inline const char* bounceSoundSuffixes[]{
|
||||
"_default", "_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", "_painted_metal",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(bounceSoundSuffixes)> == SURF_TYPE_NUM);
|
||||
} // namespace IW3
|
||||
Reference in New Issue
Block a user