A downloadable tool

Buy Now$12.99 USD or more

Class-trial debates, inside your RPG Maker MZ game.

The cast sits in a ring. One after another they make their statements, and every statement flies across the stage as big moving type. Somewhere in one of them is a lie, glowing gold: the weak point. The player turns the cylinder to a truth bullet from the evidence they hold, aims, and fires. The right bullet on the right weak point breaks the statement apart and wins the debate. A wrong one costs influence. Run out of influence or time and the debate is lost.

You write only the words. A debate is a few Comment lines in a common event. Rebuttal composes how every statement moves from its own text and its speaker, so a debate looks directed without a single keyframe.


⚠️ Compatibility — the question you actually have

Tested against RPG Maker MZ with the stock scripts unmodified, verified by running the plugin in the real engine rather than only in tests.

Plugin Manager order:

  1. RebuttalCore.js — Rebuttal rules: reads a debate written in comments and composes how every statement moves. Load FIRST.
  2. RebuttalDraw.js — Rebuttal's look: the trial ring, kinetic type and the weak-point glow, drawn in code. Load after RebuttalCore.
  3. Rebuttal.js — Class-trial debates: statements fly as kinetic type; shoot the weak point with the right evidence. Load after RebuttalCore and RebuttalDraw.

This order reads sensibly in the list and nothing depends on it. Every file resolves its siblings the first time a debate opens, so Rebuttal works in whatever order the Plugin Manager gives you, including the alphabetical order you get by dragging the folder in, which puts the entry file Rebuttal.js first. That is tested: the in-engine smoke run, the storyboard replay and the frame-cost gate all load the three files alphabetically and open a debate through the real plugin command. Rebuttal.js is the only file that touches RPG Maker; the other two are the rules and the drawing, and neither knows the engine exists. Switch Rebuttal.js off and nothing is patched.

It extends one core method by saved-original prototype extension, not replaced: Game_Interpreter.prototype.updateWaitMode.

Because nothing is clobbered, Rebuttal co-exists with other plugins that patch the same seams, including large suites.

Writing a debate

Rebuttal: Mara | The lantern was {still burning} when we found him. | lantern
Rebuttal: Ines | Are you sure the {ledger} was locked away? | ledger
Rebuttal: Bram | I think... it was an accident...
  • Speaker, then the statement. Curly brackets mark the weak point, and the bullet that breaks it follows a second bar.
  • A statement with no weak point is a distraction. Rebuttal noise: lines only add to the din.
  • Bullets are your items: tag one <Rebuttal Bullet: lantern> and it joins the cylinder under its own name. With none held, the debate offers its own answers so you can test before the evidence exists.
  • A line the plugin cannot read is skipped and named in the console with its comment line number, so a typo never vanishes silently.

The motion is composed, not keyframed

  • Eight entrances taken in turn (slide, zoom, drop, rise, spin, type, split, sweep), so neighbouring statements never enter alike.
  • Seven paths (drift, arc, wave, orbit, zig, hold, tilt). Each speaker moves within their own family of three, and the words pick which.
  • Punctuation sets the emphasis: ! punches in, ? wobbles, ... drifts.
  • Long lines move slower so they stay readable, and a weak point is never split across two lines.
  • A Seed parameter changes every motion; the same seed always repeats it.

Plugin command and parameters

  • Start a Debate: the common event, influence (wrong shots allowed, 1 to 9) and a time limit (10 to 600 seconds). The event waits while the debate is on screen and continues when it ends.
  • Won switch: ON when the player breaks the right weak point, OFF when the debate is lost. Shots variable: how many shots were fired.
  • Playing: aim with the mouse, a finger or the arrow keys; Page Up / Page Down or the mouse wheel turn the cylinder; OK, a click or a tap fires. A weak point can only be hit while it is fully on screen.

Drawn in code

Nothing here is an image file. The trial ring and its named seats, the speaker's spotlight, every letter of every statement, the gold glow on a weak point, the crosshair, the revolver cylinder HUD with its influence pips and time bar, and the REFUTED stamp are all drawn with canvas paths. The type is a heavy display face from the player's system (Arial Black, Segoe UI Black, Impact), never RPG Maker's default font, and no stock window appears in the scene. No font or image file ships.

Tested in the real engine

Every check below ran in RPG Maker MZ's own runtime, from the exact zip you download: the plugin command through a real event interpreter, the files loaded alphabetically as a drag-in gives you, real keyboard, mouse wheel, click and touch input, a lost debate, a timed-out one and an empty one. A running debate measured 2 draw calls per frame in the frame-cost gate.

In the zip

  • RebuttalCore.js, RebuttalDraw.js, Rebuttal.js: raw, readable, commented JavaScript.
  • Readme_for_Users.md and LICENSE.txt (use it in any number of your own commercial or free games).

Version 1.0 is the debate. If you want menu-paced cross-examination instead, presenting an exhibit from a case file, that is our sibling plugin Verdict Core.

AI disclosure: this plugin's code and graphics were made with generative AI. It ships no sounds and no story text; the example lines in the Readme are placeholders you replace with your own.

Made by Core Systems Asset Factory.

Purchase

Buy Now$12.99 USD or more

In order to download this tool you must purchase it at or above the minimum price of $12.99 USD. You will get access to the following files:

rebuttal-mz-plugin.zip 19 kB
Version 1

Development log