An open library of RPG Maker MZ plugins, powered by the community.

PGMZ - The Community-Driven Plugin Library for RPG Maker MZ

MZ plugins

Deduction as a system: exhibits establish facts, testimony carries claims - VerdictCore.js

Plugin desc : Deduction as a system: exhibits establish facts, statements carry claims, and a near miss is distinguished from a wrong answer. Three scenes, a replaceable view layer, no core methods overwritten.

License :
・Copyright: Retained
・Commercial Use: Allowed
・Modification: Allowed
・Redistribution: Prohibited (This does not apply to works made using the material.)
・Details: See Download Page / In-plugin documentation

Author : CSAF — Core Systems Asset Factory

Website : https://csaf.itch.io

Desc page : https://csaf.itch.io/verdict-core

Download Page : https://csaf.itch.io/verdict-core

File name : VerdictCore.js

Help of plugin :

============================================================================
Verdict Core — what it actually is
============================================================================

RPG Maker has a shop, a battle system and a quest log. It has no model of
being RIGHT. Every mystery game built in it fakes deduction with a Conditional
Branch on an item id — which works exactly once, cannot express "close, but
not about that", and turns into unmaintainable event spaghetti the moment a
case has more than three clues.

This plugin supplies the missing model, and it is three ideas:

  1. AN EXHIBIT ESTABLISHES FACTS. A bloodstained glove is not evidence of
     guilt. It is evidence that BLOOD WAS SPILLED INDOORS. Facts are the only
     currency the engine trades in, so one exhibit can break four different
     lies and a new exhibit can never break a statement by accident.

  2. A STATEMENT CARRIES CLAIMS. "I never went inside" claims
     `suspect_stayed_outside`. It is contradicted by any fact that cannot be
     true alongside that claim. The author lists those facts; the engine does
     the matching.

  3. BEING WRONG HAS THREE FLAVOURS, NOT TWO. Presenting the murder weapon
     against the wrong line is not the same mistake as presenting a laundry
     receipt. The first is a NEAR MISS — the exhibit does contradict this
     testimony, just not here — and the engine says so without charging you
     for it. That single distinction is why the genre feels fair, and it is
     the reason this is an engine rather than a switch.

============================================================================
The three scenes
============================================================================

  Case File   every exhibit, what it establishes, and your credibility.
  Cross-Exam  the testimony. Press a line, or present an exhibit against it.
  Case Board  a corkboard. Pin two things together with string; if they mean
              something, a conclusion card appears and the fact becomes yours.

All three are drawn by VerdictCaseFile.js, which is a separate file so you
can replace the entire look without touching a line of the logic here.

============================================================================
Authoring a case, in the order you will actually do it
============================================================================

1. WRITE THE LIE FIRST. Decide what the witness says that is not true.
2. Name the fact that makes it impossible — `blood_was_indoors`.
3. Create the exhibit that establishes that fact.
4. List the fact under that statement's "Contradicted by".

That order matters. Authors who start from the evidence end up with exhibits
that establish nothing and statements nothing can touch.

Fact ids are plain lowercase strings you invent. They are never shown to the
player — every screen shows the exhibit's name and the statement's text.

============================================================================
Script calls (Conditional Branch, Control Variables)
============================================================================

  Verdict.knows('blood_was_indoors')        -> true / false
  Verdict.holds('bloodied_glove')           -> true / false
  Verdict.broken('t_maid', 's_never_inside')-> true / false
  Verdict.testimonyBroken('t_maid')         -> true / false
  Verdict.credibility()                     -> number
  Verdict.insights()                        -> array of conclusion strings

============================================================================
Compatibility
============================================================================

Verdict Core adds scenes; it replaces none. Every core method it touches is
extended with the original saved and called, so it coexists with menu,
message and battle plugins. It writes one key on $gameSystem and nothing else,
so its save data round-trips through any other plugin's save handling.

Works alongside CSAF Chronicle Core: break a statement, set a world-state
flag, and the consequence engine takes it from there.

============================================================================
Terms
============================================================================

Free for use in commercial and non-commercial RPG Maker MZ projects.
Do not redistribute the plugin itself. Credit appreciated, never required.

RPG Maker gives you a shop, a battle system and a quest log. It gives you no model of being right. Every mystery game built in it ends up faking deduction with a Conditional Branch on an item id — which works exactly once, cannot express “close, but not about that”, and becomes unmaintainable event spaghetti as soon as a case has more than three clues.

Verdict Core supplies the missing model. An exhibit does not prove guilt; it establishes facts. A bloodstained glove establishes that blood was spilled indoors. A statement carries claims, and it is contradicted by any fact that cannot be true alongside it. You list the facts; the engine does the matching. One exhibit can break four different lies, and a new exhibit can never break a statement by accident.

The part that makes it feel fair: being wrong has three flavours, not two. Presenting the murder weapon against the wrong line is not the same mistake as presenting a laundry receipt. The first is a near miss — that exhibit really does contradict this testimony, just not here — and the engine says so without charging you for it. That single distinction is the difference between an engine and a switch.

Three scenes ship: a Case File (every exhibit, what it establishes, your credibility), a Cross-Examination (press a line, or present an exhibit against it), and a Case Board — a corkboard where pinning two things together with string produces a conclusion card, and the fact becomes yours. All three are drawn by a separate file (VerdictCaseFile.js), so the entire look can be replaced without touching a line of the logic.

Nothing overwrites a core method. Every hook saves the original and calls it, so menu, message, save and battle plugins keep working, and it writes a single key on $gameSystem.

Where to get it: the itch.io page linked above, which shows the current price. The plugin is paid. The download ships readable, unobfuscated JavaScript — no minification — plus a LICENSE.txt. Commercial use in your games is permitted; redistribution of the plugin source itself is not, which is why this entry links to the plugin rather than hosting the file.

AI disclosure: the code and the store images for this plugin were generated with AI assistance, and this is disclosed on the itch.io listing as well.

Note on the help text below: this site strips angle-bracket characters from submitted text. Verdict Core’s help happens to use none, so the block below is reproduced exactly as it ships inside the plugin.

スポンサードリンク

-MZ plugins

Copyright© PGMZ - The Community-Driven Plugin Library for RPG Maker MZ , 2026 All Rights Reserved.