Module:AbilityTable/Lists: Difference between revisions

Jump to navigation Jump to search
Vergir (talk | contribs)
create AbilityTable/Lists submodule with props and exclude_abilities (with help from vergir-bot LLM)
 
Vergir (talk | contribs)
Lists: rename props to lists, 1 list per line, add descriptive comments above each list (with help from vergir-bot LLM)
Line 1: Line 1:
-- List of stat names mapped to their matching AbilityData property keys.
-- Abilities that have or gain charges on upgrades
-- Plain strings that don't match any property key are treated as raw ability name matches.
local charges = { "AbilityCharges" }
local props = {
 
    ["charges"]    = { "AbilityCharges" },
-- Abilities that scale with melee damage
    ["melee"]      = { "melee", "heavy_melee" },
local melee = { "melee", "heavy_melee" }
    ["wpndmg"]    = { "weapon_damage_increase" },
 
    ["healreduce"] = { "HealAmpReceivePenaltyPercent", "HealAmpRegenPenaltyPercent", "DisableHealing" },
-- Abilities that scale with weapon damage
    ["debuffresist"] = {
local wpndmg = { "weapon_damage_increase" }
        -- Do not insert: AbilityDuration, TickRate, SlowDuration
 
        -- they do more harm than good and include a lot of excessive abilities to the list
-- Abilities that reduce healing on their targets
        "StunDuration", "SleepDuration", "SilenceDuration", "SilenceDebuff", "PetrifyDuration", "HexDuration",
local healreduce = { "HealAmpReceivePenaltyPercent", "HealAmpRegenPenaltyPercent", "DisableHealing" }
        "ImmobilizeDuration", "LiftDuration", "DebuffDuration", "HoldInPlaceDuration", "ExplodeDebuffDuration", "SlowPercent",
 
        "DebuffAccuracy", "TimeSlowDuration", "LateCheckoutStun", "BulletDamageAmpDuration", "BulletResistReduction", "BurnDuration",
-- Abilities whose debuff duration is reduced by Debuff Reducer
        "EnemySlowPct", "MoveSlowPercent", "GroundDashReductionPercent", "StealDuration", "MaxSlowDuration", "EffectDuration",
local debuffresist = { "StunDuration", "SleepDuration", "SilenceDuration", "SilenceDebuff", "PetrifyDuration", "HexDuration", "ImmobilizeDuration", "LiftDuration", "DebuffDuration", "HoldInPlaceDuration", "ExplodeDebuffDuration", "SlowPercent", "DebuffAccuracy", "TimeSlowDuration", "LateCheckoutStun", "BulletDamageAmpDuration", "BulletResistReduction", "BurnDuration", "EnemySlowPct", "MoveSlowPercent", "GroundDashReductionPercent", "StealDuration", "MaxSlowDuration", "EffectDuration", "BleedDuration", "VenomDuration", "TossDuration", "VictimStackDuration", "MovementSpeedSlow", "MovementSlowPct", "HealAmpReceivePenaltyPercent", "Life Drain", "Combo", "Light Eater", "Spirit Lasso", "Card Trick", "Stalker's Mark" }
        "BleedDuration", "VenomDuration", "TossDuration", "VictimStackDuration", "MovementSpeedSlow", "MovementSlowPct", "HealAmpReceivePenaltyPercent",
 
        -- raw ability names (no matching data property)
-- Abilities that apply a movement slow to their targets
        "Life Drain", "Combo", "Light Eater", "Spirit Lasso", "Card Trick", "Stalker's Mark",
local moveslow = { "SlowPercent", "EnemySlowPct", "MoveSlowPercent", "MaxSlowPercent", "MoveSpeedSlowPct", "MovementSpeedSlow", "MovementSlowPct", "ClubSlowPercent", "MoveSpeedPenaltyPerStack", "MovementSlow" }
    },
 
    ["moveslow"] = {
-- Abilities that apply a dash slow to their targets
        "SlowPercent", "EnemySlowPct", "MoveSlowPercent", "MaxSlowPercent", "MoveSpeedSlowPct", "MovementSpeedSlow",
local dashslow = { "GroundDashReductionPercent", "MaxGroundDashReductionPercent", "MoveSpeedAndDashSlowPct", "EnemyDashSlowPercent" }
        "MovementSlowPct", "ClubSlowPercent", "MoveSpeedPenaltyPerStack", "MovementSlow",
 
    },
-- Abilities that trigger Reactive Barrier on their targets (WIP)
    ["dashslow"] = {
local reactivebarrier = { "StunDuration", "SleepDuration", "SilenceDuration", "SilenceDebuff", "PetrifyDuration", "HexDuration", "ImmobilizeDuration", "LiftDuration", "HoldInPlaceDuration", "RestrictionDuration", "PullDuration", "PullDownDuration", "Itani Lo Sahn", "Dazzling Trick", "Ground Strike", "Hotel Guest" }
        "GroundDashReductionPercent", "MaxGroundDashReductionPercent", "MoveSpeedAndDashSlowPct", "EnemyDashSlowPercent",
 
    },
-- Abilities whose debuffs can be cleansed by Dispel Magic
    ["reactivebarrier"] = {
local dispelmagic = { "SilenceDuration", "SilenceDebuff", "ImmobilizeDuration", "LiftDuration", "HoldInPlaceDuration", "RestrictionDuration", "SlowPercent", "EnemySlowPct", "MoveSlowPercent", "GroundDashReductionPercent", "SlowDuration", "DebuffDuration", "ExplodeDebuffDuration", "BulletDamageAmpDuration", "BulletResistReduction", "StealDuration", "EffectDuration", "DebuffAccuracy", "TimeSlowDuration", "BurnDuration", "BleedDuration", "VenomDuration", "MaxSlowDuration", "Life Drain", "Card Trick", "Sticky Bomb", "Light Eater", "Luggage Cart", "Essence Theft" }
        -- WIP, do not use yet.
 
        "StunDuration", "SleepDuration", "SilenceDuration", "SilenceDebuff", "PetrifyDuration", "HexDuration",
-- Abilities that restore health, buffed by Heal Amp items
        "ImmobilizeDuration", "LiftDuration", "HoldInPlaceDuration", "RestrictionDuration", "PullDuration", "PullDownDuration",
local heal = { "HealingPerSecond", "HealAmount", "HealFixedHealth", "FlatHealthHealing", "HealingFactor", "MaxHealthRegen", "ExternalBonusHealthRegen", "BonusHealthRegen", "LifeStealPercentOnHit", "LifestealPercentHero", "MissingHealthPercentHeal", "MissingHealthBurstPct", "MissingHPHeal", "TechLifestealPercent", "AbilityLifestealPercentHero", "HealthStealPctHero", "BulletLifestealPercent", "TotalHealthRegen", "DamageHealMult", "HealPctVsHeroes", "InfestHeal", "HealOnKillPct", "HealMaxHealth", "HealMaxHealthPercent", "RegenIncomingDamagePercent", "Rake", "Card Trick" }
        -- engine-side CCs with no matching data prop
        "Itani Lo Sahn", "Dazzling Trick", "Ground Strike", "Hotel Guest",
    },
    ["dispelmagic"] = {
        -- Excludes effects that prevent casting (StunDuration, SleepDuration, PetrifyDuration, HexDuration)
        -- since you cannot self-dispel while affected by those.
        -- Slot 4 (ultimate) abilities are excluded via filter_abilities.
        "SilenceDuration", "SilenceDebuff", "ImmobilizeDuration", "LiftDuration", "HoldInPlaceDuration",
        "RestrictionDuration",
        "SlowPercent", "EnemySlowPct", "MoveSlowPercent", "GroundDashReductionPercent", "SlowDuration",
        "DebuffDuration", "ExplodeDebuffDuration", "BulletDamageAmpDuration", "BulletResistReduction",
        "StealDuration", "EffectDuration", "DebuffAccuracy", "TimeSlowDuration",
        "BurnDuration", "BleedDuration", "VenomDuration", "MaxSlowDuration",
        -- raw ability names (no matching data property)
        "Life Drain", "Card Trick", "Sticky Bomb", "Light Eater", "Luggage Cart", "Essence Theft",
    },
    ["heal"] = {
        "HealingPerSecond", "HealAmount", "HealFixedHealth", "FlatHealthHealing", "HealingFactor", "MaxHealthRegen",
        "ExternalBonusHealthRegen", "BonusHealthRegen", "LifeStealPercentOnHit", "LifestealPercentHero", "MissingHealthPercentHeal", "MissingHealthBurstPct",
        "MissingHPHeal", "TechLifestealPercent", "AbilityLifestealPercentHero", "HealthStealPctHero", "BulletLifestealPercent", "TotalHealthRegen",
        "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 to suppress from a given stat's list.
Line 82: Line 56:


return {
return {
     props            = props,
     lists = {
        ["charges"]      = charges,
        ["melee"]        = melee,
        ["wpndmg"]        = wpndmg,
        ["healreduce"]    = healreduce,
        ["debuffresist"]  = debuffresist,
        ["moveslow"]      = moveslow,
        ["dashslow"]      = dashslow,
        ["reactivebarrier"] = reactivebarrier,
        ["dispelmagic"]  = dispelmagic,
        ["heal"]          = heal,
    },
     exclude_abilities = exclude_abilities,
     exclude_abilities = exclude_abilities,
}
}