GM dev commands: /set <attr> <n> + /setskill <skill> <0-1000> #81

Closed
opened 2026-07-19 09:53:58 +02:00 by marco · 0 comments
Owner

Dev/testing GM tools to tune a targeted mobile directly. Admin-gated (JWT), through CommandRegistry, effects via the World facade, feedback as SystemMessage, row added to docs/gm-commands.md.

  • /set <hits|mana|str|dex|int> <n> — one command with a sub-attribute (instead of separate /sethits, /setmana, /set str...).
  • /setskill <skill> <0-1000> — skills are stored in tenths internally (1000 = 100.0).

Server-side validation

  • Target must be a mobile (reuse the targeting flow used by /kill); out-of-range or unknown skill/attr → a catalogued error cue.
  • str/dex/int drive derived maxima (MaxHits=Str, MaxMana=Int, Stamina=Dex) — after a stat change, clamp current hits/mana to the new max.
  • Stats/skills/vitals are already persisted per-entity, so a set survives the next save (good for testing).

Open decisions

  • Targeting cursor (precise, like /kill) vs. acting on the currently selected target — lean toward the targeting cursor.
  • Whether /set hits 0 should kill (go through CombatSystem) or just set the value.

Proposed by the owner during the spell slice; agree the final shape before implementing (critical review).

Definition of Done

  • With admin rights, /set hits 30 on a targeted mobile sets its current HP to 30 (clamped to max), reflected in-game and after a save/reload.
  • /set str 100 raises MaxHits accordingly; current hits are clamped to the new max.
  • /setskill magery 1000 sets Magery to 100.0 (verified by a stronger bolt / skill readout).
  • A non-admin issuing the command is rejected server-side; unknown attr/skill returns a catalogued error.
  • docs/gm-commands.md has a row per new command.
Dev/testing GM tools to tune a targeted mobile directly. Admin-gated (JWT), through CommandRegistry, effects via the World facade, feedback as SystemMessage, row added to docs/gm-commands.md. ### Recommended shape (consolidated from the proposal) - **`/set <hits|mana|str|dex|int> <n>`** — one command with a sub-attribute (instead of separate /sethits, /setmana, /set str...). - **`/setskill <skill> <0-1000>`** — skills are stored in tenths internally (1000 = 100.0). ### Server-side validation - Target must be a mobile (reuse the targeting flow used by /kill); out-of-range or unknown skill/attr → a catalogued error cue. - str/dex/int drive derived maxima (MaxHits=Str, MaxMana=Int, Stamina=Dex) — after a stat change, clamp current hits/mana to the new max. - Stats/skills/vitals are already persisted per-entity, so a set survives the next save (good for testing). ### Open decisions - Targeting cursor (precise, like /kill) vs. acting on the currently selected target — lean toward the targeting cursor. - Whether /set hits 0 should kill (go through CombatSystem) or just set the value. _Proposed by the owner during the spell slice; agree the final shape before implementing (critical review)._ ## Definition of Done - [ ] With admin rights, `/set hits 30` on a targeted mobile sets its current HP to 30 (clamped to max), reflected in-game and after a save/reload. - [ ] `/set str 100` raises MaxHits accordingly; current hits are clamped to the new max. - [ ] `/setskill magery 1000` sets Magery to 100.0 (verified by a stronger bolt / skill readout). - [ ] A non-admin issuing the command is rejected server-side; unknown attr/skill returns a catalogued error. - [ ] docs/gm-commands.md has a row per new command.
marco closed this issue 2026-07-19 11:57:57 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo#81
No description provided.