Need help with plugins or servers? Join our Discord

Modding Database

Up to date with Steam · checked 12s ago· Viewing build 6701 (Sep 25 2026), not the latest

citadel_ability_hook

Grapple Armability

class citadel_ability_hook · Bebop Signature 3 · inherits from signature_base

Deadworks (C#)
pawn.AddAbility("citadel_ability_hook", (ushort)EAbilitySlot.Signature3);
pawn.RemoveAbility("citadel_ability_hook");

Properties

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.

PropertyEnglish labelValueTier 1Tier 2Tier 3Provides
DamageDamage0
BulletAmp0+20
TechPowerSpirit Power0TECH_POWER
SlowPercentMove Speed72MOVEMENT_SPEED_SLOW_PERCENT
WeaponPowerWeapon Damage0WEAPON_POWER
AbilityChargesCharges0
AbilityCooldownCooldown23+-11.5
AbilityDurationDuration0
HookImpactDelay0.5
AbilityCastDelayCast Delay0.1
AbilityCastRangeCast Range30m+30m
ChannelMoveSpeed-1
BulletAmpDuration0+6
AbilityChannelTimeChannel Duration0
CancelHookDuration0.2
AbilityResourceCost0
RestrictionDuration0.5
HookingSlowSpeedLimit5
AbilityUnitTargetLimit1
AbilityPostCastDuration0.2
EndOfHookMoveSpeedBonus0m
FriendlyHookIgnoreRange8m
ResetCooldownOnFriendlyHook0
AbilityCooldownBetweenChargeCharge Delay-1.0

Modifiers

Defined inside this ability. AddModifier finds each by its scoped name.

Name for AddModifierClassReads ability values
citadel_ability_hook/modifier_bebop_hook_bullet_ampmodifier_bebop_hook_bullet_amp
citadel_ability_hook/modifier_citadel_hookselfmodifier_citadel_hookself
citadel_ability_hook/modifier_citadel_hooktargetmodifier_citadel_hooktarget
citadel_ability_hook/modifier_intrinsic_basemodifier_intrinsic_base
citadel_ability_hook/modifier_slow_bases Slowedmodifier_slow_baseSlowPercent

VData

_class"citadel_ability_hook"
_editor
1 key
{
  "folder_name": "Hero Bebop"
}
_multibase
1 item
[
  "signature_base"
]
m_HUDPanel
2 keys
{
  "m_vecButtonHints": [
    {
      "m_eHintSide": "EButtonSide_Right",
      "m_strContext": "abort",
      "m_strLocToken": "#ability_abort_cast",
      "m_bButton1IsSlot": true
    }
  ],
  "m_vecHUDElements": [
    {
      "m_eType": "CITADEL_ABILITY_HUD_ELEMENT_TYPE_PROGRESS",
      "m_Layout": "file://{resources}/layout/ability_hud_elements/element_circular_progress.vxml",
      "m_vecPanels": [
        {
          "m_flEndValue": 360,
          "m_flStartValue": 0,
          "m_strPanelName": "circular_progress",
          "m_eProgressType": "EProgress_RadialCW",
          "m_bReverseProgress": false
        }
      ],
      "m_strContext": "hook_out",
      "m_strAdditionalClasses": "medium"
    },
    {
      "m_eType": "CITADEL_ABILITY_HUD_ELEMENT_TYPE_PROGRESS",
      "m_Layout": "file://{resources}/layout/ability_hud_elements/element_circular_progress.vxml",
      "m_vecPanels": [
        {
          "m_flEndValue": 360,
          "m_strPanelName": "circular_progress",
          "m_eProgressType": "EProgress_RadialCW",
          "m_bReverseProgress": false
        }
      ],
      "m_strContext": "hook_in",
      "m_strAdditionalClasses": "medium"
    }
  ]
}
m_iMaxLevel1
m_WeaponInfo
15 keys
{
  "m_flBulletSpeed": 2850,
  "m_strShootSound": "",
  "m_flBulletRadius": 33,
  "m_flBulletLifetime": 3,
  "m_mapImpactEffects": {
    "default": {}
  },
  "m_flVerticalAimBias": 0,
  "m_flBulletGravityScale": 0,
  "m_flMaxLagCompensation": 0.12,
  "m_szBulletLinkParticle": "particles/abilities/bebop/bebop_hook_bullet_chain.vpcf",
  "m_eAttachmentSourceType": "EAttachmentSource_Custom",
  "m_flBulletRadiusVsWorld": 1,
  "m_strBulletLoopingSound": "Bebop.Hook.Proj.Lp",
  "m_bDontPassThroughPortals": false,
  "m_strCustomAttachmentSource": "hook",
  "m_szBulletTravelTracerParticle": "particles/abilities/bebop/bebop_hook_bullet.vpcf"
}
m_iUpdateTime1693505809
m_SelfModifier
6 keys
{
  "_class": "modifier_citadel_hookself",
  "m_bIsHidden": true,
  "m_AG2BaseState": {
    "m_strParamName": ""
  },
  "m_AG2HeroState": {
    "m_strParamName": "bebop_hook_attached"
  },
  "_my_subclass_name": "modifier_citadel_hookself",
  "m_nEnabledStateMask": "MODIFIER_STATE_CASTING_HOOK"
}
m_eAbilityType"EAbilityType_Signature"
m_strCastSound"Bebop.Hook.Cast"
m_bStartTrainedfalse
m_TargetModifier
25 keys
{
  "_class": "modifier_citadel_hooktarget",
  "m_LinkEffect": "particles/abilities/bebop/bebop_hook_retrieve_chain.vpcf",
  "m_AG2BaseState": {
    "m_strParamName": ""
  },
  "m_AG2HeroState": {
    "m_strParamName": ""
  },
  "m_flReturnSpeed": 2000,
  "m_flTossUpSpeed": 0,
  "m_sExpiredSound": "Bebop.Hook.RetractEnd",
  "_my_subclass_name": "modifier_citadel_hooktarget",
  "m_strRetractSound": "",
  "m_flFailSafeMinTime": 1,
  "m_flReturnSpeedFail": 100,
  "m_flReturnStuckTime": 0.2,
  "m_nEnabledStateMask": "",
  "m_strRetractSoundEnd": "",
  "m_PullSpeedScaleCurve": {
    "m_spline": [
      {
        "x": 0,
        "y": 0,
        "m_flSlopeIncoming": 0,
        "m_flSlopeOutgoing": 0
      },
      {
        "x": 0.511043,
        "y": 0,
        "m_flSlopeIncoming": 34.469662,
        "m_flSlopeOutgoing": 34.469662
      },
      {
        "x": 0.593915,
        "y": 1,
        "m_flSlopeIncoming": 1.501651,
        "m_flSlopeOutgoing": 1.501651
      }
    ],
    "m_tangents": [
      {
        "m_nIncomingTangent": "CURVE_TANGENT_SPLINE",
        "m_nOutgoingTangent": "CURVE_TANGENT_SPLINE"
      },
      {
        "m_nIncomingTangent": "CURVE_TANGENT_FREE",
        "m_nOutgoingTangent": "CURVE_TANGENT_MIRROR"
      },
      {
        "m_nIncomingTangent": "CURVE_TANGENT_FREE",
        "m_nOutgoingTangent": "CURVE_TANGENT_MIRROR"
      }
    ],
    "m_vDomainMaxs": [
      1,
      1
    ],
    "m_vDomainMins": [
      0,
      0
    ]
  },
  "m_RestrictionModifier": {
    "_class": "modifier_slow_base",
    "m_bIsHidden": true,
    "_my_subclass_name": "modifier_slow_bases",
    "m_nEnabledStateMask": "MODIFIER_STATE_SILENCE_MOVEMENT_ABILITES | MODIFIER_STATE_MOVEMENT_ABILITY_RESTRICTED | MODIFIER_STATE_DASH_DISABLED | MODIFIER_STATE_SLOWED",
    "m_sLocalizationName": "hook_modifier_slow",
    "m_strParticleEffect": "particles/generic/generic_slow_debuff.vpcf",
    "m_vecAutoRegisterModifierValueFromAbilityPropertyName": [
      "SlowPercent"
    ]
  },
  "m_eHudDisplayLocation": "DISPLAY_HUD_CENTER",
  "m_HookRetrieveParticle": "particles/abilities/bebop/bebop_hook_retrieve.vpcf",
  "m_sAmbientLoopingSound": "Bebop.Hook.Retracting.Lp",
  "m_strSmallIconCssClass": "tether_proc",
  "m_cameraSequenceCreated": {
    "m_vecDistanceOperations": [
      {
        "m_flSpringTarget": 150,
        "m_bSpringToDefault": false,
        "m_eCameraOperation": "k_ECameraOp_Spring",
        "m_flSpringStrength": 5
      },
      {
        "m_eCameraOperation": "k_ECameraOp_Maintain"
      }
    ]
  },
  "m_flCloseEnoughDistance": 30,
  "m_flFailSafeDurationMult": 2,
  "m_strApproachingWhooshSound": "",
  "m_flReturnPositionForwardOffset": 100
}
m_projectileInfo
11 keys
{
  "m_flSpeed": 2850,
  "m_particle": "particles/weapon_fx/trail_grapple.vpcf",
  "m_flUpSpeed": 0,
  "m_nBehaviors": "PBF_DisableTriggerProjectileImpactBehavior | PBF_ValidateTargetLineOfSight",
  "m_customModel": "",
  "m_LoopingSound": "",
  "m_flGravityScale": 0.05,
  "m_flPhysicsRadius": 1,
  "m_flTriggerRadius": 33,
  "m_bHideWarningParticle": 1,
  "m_AutoProjectileModifier": {
    "_class": "modifier_intrinsic_base",
    "m_sStartSound": "Bebop.Hook.Cast",
    "_my_subclass_name": "modifier_intrinsic_base"
  }
}
m_HookOutParticle"particles/abilities/bebop/bebop_hook.vpcf"
m_strAbilityImage"file://{images}/hud/abilities/bebop/bebop_hook.psd"
m_strHookNPCSound"Bebop.Hook.NPC"
m_strHookAllySound"Bebop.Hook.Player"
m_BulletAmpModifier
7 keys
{
  "_class": "modifier_bebop_hook_bullet_amp",
  "_my_subclass_name": "modifier_bebop_hook_bullet_amp",
  "m_sLocalizationName": "modifier_bullet_armor_reduction",
  "m_strParticleEffect": "particles/modifiers/armor_suppressor.vpcf",
  "m_eHudDisplayLocation": "DISPLAY_HUD_NONE",
  "m_strSmallIconCssClass": "bullet_armor_reduction",
  "m_eModifierDisplayLocaiton": "MODIFIER_DISPLAY_HEALTHBAR"
}
m_flBossDamageScale1
m_strCastDelaySound""
m_eAbilityActivation"CITADEL_ABILITY_ACTIVATION_INSTANT_CAST"
m_flTrooperHitRadius12
m_nAbilityPointsCost0
m_PrecastHookParticle"particles/abilities/bebop/bebop_hook_precast.vpcf"
m_PreviewPathParticle"particles/generic/generic_arc.vpcf"
m_nAbilityTargetTypes"CITADEL_UNIT_TARGET_HERO | CITADEL_UNIT_TARGET_TROOPER_ENEMY"
m_strAG2CastingAction"bebop_hook"
m_strHookSuccessSound"Bebop.Hook.Player"
m_strMoviePreviewPath"file://{resources}/videos/hero_abilities/bebop_hook.webm"
m_AbilityBehaviorsBits"CITADEL_ABILITY_BEHAVIOR_PROJECTILE | CITADEL_ABILITY_BEHAVIOR_PREVENT_BOT_USAGE | CITADEL_ABILITY_BEHAVIOR_DONT_INTERRUPT_SLIDE_ON_CAST"
m_HookRetrieveParticle"particles/abilities/bebop/bebop_hook_retrieve.vpcf"
m_nAbillityUnlocksCost1
m_AbilityTooltipDetails
1 key
{
  "m_vecAbilityInfoSections": [
    {
      "m_strLocString": "#citadel_ability_hook_desc",
      "m_vecAbilityPropertiesBlock": [
        {
          "m_vecAbilityProperties": [
            {
              "m_strImportantProperty": "AbilityCastRange"
            },
            {
              "m_strImportantProperty": "Damage"
            },
            {
              "m_strImportantProperty": "StatusEffectDisplacement"
            }
          ]
        }
      ]
    }
  ]
}
m_skillshotMissParticle"particles/abilities/skillshot_default_miss_owner.vpcf"
m_strHookImpactGeoSound""
m_bitsInterruptingStates"MODIFIER_STATE_STUNNED"
m_eAbilityTargetingShape"CITADEL_ABILITY_TARGETING_SHAPE_SPHERE"
m_strAG2ChannelingAction""
m_HookServerImpactParticle""
m_eAbilityTargetingLocation"CITADEL_ABILITY_TARGETING_LOCATION_NONE"
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_TargetModifier.m_RestrictionModifier.m_nEnabledStateMask+MODIFIER_STATE_MOVEMENT_ABILITY_ACTIVATION_RESTRICTED+MODIFIER_STATE_MOVEMENT_INPUT_DISABLED+MODIFIER_STATE_AIR_JUMPS_DISABLED−MODIFIER_STATE_MOVEMENT_ABILITY_RESTRICTED
    • +m_mapWeaponInfos
      { 1 key }
      {
      	primary = 
      	{
      		m_flBulletSpeed = 2850
      		m_strShootSound = ""
      		m_flBulletRadius = 33
      		m_flBulletLifetime = 3
      		m_mapImpactEffects = 
      		{
      			default = 
      			{
      			}
      		}
      		m_flVerticalAimBias = 0
      		m_flBulletGravityScale = 0
      		m_flMaxLagCompensation = 0.12
      		m_szBulletLinkParticle = "particles/abilities/bebop/bebop_hook_bullet_chain.vpcf"
      		m_eAttachmentSourceType = "EAttachmentSource_Custom"
      		m_flBulletRadiusVsWorld = 1
      		m_strBulletLoopingSound = "Bebop.Hook.Proj.Lp"
      		m_bDontPassThroughPortals = false
      		m_strCustomAttachmentSource = "hook"
      		m_szBulletTravelTracerParticle = "particles/abilities/bebop/bebop_hook_bullet.vpcf"
      	}
      }
    • +m_sCustomStackLabel#CurrentBonus_label
    • ±m_nAbilityTargetTypes+CITADEL_UNIT_TARGET_NEUTRAL
    • −m_WeaponInfo
      { 15 keys }
      {
      	m_flBulletSpeed = 2850
      	m_strShootSound = ""
      	m_flBulletRadius = 33
      	m_flBulletLifetime = 3
      	m_mapImpactEffects = 
      	{
      		default = 
      		{
      		}
      	}
      	m_flVerticalAimBias = 0
      	m_flBulletGravityScale = 0
      	m_flMaxLagCompensation = 0.12
      	m_szBulletLinkParticle = "particles/abilities/bebop/bebop_hook_bullet_chain.vpcf"
      	m_eAttachmentSourceType = "EAttachmentSource_Custom"
      	m_flBulletRadiusVsWorld = 1
      	m_strBulletLoopingSound = "Bebop.Hook.Proj.Lp"
      	m_bDontPassThroughPortals = false
      	m_strCustomAttachmentSource = "hook"
      	m_szBulletTravelTracerParticle = "particles/abilities/bebop/bebop_hook_bullet.vpcf"
      }
    • −m_strMoviePreviewPathfile://{resources}/videos/hero_abilities/bebop_hook.webm
  2. 6696–6701first dumped