Skip to content

Add hidden class unlocks and a knockout move for dragged bodies - #138

Draft
XxFran10xX wants to merge 6 commits into
mainfrom
feat/knockout-move
Draft

XxFran10xX wants to merge 6 commits into
mainfrom
feat/knockout-move

Conversation

@XxFran10xX

Copy link
Copy Markdown
Contributor

What

Two additions that Magic's hidden blood path needs:

  1. Per-character hidden class unlocks (ClassUnlocks).
    • API: unlock, lock, unlocked and isUnlocked for the active character.
    • Ids are normalised to upper case, with dashes and spaces turned into underscores.
    • Saved in the character JSON as unlocked-classes.
    • The class picker shows unlocked hidden classes (MMOCore display: false) at normal pricing.
    • Staff: /rpcharacter admin unlockclass|lockclass <player> <classId>.
  2. PvpKnockoutManager.moveDowned(Player, Location). Moves a knocked-out player and keeps the knockout freeze at the new spot, so a plugin can drag a body.
    • It teleports first and stores the new spot only if the teleport succeeds.
    • It refuses a location with no world.
    • The freeze now also compares the world.

Tests

  • Coverage: the new code is at 100%.
  • Full suite on Windows: the only failures are the existing body, database, estate and progress storage tests (AccessDenied/NoSuchFile from Windows file handling), the same set as main.
  • Self-review: 2 rounds. The class-unlock code was clean. The moveDowned findings (a refused teleport, the world in the freeze, a null world) are fixed with tests.
  • On TFMCDev01 (bots, with Magic's blood path): a knocked-out bot was dragged 8 blocks and held on the altar through a 10-second rite, at 0.00 blocks drift. No RPCharacters errors in the log.

Used by TF-Minecraft/Magic feat/bloodmagic-progression, by reflection.

🤖 Generated with Claude Code

XxFran10xX and others added 3 commits October 25, 2026 12:22
Other plugins can unlock a hidden MMOCore class (options.display: false)
for one character through ClassUnlocks. Unlocked classes are saved in the
character file under "unlocked-classes" and appear in the class picker
after the displayed base classes, priced like any other class change.
Staff can use /rpcharacter admin unlockclass|lockclass <player> <classId>.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
moveDowned now teleports first and stores the new freeze spot only on
success, refuses a location without a world, and the freeze compares the
world too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 25, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the size:L 100-499 effective changed lines (tests excluded in mixed PRs). label Oct 25, 2026
…points

Hidden classes another plugin assigns (Magic's wild magic classes) are no
longer offered in the class picker. ClassUnlocks.assign switches the
character into the class for free, and while it plays an assigned class
/class (and the class stage edit) refuses any change until staff release it.
Staff commands are now assignclass and releaseclass (unlockclass and
lockclass still work).

ClassSkillPoints gives a class its own per-character skill-point pool, so
the character's shared points never reach it; staff skill-point commands
on such a class change its own pool.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added size:XL 500-999 effective changed lines (tests excluded in mixed PRs). and removed size:L 100-499 effective changed lines (tests excluded in mixed PRs). labels Oct 27, 2026
XxFran10xX and others added 2 commits October 28, 2026 11:27
Traits can be marked hidden: the creation catalog and the character roster
sent to the website leave them out, while the game still shows them.

Manaless (injury-traits.yml, hidden) is the devotee's mark from Magic's
secret blood path: -2 to every attribute, and Magic takes away all mana
while a character bears it. Nothing else gives it: it is not a progression
target and has no prosthetic.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The character menu's trait summary and its full trait list now leave out
hidden traits (such as Manaless) when anyone but the character's own player
opens them. The owner's own views are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL 500-999 effective changed lines (tests excluded in mixed PRs).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant