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.
| Dimension | Status |
|---|---|
| Runtime pipeline | Single, old pipeline removed |
| Commands | 11 subcommands (see Commands and Permissions) |
| Result codes | 14 CastResult values (see Result Codes) |
| Passive triggers | 11 types |
| Bridge modes | AUTO / 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 cost —
cost.health/hungerhealth-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 modes —
NEAREST/FARTHEST/LOWEST_HP(execute the low-health) /HIGHEST_HP(the tank) /RANDOM, plusSELF/LOOK. - target filter —
ANY/LIVING/MONSTERS/PLAYERS/NOT_PLAYERS, withrange/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_skillpoints 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 notrigger.primary.
Control and diagnostics
- silence —
/qs silence/ API block, activating theLOCKEDstate. - 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 exits —
pre_jsblocking,post_jsside effects (reusing QCL's GraalJS).
🚧 Known boundaries / plans
| Item | Current state |
|---|---|
| Mana / stamina resource pool | resource.mana and the like are temporary placeholders, to be taken over by QinhClass (QC) in the future |
| GUI | The qinhskills.gui permission exists, but the GUI is internal / reserved and bound to no command |
| Event-chain CI | Internal regression testing, not publicly exposed (/qs test, /qs gen unavailable) |
Read next
- Commands and Permissions — Currently usable commands
- Built-in Skills and Examples — Built-in tutorial skills
- Glossary — Quick term reference