Module:AbilityTable/Lists: Difference between revisions

Vergir (talk | contribs)
create AbilityTable/Lists submodule with props and exclude_abilities (with help from vergir-bot LLM)
 
add Abilities that scale with Boons
 
(71 intermediate revisions by 7 users not shown)
Line 1: Line 1:
-- List of stat names mapped to their matching AbilityData property keys.
local lists = {
-- Plain strings that don't match any property key are treated as raw ability name matches.
-- Abilities that give barrier
local props = {
["barrier"] = {
     ["charges"]   = { "AbilityCharges" },
"AirDropBulletShield",
     ["melee"]     = { "melee", "heavy_melee" },
"CombatBarrier",
    ["wpndmg"]    = { "weapon_damage_increase" },
},
     ["healreduce"] = { "HealAmpReceivePenaltyPercent", "HealAmpRegenPenaltyPercent", "DisableHealing" },
    -- Abilities that have charges
     ["charges"] = {
        "AbilityCharges",
    },
   
    -- Abilities that get cancelled by Cursed Relic
    -- BonusMoveSpeed does not get cleansed by cursed relic and must not be here.
     ["cursedrelic"] = {
        "AirControlPercent", "AllowDashWhenChanneling", "BehaviorCannotCancelDuringChannel", "BehaviorChannelled", "BehaviorExclusiveUse", "BehaviorStartCooldownOnToggleOff",
        "BonusFireRate", "BuffDuration", "BulletDamageAmp", "CombatBarrier", "DashModifier", "DashSpeed",
        "HealingPerSecond", "MovementSpeedBonus", "MoveSpeedBonus", "SpiritResist", "TechArmorGain", "WeaponDamageBonus",
        "Dust Devil", "Life Drain", "Kinetic Carbine", "Power Slash", "Power Surge", "Siphon Life",
        "Smoke Bomb", "The Cube",
    },
 
    -- Abilities that apply a dash slow to their targets
     ["dashslow"] = {
        "EnemyDashSlowPercent", "GroundDashReductionPercent", "MaxGroundDashReductionPercent", "MoveSpeedAndDashSlowPct",
    },
 
    -- Abilities whose duration is reduced by Debuff Resist (Debuff Reducer etc.)
     ["debuffresist"] = {
     ["debuffresist"] = {
        -- Do not insert: AbilityDuration, TickRate, SlowDuration
         "BuildUpPerShot", "BulletDamageAmpDuration", "BulletResistReduction", "BurnDuration", "CitadelSilenced", "DamageAmpPercentage",
        -- they do more harm than good and include a lot of excessive abilities to the list
         "DebuffAccuracy", "DebuffDuration", "EnemySlowPct", "FadingSlowPercent", "GroundDashReductionPercent", "HealAmpReceivePenaltyPercent",
         "StunDuration", "SleepDuration", "SilenceDuration", "SilenceDebuff", "PetrifyDuration", "HexDuration",
         "HoldInPlaceDuration", "ImmobilizeDuration", "MaxSlowDuration", "MovementSlow", "MovementSlowPct", "MovementSpeedSlow",
         "ImmobilizeDuration", "LiftDuration", "DebuffDuration", "HoldInPlaceDuration", "ExplodeDebuffDuration", "SlowPercent",
         "MoveSlowPercent", "PetrifyDuration", "ProcDamage", "Silenced", "SilenceDuration", "SleepDuration",
         "DebuffAccuracy", "TimeSlowDuration", "LateCheckoutStun", "BulletDamageAmpDuration", "BulletResistReduction", "BurnDuration",
         "SlowPercent", "StealDuration", "StunDuration", "TimeSlowDuration", "TossDuration", "VenomDuration",
         "EnemySlowPct", "MoveSlowPercent", "GroundDashReductionPercent", "StealDuration", "MaxSlowDuration", "EffectDuration",
        "VictimStackDuration",
         "BleedDuration", "VenomDuration", "TossDuration", "VictimStackDuration", "MovementSpeedSlow", "MovementSlowPct", "HealAmpReceivePenaltyPercent",
         "Card Trick", "Combo", "Light Eater", "Spirit Lasso", "Stalker's Mark",
        -- raw ability names (no matching data property)
    },
         "Life Drain", "Combo", "Light Eater", "Spirit Lasso", "Card Trick", "Stalker's Mark",
   
    -- Abilities that give debuff resist.
    ["extradebuffresist"] = {
    "StatusResistancePercent"
     },
     },
    -- Abilities whose effects can be cleansed by Dispel Magic
    ["dispelmagic"] = {
        "BuildUpDecayDelay", "BuildUpPerShot", "BulletDamageAmpDuration", "BulletResistReduction", "BurnDuration", "CitadelSilenced",
        "DebuffAccuracy", "DebuffDuration", "DotHealthPercent", "Drag", "EnemySlowPct", "FadingSlowPercent",
        "FuseTime", "GroundAuraModifier", "GroundDashReductionPercent", "HealAmpReceivePenaltyPercent", "HoldInPlaceDuration", "ImmobilizeDuration",
        "MaxSlowDuration", "MovementSlow", "MovementSlowPct", "MovementSpeedSlow", "MoveSlowPercent", "ProcDamage",
        "Silenced", "SlowDuration", "SlowPercent", "StealDuration", "TimeSlowDuration", "TossDuration",
        "VenomDuration", "VictimStackDuration",
        "Card Trick", "Light Eater", "Stalker's Mark", "Static Charge",
    },
    -- Abilities whose debuffs can be cleansed by Divine Barrier (combination of debuffresist and dispelmagic)
    ["divinebarrier"] = {
        "BuildUpDecayDelay", "BuildUpPerShot", "BulletDamageAmpDuration", "BulletResistReduction", "BurnDuration", "CitadelSilenced",
        "DamageAmpPercentage", "DebuffAccuracy", "DebuffDuration", "DotHealthPercent", "EnemySlowPct", "FadingSlowPercent",
        "FuseTime", "GroundAuraModifier", "GroundDashReductionPercent", "HealAmpReceivePenaltyPercent", "HoldInPlaceDuration", "ImmobilizeDuration",
        "MaxSlowDuration", "MovementSlow", "MovementSlowPct", "MovementSpeedSlow", "MoveSlowPercent", "PetrifyDuration",
        "ProcDamage", "Silenced", "SilenceDuration", "SleepDuration", "SlowDuration", "SlowPercent",
        "StealDuration", "StunDuration", "TimeSlowDuration", "TossDuration", "VenomDuration", "VictimStackDuration",
        "Card Trick", "Combo", "Light Eater", "Spirit Lasso", "Stalker's Mark",
    },
   
    -- Abilities that don't break stealth on cast or recast.
["dontbreakstealth"] = {
"BehaviorDontBreakInvisibility", "DoesNotBreakInvis",
"Spectral Wall"
},
    -- Abilities that restore health, buffed by Heal Amp items
    ["heal"] = {
        "AbilityLifestealPercentHero", "BonusHealthRegen", "BulletLifestealPercent", "DamageHealMult", "ExternalBonusHealthRegen", "FlatHealthHealing",
        "HealAmount", "HealFixedHealth", "HealingFactor", "HealingPerSecond", "HealMaxHealth", "HealMaxHealthPercent",
        "HealOnKillPct", "HealPctVsHeroes", "HealthStealPctHero", "InfestHeal", "LifestealPercentHero", "LifeStealPercentOnHit",  "LifeDrainPerSecond",
        "MaxHealthRegen", "MissingHealthBurstPct", "MissingHealthPercentHeal", "MissingHPHeal", "RegenIncomingDamagePercent", "TechLifestealPercent",
        "TotalHealthRegen",
        "Card Trick", "Rake", "Soul Exchange",
    },
    -- Abilities that trigger Healing Tempo Passive
    ["healingtempo"] = {
        "BonusHealthRegen", "DamageHealMult", "ExternalBonusHealthRegen", "FlatHealthHealing", "HealAmount", "HealFixedHealth",
        "HealingFactor", "HealingPerSecond", "HealMaxHealth", "HealMaxHealthPercent", "HealOnKillPct", "HealPctVsHeroes",
        "HealthStealPctHero", "InfestHeal", "LifeDrainPerSecond", "MaxHealthRegen", "MeleeLifesteal", "MissingHealthBurstPct",
        "MissingHealthPercentHeal", "MissingHPHeal", "TetherSharedHealPct", "TotalHealthRegen",
        "Card Trick", "Fire Scarabs", "Rake", "Soul Exchange",
    },
    -- Abilities that reduce healing on their targets
    ["healreduce"] = {
        "DisableHealing", "HealAmpReceivePenaltyPercent", "HealAmpRegenPenaltyPercent",
    },
    -- Abilities that deal melee damage but scale with heavy melee
    ["heavymelee"] = {
        "heavy_melee",
    },
    -- Abilities that trigger Indomitable. Should be mostly same as reactivebarrier.
    ["indomitable"] = {
        "ChainLength", "ChargeDragEnemy", "CitadelRoot", "CitadelSilenced", "HexDuration", "HoldInPlaceDuration",
        "Immobilize", "ImmobilizeDuration", "LiftDuration", "PetrifyDuration", "RestrictionDuration", "Silenced",
        "SilenceDuration", "SleepDuration", "StunDuration", "Tether",
        "Combo", "Hotel Guest", "Paradoxical Swap", "Spirit Lasso",
    },
    -- Abilities that deal melee damage
    ["melee"] = {
        "heavy_melee", "melee",
    },
   
    -- Abilities that are considered "movement-based". They get disabled by Slowing Hex and some other things.
    ["movementbased"] = {
    "BehaviorMovement",
    },
    -- Abilities that apply a move slow to their targets
     ["moveslow"] = {
     ["moveslow"] = {
         "SlowPercent", "EnemySlowPct", "MoveSlowPercent", "MaxSlowPercent", "MoveSpeedSlowPct", "MovementSpeedSlow",
         "EnemySlowPct", "MaxSlowPercent", "MovementSlow", "MovementSlowPct", "MovementSpeedSlow", "MoveSlowPercent",
         "MovementSlowPct", "ClubSlowPercent", "MoveSpeedPenaltyPerStack", "MovementSlow",
         "MoveSpeedPenaltyPerStack", "MoveSpeedSlowPct", "SlowPercent",
     },
     },
     ["dashslow"] = {
 
         "GroundDashReductionPercent", "MaxGroundDashReductionPercent", "MoveSpeedAndDashSlowPct", "EnemyDashSlowPercent",
    -- Abilities that apply some effect on a bullet hit that can be mitigated with Plated Armor
     ["platedarmor"] = {
         "BonusDamagePerBullet", "BuildUpDecayDelay", "BuildUpDuration",
        "Blasted", "Card Trick", "Crackshot", "Fixation", "Ira Domini", "Light Eater",
        "Power Surge",
     },
     },
    -- Abilities that trigger Reactive Barrier
     ["reactivebarrier"] = {
     ["reactivebarrier"] = {
        -- WIP, do not use yet.
         "ChainLength", "ChargeDragEnemy", "CitadelRoot", "CitadelSilenced", "HexDuration", "HoldInPlaceDuration",
         "StunDuration", "SleepDuration", "SilenceDuration", "SilenceDebuff", "PetrifyDuration", "HexDuration",
         "Immobilize", "ImmobilizeDuration", "LiftDuration", "PetrifyDuration", "RestrictionDuration", "Silenced",
         "ImmobilizeDuration", "LiftDuration", "HoldInPlaceDuration", "RestrictionDuration", "PullDuration", "PullDownDuration",
        "SilenceDuration", "SleepDuration", "StunDuration", "Tether",
         -- engine-side CCs with no matching data prop
         "Combo", "Hotel Guest", "Paradoxical Swap", "Singularity", "Spirit Lasso",
         "Itani Lo Sahn", "Dazzling Trick", "Ground Strike", "Hotel Guest",
    },
   
    -- Abilities that scale with Boons
["scalingboon"] = {
    "Scale.Type:power_increase",
},
   
    -- Abilities that scale with ability duration
    ["scalingduration"] = {
         "Scale.Type:duration",
    },
   
    -- Abilities that scale with ability range
    ["scalingrange"] = {
        "Scale.Type:range", "Scale.Type:radius",
     },
     },
     ["dispelmagic"] = {
   
         -- Excludes effects that prevent casting (StunDuration, SleepDuration, PetrifyDuration, HexDuration)
    -- Abilities that scale with ability cooldown
        -- since you cannot self-dispel while affected by those.
     ["scalingcooldown"] = {
         -- Slot 4 (ultimate) abilities are excluded via filter_abilities.
         "Scale.Type:cooldown",
         "SilenceDuration", "SilenceDebuff", "ImmobilizeDuration", "LiftDuration", "HoldInPlaceDuration",
    },
        "RestrictionDuration",
   
         "SlowPercent", "EnemySlowPct", "MoveSlowPercent", "GroundDashReductionPercent", "SlowDuration",
    -- Abilities that scale with spirit
         "DebuffDuration", "ExplodeDebuffDuration", "BulletDamageAmpDuration", "BulletResistReduction",
    ["scalingspirit"] = {
         "StealDuration", "EffectDuration", "DebuffAccuracy", "TimeSlowDuration",
        "Scale.Type:spirit",
         "BurnDuration", "BleedDuration", "VenomDuration", "MaxSlowDuration",
    },
         -- raw ability names (no matching data property)
 
         "Life Drain", "Card Trick", "Sticky Bomb", "Light Eater", "Luggage Cart", "Essence Theft",
    -- for testing purposes. Feel free to change however you wish
    ["test"] = {
         "BehaviorChannelled"
    },
 
    -- Abilities whose negative effects are prevented by Unstoppable
    ["unstoppable"] = {
         "ChainLength", "ChargeDragEnemy", "CitadelRoot", "CitadelSilenced", "DisarmDuration", "Drag",
         "DragModifier", "EnemySlowPct", "FadingSlowPercent", "GroundDashReductionPercent", "HexDuration", "HoldInPlaceDuration",
         "Immobilize", "ImmobilizeDuration", "LiftDuration", "MaxSlowDuration", "MovementSlow", "MovementSlowPct",
         "MovementSpeedSlow", "MoveSlowPercent", "OutgoingTechDamagePercent", "PetrifyDuration", "RestrictionDuration", "Silenced",
         "SilenceDuration", "SleepDuration", "SlowDuration", "SlowPercent", "StunDuration", "Tether",
         "TimeSlowDuration", "TossDuration",
         "Card Trick", "Combo", "Hotel Guest", "Paradoxical Swap", "Singularity", "Spirit Lasso",
    },
 
    -- Abilities that deal weapon damage
    ["weapondamage"] = {
        "weapon_damage_increase",
        "Crackshot",
    },
   
    -- Abilities that scale with weapon damage
    ["weaponscaling"] = {
        "weapon_damage_increase", "weapon_power"
     },
     },
     ["heal"] = {
   
         "HealingPerSecond", "HealAmount", "HealFixedHealth", "FlatHealthHealing", "HealingFactor", "MaxHealthRegen",
    -- Abilities that summons NPCs
        "ExternalBonusHealthRegen", "BonusHealthRegen", "LifeStealPercentOnHit", "LifestealPercentHero", "MissingHealthPercentHeal", "MissingHealthBurstPct",
     ["summons"] = {
        "MissingHPHeal", "TechLifestealPercent", "AbilityLifestealPercentHero", "HealthStealPctHero", "BulletLifestealPercent", "TotalHealthRegen",
         "TurretLifeTime", "SkullLifetime", "SummonCount", "SummonHealth", "TurretLifetime", "HelperCount"
        "DamageHealMult", "HealPctVsHeroes", "InfestHeal", "HealOnKillPct", "HealMaxHealth", "HealMaxHealthPercent",
        "RegenIncomingDamagePercent",
        -- raw ability names (no matching data property)
        "Rake", "Card Trick",
     },
     },
}
}


-- Abilities to suppress from a given stat's list.
-- Abilities that should be excluded from automatic lists
-- Add entries here when a prop match is a false positive.
-- If adding here please add a comment with a reason
local exclude_abilities = {
local exclude_abilities = {
["cursedrelic"] = {
"Concussive Combustion", -- has BuffModifier that does nothing
    "Enchanter's Satchel", -- has BehaviorChannelled but Pocket can't be targeted in it.
    "Grasping Hands", -- has BuffModifier that does nothing
    "Ira Domini", -- has BehaviorCannotCancelDuringChannel but does not dispelled
    "Lycan Curse", -- has BonusFireRate that does not get dispelled
    "Return to Shadows", -- has BehaviorChannelled but is untargetable during the channel
    "Serrated Knives", -- has BehaviorChannelled for some reason
    "Shadow Transformation", -- has BehaviorCannotCancelDuringChannel but it gives invulnerability and then unstoppable.
    "Shocking Reanimation", -- Has BehaviorChannelled, BonusFireRate, BuffModifier but none get any effective treatment
    "Vexing Bolt", -- has BehaviorChannelled but does not get cancelled
},
    ["dashslow"] = {
        "Itani Lo Sahn", -- has GroundDashReductionPercent but also disables stamina
    },
     ["debuffresist"] = {
     ["debuffresist"] = {
         "Bookwyrm",      -- has DebuffDuration for some reason
         "Bookwyrm",      -- has DebuffDuration for some reason
         "Itani Lo Sahn",  -- has DebuffDuration but does not get reduced
        "Frozen Shelter", -- has SlowPercent but no duration to shave off
         "Itani Lo Sahn",  -- has lots of debuffs but none are affected by debuffresist
         "Slam Fire",      -- has DebuffDuration for some reason
         "Slam Fire",      -- has DebuffDuration for some reason
         "Splatter",      -- has SlowPercent but no duration to shave off
         "Splatter",      -- has SlowPercent but no duration to shave off
    },
    ["dispelmagic"] = {
        "Slam Fire", -- has DebuffDuration for some reason
    },
    ["divinebarrier"] = {
        "Bookwyrm",      -- has DebuffDuration for some reason
         "Frozen Shelter", -- has SlowPercent but no duration to shave off
         "Frozen Shelter", -- has SlowPercent but no duration to shave off
        "Slam Fire",      -- has DebuffDuration for some reason
        "Splatter",      -- has SlowPercent but no duration to shave off
    },
    ["dontbreakstealth"] = {
    --"Riposte",
    },
    ["heal"] = {
        "Riposte", -- has AbilityLifestealPercentHero but doesn't deal damage to heal off of
    },
    ["healingtempo"] = {
    "Riposte", -- has AbilityLifestealPercentHero but doesn't deal damage to heal off of
    },
    ["indomitable"] = {
        "Entangling Bola", -- has CitadelRoot that never gets applied,
        "Itani Lo Sahn",  -- has silence, just doesn't trigger Indomitable (bug?),
        "Life Drain",      -- has CitadelSilenced but doesn't apply any silence
        "Singularity",    -- has stun, just doesn't trigger Indomitable (bug?),
    },
    ["movementbased"] = {
    "Slither", -- has BehaviorMovement but doesn't get disabled (because is passive?)
     },
     },
     ["moveslow"] = {
     ["moveslow"] = {
        "Grasping Hands", -- has SlowPercent
         "Riposte",        -- has a 40% 4s slow somehow? (SlowPercent + SlowDuration)
         "Riposte",        -- has a 40% 4s slow somehow? (SlowPercent + SlowDuration)
        "Grasping Hands", -- has SlowPercent
     },
     },
     ["dashslow"] = {
     ["platedarmor"] = {
         "Itani Lo Sahn", -- has GroundDashReductionPercent but also disables stamina
         "Arctic Beam", -- has BuildUpDuration but doesn't get applied with bullets.
     },
     },
     ["heal"] = {
     ["reactivebarrier"] = {
         "Riposte",       -- has AbilityLifestealPercentHero but doesn't deal damage to heal off of
         "Entangling Bola", -- has CitadelRoot that never gets applied,
        "Life Drain",      -- has CitadelSilenced but doesn't apply any silence
     },
     },
     ["dispelmagic"] = {
     ["unstoppable"] = {
         "Bookwyrm",       -- has DebuffDuration for some reason
         "Life Drain", -- has CitadelSilenced but doesn't apply any silence
        "Slam Fire",      -- has DebuffDuration for some reason
     },
     },
}
}


return {
return {
     props             = props,
     lists             = lists,
     exclude_abilities = exclude_abilities,
     exclude_abilities = exclude_abilities,
}
}