#pragma once
#include "Game/T5/T5.h"

namespace T5
{
    inline cspField_t weapon_fields[]{
        {"displayName",                        offsetof(WeaponFullDef, weapVariantDef.szDisplayName),                 CSPFT_STRING             },
        {"AIOverlayDescription",               offsetof(WeaponFullDef, weapDef.szOverlayName),                        CSPFT_STRING             },
        {"modeName",                           offsetof(WeaponFullDef, weapDef.szModeName),                           CSPFT_STRING             },
        {"playerAnimType",                     offsetof(WeaponFullDef, weapDef.playerAnimType),                       WFT_ANIMTYPE             },
        {"gunModel",                           offsetof(WeaponFullDef, gunXModel[0]),                                 CSPFT_XMODEL             },
        {"gunModel2",                          offsetof(WeaponFullDef, gunXModel[1]),                                 CSPFT_XMODEL             },
        {"gunModel3",                          offsetof(WeaponFullDef, gunXModel[2]),                                 CSPFT_XMODEL             },
        {"gunModel4",                          offsetof(WeaponFullDef, gunXModel[3]),                                 CSPFT_XMODEL             },
        {"gunModel5",                          offsetof(WeaponFullDef, gunXModel[4]),                                 CSPFT_XMODEL             },
        {"gunModel6",                          offsetof(WeaponFullDef, gunXModel[5]),                                 CSPFT_XMODEL             },
        {"gunModel7",                          offsetof(WeaponFullDef, gunXModel[6]),                                 CSPFT_XMODEL             },
        {"gunModel8",                          offsetof(WeaponFullDef, gunXModel[7]),                                 CSPFT_XMODEL             },
        {"gunModel9",                          offsetof(WeaponFullDef, gunXModel[8]),                                 CSPFT_XMODEL             },
        {"gunModel10",                         offsetof(WeaponFullDef, gunXModel[9]),                                 CSPFT_XMODEL             },
        {"gunModel11",                         offsetof(WeaponFullDef, gunXModel[10]),                                CSPFT_XMODEL             },
        {"gunModel12",                         offsetof(WeaponFullDef, gunXModel[11]),                                CSPFT_XMODEL             },
        {"gunModel13",                         offsetof(WeaponFullDef, gunXModel[12]),                                CSPFT_XMODEL             },
        {"gunModel14",                         offsetof(WeaponFullDef, gunXModel[13]),                                CSPFT_XMODEL             },
        {"gunModel15",                         offsetof(WeaponFullDef, gunXModel[14]),                                CSPFT_XMODEL             },
        {"gunModel16",                         offsetof(WeaponFullDef, gunXModel[15]),                                CSPFT_XMODEL             },
        {"handModel",                          offsetof(WeaponFullDef, weapDef.handXModel),                           CSPFT_XMODEL             },
        {"hideTags",                           offsetof(WeaponFullDef, hideTags),                                     WFT_HIDETAGS             },
        {"notetrackSoundMap",                  offsetof(WeaponFullDef, notetrackSoundMapKeys),                        WFT_NOTETRACKSOUNDMAP    },
        {"idleAnim",                           offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_IDLE]),                     WFT_ANIM_NAME            },
        {"idleAnimLeft",                       offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_IDLE_LEFT]),                WFT_ANIM_NAME            },
        {"emptyIdleAnim",                      offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_EMPTY_IDLE]),               WFT_ANIM_NAME            },
        {"emptyIdleAnimLeft",                  offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_EMPTY_IDLE_LEFT]),          WFT_ANIM_NAME            },
        {"fireAnim",                           offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_FIRE]),                     WFT_ANIM_NAME            },
        {"fireAnimLeft",                       offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_FIRE_LEFT]),                WFT_ANIM_NAME            },
        {"holdFireAnim",                       offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_HOLD_FIRE]),                WFT_ANIM_NAME            },
        {"lastShotAnim",                       offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_LASTSHOT]),                 WFT_ANIM_NAME            },
        {"lastShotAnimLeft",                   offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_LASTSHOT_LEFT]),            WFT_ANIM_NAME            },
        {"detonateAnim",                       offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DETONATE]),                 WFT_ANIM_NAME            },
        {"rechamberAnim",                      offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RECHAMBER]),                WFT_ANIM_NAME            },
        {"meleeAnim",                          offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_MELEE]),                    WFT_ANIM_NAME            },
        {"meleeChargeAnim",                    offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_MELEE_CHARGE]),             WFT_ANIM_NAME            },
        {"reloadAnim",                         offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RELOAD]),                   WFT_ANIM_NAME            },
        {"reloadAnimRight",                    offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RELOAD_RIGHT]),             WFT_ANIM_NAME            },
        {"reloadAnimLeft",                     offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RELOAD_LEFT]),              WFT_ANIM_NAME            },
        {"reloadEmptyAnim",                    offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RELOAD_EMPTY]),             WFT_ANIM_NAME            },
        {"reloadEmptyAnimLeft",                offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RELOAD_EMPTY_LEFT]),        WFT_ANIM_NAME            },
        {"reloadStartAnim",                    offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RELOAD_START]),             WFT_ANIM_NAME            },
        {"reloadEndAnim",                      offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RELOAD_END]),               WFT_ANIM_NAME            },
        {"reloadQuickAnim",                    offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RELOAD_QUICK]),             WFT_ANIM_NAME            },
        {"reloadQuickEmptyAnim",               offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RELOAD_QUICK_EMPTY]),       WFT_ANIM_NAME            },
        {"raiseAnim",                          offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_RAISE]),                    WFT_ANIM_NAME            },
        {"dropAnim",                           offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DROP]),                     WFT_ANIM_NAME            },
        {"firstRaiseAnim",                     offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_FIRST_RAISE]),              WFT_ANIM_NAME            },
        {"altRaiseAnim",                       offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_ALT_RAISE]),                WFT_ANIM_NAME            },
        {"altDropAnim",                        offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_ALT_DROP]),                 WFT_ANIM_NAME            },
        {"quickRaiseAnim",                     offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_QUICK_RAISE]),              WFT_ANIM_NAME            },
        {"quickDropAnim",                      offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_QUICK_DROP]),               WFT_ANIM_NAME            },
        {"emptyRaiseAnim",                     offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_EMPTY_RAISE]),              WFT_ANIM_NAME            },
        {"emptyDropAnim",                      offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_EMPTY_DROP]),               WFT_ANIM_NAME            },
        {"sprintInAnim",                       offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_SPRINT_IN]),                WFT_ANIM_NAME            },
        {"sprintLoopAnim",                     offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_SPRINT_LOOP]),              WFT_ANIM_NAME            },
        {"sprintOutAnim",                      offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_SPRINT_OUT]),               WFT_ANIM_NAME            },
        {"sprintInEmptyAnim",                  offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_SPRINT_EMPTY_IN]),          WFT_ANIM_NAME            },
        {"sprintLoopEmptyAnim",                offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_SPRINT_EMPTY_LOOP]),        WFT_ANIM_NAME            },
        {"sprintOutEmptyAnim",                 offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_SPRINT_EMPTY_OUT]),         WFT_ANIM_NAME            },
        {"lowReadyInAnim",                     offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_LOWREADY_IN]),              WFT_ANIM_NAME            },
        {"lowReadyLoopAnim",                   offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_LOWREADY_LOOP]),            WFT_ANIM_NAME            },
        {"lowReadyOutAnim",                    offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_LOWREADY_OUT]),             WFT_ANIM_NAME            },
        {"contFireInAnim",                     offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_CONT_FIRE_IN]),             WFT_ANIM_NAME            },
        {"contFireLoopAnim",                   offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_CONT_FIRE_LOOP]),           WFT_ANIM_NAME            },
        {"contFireOutAnim",                    offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_CONT_FIRE_OUT]),            WFT_ANIM_NAME            },
        {"deployAnim",                         offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DEPLOY]),                   WFT_ANIM_NAME            },
        {"breakdownAnim",                      offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_BREAKDOWN]),                WFT_ANIM_NAME            },
        {"nightVisionWearAnim",                offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_NIGHTVISION_WEAR]),         WFT_ANIM_NAME            },
        {"nightVisionRemoveAnim",              offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_NIGHTVISION_REMOVE]),       WFT_ANIM_NAME            },
        {"adsFireAnim",                        offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_ADS_FIRE]),                 WFT_ANIM_NAME            },
        {"adsLastShotAnim",                    offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_ADS_LASTSHOT]),             WFT_ANIM_NAME            },
        {"adsRechamberAnim",                   offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_ADS_RECHAMBER]),            WFT_ANIM_NAME            },
        {"adsUpAnim",                          offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_ADS_UP]),                   WFT_ANIM_NAME            },
        {"adsDownAnim",                        offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_ADS_DOWN]),                 WFT_ANIM_NAME            },
        {"deployAnim",                         offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DEPLOY]),                   WFT_ANIM_NAME            },
        {"breakdownAnim",                      offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_BREAKDOWN]),                WFT_ANIM_NAME            },
        {"dtp_in",                             offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DTP_IN]),                   WFT_ANIM_NAME            },
        {"dtp_loop",                           offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DTP_LOOP]),                 WFT_ANIM_NAME            },
        {"dtp_out",                            offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DTP_OUT]),                  WFT_ANIM_NAME            },
        {"dtp_empty_in",                       offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DTP_EMPTY_IN]),             WFT_ANIM_NAME            },
        {"dtp_empty_loop",                     offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DTP_EMPTY_LOOP]),           WFT_ANIM_NAME            },
        {"dtp_empty_out",                      offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_DTP_EMPTY_OUT]),            WFT_ANIM_NAME            },
        {"slide_in",                           offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_SLIDE_IN]),                 WFT_ANIM_NAME            },
        {"mantleAnim",                         offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_MANTLE]),                   WFT_ANIM_NAME            },
        {"sprintCameraAnim",                   offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_CAMERA_SPRINT_LOOP]),       WFT_ANIM_NAME            },
        {"dtpInCameraAnim",                    offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_CAMERA_DTP_IN]),            WFT_ANIM_NAME            },
        {"dtpLoopCameraAnim",                  offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_CAMERA_DTP_LOOP]),          WFT_ANIM_NAME            },
        {"dtpOutCameraAnim",                   offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_CAMERA_DTP_OUT]),           WFT_ANIM_NAME            },
        {"mantleCameraAnim",                   offsetof(WeaponFullDef, szXAnims[WEAP_ANIM_CAMERA_MANTLE]),            WFT_ANIM_NAME            },
        {"script",                             offsetof(WeaponFullDef, weapDef.szScript),                             CSPFT_STRING             },
        {"weaponType",                         offsetof(WeaponFullDef, weapDef.weapType),                             WFT_WEAPONTYPE           },
        {"weaponClass",                        offsetof(WeaponFullDef, weapDef.weapClass),                            WFT_WEAPONCLASS          },
        {"penetrateType",                      offsetof(WeaponFullDef, weapDef.penetrateType),                        WFT_PENETRATE_TYPE       },
        {"impactType",                         offsetof(WeaponFullDef, weapDef.impactType),                           WFT_IMPACT_TYPE          },
        {"inventoryType",                      offsetof(WeaponFullDef, weapDef.inventoryType),                        WFT_INVENTORYTYPE        },
        {"fireType",                           offsetof(WeaponFullDef, weapDef.fireType),                             WFT_FIRETYPE             },
        {"clipType",                           offsetof(WeaponFullDef, weapDef.clipType),                             WFT_CLIPTYPE             },
        {"offhandClass",                       offsetof(WeaponFullDef, weapDef.offhandClass),                         WFT_OFFHAND_CLASS        },
        {"offhandSlot",                        offsetof(WeaponFullDef, weapDef.offhandSlot),                          WFT_OFFHAND_SLOT         },
        {"viewFlashEffect",                    offsetof(WeaponFullDef, weapDef.viewFlashEffect),                      CSPFT_FX                 },
        {"worldFlashEffect",                   offsetof(WeaponFullDef, weapDef.worldFlashEffect),                     CSPFT_FX                 },
        {"pickupSound",                        offsetof(WeaponFullDef, weapDef.pickupSound),                          CSPFT_STRING             },
        {"pickupSoundPlayer",                  offsetof(WeaponFullDef, weapDef.pickupSoundPlayer),                    CSPFT_STRING             },
        {"ammoPickupSound",                    offsetof(WeaponFullDef, weapDef.ammoPickupSound),                      CSPFT_STRING             },
        {"ammoPickupSoundPlayer",              offsetof(WeaponFullDef, weapDef.ammoPickupSoundPlayer),                CSPFT_STRING             },
        {"projectileSound",                    offsetof(WeaponFullDef, weapDef.projectileSound),                      CSPFT_STRING             },
        {"pullbackSound",                      offsetof(WeaponFullDef, weapDef.pullbackSound),                        CSPFT_STRING             },
        {"pullbackSoundPlayer",                offsetof(WeaponFullDef, weapDef.pullbackSoundPlayer),                  CSPFT_STRING             },
        {"fireSound",                          offsetof(WeaponFullDef, weapDef.fireSound),                            CSPFT_STRING             },
        {"crackSound",                         offsetof(WeaponFullDef, weapDef.crackSound),                           CSPFT_STRING             },
        {"whizbySound",                        offsetof(WeaponFullDef, weapDef.whizbySound),                          CSPFT_STRING             },
        {"fireSoundPlayer",                    offsetof(WeaponFullDef, weapDef.fireSoundPlayer),                      CSPFT_STRING             },
        {"loopFireSound",                      offsetof(WeaponFullDef, weapDef.fireLoopSound),                        CSPFT_STRING             },
        {"loopFireSoundPlayer",                offsetof(WeaponFullDef, weapDef.fireLoopSoundPlayer),                  CSPFT_STRING             },
        {"loopFireEndSound",                   offsetof(WeaponFullDef, weapDef.fireLoopEndSound),                     CSPFT_STRING             },
        {"loopFireEndSoundPlayer",             offsetof(WeaponFullDef, weapDef.fireLoopEndSoundPlayer),               CSPFT_STRING             },
        {"stopFireSound",                      offsetof(WeaponFullDef, weapDef.fireStopSound),                        CSPFT_STRING             },
        {"stopFireSoundPlayer",                offsetof(WeaponFullDef, weapDef.fireStopSoundPlayer),                  CSPFT_STRING             },
        {"lastShotSound",                      offsetof(WeaponFullDef, weapDef.fireLastSound),                        CSPFT_STRING             },
        {"lastShotSoundPlayer",                offsetof(WeaponFullDef, weapDef.fireLastSoundPlayer),                  CSPFT_STRING             },
        {"emptyFireSound",                     offsetof(WeaponFullDef, weapDef.emptyFireSound),                       CSPFT_STRING             },
        {"emptyFireSoundPlayer",               offsetof(WeaponFullDef, weapDef.emptyFireSoundPlayer),                 CSPFT_STRING             },
        {"meleeSwipeSound",                    offsetof(WeaponFullDef, weapDef.meleeSwipeSound),                      CSPFT_STRING             },
        {"meleeSwipeSoundPlayer",              offsetof(WeaponFullDef, weapDef.meleeSwipeSoundPlayer),                CSPFT_STRING             },
        {"meleeHitSound",                      offsetof(WeaponFullDef, weapDef.meleeHitSound),                        CSPFT_STRING             },
        {"meleeMissSound",                     offsetof(WeaponFullDef, weapDef.meleeMissSound),                       CSPFT_STRING             },
        {"rechamberSound",                     offsetof(WeaponFullDef, weapDef.rechamberSound),                       CSPFT_STRING             },
        {"rechamberSoundPlayer",               offsetof(WeaponFullDef, weapDef.rechamberSoundPlayer),                 CSPFT_STRING             },
        {"reloadSound",                        offsetof(WeaponFullDef, weapDef.reloadSound),                          CSPFT_STRING             },
        {"reloadSoundPlayer",                  offsetof(WeaponFullDef, weapDef.reloadSoundPlayer),                    CSPFT_STRING             },
        {"reloadEmptySound",                   offsetof(WeaponFullDef, weapDef.reloadEmptySound),                     CSPFT_STRING             },
        {"reloadEmptySoundPlayer",             offsetof(WeaponFullDef, weapDef.reloadEmptySoundPlayer),               CSPFT_STRING             },
        {"reloadStartSound",                   offsetof(WeaponFullDef, weapDef.reloadStartSound),                     CSPFT_STRING             },
        {"reloadStartSoundPlayer",             offsetof(WeaponFullDef, weapDef.reloadStartSoundPlayer),               CSPFT_STRING             },
        {"reloadEndSound",                     offsetof(WeaponFullDef, weapDef.reloadEndSound),                       CSPFT_STRING             },
        {"reloadEndSoundPlayer",               offsetof(WeaponFullDef, weapDef.reloadEndSoundPlayer),                 CSPFT_STRING             },
        {"rotateLoopSound",                    offsetof(WeaponFullDef, weapDef.rotateLoopSound),                      CSPFT_STRING             },
        {"rotateLoopSoundPlayer",              offsetof(WeaponFullDef, weapDef.rotateLoopSoundPlayer),                CSPFT_STRING             },
        {"deploySound",                        offsetof(WeaponFullDef, weapDef.deploySound),                          CSPFT_STRING             },
        {"deploySoundPlayer",                  offsetof(WeaponFullDef, weapDef.deploySoundPlayer),                    CSPFT_STRING             },
        {"finishDeploySound",                  offsetof(WeaponFullDef, weapDef.finishDeploySound),                    CSPFT_STRING             },
        {"finishDeploySoundPlayer",            offsetof(WeaponFullDef, weapDef.finishDeploySoundPlayer),              CSPFT_STRING             },
        {"breakdownSound",                     offsetof(WeaponFullDef, weapDef.breakdownSound),                       CSPFT_STRING             },
        {"breakdownSoundPlayer",               offsetof(WeaponFullDef, weapDef.breakdownSoundPlayer),                 CSPFT_STRING             },
        {"finishBreakdownSound",               offsetof(WeaponFullDef, weapDef.finishBreakdownSound),                 CSPFT_STRING             },
        {"finishBreakdownSoundPlayer",         offsetof(WeaponFullDef, weapDef.finishBreakdownSoundPlayer),           CSPFT_STRING             },
        {"detonateSound",                      offsetof(WeaponFullDef, weapDef.detonateSound),                        CSPFT_STRING             },
        {"detonateSoundPlayer",                offsetof(WeaponFullDef, weapDef.detonateSoundPlayer),                  CSPFT_STRING             },
        {"nightVisionWearSound",               offsetof(WeaponFullDef, weapDef.nightVisionWearSound),                 CSPFT_STRING             },
        {"nightVisionWearSoundPlayer",         offsetof(WeaponFullDef, weapDef.nightVisionWearSoundPlayer),           CSPFT_STRING             },
        {"nightVisionRemoveSound",             offsetof(WeaponFullDef, weapDef.nightVisionRemoveSound),               CSPFT_STRING             },
        {"nightVisionRemoveSoundPlayer",       offsetof(WeaponFullDef, weapDef.nightVisionRemoveSoundPlayer),         CSPFT_STRING             },
        {"raiseSound",                         offsetof(WeaponFullDef, weapDef.raiseSound),                           CSPFT_STRING             },
        {"raiseSoundPlayer",                   offsetof(WeaponFullDef, weapDef.raiseSoundPlayer),                     CSPFT_STRING             },
        {"firstRaiseSound",                    offsetof(WeaponFullDef, weapDef.firstRaiseSound),                      CSPFT_STRING             },
        {"firstRaiseSoundPlayer",              offsetof(WeaponFullDef, weapDef.firstRaiseSoundPlayer),                CSPFT_STRING             },
        {"altSwitchSound",                     offsetof(WeaponFullDef, weapDef.altSwitchSound),                       CSPFT_STRING             },
        {"altSwitchSoundPlayer",               offsetof(WeaponFullDef, weapDef.altSwitchSoundPlayer),                 CSPFT_STRING             },
        {"putawaySound",                       offsetof(WeaponFullDef, weapDef.putawaySound),                         CSPFT_STRING             },
        {"putawaySoundPlayer",                 offsetof(WeaponFullDef, weapDef.putawaySoundPlayer),                   CSPFT_STRING             },
        {"overheatSound",                      offsetof(WeaponFullDef, weapDef.overheatSound),                        CSPFT_STRING             },
        {"overheatSoundPlayer",                offsetof(WeaponFullDef, weapDef.overheatSoundPlayer),                  CSPFT_STRING             },
        {"adsZoomSound",                       offsetof(WeaponFullDef, weapDef.adsZoomSound),                         CSPFT_STRING             },
        {"bounceSound",                        offsetof(WeaponFullDef, weapDef.bounceSound),                          WFT_BOUNCE_SOUND         },
        {"standMountedWeapdef",                offsetof(WeaponFullDef, weapDef.standMountedWeapdef),                  CSPFT_STRING             },
        {"crouchMountedWeapdef",               offsetof(WeaponFullDef, weapDef.crouchMountedWeapdef),                 CSPFT_STRING             },
        {"proneMountedWeapdef",                offsetof(WeaponFullDef, weapDef.proneMountedWeapdef),                  CSPFT_STRING             },
        {"viewShellEjectEffect",               offsetof(WeaponFullDef, weapDef.viewShellEjectEffect),                 CSPFT_FX                 },
        {"worldShellEjectEffect",              offsetof(WeaponFullDef, weapDef.worldShellEjectEffect),                CSPFT_FX                 },
        {"viewLastShotEjectEffect",            offsetof(WeaponFullDef, weapDef.viewLastShotEjectEffect),              CSPFT_FX                 },
        {"worldLastShotEjectEffect",           offsetof(WeaponFullDef, weapDef.worldLastShotEjectEffect),             CSPFT_FX                 },
        {"reticleCenter",                      offsetof(WeaponFullDef, weapDef.reticleCenter),                        CSPFT_MATERIAL           },
        {"reticleSide",                        offsetof(WeaponFullDef, weapDef.reticleSide),                          CSPFT_MATERIAL           },
        {"reticleCenterSize",                  offsetof(WeaponFullDef, weapDef.iReticleCenterSize),                   CSPFT_INT                },
        {"reticleSideSize",                    offsetof(WeaponFullDef, weapDef.iReticleSideSize),                     CSPFT_INT                },
        {"reticleMinOfs",                      offsetof(WeaponFullDef, weapDef.iReticleMinOfs),                       CSPFT_INT                },
        {"activeReticleType",                  offsetof(WeaponFullDef, weapDef.activeReticleType),                    WFT_ACTIVE_RETICLE_TYPE  },
        {"standMoveF",                         offsetof(WeaponFullDef, weapDef.vStandMove[0]),                        CSPFT_FLOAT              },
        {"standMoveR",                         offsetof(WeaponFullDef, weapDef.vStandMove[1]),                        CSPFT_FLOAT              },
        {"standMoveU",                         offsetof(WeaponFullDef, weapDef.vStandMove[2]),                        CSPFT_FLOAT              },
        {"standRotP",                          offsetof(WeaponFullDef, weapDef.vStandRot[0]),                         CSPFT_FLOAT              },
        {"standRotY",                          offsetof(WeaponFullDef, weapDef.vStandRot[1]),                         CSPFT_FLOAT              },
        {"standRotR",                          offsetof(WeaponFullDef, weapDef.vStandRot[2]),                         CSPFT_FLOAT              },
        {"duckedOfsF",                         offsetof(WeaponFullDef, weapDef.vDuckedOfs[0]),                        CSPFT_FLOAT              },
        {"duckedOfsR",                         offsetof(WeaponFullDef, weapDef.vDuckedOfs[1]),                        CSPFT_FLOAT              },
        {"duckedOfsU",                         offsetof(WeaponFullDef, weapDef.vDuckedOfs[2]),                        CSPFT_FLOAT              },
        {"duckedMoveF",                        offsetof(WeaponFullDef, weapDef.vDuckedMove[0]),                       CSPFT_FLOAT              },
        {"duckedMoveR",                        offsetof(WeaponFullDef, weapDef.vDuckedMove[1]),                       CSPFT_FLOAT              },
        {"duckedMoveU",                        offsetof(WeaponFullDef, weapDef.vDuckedMove[2]),                       CSPFT_FLOAT              },
        {"duckedSprintOfsF",                   offsetof(WeaponFullDef, weapDef.vDuckedSprintOfs[0]),                  CSPFT_FLOAT              },
        {"duckedSprintOfsR",                   offsetof(WeaponFullDef, weapDef.vDuckedSprintOfs[1]),                  CSPFT_FLOAT              },
        {"duckedSprintOfsU",                   offsetof(WeaponFullDef, weapDef.vDuckedSprintOfs[2]),                  CSPFT_FLOAT              },
        {"duckedSprintRotP",                   offsetof(WeaponFullDef, weapDef.vDuckedSprintRot[0]),                  CSPFT_FLOAT              },
        {"duckedSprintRotY",                   offsetof(WeaponFullDef, weapDef.vDuckedSprintRot[1]),                  CSPFT_FLOAT              },
        {"duckedSprintRotR",                   offsetof(WeaponFullDef, weapDef.vDuckedSprintRot[2]),                  CSPFT_FLOAT              },
        {"duckedSprintBobH",                   offsetof(WeaponFullDef, weapDef.vDuckedSprintBob[0]),                  CSPFT_FLOAT              },
        {"duckedSprintBobV",                   offsetof(WeaponFullDef, weapDef.vDuckedSprintBob[1]),                  CSPFT_FLOAT              },
        {"duckedSprintScale",                  offsetof(WeaponFullDef, weapDef.fDuckedSprintCycleScale),              CSPFT_FLOAT              },
        {"sprintOfsF",                         offsetof(WeaponFullDef, weapDef.vSprintOfs[0]),                        CSPFT_FLOAT              },
        {"sprintOfsR",                         offsetof(WeaponFullDef, weapDef.vSprintOfs[1]),                        CSPFT_FLOAT              },
        {"sprintOfsU",                         offsetof(WeaponFullDef, weapDef.vSprintOfs[2]),                        CSPFT_FLOAT              },
        {"sprintRotP",                         offsetof(WeaponFullDef, weapDef.vSprintRot[0]),                        CSPFT_FLOAT              },
        {"sprintRotY",                         offsetof(WeaponFullDef, weapDef.vSprintRot[1]),                        CSPFT_FLOAT              },
        {"sprintRotR",                         offsetof(WeaponFullDef, weapDef.vSprintRot[2]),                        CSPFT_FLOAT              },
        {"sprintBobH",                         offsetof(WeaponFullDef, weapDef.vSprintBob[0]),                        CSPFT_FLOAT              },
        {"sprintBobV",                         offsetof(WeaponFullDef, weapDef.vSprintBob[1]),                        CSPFT_FLOAT              },
        {"sprintScale",                        offsetof(WeaponFullDef, weapDef.fSprintCycleScale),                    CSPFT_FLOAT              },
        {"lowReadyOfsF",                       offsetof(WeaponFullDef, weapDef.vLowReadyOfs[0]),                      CSPFT_FLOAT              },
        {"lowReadyOfsR",                       offsetof(WeaponFullDef, weapDef.vLowReadyOfs[1]),                      CSPFT_FLOAT              },
        {"lowReadyOfsU",                       offsetof(WeaponFullDef, weapDef.vLowReadyOfs[2]),                      CSPFT_FLOAT              },
        {"lowReadyRotP",                       offsetof(WeaponFullDef, weapDef.vLowReadyRot[0]),                      CSPFT_FLOAT              },
        {"lowReadyRotY",                       offsetof(WeaponFullDef, weapDef.vLowReadyRot[1]),                      CSPFT_FLOAT              },
        {"lowReadyRotR",                       offsetof(WeaponFullDef, weapDef.vLowReadyRot[2]),                      CSPFT_FLOAT              },
        {"dtpOfsF",                            offsetof(WeaponFullDef, weapDef.vDtpOfs[0]),                           CSPFT_FLOAT              },
        {"dtpOfsR",                            offsetof(WeaponFullDef, weapDef.vDtpOfs[1]),                           CSPFT_FLOAT              },
        {"dtpOfsU",                            offsetof(WeaponFullDef, weapDef.vDtpOfs[2]),                           CSPFT_FLOAT              },
        {"dtpRotP",                            offsetof(WeaponFullDef, weapDef.vDtpRot[0]),                           CSPFT_FLOAT              },
        {"dtpRotY",                            offsetof(WeaponFullDef, weapDef.vDtpRot[1]),                           CSPFT_FLOAT              },
        {"dtpRotR",                            offsetof(WeaponFullDef, weapDef.vDtpRot[2]),                           CSPFT_FLOAT              },
        {"dtpBobH",                            offsetof(WeaponFullDef, weapDef.vDtpBob[0]),                           CSPFT_FLOAT              },
        {"dtpBobV",                            offsetof(WeaponFullDef, weapDef.vDtpBob[1]),                           CSPFT_FLOAT              },
        {"dtpScale",                           offsetof(WeaponFullDef, weapDef.fDtpCycleScale),                       CSPFT_FLOAT              },
        {"mantleOfsF",                         offsetof(WeaponFullDef, weapDef.vMantleOfs[0]),                        CSPFT_FLOAT              },
        {"mantleOfsR",                         offsetof(WeaponFullDef, weapDef.vMantleOfs[1]),                        CSPFT_FLOAT              },
        {"mantleOfsU",                         offsetof(WeaponFullDef, weapDef.vMantleOfs[2]),                        CSPFT_FLOAT              },
        {"mantleRotP",                         offsetof(WeaponFullDef, weapDef.vMantleRot[0]),                        CSPFT_FLOAT              },
        {"mantleRotY",                         offsetof(WeaponFullDef, weapDef.vMantleRot[1]),                        CSPFT_FLOAT              },
        {"mantleRotR",                         offsetof(WeaponFullDef, weapDef.vMantleRot[2]),                        CSPFT_FLOAT              },
        {"slideOfsF",                          offsetof(WeaponFullDef, weapDef.vSlideOfs[0]),                         CSPFT_FLOAT              },
        {"slideOfsR",                          offsetof(WeaponFullDef, weapDef.vSlideOfs[1]),                         CSPFT_FLOAT              },
        {"slideOfsU",                          offsetof(WeaponFullDef, weapDef.vSlideOfs[2]),                         CSPFT_FLOAT              },
        {"slideRotP",                          offsetof(WeaponFullDef, weapDef.vSlideRot[0]),                         CSPFT_FLOAT              },
        {"slideRotY",                          offsetof(WeaponFullDef, weapDef.vSlideRot[1]),                         CSPFT_FLOAT              },
        {"slideRotR",                          offsetof(WeaponFullDef, weapDef.vSlideRot[2]),                         CSPFT_FLOAT              },
        {"duckedRotP",                         offsetof(WeaponFullDef, weapDef.vDuckedRot[0]),                        CSPFT_FLOAT              },
        {"duckedRotY",                         offsetof(WeaponFullDef, weapDef.vDuckedRot[1]),                        CSPFT_FLOAT              },
        {"duckedRotR",                         offsetof(WeaponFullDef, weapDef.vDuckedRot[2]),                        CSPFT_FLOAT              },
        {"proneOfsF",                          offsetof(WeaponFullDef, weapDef.vProneOfs[0]),                         CSPFT_FLOAT              },
        {"proneOfsR",                          offsetof(WeaponFullDef, weapDef.vProneOfs[1]),                         CSPFT_FLOAT              },
        {"proneOfsU",                          offsetof(WeaponFullDef, weapDef.vProneOfs[2]),                         CSPFT_FLOAT              },
        {"proneMoveF",                         offsetof(WeaponFullDef, weapDef.vProneMove[0]),                        CSPFT_FLOAT              },
        {"proneMoveR",                         offsetof(WeaponFullDef, weapDef.vProneMove[1]),                        CSPFT_FLOAT              },
        {"proneMoveU",                         offsetof(WeaponFullDef, weapDef.vProneMove[2]),                        CSPFT_FLOAT              },
        {"proneRotP",                          offsetof(WeaponFullDef, weapDef.vProneRot[0]),                         CSPFT_FLOAT              },
        {"proneRotY",                          offsetof(WeaponFullDef, weapDef.vProneRot[1]),                         CSPFT_FLOAT              },
        {"proneRotR",                          offsetof(WeaponFullDef, weapDef.vProneRot[2]),                         CSPFT_FLOAT              },
        {"strafeMoveF",                        offsetof(WeaponFullDef, weapDef.vStrafeMove[0]),                       CSPFT_FLOAT              },
        {"strafeMoveR",                        offsetof(WeaponFullDef, weapDef.vStrafeMove[1]),                       CSPFT_FLOAT              },
        {"strafeMoveU",                        offsetof(WeaponFullDef, weapDef.vStrafeMove[2]),                       CSPFT_FLOAT              },
        {"strafeRotP",                         offsetof(WeaponFullDef, weapDef.vStrafeRot[0]),                        CSPFT_FLOAT              },
        {"strafeRotY",                         offsetof(WeaponFullDef, weapDef.vStrafeRot[1]),                        CSPFT_FLOAT              },
        {"strafeRotR",                         offsetof(WeaponFullDef, weapDef.vStrafeRot[2]),                        CSPFT_FLOAT              },
        {"posMoveRate",                        offsetof(WeaponFullDef, weapDef.fPosMoveRate),                         CSPFT_FLOAT              },
        {"posProneMoveRate",                   offsetof(WeaponFullDef, weapDef.fPosProneMoveRate),                    CSPFT_FLOAT              },
        {"standMoveMinSpeed",                  offsetof(WeaponFullDef, weapDef.fStandMoveMinSpeed),                   CSPFT_FLOAT              },
        {"duckedMoveMinSpeed",                 offsetof(WeaponFullDef, weapDef.fDuckedMoveMinSpeed),                  CSPFT_FLOAT              },
        {"proneMoveMinSpeed",                  offsetof(WeaponFullDef, weapDef.fProneMoveMinSpeed),                   CSPFT_FLOAT              },
        {"posRotRate",                         offsetof(WeaponFullDef, weapDef.fPosRotRate),                          CSPFT_FLOAT              },
        {"posProneRotRate",                    offsetof(WeaponFullDef, weapDef.fPosProneRotRate),                     CSPFT_FLOAT              },
        {"standRotMinSpeed",                   offsetof(WeaponFullDef, weapDef.fStandRotMinSpeed),                    CSPFT_FLOAT              },
        {"duckedRotMinSpeed",                  offsetof(WeaponFullDef, weapDef.fDuckedRotMinSpeed),                   CSPFT_FLOAT              },
        {"proneRotMinSpeed",                   offsetof(WeaponFullDef, weapDef.fProneRotMinSpeed),                    CSPFT_FLOAT              },
        {"worldModel",                         offsetof(WeaponFullDef, worldModel[0]),                                CSPFT_XMODEL             },
        {"worldModel2",                        offsetof(WeaponFullDef, worldModel[1]),                                CSPFT_XMODEL             },
        {"worldModel3",                        offsetof(WeaponFullDef, worldModel[2]),                                CSPFT_XMODEL             },
        {"worldModel4",                        offsetof(WeaponFullDef, worldModel[3]),                                CSPFT_XMODEL             },
        {"worldModel5",                        offsetof(WeaponFullDef, worldModel[4]),                                CSPFT_XMODEL             },
        {"worldModel6",                        offsetof(WeaponFullDef, worldModel[5]),                                CSPFT_XMODEL             },
        {"worldModel7",                        offsetof(WeaponFullDef, worldModel[6]),                                CSPFT_XMODEL             },
        {"worldModel8",                        offsetof(WeaponFullDef, worldModel[7]),                                CSPFT_XMODEL             },
        {"worldModel9",                        offsetof(WeaponFullDef, worldModel[8]),                                CSPFT_XMODEL             },
        {"worldModel10",                       offsetof(WeaponFullDef, worldModel[9]),                                CSPFT_XMODEL             },
        {"worldModel11",                       offsetof(WeaponFullDef, worldModel[10]),                               CSPFT_XMODEL             },
        {"worldModel12",                       offsetof(WeaponFullDef, worldModel[11]),                               CSPFT_XMODEL             },
        {"worldModel13",                       offsetof(WeaponFullDef, worldModel[12]),                               CSPFT_XMODEL             },
        {"worldModel14",                       offsetof(WeaponFullDef, worldModel[13]),                               CSPFT_XMODEL             },
        {"worldModel15",                       offsetof(WeaponFullDef, worldModel[14]),                               CSPFT_XMODEL             },
        {"worldModel16",                       offsetof(WeaponFullDef, worldModel[15]),                               CSPFT_XMODEL             },
        {"worldClipModel",                     offsetof(WeaponFullDef, weapDef.worldClipModel),                       CSPFT_XMODEL             },
        {"rocketModel",                        offsetof(WeaponFullDef, weapDef.rocketModel),                          CSPFT_XMODEL             },
        {"mountedModel",                       offsetof(WeaponFullDef, weapDef.mountedModel),                         CSPFT_XMODEL             },
        {"AdditionalMeleeModel",               offsetof(WeaponFullDef, weapDef.additionalMeleeModel),                 CSPFT_XMODEL             },
        {"hudIcon",                            offsetof(WeaponFullDef, weapDef.hudIcon),                              CSPFT_MATERIAL           },
        {"hudIconRatio",                       offsetof(WeaponFullDef, weapDef.hudIconRatio),                         WFT_ICONRATIO_HUD        },
        {"indicatorIcon",                      offsetof(WeaponFullDef, weapDef.indicatorIcon),                        CSPFT_MATERIAL           },
        {"indicatorIconRatio",                 offsetof(WeaponFullDef, weapDef.indicatorIconRatio),                   WFT_ICONRATIO_INDICATOR  },
        {"ammoCounterIcon",                    offsetof(WeaponFullDef, weapDef.ammoCounterIcon),                      CSPFT_MATERIAL           },
        {"ammoCounterIconRatio",               offsetof(WeaponFullDef, weapDef.ammoCounterIconRatio),                 WFT_ICONRATIO_AMMOCOUNTER},
        {"ammoCounterClip",                    offsetof(WeaponFullDef, weapDef.ammoCounterClip),                      WFT_AMMOCOUNTER_CLIPTYPE },
        {"startAmmo",                          offsetof(WeaponFullDef, weapDef.iStartAmmo),                           CSPFT_INT                },
        {"ammoName",                           offsetof(WeaponFullDef, weapVariantDef.szAmmoName),                    CSPFT_STRING             },
        {"clipName",                           offsetof(WeaponFullDef, weapVariantDef.szClipName),                    CSPFT_STRING             },
        {"maxAmmo",                            offsetof(WeaponFullDef, weapDef.iMaxAmmo),                             CSPFT_INT                },
        {"clipSize",                           offsetof(WeaponFullDef, weapVariantDef.iClipSize),                     CSPFT_INT                },
        {"shotCount",                          offsetof(WeaponFullDef, weapDef.shotCount),                            CSPFT_INT                },
        {"sharedAmmoCapName",                  offsetof(WeaponFullDef, weapDef.szSharedAmmoCapName),                  CSPFT_STRING             },
        {"sharedAmmoCap",                      offsetof(WeaponFullDef, weapDef.iSharedAmmoCap),                       CSPFT_INT                },
        {"unlimitedAmmo",                      offsetof(WeaponFullDef, weapDef.unlimitedAmmo),                        CSPFT_BOOL               },
        {"ammoCountClipRelative",              offsetof(WeaponFullDef, weapDef.ammoCountClipRelative),                CSPFT_BOOL               },
        {"sharedAmmo",                         offsetof(WeaponFullDef, weapDef.sharedAmmo),                           CSPFT_BOOL               },
        {"jamFireTime",                        offsetof(WeaponFullDef, weapDef.iJamFireTime),                         CSPFT_MILLISECONDS       },
        {"overheatWeapon",                     offsetof(WeaponFullDef, weapDef.overheatWeapon),                       CSPFT_INT                },
        {"overheatRate",                       offsetof(WeaponFullDef, weapDef.overheatRate),                         CSPFT_FLOAT              },
        {"cooldownRate",                       offsetof(WeaponFullDef, weapDef.cooldownRate),                         CSPFT_FLOAT              },
        {"overheatEndVal",                     offsetof(WeaponFullDef, weapDef.overheatEndVal),                       CSPFT_FLOAT              },
        {"coolWhileFiring",                    offsetof(WeaponFullDef, weapDef.coolWhileFiring),                      CSPFT_INT                },
        {"fuelTankWeapon",                     offsetof(WeaponFullDef, weapDef.fuelTankWeapon),                       CSPFT_INT                },
        {"tankLifeTime",                       offsetof(WeaponFullDef, weapDef.iTankLifeTime),                        CSPFT_MILLISECONDS       },
        {"damage",                             offsetof(WeaponFullDef, weapDef.damage),                               CSPFT_INT                },
        {"damageDuration",                     offsetof(WeaponFullDef, weapDef.damageDuration),                       CSPFT_FLOAT              },
        {"damageInterval",                     offsetof(WeaponFullDef, weapDef.damageInterval),                       CSPFT_FLOAT              },
        {"playerDamage",                       offsetof(WeaponFullDef, weapDef.playerDamage),                         CSPFT_INT                },
        {"meleeDamage",                        offsetof(WeaponFullDef, weapDef.iMeleeDamage),                         CSPFT_INT                },
        {"minDamage",                          offsetof(WeaponFullDef, weapDef.minDamage),                            CSPFT_INT                },
        {"minPlayerDamage",                    offsetof(WeaponFullDef, weapDef.minPlayerDamage),                      CSPFT_INT                },
        {"maxDamageRange",                     offsetof(WeaponFullDef, weapDef.fMaxDamageRange),                      CSPFT_FLOAT              },
        {"minDamageRange",                     offsetof(WeaponFullDef, weapDef.fMinDamageRange),                      CSPFT_FLOAT              },
        {"destabilizationRateTime",            offsetof(WeaponFullDef, weapDef.destabilizationRateTime),              CSPFT_FLOAT              },
        {"destabilizationCurvatureMax",        offsetof(WeaponFullDef, weapDef.destabilizationCurvatureMax),          CSPFT_FLOAT              },
        {"destabilizeDistance",                offsetof(WeaponFullDef, weapDef.destabilizeDistance),                  CSPFT_INT                },
        {"fireDelay",                          offsetof(WeaponFullDef, weapDef.iFireDelay),                           CSPFT_MILLISECONDS       },
        {"meleeDelay",                         offsetof(WeaponFullDef, weapDef.iMeleeDelay),                          CSPFT_MILLISECONDS       },
        {"meleeChargeDelay",                   offsetof(WeaponFullDef, weapDef.meleeChargeDelay),                     CSPFT_MILLISECONDS       },
        {"spinUpTime",                         offsetof(WeaponFullDef, weapDef.iSpinUpTime),                          CSPFT_MILLISECONDS       },
        {"spinDownTime",                       offsetof(WeaponFullDef, weapDef.iSpinDownTime),                        CSPFT_MILLISECONDS       },
        {"spinRate",                           offsetof(WeaponFullDef, weapDef.spinRate),                             CSPFT_FLOAT              },
        {"spinLoopSound",                      offsetof(WeaponFullDef, weapDef.spinLoopSound),                        CSPFT_STRING             },
        {"spinLoopSoundPlayer",                offsetof(WeaponFullDef, weapDef.spinLoopSoundPlayer),                  CSPFT_STRING             },
        {"startSpinSound",                     offsetof(WeaponFullDef, weapDef.startSpinSound),                       CSPFT_STRING             },
        {"startSpinSoundPlayer",               offsetof(WeaponFullDef, weapDef.startSpinSoundPlayer),                 CSPFT_STRING             },
        {"stopSpinSound",                      offsetof(WeaponFullDef, weapDef.stopSpinSound),                        CSPFT_STRING             },
        {"stopSpinSoundPlayer",                offsetof(WeaponFullDef, weapDef.stopSpinSoundPlayer),                  CSPFT_STRING             },
        {"fireTime",                           offsetof(WeaponFullDef, weapDef.iFireTime),                            CSPFT_MILLISECONDS       },
        {"lastFireTime",                       offsetof(WeaponFullDef, weapDef.iLastFireTime),                        CSPFT_MILLISECONDS       },
        {"rechamberTime",                      offsetof(WeaponFullDef, weapDef.iRechamberTime),                       CSPFT_MILLISECONDS       },
        {"rechamberBoltTime",                  offsetof(WeaponFullDef, weapDef.iRechamberBoltTime),                   CSPFT_MILLISECONDS       },
        {"holdFireTime",                       offsetof(WeaponFullDef, weapDef.iHoldFireTime),                        CSPFT_MILLISECONDS       },
        {"detonateTime",                       offsetof(WeaponFullDef, weapDef.iDetonateTime),                        CSPFT_MILLISECONDS       },
        {"detonateDelay",                      offsetof(WeaponFullDef, weapDef.iDetonateDelay),                       CSPFT_MILLISECONDS       },
        {"meleeTime",                          offsetof(WeaponFullDef, weapDef.iMeleeTime),                           CSPFT_MILLISECONDS       },
        {"meleeChargeTime",                    offsetof(WeaponFullDef, weapDef.meleeChargeTime),                      CSPFT_MILLISECONDS       },
        {"reloadTime",                         offsetof(WeaponFullDef, weapVariantDef.iReloadTime),                   CSPFT_MILLISECONDS       },
        {"reloadShowRocketTime",               offsetof(WeaponFullDef, weapDef.reloadShowRocketTime),                 CSPFT_MILLISECONDS       },
        {"reloadEmptyTime",                    offsetof(WeaponFullDef, weapVariantDef.iReloadEmptyTime),              CSPFT_MILLISECONDS       },
        {"reloadAddTime",                      offsetof(WeaponFullDef, weapDef.iReloadAddTime),                       CSPFT_MILLISECONDS       },
        {"reloadEmptyAddTime",                 offsetof(WeaponFullDef, weapDef.iReloadEmptyAddTime),                  CSPFT_MILLISECONDS       },
        {"reloadQuickAddTime",                 offsetof(WeaponFullDef, weapDef.iReloadQuickAddTime),                  CSPFT_MILLISECONDS       },
        {"reloadQuickEmptyAddTime",            offsetof(WeaponFullDef, weapDef.iReloadQuickEmptyAddTime),             CSPFT_MILLISECONDS       },
        {"reloadStartTime",                    offsetof(WeaponFullDef, weapDef.iReloadStartTime),                     CSPFT_MILLISECONDS       },
        {"reloadStartAddTime",                 offsetof(WeaponFullDef, weapDef.iReloadStartAddTime),                  CSPFT_MILLISECONDS       },
        {"reloadEndTime",                      offsetof(WeaponFullDef, weapDef.iReloadEndTime),                       CSPFT_MILLISECONDS       },
        {"reloadQuickTime",                    offsetof(WeaponFullDef, weapVariantDef.iReloadQuickTime),              CSPFT_MILLISECONDS       },
        {"reloadQuickEmptyTime",               offsetof(WeaponFullDef, weapVariantDef.iReloadQuickEmptyTime),         CSPFT_MILLISECONDS       },
        {"dropTime",                           offsetof(WeaponFullDef, weapDef.iDropTime),                            CSPFT_MILLISECONDS       },
        {"raiseTime",                          offsetof(WeaponFullDef, weapDef.iRaiseTime),                           CSPFT_MILLISECONDS       },
        {"altDropTime",                        offsetof(WeaponFullDef, weapDef.iAltDropTime),                         CSPFT_MILLISECONDS       },
        {"altRaiseTime",                       offsetof(WeaponFullDef, weapVariantDef.iAltRaiseTime),                 CSPFT_MILLISECONDS       },
        {"quickDropTime",                      offsetof(WeaponFullDef, weapDef.quickDropTime),                        CSPFT_MILLISECONDS       },
        {"quickRaiseTime",                     offsetof(WeaponFullDef, weapDef.quickRaiseTime),                       CSPFT_MILLISECONDS       },
        {"firstRaiseTime",                     offsetof(WeaponFullDef, weapDef.iFirstRaiseTime),                      CSPFT_MILLISECONDS       },
        {"emptyRaiseTime",                     offsetof(WeaponFullDef, weapDef.iEmptyRaiseTime),                      CSPFT_MILLISECONDS       },
        {"emptyDropTime",                      offsetof(WeaponFullDef, weapDef.iEmptyDropTime),                       CSPFT_MILLISECONDS       },
        {"sprintInTime",                       offsetof(WeaponFullDef, weapDef.sprintInTime),                         CSPFT_MILLISECONDS       },
        {"sprintLoopTime",                     offsetof(WeaponFullDef, weapDef.sprintLoopTime),                       CSPFT_MILLISECONDS       },
        {"sprintOutTime",                      offsetof(WeaponFullDef, weapDef.sprintOutTime),                        CSPFT_MILLISECONDS       },
        {"lowReadyInTime",                     offsetof(WeaponFullDef, weapDef.lowReadyInTime),                       CSPFT_MILLISECONDS       },
        {"lowReadyLoopTime",                   offsetof(WeaponFullDef, weapDef.lowReadyLoopTime),                     CSPFT_MILLISECONDS       },
        {"lowReadyOutTime",                    offsetof(WeaponFullDef, weapDef.lowReadyOutTime),                      CSPFT_MILLISECONDS       },
        {"contFireInTime",                     offsetof(WeaponFullDef, weapDef.contFireInTime),                       CSPFT_MILLISECONDS       },
        {"contFireLoopTime",                   offsetof(WeaponFullDef, weapDef.contFireLoopTime),                     CSPFT_MILLISECONDS       },
        {"contFireOutTime",                    offsetof(WeaponFullDef, weapDef.contFireOutTime),                      CSPFT_MILLISECONDS       },
        {"dtpInTime",                          offsetof(WeaponFullDef, weapDef.dtpInTime),                            CSPFT_MILLISECONDS       },
        {"dtpLoopTime",                        offsetof(WeaponFullDef, weapDef.dtpLoopTime),                          CSPFT_MILLISECONDS       },
        {"dtpOutTime",                         offsetof(WeaponFullDef, weapDef.dtpOutTime),                           CSPFT_MILLISECONDS       },
        {"slideInTime",                        offsetof(WeaponFullDef, weapDef.slideInTime),                          CSPFT_MILLISECONDS       },
        {"deployTime",                         offsetof(WeaponFullDef, weapDef.deployTime),                           CSPFT_MILLISECONDS       },
        {"breakdownTime",                      offsetof(WeaponFullDef, weapDef.breakdownTime),                        CSPFT_MILLISECONDS       },
        {"tracerFrequency",                    offsetof(WeaponFullDef, weapDef.tracerFrequency),                      CSPFT_INT                },
        {"tracerWidth",                        offsetof(WeaponFullDef, weapDef.tracerWidth),                          CSPFT_FLOAT              },
        {"tracerLength",                       offsetof(WeaponFullDef, weapDef.tracerLength),                         CSPFT_FLOAT              },
        {"nightVisionWearTime",                offsetof(WeaponFullDef, weapDef.nightVisionWearTime),                  CSPFT_MILLISECONDS       },
        {"nightVisionWearTimeFadeOutEnd",      offsetof(WeaponFullDef, weapDef.nightVisionWearTimeFadeOutEnd),        CSPFT_MILLISECONDS       },
        {"nightVisionWearTimePowerUp",         offsetof(WeaponFullDef, weapDef.nightVisionWearTimePowerUp),           CSPFT_MILLISECONDS       },
        {"nightVisionRemoveTime",              offsetof(WeaponFullDef, weapDef.nightVisionRemoveTime),                CSPFT_MILLISECONDS       },
        {"nightVisionRemoveTimePowerDown",     offsetof(WeaponFullDef, weapDef.nightVisionRemoveTimePowerDown),       CSPFT_MILLISECONDS       },
        {"nightVisionRemoveTimeFadeInStart",   offsetof(WeaponFullDef, weapDef.nightVisionRemoveTimeFadeInStart),     CSPFT_MILLISECONDS       },
        {"fuseTime",                           offsetof(WeaponFullDef, weapDef.fuseTime),                             CSPFT_MILLISECONDS       },
        {"aifuseTime",                         offsetof(WeaponFullDef, weapDef.aiFuseTime),                           CSPFT_MILLISECONDS       },
        {"lockOnRadius",                       offsetof(WeaponFullDef, weapDef.lockOnRadius),                         CSPFT_INT                },
        {"lockOnSpeed",                        offsetof(WeaponFullDef, weapDef.lockOnSpeed),                          CSPFT_INT                },
        {"requireLockonToFire",                offsetof(WeaponFullDef, weapDef.requireLockonToFire),                  CSPFT_BOOL               },
        {"noAdsWhenMagEmpty",                  offsetof(WeaponFullDef, weapDef.noAdsWhenMagEmpty),                    CSPFT_BOOL               },
        {"avoidDropCleanup",                   offsetof(WeaponFullDef, weapDef.avoidDropCleanup),                     CSPFT_BOOL               },
        {"stackFire",                          offsetof(WeaponFullDef, weapDef.stackFire),                            CSPFT_INT                },
        {"stackFireSpread",                    offsetof(WeaponFullDef, weapDef.stackFireSpread),                      CSPFT_FLOAT              },
        {"stackFireAccuracyDecay",             offsetof(WeaponFullDef, weapDef.stackFireAccuracyDecay),               CSPFT_FLOAT              },
        {"stackSound",                         offsetof(WeaponFullDef, weapDef.stackSound),                           CSPFT_STRING             },
        {"autoAimRange",                       offsetof(WeaponFullDef, weapDef.autoAimRange),                         CSPFT_FLOAT              },
        {"aimAssistRange",                     offsetof(WeaponFullDef, weapDef.aimAssistRange),                       CSPFT_FLOAT              },
        {"aimAssistRangeAds",                  offsetof(WeaponFullDef, weapVariantDef.fAimAssistRangeAds),            CSPFT_FLOAT              },
        {"mountableWeapon",                    offsetof(WeaponFullDef, weapDef.mountableWeapon),                      CSPFT_BOOL               },
        {"aimPadding",                         offsetof(WeaponFullDef, weapDef.aimPadding),                           CSPFT_FLOAT              },
        {"enemyCrosshairRange",                offsetof(WeaponFullDef, weapDef.enemyCrosshairRange),                  CSPFT_FLOAT              },
        {"crosshairColorChange",               offsetof(WeaponFullDef, weapDef.crosshairColorChange),                 CSPFT_BOOL               },
        {"moveSpeedScale",                     offsetof(WeaponFullDef, weapDef.moveSpeedScale),                       CSPFT_FLOAT              },
        {"adsMoveSpeedScale",                  offsetof(WeaponFullDef, weapDef.adsMoveSpeedScale),                    CSPFT_FLOAT              },
        {"sprintDurationScale",                offsetof(WeaponFullDef, weapDef.sprintDurationScale),                  CSPFT_FLOAT              },
        {"idleCrouchFactor",                   offsetof(WeaponFullDef, weapDef.fIdleCrouchFactor),                    CSPFT_FLOAT              },
        {"idleProneFactor",                    offsetof(WeaponFullDef, weapDef.fIdleProneFactor),                     CSPFT_FLOAT              },
        {"gunMaxPitch",                        offsetof(WeaponFullDef, weapDef.fGunMaxPitch),                         CSPFT_FLOAT              },
        {"gunMaxYaw",                          offsetof(WeaponFullDef, weapDef.fGunMaxYaw),                           CSPFT_FLOAT              },
        {"swayMaxAngle",                       offsetof(WeaponFullDef, weapDef.swayMaxAngle),                         CSPFT_FLOAT              },
        {"swayLerpSpeed",                      offsetof(WeaponFullDef, weapDef.swayLerpSpeed),                        CSPFT_FLOAT              },
        {"swayPitchScale",                     offsetof(WeaponFullDef, weapDef.swayPitchScale),                       CSPFT_FLOAT              },
        {"swayYawScale",                       offsetof(WeaponFullDef, weapDef.swayYawScale),                         CSPFT_FLOAT              },
        {"swayHorizScale",                     offsetof(WeaponFullDef, weapDef.swayHorizScale),                       CSPFT_FLOAT              },
        {"swayVertScale",                      offsetof(WeaponFullDef, weapDef.swayVertScale),                        CSPFT_FLOAT              },
        {"swayShellShockScale",                offsetof(WeaponFullDef, weapDef.swayShellShockScale),                  CSPFT_FLOAT              },
        {"adsSwayMaxAngle",                    offsetof(WeaponFullDef, weapDef.adsSwayMaxAngle),                      CSPFT_FLOAT              },
        {"adsSwayLerpSpeed",                   offsetof(WeaponFullDef, weapDef.adsSwayLerpSpeed),                     CSPFT_FLOAT              },
        {"adsSwayPitchScale",                  offsetof(WeaponFullDef, weapDef.adsSwayPitchScale),                    CSPFT_FLOAT              },
        {"adsSwayYawScale",                    offsetof(WeaponFullDef, weapDef.adsSwayYawScale),                      CSPFT_FLOAT              },
        {"adsSwayHorizScale",                  offsetof(WeaponFullDef, weapVariantDef.fAdsSwayHorizScale),            CSPFT_FLOAT              },
        {"adsSwayVertScale",                   offsetof(WeaponFullDef, weapVariantDef.fAdsSwayVertScale),             CSPFT_FLOAT              },
        {"meleeChargeRange",                   offsetof(WeaponFullDef, weapDef.meleeChargeRange),                     CSPFT_FLOAT              },
        {"rifleBullet",                        offsetof(WeaponFullDef, weapDef.bRifleBullet),                         CSPFT_BOOL               },
        {"armorPiercing",                      offsetof(WeaponFullDef, weapDef.armorPiercing),                        CSPFT_BOOL               },
        {"boltAction",                         offsetof(WeaponFullDef, weapDef.bBoltAction),                          CSPFT_BOOL               },
        {"useAltTagFlash",                     offsetof(WeaponFullDef, weapDef.bUseAltTagFlash),                      CSPFT_BOOL               },
        {"useAntiLagRewind",                   offsetof(WeaponFullDef, weapDef.bUseAntiLagRewind),                    CSPFT_BOOL               },
        {"isCarriedKillstreakWeapon",          offsetof(WeaponFullDef, weapDef.bIsCarriedKillstreakWeapon),           CSPFT_BOOL               },
        {"aimDownSight",                       offsetof(WeaponFullDef, weapDef.aimDownSight),                         CSPFT_BOOL               },
        {"rechamberWhileAds",                  offsetof(WeaponFullDef, weapDef.bRechamberWhileAds),                   CSPFT_BOOL               },
        {"reloadWhileAds",                     offsetof(WeaponFullDef, weapDef.bReloadWhileAds),                      CSPFT_BOOL               },
        {"adsViewErrorMin",                    offsetof(WeaponFullDef, weapDef.adsViewErrorMin),                      CSPFT_FLOAT              },
        {"adsViewErrorMax",                    offsetof(WeaponFullDef, weapDef.adsViewErrorMax),                      CSPFT_FLOAT              },
        {"clipOnly",                           offsetof(WeaponFullDef, weapDef.bClipOnly),                            CSPFT_BOOL               },
        {"canUseInVehicle",                    offsetof(WeaponFullDef, weapDef.bCanUseInVehicle),                     CSPFT_BOOL               },
        {"noDropsOrRaises",                    offsetof(WeaponFullDef, weapDef.bNoDropsOrRaises),                     CSPFT_BOOL               },
        {"cookOffHold",                        offsetof(WeaponFullDef, weapDef.bCookOffHold),                         CSPFT_BOOL               },
        {"adsFire",                            offsetof(WeaponFullDef, weapDef.adsFireOnly),                          CSPFT_BOOL               },
        {"cancelAutoHolsterWhenEmpty",         offsetof(WeaponFullDef, weapDef.cancelAutoHolsterWhenEmpty),           CSPFT_BOOL               },
        {"suppressAmmoReserveDisplay",         offsetof(WeaponFullDef, weapDef.suppressAmmoReserveDisplay),           CSPFT_BOOL               },
        {"laserSightDuringNightvision",        offsetof(WeaponFullDef, weapDef.laserSightDuringNightvision),          CSPFT_BOOL               },
        {"bayonet",                            offsetof(WeaponFullDef, weapDef.bHasBayonet),                          CSPFT_BOOL               },
        {"dualWield",                          offsetof(WeaponFullDef, weapDef.bDualWield),                           CSPFT_BOOL               },
        {"hideThirdPerson",                    offsetof(WeaponFullDef, weapDef.bHideThirdPerson),                     CSPFT_BOOL               },
        {"explodeOnGround",                    offsetof(WeaponFullDef, weapDef.bExplodeOnGround),                     CSPFT_BOOL               },
        {"throwBack",                          offsetof(WeaponFullDef, weapDef.bThrowBack),                           CSPFT_BOOL               },
        {"retrievable",                        offsetof(WeaponFullDef, weapDef.bRetrievable),                         CSPFT_BOOL               },
        {"dieOnRespawn",                       offsetof(WeaponFullDef, weapDef.bDieOnRespawn),                        CSPFT_BOOL               },
        {"noThirdPersonDropsOrRaises",         offsetof(WeaponFullDef, weapDef.bNoThirdPersonDropsOrRaises),          CSPFT_BOOL               },
        {"continuousFire",                     offsetof(WeaponFullDef, weapDef.bContinuousFire),                      CSPFT_BOOL               },
        {"fullMetalJacket",                    offsetof(WeaponFullDef, weapVariantDef.bFullMetalJacket),              CSPFT_BOOL               },
        {"hollowPoint",                        offsetof(WeaponFullDef, weapVariantDef.bHollowPoint),                  CSPFT_BOOL               },
        {"useAsMelee",                         offsetof(WeaponFullDef, weapDef.bUseAsMelee),                          CSPFT_BOOL               },
        {"rapidFire",                          offsetof(WeaponFullDef, weapVariantDef.bRapidFire),                    CSPFT_BOOL               },
        {"noPing",                             offsetof(WeaponFullDef, weapDef.bNoPing),                              CSPFT_BOOL               },
        {"forceBounce",                        offsetof(WeaponFullDef, weapDef.bForceBounce),                         CSPFT_BOOL               },
        {"useDroppedModelAsStowed",            offsetof(WeaponFullDef, weapDef.bUseDroppedModelAsStowed),             CSPFT_BOOL               },
        {"noQuickDropWhenEmpty",               offsetof(WeaponFullDef, weapDef.bNoQuickDropWhenEmpty),                CSPFT_BOOL               },
        {"keepCrosshairWhenADS",               offsetof(WeaponFullDef, weapDef.bKeepCrosshairWhenADS),                CSPFT_BOOL               },
        {"useOnlyAltWeaoponHideTagsInAltMode", offsetof(WeaponFullDef, weapDef.bUseOnlyAltWeaoponHideTagsInAltMode),  CSPFT_BOOL               },
        {"killIcon",                           offsetof(WeaponFullDef, weapDef.killIcon),                             CSPFT_MATERIAL           },
        {"killIconRatio",                      offsetof(WeaponFullDef, weapDef.killIconRatio),                        WFT_ICONRATIO_KILL       },
        {"flipKillIcon",                       offsetof(WeaponFullDef, weapDef.flipKillIcon),                         CSPFT_BOOL               },
        {"dpadIcon",                           offsetof(WeaponFullDef, weapVariantDef.dpadIcon),                      CSPFT_MATERIAL           },
        {"dpadIconRatio",                      offsetof(WeaponFullDef, weapVariantDef.dpadIconRatio),                 WFT_ICONRATIO_DPAD       },
        {"noPartialReload",                    offsetof(WeaponFullDef, weapDef.bNoPartialReload),                     CSPFT_BOOL               },
        {"segmentedReload",                    offsetof(WeaponFullDef, weapDef.bSegmentedReload),                     CSPFT_BOOL               },
        {"noADSAutoReload",                    offsetof(WeaponFullDef, weapDef.bNoADSAutoReload),                     CSPFT_BOOL               },
        {"reloadAmmoAdd",                      offsetof(WeaponFullDef, weapDef.iReloadAmmoAdd),                       CSPFT_INT                },
        {"reloadStartAdd",                     offsetof(WeaponFullDef, weapDef.iReloadStartAdd),                      CSPFT_INT                },
        {"altWeapon",                          offsetof(WeaponFullDef, weapVariantDef.szAltWeaponName),               CSPFT_STRING             },
        {"DualWieldWeapon",                    offsetof(WeaponFullDef, weapDef.szDualWieldWeaponName),                CSPFT_STRING             },
        {"grenadeWeapon",                      offsetof(WeaponFullDef, weapDef.szSpawnedGrenadeWeaponName),           CSPFT_STRING             },
        {"dropAmmoMin",                        offsetof(WeaponFullDef, weapDef.iDropAmmoMin),                         CSPFT_INT                },
        {"dropAmmoMax",                        offsetof(WeaponFullDef, weapDef.iDropAmmoMax),                         CSPFT_INT                },
        {"dropClipAmmoMin",                    offsetof(WeaponFullDef, weapDef.iDropClipAmmoMin),                     CSPFT_INT                },
        {"dropClipAmmoMax",                    offsetof(WeaponFullDef, weapDef.iDropClipAmmoMax),                     CSPFT_INT                },
        {"blocksProne",                        offsetof(WeaponFullDef, weapDef.blocksProne),                          CSPFT_BOOL               },
        {"silenced",                           offsetof(WeaponFullDef, weapVariantDef.bSilenced),                     CSPFT_BOOL               },
        {"dualMag",                            offsetof(WeaponFullDef, weapVariantDef.bDualMag),                      CSPFT_BOOL               },
        {"isRollingGrenade",                   offsetof(WeaponFullDef, weapDef.isRollingGrenade),                     CSPFT_QBOOLEAN           },
        {"showIndicator",                      offsetof(WeaponFullDef, weapDef.bShowIndicator),                       CSPFT_BOOL               },
        {"explosionRadius",                    offsetof(WeaponFullDef, weapDef.iExplosionRadius),                     CSPFT_INT                },
        {"explosionRadiusMin",                 offsetof(WeaponFullDef, weapDef.iExplosionRadiusMin),                  CSPFT_INT                },
        {"indicatorRadius",                    offsetof(WeaponFullDef, weapDef.iIndicatorRadius),                     CSPFT_INT                },
        {"explosionInnerDamage",               offsetof(WeaponFullDef, weapDef.iExplosionInnerDamage),                CSPFT_INT                },
        {"explosionOuterDamage",               offsetof(WeaponFullDef, weapDef.iExplosionOuterDamage),                CSPFT_INT                },
        {"damageConeAngle",                    offsetof(WeaponFullDef, weapDef.damageConeAngle),                      CSPFT_FLOAT              },
        {"projectileSpeed",                    offsetof(WeaponFullDef, weapDef.iProjectileSpeed),                     CSPFT_INT                },
        {"projectileSpeedRelativeUp",          offsetof(WeaponFullDef, weapDef.iProjectileSpeedRelativeUp),           CSPFT_INT                },
        {"projectileSpeedUp",                  offsetof(WeaponFullDef, weapDef.iProjectileSpeedUp),                   CSPFT_INT                },
        {"projectileSpeedForward",             offsetof(WeaponFullDef, weapDef.iProjectileSpeedForward),              CSPFT_INT                },
        {"projectileActivateDist",             offsetof(WeaponFullDef, weapDef.iProjectileActivateDist),              CSPFT_INT                },
        {"projectileLifetime",                 offsetof(WeaponFullDef, weapDef.projLifetime),                         CSPFT_FLOAT              },
        {"timeToAccelerate",                   offsetof(WeaponFullDef, weapDef.timeToAccelerate),                     CSPFT_FLOAT              },
        {"projectileCurvature",                offsetof(WeaponFullDef, weapDef.projectileCurvature),                  CSPFT_FLOAT              },
        {"projectileModel",                    offsetof(WeaponFullDef, weapDef.projectileModel),                      CSPFT_XMODEL             },
        {"projExplosionType",                  offsetof(WeaponFullDef, weapDef.projExplosion),                        WFT_PROJ_EXPLOSION       },
        {"projExplosionEffect",                offsetof(WeaponFullDef, weapDef.projExplosionEffect),                  CSPFT_FX                 },
        {"projExplosionEffectForceNormalUp",   offsetof(WeaponFullDef, weapDef.projExplosionEffectForceNormalUp),     CSPFT_BOOL               },
        {"projExplosionEffect2",               offsetof(WeaponFullDef, weapDef.projExplosionEffect2),                 CSPFT_FX                 },
        {"projExplosionEffect2ForceNormalUp",  offsetof(WeaponFullDef, weapDef.projExplosionEffect2ForceNormalUp),    CSPFT_BOOL               },
        {"projExplosionEffect3",               offsetof(WeaponFullDef, weapDef.projExplosionEffect3),                 CSPFT_FX                 },
        {"projExplosionEffect3ForceNormalUp",  offsetof(WeaponFullDef, weapDef.projExplosionEffect3ForceNormalUp),    CSPFT_BOOL               },
        {"projExplosionEffect4",               offsetof(WeaponFullDef, weapDef.projExplosionEffect4),                 CSPFT_FX                 },
        {"projExplosionEffect4ForceNormalUp",  offsetof(WeaponFullDef, weapDef.projExplosionEffect4ForceNormalUp),    CSPFT_BOOL               },
        {"projExplosionEffect5",               offsetof(WeaponFullDef, weapDef.projExplosionEffect5),                 CSPFT_FX                 },
        {"projExplosionEffect5ForceNormalUp",  offsetof(WeaponFullDef, weapDef.projExplosionEffect5ForceNormalUp),    CSPFT_BOOL               },
        {"projExplosionSound",                 offsetof(WeaponFullDef, weapDef.projExplosionSound),                   CSPFT_STRING             },
        {"projDudEffect",                      offsetof(WeaponFullDef, weapDef.projDudEffect),                        CSPFT_FX                 },
        {"projDudSound",                       offsetof(WeaponFullDef, weapDef.projDudSound),                         CSPFT_STRING             },
        {"projImpactExplode",                  offsetof(WeaponFullDef, weapDef.bProjImpactExplode),                   CSPFT_BOOL               },
        {"bulletImpactExplode",                offsetof(WeaponFullDef, weapDef.bBulletImpactExplode),                 CSPFT_BOOL               },
        {"mortarShellSound",                   offsetof(WeaponFullDef, weapDef.mortarShellSound),                     CSPFT_STRING             },
        {"tankShellSound",                     offsetof(WeaponFullDef, weapDef.tankShellSound),                       CSPFT_STRING             },
        {"stickiness",                         offsetof(WeaponFullDef, weapDef.stickiness),                           WFT_STICKINESS           },
        {"rotateType",                         offsetof(WeaponFullDef, weapDef.rotateType),                           WFT_ROTATETYPE           },
        {"hasDetonator",                       offsetof(WeaponFullDef, weapDef.hasDetonator),                         CSPFT_BOOL               },
        {"plantable",                          offsetof(WeaponFullDef, weapDef.plantable),                            CSPFT_BOOL               },
        {"timedDetonation",                    offsetof(WeaponFullDef, weapDef.timedDetonation),                      CSPFT_BOOL               },
        {"noCrumpleMissile",                   offsetof(WeaponFullDef, weapDef.bNoCrumpleMissile),                    CSPFT_BOOL               },
        {"rotate",                             offsetof(WeaponFullDef, weapDef.rotate),                               CSPFT_BOOL               },
        {"keepRolling",                        offsetof(WeaponFullDef, weapDef.bKeepRolling),                         CSPFT_BOOL               },
        {"holdButtonToThrow",                  offsetof(WeaponFullDef, weapDef.holdButtonToThrow),                    CSPFT_BOOL               },
        {"offhandHoldIsCancelable",            offsetof(WeaponFullDef, weapDef.offhandHoldIsCancelable),              CSPFT_BOOL               },
        {"freezeMovementWhenFiring",           offsetof(WeaponFullDef, weapDef.freezeMovementWhenFiring),             CSPFT_BOOL               },
        {"lowAmmoWarningThreshold",            offsetof(WeaponFullDef, weapDef.lowAmmoWarningThreshold),              CSPFT_FLOAT              },
        {"explosionTag",                       offsetof(WeaponFullDef, weapDef.explosionTag),                         WFT_EXPLOSION_TAG        },
        {"isCameraSensor",                     offsetof(WeaponFullDef, weapDef.isCameraSensor),                       CSPFT_BOOL               },
        {"isAcousticSensor",                   offsetof(WeaponFullDef, weapDef.isAcousticSensor),                     CSPFT_BOOL               },
        {"parallelDefaultBounce",              offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_DEFAULT]),            CSPFT_FLOAT              },
        {"parallelAsphaltBounce",              offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_ASPHALT]),            CSPFT_FLOAT              },
        {"parallelBarkBounce",                 offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_BARK]),               CSPFT_FLOAT              },
        {"parallelBrickBounce",                offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_BRICK]),              CSPFT_FLOAT              },
        {"parallelCarpetBounce",               offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_CARPET]),             CSPFT_FLOAT              },
        {"parallelCeramicBounce",              offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_CERAMIC]),            CSPFT_FLOAT              },
        {"parallelClothBounce",                offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_CLOTH]),              CSPFT_FLOAT              },
        {"parallelConcreteBounce",             offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_CONCRETE]),           CSPFT_FLOAT              },
        {"parallelCushionBounce",              offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_CUSHION]),            CSPFT_FLOAT              },
        {"parallelDirtBounce",                 offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_DIRT]),               CSPFT_FLOAT              },
        {"parallelFleshBounce",                offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_FLESH]),              CSPFT_FLOAT              },
        {"parallelFoliageBounce",              offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_FOLIAGE]),            CSPFT_FLOAT              },
        {"parallelFruitBounce",                offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_FRUIT]),              CSPFT_FLOAT              },
        {"parallelGlassBounce",                offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_GLASS]),              CSPFT_FLOAT              },
        {"parallelGrassBounce",                offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_GRASS]),              CSPFT_FLOAT              },
        {"parallelGravelBounce",               offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_GRAVEL]),             CSPFT_FLOAT              },
        {"parallelIceBounce",                  offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_ICE]),                CSPFT_FLOAT              },
        {"parallelMetalBounce",                offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_METAL]),              CSPFT_FLOAT              },
        {"parallelMudBounce",                  offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_MUD]),                CSPFT_FLOAT              },
        {"parallelPaintedMetalBounce",         offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_PAINTED_METAL]),      CSPFT_FLOAT              },
        {"parallelPaperBounce",                offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_PAPER]),              CSPFT_FLOAT              },
        {"parallelPlasterBounce",              offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_PLASTER]),            CSPFT_FLOAT              },
        {"parallelPlasticBounce",              offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_PLASTIC]),            CSPFT_FLOAT              },
        {"parallelRockBounce",                 offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_ROCK]),               CSPFT_FLOAT              },
        {"parallelRubberBounce",               offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_RUBBER]),             CSPFT_FLOAT              },
        {"parallelSandBounce",                 offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_SAND]),               CSPFT_FLOAT              },
        {"parallelSnowBounce",                 offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_SNOW]),               CSPFT_FLOAT              },
        {"parallelWaterBounce",                offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_WATER]),              CSPFT_FLOAT              },
        {"parallelWoodBounce",                 offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_WOOD]),               CSPFT_FLOAT              },
        {"perpendicularDefaultBounce",         offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_DEFAULT]),       CSPFT_FLOAT              },
        {"perpendicularAsphaltBounce",         offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_ASPHALT]),       CSPFT_FLOAT              },
        {"perpendicularBarkBounce",            offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_BARK]),          CSPFT_FLOAT              },
        {"perpendicularBrickBounce",           offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_BRICK]),         CSPFT_FLOAT              },
        {"perpendicularCarpetBounce",          offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_CARPET]),        CSPFT_FLOAT              },
        {"perpendicularCeramicBounce",         offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_CERAMIC]),       CSPFT_FLOAT              },
        {"perpendicularClothBounce",           offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_CLOTH]),         CSPFT_FLOAT              },
        {"perpendicularConcreteBounce",        offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_CONCRETE]),      CSPFT_FLOAT              },
        {"perpendicularCushionBounce",         offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_CUSHION]),       CSPFT_FLOAT              },
        {"perpendicularDirtBounce",            offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_DIRT]),          CSPFT_FLOAT              },
        {"perpendicularFleshBounce",           offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_FLESH]),         CSPFT_FLOAT              },
        {"perpendicularFoliageBounce",         offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_FOLIAGE]),       CSPFT_FLOAT              },
        {"perpendicularFruitBounce",           offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_FRUIT]),         CSPFT_FLOAT              },
        {"perpendicularGlassBounce",           offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_GLASS]),         CSPFT_FLOAT              },
        {"perpendicularGrassBounce",           offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_GRASS]),         CSPFT_FLOAT              },
        {"perpendicularGravelBounce",          offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_GRAVEL]),        CSPFT_FLOAT              },
        {"perpendicularIceBounce",             offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_ICE]),           CSPFT_FLOAT              },
        {"perpendicularMetalBounce",           offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_METAL]),         CSPFT_FLOAT              },
        {"perpendicularMudBounce",             offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_MUD]),           CSPFT_FLOAT              },
        {"perpendicularPaintedMetalBounce",    offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_PAINTED_METAL]), CSPFT_FLOAT              },
        {"perpendicularPaperBounce",           offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_PAPER]),         CSPFT_FLOAT              },
        {"perpendicularPlasterBounce",         offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_PLASTER]),       CSPFT_FLOAT              },
        {"perpendicularPlasticBounce",         offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_PLASTIC]),       CSPFT_FLOAT              },
        {"perpendicularRockBounce",            offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_ROCK]),          CSPFT_FLOAT              },
        {"perpendicularRubberBounce",          offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_RUBBER]),        CSPFT_FLOAT              },
        {"perpendicularSandBounce",            offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_SAND]),          CSPFT_FLOAT              },
        {"perpendicularSnowBounce",            offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_SNOW]),          CSPFT_FLOAT              },
        {"perpendicularWaterBounce",           offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_WATER]),         CSPFT_FLOAT              },
        {"perpendicularWoodBounce",            offsetof(WeaponFullDef, perpendicularBounce[SURF_TYPE_WOOD]),          CSPFT_FLOAT              },
        {"projTrailEffect",                    offsetof(WeaponFullDef, weapDef.projTrailEffect),                      CSPFT_FX                 },
        {"projectileRed",                      offsetof(WeaponFullDef, weapDef.vProjectileColor[0]),                  CSPFT_FLOAT              },
        {"projectileGreen",                    offsetof(WeaponFullDef, weapDef.vProjectileColor[1]),                  CSPFT_FLOAT              },
        {"projectileBlue",                     offsetof(WeaponFullDef, weapDef.vProjectileColor[2]),                  CSPFT_FLOAT              },
        {"guidedMissileType",                  offsetof(WeaponFullDef, weapDef.guidedMissileType),                    WFT_GUIDED_MISSILE_TYPE  },
        {"maxSteeringAccel",                   offsetof(WeaponFullDef, weapDef.maxSteeringAccel),                     CSPFT_FLOAT              },
        {"projIgnitionDelay",                  offsetof(WeaponFullDef, weapDef.projIgnitionDelay),                    CSPFT_INT                },
        {"projIgnitionEffect",                 offsetof(WeaponFullDef, weapDef.projIgnitionEffect),                   CSPFT_FX                 },
        {"projIgnitionSound",                  offsetof(WeaponFullDef, weapDef.projIgnitionSound),                    CSPFT_STRING             },
        {"tagFx_preparationEffect",            offsetof(WeaponFullDef, weapDef.tagFx_preparationEffect),              CSPFT_FX                 },
        {"tagFlash_preparationEffect",         offsetof(WeaponFullDef, weapDef.tagFlash_preparationEffect),           CSPFT_FX                 },
        {"adsTransInTime",                     offsetof(WeaponFullDef, weapVariantDef.iAdsTransInTime),               CSPFT_MILLISECONDS       },
        {"adsTransOutTime",                    offsetof(WeaponFullDef, weapVariantDef.iAdsTransOutTime),              CSPFT_MILLISECONDS       },
        {"adsIdleAmount",                      offsetof(WeaponFullDef, weapDef.fAdsIdleAmount),                       CSPFT_FLOAT              },
        {"adsIdleSpeed",                       offsetof(WeaponFullDef, weapDef.adsIdleSpeed),                         CSPFT_FLOAT              },
        {"adsZoomFov1",                        offsetof(WeaponFullDef, weapVariantDef.fAdsZoomFov1),                  CSPFT_FLOAT              },
        {"adsZoomFov2",                        offsetof(WeaponFullDef, weapVariantDef.fAdsZoomFov2),                  CSPFT_FLOAT              },
        {"adsZoomFov3",                        offsetof(WeaponFullDef, weapVariantDef.fAdsZoomFov3),                  CSPFT_FLOAT              },
        {"adsZoomInFrac",                      offsetof(WeaponFullDef, weapVariantDef.fAdsZoomInFrac),                CSPFT_FLOAT              },
        {"adsZoomOutFrac",                     offsetof(WeaponFullDef, weapVariantDef.fAdsZoomOutFrac),               CSPFT_FLOAT              },
        {"adsOverlayShader",                   offsetof(WeaponFullDef, weapVariantDef.overlayMaterial),               CSPFT_MATERIAL_STREAM    },
        {"adsOverlayShaderLowRes",             offsetof(WeaponFullDef, weapVariantDef.overlayMaterialLowRes),         CSPFT_MATERIAL_STREAM    },
        {"adsOverlayReticle",                  offsetof(WeaponFullDef, weapDef.overlayReticle),                       WFT_OVERLAYRETICLE       },
        {"adsOverlayInterface",                offsetof(WeaponFullDef, weapDef.overlayInterface),                     WFT_OVERLAYINTERFACE     },
        {"adsOverlayWidth",                    offsetof(WeaponFullDef, weapDef.overlayWidth),                         CSPFT_FLOAT              },
        {"adsOverlayHeight",                   offsetof(WeaponFullDef, weapDef.overlayHeight),                        CSPFT_FLOAT              },
        {"adsOverlayAlphaScale",               offsetof(WeaponFullDef, weapVariantDef.fOverlayAlphaScale),            CSPFT_FLOAT              },
        {"adsBobFactor",                       offsetof(WeaponFullDef, weapDef.fAdsBobFactor),                        CSPFT_FLOAT              },
        {"adsViewBobMult",                     offsetof(WeaponFullDef, weapDef.fAdsViewBobMult),                      CSPFT_FLOAT              },
        {"adsAimPitch",                        offsetof(WeaponFullDef, weapDef.fAdsAimPitch),                         CSPFT_FLOAT              },
        {"adsCrosshairInFrac",                 offsetof(WeaponFullDef, weapDef.fAdsCrosshairInFrac),                  CSPFT_FLOAT              },
        {"adsCrosshairOutFrac",                offsetof(WeaponFullDef, weapDef.fAdsCrosshairOutFrac),                 CSPFT_FLOAT              },
        {"adsReloadTransTime",                 offsetof(WeaponFullDef, weapDef.iPositionReloadTransTime),             CSPFT_MILLISECONDS       },
        {"adsGunKickReducedKickBullets",       offsetof(WeaponFullDef, weapDef.adsGunKickReducedKickBullets),         CSPFT_INT                },
        {"adsGunKickReducedKickPercent",       offsetof(WeaponFullDef, weapDef.adsGunKickReducedKickPercent),         CSPFT_FLOAT              },
        {"adsGunKickPitchMin",                 offsetof(WeaponFullDef, weapDef.fAdsGunKickPitchMin),                  CSPFT_FLOAT              },
        {"adsGunKickPitchMax",                 offsetof(WeaponFullDef, weapDef.fAdsGunKickPitchMax),                  CSPFT_FLOAT              },
        {"adsGunKickYawMin",                   offsetof(WeaponFullDef, weapDef.fAdsGunKickYawMin),                    CSPFT_FLOAT              },
        {"adsGunKickYawMax",                   offsetof(WeaponFullDef, weapDef.fAdsGunKickYawMax),                    CSPFT_FLOAT              },
        {"adsGunKickAccel",                    offsetof(WeaponFullDef, weapDef.fAdsGunKickAccel),                     CSPFT_FLOAT              },
        {"adsGunKickSpeedMax",                 offsetof(WeaponFullDef, weapDef.fAdsGunKickSpeedMax),                  CSPFT_FLOAT              },
        {"adsGunKickSpeedDecay",               offsetof(WeaponFullDef, weapDef.fAdsGunKickSpeedDecay),                CSPFT_FLOAT              },
        {"adsGunKickStaticDecay",              offsetof(WeaponFullDef, weapDef.fAdsGunKickStaticDecay),               CSPFT_FLOAT              },
        {"adsViewKickPitchMin",                offsetof(WeaponFullDef, weapDef.fAdsViewKickPitchMin),                 CSPFT_FLOAT              },
        {"adsViewKickPitchMax",                offsetof(WeaponFullDef, weapDef.fAdsViewKickPitchMax),                 CSPFT_FLOAT              },
        {"adsViewKickYawMin",                  offsetof(WeaponFullDef, weapDef.fAdsViewKickYawMin),                   CSPFT_FLOAT              },
        {"adsViewKickYawMax",                  offsetof(WeaponFullDef, weapDef.fAdsViewKickYawMax),                   CSPFT_FLOAT              },
        {"adsViewKickCenterSpeed",             offsetof(WeaponFullDef, weapVariantDef.fAdsViewKickCenterSpeed),       CSPFT_FLOAT              },
        {"adsSpread",                          offsetof(WeaponFullDef, weapDef.fAdsSpread),                           CSPFT_FLOAT              },
        {"guidedMissileType",                  offsetof(WeaponFullDef, weapDef.guidedMissileType),                    WFT_GUIDED_MISSILE_TYPE  },
        {"hipSpreadStandMin",                  offsetof(WeaponFullDef, weapDef.fHipSpreadStandMin),                   CSPFT_FLOAT              },
        {"hipSpreadDuckedMin",                 offsetof(WeaponFullDef, weapDef.fHipSpreadDuckedMin),                  CSPFT_FLOAT              },
        {"hipSpreadProneMin",                  offsetof(WeaponFullDef, weapDef.fHipSpreadProneMin),                   CSPFT_FLOAT              },
        {"hipSpreadMax",                       offsetof(WeaponFullDef, weapDef.hipSpreadStandMax),                    CSPFT_FLOAT              },
        {"hipSpreadDuckedMax",                 offsetof(WeaponFullDef, weapDef.hipSpreadDuckedMax),                   CSPFT_FLOAT              },
        {"hipSpreadProneMax",                  offsetof(WeaponFullDef, weapDef.hipSpreadProneMax),                    CSPFT_FLOAT              },
        {"hipSpreadDecayRate",                 offsetof(WeaponFullDef, weapDef.fHipSpreadDecayRate),                  CSPFT_FLOAT              },
        {"hipSpreadFireAdd",                   offsetof(WeaponFullDef, weapDef.fHipSpreadFireAdd),                    CSPFT_FLOAT              },
        {"hipSpreadTurnAdd",                   offsetof(WeaponFullDef, weapDef.fHipSpreadTurnAdd),                    CSPFT_FLOAT              },
        {"hipSpreadMoveAdd",                   offsetof(WeaponFullDef, weapDef.fHipSpreadMoveAdd),                    CSPFT_FLOAT              },
        {"hipSpreadDuckedDecay",               offsetof(WeaponFullDef, weapDef.fHipSpreadDuckedDecay),                CSPFT_FLOAT              },
        {"hipSpreadProneDecay",                offsetof(WeaponFullDef, weapDef.fHipSpreadProneDecay),                 CSPFT_FLOAT              },
        {"hipReticleSidePos",                  offsetof(WeaponFullDef, weapDef.fHipReticleSidePos),                   CSPFT_FLOAT              },
        {"hipIdleAmount",                      offsetof(WeaponFullDef, weapDef.fHipIdleAmount),                       CSPFT_FLOAT              },
        {"hipIdleSpeed",                       offsetof(WeaponFullDef, weapDef.hipIdleSpeed),                         CSPFT_FLOAT              },
        {"hipGunKickReducedKickBullets",       offsetof(WeaponFullDef, weapDef.hipGunKickReducedKickBullets),         CSPFT_INT                },
        {"hipGunKickReducedKickPercent",       offsetof(WeaponFullDef, weapDef.hipGunKickReducedKickPercent),         CSPFT_FLOAT              },
        {"hipGunKickPitchMin",                 offsetof(WeaponFullDef, weapDef.fHipGunKickPitchMin),                  CSPFT_FLOAT              },
        {"hipGunKickPitchMax",                 offsetof(WeaponFullDef, weapDef.fHipGunKickPitchMax),                  CSPFT_FLOAT              },
        {"hipGunKickYawMin",                   offsetof(WeaponFullDef, weapDef.fHipGunKickYawMin),                    CSPFT_FLOAT              },
        {"hipGunKickYawMax",                   offsetof(WeaponFullDef, weapDef.fHipGunKickYawMax),                    CSPFT_FLOAT              },
        {"hipGunKickAccel",                    offsetof(WeaponFullDef, weapDef.fHipGunKickAccel),                     CSPFT_FLOAT              },
        {"hipGunKickSpeedMax",                 offsetof(WeaponFullDef, weapDef.fHipGunKickSpeedMax),                  CSPFT_FLOAT              },
        {"hipGunKickSpeedDecay",               offsetof(WeaponFullDef, weapDef.fHipGunKickSpeedDecay),                CSPFT_FLOAT              },
        {"hipGunKickStaticDecay",              offsetof(WeaponFullDef, weapDef.fHipGunKickStaticDecay),               CSPFT_FLOAT              },
        {"hipViewKickPitchMin",                offsetof(WeaponFullDef, weapDef.fHipViewKickPitchMin),                 CSPFT_FLOAT              },
        {"hipViewKickPitchMax",                offsetof(WeaponFullDef, weapDef.fHipViewKickPitchMax),                 CSPFT_FLOAT              },
        {"hipViewKickYawMin",                  offsetof(WeaponFullDef, weapDef.fHipViewKickYawMin),                   CSPFT_FLOAT              },
        {"hipViewKickYawMax",                  offsetof(WeaponFullDef, weapDef.fHipViewKickYawMax),                   CSPFT_FLOAT              },
        {"hipViewKickCenterSpeed",             offsetof(WeaponFullDef, weapVariantDef.fHipViewKickCenterSpeed),       CSPFT_FLOAT              },
        {"leftArc",                            offsetof(WeaponFullDef, weapDef.leftArc),                              CSPFT_FLOAT              },
        {"rightArc",                           offsetof(WeaponFullDef, weapDef.rightArc),                             CSPFT_FLOAT              },
        {"topArc",                             offsetof(WeaponFullDef, weapDef.topArc),                               CSPFT_FLOAT              },
        {"bottomArc",                          offsetof(WeaponFullDef, weapDef.bottomArc),                            CSPFT_FLOAT              },
        {"accuracy",                           offsetof(WeaponFullDef, weapDef.accuracy),                             CSPFT_FLOAT              },
        {"aiSpread",                           offsetof(WeaponFullDef, weapDef.aiSpread),                             CSPFT_FLOAT              },
        {"playerSpread",                       offsetof(WeaponFullDef, weapDef.playerSpread),                         CSPFT_FLOAT              },
        {"maxVertTurnSpeed",                   offsetof(WeaponFullDef, weapDef.maxTurnSpeed[0]),                      CSPFT_FLOAT              },
        {"maxHorTurnSpeed",                    offsetof(WeaponFullDef, weapDef.maxTurnSpeed[1]),                      CSPFT_FLOAT              },
        {"minVertTurnSpeed",                   offsetof(WeaponFullDef, weapDef.minTurnSpeed[0]),                      CSPFT_FLOAT              },
        {"minHorTurnSpeed",                    offsetof(WeaponFullDef, weapDef.minTurnSpeed[1]),                      CSPFT_FLOAT              },
        {"pitchConvergenceTime",               offsetof(WeaponFullDef, weapDef.pitchConvergenceTime),                 CSPFT_FLOAT              },
        {"yawConvergenceTime",                 offsetof(WeaponFullDef, weapDef.yawConvergenceTime),                   CSPFT_FLOAT              },
        {"suppressionTime",                    offsetof(WeaponFullDef, weapDef.suppressTime),                         CSPFT_FLOAT              },
        {"maxRange",                           offsetof(WeaponFullDef, weapDef.maxRange),                             CSPFT_FLOAT              },
        {"animHorRotateInc",                   offsetof(WeaponFullDef, weapDef.fAnimHorRotateInc),                    CSPFT_FLOAT              },
        {"playerPositionDist",                 offsetof(WeaponFullDef, weapDef.fPlayerPositionDist),                  CSPFT_FLOAT              },
        {"stance",                             offsetof(WeaponFullDef, weapDef.stance),                               WFT_STANCE               },
        {"useHintString",                      offsetof(WeaponFullDef, weapDef.szUseHintString),                      CSPFT_STRING             },
        {"dropHintString",                     offsetof(WeaponFullDef, weapDef.dropHintString),                       CSPFT_STRING             },
        {"horizViewJitter",                    offsetof(WeaponFullDef, weapDef.horizViewJitter),                      CSPFT_FLOAT              },
        {"vertViewJitter",                     offsetof(WeaponFullDef, weapDef.vertViewJitter),                       CSPFT_FLOAT              },
        {"fightDist",                          offsetof(WeaponFullDef, weapDef.fightDist),                            CSPFT_FLOAT              },
        {"maxDist",                            offsetof(WeaponFullDef, weapDef.maxDist),                              CSPFT_FLOAT              },
        {"aiVsAiAccuracyGraph",                offsetof(WeaponFullDef, weapDef.aiVsAiAccuracyGraphName),              CSPFT_STRING             },
        {"aiVsPlayerAccuracyGraph",            offsetof(WeaponFullDef, weapDef.aiVsPlayerAccuracyGraphName),          CSPFT_STRING             },
        {"locNone",                            offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_NONE]),       CSPFT_FLOAT              },
        {"locHelmet",                          offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_HELMET]),     CSPFT_FLOAT              },
        {"locHead",                            offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_HEAD]),       CSPFT_FLOAT              },
        {"locNeck",                            offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_NECK]),       CSPFT_FLOAT              },
        {"locTorsoUpper",                      offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_TORSO_UPR]),  CSPFT_FLOAT              },
        {"locTorsoLower",                      offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_TORSO_LWR]),  CSPFT_FLOAT              },
        {"locRightArmUpper",                   offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_R_ARM_UPR]),  CSPFT_FLOAT              },
        {"locRightArmLower",                   offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_R_ARM_LWR]),  CSPFT_FLOAT              },
        {"locRightHand",                       offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_R_HAND]),     CSPFT_FLOAT              },
        {"locLeftArmUpper",                    offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_L_ARM_UPR]),  CSPFT_FLOAT              },
        {"locLeftArmLower",                    offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_L_ARM_LWR]),  CSPFT_FLOAT              },
        {"locLeftHand",                        offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_L_HAND]),     CSPFT_FLOAT              },
        {"locRightLegUpper",                   offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_R_LEG_UPR]),  CSPFT_FLOAT              },
        {"locRightLegLower",                   offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_R_LEG_LWR]),  CSPFT_FLOAT              },
        {"locRightFoot",                       offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_R_FOOT]),     CSPFT_FLOAT              },
        {"locLeftLegUpper",                    offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_L_LEG_UPR]),  CSPFT_FLOAT              },
        {"locLeftLegLower",                    offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_L_LEG_LWR]),  CSPFT_FLOAT              },
        {"locLeftFoot",                        offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_L_FOOT]),     CSPFT_FLOAT              },
        {"locGun",                             offsetof(WeaponFullDef, locationDamageMultipliers[HITLOC_GUN]),        CSPFT_FLOAT              },
        {"fireRumble",                         offsetof(WeaponFullDef, weapDef.fireRumble),                           CSPFT_STRING             },
        {"meleeImpactRumble",                  offsetof(WeaponFullDef, weapDef.meleeImpactRumble),                    CSPFT_STRING             },
        {"reloadRumble",                       offsetof(WeaponFullDef, weapDef.reloadRumble),                         CSPFT_STRING             },
        {"adsDofStart",                        offsetof(WeaponFullDef, weapDef.adsDofStart),                          CSPFT_FLOAT              },
        {"adsDofEnd",                          offsetof(WeaponFullDef, weapDef.adsDofEnd),                            CSPFT_FLOAT              },
        {"scanSpeed",                          offsetof(WeaponFullDef, weapDef.scanSpeed),                            CSPFT_FLOAT              },
        {"scanAccel",                          offsetof(WeaponFullDef, weapDef.scanAccel),                            CSPFT_FLOAT              },
        {"scanPauseTime",                      offsetof(WeaponFullDef, weapDef.scanPauseTime),                        CSPFT_MILLISECONDS       },
        {"flameTableFirstPerson",              offsetof(WeaponFullDef, weapDef.flameTableFirstPerson),                CSPFT_STRING             },
        {"flameTableThirdPerson",              offsetof(WeaponFullDef, weapDef.flameTableThirdPerson),                CSPFT_STRING             },
        {"ikLeftHandOffsetF",                  offsetof(WeaponFullDef, weapVariantDef.ikLeftHandOffset[0]),           CSPFT_FLOAT              },
        {"ikLeftHandOffsetR",                  offsetof(WeaponFullDef, weapVariantDef.ikLeftHandOffset[1]),           CSPFT_FLOAT              },
        {"ikLeftHandOffsetU",                  offsetof(WeaponFullDef, weapVariantDef.ikLeftHandOffset[2]),           CSPFT_FLOAT              },
        {"ikLeftHandRotationP",                offsetof(WeaponFullDef, weapVariantDef.ikLeftHandRotation[0]),         CSPFT_FLOAT              },
        {"ikLeftHandRotationY",                offsetof(WeaponFullDef, weapVariantDef.ikLeftHandRotation[1]),         CSPFT_FLOAT              },
        {"ikLeftHandRotationR",                offsetof(WeaponFullDef, weapVariantDef.ikLeftHandRotation[2]),         CSPFT_FLOAT              },
        {"ikLeftHandProneOffsetF",             offsetof(WeaponFullDef, weapVariantDef.ikLeftHandProneOffset[0]),      CSPFT_FLOAT              },
        {"ikLeftHandProneOffsetR",             offsetof(WeaponFullDef, weapVariantDef.ikLeftHandProneOffset[1]),      CSPFT_FLOAT              },
        {"ikLeftHandProneOffsetU",             offsetof(WeaponFullDef, weapVariantDef.ikLeftHandProneOffset[2]),      CSPFT_FLOAT              },
        {"ikLeftHandProneRotationP",           offsetof(WeaponFullDef, weapVariantDef.ikLeftHandProneRotation[0]),    CSPFT_FLOAT              },
        {"ikLeftHandProneRotationY",           offsetof(WeaponFullDef, weapVariantDef.ikLeftHandProneRotation[1]),    CSPFT_FLOAT              },
        {"ikLeftHandProneRotationR",           offsetof(WeaponFullDef, weapVariantDef.ikLeftHandProneRotation[2]),    CSPFT_FLOAT              },
        {"ikLeftHandUiViewerOffsetF",          offsetof(WeaponFullDef, weapVariantDef.ikLeftHandUiViewerOffset[0]),   CSPFT_FLOAT              },
        {"ikLeftHandUiViewerOffsetR",          offsetof(WeaponFullDef, weapVariantDef.ikLeftHandUiViewerOffset[1]),   CSPFT_FLOAT              },
        {"ikLeftHandUiViewerOffsetU",          offsetof(WeaponFullDef, weapVariantDef.ikLeftHandUiViewerOffset[2]),   CSPFT_FLOAT              },
        {"ikLeftHandUiViewerRotationP",        offsetof(WeaponFullDef, weapVariantDef.ikLeftHandUiViewerRotation[0]), CSPFT_FLOAT              },
        {"ikLeftHandUiViewerRotationY",        offsetof(WeaponFullDef, weapVariantDef.ikLeftHandUiViewerRotation[1]), CSPFT_FLOAT              },
        {"ikLeftHandUiViewerRotationR",        offsetof(WeaponFullDef, weapVariantDef.ikLeftHandUiViewerRotation[2]), CSPFT_FLOAT              },
        {"parentWeaponName",                   offsetof(WeaponFullDef, weapDef.parentWeaponName),                     CSPFT_STRING             },
        {"doGibbing",                          offsetof(WeaponFullDef, weapDef.doGibbing),                            CSPFT_BOOL               },
        {"maxGibDistance",                     offsetof(WeaponFullDef, weapDef.maxGibDistance),                       CSPFT_FLOAT              },
    };
}
