class CCitadelWeaponInfo{ uint8 pad_0000[8];public: // MPropertyStartGroup = Firing Behavior // MPropertyDescription = Bullet Damage float32 m_flBulletDamage; // MPropertyDescription = Damage TypeECitadelDamageType m_eDamageType; // MPropertyDescription = Number of bullets to fire per shot int32 m_iBullets; // MPropertyDescription = Max to fire upon SplitShot (-1 = use default) int32 m_iSplitShotsMax; // MPropertyDescription = If true, take full damage when hit by any of the bullets rather than being split across all bullets. bool m_bHitOnceAcrossAllBullets; // MPropertyDescription = How many bullets must hit an orb in order to fully claim it. int32 m_iBulletsToFullyClaimOrb; // MPropertyDescription = If > 0, this bullet will apply its damage in a radius where it impacts (this is how to make something like a rocket). float32 m_flExplosionRadius; // MPropertyDescription = Damage scale at the extent of the explosion radius. // MPropertySuppressExpr = m_flExplosionRadius == 0 // MPropertyAttributeRange = 0 1 float32 m_flExplosionDamageScaleAtMaxRadius; // MPropertySuppressExpr = m_flExplosionRadius == 0 // MPropertyDescription = Does the explosion collect gold (i.e soul orbs)? bool m_bAllowExplosionToCollectGold; // MPropertyDescription = Clip Size int32 m_iClipSize; // MPropertyDescription = The time between shots. In burst it's the time between starting a new burst. float32 m_flCycleTime; // MPropertyDescription = A delay after triggering a shot when the bullets comes out. float32 m_flBulletCreationDelay; // MPropertyDescription = How many shots to fire per burst int32 m_iBurstShotCount; // MPropertyDescription = The time between shoots within a burst // MPropertySuppressExpr = m_iBurstShotCount == 1 float32 m_flIntraBurstCycleTime; // MPropertyDescription = How much ammo to consume to shoot this gun. int32 m_iAmmoConsumedPerShot; // MPropertyDescription = The maximum distance bullets will travel float32 m_flRange; // MPropertyDescription = The maximum distance bullets will travel while zoomed. If 0, uses Range. float32 m_flRangeWhileZoomed; // MPropertyDescription = The distance where damage falloff begins. Damage scale before this is clamped to 'Damage Falooff Start Scale'. float32 m_flDamageFalloffStartRange; // MPropertyDescription = The distance where damage falloff ends. Beyond this range, damage scale is clamped to 'Damage Falloff End Scale' float32 m_flDamageFalloffEndRange; // MPropertyDescription = The bias in the damage falloff range // MPropertyAttributeRange = 0 1 float32 m_flDamageFalloffBias; // MPropertyDescription = Damage falloff start range. float32 m_flDamageFalloffStartScale; // MPropertyDescription = Damage falloff end range float32 m_flDamageFalloffEndScale; // MPropertyDescription = If true, this bullet will not pass through portals. It will impact them instead bool m_bDontPassThroughPortals; // MPropertyDescription = If true and the bullet impacted a teammate, should we play an impact effect? bool m_bPlayImpactEffectsOnTeammates; // MPropertyDescription = If > 0, bullets will continue through thin surfaces with their damage scaled by this amount float32 m_flPenetrationPercent; // MPropertyDescription = How long does it takes to aim down sights. float32 m_flIronSightsTime; // MPropertyStartGroup = Firing Behavior/+Reload // MPropertyDescription = How long a reload takes // MPropertyFriendlyName = Reload Duration float32 m_reloadDuration; // MPropertyDescription = Compute duration from the active weapon info, instead of the stat value. Used when overloading GetWeaponInfo() bool m_bReloadUseActiveWeaponInfoDuration; // MPropertyDescription = Reload a single bullet when the reload duration completes rather than the entire clip bool m_bReloadSingleBullets; // MPropertyDescription = Allows canceling out of the reload at any time by firing your gun. bool m_bReloadSingleBulletsAllowCancel; // MPropertyDescription = Initial Delay before starting to reload bullets when using single bullet reload. float32 m_flReloadSingleBulletsInitialDelay; // MPropertyStartGroup = Firing Behavior/Crits // MPropertyDescription = Are we allowed to crit via headshots and weakpoints bool m_bCanCrit; // MPropertyDescription = The distance where crit bonus damage begins to change // MPropertySuppressExpr = m_bCanCrit == false float32 m_flCritBonusStartRange; // MPropertyDescription = The distance where crit bonus damage ends its change // MPropertySuppressExpr = m_bCanCrit == false float32 m_flCritBonusEndRange; // MPropertyDescription = Crit multiplier up to the 'Crit Bonus Start Range' // MPropertySuppressExpr = m_bCanCrit == false float32 m_flCritBonusStart; // MPropertyDescription = Crit multiplier at and beyond 'Crit Bonus End Range' // MPropertySuppressExpr = m_bCanCrit == false float32 m_flCritBonusEnd; // MPropertyDescription = Bonus on top of the multiplier when critting NPCs // MPropertySuppressExpr = m_bCanCrit == false float32 m_flCritBonusAgainstNPCs; // MPropertyDescription = What units can this crit on? // MPropertySuppressExpr = m_bCanCrit == falseCITADEL_UNIT_TARGET_TYPE m_eCritFilter; // MPropertyDescription = What units should always receive a crit // MPropertySuppressExpr = m_bCanCrit == falseCITADEL_UNIT_TARGET_TYPE m_eCritAlwaysFilter; // MPropertyStartGroup = Firing Behavior/Spinup // MPropertyDescription = Does the cycle time of this weapon change the more you fire it? bool m_bSpinsUp; // MPropertyDescription = -1 means use m_flCycleTime // MPropertySuppressExpr = m_bSpinsUp == false float32 m_flMaxSpinCycleTime; // MPropertySuppressExpr = m_bSpinsUp == false float32 m_flSpinIncreaseRate; // MPropertySuppressExpr = m_bSpinsUp == false float32 m_flSpinDecayRate; // MPropertySuppressExpr = m_bSpinsUp == false float32 m_flBuildUpRate; // MPropertyStartGroup = Firing Behavior/SemiAuto // MPropertyDescription = Does this weapon function as semi-auto, i.e you have to release the key to fire again bool m_bIsSemiAuto; // MPropertyStartGroup = Bullet Travel float32 m_flBulletSpeed; float32 m_flBulletSpeedRandomFactor; float32 m_flBulletGravityScale; float32 m_flBulletRadius; float32 m_flBulletRadiusVsWorld; float32 m_flBulletLifetime; float32 m_flVerticalAimBias; // MPropertyDescription = Scale of how much of the owner's currenty velocity to apply to the bullet (think Tribes discs) float32 m_flBulletInheritShooterVelocityScale; // MPropertyStartGroup = Zoom // MPropertyDescription = Do we zoom on right-click? bool m_bCanZoom; // MPropertyDescription = Absolute FOV when gun is zoomed. [Obsolete]: See m_flZoomFOV_Relative. // MPropertySuppressExpr = m_bCanZoom == false float32 m_flZoomFOV; // MPropertySuppressExpr = m_bCanZoom == false // MPropertyDescription = FOV Added onto user's base FOV. Should typically be negative. float32 m_flZoomFOV_Relative; // MPropertyStartGroup = Movement Speeds // MPropertyDescription = How fast we can walk when zoomed/shooting/reloading float32 m_flZoomMoveSpeedPercent; float32 m_flShootMoveSpeedPercent; float32 m_flReloadMoveSpeedPercent; // MPropertyStartGroup = Spread // MPropertyDescription = Does the weapon use our consistent spiral spread pattern? Turn off for true random spread. bool m_bUsesSpreadPattern; // MPropertyDescription = Base spread when shooting down sights float32 m_Spread; // MPropertyDescription = Does the first shot ( e.g. at min decay ) ignore spread? bool m_bFirstShotPerfectAccuracy; // MPropertyDescription = Shooting spread penalty when shooting down sights CRangeFloat m_AimingShootSpreadPenalty; // MPropertyDescription = Scale of multi-bullet (shotgun) spread in Y-axis float32 m_flScatterYawScale; // MPropertyDescription = Spread increase per shot. 0-1, % of max shoot penalty to add per shot. float32 m_flShootSpreadPenaltyPerShot; // MPropertyDescription = How much to normalize shoot spread penalty per shot based on fire rate pct. Y values between 0.0-1.0CitadelSpreadPerShotNormalization_t m_ShootSpreadPenaltyPerShotNormalization; // MPropertyDescription = Delay after shooting stops to start decaying shooting spread penalty. -1 means use Cycle Time float32 m_flShootSpreadPenaltyDecayDelay; // MPropertyDescription = How much shoot spread penalty to decay per second float32 m_flShootSpreadPenaltyDecay; // MPropertyDescription = Spread penalty decay. This is used for things like mantle and dash. float32 m_flSpreadPenaltyDecay; // MPropertyDescription = NPCS ONLY. Spread penalty when aiming up float32 m_flShootingUpSpreadPenalty; // MPropertyDescription = NPCS ONLY. The amount of time the weapon is idle befoer we fully replenish the clip (0 means don't do it) float32 m_flAutoReplenishClip; // MPropertyDescription = NPCS ONLY. Aiming spread for npc guns. CRangeFloat m_NpcAimingSpread; // MPropertyDescription = Shotgun Scatter offsets. Allows you to manually define where pellets from shotguns go. CUtlVector<Vector2D> m_vecScatterOffsets; // MPropertyDescription = Shotgun Scatter pellet factor. Spread for shotguns is used to determine per pellet spread. This control the overall spread of the pattern. float32 m_flPelletScatterFactor; // MPropertyDescription = Shotgun Scatter pellet spread factor. Before applying spread to individual pellets, this factor is applied. No pellet spread is applied to the first bullet. float32 m_flPelletScatterSpreadFactor; // MPropertyDescription = Shotgun Scatter only. Should spread be applied to the first pellet? bool m_bApplySpreadToFirstPellet; // MPropertyDescription = Shotgun Pellet Spawn Origin Offsets. Allows you to manually define where pellets can be created. CUtlVector<Vector2D> m_vecOriginOffsets; // MPropertyStartGroup = Recoil // MPropertyDescription = Vertical view punch per shot float32 m_flVerticalPunch; // MPropertyDescription = Horizontal view punch per shot float32 m_flHorizontalPunch;CitadelWeaponRecoilData_t m_HorizontalRecoil;CitadelWeaponRecoilData_t m_VerticallRecoil; // MPropertyDescription = Factor for how much faster than cycle time it should take for recoil to reach it's peak. 1 = cycle time, 2 = 1/2 * cycletime, etc. float32 m_flRecoilSpeed; // MPropertyDescription = Factor for how much faster than cycle time before we should start recovering from recoil. float32 m_flRecoilRecoveryDelayFactor; // MPropertyDescription = How fast does recoil recovery down to the original crosshair position. float32 m_flRecoilRecoverySpeed; // MPropertyDescription = What % of cycletime does it take to reduce recoil index by 1. float32 m_flRecoilShotIndexRecoveryTimeFactor; int32 m_nRecoilSeed; // MPropertyStartGroup = Visuals // MPropertyDescription = Effect to actually fire into the world from this weapon. CP3.X = radius, CP3.Y = fire rate, CP3.Z = DPS. CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_szBulletTravelTracerParticle; CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_szSelfBulletTravelTracerParticle; CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_szBulletLinkParticle; bool m_bUseDesatForFriendlyNonHeroTracer; // MPropertyDescription = What attachments to use when shooting this weapon. By default we use the gun muzzles of the model. Change to 'Custom' to allow specifying a custom attachment.EAttachmentSourceType m_eAttachmentSourceType; // MPropertySuppressExpr = m_eAttachmentSourceType != EAttachmentSource_Custom CUtlString m_strCustomAttachmentSource; CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_szMuzzleFlashEffectName; // MPropertyDescription = Bullet impact effect. CP0=position & surface normal, CP1=position & reflect dir, CP2=position & bullet dir, CP3=damage CP4=normal CP5=explosion radius CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_strWeaponImpactEffect; // MPropertyFriendlyName = Surface Impact Effects // MPropertyDescription = Per surface impact effects. CP0=position & surface normal, CP1=position & reflect dir, CP2=position & bullet dir, CP3=damage CP4=normal CP5=explosion radius CUtlOrderedMap<CUtlStringToken, PerSurfaceImpactEffects_t> m_mapImpactEffects; // MPropertyDescription = Use the ability name of the weapon instead of the generic primary weapon name bool m_bUseWeaponAbilityName; // MPropertyDescription = Amount of force to apply to breakables and ragdolls float32 m_flDamageForce; // MPropertyStartGroup = Sounds CSoundEventName m_strShootSound; CSoundEventName m_strFirstShotSound; CSoundEventName m_strShotReleaseSound; CSoundEventName m_strBulletLoopingSound; CSoundEventName m_strBulletWhizSound; CSoundEventName m_strBulletImpactSound; float32 m_flBulletWhizDistance; CSoundEventName m_strReloadSound; CSoundEventName m_strReloadEndSound; CSoundEventName m_strLocalPlayerBulletImpactSound; CSoundEventName m_strLocalPlayerBulletImpactHeavySound; CSoundEventName m_strZoomInSound; CSoundEventName m_strZoomOutSound; CSoundEventName m_strSpinUpSound; CSoundEventName m_strSpinDownSound; CSoundEventName m_strSpinUpLoopSound;private: uint8 pad_0758[28];public: // MPropertyStartGroup = Networking // MPropertyDescription = Max Lag Compensation. Reduces favor-the-shooter is lower than sv_maxunlag float32 m_flMaxLagCompensation;};