[go: up one dir, main page]

A downloadable RPG Maker MZ plugin

Buy Now$5.00 USD or more

This plugin has no parameters! It only provides a plugin command for MZ!

This is a relatively small but powerful helper plugin that allows you to manage ("Swap", "Copy" or "Add") Actor state in whole or in part.

If requested, I could also implement "Move", "Subtract" and "Absorb" modes.

Ideas

  • You can use this plugin to stash Actor state and easily roll it back to that snapshot later, for example to implement a tutorial or arena feature where level and Skill progression doesn't carry over to the main game.
  • It also can be used as workaround in cases where plugin configuration is fixed in Actors' note tags and can't be adjusted dynamically.
  • You can also implement load-out presets with this plugin, though note that any equipment is summoned rather than drawn from inventory with the current modes.
    (Let me know if you need a toggle to (try to) draw from inventory instead!)

Hints

  • Current HP, MP and TP are read early and written late, so if 'Relative' is chosen then that will carry correctly along class and other Max- changes.
  • Note that all number-like and boolean arguments are Variable- or Switch-controllable, respectively! Edit the value as "Text" and enter for example V12 to use the value of Variable 12 as number, or S13 to use whether Switch 13 is ON as boolean.
    Important: The JavaScript type must match exactly and numbers must be integers!

Load Order

As all hooks installed by Actor Mixer are transparent, it shouldn't interfere with other plugins' features.

When in doubt, load Actor Mixer relatively late, so that it can correctly suppress Actor refreshing while the edit is in progress. It refreshes both involved Actors and also the Player automatically after performing the edit.

Plugin Parameters

None. This plugin is controlled only through MZ-style plugin commands.

Plugin Commands

Remix Actor(s)

Applies data from "Source" to "Target" (or between them) according to the chosen "Mode". Possible modes are "Swap", "Copy" (from "Source" to "Target") and "Add" (which lets you sum up or merge certain aspects on Target).

When "adding" equipment, items that would go into already-filled slots drop directly into the Party inventory instead.

Any combination of the following Actor state can be remixed:

  • Name, Nickname (adding concatenates)
  • Class, Skills and Experience or Level (optionally with level-up message)
  • Character, Face and Battler images
  • Equipment
  • HP, MP, TP (relative or clipped)
  • States and Buffs
  • Base parameter bonuses
  • Party membership (implicit property, inserts after or replaces in place)
  • for completeness: the action input index (?), the last used Skills (menu and/or battle) and the last-selected command in battle

JavaScript API

This plugin unconditionally sets the global variable TS_Actor_Mixer when first loaded.

There, the following properties and functions are available:
(See source code comments for more detailed type information.)

version

Semantic Version-compatible featureLevel and patchLevel information.

I don't reset the patchLevel to 0 when incrementing featureLevel, so that patchLevel alone is enough to determine whether a certain fix is available in each version.

Iff releaseCandidate is not undefined, it indicates the RC number of the current version (starting at 1). This value is reset for each version that has release candidates.

This property is frozen and the object is frozen.

parameters

Hydrated plugin parameters, with trailing _, __, _file and _files stripped from property names.

This property is frozen, but the object is mutable.

decodeParameters(parameterObject)

Parses plugin parameters in place, stripping trailing _, __, _file and _files from property names.

This property is frozen.

normalizeParameters(rawParameters, norms, parameters): parameters

Hydrates parameters with data from rawParameters according to norms.

This property is frozen.

decodeArguments(parameterObject)

Decodes MZ-style structured plugin command arguments in place.
(Make sure to pass a copy of the original object.)

Unlike decodeParameters, this function can interpolate Variable- and Switch-values and is configurable by other plugins.

RemixActorArgs, ParameterSet

Classes that represent hydrated plugin command arguments.

These properties are frozen, but the classes are mutable.

oldRefresh, newRefresh

Functions associated with the refresh-suppressing hook this plugin installs.

newRefresh is called by a trampoline, so changing it does affect the call chain at the right depth.

mzRemixActors({ ...args }), remixActors(args), remixResolvedActors(target, source, args)

Plugin command (decoder), actor resolver and main implementations of this plugin, respectively. In most cases, you should interact only with the latter two.

Save Contents

This plugin does not store any additional save data.

Compatibility Notes

This plugin was tested on RPG Maker MZ 1.9.2, uses only the public RPG Maker API as far as possible to edit, and does not use any platform-specific APIs.

This plugin should be compatible with any deployment target available for RPG Maker MZ, including web and most custom ones.

If you notice issues or glitches in combination with other plugins, please tell me about them, and I'll check if a compatibility tweak is feasible.

There is an issue in combination with VisuMZ_0_CoreEngine where that plugin may erroneously change an Actor's HP and likely MP and TP after an edit that changed their respective maxima.
As VisuMZ_0_CoreEngine is obfuscated, please contact its creators for a compatibility patch if needed. As a workaround, consider healing the edited Actor after making use of Actor Mixer.

Copy of License Grant

(as included in the plugin file, aside from line wrapping)

A license for this plugin can be purchased at https://tamschi.itch.io/actor-mixer .

Once you have purchased it, you may redistribute and sublicense this plugin file as part of games you create. You may not redistribute nor sublicense it separately or as part of an asset- or resource-collection.

You may modify this plugin when including it with your games, as long as the attribution above and this license grant stay intact. If you do so, you must add comments to indicate which changes you made from the original.

Social Media

If you'd like to help me out a bit, I'd hugely appreciate if you could share this page with others who may be interested in this plugin. To make that more convenient, I've created a few social media accounts for updates and announcements:

Announcement on Mastodon, Announcement on Bluesky

I'll continue to post all important updates here on itch.io, of course, and the comments below remain the easiest way to reach me if you have any questions or bug reports.

Purchase

Buy Now$5.00 USD or more

In order to download this RPG Maker MZ plugin you must purchase it at or above the minimum price of $5 USD. You will get access to the following files:

TS_Actor_Mixer.js (MZ) 55 kB
TS_Actor_Mixer.js (MZ, release candidate) 62 kB

Development log

Comments

Log in with itch.io to leave a comment.

Loading inventories and "absorbing" stats from one another would be a fun way to have actor fusions, like in Shin Megami Tensei or Monster Crown. Makes me wonder if combined with your Dynamic Actors and Characters plugin could even pass down image traits.

(3 edits) (+1)

I hadn’t thought about it, but it would be easy to support editing Character Tags from Dynamic Characters too 🤔 (Dynamic Actors just references the tags from the other plugin.)
I added it to my to-do list.

By “inventories” you mean current equipment, right? The normal party inventory is out of scope for this plugin.

For fusions where one of the Actors disappears, I think the “Add” mode would be more helpful, followed by removing the “Source” Actor.
I’d probably implement “Absorb” so that an equipment isn’t taken at all if the target slot isn’t empty. Maybe “Drain” would be a better name for it.

(2 edits) (+1)

This should now be available in the release candidate (Ver. 1.2.0-RC.1) and requires Dynamic Characters Ver. 1.4+. (It should show a popup once if you try to use this without updating that.)

The feature is practically done, but I didn’t feel like testing it on Halloween, so for now it’s a release candidate that technically could see breaking changes to that feature. I think that’s unlikely, though.