Need help with plugins or servers? Join our Discord

Modding Database

Up to date with Steam · checked 29s ago· Viewing build 6745 (Oct 02 2026)

ability_life_drain

Life Drainability_life_drainOpen the ability page

45 keys · inherits from signature_base

What it inherits is already merged in: this is the entry as the game compiled it.

ability_life_drain = {
_class = "ability_life_drain"
_editor = {
folder_name = "Hero Ghost"
}
_multibase = [
]
m_HUDPanel = {
m_vecHUDElements = [
0{
m_Style = "panorama/styles/ability_hud_elements/ability_life_drain.vcss"
m_eType = "CITADEL_ABILITY_HUD_ELEMENT_TYPE_PROGRESS"
m_Layout = "file://{resources}/layout/ability_hud_elements/element_progress_bar_text.vxml"
m_strContext = "channel"
}
]
}
m_iMaxLevel = 1
m_iUpdateTime = 1676078502
m_eAbilityType = "EAbilityType_Signature"
m_strCastSound = ""
m_bStartTrained = false
m_mapWeaponInfos = {
primary = {
m_flBulletSpeed = 10000
}
}
m_previewParticle = "particles/abilities/ghost/ghost_life_drain_cast_preview.vpcf"
m_strAbilityImage = "file://{images}/hud/abilities/spectre/life_drain.psd"
m_flBossDamageScale = 1
m_sCustomStackLabel = "#CurrentBonus_label" // Current Bonus:
m_strCastDelaySound = "Ghost.LifeDrain.Cast"
m_eAbilityActivation = "CITADEL_ABILITY_ACTIVATION_PRESS"
m_nAbilityPointsCost = 0
m_vecAbilityUpgrades = [
0{
m_vecPropertyUpgrades = [
0{
m_strBonus = 13
m_strPropertyName = "LifeDrainPerSecond"
}
]
}
1{
m_vecPropertyUpgrades = [
0{
m_strBonus = "2.5"
m_strPropertyName = "AbilityDuration"
}
]
}
2{
m_vecPropertyUpgrades = [
0{
m_strBonus = "3"
m_strPropertyName = "AbilityCharges"
}
1{
m_strBonus = "0.1"
m_strPropertyName = "AbilityCooldownBetweenCharge"
}
2{
m_strBonus = 0.45
m_eUpgradeType = "EAddToScale"
m_strPropertyName = "LifeDrainPerSecond"
m_eScaleStatFilter = "ETechPower"
}
]
}
]
m_PreviewPathParticle = "particles/generic/generic_arc.vpcf"
m_nAbilityTargetTypes = "CITADEL_UNIT_TARGET_HERO_FRIENDLY | CITADEL_UNIT_TARGET_HERO_ENEMY | CITADEL_UNIT_TARGET_TROOPER_ENEMY | CITADEL_UNIT_TARGET_BOSS_ENEMY | CITADEL_UNIT_TARGET_BUILDING_ENEMY | CITADEL_UNIT_TARGET_PROP_ENEMY | CITADEL_UNIT_TARGET_MINION_ENEMY | CITADEL_UNIT_TARGET_NEUTRAL | CITADEL_UNIT_TARGET_CREEP_ENEMY"
m_strAG2CastingAction = "ghost_lifedrain_cast"
m_strChannelLoopSound = "Ability.GhostSoldier.LifeDrain.Lp"
m_AbilityBehaviorsBits = "CITADEL_ABILITY_BEHAVIOR_ALWAYS_PREVIEW_RADIUS | CITADEL_ABILITY_BEHAVIOR_DISPLAYS_DAMAGE_IMPACT | CITADEL_ABILITY_BEHAVIOR_CANNOT_CANCEL_DURING_CHANNEL | CITADEL_ABILITY_BEHAVIOR_ALLOW_ALT_CAST | CITADEL_ABILITY_BEHAVIOR_USE_INSTANT_CAST_UNIT_TARGET_UI | CITADEL_ABILITY_BEHAVIOR_TRIGGER_CANCEL_MASH_PROTECTION_ON_CAST | CITADEL_ABILITY_BEHAVIOR_CAN_SET_QUICK_CAST | CITADEL_ABILITY_BEHAVIOR_DONT_INTERRUPT_SLIDE_ON_CAST"
m_flTargetingConeAngle = 20
m_mapAbilityProperties = {
MaxRange = { // Max Tether Range
m_strValue = "28m"
m_strCSSClass = "distance"
m_subclassScaleFunction = {
_class = "scale_function_single_stat"
_my_subclass_name = "MaxRange_scale_function"
m_eSpecificStatScaleType = "ETechRange"
}
}
TickRate = {
m_strValue = "0.1"
}
TechPower = { // Spirit Power
m_strValue = "0"
m_strDisableValue = "0"
m_bCanSetTokenOverride = true
m_eProvidedPropertyType = "MODIFIER_VALUE_TECH_POWER"
}
WeaponPower = { // Weapon Damage
m_strValue = "0"
m_strDisableValue = "0"
m_bCanSetTokenOverride = true
m_eProvidedPropertyType = "MODIFIER_VALUE_WEAPON_POWER"
}
AbilityCharges = { // Charges
m_strValue = "0"
m_strCSSClass = "cast"
m_strDisableValue = "-1"
m_bCanSetTokenOverride = true
m_subclassScaleFunction = {
_class = "scale_function_ability_charges"
_my_subclass_name = "AbilityCharges_scale_function"
}
}
SilenceOnDrain = {
m_strValue = "0"
}
AbilityCooldown = { // Cooldown
m_strValue = 34
m_strCSSClass = "cooldown"
m_strDisableValue = "0"
m_bCanSetTokenOverride = true
m_subclassScaleFunction = {
_class = "scale_function_single_stat"
_my_subclass_name = "AbilityCooldown_scale_function"
m_eSpecificStatScaleType = "ETechCooldown"
}
}
AbilityDuration = { // Duration
m_strValue = "2.5"
m_strCSSClass = "duration"
m_strDisableValue = "0"
m_bCanSetTokenOverride = true
m_subclassScaleFunction = {
_class = "scale_function_single_stat"
_my_subclass_name = "AbilityDuration_scale_function"
m_eSpecificStatScaleType = "ETechDuration"
}
}
AbilityCastDelay = { // Cast Delay
m_strValue = "0.2"
m_strCSSClass = "cast"
m_strDisableValue = "0"
m_bCanSetTokenOverride = true
}
AbilityCastRange = { // Cast Range
m_strValue = "18m"
m_strCSSClass = "distance"
m_eDisplayUnits = "EDisplayUnit_Meters"
m_bCanSetTokenOverride = true
m_subclassScaleFunction = {
_class = "scale_function_single_stat"
_my_subclass_name = "AbilityCastRange_scale_function"
m_eSpecificStatScaleType = "ETechRange"
}
}
ChannelMoveSpeed = {
m_strValue = "-1"
m_strCSSClass = "move_speed"
m_eDisplayUnits = "EDisplayUnit_MetersPerSecond"
m_bCanSetTokenOverride = true
}
AbilityChannelTime = { // Channel Duration
m_strValue = "0"
m_strCSSClass = "cast"
m_strDisableValue = "0"
m_bCanSetTokenOverride = true
m_subclassScaleFunction = {
_class = "scale_function_multi_stats"
_my_subclass_name = "scale_duration"
m_vecScalingStats = [
0"EChannelDuration"
1"ETechDuration"
]
}
}
LifeDrainPerSecond = { // Damage Per Second
m_strValue = 24
m_strCSSClass = "tech_damage"
m_subclassScaleFunction = {
_class = "scale_function_tech_damage"
m_flStatScale = 0.3225
_my_subclass_name = "LifeDrainPerSecond_scale_function"
m_eSpecificStatScaleType = "ETechPower"
}
m_bIsAbilityDamageProperty = true
}
MoveSpeedReduction = {
m_strValue = "32"
m_strCSSClass = "slow"
m_eStatsUsageFlags = "ConditionallyApplied"
m_eProvidedPropertyType = "MODIFIER_VALUE_MOVEMENT_SPEED_SLOW_PERCENT"
}
AbilityResourceCost = {
m_strValue = "0"
m_strCSSClass = "cast"
m_strDisableValue = "0"
m_bCanSetTokenOverride = true
}
LifeDrainHealthMult = { // Damage to Heal
m_strValue = "100"
m_strCSSClass = "healing"
m_subclassScaleFunction = {
_class = "scale_function_single_stat"
_my_subclass_name = "LifeDrainHealthMult_scale_function"
m_eSpecificStatScaleType = "EHealingOutput"
}
}
AbilityUnitTargetLimit = {
m_strValue = "10"
m_bCanSetTokenOverride = true
}
AbilityPostCastDuration = {
m_strValue = "0"
m_strDisableValue = "0"
}
AbilityCooldownBetweenCharge = { // Charge Delay
m_strValue = "0"
m_strCSSClass = "charge_cooldown"
m_strDisableValue = "-1"
m_bCanSetTokenOverride = true
m_subclassScaleFunction = {
_class = "scale_function_ability_recharge_time"
_my_subclass_name = "scale_function_ability_recharge_time"
}
}
}
m_nAbillityUnlocksCost = 1
m_strSelectedLoopSound = "Ghost.LifeDrain.Select.Lp"
m_AbilityTooltipDetails = {
m_vecAbilityInfoSections = [
0{
m_strLocString = "#ability_life_drain_desc" // Create a tether that <span class="highlight">drains enemy health over time</span> and <span class="highlight">heals you</span>. Target must be in line of sight and within max range to drain. You can shoot and use other abilities during the drain, but your move speed is reduced. <br><span class="highlight">{g:citadel_binding:'AltCast'} to give health to friendly Heroes</span>.
m_vecBasicProperties = [
0"LifeDrainHealthMult"
1"MaxRange"
]
m_vecAbilityPropertiesBlock = [
0{
m_vecAbilityProperties = [
0{
m_strImportantProperty = "LifeDrainPerSecond"
}
1{
m_strImportantProperty = "StatusEffectEMP"
m_strStatusEffectValue = "SilenceOnDrain"
}
]
m_strPropertiesTitleLocString = ""
}
]
}
]
}
m_skillshotMissParticle = "particles/abilities/skillshot_default_miss_owner.vpcf"
m_strCastAnimGraphParam = "b_LifeSteal"
m_strCastButtonLocToken = "#AbilityButtonHint_CastLifeDrain" // Drain Enemy
m_bitsInterruptingStates = "MODIFIER_STATE_STUNNED"
m_eAbilityTargetingShape = "CITADEL_ABILITY_TARGETING_SHAPE_CONE"
m_strAG2ChannelingAction = ""
m_LifeDrainCasterModifier = {
_class = "modifier_base"
m_bIsHidden = true
m_AG2HeroState = {
m_strParamName = "lifedrain_attached"
}
m_sExpiredSound = ""
_my_subclass_name = "modifier_life_drain_caster"
m_nEnabledStateMask = "MODIFIER_STATE_FAMILIAR_ABILITY_KEEPALIVE"
m_sAmbientLoopingSound = "Ghost.LifeDrain.Caster.Lp"
m_strParticleStatusEffect = "particles/status_fx/status_fx_ghost_lifedrain.vpcf"
}
m_LifeDrainTargetModifier = {
_class = "modifier_life_drain"
m_bIsHidden = true
m_AG2HeroState = {
m_strParamName = ""
}
m_DrainParticle = "particles/abilities/ghost/ghost_life_drain.vpcf"
m_sExpiredSound = "Ghost.LifeDrain.End"
_my_subclass_name = "modifier_life_drain"
m_SilenceModifier = {
_class = "modifier_citadel_silenced"
_my_subclass_name = "modifier_life_drain_silence"
m_sLocalizationName = "modifier_life_drain_silence"
m_eHudDisplayLocation = "DISPLAY_HUD_CENTER"
m_strSmallIconCssClass = "silence_proc"
}
m_sAmbientLoopingSound = "Ghost.LifeDrain.Victim.Lp"
}
m_eAbilitySpectatePriority = "CITADELTV_ABILITY_SPECTATE_PRIORITY_MEDIUM"
m_strAltCastButtonLocToken = "#AbilityButtonHint_AlotCastLifeDrain" // Heal Ally
m_eAbilityTargetingLocation = "CITADEL_ABILITY_TARGETING_LOCATION_UNIT"
m_strAG2CastCompletedAction = ""
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"
}

History

  1. 6722–6745changed
    • +m_mapWeaponInfos
      { 1 key }
      {
      	primary = 
      	{
      		m_flBulletSpeed = 10000
      	}
      }
    • +m_sCustomStackLabel#CurrentBonus_label
    • −m_AbilityTooltipDetails.m_vecAbilityInfoSections[0].m_vecAbilityPropertiesBlock[0].m_vecAbilityProperties[1].m_bRequiresAbilityUpgradetrue
    • −m_WeaponInfo
      { 1 key }
      {
      	m_flBulletSpeed = 10000
      }
    • −m_strMoviePreviewPathfile://{resources}/videos/hero_abilities/ghost_life_drain.webm
  2. 6696–6701first dumped