Files

1.6 KiB

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.