// MVDataOverlayType = 2
class CitadelAbilityVData : public CEntitySubclassVDataBase
{
public:
    // MPropertyStartGroup = Meta
    EAbilityType_t m_eAbilityType;
    // MPropertyStartGroup = Meta
    EItemSlotTypes_t m_eItemSlotType;
    bool m_bDisabled;
    bool m_bDisabledOnExperimental;
    bool m_bInDevelopment;
    bool m_bStartTrained;
    int32 m_iMaxLevel;
    int32 m_nAbilityPointsCost;
    int32 m_nAbillityUnlocksCost;
    uint64 m_iUpdateTime;
private:
    uint8 pad_0048[4];
public:
    // MPropertyStartGroup = Behavior
    CBitVecEnum<EAbilityBehavior_t> m_AbilityBehaviorsBits;
    // MPropertyDescription = The location for our ability's targeting to use, used in GetCastPosition and such.  Also determines preview visuals.
    EAbilityTargetingLocation_t m_eAbilityTargetingLocation;
    // MPropertyDescription = The general shape that our ability will target. Unless you choose cone targeting, it ONLY determines preview visuals - you still have to do the targeting separately in code.
    EAbilityTargetingShape_t m_eAbilityTargetingShape;
    // MPropertySuppressExpr = m_eAbilityTargetingShape != CITADEL_ABILITY_TARGETING_SHAPE_CONE
    float32 m_flTargetingConeAngle;
    // MPropertySuppressExpr = m_eAbilityTargetingShape != CITADEL_ABILITY_TARGETING_SHAPE_CONE
    float32 m_flTargetingConeHalfWidth;
    // MPropertyDescription = When true, we will do an extra trace with the same cone shape, but with the cone laying flat in XY
    // MPropertySuppressExpr = m_eAbilityTargetingShape != CITADEL_ABILITY_TARGETING_SHAPE_CONE
    bool m_bIncludeExtra2DCone;
    // MPropertySuppressExpr = m_eAbilityTargetingShape != CITADEL_ABILITY_TARGETING_SHAPE_CONE
    // MPropertyDescription = When true, the cone is cast from the center of the screen, rather than from the center of the character.
    bool m_bUseCameraOffsetsForCone;
    // MPropertySuppressExpr = m_eAbilityTargetingShape != CITADEL_ABILITY_TARGETING_SHAPE_CONE
    // MPropertyDescription = When true, the cone collects nearby targets as well, helpful for melee attacks.
    bool m_bCollectNearbyTargetsWithCone;
    // MPropertySuppressExpr = m_bCollectNearbyTargetsWithCone == false
    float32 m_flNearbySweepOffset;
    // MPropertySuppressExpr = m_bCollectNearbyTargetsWithCone == false
    float32 m_flNearbySweepRadius;
    EAbilityActivation_t m_eAbilityActivation;
    // MPropertyDescription = If set, this button must be down in addition to our trigger button (be default the slot button) in order to activate this ability.
    InputBitMask_t m_TriggerButtonPreReqButton;
    // MPropertyDescription = If set, this is the button requierd to be pressed to activate this ability.
    InputBitMask_t m_TriggerButtonOverride;
    EAbilitySpectatePriority m_eAbilitySpectatePriority;
    CBitVecEnum<EModifierState> m_bitsInterruptingStates;
    IncompatibleFilter_t m_IncompatibleFilter;
    CITADEL_UNIT_TARGET_TYPE m_nAbilityTargetTypes;
    CITADEL_UNIT_TARGET_FLAGS m_nAbilityTargetFlags;
    ELOSCheck m_eTargettingLOSCheck;
    // MPropertyDescription = During pre-cast, what modifier states are set.
    CBitVecEnum<EModifierState> m_bitsPreCastEnabledStateMask;
    // MPropertyDescription = During channel, what modifier states are set.
    CBitVecEnum<EModifierState> m_bitsChannelEnabledStateMask;
    // MPropertyDescription = During post-cast, what modifier states are set.
    CBitVecEnum<EModifierState> m_bitsPostCastEnabledStateMask;
    // MPropertyDescription = This ability provides these types of ability target effects.
    ECitadelTargetAbilityEffects m_TargetAbilityEffectsToApply;
    // MPropertyDescription = Scale Damage to Objectives by this amount
    float32 m_flBossDamageScale;
    bool m_bShowTargetingPreviewWhileChanneling;
    bool m_bShowTargetingPreviewWhileCasting;
    // MPropertyStartGroup
    // MPropertyFriendlyName = Weapon Info
    CCitadelWeaponInfo m_WeaponInfo;
    // MPropertyFriendlyName = Projectile Info
    ProjectileInfo_t m_projectileInfo;
    // MPropertyFriendlyName = Deployment Info
    DeploymentInfo_t m_deploymentInfo;
    // MPropertyStartGroup
    CUtlOrderedMap<CUtlString, CitadelAbilityProperty_t> m_mapAbilityProperties;
    // MPropertyMapKeyLeafChoiceProviderFn = !!UNKNOWN!!
    CUtlOrderedMap<CSubclassName<4>, AbilityDependencyDescription_t> m_mapDependentAbilities;
    CUtlVector<AbilityUpgrade_t> m_vecAbilityUpgrades;
    // MPropertyStartGroup = AnimGraph1
    CGlobalSymbol m_strCastAnimGraphParam;
    // MPropertyDescription = If set, this will be the value passed to the animgraph when this ability is selected instead of the ability name.
    CUtlString m_strSelectionNameOverride;
    CUtlString m_strCastAnimSequenceName;
    // MPropertyStartGroup = AnimGraph2
    // MPropertyDescription = When true, suppress the out of combat anim state for 2s on cast.
    bool m_bSuppressOutOfCombatOnCast;
    // MPropertyDescription = When true, suppress the out of combat anim state while channeling and for 2s after.
    bool m_bSuppressOutOfCombatWhileChanneling;
    // MPropertyFriendlyName = hero_action_source value when doing an action
    // MPropertyDescription = By default uses the ability name.  Set this to use a custom name.
    CGlobalSymbol m_strAG2SourceName;
    // MPropertyFriendlyName = Casting "hero_action" value
    // MPropertyDescription = Value to set "hero_action" to set when casting. "hero_action_source" will be set to this ability's name
    CGlobalSymbol m_strAG2CastingAction;
    // MPropertyFriendlyName = Channeling "hero_action" value
    // MPropertyDescription = Value to set "hero_action" to set when channeling. "hero_action_source" will be set to this ability's name
    CGlobalSymbol m_strAG2ChannelingAction;
    // MPropertyFriendlyName = Cast Completed "hero_action" value
    // MPropertyDescription = Value to set "hero_action" to when casting completes. "hero_action_source" will be set to this ability's name
    CGlobalSymbol m_strAG2CastCompletedAction;
    // MPropertyStartGroup = UI
    // MPropertySuppressExpr = m_bIsSignatureAbility == false
    AbilityTooltipDetails_t m_AbilityTooltipDetails;
    CUtlString m_strCSSClass;
    CPanoramaImageName m_strAbilityImage;
    CUtlString m_strMoviePreviewPath;
    CitadelAbilityHUDPanel_t m_HUDPanel;
    bool m_bShowInPassiveItemsArea;
    bool m_bForceHideHUDPanel;
    bool m_bForceShowHUDPanel;
    bool m_bUsesFlightControls;
    CUtlString m_strFlyUpLocString;
    CUtlString m_strFlyDownLocString;
    // MPropertyDescription = Subcast UI will have this class set
    CUtlString m_strSubCastUICSSClass;
    // MPropertyFriendlyName = Additional Abilities
    AdditionalAbilities_t m_additionalAbilities;
    CUtlString m_strSecondaryStatName;
    // MPropertyDescription = Used by button hints as labels for 'casting' (ex. cast, throw, deploy).
    CUtlString m_strCastButtonLocToken;
    // MPropertyDescription = Used by button hints as labels for 'alt-casting' (ex. cast on self, bring allies, heal teammate).
    CUtlString m_strAltCastButtonLocToken;
    // MPropertyStartGroup = Camera
    // MPropertyDescription = Camera sequence that plays when casting starts and stops when casting completes, unless the bool below is un-checked
    CitadelCameraOperationsSequence_t m_cameraSequenceCastStart;
    // MPropertyDescription = By default, we stop the sequence from 'Sequence Cast Start' once the cast completes successfully.  Un-check this to allow it to continue past the cast.
    bool m_bEndCastStartSequenceOnCastComplete;
    // MPropertyDescription = Camera sequence that plays when casting completes.
    CitadelCameraOperationsSequence_t m_cameraSequenceCastComplete;
    // MPropertyDescription = Camera sequence that plays when channeling starts and is stopped when channeling ends, unless the bool below is un-checked.
    CitadelCameraOperationsSequence_t m_cameraSequenceChannelStart;
    // MPropertyDescription = By default, we stop the sequence from 'Sequence Channel Start' once the channel completes successfully.  Un-check this to allow it to continue past the channel duration.
    bool m_bEndChannelStartSequenceOnChannelComplete;
    float32 m_flCameraPreviewOffset;
    float32 m_flCameraPreviewDistance;
    float32 m_flCameraPreviewSpeed;
    // MPropertyStartGroup = Visuals
    // MPropertyDescription = Preview particle attaching to the caster before cast
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_previewParticle;
    // MPropertyDescription = Name of particle control point config to use for preview particle effect (empty means use 'preview' config)
    CUtlString m_strPreviewParticleEffectConfig;
    // MPropertyDescription = Preview path particle shows ability's custom path
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_PreviewPathParticle;
    // MPropertyDescription = Particle attaching to the caster on cast event
    CUtlOrderedMap<AbilityCastEvent_t, CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>>> m_mapCastEventParticles;
    // MPropertyDescription = Trace particle when hit an enemy with targeted ability
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_skillshotHitParticle;
    // MPropertyDescription = Trace particle when missed an enemy with targeted ability
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_skillshotMissParticle;
    // MPropertyDescription = Preview particle on attaching to targets of this ability
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeIParticleSystemDefinition>> m_TargetingPreviewParticle;
    // MPropertyDescription = CSS stylesheet included in the HUD elements created by this ability
    CResourceNameTyped<CWeakHandle<InfoForResourceTypeCPanoramaStyle>> m_HudSharedStyle;
    // MPropertyStartGroup = Sounds
    CSoundEventName m_strSelectedSound;
    CSoundEventName m_strUnselectedSound;
    CSoundEventName m_strSelectedLoopSound;
    CSoundEventName m_strCastSound;
    CSoundEventName m_strChannelSound;
    CSoundEventName m_strChannelLoopSound;
    CSoundEventName m_strCastDelaySound;
    CSoundEventName m_strCastDelayLoopSound;
    // MPropertyDescription = plays for local player attacker dealing damage with this ability
    CSoundEventName m_strHitConfirmationSound;
    // MPropertyDescription = plays for local player victim taking damage from this ability
    CSoundEventName m_strDamageTakenSound;
    CSoundEventName m_strAbilityOffCooldownSound;
    CSoundEventName m_strAbilityChargeReadySound;
    bool m_bPlayMeepMop;
    // MPropertyStartGroup = Modifiers
    CEmbeddedSubclass<CBaseModifier> m_AutoChannelModifier;
    CEmbeddedSubclass<CBaseModifier> m_AutoCastDelayModifier;
    CUtlVector<CEmbeddedSubclass<CBaseModifier>> m_AutoIntrinsicModifiers;
    // MPropertySuppressExpr = m_eAbilityType != EAbilityType_Cosmetic
    AbilityCosmeticInfo_t m_cosmeticInfo;
};

KV3 Class Defaults

{
    _class = "CitadelAbilityVData"
    m_eAbilityType = "EAbilityType_Invalid"
    m_eItemSlotType = "EItemSlotType_Invalid"
    m_bDisabled = false
    m_bDisabledOnExperimental = false
    m_bInDevelopment = false
    m_bStartTrained = false
    m_iMaxLevel = 1
    m_nAbilityPointsCost = 0
    m_nAbillityUnlocksCost = 0
    m_iUpdateTime = 0
    m_AbilityBehaviorsBits = ""
    m_eAbilityTargetingLocation = "CITADEL_ABILITY_TARGETING_LOCATION_NONE"
    m_eAbilityTargetingShape = "CITADEL_ABILITY_TARGETING_SHAPE_NONE"
    m_flTargetingConeAngle = 0.0
    m_flTargetingConeHalfWidth = 10.0
    m_bIncludeExtra2DCone = true
    m_bUseCameraOffsetsForCone = true
    m_bCollectNearbyTargetsWithCone = false
    m_flNearbySweepOffset = -59.0
    m_flNearbySweepRadius = 78.0
    m_eAbilityActivation = "CITADEL_ABILITY_ACTIVATION_NONE"
    m_TriggerButtonPreReqButton = ""
    m_TriggerButtonOverride = ""
    m_eAbilitySpectatePriority = "CITADELTV_ABILITY_SPECTATE_PRIORITY_NONE"
    m_bitsInterruptingStates = ""
    m_IncompatibleFilter = 
    {
        m_AbilityBehaviorsBits = ""
        m_eAbilityActivation = "CITADEL_ABILITY_ACTIVATION_NONE"
        m_eIncompatibleAbilityType = "EAbilityType_Invalid"
    }
    m_nAbilityTargetTypes = ""
    m_nAbilityTargetFlags = ""
    m_eTargettingLOSCheck = "ELOSCheck_Bounds"
    m_bitsPreCastEnabledStateMask = ""
    m_bitsChannelEnabledStateMask = ""
    m_bitsPostCastEnabledStateMask = ""
    m_TargetAbilityEffectsToApply = ""
    m_flBossDamageScale = 1.0
    m_bShowTargetingPreviewWhileChanneling = false
    m_bShowTargetingPreviewWhileCasting = false
    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_projectileInfo = 
    {
        m_nBehaviors = ""
        m_flGravityScale = 1.0
        m_flFriction = 0.0
        m_flElasticity = 0.0
        m_flSpeed = 3500.0
        m_flUpSpeed = 100.0
        m_flMaxLinearRange = 0.0
        m_flVerticalAimBias = 0.0
        m_eProjectileShape = "Sphere"
        m_flTriggerRadius = 1.5
        m_flPhysicsRadius = 1.5
        m_flBulletOnlyTriggerRadius = 0.0
        m_vecCapsulePhysicsCenter1 = [ 0.0, 0.0, 0.0 ]
        m_vecCapsulePhysicsCenter2 = [ 0.0, 0.0, 0.0 ]
        m_flCapsulePhysicsRadius = 1.5
        m_vecCapsuleTriggerCenter1 = [ 0.0, 0.0, 0.0 ]
        m_vecCapsuleTriggerCenter2 = [ 0.0, 0.0, 0.0 ]
        m_flCapsuleTriggerRadius = 1.5
        m_particle = resource_name:""
        m_bHideWarningParticle = false
        m_warningParticle = resource_name:""
        m_customModel = resource_name:""
        m_flProjectileModelScale = 1.0
        m_HitSound = soundevent:""
        m_HitTargetSound = soundevent:""
        m_HitWorldSound = soundevent:""
        m_DetonateSound = soundevent:""
        m_LoopingSound = soundevent:""
        m_WarningSound = soundevent:""
        m_flTrackingDampingCoefficient = 0.0
        m_flTrackingDuration = 0.0
        m_flTrackingStartTime = 0.0
        m_flTrackingEndTime = 0.0
        m_AutoProjectileModifier = subclass:
        {
        }
    }
    m_deploymentInfo = 
    {
        m_bRequiresUpNormal = false
        m_bGroundCheck = false
        m_bPlaceFlat = false
        m_flFlatYawOffset = 0.0
        m_bPlaceNormalToSurface = false
        m_bPointTrace = false
        m_bCheckPlayerFit = false
        m_flModelVerticalPlacementScaleOffset = 0.0
        m_bDownCheckIgnoreLos = false
        m_previewModel = resource_name:""
        m_previewParticle = resource_name:""
        m_strPreviewParticleEffectConfig = ""
        m_strExraBodygroup = ""
        m_strPreviewClass = "citadel_deployable_preview"
        m_flPreviewModelScale = 1.0
        m_flGroundCheckHeightOffset = -1.0
        m_flGroundCheckHeightOffsetDown = -1.0
    }
    m_mapAbilityProperties = 
    {
    }
    m_mapDependentAbilities = 
    {
    }
    m_vecAbilityUpgrades = [  ]
    m_strCastAnimGraphParam = ""
    m_strSelectionNameOverride = ""
    m_strCastAnimSequenceName = ""
    m_bSuppressOutOfCombatOnCast = true
    m_bSuppressOutOfCombatWhileChanneling = true
    m_strAG2SourceName = ""
    m_strAG2CastingAction = "casting"
    m_strAG2ChannelingAction = "channeling"
    m_strAG2CastCompletedAction = "cast_completed"
    m_AbilityTooltipDetails = 
    {
        m_vecAbilityInfoSections = [  ]
        m_vecAdditionalHeaderProperties = [  ]
    }
    m_strCSSClass = ""
    m_strAbilityImage = panorama:""
    m_strMoviePreviewPath = ""
    m_HUDPanel = 
    {
        m_vecHUDElements = [  ]
        m_vecButtonHints = [  ]
        m_bForceDrawDefaultCastBars = false
    }
    m_bShowInPassiveItemsArea = false
    m_bForceHideHUDPanel = false
    m_bForceShowHUDPanel = false
    m_bUsesFlightControls = false
    m_strFlyUpLocString = ""
    m_strFlyDownLocString = ""
    m_strSubCastUICSSClass = ""
    m_additionalAbilities = 
    {
        m_strTitle = ""
        m_vecAbilityNames = [  ]
    }
    m_strSecondaryStatName = ""
    m_strCastButtonLocToken = ""
    m_strAltCastButtonLocToken = ""
    m_cameraSequenceCastStart = 
    {
        m_strToken = ""
        m_bIsEmpty = false
        m_nPriority = 1
        m_vecDistanceOperations = [  ]
        m_vecFOVOperations = [  ]
        m_vecTargetPosOperations = [  ]
        m_vecVertOffsetOperations = [  ]
        m_vecHorizOffsetOperations = [  ]
    }
    m_bEndCastStartSequenceOnCastComplete = true
    m_cameraSequenceCastComplete = 
    {
        m_strToken = ""
        m_bIsEmpty = false
        m_nPriority = 1
        m_vecDistanceOperations = [  ]
        m_vecFOVOperations = [  ]
        m_vecTargetPosOperations = [  ]
        m_vecVertOffsetOperations = [  ]
        m_vecHorizOffsetOperations = [  ]
    }
    m_cameraSequenceChannelStart = 
    {
        m_strToken = ""
        m_bIsEmpty = false
        m_nPriority = 1
        m_vecDistanceOperations = [  ]
        m_vecFOVOperations = [  ]
        m_vecTargetPosOperations = [  ]
        m_vecVertOffsetOperations = [  ]
        m_vecHorizOffsetOperations = [  ]
    }
    m_bEndChannelStartSequenceOnChannelComplete = true
    m_flCameraPreviewOffset = -1.0
    m_flCameraPreviewDistance = -1.0
    m_flCameraPreviewSpeed = -1.0
    m_previewParticle = resource_name:""
    m_strPreviewParticleEffectConfig = ""
    m_PreviewPathParticle = resource_name:""
    m_mapCastEventParticles = 
    {
    }
    m_skillshotHitParticle = resource_name:""
    m_skillshotMissParticle = resource_name:""
    m_TargetingPreviewParticle = resource_name:""
    m_HudSharedStyle = resource_name:""
    m_strSelectedSound = soundevent:""
    m_strUnselectedSound = soundevent:""
    m_strSelectedLoopSound = soundevent:""
    m_strCastSound = soundevent:""
    m_strChannelSound = soundevent:""
    m_strChannelLoopSound = soundevent:""
    m_strCastDelaySound = soundevent:""
    m_strCastDelayLoopSound = soundevent:""
    m_strHitConfirmationSound = soundevent:""
    m_strDamageTakenSound = soundevent:""
    m_strAbilityOffCooldownSound = soundevent:""
    m_strAbilityChargeReadySound = soundevent:""
    m_bPlayMeepMop = true
    m_AutoChannelModifier = subclass:
    {
    }
    m_AutoCastDelayModifier = subclass:
    {
    }
    m_AutoIntrinsicModifiers = [  ]
    m_cosmeticInfo = 
    {
        m_bIsSeasonal = false
    }
}