Small, focused plugins built for my own MZ project and cleaned up to share. Each is a single
.js file — download it, drop it in your project's js/plugins/, and enable it in the
Plugin Manager. Free for commercial & non-commercial use, no credit required.
.js
no credit required
MZ
On-screen enemies that chase the player within a "home" zone, then give up and walk back when you escape — an idle → chase → return state machine. Built for games with visible (non-random) encounters.
<Leash> + optional <Sight: 6>, <Leash Range: 8>,
<Home Region: 12>, <Chase Speed: 5>, <Give Up Balloon>.Swaps an actor's face index and portrait filename based on current HP %, so characters show hurt / bloodied art as they take damage — in menus and (with MainMenuCore/BattleCore) portraits.
<Face Index Override: N>, <Portrait Suffix Override: _hurt>,
<No HP Face Swap>.Plays a sound as each character draws in message windows — a typewriter "voice." Configurable SE with volume/pitch variance, interval, and skip-spaces/punctuation. Per-actor and named (NPC) voices.
<Text Sound: file> or a name in the params, then switch voices inline with
\Voice[3] (actor) or \Voice[happy] (named). \Voice[-1] mutes.A subtle GPU fragment-shader plasma that appears behind your windows on the map while a control switch is ON, and fades out when it's OFF. Built for an opening "void" scene but works for any dream/limbo mood.
Sets the thickness of the outline drawn behind all in-game text, from one setting — bolder for a
chunkier look, a hairline for subtle, or 0 to remove it entirely. Optional outline-color override too.
Outline Width in px (engine default is 3;
0 = none) and an optional Outline Color.Shows each actor's pronouns under their name in the menu. A small, friendly touch for character-driven and inclusive games.
<Pronouns: they/them> (or she/her, he/him, she/they, any text).Adds a %t placeholder to a skill or item's Message 1 / Message 2 lines, so the
use-text can name the target ("Aida glares at %t.") instead of only the user. Vanilla-compatible.
%t anywhere in the skill/item Message fields;
mixes freely with the normal %1 user placeholder.Keeps the battle log on screen so lines build up into a running history instead of clearing after each action — a classic, readable combat feel. Works in vanilla MZ and with VisuMZ BattleCore.
Plays several looping BGM stems in perfect sync and fades each layer in/out by switch, variable, or party size — adaptive music that grows. A hub theme can gain an instrument each time you recruit someone.
audio/bgm, define a Track
with one Layer per stem + its audible condition, then call Play layered BGM. Saves/restores in sync.Playtest-only: reload all graphics with a single keypress, so you can edit a sprite or tile in your art program and see it update in-game without restarting the test.
Pins a looping sound to an event so it has a place — it swells as the player walks toward it and pans left/right as you pass, fading to silence at the edge of its radius. Perfect for a river, a fire, a crowd.
<Ambient SE: name, radius, volume, pitch> (radius in tiles). Page-driven, so a Self Switch
can start/stop it; it auto-stops when you leave the map.Plays surface-specific footstep SE on a smooth, frame-timed cadence while the player walks (and a faster one while dashing), picking the sound by terrain tag or region. Random sample variations kill the robotic repeat.
Step1…StepN for variations. Silence a map with <NoFootsteps> or a mute switch.Draw maps as full painted images — a ground layer the characters walk on and an overlay they pass behind — with region-painted collision. Supports drifting layers, animated frames, shade tints and per-event lights.
<Parallax Ground: name>, <Parallax Overlay: name>,
<Region Wall: ids>, plus drift / shade / footstep tags. Paint walls with a region in the editor.Draw your character sheets at 2× (or any multiple) and tag the filename — the plugin renders them at the matching fraction in-game, so the file on disk stays your full-size master and there's no downscaled copy to overwrite.
%Nx in the sheet name
($Aida%2x.png → shown at 0.5). Feet stay planted; multiplies onto VisuMZ EventsMoveCore
<Scale>. Place below EventsMoveCore.Drive an event's character-frame animation from a sequence you author, at a speed you set in frames — clean forward cycles, two-frame loops, a one-shot reveal that holds, or treat the whole 12-cell sheet as one animation.
<Loop Frames: n>, <Reveal Frames: n>, or
<Frame Sequence: a,b,c @ n> (add once to hold on the last). Comments are per-page, so a tagged page triggers it.Animated enemy battlers, two ways: a single film-strip PNG (equal-width frames side by side) or one PNG
per frame (Name.png, Name2.png, …) so the editor's troop page shows a single frame for easy placement.
Forward loops or custom ping-pong sequences at a speed you set; static enemies are untouched. VisuStella BattleCore compatible.
<Battler Frames: n> (strip) or
<Battler Frame Files: n> (separate images) turns it on; tune with
<Battler Frame Rate: n> and <Battler Frame Sequence: 0,1,2,1>. Duplicate troop members
auto-desync (<Battler Frame Sync> to opt out). Boss collapse and Transform still work.Turn a skill into a field "gesture": when used outside battle, a tagged skill loops a character animation on the player (a wave, a dance, an emote) until you move or press a button — driven by notetags, no script.
<Gesture …> and point its Common Event
effect at a "Gesture Runner" common event. Pairs with EventFrameAnim + CharacterSheetScale.RPG Maker's "Select Item" command can only list items. This makes the next Select Item command list weapons instead — reusing its variable storage and wait handling — so events can ask the player to pick a weapon.
Select Weapon (next command)
right before a Select Item command; filter by weapon type and choose whether to include equipped weapons. The chosen ID lands in that command's variable.Lets a battle open fully faded to black so you can play an intro in the dark — messages, an animation, a slow enemy reveal — then bring it up with Fadein Screen. Works around the engine snapping brightness back at battle start.
<Black Start> to any troop page; the
battle opens black. Run your intro, then a Fadein Screen battle command. (Always fade in before the battle can end.)Sets the font size of gauge labels (e.g. "Health", "Willpower") and their value numbers independently, so you can make HP/MP/TP gauges more readable. Optionally grows the gauge's draw area so bigger text doesn't clip.
Label font size and Value font size in
px; leave Grow gauge height to fit on unless it pushes your layout around.Custom fonts can glitch — white specks or overlapping glyphs — when text first draws under load. This pre-rasterizes the font's glyphs at boot (at the sizes and outline width you use) so that first draw is clean.
Font sizes to warm and match the
Outline width to your TextOutlineWidth setting. Pairs well with TextOutlineWidth.Defeated on-map enemies come back when the player rests or moves on to a different zone — the world re-arms while your back is turned. Untagged bosses stay dead, and hopping between rooms of the same zone never resets anything.
<Respawn> (Note or page Comment),
group maps with a <Respawn Zone: name> map note, and have rest points run the Respawn All /
Respawn Zone plugin commands. Works by re-flipping the "defeated" self switches (letters configurable).Losing a battle doesn't mean Game Over — the leader wakes up sitting at a respawn point (a bench, an inn, a shrine), fully healed but lighter: a cut of their money and a few random consumables gone, with a wake-up message reporting the damage (or noting the pockets were already empty). Scripted losable battles ("Continue Even if Loser") keep their loss branches untouched.
Fixes the maddening bug where letters render with pieces missing under heavy text load (fast-forwarded messages, mid-battle dialogue). Modern Chromium GPU-backs MZ's text canvases and can upload a glyph before it finishes drawing; this forces CPU-backed canvases so text always completes before it's shown.
Animated per-letter text in messages — wavy, shaky, pulsing, wobbling, ghostly or rainbow spans via an
escape code. Letters keep their \C[n] color and font styling, and effects reset cleanly every message.
\FX[wave]…\FX[off] — types
wave / shake / pulse / wobble / ghost / rainbow, optional power like \FX[shake,2]. Works in
messages, choices and scrolling text. If you run VisuStella, load it below the VisuMZ block.Replaces the stock battle-start zoom/flash with a swirl + blur shader that distorts the real map and fades to black. Bosses get a slower, heavier wind-up — color draining out, screen shake ramping in — plus a title card and a matching disintegrate death.
<Boss Transition> on the enemy note (or a troop page Comment); optional
<Boss Title: …> / <Boss Subtitle: …> for the card. No dependencies.Code-driven particle bursts over battlers — pollen, confetti, smoke, embers, paint — with no Effekseer file required. Describe the emitter (count, colors, velocity, gravity, lifetime) and it spawns crisp inked pixel dots that drift, fade, and clean themselves up.
<Battle Particles: pollen>, with inline
overrides like <Battle Particles: pollen, count=70, color=#fff0b0>; or script
BattleParticles.emit(target, "confetti").Plays a chosen SE whenever a specific balloon icon pops — exclamation, question, any of them — on events, the player, or balloons fired by other plugins. Instantly audible emotes.
Adds a top-level "Credits" command to the main menu that runs a Common Event (your credits scroll). Injected in code rather than through menu-command params, so the editor can never silently revert it out of your menu.
CommonEventId param at your credits Common
Event — the command closes the menu and plays it. Works with or without VisuStella MainMenuCore.Draws the class name in the main-menu status list a touch smaller than the main font, so long class names sit quieter next to the actor name. Only the menu list is touched — status and equip screens stay full size.
Size reduction (px smaller than the current font,
default 4) and a minimum-size floor. If you run VisuStella, load below the VisuMZ block — plays fine with
MainMenuCore's status-list styles.Framed portrait cut-ins for cutscenes: a picture slides softly in on a drawn panel + border (no extra frame art needed), holds while your text boxes play, and slides back out. Swap the portrait in place for expression changes. Renders just below the message window, so the text box draws over it.
this.cutIn("Portrait", {side:"left", hold:-1}) (hold:-1 = stay until Cut Out). Portraits come from
img/pictures; optional entry SE and hand-painted frame PNG. Two at once (left + right) works.The editor can't target followers with Show Balloon / Show Animation / Set Movement Route — only the leader or events. This lets you pop balloons, play animations, turn, run move routes and swap the map graphic (emote/pose sheets) on any party member, by slot or by actor id, with an optional wait-for-completion.
this.partyBalloon(1, 4, true) (slot 0 = leader) or by-actor forms like this.actorAnimation(actorId, animId).
Graphic swaps persist (across transfers and saves) until the paired Reset Graphic.Procedural static + an opaque black underlay that encroach inward around the player — the clear bubble shrinks over a duration you set, like the world dissolving or a character passing out. Drawn beneath the message window, so dialogue stays readable while the veil closes in.
A study-driven enemy codex: when your "scan/study" skill lands a marker state on an enemy, its full
entry (live stats + flavor text) unlocks; foes merely fought show as locked ????? rows. The record lives in
save data, and the menu command is injected in code so the editor can't revert it away.
ExaminedStateId at the state your scan skill applies
(make it no-expiry so one scan per foe suffices), write flavor in the enemy note as
<BestiaryText>…</BestiaryText>. Open anywhere with SceneManager.push(Scene_Bestiary).
Works with or without VisuStella.A full rhythm-game scene, two play styles from the same chart files: 4-key DDR lanes (arrows, d-pad, rebinds, plus optional per-lane custom keys the player picks in a built-in bind screen) or scroll Theatrhythm-style (any key taps, arrow notes for direction). Hold notes, WebAudio-accurate judging, Perfect/Good windows, ranks, full-combo detection, latency calibration, and an autoplay mode for proofing charts.
data/charts/
({song, bpm, notes:[{t, lane}]}, t in seconds; add "d" for holds). Launch with the plugin
command or this.playRhythmGame("chart", scoreVar, accVar, rankVar); results also land on
$gameTemp.rhythmResults(). Optional dancer sprites flank the field, stepping on the beat.Sets modern, intuitive default keyboard bindings instead of MZ's quirky defaults. It only changes the defaults, so players using VisuMZ's rebinding menu can still remap freely.
Gives every keyboard key a readable text label, so VisuMZ's key-rebinding menu shows proper key names ("Space", "Shift", "↑") instead of blanks or raw codes.
Patches a bug in the VisuMZ_1_OptionsCore build shipped with the VisuStella sample project, where the rebind menu rejects every keypress (rows show blank and binding does nothing). This restores rebinding while still forbidding keys that shouldn't be remapped (F1–F12, the Windows key, etc.).
VisuStella Message Core can only show/hide a choice by switch. This adds a JavaScript condition tag to Show Choices, so you can say "show this choice only if the party has item 72" without routing it through a switch first.
<Choice Condition: code> shows the choice only if code is truthy (it rewrites into
Message Core's native hide/disable, so branches still line up). Place below VisuMZ_1_MessageCore.Auto-fills the message name box from the face graphic's filename — leave Name blank and the speaker labels itself. Type a name to override, or use the "no name" marker to force a nameless box for narration.
Hard-disables VisuStella's message word wrap so your hand-placed line breaks are always respected — no more silently re-flowed dialogue when a word-wrap default sneaks on.
Raises damage/heal popups above battlers so big enemy art doesn't sit on top of the numbers. The lift scales with each battler's sprite height — a towering boss pushes its numbers higher than a tiny critter does.
Stamps every save-file card with where the player was — preferring the map's display name ("Central Park") over the editor name, and skipping debug/scratch maps so they never clutter a card.
BattleCore's "Message Wait" paces every battle-log line, so speeding up state-gain spam makes the whole battle too fast. This shortens the wait for just the after-hit status block (state added/removed lines, buff/debuff lines) and fast-paths Guard actions — attacks, skills and damage keep the normal pacing.
VisuStella's category tabs only cover the Sell and Item menus — this adds the same tabs to the shop
Buy window, driven by the same <Category: x> notetag. The bar lists only categories present in
that shop's goods; a single-category shop shows no bar and behaves stock.
<Category: Healing> etc.,
set the tab order in CategoryOrder. Left/Right or click a tab to switch. Load below the VisuMZ block.Declutters the VisuStella item status pane (Item menu + shop): rows only draw when they carry real information — Element only when one is set, Accuracy only when ≠ 100%, Speed only when ≠ 0 — and conditional rows pack two per line. No more walls of "Element: none / Accuracy: 100%" on every consumable.
For games that want a text-only system UI: at boot it walks every VisuStella settings object and
zeroes every system-UI icon (menu commands, battle commands, options rows…), flips "auto" command styles to text, and strips
the leftover \I[0] indents. Database icons — items, weapons, states — are never touched.
No plugins match that filter.
.js file and drop it into your project's js/plugins/ folder.