Deduction as a system: exhibits establish facts, testimony carries claims - VerdictCore.js
Deduction as a system: exhibits establish facts, testimony carries claims(Author:CSAF — Core Systems Asset Factory) - VerdictCore.js
https://en.plugin-mz.fungamemake.com/archives/12499
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.
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
============================================================================
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.