Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Sketch Plugins

Assorted free plugins for RPG Maker MV and/or MZ. · By Tamschi

Requests Sticky

A topic by Tamschi created Dec 18, 2025 Views: 1,215 Replies: 22
Viewing posts 1 to 5
Developer

You can post plugin requests here. I may make the plugin if I can do so within an hour by hand.

(+1)

I want a plug in to display "Miss" instead of "0" when the damage is 0.

Developer (1 edit)

Sounds doable, and like a good small request!

To clarify, which one would you prefer:

  • Damaging actions that do 0 damage miss instead (true miss) or
  • the target and text/visuals will act like there was a miss (fake miss)?

I haven’t looked at the code yet, so this is just in case either isn’t too complicated for a “sketch plugin”. It could make a difference in terms of side effects (like whether status effects are inflicted).

Developer

The ‘fake’ implementation was easier.

I also made one that reports those zero-damage hits as evaded instead, since it was a one-word difference.

(1 edit) (+1)

Yeah I'm only interested in the visuals. Fake is good. I just tested it and it works like a charm. Thanks a lot! The only difference between a true miss is the animation though. I didn't think about that. It's displaying the hit animation with the miss text. In case that's an easy fix you may consider making. But otherwise it works as intended. Thanks again.

Developer (1 edit)

In my test, it seemed to play the skill animation and then a miss/evade motion on the target.
I just tried changing Game_Action.prototype.executeDamage instead, but got the same result.

At least currently, it doesn’t look like something I’d be likely to figure out within an hour, so a ‘true miss’ implementation that doesn’t show the skill animation isn’t something I’ll attempt for now.

Edit: Typo.

(1 edit)

Can you look into making a tiny (I hope) core patch that fixes the easily thousands of warning messages that show up in the console log when playing a browser build on itch.io, which read something like:

"The provided value 'undefined' is not a valid enum value of type CanvasTextAlign."
from Bitmap.drawText @ rpg_core.js:1348
Bitmap.drawText @ YEP_CoreEngine.js:1031
Window_Base.processNormalCharacter @ rpg_windows.js:327
Window_Base.processCharacter @ rpg_windows.js:319
Window_Message.updateMessage @ rpg_windows.js:4411
<snip>

and occur for every character of text written to the screen, except for the map name. I've seen this in both my own and other people's games.

Developer(+1)

Done. I’ll update the page in a moment, but the file is there.

(Untested, but it’s a really simple issue and I’m quite confident.)

Developer(+1)

It’s Bitmap.drawText CanvasTextAlign Default Fix / TSk_Bitmap_drawText_CanvasTextAlign_Default_Fix.js, to be specific.

Note that I defaulted it to ‘start’ instead of ‘left’ since I think that’s what the web API does internally when that error occurs.

So far, this seems to be working almost entirely as expected. Only thing I've seen is warnings of
The provided value '36' is not a valid enum value of type CanvasTextAlign.
which happens in the Equip screen 5 times each time a different Actor is displayed, apparently once for each equipment slot that's visible, or when the list of slots scrolls (my game has a 6th slot that's always empty for now).  If you want a call stack, let me know.

There's also occasional "[Violation] 'requestAnimationFrame' handler took ###ms" with various values that I don't remember happening before.

But that's still immeasurably better than a warning for each text character sent to the screen.

THANK YOU!

Developer

A call stack would help, but a a 36 appearing there sounds like someone is calling drawText on Window_Base as if it was the method on Bitmap. The former doesn’t have a lineHeight parameter preceding align.

I’m pretty certain that this line here in Window_EquipSlot.prototype.drawItem is the culprit:
this.drawText(this.slotName(index), rect.x, rect.y, 138, this.lineHeight());

The bug is present in both MV and MZ, but fixed in the YEP_EquipCore.

You can just delete the , this.lineHeight() part there to fix this, but I’ll make plugin to auto-check that argument tomorrow, too.

Developer(+1)

This is now available as Window_Base.drawText Ignore CanvasTextAlign Numbers.

Tested and working as expected, too. THANKS!

Developer (1 edit)

You’re welcome, it only took a few minutes to find with your description.

If you’d like to help me out in return, please consider mentioning me to other RPG devs you know. My plugins aren’t flashy, so the grapevine seems to be more effective for actually getting eyes on what I make 🤔

Developer

Regarding ”[Violation] ‘requestAnimationFrame’ handler took ###ms”, that’s a performance warning with unspecific cause. It means something took too much time and caused a lag frame.

You can figure this one out using the profiler, but usually it’s just something like resource loading not running in parallel.

I don't know if these are all already in your Sketch plugins (I think one is), but this is the patch file ("patches.json") that JoiPlay uses to modify MV so it works properly with one of the games that I worked on.

{
    "rpgmmv": [
        {
            "author": "[ g f y ]",
            "comment": "",
            "key": "this._fadeSprite.opacity = 255 * q;",
            "value": "if (this._fadeSprite) this._fadeSprite.opacity = 255 * q;"
        },
        {
            "author": "[ g f y ]",
            "comment": "",
            "key": "this.updateAllCellSprites(this._cellSprites);",
            "value": "this.updateAllCellSprites(this._animation.frames[frameIndex]);"
        },
        {
            "author": "[ g f y ]",
            "comment": "",
            "key": "this.updateAllCellSprites(this._screenSprites);",
            "value": "this.updateAllCellSprites(this._animation.frames[frameIndex]);"
        },
        {
            "author": "[ g f y ]",
            "comment": "",
            "key": "context.textAlign = align",
            "value": "if (align !== undefined) context.textAlign = align"
        },
        {
            "author": "[ g f y ]",
            "comment": "",
            "key": "var data = this._context.getImageData(x, y, 1, 1).data;",
            "value": "var data = (e => { try { return this._context.getImageData(x, y, 1, 1).data; } catch (e) { return \"FFFFFF\"; } })();"
        }
    ]
}
Developer (2 edits) (+1)

It would be helpful if these came with comments explaining the issue they work around 😅

I believe 1-3 are either plugin-specific or target older versions of the core scripts, since I can’t find their "key" in my project folder.
4 has roughly the same effect as my “Bitmap.drawText CanvasTextAlign Default Fix” sketch plugin.
5 I believe is a workaround for something that can occur on mobile due to texture size limits. It also just masks an error with potentially unintended behaviour instead of really solving it.

I think the additional ones are out of scope for me.

(+1)

I had much the same response for #4. I'd have to go on the JoiPlay Discord to even start to track this stuff down, and I'm only interested in case these are patches that would help all users and not just one Android-based emulator. Thanks for checking it out, though!

(1 edit)

Is there a simple corescript patch that would remove or massively raise the 12 line limit on Script entry in MV (MZ supposedly has none)? Elsewhere somebody generated a tool with "claude" to do this allowing external edits, but I was hoping to avoid that.

Although when I mentioned asking you, they said it was an editor limitation, so maybe there's nothing a plugin could do about this.

Developer

It’s an editor limitation, yes. However, “Script” first composes the lines and then uses eval from scratch each time internally, so I don’t recommend using that with large functions in the first place (at least not when it runs frequently).

The easiest option is to make a small plugin like so:

function myScript() {
  // You can name this anything in place of `myScript`.
  // Ideally, use at least somewhat descriptive names.

  // Also, just add multiple functions if you need more.

  // Your Script goes here.
}

And then call it inside the “Script” Command like this: myScript.call(this)

.call(this) instead of passing the interpreter as argument means you can use this inside myScript as you would in the “Script” Command.

Developer (1 edit)

I could make a tiny plugin that combines any adjacent “Script” Commands into one, though, thinking about it!

The performance issue would still apply, but it should work without problem, since concatenating JavaScript like this with a newline should (hopefully) not change its meaning. I can give it a go later this week.

Edit: It can change the behaviour in cases where this is manipulated to skip the next “Script” or this._index matters during script execution, though. Hm.

(+1)

No need to pursue this, I don't actually have a need for this functionality right now AFAIK. Any code that got close to the limits can be minified to frustrate everyone, or should be in its own plugin file probably.

Developer

I’ll hold off on it unless someone else asks, then.

I think larger Scripts in Events would be fine if combined with a function cache, but getting that just right in a way that breaks nothing (some plugins edit Command lists at runtime and eval can read surrounding variables so I’d have to detect that) is definitely too complicated for a sketch plugin.