# Caethyril's MZ Plugins

### Caethyril's RMMZ Plugins​

#### Features​

I've made some plugins for RPG Maker MZ! Here's a list of them with brief feature descriptions.
• The dates are when each plugin was last updated.
• For plugins marked script, JavaScript knowledge is strongly recommended.
• "See also" lists similar and/or alternative plugins; these are not guaranteed to be compatible.
Plugins:
Suggestions for improvements or additional features are welcome!

#### How to Use​

2. Place it in your project's folder, under js/plugins.
3. Open your project in RPG Maker MZ.
4. Go to Tools > Plugin Manager.
5. Double-click an empty line to add a new plugin.
6. Select the plugin from the Name list.
To edit the values of any of the parameters displayed to the right of the drop-down, double-click them in the list. The more complicated plugins have details for use in their help description; you can view this help via the Plugin Manager. Additional notes:
• Avoid renaming my plugins.
(Renamed plugins won't see their plugin parameters.)
• Save your project after making changes in the Plugin Manager.
(Plugin changes are only applied to the game after saving.)

#### Troubleshooting​

If you experience problems with any of these plugins that you want to report, you can get support:
• By posting in this thread;
• By posting a new thread on the JavaScript/Plugin Support board (link); or
• By starting a private conversation with me (link).
This information can help to fix the problem faster:
• Instructions stating how to reproduce the problem in a new project.
• A screenshot of the console when the unexpected behaviour occurs.
(You can open the console by pressing F8 during test-play.)

These plugins are all free to use, modify, and redistribute!
For the standalone plugins ("General" category), these conditions apply:
1. None of the original plugin header may be removed.
2. Credit should be given to Caethyril for the original work.
Happy RPG Making~!

Last edited:

#### Milennin

##### "With a bang and a boom!"
Thanks, might try out some of these. By the way, the WindowMotion link plugin has no url attached to it.

#### caethyril

##### ^_^
@Milennin thanks for pointing that out! Fixed.

#### wrigty12

##### Just a QAer playing with Javascript
Can I make a request? This might tie your WindowMotion and FaceOnRight plugins together, but can either:
1) The FaceOnRight plugin also allow you to move the NameBox to the same side as the Face?
2) The WindowMotion have an option to specifically move a window to alight to a specific edge of the screen, like the right edge or top edge?

Also I checked and your FaceOnRight plugin looks to be compatible with at least the VisuStella Message Core, so it looks promising it'll be compatible with others!

#### caethyril

##### ^_^
WindowMotion lets you specify a JS formula for the target position, so it's possible to specify window positions relative to the screen edges using some scripting:
• Left: 0
• Right: Graphics.boxWidth - this.width
• Top: 0
• Bottom: Graphics.boxHeight - this.height
You can tell I developed it for myself rather than for a request, haha. It's very versatile if you are familiar with scripting, though!

The FaceOnRight name box idea is great! I've included a new plugin parameter in v1.1 to sync the name box position with the face position. Also fixed a small bug with mirroring not happening sometimes~

Also good to hear my stuff is playing nicely with other plugins! I downloaded the VisuStella demo today but haven't tried it out yet.

#### wrigty12

##### Just a QAer playing with Javascript
Thanks for updating!

The FaceOnRight now throws an error. I have the parameter set to Never, but it looks like setting it to any value doesn't change it. I turned off all other plugins and I still see it happening.:
Code:
js/plugins/Cae_FaceOnRight.js:207 Cae_FaceOnRight.js unrecognised face mirror rule "".

#### caethyril

##### ^_^
Whoops, yea, I accidentally put two lines the wrong way round. The error was harmless, I think, but it's gone now (still v1.1, same link)~

Also pushed an update for PictureTouch: scripted binds now save/load correctly and picture clicks should no longer count as "move here" map clicks.

Last edited:

#### RK DracoRoy

##### Fire Emblem RPG Gamer
@caethyril Are the rest of your plugins from MV coming over someday? I had found great use for your Cae_ConsumeEval plugin, which made things really convenient with item conditions.

#### caethyril

##### ^_^
@RK DracoRoy yep, sorry, got distracted with some other things. Just released an MZ port of ConsumeEval; I did a couple of basic tests, seems it didn't need much tweaking. Let me know if it bugs out, though!

If you (or anyone else) have any more specific requests I'd be happy to focus on those first, otherwise I'll look into trying to merge/extend stuff like I've done with AutoSwitchVars~

#### chocopanda

##### Veteran
A Quest Plugin is what I look for everywhere T.T
PS: I can't afford Visustella's plugins

#### caethyril

##### ^_^
@chocopanda yea, quest logs are generally a lot of work, since it's an entirely new scene and (usually) a bunch of new windows, too. I'll consider it, but don't expect a quest log from me any time soon.

You can achieve a basic quest log using the Select Item command, e.g.
• Make one "Hidden Item A" type item (or B if you're already using A) per logged quest.
• Make an item called "Journal" or something, for the player to access the quest info.
• Make the journal call a common event like this:
Code:
◆Comment：Player selects quest from inventory.
：       ：(It's set to zero if they cancel.)
◆Select Item：quest, Hidden Item A
◆Comment：What did they pick?
◆If：quest = 4
◆Comment：Selected item ID 4! Quest = rat slayer!
：       ：Now check quest progress and show appropriate info~
◆Text：None, None, Window, Bottom
：    ：Bob wants me to kill 5 rats.
：    ：I've killed \v[11] so far.
◆
：Else
◆Text：None, None, Window, Bottom
：    ：I've killed 5 rats!
：    ：I should go back and let Bob know.
◆
：End
◆
：End
◆If：quest = 15
◆Comment：Selected item ID 15!
：       ：etc...
◆
：End
• Then add/remove the hidden items from the player when they start/finish each quest~
Not as fancy as a special quest log plugin, but it gets the message across!

#### Tentacurls

##### Villager
For the keyboard inputs plugin, I wanted to map w a s d to up left right down. I changed the 'name' of the respective codes to the respective direction, and all the keys work except for W. Do you happen to know why? Or do you need more info?

#### Jhin

##### Veteran
Hi,

First off, thank you for your awesome plugins.

I'm amazed with this plugin. Very useful and I thind it should deserve a lot of love.

• v1.1 Cae_CustomTextCodes 2020-08-30 script
Script your own text codes like \V[x] or \$. Includes premade examples. Could you please provide an example to make an /item[x] code work to show item icon and item name? I'm trying to use but this code does not work. Code: const itemId = parseInt(args[1], 10); return this.drawItemName($dataItems[itemId].iconIndex, 20, 20)

Thanks.

#### RK DracoRoy

##### Fire Emblem RPG Gamer
@caethyril I do have an additional request for MZ.

This idea is ExtendedSkills where if I select a skill in battle, a window will come up around the center (location and size (for the sake of text) can be adjusted) showing this set of skills based on the skill notetag.

Code:
<Extended Skill: x, x, x>

MZ allows replacing the Attack command with a skill through a trait "Attack Skill". The extended skill window can come from both the Actor command window and the Skill window.

#### caethyril

##### ^_^
@Tentacurls: by default W is mapped to "pagedown", that's the reason for the difference. KeyboardInputs has a safety parameter called Preserve Original Keys: if you set that to false in the Plugin Manager, it should allow you to remap W to "up" like you've described.

In that case I'd recommend removing any keys you're not using from the parameter list, if you haven't already...otherwise other things (like Z for "ok", or X for "escape") may also be overwritten.

JavaScript:
const itemId = parseInt(args[1], 10);
const item = \$dataItems[itemId];
if (!item) return '';
return '\x1bI[' + item.iconIndex + '] ' + item.name;
I.e. get the item, then return "\I[x] item name" as the replacement text. (It has to be \x1b here rather than a simple \ because backslashes get converted just before processing the text.)

[Edit: also, it should be used like \item[12], i.e. a \backslash, not a /forward slash. ]

@RK DracoRoy: nice idea, I'll stick it on my list~

Last edited:

#### Jhin

##### Veteran
Thank you for the help @caethyril

It is very nice the way you provide support and you help other people.

Thank you again.

#### Raith

##### Squire
Hey, thank you for the great plugin!

For the Cae_PictureTouch I'd like to report this "bug" (well, i'd like to call it expected behavior rather than a bug, anyway):

The picture respond nicely to the supposed input and execute the following bound script/common event. However, when you click-spam or press-spam on the picture while the bound common even is still running, the bound common event/script will be executed again and again after the the first execution is done. The common event/script will loop and loop and loop until you stop clicking on the picture. This has more devastating effect on the "press" option, rendering the game unplayable.

My current workaround is by reducing picture opacity to zero before the main sequence of script/common event and finally increase it again in the end of the common event. However, this method also make the click-based movement being triggered, resulting player running into the clicked tile coordinate.

EDIT: edited for grammatical error

Last edited:

#### SimProse

##### Veteran
I'm trying your custom title screen plugin, adding a Quit Game command using another plugin. I put in 4 commands without scrolling, and it seems to ignore it, and still only displays 3 commands in the box at once and needing to scroll. Using LunaTechs Quit2Desktop plugin if that matters.

#### caethyril

##### ^_^
@Raith: oh, yep. Not sure what the best way around that would be...maybe unbind the event at the start of its common event, then rebind it at the end?

I'll look into a more elegant solution! Maybe a "disable bind" plugin command and/or an option to suppress a picture bind if it's still processing that picture's bind~

@SimProse: have you tried loading my plugin after LunaTechs Quit2Desktop? (Click and drag to rearrange plugins in the Plugin Manager.) Seems to work OK for me!

#### SimProse

##### Veteran

Here's my plugin list. Does not seem to work still.

Hmm...once I turn off the VisuStella Core plugin, it works fine. That's something many people will use, so you might want to check on that.

### Latest Profile Posts

I think Kipling said it best.

If you can make one heap of all your winnings
And risk it on one turn of pitch-and-toss,
And lose, and start again at your beginnings
(...)
Yours is the Earth and everything that's in it,
⁠And—which is more—you'll be a Man, my son!

Do you feel like your modern cities are too clean? I made some dumpsters and trash variations. Visit my MZ resource thread (link in signature).
Doing clean-up on tall-ified sprites, filling in pixel by pixel where the stretching warped the image, feels incredibly tedious but also highly rewarding when one zooms out and the sprite looks even better than before.