XPlor/libs/assets/weapondef.h

532 lines
14 KiB
C
Raw Normal View History

2025-06-07 11:20:47 -04:00
#ifndef WEAPONDEF_H
#define WEAPONDEF_H
#include "clipmap.h"
#include "soundalias.h"
#include "model.h"
2025-07-10 00:04:52 -04:00
enum WeaponType : __int32
2025-06-07 11:20:47 -04:00
{
WEAPTYPE_BULLET = 0x0,
WEAPTYPE_GRENADE = 0x1,
WEAPTYPE_PROJECTILE = 0x2,
WEAPTYPE_BINOCULARS = 0x3,
WEAPTYPE_NUM = 0x4,
};
2025-07-10 00:04:52 -04:00
enum WeaponClass : __int32
2025-06-07 11:20:47 -04:00
{
WEAPCLASS_RIFLE = 0x0,
WEAPCLASS_MG = 0x1,
WEAPCLASS_SMG = 0x2,
WEAPCLASS_SPREAD = 0x3,
WEAPCLASS_PISTOL = 0x4,
WEAPCLASS_GRENADE = 0x5,
WEAPCLASS_ROCKETLAUNCHER = 0x6,
WEAPCLASS_TURRET = 0x7,
WEAPCLASS_NON_PLAYER = 0x8,
WEAPCLASS_ITEM = 0x9,
WEAPCLASS_NUM = 0xA,
};
enum PenetrateType : __int32
{
PENETRATE_TYPE_NONE = 0x0,
PENETRATE_TYPE_SMALL = 0x1,
PENETRATE_TYPE_MEDIUM = 0x2,
PENETRATE_TYPE_LARGE = 0x3,
PENETRATE_TYPE_COUNT = 0x4,
};
enum ImpactType : __int32
{
IMPACT_TYPE_NONE = 0x0,
IMPACT_TYPE_BULLET_SMALL = 0x1,
IMPACT_TYPE_BULLET_LARGE = 0x2,
IMPACT_TYPE_BULLET_AP = 0x3,
IMPACT_TYPE_SHOTGUN = 0x4,
IMPACT_TYPE_GRENADE_BOUNCE = 0x5,
IMPACT_TYPE_GRENADE_EXPLODE = 0x6,
IMPACT_TYPE_ROCKET_EXPLODE = 0x7,
IMPACT_TYPE_PROJECTILE_DUD = 0x8,
IMPACT_TYPE_COUNT = 0x9,
};
2025-07-10 00:04:52 -04:00
enum WeaponInventoryType : __int32
2025-06-07 11:20:47 -04:00
{
WEAPINVENTORY_PRIMARY = 0x0,
WEAPINVENTORY_OFFHAND = 0x1,
WEAPINVENTORY_ITEM = 0x2,
WEAPINVENTORY_ALTMODE = 0x3,
WEAPINVENTORYCOUNT = 0x4,
};
2025-07-10 00:04:52 -04:00
enum WeaponFireType : __int32
2025-06-07 11:20:47 -04:00
{
WEAPON_FIRETYPE_FULLAUTO = 0x0,
WEAPON_FIRETYPE_SINGLESHOT = 0x1,
WEAPON_FIRETYPE_BURSTFIRE2 = 0x2,
WEAPON_FIRETYPE_BURSTFIRE3 = 0x3,
WEAPON_FIRETYPE_BURSTFIRE4 = 0x4,
WEAPON_FIRETYPECOUNT = 0x5,
};
enum OffhandClass : __int32
{
OFFHAND_CLASS_NONE = 0x0,
OFFHAND_CLASS_FRAG_GRENADE = 0x1,
OFFHAND_CLASS_SMOKE_GRENADE = 0x2,
OFFHAND_CLASS_FLASH_GRENADE = 0x3,
OFFHAND_CLASS_COUNT = 0x4,
};
2025-07-10 00:04:52 -04:00
enum WeaponStance : __int32
2025-06-07 11:20:47 -04:00
{
WEAPSTANCE_STAND = 0x0,
WEAPSTANCE_DUCK = 0x1,
WEAPSTANCE_PRONE = 0x2,
WEAPSTANCE_NUM = 0x3,
};
2025-07-10 00:04:52 -04:00
enum ActiveReticleType : __int32
2025-06-07 11:20:47 -04:00
{
VEH_ACTIVE_RETICLE_NONE = 0x0,
VEH_ACTIVE_RETICLE_PIP_ON_A_STICK = 0x1,
VEH_ACTIVE_RETICLE_BOUNCING_DIAMOND = 0x2,
VEH_ACTIVE_RETICLE_COUNT = 0x3,
};
2025-07-10 00:04:52 -04:00
enum WeaponIconRatioType : __int32
2025-06-07 11:20:47 -04:00
{
WEAPON_ICON_RATIO_1TO1 = 0x0,
WEAPON_ICON_RATIO_2TO1 = 0x1,
WEAPON_ICON_RATIO_4TO1 = 0x2,
WEAPON_ICON_RATIO_COUNT = 0x3,
};
2025-07-10 00:04:52 -04:00
enum AmmoCounterClipType : __int32
2025-06-07 11:20:47 -04:00
{
AMMO_COUNTER_CLIP_NONE = 0x0,
AMMO_COUNTER_CLIP_MAGAZINE = 0x1,
AMMO_COUNTER_CLIP_SHORTMAGAZINE = 0x2,
AMMO_COUNTER_CLIP_SHOTGUN = 0x3,
AMMO_COUNTER_CLIP_ROCKET = 0x4,
AMMO_COUNTER_CLIP_BELTFED = 0x5,
AMMO_COUNTER_CLIP_ALTWEAPON = 0x6,
AMMO_COUNTER_CLIP_COUNT = 0x7,
};
2025-07-10 00:04:52 -04:00
enum WeaponOverlayReticle : __int32
2025-06-07 11:20:47 -04:00
{
WEAPOVERLAYRETICLE_NONE = 0x0,
WEAPOVERLAYRETICLE_CROSSHAIR = 0x1,
WEAPOVERLAYRETICLE_NUM = 0x2,
};
enum WeapOverlayInteface_t : __int32
{
WEAPOVERLAYINTERFACE_NONE = 0x0,
WEAPOVERLAYINTERFACE_JAVELIN = 0x1,
WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2,
WEAPOVERLAYINTERFACECOUNT = 0x3,
};
2025-07-10 00:04:52 -04:00
enum WeaponProjExposion : __int32
2025-06-07 11:20:47 -04:00
{
WEAPPROJEXP_GRENADE = 0x0,
WEAPPROJEXP_ROCKET = 0x1,
WEAPPROJEXP_FLASHBANG = 0x2,
WEAPPROJEXP_NONE = 0x3,
WEAPPROJEXP_DUD = 0x4,
WEAPPROJEXP_SMOKE = 0x5,
WEAPPROJEXP_HEAVY = 0x6,
WEAPPROJEXP_NUM = 0x7,
};
enum WeapStickinessType : __int32
{
WEAPSTICKINESS_NONE = 0x0,
WEAPSTICKINESS_ALL = 0x1,
WEAPSTICKINESS_GROUND = 0x2,
WEAPSTICKINESS_GROUND_WITH_YAW = 0x3,
WEAPSTICKINESS_COUNT = 0x4,
};
2025-07-10 00:04:52 -04:00
enum GuidedMissileType : __int32
2025-06-07 11:20:47 -04:00
{
MISSILE_GUIDANCE_NONE = 0x0,
MISSILE_GUIDANCE_SIDEWINDER = 0x1,
MISSILE_GUIDANCE_HELLFIRE = 0x2,
MISSILE_GUIDANCE_JAVELIN = 0x3,
MISSILE_GUIDANCE_COUNT = 0x4,
};
struct WeaponDef
{
const char *szInternalName;
const char *szDisplayName;
const char *szOverlayName;
Model *gunXModel[16];
Model *handXModel;
const char *szXAnims[33];
const char *szModeName;
unsigned __int16 hideTags[8];
unsigned __int16 notetrackSoundMapKeys[16];
unsigned __int16 notetrackSoundMapValues[16];
int playerAnimType;
2025-07-10 00:04:52 -04:00
WeaponType weapType;
WeaponClass weapClass;
2025-06-07 11:20:47 -04:00
PenetrateType penetrateType;
ImpactType impactType;
2025-07-10 00:04:52 -04:00
WeaponInventoryType inventoryType;
WeaponFireType fireType;
2025-06-07 11:20:47 -04:00
OffhandClass offhandClass;
2025-07-10 00:04:52 -04:00
WeaponStance stance;
2025-06-07 11:20:47 -04:00
const EffectDef *viewFlashEffect;
const EffectDef *worldFlashEffect;
SoundAliasList *pickupSound;
SoundAliasList *pickupSoundPlayer;
SoundAliasList *ammoPickupSound;
SoundAliasList *ammoPickupSoundPlayer;
SoundAliasList *projectileSound;
SoundAliasList *pullbackSound;
SoundAliasList *pullbackSoundPlayer;
SoundAliasList *fireSound;
SoundAliasList *fireSoundPlayer;
SoundAliasList *fireLoopSound;
SoundAliasList *fireLoopSoundPlayer;
SoundAliasList *fireStopSound;
SoundAliasList *fireStopSoundPlayer;
SoundAliasList *fireLastSound;
SoundAliasList *fireLastSoundPlayer;
SoundAliasList *emptyFireSound;
SoundAliasList *emptyFireSoundPlayer;
SoundAliasList *meleeSwipeSound;
SoundAliasList *meleeSwipeSoundPlayer;
SoundAliasList *meleeHitSound;
SoundAliasList *meleeMissSound;
SoundAliasList *rechamberSound;
SoundAliasList *rechamberSoundPlayer;
SoundAliasList *reloadSound;
SoundAliasList *reloadSoundPlayer;
SoundAliasList *reloadEmptySound;
SoundAliasList *reloadEmptySoundPlayer;
SoundAliasList *reloadStartSound;
SoundAliasList *reloadStartSoundPlayer;
SoundAliasList *reloadEndSound;
SoundAliasList *reloadEndSoundPlayer;
SoundAliasList *detonateSound;
SoundAliasList *detonateSoundPlayer;
SoundAliasList *nightVisionWearSound;
SoundAliasList *nightVisionWearSoundPlayer;
SoundAliasList *nightVisionRemoveSound;
SoundAliasList *nightVisionRemoveSoundPlayer;
SoundAliasList *altSwitchSound;
SoundAliasList *altSwitchSoundPlayer;
SoundAliasList *raiseSound;
SoundAliasList *raiseSoundPlayer;
SoundAliasList *firstRaiseSound;
SoundAliasList *firstRaiseSoundPlayer;
SoundAliasList *putawaySound;
SoundAliasList *putawaySoundPlayer;
SoundAliasList **bounceSound;
const EffectDef *viewShellEjectEffect;
const EffectDef *worldShellEjectEffect;
const EffectDef *viewLastShotEjectEffect;
const EffectDef *worldLastShotEjectEffect;
Material *reticleCenter;
Material *reticleSide;
int iReticleCenterSize;
int iReticleSideSize;
int iReticleMinOfs;
2025-07-10 00:04:52 -04:00
ActiveReticleType activeReticleType;
2025-06-07 11:20:47 -04:00
float vStandMove[3];
float vStandRot[3];
float vDuckedOfs[3];
float vDuckedMove[3];
float vDuckedRot[3];
float vProneOfs[3];
float vProneMove[3];
float vProneRot[3];
float fPosMoveRate;
float fPosProneMoveRate;
float fStandMoveMinSpeed;
float fDuckedMoveMinSpeed;
float fProneMoveMinSpeed;
float fPosRotRate;
float fPosProneRotRate;
float fStandRotMinSpeed;
float fDuckedRotMinSpeed;
float fProneRotMinSpeed;
Model *worldModel[16];
Model *worldClipModel;
Model *rocketModel;
Model *knifeModel;
Model *worldKnifeModel;
Material *hudIcon;
2025-07-10 00:04:52 -04:00
WeaponIconRatioType hudIconRatio;
2025-06-07 11:20:47 -04:00
Material *ammoCounterIcon;
2025-07-10 00:04:52 -04:00
WeaponIconRatioType ammoCounterIconRatio;
AmmoCounterClipType ammoCounterClip;
2025-06-07 11:20:47 -04:00
int iStartAmmo;
const char *szAmmoName;
int iAmmoIndex;
const char *szClipName;
int iClipIndex;
int iMaxAmmo;
int iClipSize;
int shotCount;
const char *szSharedAmmoCapName;
int iSharedAmmoCapIndex;
int iSharedAmmoCap;
int damage;
int playerDamage;
int iMeleeDamage;
int iDamageType;
int iFireDelay;
int iMeleeDelay;
int meleeChargeDelay;
int iDetonateDelay;
int iFireTime;
int iRechamberTime;
int iRechamberBoltTime;
int iHoldFireTime;
int iDetonateTime;
int iMeleeTime;
int meleeChargeTime;
int iReloadTime;
int reloadShowRocketTime;
int iReloadEmptyTime;
int iReloadAddTime;
int iReloadStartTime;
int iReloadStartAddTime;
int iReloadEndTime;
int iDropTime;
int iRaiseTime;
int iAltDropTime;
int iAltRaiseTime;
int quickDropTime;
int quickRaiseTime;
int iFirstRaiseTime;
int iEmptyRaiseTime;
int iEmptyDropTime;
int sprintInTime;
int sprintLoopTime;
int sprintOutTime;
int nightVisionWearTime;
int nightVisionWearTimeFadeOutEnd;
int nightVisionWearTimePowerUp;
int nightVisionRemoveTime;
int nightVisionRemoveTimePowerDown;
int nightVisionRemoveTimeFadeInStart;
int fuseTime;
int aiFuseTime;
int requireLockonToFire;
int noAdsWhenMagEmpty;
int avoidDropCleanup;
float autoAimRange;
float aimAssistRange;
float aimAssistRangeAds;
float aimPadding;
float enemyCrosshairRange;
int crosshairColorChange;
float moveSpeedScale;
float adsMoveSpeedScale;
float sprintDurationScale;
float fAdsZoomFov;
float fAdsZoomInFrac;
float fAdsZoomOutFrac;
Material *overlayMaterial;
Material *overlayMaterialLowRes;
2025-07-10 00:04:52 -04:00
WeaponOverlayReticle overlayReticle;
2025-06-07 11:20:47 -04:00
WeapOverlayInteface_t overlayInterface;
float overlayWidth;
float overlayHeight;
float fAdsBobFactor;
float fAdsViewBobMult;
float fHipSpreadStandMin;
float fHipSpreadDuckedMin;
float fHipSpreadProneMin;
float hipSpreadStandMax;
float hipSpreadDuckedMax;
float hipSpreadProneMax;
float fHipSpreadDecayRate;
float fHipSpreadFireAdd;
float fHipSpreadTurnAdd;
float fHipSpreadMoveAdd;
float fHipSpreadDuckedDecay;
float fHipSpreadProneDecay;
float fHipReticleSidePos;
int iAdsTransInTime;
int iAdsTransOutTime;
float fAdsIdleAmount;
float fHipIdleAmount;
float adsIdleSpeed;
float hipIdleSpeed;
float fIdleCrouchFactor;
float fIdleProneFactor;
float fGunMaxPitch;
float fGunMaxYaw;
float swayMaxAngle;
float swayLerpSpeed;
float swayPitchScale;
float swayYawScale;
float swayHorizScale;
float swayVertScale;
float swayShellShockScale;
float adsSwayMaxAngle;
float adsSwayLerpSpeed;
float adsSwayPitchScale;
float adsSwayYawScale;
float adsSwayHorizScale;
float adsSwayVertScale;
int bRifleBullet;
int armorPiercing;
int bBoltAction;
int aimDownSight;
int bRechamberWhileAds;
float adsViewErrorMin;
float adsViewErrorMax;
int bCookOffHold;
int bClipOnly;
int adsFireOnly;
int cancelAutoHolsterWhenEmpty;
int suppressAmmoReserveDisplay;
int enhanced;
int laserSightDuringNightvision;
Material *killIcon;
2025-07-10 00:04:52 -04:00
WeaponIconRatioType killIconRatio;
2025-06-07 11:20:47 -04:00
int flipKillIcon;
Material *dpadIcon;
2025-07-10 00:04:52 -04:00
WeaponIconRatioType dpadIconRatio;
2025-06-07 11:20:47 -04:00
int bNoPartialReload;
int bSegmentedReload;
int iReloadAmmoAdd;
int iReloadStartAdd;
const char *szAltWeaponName;
unsigned int altWeaponIndex;
int iDropAmmoMin;
int iDropAmmoMax;
int blocksProne;
int silenced;
int iExplosionRadius;
int iExplosionRadiusMin;
int iExplosionInnerDamage;
int iExplosionOuterDamage;
float damageConeAngle;
int iProjectileSpeed;
int iProjectileSpeedUp;
int iProjectileSpeedForward;
int iProjectileActivateDist;
float projLifetime;
float timeToAccelerate;
float projectileCurvature;
Model *projectileModel;
2025-07-10 00:04:52 -04:00
WeaponProjExposion projExplosion;
2025-06-07 11:20:47 -04:00
const EffectDef *projExplosionEffect;
int projExplosionEffectForceNormalUp;
const EffectDef *projDudEffect;
SoundAliasList *projExplosionSound;
SoundAliasList *projDudSound;
int bProjImpactExplode;
WeapStickinessType stickiness;
int hasDetonator;
int timedDetonation;
int rotate;
int holdButtonToThrow;
int freezeMovementWhenFiring;
float lowAmmoWarningThreshold;
float parallelBounce[29];
float perpendicularBounce[29];
const EffectDef *projTrailEffect;
float vProjectileColor[3];
2025-07-10 00:04:52 -04:00
GuidedMissileType guidedMissileType;
2025-06-07 11:20:47 -04:00
float maxSteeringAccel;
int projIgnitionDelay;
const EffectDef *projIgnitionEffect;
SoundAliasList *projIgnitionSound;
float fAdsAimPitch;
float fAdsCrosshairInFrac;
float fAdsCrosshairOutFrac;
int adsGunKickReducedKickBullets;
float adsGunKickReducedKickPercent;
float fAdsGunKickPitchMin;
float fAdsGunKickPitchMax;
float fAdsGunKickYawMin;
float fAdsGunKickYawMax;
float fAdsGunKickAccel;
float fAdsGunKickSpeedMax;
float fAdsGunKickSpeedDecay;
float fAdsGunKickStaticDecay;
float fAdsViewKickPitchMin;
float fAdsViewKickPitchMax;
float fAdsViewKickYawMin;
float fAdsViewKickYawMax;
float fAdsViewKickCenterSpeed;
float fAdsViewScatterMin;
float fAdsViewScatterMax;
float fAdsSpread;
int hipGunKickReducedKickBullets;
float hipGunKickReducedKickPercent;
float fHipGunKickPitchMin;
float fHipGunKickPitchMax;
float fHipGunKickYawMin;
float fHipGunKickYawMax;
float fHipGunKickAccel;
float fHipGunKickSpeedMax;
float fHipGunKickSpeedDecay;
float fHipGunKickStaticDecay;
float fHipViewKickPitchMin;
float fHipViewKickPitchMax;
float fHipViewKickYawMin;
float fHipViewKickYawMax;
float fHipViewKickCenterSpeed;
float fHipViewScatterMin;
float fHipViewScatterMax;
float fightDist;
float maxDist;
const char *accuracyGraphName[2];
float (*accuracyGraphKnots[2])[2];
float (*originalAccuracyGraphKnots[2])[2];
int accuracyGraphKnotCount[2];
int originalAccuracyGraphKnotCount[2];
int iPositionReloadTransTime;
float leftArc;
float rightArc;
float topArc;
float bottomArc;
float accuracy;
float aiSpread;
float playerSpread;
float minTurnSpeed[2];
float maxTurnSpeed[2];
float pitchConvergenceTime;
float yawConvergenceTime;
float suppressTime;
float maxRange;
float fAnimHorRotateInc;
float fPlayerPositionDist;
const char *szUseHintString;
const char *dropHintString;
int iUseHintStringIndex;
int dropHintStringIndex;
float horizViewJitter;
float vertViewJitter;
const char *szScript;
float fOOPosAnimLength[2];
int minDamage;
int minPlayerDamage;
float fMaxDamageRange;
float fMinDamageRange;
float destabilizationRateTime;
float destabilizationCurvatureMax;
int destabilizeDistance;
float locationDamageMultipliers[19];
const char *fireRumble;
const char *meleeImpactRumble;
float adsDofStart;
float adsDofEnd;
};
#endif // WEAPONDEF_H