RPG Maker MZ — Plugin Downloads

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.

47 plugins drop-in .js no credit required MZ

← back to the browser toolkit  •  ♪ the soundtrack

Drop-in — no dependencies

EnemyLeash v1.2

enemiesevents

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.

Tag an event's comment <Leash> + optional <Sight: 6>, <Leash Range: 8>, <Home Region: 12>, <Chase Speed: 5>, <Give Up Balloon>.

HpFaceSwap v1.1

facesbattle

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.

Actor notetags thresholds at ≤75% / ≤50% / ≤25% HP via params; per-actor overrides like <Face Index Override: N>, <Portrait Suffix Override: _hurt>, <No HP Face Swap>.

TextSounds v1.1

messagesaudio

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.

Per-character give an actor a voice via notetag <Text Sound: file> or a name in the params, then switch voices inline with \Voice[3] (actor) or \Voice[happy] (named). \Voice[-1] mutes.

QuizShaderBackground v1.0

visualmap

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.

Setup pick a control switch in the params; turn it ON/OFF in events. Tune colors, speed, scale and opacity. Costs almost nothing on the CPU (it runs on the GPU).

TextOutlineWidth v2.0

visualtext

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.

Setup set Outline Width in px (engine default is 3; 0 = none) and an optional Outline Color.

PronounDisplay v1.0

menuidentity

Shows each actor's pronouns under their name in the menu. A small, friendly touch for character-driven and inclusive games.

Actor notetag <Pronouns: they/them> (or she/her, he/him, she/they, any text).

TargetNameInMessage v1.0

battletext

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.

Usage put %t anywhere in the skill/item Message fields; mixes freely with the normal %1 user placeholder.

PersistentBattleLog v1.0

battleui

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.

Setup tune the max log height in params. If you use VisuMZ BattleCore, place this plugin below it in the list.

LayeredBGM v1.0

audioadaptive

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.

Setup export same-length stems to audio/bgm, define a Track with one Layer per stem + its audible condition, then call Play layered BGM. Saves/restores in sync.

HotSpriteReload v1.0

dev toolworkflow

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.

Usage press the configured key during playtest to re-fetch every image. Inert outside playtest, so it's safe to leave enabled.

AmbientSE v1.0

audiomap

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.

Event comment <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.

Footsteps v1.0

audiomap

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.

Setup add one sound per terrain tag / region in the params; name files Step1StepN for variations. Silence a map with <NoFootsteps> or a mute switch.

ParallaxMapping v1.0

mapsvisual

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.

Map notes <Parallax Ground: name>, <Parallax Overlay: name>, <Region Wall: ids>, plus drift / shade / footstep tags. Paint walls with a region in the editor.

CharacterSheetScale v1.0

spritesart

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.

Filename tag put %Nx in the sheet name ($Aida%2x.png → shown at 0.5). Feet stay planted; multiplies onto VisuMZ EventsMoveCore <Scale>. Place below EventsMoveCore.

EventFrameAnim v1.0

eventssprites

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.

Event comment <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.

AnimatedEnemies v1.1

battlesprites

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.

Enemy note <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.

GestureSkill v1.0

eventsskills

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.

Setup tag a skill <Gesture …> and point its Common Event effect at a "Gesture Runner" common event. Pairs with EventFrameAnim + CharacterSheetScale.

SelectWeaponChoice v1.0

eventsbattle

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.

Usage run the plugin command 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.

BattleBlackStart v1.0

battlecutscene

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.

Troop comment add <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.)

GaugeFontSize v1.0

uimenu

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.

Setup set Label font size and Value font size in px; leave Grow gauge height to fit on unless it pushes your layout around.

FontGlyphWarmer v1.0

textvisual

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.

Setup leave it on; list the Font sizes to warm and match the Outline width to your TextOutlineWidth setting. Pairs well with TextOutlineWidth.

EnemyRespawn v1.0

eventsmap

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.

Setup tag respawnable enemy events <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).

DefeatRespawn v1.1

battlesystem

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.

Setup point the params at your respawn map/tile/facing, set the gold-loss % and item count, and optionally a switch to flip on arrival plus a "disable" switch for fights that should still Game Over. The sit uses a bench-style event whose sheet has a sitting frame on one direction row (SitEventId + directions; 0 = wake standing). Key items are never taken. Pairs well with EnemyRespawn (waking up can count as a rest).

CpuCanvasText v1.0

textbugfix

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.

Setup enable it and put it at the top of the plugin list (it patches canvas creation, so it should load before anything that makes bitmaps). No parameters. WebGL is untouched.

TextFx v1.0

textvisual

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.

Escape code \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.

BattleStartTwist v1.2

battlevisual

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.

Setup works out of the box for normal fights. Mark bosses with <Boss Transition> on the enemy note (or a troop page Comment); optional <Boss Title: …> / <Boss Subtitle: …> for the card. No dependencies.

BattleParticles v1.0

battlevisual

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.

Skill notetag <Battle Particles: pollen>, with inline overrides like <Battle Particles: pollen, count=70, color=#fff0b0>; or script BattleParticles.emit(target, "confetti").

BalloonSounds v1.0

audioevents

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.

Setup map each balloon id to an SE (+ volume/pitch) in the params. If you run VisuStella, keep it below the VisuMZ block.

CreditsMenuCommand v1.0

menuevents

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.

Setup point the CommonEventId param at your credits Common Event — the command closes the menu and plays it. Works with or without VisuStella MainMenuCore.

MenuClassFontSize v1.0

menutext

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.

Setup set 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.

CutIn v1.0

cutscenevisual

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.

Usage plugin commands Cut In / Cut Swap / Cut Out, or script 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.

FollowerActions v1.2

eventscutscene

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.

Usage twelve plugin commands with dropdowns + a Wait checkbox, or scripts like 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.

ScreenStatic v1.2

visualcutscene

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.

Usage plugin command Start (with encroach frames), play your text, then Stop — classically followed by an instant tint-to-black for a hard cut. No dependencies.

Bestiary v1.0

menuenemies

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.

Setup point 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.

RhythmGame v1.2

minigameaudio

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.

Setup charts are plain JSON in 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.

For VisuStella users

IntuitiveKeybinds v1.0

VisuMZ OptionsCorecontrols

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.

Setup enable it; pairs naturally with VisuMZ OptionsCore key rebinding.

KeyNameDisplay v1.0

VisuMZ Core + OptionsCorecontrols

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.

Order place below VisuMZ_0_CoreEngine and VisuMZ_1_OptionsCore.

FixRebindMenu v1.0

VisuMZ OptionsCorebugfix

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.).

Order place below VisuMZ_1_OptionsCore. No parameters.

ChoiceConditionsJS v1.0

VisuMZ MessageCoreevents

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 text tag <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.

FaceNameBox v1.0

VisuMZ MessageCoretext

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.

Setup name face files after your characters and leave the message Name field empty. Place below VisuMZ_1_MessageCore (it provides the name box).

NoMessageWordWrap v1.0

VisuMZ MessageCoretext

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.

Order place below VisuMZ_1_MessageCore. No parameters.

DamagePopupLift v1.0

VisuMZ BattleCorebattle

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.

Setup tune the flat + height-scaled lift in the params (optional toggle for actors). Load below VisuMZ_1_BattleCore.

SaveLocation v1.0

VisuMZ SaveCoremenu

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.

Setup pure code, no editor-revertible params. Tidiest below VisuMZ_1_SaveCore — it's tuned for SaveCore's List save-menu style.

StateMessageWait v1.1

VisuMZ BattleCorebattle

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.

Setup set the reduced wait (and a separate Guard wait) in the params. Load below VisuMZ_1_BattleCore.

ShopBuyCategories v1.0

VisuMZ ItemsEquipsCoremenu

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.

Setup tag your items/weapons/armors <Category: Healing> etc., set the tab order in CategoryOrder. Left/Right or click a tab to switch. Load below the VisuMZ block.

ItemStatusTrim v1.0

VisuMZ ItemsEquipsCoreui

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.

Setup enable it, that's all — items only, equips untouched. Load below VisuMZ_1_ItemsEquipsCore.

UIIconCleanup v1.1

VisuMZ (suite-wide)ui

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.

Setup enable it below all VisuMZ plugins. One param picks the icon for the equip screen's "Remove" row (it sits inline with real item icons). Disable the plugin to restore stock behavior.

No plugins match that filter.

Installing a plugin

  1. Download the .js file and drop it into your project's js/plugins/ folder.
  2. In RPG Maker MZ open the Plugin Manager, add the plugin, and turn it ON.
  3. Set any parameters in that dialog. Mind the load order where a plugin notes one (e.g. "below OptionsCore").
  4. For plugins that use notetags, paste the tag into the relevant Actor / Skill / Event note box.