chore: add missing iw5 weapon fields

This commit is contained in:
Jan 2024-04-07 23:40:34 +02:00
parent f63e7c7f35
commit f8c9e62624
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C
4 changed files with 783 additions and 733 deletions

View File

@ -81,6 +81,7 @@ namespace IW5
CSPFT_PHYS_COLLMAP, CSPFT_PHYS_COLLMAP,
CSPFT_SOUND, CSPFT_SOUND,
CSPFT_TRACER, CSPFT_TRACER,
CSPFT_SCRIPT_STRING,
CSPFT_NUM_BASE_FIELD_TYPES, CSPFT_NUM_BASE_FIELD_TYPES,
}; };
@ -98,7 +99,7 @@ namespace IW5
WFT_ANIMTYPE, WFT_ANIMTYPE,
WFT_ACTIVE_RETICLE_TYPE, WFT_ACTIVE_RETICLE_TYPE,
WFT_GUIDED_MISSILE_TYPE, WFT_GUIDED_MISSILE_TYPE,
WFT_BOUNCE_SOUND, WFT_PER_SURFACE_TYPE_SOUND,
WFT_STICKINESS, WFT_STICKINESS,
WFT_OVERLAYINTERFACE, WFT_OVERLAYINTERFACE,
WFT_INVENTORYTYPE, WFT_INVENTORYTYPE,

View File

@ -3,38 +3,6 @@
namespace IW5 namespace IW5
{ {
// WeaponDef:
// TODO: changeVariableZoomSound
// TODO: rollingSound
// TODO: akimboStateTimers
// TODO: adsIdleLerpStartTime
// TODO: adsIdleLerpTime
// TODO: riotShieldEnableDamage
// TODO: riotShieldHealth
// TODO: riotShieldDamageMult
// TODO: turretADSEnabled
// TODO: turretADSTime
// TODO: turretFov
// TODO: turretFovADS
// TODO: isAirburstWeapon
// TODO: canHoldBreath
// TODO: canVariableZoom
// TODO: stickToVehicles
// TODO: stickToTurrets
// TODO: doNotAllowAttachmentsToOverrideSpread
// TODO: stowTag
// TODO: stowOffsetModel
// StateTimers:
// TODO: blastFrontTime;
// TODO: blastRightTime;
// TODO: blastBackTime;
// TODO: blastLeftTime;
// TODO: raiseInterruptableTime;
// TODO: firstRaiseInterruptableTime;
// TODO: reloadInterruptableTime;
// TODO: reloadEmptyInterruptableTime;
// TODO: fireInterruptableTime;
inline cspField_t weapon_fields[]{ inline cspField_t weapon_fields[]{
{"displayName", offsetof(WeaponFullDef, weapCompleteDef.szDisplayName), CSPFT_STRING }, {"displayName", offsetof(WeaponFullDef, weapCompleteDef.szDisplayName), CSPFT_STRING },
{"AIOverlayDescription", offsetof(WeaponFullDef, weapDef.szOverlayName), CSPFT_STRING }, {"AIOverlayDescription", offsetof(WeaponFullDef, weapDef.szOverlayName), CSPFT_STRING },
@ -241,7 +209,9 @@ namespace IW5
{"putawaySound", offsetof(WeaponFullDef, weapDef.putawaySound), CSPFT_SOUND }, {"putawaySound", offsetof(WeaponFullDef, weapDef.putawaySound), CSPFT_SOUND },
{"putawaySoundPlayer", offsetof(WeaponFullDef, weapDef.putawaySoundPlayer), CSPFT_SOUND }, {"putawaySoundPlayer", offsetof(WeaponFullDef, weapDef.putawaySoundPlayer), CSPFT_SOUND },
{"scanSound", offsetof(WeaponFullDef, weapDef.scanSound), CSPFT_SOUND }, {"scanSound", offsetof(WeaponFullDef, weapDef.scanSound), CSPFT_SOUND },
{"bounceSound", offsetof(WeaponFullDef, weapDef.bounceSound), WFT_BOUNCE_SOUND }, {"changeVariableZoomSound", offsetof(WeaponFullDef, weapDef.changeVariableZoomSound), CSPFT_SOUND },
{"bounceSound", offsetof(WeaponFullDef, weapDef.bounceSound), WFT_PER_SURFACE_TYPE_SOUND},
{"rollingSound", offsetof(WeaponFullDef, weapDef.rollingSound), WFT_PER_SURFACE_TYPE_SOUND},
{"viewShellEjectEffect", offsetof(WeaponFullDef, weapDef.viewShellEjectEffect), CSPFT_FX }, {"viewShellEjectEffect", offsetof(WeaponFullDef, weapDef.viewShellEjectEffect), CSPFT_FX },
{"worldShellEjectEffect", offsetof(WeaponFullDef, weapDef.worldShellEjectEffect), CSPFT_FX }, {"worldShellEjectEffect", offsetof(WeaponFullDef, weapDef.worldShellEjectEffect), CSPFT_FX },
{"viewLastShotEjectEffect", offsetof(WeaponFullDef, weapDef.viewLastShotEjectEffect), CSPFT_FX }, {"viewLastShotEjectEffect", offsetof(WeaponFullDef, weapDef.viewLastShotEjectEffect), CSPFT_FX },
@ -338,11 +308,15 @@ namespace IW5
{"destabilizationRateTime", offsetof(WeaponFullDef, weapDef.destabilizationRateTime), CSPFT_FLOAT }, {"destabilizationRateTime", offsetof(WeaponFullDef, weapDef.destabilizationRateTime), CSPFT_FLOAT },
{"destabilizationCurvatureMax", offsetof(WeaponFullDef, weapDef.destabilizationCurvatureMax), CSPFT_FLOAT }, {"destabilizationCurvatureMax", offsetof(WeaponFullDef, weapDef.destabilizationCurvatureMax), CSPFT_FLOAT },
{"destabilizeDistance", offsetof(WeaponFullDef, weapDef.destabilizeDistance), CSPFT_INT }, {"destabilizeDistance", offsetof(WeaponFullDef, weapDef.destabilizeDistance), CSPFT_INT },
{"fireTime", offsetof(WeaponFullDef, weapCompleteDef.iFireTime), CSPFT_MILLISECONDS },
{"fireTimeAkimbo", offsetof(WeaponFullDef, weapCompleteDef.iFireTimeAkimbo), CSPFT_MILLISECONDS },
{"altRaiseTime", offsetof(WeaponFullDef, weapCompleteDef.iAltRaiseTime), CSPFT_MILLISECONDS },
{"altRaiseTimeAkimbo", offsetof(WeaponFullDef, weapCompleteDef.iAltRaiseTimeAkimbo), CSPFT_MILLISECONDS },
{"firstRaiseTime", offsetof(WeaponFullDef, weapCompleteDef.iFirstRaiseTime), CSPFT_MILLISECONDS },
{"firstRaiseTimeAkimbo", offsetof(WeaponFullDef, weapCompleteDef.iFirstRaiseTimeAkimbo), CSPFT_MILLISECONDS },
{"fireDelay", offsetof(WeaponFullDef, weapDef.stateTimers.iFireDelay), CSPFT_MILLISECONDS }, {"fireDelay", offsetof(WeaponFullDef, weapDef.stateTimers.iFireDelay), CSPFT_MILLISECONDS },
{"meleeDelay", offsetof(WeaponFullDef, weapDef.stateTimers.iMeleeDelay), CSPFT_MILLISECONDS }, {"meleeDelay", offsetof(WeaponFullDef, weapDef.stateTimers.iMeleeDelay), CSPFT_MILLISECONDS },
{"meleeChargeDelay", offsetof(WeaponFullDef, weapDef.stateTimers.meleeChargeDelay), CSPFT_MILLISECONDS }, {"meleeChargeDelay", offsetof(WeaponFullDef, weapDef.stateTimers.meleeChargeDelay), CSPFT_MILLISECONDS },
{"fireTime", offsetof(WeaponFullDef, weapCompleteDef.iFireTime), CSPFT_MILLISECONDS },
{"fireTimeAkimbo", offsetof(WeaponFullDef, weapCompleteDef.iFireTimeAkimbo), CSPFT_MILLISECONDS },
{"rechamberTime", offsetof(WeaponFullDef, weapDef.stateTimers.iRechamberTime), CSPFT_MILLISECONDS }, {"rechamberTime", offsetof(WeaponFullDef, weapDef.stateTimers.iRechamberTime), CSPFT_MILLISECONDS },
{"rechamberTimeOneHanded", offsetof(WeaponFullDef, weapDef.stateTimers.rechamberTimeOneHanded), CSPFT_MILLISECONDS }, {"rechamberTimeOneHanded", offsetof(WeaponFullDef, weapDef.stateTimers.rechamberTimeOneHanded), CSPFT_MILLISECONDS },
{"rechamberBoltTime", offsetof(WeaponFullDef, weapDef.stateTimers.iRechamberBoltTime), CSPFT_MILLISECONDS }, {"rechamberBoltTime", offsetof(WeaponFullDef, weapDef.stateTimers.iRechamberBoltTime), CSPFT_MILLISECONDS },
@ -361,12 +335,8 @@ namespace IW5
{"dropTime", offsetof(WeaponFullDef, weapDef.stateTimers.iDropTime), CSPFT_MILLISECONDS }, {"dropTime", offsetof(WeaponFullDef, weapDef.stateTimers.iDropTime), CSPFT_MILLISECONDS },
{"raiseTime", offsetof(WeaponFullDef, weapDef.stateTimers.iRaiseTime), CSPFT_MILLISECONDS }, {"raiseTime", offsetof(WeaponFullDef, weapDef.stateTimers.iRaiseTime), CSPFT_MILLISECONDS },
{"altDropTime", offsetof(WeaponFullDef, weapDef.stateTimers.iAltDropTime), CSPFT_MILLISECONDS }, {"altDropTime", offsetof(WeaponFullDef, weapDef.stateTimers.iAltDropTime), CSPFT_MILLISECONDS },
{"altRaiseTime", offsetof(WeaponFullDef, weapCompleteDef.iAltRaiseTime), CSPFT_MILLISECONDS },
{"altRaiseTimeAkimbo", offsetof(WeaponFullDef, weapCompleteDef.iAltRaiseTimeAkimbo), CSPFT_MILLISECONDS },
{"quickDropTime", offsetof(WeaponFullDef, weapDef.stateTimers.quickDropTime), CSPFT_MILLISECONDS }, {"quickDropTime", offsetof(WeaponFullDef, weapDef.stateTimers.quickDropTime), CSPFT_MILLISECONDS },
{"quickRaiseTime", offsetof(WeaponFullDef, weapDef.stateTimers.quickRaiseTime), CSPFT_MILLISECONDS }, {"quickRaiseTime", offsetof(WeaponFullDef, weapDef.stateTimers.quickRaiseTime), CSPFT_MILLISECONDS },
{"firstRaiseTime", offsetof(WeaponFullDef, weapCompleteDef.iFirstRaiseTime), CSPFT_MILLISECONDS },
{"firstRaiseTimeAkimbo", offsetof(WeaponFullDef, weapCompleteDef.iFirstRaiseTimeAkimbo), CSPFT_MILLISECONDS },
{"breachRaiseTime", offsetof(WeaponFullDef, weapDef.stateTimers.iBreachRaiseTime), CSPFT_MILLISECONDS }, {"breachRaiseTime", offsetof(WeaponFullDef, weapDef.stateTimers.iBreachRaiseTime), CSPFT_MILLISECONDS },
{"emptyRaiseTime", offsetof(WeaponFullDef, weapDef.stateTimers.iEmptyRaiseTime), CSPFT_MILLISECONDS }, {"emptyRaiseTime", offsetof(WeaponFullDef, weapDef.stateTimers.iEmptyRaiseTime), CSPFT_MILLISECONDS },
{"emptyDropTime", offsetof(WeaponFullDef, weapDef.stateTimers.iEmptyDropTime), CSPFT_MILLISECONDS }, {"emptyDropTime", offsetof(WeaponFullDef, weapDef.stateTimers.iEmptyDropTime), CSPFT_MILLISECONDS },
@ -384,8 +354,67 @@ namespace IW5
{"nightVisionRemoveTimeFadeInStart", offsetof(WeaponFullDef, weapDef.stateTimers.nightVisionRemoveTimeFadeInStart), CSPFT_MILLISECONDS }, {"nightVisionRemoveTimeFadeInStart", offsetof(WeaponFullDef, weapDef.stateTimers.nightVisionRemoveTimeFadeInStart), CSPFT_MILLISECONDS },
{"fuseTime", offsetof(WeaponFullDef, weapDef.stateTimers.fuseTime), CSPFT_MILLISECONDS }, {"fuseTime", offsetof(WeaponFullDef, weapDef.stateTimers.fuseTime), CSPFT_MILLISECONDS },
{"aifuseTime", offsetof(WeaponFullDef, weapDef.stateTimers.aiFuseTime), CSPFT_MILLISECONDS }, {"aifuseTime", offsetof(WeaponFullDef, weapDef.stateTimers.aiFuseTime), CSPFT_MILLISECONDS },
{"blastFrontTime", offsetof(WeaponFullDef, weapDef.stateTimers.blastFrontTime), CSPFT_MILLISECONDS },
{"blastRightTime", offsetof(WeaponFullDef, weapDef.stateTimers.blastRightTime), CSPFT_MILLISECONDS },
{"blastBackTime", offsetof(WeaponFullDef, weapDef.stateTimers.blastBackTime), CSPFT_MILLISECONDS },
{"blastLeftTime", offsetof(WeaponFullDef, weapDef.stateTimers.blastLeftTime), CSPFT_MILLISECONDS },
{"raiseInterruptableTime", offsetof(WeaponFullDef, weapDef.stateTimers.raiseInterruptableTime), CSPFT_MILLISECONDS },
{"firstRaiseInterruptableTime", offsetof(WeaponFullDef, weapDef.stateTimers.firstRaiseInterruptableTime), CSPFT_MILLISECONDS },
{"reloadInterruptableTime", offsetof(WeaponFullDef, weapDef.stateTimers.reloadInterruptableTime), CSPFT_MILLISECONDS },
{"reloadEmptyInterruptableTime", offsetof(WeaponFullDef, weapDef.stateTimers.reloadEmptyInterruptableTime), CSPFT_MILLISECONDS },
{"fireInterruptableTime", offsetof(WeaponFullDef, weapDef.stateTimers.fireInterruptableTime), CSPFT_MILLISECONDS },
{"fireDelayAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iFireDelay), CSPFT_MILLISECONDS },
{"meleeDelayAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iMeleeDelay), CSPFT_MILLISECONDS },
{"meleeChargeDelayAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.meleeChargeDelay), CSPFT_MILLISECONDS },
{"rechamberTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iRechamberTime), CSPFT_MILLISECONDS },
{"rechamberTimeOneHandedAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.rechamberTimeOneHanded), CSPFT_MILLISECONDS },
{"rechamberBoltTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iRechamberBoltTime), CSPFT_MILLISECONDS },
{"holdFireTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iHoldFireTime), CSPFT_MILLISECONDS },
{"detonateTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iDetonateTime), CSPFT_MILLISECONDS },
{"detonateDelayAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iDetonateDelay), CSPFT_MILLISECONDS },
{"meleeTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iMeleeTime), CSPFT_MILLISECONDS },
{"meleeChargeTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.meleeChargeTime), CSPFT_MILLISECONDS },
{"reloadTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iReloadTime), CSPFT_MILLISECONDS },
{"reloadShowRocketTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.reloadShowRocketTime), CSPFT_MILLISECONDS },
{"reloadEmptyTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iReloadEmptyTime), CSPFT_MILLISECONDS },
{"reloadAddTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iReloadAddTime), CSPFT_MILLISECONDS },
{"reloadStartTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iReloadStartTime), CSPFT_MILLISECONDS },
{"reloadStartAddTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iReloadStartAddTime), CSPFT_MILLISECONDS },
{"reloadEndTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iReloadEndTime), CSPFT_MILLISECONDS },
{"dropTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iDropTime), CSPFT_MILLISECONDS },
{"raiseTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iRaiseTime), CSPFT_MILLISECONDS },
{"altDropTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iAltDropTime), CSPFT_MILLISECONDS },
{"quickDropTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.quickDropTime), CSPFT_MILLISECONDS },
{"quickRaiseTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.quickRaiseTime), CSPFT_MILLISECONDS },
{"breachRaiseTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iBreachRaiseTime), CSPFT_MILLISECONDS },
{"emptyRaiseTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iEmptyRaiseTime), CSPFT_MILLISECONDS },
{"emptyDropTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.iEmptyDropTime), CSPFT_MILLISECONDS },
{"sprintInTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.sprintInTime), CSPFT_MILLISECONDS },
{"sprintLoopTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.sprintLoopTime), CSPFT_MILLISECONDS },
{"sprintOutTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.sprintOutTime), CSPFT_MILLISECONDS },
{"stunnedTimeBeginAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.stunnedTimeBegin), CSPFT_MILLISECONDS },
{"stunnedTimeLoopAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.stunnedTimeLoop), CSPFT_MILLISECONDS },
{"stunnedTimeEndAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.stunnedTimeEnd), CSPFT_MILLISECONDS },
{"nightVisionWearTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.nightVisionWearTime), CSPFT_MILLISECONDS },
{"nightVisionWearTimeFadeOutEndAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.nightVisionWearTimeFadeOutEnd), CSPFT_MILLISECONDS },
{"nightVisionWearTimePowerUpAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.nightVisionWearTimePowerUp), CSPFT_MILLISECONDS },
{"nightVisionRemoveTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.nightVisionRemoveTime), CSPFT_MILLISECONDS },
{"nightVisionRemoveTimePowerDownAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.nightVisionRemoveTimePowerDown), CSPFT_MILLISECONDS },
{"nightVisionRemoveTimeFadeInStartAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.nightVisionRemoveTimeFadeInStart), CSPFT_MILLISECONDS },
{"fuseTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.fuseTime), CSPFT_MILLISECONDS },
{"aifuseTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.aiFuseTime), CSPFT_MILLISECONDS },
{"blastFrontTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.blastFrontTime), CSPFT_MILLISECONDS },
{"blastRightTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.blastRightTime), CSPFT_MILLISECONDS },
{"blastBackTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.blastBackTime), CSPFT_MILLISECONDS },
{"blastLeftTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.blastLeftTime), CSPFT_MILLISECONDS },
{"raiseInterruptableTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.raiseInterruptableTime), CSPFT_MILLISECONDS },
{"firstRaiseInterruptableTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.firstRaiseInterruptableTime), CSPFT_MILLISECONDS },
{"reloadInterruptableTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.reloadInterruptableTime), CSPFT_MILLISECONDS },
{"reloadEmptyInterruptableTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.reloadEmptyInterruptableTime), CSPFT_MILLISECONDS },
{"fireInterruptableTimeAkimbo", offsetof(WeaponFullDef, weapDef.akimboStateTimers.fireInterruptableTime), CSPFT_MILLISECONDS },
{"lockonSupported", offsetof(WeaponFullDef, weapDef.lockonSupported), CSPFT_BOOL }, {"lockonSupported", offsetof(WeaponFullDef, weapDef.lockonSupported), CSPFT_BOOL },
{"requireLockonToFire", offsetof(WeaponFullDef, weapDef.requireLockonToFire), CSPFT_BOOL }, {"requireLockonToFire", offsetof(WeaponFullDef, weapDef.requireLockonToFire), CSPFT_BOOL },
{"isAirburstWeapon", offsetof(WeaponFullDef, weapDef.isAirburstWeapon), CSPFT_BOOL },
{"bigExplosion", offsetof(WeaponFullDef, weapDef.bigExplosion), CSPFT_BOOL }, {"bigExplosion", offsetof(WeaponFullDef, weapDef.bigExplosion), CSPFT_BOOL },
{"noAdsWhenMagEmpty", offsetof(WeaponFullDef, weapDef.noAdsWhenMagEmpty), CSPFT_BOOL }, {"noAdsWhenMagEmpty", offsetof(WeaponFullDef, weapDef.noAdsWhenMagEmpty), CSPFT_BOOL },
{"inheritsPerks", offsetof(WeaponFullDef, weapDef.inheritsPerks), CSPFT_BOOL }, {"inheritsPerks", offsetof(WeaponFullDef, weapDef.inheritsPerks), CSPFT_BOOL },
@ -403,6 +432,8 @@ namespace IW5
{"idleProneFactor", offsetof(WeaponFullDef, weapDef.fIdleProneFactor), CSPFT_FLOAT }, {"idleProneFactor", offsetof(WeaponFullDef, weapDef.fIdleProneFactor), CSPFT_FLOAT },
{"gunMaxPitch", offsetof(WeaponFullDef, weapDef.fGunMaxPitch), CSPFT_FLOAT }, {"gunMaxPitch", offsetof(WeaponFullDef, weapDef.fGunMaxPitch), CSPFT_FLOAT },
{"gunMaxYaw", offsetof(WeaponFullDef, weapDef.fGunMaxYaw), CSPFT_FLOAT }, {"gunMaxYaw", offsetof(WeaponFullDef, weapDef.fGunMaxYaw), CSPFT_FLOAT },
{"adsIdleLerpStartTime", offsetof(WeaponFullDef, weapDef.adsIdleLerpStartTime), CSPFT_FLOAT },
{"adsIdleLerpTime", offsetof(WeaponFullDef, weapDef.adsIdleLerpTime), CSPFT_FLOAT },
{"swayMaxAngle", offsetof(WeaponFullDef, weapDef.swayMaxAngle), CSPFT_FLOAT }, {"swayMaxAngle", offsetof(WeaponFullDef, weapDef.swayMaxAngle), CSPFT_FLOAT },
{"swayLerpSpeed", offsetof(WeaponFullDef, weapDef.swayLerpSpeed), CSPFT_FLOAT }, {"swayLerpSpeed", offsetof(WeaponFullDef, weapDef.swayLerpSpeed), CSPFT_FLOAT },
{"swayPitchScale", offsetof(WeaponFullDef, weapDef.swayPitchScale), CSPFT_FLOAT }, {"swayPitchScale", offsetof(WeaponFullDef, weapDef.swayPitchScale), CSPFT_FLOAT },
@ -420,6 +451,8 @@ namespace IW5
{"armorPiercing", offsetof(WeaponFullDef, weapDef.armorPiercing), CSPFT_BOOL }, {"armorPiercing", offsetof(WeaponFullDef, weapDef.armorPiercing), CSPFT_BOOL },
{"boltAction", offsetof(WeaponFullDef, weapDef.bBoltAction), CSPFT_BOOL }, {"boltAction", offsetof(WeaponFullDef, weapDef.bBoltAction), CSPFT_BOOL },
{"aimDownSight", offsetof(WeaponFullDef, weapDef.aimDownSight), CSPFT_BOOL }, {"aimDownSight", offsetof(WeaponFullDef, weapDef.aimDownSight), CSPFT_BOOL },
{"canHoldBreath", offsetof(WeaponFullDef, weapDef.canHoldBreath), CSPFT_BOOL },
{"canVariableZoom", offsetof(WeaponFullDef, weapDef.canVariableZoom), CSPFT_BOOL },
{"rechamberWhileAds", offsetof(WeaponFullDef, weapDef.bRechamberWhileAds), CSPFT_BOOL }, {"rechamberWhileAds", offsetof(WeaponFullDef, weapDef.bRechamberWhileAds), CSPFT_BOOL },
{"bBulletExplosiveDamage", offsetof(WeaponFullDef, weapDef.bBulletExplosiveDamage), CSPFT_BOOL }, {"bBulletExplosiveDamage", offsetof(WeaponFullDef, weapDef.bBulletExplosiveDamage), CSPFT_BOOL },
{"adsViewErrorMin", offsetof(WeaponFullDef, weapDef.adsViewErrorMin), CSPFT_FLOAT }, {"adsViewErrorMin", offsetof(WeaponFullDef, weapDef.adsViewErrorMin), CSPFT_FLOAT },
@ -480,6 +513,8 @@ namespace IW5
{"projImpactExplode", offsetof(WeaponFullDef, weapDef.bProjImpactExplode), CSPFT_BOOL }, {"projImpactExplode", offsetof(WeaponFullDef, weapDef.bProjImpactExplode), CSPFT_BOOL },
{"stickiness", offsetof(WeaponFullDef, weapDef.stickiness), WFT_STICKINESS }, {"stickiness", offsetof(WeaponFullDef, weapDef.stickiness), WFT_STICKINESS },
{"stickToPlayers", offsetof(WeaponFullDef, weapDef.stickToPlayers), CSPFT_BOOL }, {"stickToPlayers", offsetof(WeaponFullDef, weapDef.stickToPlayers), CSPFT_BOOL },
{"stickToVehicles", offsetof(WeaponFullDef, weapDef.stickToVehicles), CSPFT_BOOL },
{"stickToTurrets", offsetof(WeaponFullDef, weapDef.stickToTurrets), CSPFT_BOOL },
{"hasDetonator", offsetof(WeaponFullDef, weapDef.hasDetonator), CSPFT_BOOL }, {"hasDetonator", offsetof(WeaponFullDef, weapDef.hasDetonator), CSPFT_BOOL },
{"disableFiring", offsetof(WeaponFullDef, weapDef.disableFiring), CSPFT_BOOL }, {"disableFiring", offsetof(WeaponFullDef, weapDef.disableFiring), CSPFT_BOOL },
{"timedDetonation", offsetof(WeaponFullDef, weapDef.timedDetonation), CSPFT_BOOL }, {"timedDetonation", offsetof(WeaponFullDef, weapDef.timedDetonation), CSPFT_BOOL },
@ -488,7 +523,11 @@ namespace IW5
{"freezeMovementWhenFiring", offsetof(WeaponFullDef, weapDef.freezeMovementWhenFiring), CSPFT_BOOL }, {"freezeMovementWhenFiring", offsetof(WeaponFullDef, weapDef.freezeMovementWhenFiring), CSPFT_BOOL },
{"lowAmmoWarningThreshold", offsetof(WeaponFullDef, weapDef.lowAmmoWarningThreshold), CSPFT_FLOAT }, {"lowAmmoWarningThreshold", offsetof(WeaponFullDef, weapDef.lowAmmoWarningThreshold), CSPFT_FLOAT },
{"ricochetChance", offsetof(WeaponFullDef, weapDef.ricochetChance), CSPFT_FLOAT }, {"ricochetChance", offsetof(WeaponFullDef, weapDef.ricochetChance), CSPFT_FLOAT },
{"riotShieldEnableDamage", offsetof(WeaponFullDef, weapDef.riotShieldEnableDamage), CSPFT_BOOL },
{"riotShieldHealth", offsetof(WeaponFullDef, weapDef.riotShieldHealth), CSPFT_INT },
{"riotShieldDamageMult", offsetof(WeaponFullDef, weapDef.riotShieldDamageMult), CSPFT_FLOAT },
{"offhandHoldIsCancelable", offsetof(WeaponFullDef, weapDef.offhandHoldIsCancelable), CSPFT_BOOL }, {"offhandHoldIsCancelable", offsetof(WeaponFullDef, weapDef.offhandHoldIsCancelable), CSPFT_BOOL },
{"doNotAllowAttachmentsToOverrideSpread", offsetof(WeaponFullDef, weapDef.doNotAllowAttachmentsToOverrideSpread), CSPFT_BOOL },
{"parallelDefaultBounce", offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_DEFAULT]), CSPFT_FLOAT }, {"parallelDefaultBounce", offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_DEFAULT]), CSPFT_FLOAT },
{"parallelBarkBounce", offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_BARK]), CSPFT_FLOAT }, {"parallelBarkBounce", offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_BARK]), CSPFT_FLOAT },
{"parallelBrickBounce", offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_BRICK]), CSPFT_FLOAT }, {"parallelBrickBounce", offsetof(WeaponFullDef, parallelBounce[SURF_TYPE_BRICK]), CSPFT_FLOAT },
@ -684,6 +723,10 @@ namespace IW5
{"tracerType", offsetof(WeaponFullDef, weapDef.tracerType), CSPFT_TRACER }, {"tracerType", offsetof(WeaponFullDef, weapDef.tracerType), CSPFT_TRACER },
{"adsDofStart", offsetof(WeaponFullDef, weapCompleteDef.adsDofStart), CSPFT_FLOAT }, {"adsDofStart", offsetof(WeaponFullDef, weapCompleteDef.adsDofStart), CSPFT_FLOAT },
{"adsDofEnd", offsetof(WeaponFullDef, weapCompleteDef.adsDofEnd), CSPFT_FLOAT }, {"adsDofEnd", offsetof(WeaponFullDef, weapCompleteDef.adsDofEnd), CSPFT_FLOAT },
{"turretADSEnabled", offsetof(WeaponFullDef, weapDef.turretADSEnabled), CSPFT_BOOL },
{"turretADSTime", offsetof(WeaponFullDef, weapDef.turretADSTime), CSPFT_FLOAT },
{"turretFov", offsetof(WeaponFullDef, weapDef.turretFov), CSPFT_FLOAT },
{"turretFovADS", offsetof(WeaponFullDef, weapDef.turretFovADS), CSPFT_FLOAT },
{"turretScopeZoomRate", offsetof(WeaponFullDef, weapDef.turretScopeZoomRate), CSPFT_FLOAT }, {"turretScopeZoomRate", offsetof(WeaponFullDef, weapDef.turretScopeZoomRate), CSPFT_FLOAT },
{"turretScopeZoomMin", offsetof(WeaponFullDef, weapDef.turretScopeZoomMin), CSPFT_FLOAT }, {"turretScopeZoomMin", offsetof(WeaponFullDef, weapDef.turretScopeZoomMin), CSPFT_FLOAT },
{"turretScopeZoomMax", offsetof(WeaponFullDef, weapDef.turretScopeZoomMax), CSPFT_FLOAT }, {"turretScopeZoomMax", offsetof(WeaponFullDef, weapDef.turretScopeZoomMax), CSPFT_FLOAT },
@ -726,6 +769,8 @@ namespace IW5
{"missileConeSoundCrossfadeEnabled", offsetof(WeaponFullDef, weapDef.missileConeSoundCrossfadeEnabled), CSPFT_BOOL }, {"missileConeSoundCrossfadeEnabled", offsetof(WeaponFullDef, weapDef.missileConeSoundCrossfadeEnabled), CSPFT_BOOL },
{"missileConeSoundCrossfadeTopSize", offsetof(WeaponFullDef, weapDef.missileConeSoundCrossfadeTopSize), CSPFT_FLOAT }, {"missileConeSoundCrossfadeTopSize", offsetof(WeaponFullDef, weapDef.missileConeSoundCrossfadeTopSize), CSPFT_FLOAT },
{"missileConeSoundCrossfadeBottomSize", offsetof(WeaponFullDef, weapDef.missileConeSoundCrossfadeBottomSize), CSPFT_FLOAT }, {"missileConeSoundCrossfadeBottomSize", offsetof(WeaponFullDef, weapDef.missileConeSoundCrossfadeBottomSize), CSPFT_FLOAT },
{"stowTag", offsetof(WeaponFullDef, weapDef.stowTag), CSPFT_SCRIPT_STRING },
{"stowOffsetModel", offsetof(WeaponFullDef, weapDef.stowOffsetModel), CSPFT_XMODEL },
{"attachments", offsetof(WeaponFullDef, scopes), WFT_ATTACHMENT }, {"attachments", offsetof(WeaponFullDef, scopes), WFT_ATTACHMENT },
{"animOverrides", offsetof(WeaponFullDef, weapCompleteDef.animOverrides), WFT_ANIM_OVERRIDES }, {"animOverrides", offsetof(WeaponFullDef, weapCompleteDef.animOverrides), WFT_ANIM_OVERRIDES },
{"soundOverrides", offsetof(WeaponFullDef, weapCompleteDef.soundOverrides), WFT_SOUND_OVERRIDES }, {"soundOverrides", offsetof(WeaponFullDef, weapCompleteDef.soundOverrides), WFT_SOUND_OVERRIDES },

View File

@ -76,13 +76,13 @@ namespace IW5
FillFromEnumInt(std::string(field.szName), field.iOffset, guidedMissileNames, std::extent_v<decltype(guidedMissileNames)>); FillFromEnumInt(std::string(field.szName), field.iOffset, guidedMissileNames, std::extent_v<decltype(guidedMissileNames)>);
break; break;
case WFT_BOUNCE_SOUND: case WFT_PER_SURFACE_TYPE_SOUND:
{ {
const auto* bounceSound = *reinterpret_cast<SndAliasCustom**>(reinterpret_cast<uintptr_t>(m_structure) + field.iOffset); const auto* perSurfaceTypeSound = *reinterpret_cast<SndAliasCustom**>(reinterpret_cast<uintptr_t>(m_structure) + field.iOffset);
if (bounceSound && bounceSound->name) if (perSurfaceTypeSound && perSurfaceTypeSound->name)
{ {
const std::string firstBounceSound(bounceSound->name->soundName); const std::string firstBounceSound(perSurfaceTypeSound->name->soundName);
const auto endOfBouncePrefix = firstBounceSound.rfind("_default"); const auto endOfBouncePrefix = firstBounceSound.rfind("_default");
assert(endOfBouncePrefix != std::string::npos); assert(endOfBouncePrefix != std::string::npos);

View File

@ -117,6 +117,10 @@ void InfoStringFromStructConverter::FillFromBaseField(const cspField_t& field)
break; break;
} }
case CSPFT_SCRIPT_STRING:
FillFromScriptString(std::string(field.szName), field.iOffset);
break;
case CSPFT_NUM_BASE_FIELD_TYPES: case CSPFT_NUM_BASE_FIELD_TYPES:
default: default:
assert(false); assert(false);