# Combos ## Request (2026-10-18) Combos don't show their cooldown like other skills. Combos should reference the skills they are built from and always use those skills' current levels. ## Measured / read - Combos live in a vector of 0x26-byte entries at cCreatureArts +0x10e / +0x112, at most 4 (`cCreatureArts::FindCombo` 0x5819a0). Layout in `src/game/engine/arts.h`: id (0x200..0x204), 4 step arts, 4 step levels, total, charge rate, charge. - `cCreatureArts::SetCombo` (0x581290, thiscall `(index, arts[4], levels[4], id)`, ret 0x10) fills an entry and computes the total from the levels; the charge starts at 0. The Kombomeister calls it when a combo is made and the levels are never updated afterwards. - The charge counts up to the total at the charge rate (recomputed while charging); ready when charge >= total (`IsComboReady` 0x581920). - A taskbar slot of type 4 holds combo 0x200 + index. - Logged 2026-10-18: a combo made with an art at level 3 stores 3; after the art rose to 4 the mod re-set it to 4 and the total followed. ## Mod - `skillbar.cpp`: combo slots get the seconds label like other arts, `game::GetComboCooldown` = (total - charge) / rate. - `combos.cpp`: every engine tick, the hero's combos are compared with the arts' current levels (cooldown entry level + bonus levels). Out of date → `SetCombo` again with the current levels; the charge keeps its fraction of the total. Skipped while a combo is executing. ## Open - Whether the Kombomeister stores base or base + item bonus levels is not measured (no art with bonus levels in the test). The mod uses base + bonus; if the cast also adds the bonus it would count twice.