class CAI_NPC_TrooperVData : public CAI_CitadelNPCVData
{
public:
    TrooperType_t m_TrooperType;
    float32 m_flTrooperDamageResistPct;
    float32 m_flPlayerDamageResistPct;
    float32 m_flT1BossDamageResistPct;
    float32 m_flT2BossDamageResistPct;
    float32 m_flT3BossDamageResistPct;
    float32 m_flBarrackGuardianDamageResistPct;
    float32 m_flNearDeathDuration;
    float32 m_flFlySpeed;
    float32 m_flFlyHeight;
    float32 m_flMeleeDamage;
    float32 m_flMeleeDuration;
    float32 m_flMeleeChargeRange;
    // MPropertyDescription = Limit engagement range of Trooper vs Shrine. Final result will be the minimum of "Attack T1 Boss Max Range", "Sight Range NPCs" and "Beam Weapon : Weapon Info : Firing Behavior : Range"
    float32 m_flAttackT1BossMaxRange;
    // MPropertyDescription = Limit engagement range of Trooper vs Shrine. Final result will be the minimum of "Attack T2 Boss Max Range", "Sight Range NPCs" and "Beam Weapon : Weapon Info : Firing Behavior : Range"
    float32 m_flAttackT2BossMaxRange;
    // MPropertyDescription = Limit engagement range of Trooper vs Shrine. Final result will be the minimum of "Attack Shrine Max Range", "Sight Range NPCs" and "Beam Weapon : Weapon Info : Firing Behavior : Range"
    float32 m_flAttackShrineMaxRange;
    // MPropertyDescription = Limit engagement range of Trooper vs Patron Phase 1. Final result will be the minimum of "Attack T3 Boss Max Range", "Sight Range NPCs" and "Beam Weapon : Weapon Info : Firing Behavior : Range"
    float32 m_flAttackT3BossMaxRange;
    // MPropertyDescription = Limit engagement range of Trooper vs Patron Phase 2. Final result will be the minimum of "Attack T3 Boss Phase2 Max Range", "Sight Range NPCs" and "Beam Weapon : Weapon Info : Firing Behavior : Range"
    float32 m_flAttackT3BossPhase2MaxRange;
    // MPropertyDescription = Limit engagement range of Trooper vs Trooper. Final result will be the minimum of "Attack Trooper Max Range", "Sight Range NPCs" and "Beam Weapon : Weapon Info : Firing Behavior : Range"
    float32 m_flAttackTrooperMaxRange;
    float32 m_flHealthBarOffsetDucking;
    // MPropertyStartGroup = Trooper DPS
    // MPropertyDescription = Trooper vs Trooper DPS
    float32 m_flTrooperDPS;
    // MPropertyDescription = Trooper vs Player DPS
    float32 m_flPlayerDPS;
    // MPropertyDescription = Trooper vs T1 Guardian Base DPS 
    float32 m_flT1BossDPS;
    float32 m_flT1BossDPSBaseResist;
    float32 m_flT1BossDPSMaxResist;
    float32 m_flT1BossDPSMaxResistTimeInSeconds;
    // MPropertyDescription = Trooper vs T2 Guardian Base DPS 
    float32 m_flT2BossDPS;
    float32 m_flT2BossDPSBaseResist;
    float32 m_flT2BossDPSMaxResist;
    float32 m_flT2BossDPSMaxResistTimeInSeconds;
    // MPropertyDescription = Trooper vs T3 Guardian DPS
    float32 m_flT3BossDPS;
    // MPropertyDescription = Trooper vs Barrack Guardian DPS
    float32 m_flBarrackBossDPS;
    // MPropertyDescription = Trooper vs Generator DPS
    float32 m_flGeneratorBossDPS;
    // MPropertyStartGroup = Visuals
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_BossAttackParticle;
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_LastHitParticle;
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_TargetingLaserParticle;
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_TargetingEyeFlashParticle;
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_sZiplineContainerBreakFromDamageParticle;
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_sZiplineContainerBreakFromLandingParticle;
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_MedicHealActiveParticle;
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_HeadHealthChangeAmberParticle;
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_HeadHealthChangeSapphireParticle;
    // MPropertyStartGroup = Sounds
    CSoundEventName m_sPlayerLastHitSound;
    CSoundEventName m_sCelebrationSound;
    CSoundEventName m_sZiplineContainerBreakSound;
    // MPropertyStartGroup = Modifiers
    CEmbeddedSubclass<CCitadelModifier> m_NearDeathModifier;
    CEmbeddedSubclass<CCitadelModifier> m_ShrinesDownBuffModifier;
};

KV3 Class Defaults

{
    _class = "CAI_NPC_TrooperVData"
    m_sModelName = resource_name:""
    m_hFootstepSounds = ""
    m_vecNavLinkMovementNames = [  ]
    m_flAimConeAngle = 6.0
    m_nMaxHealth = 100
    m_vecIntrinsicModifiers = [  ]
    m_statusEffectMap = 
    {
    }
    m_vecAttachments = [  ]
    m_flHeadDamageMultiplier = 1.5
    m_flChestDamageMultiplier = 1.0
    m_flStomachDamageMultiplier = 1.0
    m_flArmDamageMultiplier = 1.0
    m_flLegDamageMultiplier = 1.0
    m_nMaxAdditionalAmmoBalancingShots = 0
    m_bTakesDamage = true
    m_strDamagedEffect = resource_name:""
    m_bLightsFiresWhenDamaged = false
    m_nRagdollHealth = 0
    m_flImpactEnergyScale = 1.0
    m_bAllowNonZUpMovement = false
    m_bUseDynamicCollisionHull = false
    m_bRequestCapsuleCollision = false
    m_flCapsuleRadiusOverride = 0.0
    m_flCapsuleHeightOverride = 0.0
    m_vecActionDesiredShared = [  ]
    m_sPlayerKilledNpcSound = soundevent:""
    m_sCustomDeathHandshake = ""
    m_sDefaultMovementSettings = ""
    m_mappedMovementSettings = [  ]
    m_bEnableCodeDrivenAnimgraphMovement = false
    m_bEnableAnimgraphTagDrivenStrafing = true
    m_flMassOverride = -1.0
    m_flThreatTemperature = 20.0
    m_flFlashpoint = -1.0
    m_mapBoundAbilities = 
    {
    }
    m_flSightRangePlayers = 0.0
    m_flSightRangeNPCs = 0.0
    m_MeleeAnimName = ""
    m_flMeleeAttemptRange = 80.0
    m_flMeleeHitRange = 80.0
    m_MeleeAttackPoints = [  ]
    m_flMaxHealthBarDrawDistance = 0.0
    m_flWalkSpeed = 300.0
    m_flRunSpeed = 300.0
    m_flTurnRate = 180.0
    m_flAcceleration = 200.0
    m_flStepHeight = 36.0
    m_flJumpAnticipationTime = 0.6
    m_BeamStartSound = soundevent:""
    m_BeamStopSound = soundevent:""
    m_BeamPointStartLoopSound = soundevent:""
    m_BeamPointEndLoopSound = soundevent:""
    m_BeamPointClosestLoopSound = soundevent:""
    m_strAmbientLoopSound = soundevent:""
    m_DeathSound = soundevent:""
    m_strLastHitSound = soundevent:""
    m_bPlayLastHitSound = true
    m_flLastHitSoundWindowTime = 1.0
    m_MeleeHitSound = soundevent:""
    m_MeleeHitPlayerSound = soundevent:""
    m_sAmberModelName = resource_name:""
    m_sSapphireModelName = resource_name:""
    m_sDefaultMaterialGroupName = ""
    m_sEnemyMaterialGroupName = ""
    m_sTeam1MaterialGroupName = ""
    m_sTeam2MaterialGroupName = ""
    m_MeleeSwingParticle = resource_name:""
    m_MeleeActivateParticle = resource_name:""
    m_flModelScale = 1.0
    m_DeathParticle = resource_name:""
    m_JumpParticle = resource_name:""
    m_flOutlineRange = 2000.0
    m_flOutlineWidth = 4.0
    m_bOutlineThroughWalls = false
    m_bOutlineWhenVisible = false
    m_bSuppressOtherOutlinesWhenVisible = false
    m_HealthBarParticle = resource_name:""
    m_sHealthBarAttachment = ""
    m_HealthBarColorFriend = [ 0, 0, 0, 0 ]
    m_HealthBarColorEnemy = [ 0, 0, 0, 0 ]
    m_HealthBarColorTeam1 = [ 0, 0, 0, 0 ]
    m_HealthBarColorTeam2 = [ 0, 0, 0, 0 ]
    m_HealthBarColorTeamNeutral = [ 0, 0, 0, 0 ]
    m_flMeleeTargetRadius = 0.0
    m_flHealthBarOffset = 0.0
    m_bSpawnBreakablesOnDeath = false
    m_flBreakableForceScale = 1.0
    m_flPhysicsImpulseMultiplier = 1.0
    m_flBeamWeaponWidth = 1.0
    m_flBeamTurnRate = 90.0
    m_BeamWeaponParticle = resource_name:""
    m_WeaponInfo = 
    {
        m_flBulletDamage = 0.0
        m_eDamageType = "CITADEL_DAMAGETYPE_BULLET"
        m_iBullets = 1
        m_iSplitShotsMax = -1
        m_bHitOnceAcrossAllBullets = false
        m_iBulletsToFullyClaimOrb = 1
        m_flExplosionRadius = 0.0
        m_flExplosionDamageScaleAtMaxRadius = 0.3
        m_bAllowExplosionToCollectGold = false
        m_iClipSize = 0
        m_flCycleTime = 0.15
        m_flBulletCreationDelay = 0.0
        m_iBurstShotCount = 1
        m_flIntraBurstCycleTime = 0.0
        m_iAmmoConsumedPerShot = 1
        m_flRange = 8192.0
        m_flRangeWhileZoomed = 0.0
        m_flDamageFalloffStartRange = 0.0
        m_flDamageFalloffEndRange = 900.0
        m_flDamageFalloffBias = 0.5
        m_flDamageFalloffStartScale = 1.0
        m_flDamageFalloffEndScale = 0.0
        m_bDontPassThroughPortals = false
        m_bPlayImpactEffectsOnTeammates = false
        m_flPenetrationPercent = 0.0
        m_flIronSightsTime = 0.1
        m_reloadDuration = 0.0
        m_bReloadUseActiveWeaponInfoDuration = false
        m_bReloadSingleBullets = false
        m_bReloadSingleBulletsAllowCancel = false
        m_flReloadSingleBulletsInitialDelay = 0.0
        m_bCanCrit = true
        m_flCritBonusStartRange = 0.0
        m_flCritBonusEndRange = 0.0
        m_flCritBonusStart = 1.0
        m_flCritBonusEnd = 1.0
        m_flCritBonusAgainstNPCs = 0.2
        m_eCritFilter = "CITADEL_UNIT_TARGET_ALL"
        m_eCritAlwaysFilter = ""
        m_bSpinsUp = false
        m_flMaxSpinCycleTime = -1.0
        m_flSpinIncreaseRate = 0.0
        m_flSpinDecayRate = 0.0
        m_flBuildUpRate = -1.0
        m_bIsSemiAuto = false
        m_flBulletSpeed = 1000.0
        m_flBulletSpeedRandomFactor = 0.0
        m_flBulletGravityScale = 1.0
        m_flBulletRadius = 0.0
        m_flBulletRadiusVsWorld = 0.0
        m_flBulletLifetime = 0.0
        m_flVerticalAimBias = 0.0
        m_flBulletInheritShooterVelocityScale = 0.0
        m_bCanZoom = true
        m_flZoomFOV = 70.0
        m_flZoomFOV_Relative = -5.0
        m_flZoomMoveSpeedPercent = 0.75
        m_flShootMoveSpeedPercent = 0.75
        m_flReloadMoveSpeedPercent = 1.0
        m_bUsesSpreadPattern = true
        m_Spread = 0.2
        m_bFirstShotPerfectAccuracy = false
        m_AimingShootSpreadPenalty = 0.0
        m_flScatterYawScale = 1.0
        m_flShootSpreadPenaltyPerShot = 0.0
        m_ShootSpreadPenaltyPerShotNormalization = 
        {
            m_bNormalizeSpreadPerShot = false
            m_FireRatePctRange = [ 0.0, 100.0 ]
            m_SpreadPerShotFactor = 1.0
        }
        m_flShootSpreadPenaltyDecayDelay = -1.0
        m_flShootSpreadPenaltyDecay = 1.0
        m_flSpreadPenaltyDecay = 3.0
        m_flShootingUpSpreadPenalty = 0.0
        m_flAutoReplenishClip = 0.0
        m_NpcAimingSpread = 0.0
        m_vecScatterOffsets = [  ]
        m_flPelletScatterFactor = 1.0
        m_flPelletScatterSpreadFactor = 0.5
        m_bApplySpreadToFirstPellet = false
        m_vecOriginOffsets = [  ]
        m_flVerticalPunch = 1.0
        m_flHorizontalPunch = 0.5
        m_HorizontalRecoil = 
        {
            m_Range = 0.0
            m_flBurstSlope = 0.0
            m_flBurstExponent = 1.0
            m_flBurstConstant = 0.0
        }
        m_VerticallRecoil = 
        {
            m_Range = 0.0
            m_flBurstSlope = 0.0
            m_flBurstExponent = 1.0
            m_flBurstConstant = 0.0
        }
        m_flRecoilSpeed = 1.0
        m_flRecoilRecoveryDelayFactor = 1.0
        m_flRecoilRecoverySpeed = 1.0
        m_flRecoilShotIndexRecoveryTimeFactor = 0.25
        m_nRecoilSeed = 0
        m_szBulletTravelTracerParticle = resource_name:"particles/weapon_fx/default_tracer.vpcf"
        m_szSelfBulletTravelTracerParticle = resource_name:""
        m_szBulletLinkParticle = resource_name:""
        m_bUseDesatForFriendlyNonHeroTracer = true
        m_eAttachmentSourceType = "EAttachmentSource_WeaponMuzzles"
        m_strCustomAttachmentSource = "ability_cast"
        m_szMuzzleFlashEffectName = resource_name:""
        m_strWeaponImpactEffect = resource_name:""
        m_mapImpactEffects = 
        {
        }
        m_bUseWeaponAbilityName = false
        m_flDamageForce = 50.0
        m_strShootSound = soundevent:""
        m_strFirstShotSound = soundevent:""
        m_strShotReleaseSound = soundevent:""
        m_strBulletLoopingSound = soundevent:""
        m_strBulletWhizSound = soundevent:""
        m_strBulletImpactSound = soundevent:""
        m_flBulletWhizDistance = 150.0
        m_strReloadSound = soundevent:""
        m_strReloadEndSound = soundevent:""
        m_strLocalPlayerBulletImpactSound = soundevent:""
        m_strLocalPlayerBulletImpactHeavySound = soundevent:""
        m_strZoomInSound = soundevent:""
        m_strZoomOutSound = soundevent:""
        m_strSpinUpSound = soundevent:""
        m_strSpinDownSound = soundevent:""
        m_strSpinUpLoopSound = soundevent:""
        m_flMaxLagCompensation = 340282346638528859811704183484516925440.0
    }
    m_TrooperType = "TROOPER_NORMAL"
    m_flTrooperDamageResistPct = 0.0
    m_flPlayerDamageResistPct = 0.0
    m_flT1BossDamageResistPct = 0.0
    m_flT2BossDamageResistPct = 0.0
    m_flT3BossDamageResistPct = 0.0
    m_flBarrackGuardianDamageResistPct = 0.0
    m_flNearDeathDuration = 0.0
    m_flFlySpeed = 0.0
    m_flFlyHeight = 0.0
    m_flMeleeDamage = 0.0
    m_flMeleeDuration = 0.0
    m_flMeleeChargeRange = 0.0
    m_flAttackT1BossMaxRange = 0.0
    m_flAttackT2BossMaxRange = 0.0
    m_flAttackShrineMaxRange = 0.0
    m_flAttackT3BossMaxRange = 0.0
    m_flAttackT3BossPhase2MaxRange = 0.0
    m_flAttackTrooperMaxRange = 0.0
    m_flHealthBarOffsetDucking = 40.0
    m_flTrooperDPS = 0.0
    m_flPlayerDPS = 0.0
    m_flT1BossDPS = 36.0
    m_flT1BossDPSBaseResist = 70.0
    m_flT1BossDPSMaxResist = -30.0
    m_flT1BossDPSMaxResistTimeInSeconds = 600.0
    m_flT2BossDPS = 80.0
    m_flT2BossDPSBaseResist = 0.0
    m_flT2BossDPSMaxResist = 0.0
    m_flT2BossDPSMaxResistTimeInSeconds = 600.0
    m_flT3BossDPS = 0.0
    m_flBarrackBossDPS = 0.0
    m_flGeneratorBossDPS = 0.0
    m_BossAttackParticle = resource_name:""
    m_LastHitParticle = resource_name:""
    m_TargetingLaserParticle = resource_name:""
    m_TargetingEyeFlashParticle = resource_name:""
    m_sZiplineContainerBreakFromDamageParticle = resource_name:""
    m_sZiplineContainerBreakFromLandingParticle = resource_name:""
    m_MedicHealActiveParticle = resource_name:""
    m_HeadHealthChangeAmberParticle = resource_name:""
    m_HeadHealthChangeSapphireParticle = resource_name:""
    m_sPlayerLastHitSound = soundevent:""
    m_sCelebrationSound = soundevent:""
    m_sZiplineContainerBreakSound = soundevent:""
    m_NearDeathModifier = subclass:
    {
    }
    m_ShrinesDownBuffModifier = subclass:
    {
    }
}