Skip to content

Character plots and Intrigue - #84

Closed
XxFran10xX wants to merge 2 commits into
mainfrom
feat/plots
Closed

XxFran10xX wants to merge 2 commits into
mainfrom
feat/plots

Conversation

@XxFran10xX

Copy link
Copy Markdown
Contributor

Summary

Character plots and Intrigue now live in RPCharacters, natively, with no menu-injection workarounds. This replaces the first version in SimpleFactions PR #151, which is now reduced to its faction side. Companion PR: TF-Minecraft/SimpleFactions#151.

Intrigue

  • Intrigue is rolled once per character with the Spymaster formula. When SimpleFactions is installed the formula uses its configured weights; otherwise the same formula with its defaults.
  • Existing Spymaster rolls are imported from SimpleFactions and kept.
  • Shown in Character Info, slot 20, next to a new Plots button in slot 24.

Who watches over you

  • By default you defend yourself, at 50% of your Intrigue.
  • Confidant: asked in person; they must accept; a confidant serves only one character. Protection is 75% of each Intrigue, averaged.
  • Faction Spymaster: the Spymaster picks the faction members they protect and has a full list of them. Protection is their office Intrigue.
  • The Spymaster or confidant hears leaks first and decides whether to warn their charge (menu or /plot warn). If they haven't been online for 3 days, the character defends themselves and hears leaks directly. The protection resumes when they return.
  • A betrayed character may once per plot sense that their protector's reports "don't add up". This is an Intrigue roll each building or waiting day.

Informants

  • Proposals no longer name the target; only those who accept learn it. Declining doesn't make anyone informed.
  • Members who leave or are dismissed (or removed by staff) stay informed.
  • Informed characters can warn the target in person from the Plots menu. The target then knows of the plot, and the master hears that someone warned them.

Limits per player

  • One plot per account.
  • The retarget cooldown is per account.
  • The survival ban stays per character.

Ready plots: keep losing secrecy and rolling every day, and fail if not launched within 7 days.

The hunt

  • Hunt days count only while the target can be found. Days missed by the assassins still count. There is a hard cap of 21 days.
  • If the time runs out, the target survives, and that plot's participants can never plot against that character again.
  • Hunting mode: only deaths while hunting count.
    • It keeps the assassin's evil RP session running.
    • It can't be started from a warband or battle; SimpleFactions refuses warband joins and creation while hunting.
    • A knowing target is warned only when a hunt takes effect.
  • Sightings: when the target comes out in the open, every assassin online hears it, at most every 15 minutes.
  • Spare strength sharpens the hunt: the area grid and hint interval shrink, and every +50% of strength adds a hunt day, up to +2.
  • Crime scene: a successful assassination leaves clues of the killer (2), and 1 of each hunting accomplice within 16 blocks, through the existing clue system.
  • A target who knows of the plot can't switch characters or create one while hunted. This is enforced in RPCharacters' own switch confirmation, Character Menu creation slots and /rpcharacter create.

Staff

  • Every plot has a log at plots/logs/<code>.log, readable with /plot log <code> [page]. It records requests, approvals, invites (with distance and location), joins, declines, roles, informs and warnings, every day's numbers and leaks (and who they reached), suspicion rolls, investigation rolls, hunts, alerts, area hints and sightings. It also records conspirators coming within 16 blocks of the target, at most once per 10 minutes per pair, so staff can check that roleplay happened, and the deaths.
  • CoreProtect already logs chat, commands, logins and kills; this covers what it can't see.
  • Tools: /plot set <code> <progress|strength|secrecy|huntdays|phase> <value>, /plot kick <code> <member> and /plot unban <code> (lifts that plot's bans and cooldown), alongside approve, deny, cancel, day, list, info and reload.

Balance: retuned with a simulation so the plot's members decide the outcome.

  • Against an average self-defended target, a master with one assassin builds about 70% of the time. Against a strong Spymaster, only a full plot with strength collaborators reliably builds.
  • Hide collaborators cut leaks sharply.
  • Every number is in plots.yml, merged into existing files and reloaded with /plot reload.

The SimpleFactions pin moves to the released 3.16.0 to read Spymasters, factions, warbands and provinces.

Testing

  • mvn verify locally: 1881 tests. Every new line is covered.

  • The 4 errors and the 8 lines the gate reports locally are the known Windows-only POSIX-permission tests in Database and GraveManager, the same as on main.

  • Review: the combined diff was reviewed until clean, with full suites after each round.

  • TFMCDev01: this build and SimpleFactions #151 were tested with a 5-bot mineflayer test (~/plot-test/test-rpc.js), 38/38. It covers:

    • the menu and Intrigue
    • request, approval
    • proposals that hide the target until accepted
    • roles
    • a confidant bond, with leaks reaching the confidant but not the target, and the confidant's warning
    • staff set and log
    • building to ready
    • the investigation
    • Character Info Intrigue and Plots button
    • hunting: warm-up, commitment, effect, the knowing target's alert, area hint, warband creation refused, character creation locked
    • a staff day counting as a hunt day
    • a fallen hunting assassin revealed and permanently dead
    • the target assassinated, permanently dead, with 2 clues left at the scene

    The Dev log shows no errors.

No release and nothing on Main or Tutorial.

🤖 Generated with Claude Code

XxFran10xX and others added 2 commits October 11, 2026 13:05
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… hunting, staff log and tools

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

coderabbitai Bot commented Oct 11, 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.

Comment on lines +1 to +12
[2026-10-11 12:38] Set the status of the character Recipient 7e4aaaef-10cb-44f8-97aa-032add923e6a to DEAD
[2026-10-11 12:38] Set the status of the character Recipient 7e4aaaef-10cb-44f8-97aa-032add923e6a to ALIVE
[2026-10-11 12:38] Set the status of the character New name to DEAD
[2026-10-11 12:38] Set the status of the character New name to ALIVE
[2026-10-11 13:26] Set the status of the character Recipient 111a7683-92d2-4940-ae3c-c0798ba43fcb to DEAD
[2026-10-11 13:26] Set the status of the character Recipient 111a7683-92d2-4940-ae3c-c0798ba43fcb to ALIVE
[2026-10-11 13:26] Set the status of the character New name to DEAD
[2026-10-11 13:26] Set the status of the character New name to ALIVE
[2026-10-11 13:31] Set the status of the character Recipient 5f350894-20c0-49fb-9f7d-ae0bd5c77069 to DEAD
[2026-10-11 13:31] Set the status of the character Recipient 5f350894-20c0-49fb-9f7d-ae0bd5c77069 to ALIVE
[2026-10-11 13:31] Set the status of the character New name to DEAD
[2026-10-11 13:31] Set the status of the character New name to ALIVE

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are we commiting this?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are we commiting this?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are we commiting this?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are we commiting this?

@XxFran10xX

Copy link
Copy Markdown
Contributor Author

Scrapped for now.

@XxFran10xX XxFran10xX closed this Oct 11, 2026
@XxFran10xX
XxFran10xX deleted the feat/plots branch October 11, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants