pawn.AddAbility("ability_boho_doublehit", (ushort)EAbilitySlot.Signature2);
pawn.RemoveAbility("ability_boho_doublehit");Ability values, by the name modifiers and AddModifier overrides use. Tier columns are what each upgrade adds; "scaling" is how much more the value grows with spirit power or another stat.
| Property | English label | Value | Tier 1 | Tier 2 | Tier 3 | Provides |
| Damage | Damage | 50 | +18 | |||
| MaxStacks | Max Stacks | 6 | ||||
| TechPower | Spirit Power | 0 | TECH_POWER | |||
| WeaponPower | Weapon Damage | 0 | WEAPON_POWER | |||
| BuffDuration | Buff Duration | 4 | ||||
| CombatBarrier | Barrier | 80 | +80 | |||
| AbilityCharges | Charges | 0 | ||||
| BonusMoveSpeed | Move Speed | 2m | +2m | |||
| AbilityCooldown | Cooldown | 14 | ||||
| AbilityDuration | Duration | 0 | ||||
| AbilityCastDelay | Cast Delay | 0.1 | ||||
| AbilityCastRange | Cast Range | 11m | ||||
| ChannelMoveSpeed | -1 | |||||
| MiniJumpVelocity | 0 | |||||
| AbilityChannelTime | Channel Duration | 0 | ||||
| TargetingConeAngle | Attack Angle | 100 | ||||
| TimeBetweenAttacks | 0.35 | |||||
| AbilityResourceCost | 0 | |||||
| CombatBarrierPerStack | 20 | |||||
| AbilityUnitTargetLimit | 16 | |||||
| AbilityPostCastDuration | 0.7 | |||||
| AbilityCooldownBetweenCharge | Charge Delay | -1.0 |
Defined inside this ability. AddModifier finds each by its scoped name.
| Name for AddModifier | Class | Reads ability values |
| ability_boho_doublehit/buff | modifier_boho_doublehit_buff |
| _class | "abiilty_boho_doublehit" |
| _editor | 1 key{
"folder_name": "Hero Boho"
} |
| _multibase | 1 item[ "signature_base" ] |
| m_iMaxLevel | 1 |
| m_WeaponInfo | 103 keys{
"m_Spread": 0.2,
"m_flRange": 8192,
"m_bCanCrit": true,
"m_bCanZoom": true,
"m_bSpinsUp": false,
"m_iBullets": 1,
"m_flZoomFOV": 70,
"m_iClipSize": 0,
"m_bIsSemiAuto": false,
"m_flCycleTime": 0.15,
"m_nRecoilSeed": 0,
"m_flBuildUpRate": -1,
"m_flBulletSpeed": 0,
"m_flRecoilSpeed": 1,
"m_strShootSound": "",
"m_flBulletDamage": 0,
"m_flBulletRadius": 0,
"m_flCritBonusEnd": 1,
"m_iSplitShotsMax": -1,
"m_reloadDuration": 0,
"m_strReloadSound": "",
"m_strSpinUpSound": "",
"m_strZoomInSound": "",
"m_NpcAimingSpread": 0,
"m_VerticallRecoil": {
"m_Range": 0,
"m_flBurstSlope": 0,
"m_flBurstConstant": 0,
"m_flBurstExponent": 1
},
"m_bFiresBackwards": false,
"m_flSpinDecayRate": 0,
"m_flVerticalPunch": 1,
"m_iBurstShotCount": 1,
"m_strZoomOutSound": "",
"m_HorizontalRecoil": {
"m_Range": 0,
"m_flBurstSlope": 0,
"m_flBurstConstant": 0,
"m_flBurstExponent": 1
},
"m_flBulletLifetime": 0,
"m_flCritBonusStart": 1,
"m_flIronSightsTime": 0.1,
"m_mapImpactEffects": {},
"m_strSpinDownSound": "",
"m_flExplosionRadius": 0,
"m_flHorizontalPunch": 0.5,
"m_flScatterYawScale": 1,
"m_flVerticalAimBias": 0,
"m_strFirstShotSound": "",
"m_strReloadEndSound": "",
"m_vecScatterOffsets": [],
"m_flMaxSpinCycleTime": -1,
"m_flRangeWhileZoomed": 0,
"m_flSpinIncreaseRate": 0,
"m_flZoomFOV_Relative": -5,
"m_strBulletWhizSound": "",
"m_strSpinUpLoopSound": "",
"m_flAutoReplenishClip": 0,
"m_flCritBonusEndRange": 0,
"m_flDamageFalloffBias": 0.5,
"m_strShotReleaseSound": "",
"m_bReloadSingleBullets": false,
"m_flBulletGravityScale": 1,
"m_flBulletWhizDistance": 150,
"m_flMaxLagCompensation": 3.4028234663852886e+38,
"m_flPenetrationPercent": 0,
"m_flSpreadPenaltyDecay": 3,
"m_iAmmoConsumedPerShot": 1,
"m_strBulletImpactSound": "",
"m_eAttachmentSourceType": "EAttachmentSource_WeaponMuzzles",
"m_flBulletRadiusVsWorld": 0,
"m_flCritBonusStartRange": 0,
"m_flIntraBurstCycleTime": 0,
"m_flPelletScatterFactor": 1,
"m_flRecoilRecoverySpeed": 1,
"m_strBulletLoopingSound": "",
"m_strWeaponImpactEffect": "",
"m_flCritBonusAgainstNPCs": 0.2,
"m_flZoomMoveSpeedPercent": 0.7,
"m_bDontPassThroughPortals": false,
"m_flDamageFalloffEndRange": 900,
"m_flDamageFalloffEndScale": 0,
"m_flShootMoveSpeedPercent": 0.7,
"m_iBulletsToFullyClaimOrb": 1,
"m_szMuzzleFlashEffectName": "",
"m_AimingShootSpreadPenalty": 0,
"m_bHitOnceAcrossAllBullets": false,
"m_flReloadMoveSpeedPercent": 1,
"m_bApplySpreadToFirstPellet": false,
"m_flBulletSpeedRandomFactor": 0,
"m_flDamageFalloffStartRange": 0,
"m_flDamageFalloffStartScale": 1,
"m_flShootSpreadPenaltyDecay": 1,
"m_flShootingUpSpreadPenalty": 0,
"m_strCustomAttachmentSource": "ability_cast",
"m_flPelletScatterSpreadFactor": 0.5,
"m_flRecoilRecoveryDelayFactor": 1,
"m_flShootSpreadPenaltyPerShot": 0,
"m_bAllowExplosionToCollectGold": false,
"m_szBulletTravelTracerParticle": "particles/weapon_fx/default_tracer.vpcf",
"m_flShootSpreadPenaltyDecayDelay": -1,
"m_bReloadSingleBulletsAllowCancel": false,
"m_strLocalPlayerBulletImpactSound": "",
"m_szSelfBulletTravelTracerParticle": "",
"m_bUseDesatForFriendlyNonHeroTracer": true,
"m_flExplosionDamageScaleAtMaxRadius": 0.3,
"m_flReloadSingleBulletsInitialDelay": 0,
"m_bReloadUseActiveWeaponInfoDuration": false,
"m_flBulletInheritShooterVelocityScale": 0,
"m_flRecoilShotIndexRecoveryTimeFactor": 0.25,
"m_strLocalPlayerBulletImpactHeavySound": ""
} |
| m_strCSSClass | "detentionRounds" |
| m_BuffModifier | 2 keys{
"_class": "modifier_boho_doublehit_buff",
"_my_subclass_name": "buff"
} |
| m_CastParticle | "particles/abilities/vampirebat/vampirebat_steallife_cast.vpcf" |
| m_eAbilityType | "EAbilityType_Signature" |
| m_strCastSound | "Magician.VexingBolt.Cast" |
| m_bStartTrained | false |
| m_ImpactParticle | "particles/weapon_fx/bookworm/bookworm_tracer_impact2.vpcf" |
| m_flBounceHeight | 10 |
| m_projectileInfo | 34 keys{
"m_flSpeed": 3500,
"m_HitSound": "",
"m_particle": "",
"m_flUpSpeed": 100,
"m_flFriction": 0,
"m_nBehaviors": "",
"m_customModel": "",
"m_LoopingSound": "",
"m_WarningSound": "",
"m_flElasticity": 0,
"m_DetonateSound": "",
"m_HitWorldSound": "",
"m_HitTargetSound": "",
"m_flGravityScale": 1,
"m_flPhysicsRadius": 1.5,
"m_flTriggerRadius": 1.5,
"m_warningParticle": "",
"m_eProjectileShape": "Sphere",
"m_flMaxLinearRange": 0,
"m_flTrackingEndTime": 0,
"m_flVerticalAimBias": 0,
"m_flTrackingDuration": 0,
"m_flTrackingStartTime": 0,
"m_bHideWarningParticle": false,
"m_AutoProjectileModifier": {},
"m_flCapsulePhysicsRadius": 1.5,
"m_flCapsuleTriggerRadius": 1.5,
"m_flProjectileModelScale": 1,
"m_flTrackingStopDuration": -1,
"m_vecCapsulePhysicsCenter1": [
0,
0,
0
],
"m_vecCapsulePhysicsCenter2": [
0,
0,
0
],
"m_vecCapsuleTriggerCenter1": [
0,
0,
0
],
"m_vecCapsuleTriggerCenter2": [
0,
0,
0
],
"m_flTrackingDampingCoefficient": 0
} |
| m_strImpactSound | "Magician.VexingBolt.Redirect" |
| m_strAbilityImage | "file://{images}/hud/abilities/shiv/shiv_prison_dance.psd" |
| m_flBossDamageScale | 1 |
| m_eAbilityActivation | "CITADEL_ABILITY_ACTIVATION_INSTANT_CAST" |
| m_flProjectileUpBias | 100 |
| m_nAbilityPointsCost | 0 |
| m_PreviewPathParticle | "particles/generic/generic_arc.vpcf" |
| m_bouncePositionCurve | 4 keys{
"m_spline": [
{
"x": 0,
"y": 0,
"m_flSlopeIncoming": 295.76416,
"m_flSlopeOutgoing": 295.76416
},
{
"x": 0.221335,
"y": 65.462959,
"m_flSlopeIncoming": 181.861694,
"m_flSlopeOutgoing": 181.861694
},
{
"x": 0.483375,
"y": 87.907402,
"m_flSlopeIncoming": -6.653259,
"m_flSlopeOutgoing": -6.653259
},
{
"x": 0.783577,
"y": 61.722218,
"m_flSlopeIncoming": -170.157089,
"m_flSlopeOutgoing": -170.157089
},
{
"x": 1,
"y": 0,
"m_flSlopeIncoming": -285.192535,
"m_flSlopeOutgoing": -285.192535
}
],
"m_tangents": [
{
"m_nIncomingTangent": "CURVE_TANGENT_SPLINE",
"m_nOutgoingTangent": "CURVE_TANGENT_SPLINE"
},
{
"m_nIncomingTangent": "CURVE_TANGENT_SPLINE",
"m_nOutgoingTangent": "CURVE_TANGENT_SPLINE"
},
{
"m_nIncomingTangent": "CURVE_TANGENT_SPLINE",
"m_nOutgoingTangent": "CURVE_TANGENT_SPLINE"
},
{
"m_nIncomingTangent": "CURVE_TANGENT_SPLINE",
"m_nOutgoingTangent": "CURVE_TANGENT_SPLINE"
},
{
"m_nIncomingTangent": "CURVE_TANGENT_SPLINE",
"m_nOutgoingTangent": "CURVE_TANGENT_SPLINE"
}
],
"m_vDomainMaxs": [
1,
100
],
"m_vDomainMins": [
0,
0
]
} |
| m_bounceVelocityCurve | 4 keys{
"m_spline": [
{
"x": 0,
"y": 9,
"m_flSlopeIncoming": -18,
"m_flSlopeOutgoing": -18
},
{
"x": 1,
"y": -9,
"m_flSlopeIncoming": -18,
"m_flSlopeOutgoing": -18
}
],
"m_tangents": [
{
"m_nIncomingTangent": "CURVE_TANGENT_SPLINE",
"m_nOutgoingTangent": "CURVE_TANGENT_SPLINE"
},
{
"m_nIncomingTangent": "CURVE_TANGENT_SPLINE",
"m_nOutgoingTangent": "CURVE_TANGENT_SPLINE"
}
],
"m_vDomainMaxs": [
1,
9
],
"m_vDomainMins": [
0,
-9
]
} |
| m_nAbilityTargetTypes | "CITADEL_UNIT_TARGET_ALL_ENEMY" |
| m_AbilityBehaviorsBits | "CITADEL_ABILITY_BEHAVIOR_NO_TARGET | CITADEL_ABILITY_BEHAVIOR_DISPLAYS_DAMAGE_IMPACT" |
| m_flTargetingConeAngle | 60 |
| m_nAbillityUnlocksCost | 1 |
| m_AbilityTooltipDetails | 1 key{
"m_vecAbilityInfoSections": [
{
"m_strLocString": "#ability_boho_doublehit_desc",
"m_vecBasicProperties": [
"BuffDuration",
"CombatBarrierPerStack"
],
"m_vecAbilityPropertiesBlock": [
{
"m_vecAbilityProperties": [
{
"m_strImportantProperty": "Damage"
}
]
},
{
"m_vecAbilityProperties": [
{
"m_strImportantProperty": "CombatBarrier"
},
{
"m_strImportantProperty": "BonusMoveSpeed"
}
],
"m_strPropertiesTitleLocString": "#ability_header_on_hero_hit"
}
]
}
]
} |
| m_CastLifeLeechParticle | "particles/abilities/vampirebat/vampirebat_steallife_leech.vpcf" |
| m_skillshotMissParticle | "particles/abilities/skillshot_default_miss_owner.vpcf" |
| m_bitsInterruptingStates | "MODIFIER_STATE_STUNNED" |
| m_eAbilityTargetingShape | "CITADEL_ABILITY_TARGETING_SHAPE_CONE" |
| m_flProjectileTimeToArrive | 1 |
| m_eAbilityTargetingLocation | "CITADEL_ABILITY_TARGETING_LOCATION_UNIT" |
| m_strAbilityChargeReadySound | "" |
| m_strAbilityOffCooldownSound | "" |
| m_bitsChannelEnabledStateMask | "MODIFIER_STATE_BUSY_WITH_ACTION" |
| m_bitsPreCastEnabledStateMask | "MODIFIER_STATE_BUSY_WITH_ACTION" |
| m_bitsPostCastEnabledStateMask | "MODIFIER_STATE_BUSY_WITH_ACTION" |
{
primary =
{
m_Spread = 0.2
m_flRange = 8192
m_bCanCrit = true
m_bCanZoom = true
m_bSpinsUp = false
m_iBullets = 1
m_flZoomFOV = 70
m_iClipSize = 0
m_bIsSemiAuto = false
m_flCycleTime = 0.15
m_nRecoilSeed = 0
m_flBuildUpRate = -1
m_flBulletSpeed = 0
m_flRecoilSpeed = 1
m_strShootSound = ""
m_flBulletDamage = 0
m_flBulletRadius = 0
m_flCritBonusEnd = 1
m_iSplitShotsMax = -1
m_reloadDuration = 0
m_strReloadSound = ""
m_strSpinUpSound = ""
m_strZoomInSound = ""
m_NpcAimingSpread = 0
m_VerticallRecoil =
{
m_Range = 0
m_flBurstSlope = 0
m_flBurstConstant = 0
m_flBurstExponent = 1
}
m_bFiresBackwards = false
m_flSpinDecayRate = 0
m_flVerticalPunch = 1
m_iBurstShotCount = 1
m_strZoomOutSound = ""
m_HorizontalRecoil =
{
m_Range = 0
m_flBurstSlope = 0
m_flBurstConstant = 0
m_flBurstExponent = 1
}
m_flBulletLifetime = 0
m_flCritBonusStart = 1
m_flIronSightsTime = 0.1
m_mapImpactEffects =
{
}
m_strSpinDownSound = ""
m_flExplosionRadius = 0
m_flHorizontalPunch = 0.5
m_flScatterYawScale = 1
m_flVerticalAimBias = 0
m_strFirstShotSound = ""
m_strReloadEndSound = ""
m_vecScatterOffsets = []
m_flMaxSpinCycleTime = -1
m_flRangeWhileZoomed = 0
m_flSpinIncreaseRate = 0
m_flZoomFOV_Relative = -5
m_strBulletWhizSound = ""
m_strSpinUpLoopSound = ""
m_flAutoReplenishClip = 0
m_flCritBonusEndRange = 0
m_flDamageFalloffBias = 0.5
m_strShotReleaseSound = ""
m_bReloadSingleBullets = false
m_flBulletGravityScale = 1
m_flBulletWhizDistance = 150
m_flMaxLagCompensation = 3.4028234663852886e+38
m_flPenetrationPercent = 0
m_flSpreadPenaltyDecay = 3
m_iAmmoConsumedPerShot = 1
m_strBulletImpactSound = ""
m_eAttachmentSourceType = "EAttachmentSource_WeaponMuzzles"
m_flBulletRadiusVsWorld = 0
m_flCritBonusStartRange = 0
m_flIntraBurstCycleTime = 0
m_flPelletScatterFactor = 1
m_flRecoilRecoverySpeed = 1
m_strBulletLoopingSound = ""
m_strWeaponImpactEffect = ""
m_flCritBonusAgainstNPCs = 0.2
m_flZoomMoveSpeedPercent = 0.7
m_bDontPassThroughPortals = false
m_flDamageFalloffEndRange = 900
m_flDamageFalloffEndScale = 0
m_flShootMoveSpeedPercent = 0.7
m_iBulletsToFullyClaimOrb = 1
m_szMuzzleFlashEffectName = ""
m_AimingShootSpreadPenalty = 0
m_bHitOnceAcrossAllBullets = false
m_flReloadMoveSpeedPercent = 1
m_bApplySpreadToFirstPellet = false
m_flBulletSpeedRandomFactor = 0
m_flDamageFalloffStartRange = 0
m_flDamageFalloffStartScale = 1
m_flShootSpreadPenaltyDecay = 1
m_flShootingUpSpreadPenalty = 0
m_strCustomAttachmentSource = "ability_cast"
m_flPelletScatterSpreadFactor = 0.5
m_flRecoilRecoveryDelayFactor = 1
m_flShootSpreadPenaltyPerShot = 0
m_bAllowExplosionToCollectGold = false
m_szBulletTravelTracerParticle = "particles/weapon_fx/default_tracer.vpcf"
m_flShootSpreadPenaltyDecayDelay = -1
m_bReloadSingleBulletsAllowCancel = false
m_strLocalPlayerBulletImpactSound = ""
m_szSelfBulletTravelTracerParticle = ""
m_bUseDesatForFriendlyNonHeroTracer = true
m_flExplosionDamageScaleAtMaxRadius = 0.3
m_flReloadSingleBulletsInitialDelay = 0
m_bReloadUseActiveWeaponInfoDuration = false
m_flBulletInheritShooterVelocityScale = 0
m_flRecoilShotIndexRecoveryTimeFactor = 0.25
m_strLocalPlayerBulletImpactHeavySound = ""
}
}#CurrentBonus_labelSwish{
m_Spread = 0.2
m_flRange = 8192
m_bCanCrit = true
m_bCanZoom = true
m_bSpinsUp = false
m_iBullets = 1
m_flZoomFOV = 70
m_iClipSize = 0
m_bIsSemiAuto = false
m_flCycleTime = 0.15
m_nRecoilSeed = 0
m_flBuildUpRate = -1
m_flBulletSpeed = 0
m_flRecoilSpeed = 1
m_strShootSound = ""
m_flBulletDamage = 0
m_flBulletRadius = 0
m_flCritBonusEnd = 1
m_iSplitShotsMax = -1
m_reloadDuration = 0
m_strReloadSound = ""
m_strSpinUpSound = ""
m_strZoomInSound = ""
m_NpcAimingSpread = 0
m_VerticallRecoil =
{
m_Range = 0
m_flBurstSlope = 0
m_flBurstConstant = 0
m_flBurstExponent = 1
}
m_bFiresBackwards = false
m_flSpinDecayRate = 0
m_flVerticalPunch = 1
m_iBurstShotCount = 1
m_strZoomOutSound = ""
m_HorizontalRecoil =
{
m_Range = 0
m_flBurstSlope = 0
m_flBurstConstant = 0
m_flBurstExponent = 1
}
m_flBulletLifetime = 0
m_flCritBonusStart = 1
m_flIronSightsTime = 0.1
m_mapImpactEffects =
{
}
m_strSpinDownSound = ""
m_flExplosionRadius = 0
m_flHorizontalPunch = 0.5
m_flScatterYawScale = 1
m_flVerticalAimBias = 0
m_strFirstShotSound = ""
m_strReloadEndSound = ""
m_vecScatterOffsets = []
m_flMaxSpinCycleTime = -1
m_flRangeWhileZoomed = 0
m_flSpinIncreaseRate = 0
m_flZoomFOV_Relative = -5
m_strBulletWhizSound = ""
m_strSpinUpLoopSound = ""
m_flAutoReplenishClip = 0
m_flCritBonusEndRange = 0
m_flDamageFalloffBias = 0.5
m_strShotReleaseSound = ""
m_bReloadSingleBullets = false
m_flBulletGravityScale = 1
m_flBulletWhizDistance = 150
m_flMaxLagCompensation = 3.4028234663852886e+38
m_flPenetrationPercent = 0
m_flSpreadPenaltyDecay = 3
m_iAmmoConsumedPerShot = 1
m_strBulletImpactSound = ""
m_eAttachmentSourceType = "EAttachmentSource_WeaponMuzzles"
m_flBulletRadiusVsWorld = 0
m_flCritBonusStartRange = 0
m_flIntraBurstCycleTime = 0
m_flPelletScatterFactor = 1
m_flRecoilRecoverySpeed = 1
m_strBulletLoopingSound = ""
m_strWeaponImpactEffect = ""
m_flCritBonusAgainstNPCs = 0.2
m_flZoomMoveSpeedPercent = 0.7
m_bDontPassThroughPortals = false
m_flDamageFalloffEndRange = 900
m_flDamageFalloffEndScale = 0
m_flShootMoveSpeedPercent = 0.7
m_iBulletsToFullyClaimOrb = 1
m_szMuzzleFlashEffectName = ""
m_AimingShootSpreadPenalty = 0
m_bHitOnceAcrossAllBullets = false
m_flReloadMoveSpeedPercent = 1
m_bApplySpreadToFirstPellet = false
m_flBulletSpeedRandomFactor = 0
m_flDamageFalloffStartRange = 0
m_flDamageFalloffStartScale = 1
m_flShootSpreadPenaltyDecay = 1
m_flShootingUpSpreadPenalty = 0
m_strCustomAttachmentSource = "ability_cast"
m_flPelletScatterSpreadFactor = 0.5
m_flRecoilRecoveryDelayFactor = 1
m_flShootSpreadPenaltyPerShot = 0
m_bAllowExplosionToCollectGold = false
m_szBulletTravelTracerParticle = "particles/weapon_fx/default_tracer.vpcf"
m_flShootSpreadPenaltyDecayDelay = -1
m_bReloadSingleBulletsAllowCancel = false
m_strLocalPlayerBulletImpactSound = ""
m_szSelfBulletTravelTracerParticle = ""
m_bUseDesatForFriendlyNonHeroTracer = true
m_flExplosionDamageScaleAtMaxRadius = 0.3
m_flReloadSingleBulletsInitialDelay = 0
m_bReloadUseActiveWeaponInfoDuration = false
m_flBulletInheritShooterVelocityScale = 0
m_flRecoilShotIndexRecoveryTimeFactor = 0.25
m_strLocalPlayerBulletImpactHeavySound = ""
}