Skip to content

Changelog

Previous: Glossary · Next: Reference Overview

A record of QS's evolution along capability lines. Current version 1.0.22. For specifics, read alongside the relevant feature pages.

📌 This log is organized by "accumulated capability" rather than a day-by-day stream — it gives milestones, not exact dates. Commands / fields follow the actual version.


🏷️ Current: 1.0.22

Single runtime settled — the old skill pipeline has been completely removed, and the whole plugin runs just one pipeline. The docs no longer distinguish v1/v2; every trigger (item keypress / command / API / passive) feeds into the same one: input normalization → state machine → graph resolution → execution plan → gates → execution → post-processing.

DimensionStatus
Runtime pipelineSingle, old pipeline removed
Commands11 subcommands (see Commands and Permissions)
Result codes14 CastResult values (see Result Codes)
Passive triggers11 types
Bridge modesAUTO / API_MODE / YAML_STUB

🧱 Accumulated 1.0.x capabilities

The capabilities below took shape progressively across the 1.0.x series and are all available as of 1.0.22:

Casting and gates

  • Gate system — unlock / cooldown / cooldown group / charges / global cooldown (GCD) / resource / health-and-hunger (blood sacrifice) / conflict group / declarative conditions, validated one by one in a fixed order.
  • charges — when >1, replaces the binary cooldown, recovering layer by layer.
  • cooldown_group — same-group skills share a cooldown.
  • GCD + ignore_gcd — global cooldown and its exemption (common for instant movement / interrupt skills).
  • conflict_groups — same-group skills are briefly mutually exclusive after a cast.
  • blood-sacrifice costcost.health/hunger health-and-hunger cost.
  • Declarative conditions — level / health / world / target and other preconditions; unknown keys are always true so they don't lock things up.
  • Persisted cooldowns — prevents refreshing cooldowns by relogging.

Targets and acquisition

  • 5 ranged targeting modesNEAREST / FARTHEST / LOWEST_HP (execute the low-health) / HIGHEST_HP (the tank) / RANDOM, plus SELF / LOOK.
  • target filterANY / LIVING / MONSTERS / PLAYERS / NOT_PLAYERS, with range / require_los / required.

Cast modes

  • toggle — switch on/off repeatedly.
  • channel cast bar — bossbar / actionbar / none, three progress UIs; interrupted by movement and damage; cost charged at opening or on completion.
  • ready_notify — binary-cooldown ready hint (actionbar + sound).

Combos and passives

  • combo — pressing an input sequence within the window (e.g. right→right→left) triggers the finisher; finalize_skill points to a graph node.
  • Passive expansion (11 types)ON_DAMAGED / ON_ATTACK / ON_KILL / ON_LOW_HEALTH (edge-triggered) / ON_SNEAK / ON_JUMP / ON_SPRINT / ON_BLOCK_BREAK / ON_RESPAWN / ON_FALL / TICK. Since 1.0.16 passives are schema-friendly and need no trigger.primary.

Control and diagnostics

  • silence/qs silence / API block, activating the LOCKED state.
  • Protocol / bridge diagnostics/qs protocol, /qs bridge.
  • debug trace — staged [EVENT][PARSE][ROUTE][GATE][EXEC][POST][FALLBACK] localization, with [BYPASS] as an architectural-conflict warning.

Content and integration

  • Built-in examples rewritten as commented tutorials — 8 example skills (fire_wave / blade_slash / demo_slash / demo_slash_charged / retaliate / dash / shield / fire_combo_finisher), dropped only when missing by default, never overwriting edits. See Built-in Skills and Examples.
  • Cross-plugin integration examples — QI item handler / NI command bridge / MM real presentation / QC·MMOCore class layer, dropped into integrations/.
  • Level growth (levels) — override cooldown / cost / params per level, with parameters passed through to MM.
  • Script exitspre_js blocking, post_js side effects (reusing QCL's GraalJS).

🚧 Known boundaries / plans

ItemCurrent state
Mana / stamina resource poolresource.mana and the like are temporary placeholders, to be taken over by QinhClass (QC) in the future
GUIThe qinhskills.gui permission exists, but the GUI is internal / reserved and bound to no command
Event-chain CIInternal regression testing, not publicly exposed (/qs test, /qs gen unavailable)