Ability icons from game-icons instead of emoji
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
57d11e30da
commit
bf013a1648
5 changed files with 86 additions and 35 deletions
52
combat.py
52
combat.py
|
|
@ -46,66 +46,66 @@ def _aura(kind, dur, on, **extra):
|
|||
|
||||
ABILITIES = {
|
||||
# Sword and shield: hold the line.
|
||||
"shield_bash": {"name": "Shield Bash", "icon": "🛡️", "needs": "shield", "target": "enemy", "cd": 10,
|
||||
"shield_bash": {"name": "Shield Bash", "needs": "shield", "target": "enemy", "cd": 10,
|
||||
"offgcd": True, "threat": 2, "effects": [_dmg(1.2), {"t": "stun", "dur": 2}],
|
||||
"auto": {"r": "stop", "else": True},
|
||||
"tip": "Hit, stun 2s, stop a cast. Bosses only lose the cast."},
|
||||
"challenge": {"name": "Challenge", "icon": "😤", "target": "enemy", "cd": 8, "offgcd": True,
|
||||
"challenge": {"name": "Challenge", "target": "enemy", "cd": 8, "offgcd": True,
|
||||
"effects": [{"t": "taunt", "dur": 3}], "auto": {"r": "taunt"},
|
||||
"tip": "An enemy turns on you for 3s."},
|
||||
"sweeping_cut": {"name": "Sweeping Cut", "icon": "🌀", "target": "aoe", "cd": 10, "threat": 2,
|
||||
"sweeping_cut": {"name": "Sweeping Cut", "target": "aoe", "cd": 10, "threat": 2,
|
||||
"effects": [{"t": "aoe", "c": 0.8}], "auto": {"r": "aoe", "n": 2},
|
||||
"tip": "Hits every enemy. Double threat."},
|
||||
"shield_wall": {"name": "Shield Wall", "icon": "🧱", "needs": "shield", "target": "self", "cd": 30, "offgcd": True,
|
||||
"shield_wall": {"name": "Shield Wall", "needs": "shield", "target": "self", "cd": 30, "offgcd": True,
|
||||
"effects": [_aura("taken", 6, "self", mult=0.5)], "auto": {"r": "tanking", "pct": 0.6},
|
||||
"tip": "Half damage taken for 6s."},
|
||||
# Warhammer: slow, heavy, and hard to stand up to.
|
||||
"crushing_blow": {"name": "Crushing Blow", "icon": "🔨", "target": "enemy", "cd": 16, "cast": 1.5,
|
||||
"crushing_blow": {"name": "Crushing Blow", "target": "enemy", "cd": 16, "cast": 1.5,
|
||||
"effects": [_dmg(1.5)], "auto": {"r": "always"}, "tip": "Wind up 1.5s, hit for 1.5×."},
|
||||
"concuss": {"name": "Concuss", "icon": "💫", "target": "enemy", "cd": 15, "offgcd": True,
|
||||
"concuss": {"name": "Concuss", "target": "enemy", "cd": 15, "offgcd": True,
|
||||
"effects": [{"t": "stun", "dur": 3}], "auto": {"r": "stop", "else": True},
|
||||
"tip": "Stun 3s, stop a cast. Bosses only lose the cast."},
|
||||
"earthshaker": {"name": "Earthshaker", "icon": "🌋", "target": "aoe", "cd": 12,
|
||||
"earthshaker": {"name": "Earthshaker", "target": "aoe", "cd": 12,
|
||||
"effects": [{"t": "aoe", "c": 0.5}, {"t": "delay", "by": 1.5}], "auto": {"r": "aoe", "n": 2},
|
||||
"tip": "Hits every enemy and puts their next swing back 1.5s."},
|
||||
"unstoppable": {"name": "Unstoppable", "icon": "😡", "target": "self", "cd": 45, "offgcd": True,
|
||||
"unstoppable": {"name": "Unstoppable", "target": "self", "cd": 45, "offgcd": True,
|
||||
"effects": [_aura("done", 12, "self", mult=1.2)], "auto": {"r": "big"},
|
||||
"tip": "+20% damage for 12s."},
|
||||
# Staff: magic, and keeping everyone standing.
|
||||
"bolt": {"name": "Bolt", "icon": "✨", "target": "enemy", "cd": 10, "cast": 1.5,
|
||||
"bolt": {"name": "Bolt", "target": "enemy", "cd": 10, "cast": 1.5,
|
||||
"effects": [_dmg(1.1)], "auto": {"r": "always"}, "tip": "Cast 1.5s, magic hit for 1.1×."},
|
||||
"mend": {"name": "Mend", "icon": "💚", "target": "ally", "cd": 10, "cast": 2,
|
||||
"mend": {"name": "Mend", "target": "ally", "cd": 10, "cast": 2,
|
||||
"effects": [{"t": "heal", "c": 2.0}], "auto": {"r": "heal", "pct": 0.5},
|
||||
"tip": "Cast 2s, heal someone for 2× your hit."},
|
||||
"ward": {"name": "Ward", "icon": "🔮", "target": "ally", "cd": 20,
|
||||
"ward": {"name": "Ward", "target": "ally", "cd": 20,
|
||||
"effects": [{"t": "shield", "c": 2.0, "dur": 20}], "auto": {"r": "ward", "pct": 0.8},
|
||||
"tip": "Soaks 2× your hit for someone, for up to 20s."},
|
||||
"thornbind": {"name": "Thornbind", "icon": "🌿", "target": "enemy", "cd": 20,
|
||||
"thornbind": {"name": "Thornbind", "target": "enemy", "cd": 20,
|
||||
"effects": [{"t": "cc", "dur": 15}], "auto": {"r": "cc"},
|
||||
"tip": "Holds an enemy 15s. Damage breaks it. Not bosses."},
|
||||
# Bow: fast, first, and from a distance.
|
||||
"aimed_shot": {"name": "Aimed Shot", "icon": "🎯", "target": "enemy", "cd": 10, "cast": 2,
|
||||
"aimed_shot": {"name": "Aimed Shot", "target": "enemy", "cd": 10, "cast": 2,
|
||||
"effects": [_dmg(2.0)], "auto": {"r": "always"}, "tip": "Aim 2s, hit for 2×."},
|
||||
"pinning_shot": {"name": "Pinning Shot", "icon": "📌", "target": "enemy", "cd": 12, "offgcd": True,
|
||||
"pinning_shot": {"name": "Pinning Shot", "target": "enemy", "cd": 12, "offgcd": True,
|
||||
"effects": [_dmg(0.5), {"t": "interrupt"}], "auto": {"r": "stop"},
|
||||
"tip": "Hit and stop a cast."},
|
||||
"barbed_arrow": {"name": "Barbed Arrow", "icon": "🩸", "target": "enemy", "cd": 12,
|
||||
"barbed_arrow": {"name": "Barbed Arrow", "target": "enemy", "cd": 12,
|
||||
"effects": [_dmg(0.4), {"t": "dot", "c": 0.25, "every": 2, "dur": 12}], "auto": {"r": "dot"},
|
||||
"tip": "Hit, then bleeds 6× 0.25 over 12s."},
|
||||
"volley": {"name": "Volley", "icon": "🏹", "target": "aoe", "cd": 10, "cost": 5,
|
||||
"volley": {"name": "Volley", "target": "aoe", "cd": 10, "cost": 5,
|
||||
"effects": [{"t": "aoe", "c": 0.9}], "auto": {"r": "aoe", "n": 2},
|
||||
"tip": "Hits every enemy. 5 arrows."},
|
||||
# Trades: one each, whatever the weapon.
|
||||
"find_the_seam": {"name": "Find the Seam", "icon": "⛏️", "target": "enemy", "cd": 30, "offgcd": True,
|
||||
"find_the_seam": {"name": "Find the Seam", "target": "enemy", "cd": 30, "offgcd": True,
|
||||
"effects": [_aura("seam", 8, "target")], "auto": {"r": "debuff", "pct": 0.6},
|
||||
"tip": "8s: its resistance doesn't count and its weakness counts double, for everyone."},
|
||||
"barricade": {"name": "Barricade", "icon": "🚧", "target": "party", "cd": 40, "offgcd": True,
|
||||
"barricade": {"name": "Barricade", "target": "party", "cd": 40, "offgcd": True,
|
||||
"effects": [_aura("taken", 8, "party", mult=0.75)], "auto": {"r": "danger", "pct": 0.6},
|
||||
"tip": "Everyone takes 25% less damage for 8s."},
|
||||
"hearty_meal": {"name": "Hearty Meal", "icon": "🍲", "target": "party", "cd": 30,
|
||||
"hearty_meal": {"name": "Hearty Meal", "target": "party", "cd": 30,
|
||||
"effects": [{"t": "hot", "c": 0.3, "every": 2, "dur": 10}], "auto": {"r": "party_hot", "pct": 0.75},
|
||||
"tip": "Everyone heals 5× 0.3 of your hit over 10s."},
|
||||
"mark_prey": {"name": "Mark Prey", "icon": "🐾", "target": "enemy", "cd": 30, "offgcd": True,
|
||||
"mark_prey": {"name": "Mark Prey", "target": "enemy", "cd": 30, "offgcd": True,
|
||||
"effects": [_aura("vuln", 15, "target", mult=1.15)], "auto": {"r": "debuff", "pct": 0.6},
|
||||
"tip": "It takes 15% more damage from everyone for 15s."},
|
||||
}
|
||||
|
|
@ -147,17 +147,17 @@ def role(style: str, shield: bool) -> str:
|
|||
# the enemy's average hit, damage type: None for its own). Telegraphed casts always land.
|
||||
|
||||
ENEMY_ABILITIES = {
|
||||
"heavy_slam": {"name": "Heavy Slam", "icon": "💥", "cast": 2.0, "every": 14, "first": 5, "interrupt": False,
|
||||
"heavy_slam": {"name": "Heavy Slam", "cast": 2.0, "every": 14, "first": 5, "interrupt": False,
|
||||
"target": "target", "effect": ("hit", 1.6, "blunt")},
|
||||
"lunge": {"name": "Lunge", "icon": "🗡️", "cast": 0, "every": 10, "first": 4, "interrupt": False,
|
||||
"lunge": {"name": "Lunge", "cast": 0, "every": 10, "first": 4, "interrupt": False,
|
||||
"target": "soft", "effect": ("hit", 1.2, None)},
|
||||
"hex_bolt": {"name": "Hex Bolt", "icon": "🔥", "cast": 2.5, "every": 12, "first": 3, "interrupt": True,
|
||||
"hex_bolt": {"name": "Hex Bolt", "cast": 2.5, "every": 12, "first": 3, "interrupt": True,
|
||||
"target": "target", "effect": ("hit", 1.8, "magic")},
|
||||
"sweep": {"name": "Sweep", "icon": "🌀", "cast": 1.5, "every": 16, "first": 8, "interrupt": False,
|
||||
"sweep": {"name": "Sweep", "cast": 1.5, "every": 16, "first": 8, "interrupt": False,
|
||||
"target": "all", "effect": ("aoe", 0.8, "slash")},
|
||||
"fire_breath": {"name": "Fire Breath", "icon": "🐉", "cast": 3.0, "every": 18, "first": 6, "interrupt": False,
|
||||
"fire_breath": {"name": "Fire Breath", "cast": 3.0, "every": 18, "first": 6, "interrupt": False,
|
||||
"target": "all", "effect": ("aoe", 1.4, "magic")},
|
||||
"tail_swipe": {"name": "Tail Swipe", "icon": "💢", "cast": 0, "every": 12, "first": 7, "interrupt": False,
|
||||
"tail_swipe": {"name": "Tail Swipe", "cast": 0, "every": 12, "first": 7, "interrupt": False,
|
||||
"target": "target", "effect": ("hit", 1.2, "blunt")},
|
||||
}
|
||||
ARCHETYPE_ABILITIES = {"brute": ["heavy_slam"], "skirmisher": ["lunge"], "caster": ["hex_bolt"],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue