A dungeon in every area

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rope 2026-10-24 13:37:34 +01:00
parent cd44709d80
commit 60b446acfd
3 changed files with 242 additions and 10 deletions

View file

@ -176,6 +176,40 @@ ENEMY_ABILITIES = {
"shriek": {"name": "Shriek", "cast": 2.0, "every": 9, "first": 4, "interrupt": True,
"target": "all", "effect": ("aoe", 1.4, "magic")},
}
def _curse(name, school):
"""A boss's must-interrupt: one target, very hard, every few seconds."""
return {"name": name, "cast": 2.0, "every": 6, "first": 4, "interrupt": True, "target": "target",
"effect": ("hit", 3.5, school)}
def _storm(name, school):
"""An interruptible blast at everyone."""
return {"name": name, "cast": 2.0, "every": 9, "first": 4, "interrupt": True, "target": "all",
"effect": ("aoe", 1.4, school)}
def _quake(name, school):
"""A slow blast at everyone that can't be stopped: brace for it."""
return {"name": name, "cast": 3.0, "every": 18, "first": 10, "interrupt": False, "target": "all",
"effect": ("aoe", 1.6, school)}
# Each dungeon's bosses, named for who casts them.
ENEMY_ABILITIES.update({
"hex_storm": _storm("Hex Storm", "magic"), "crushing_decree": _curse("Crushing Decree", "blunt"),
"royal_stomp": _quake("Royal Stomp", "blunt"), "witchfire": _storm("Witchfire", "magic"),
"cheap_shot": _curse("Cheap Shot", "pierce"), "execute": _curse("Execute", "slash"),
"whirlwind": _quake("Whirlwind", "slash"), "rune_blast": _curse("Rune Blast", "magic"),
"venom_spray": _storm("Venom Spray", "magic"), "grave_chill": _curse("Grave Chill", "magic"),
"soul_rend": _quake("Soul Rend", "magic"), "forge_blast": _curse("Forge Blast", "magic"),
"war_cry": _storm("War Cry", "slash"), "acid_spit": _curse("Acid Spit", "magic"),
"acid_breath": _quake("Acid Breath", "magic"), "deep_freeze": _curse("Deep Freeze", "magic"),
"wail": _storm("Wail", "magic"), "frost_lance": _curse("Frost Lance", "magic"),
"frost_breath": _quake("Frost Breath", "magic"), "void_bolt": _curse("Void Bolt", "magic"),
"flame_wave": _storm("Flame Wave", "magic"), "inferno": _curse("Inferno", "magic"),
})
ARCHETYPE_ABILITIES = {"brute": ["heavy_slam"], "skirmisher": ["lunge"], "caster": ["hex_bolt"],
"elite": ["heavy_slam"], "boss": ["heavy_slam", "sweep"], "dragon": ["fire_breath", "tail_swipe"]}
ENRAGE = {"elite": (0.3, 1.4), "boss": (0.3, 1.4), "dragon": (0.25, 1.5)} # under this share of HP, hits this much harder