A downloadable RPG Maker plugin

Buy Now$5.00 USD or more

With this plugin, the help window that normally appears for Skills and Items is also shown for Party and Actor commands (i.e. the category selection).

You can assign help text to any commands (including custom commands) and skill types (by ID). The 'attack' and 'guard' commands use the inputting Actor's respective Skill's Description by default.

Before deploying for Linux on Windows, you must update MV's NW.js runtime.

Ideas

  • You can use this plugin to show full versions of abbreviated command names, and/or to add some flavour text to them.

Hints

  • The help window supports most escape codes.
  • If you use a plugin to choose attack and guard skills for individual actors, that choice will be reflected in the default help texts for those commands.

Load Order

As all hooks installed by Battle Command Descriptions are transparent, it shouldn't interfere with other plugins' features.

When in doubt, load Battle Command Descriptions relatively late.

Plugin Parameters

Battle Command Descriptions...

Use this parameter to set up help text used for Party and Actor commands in battle. Each help text can be used for any combination and number of them.

You can also choose a specific skill type or a set of them, to use more specific texts than what the "skill" Actor command alone would enable.

Compatibility tweaks?

Iff enabled (as group and individually), Battler Entrance Flipbooks will adjust other plugins' features to avoid glitches.

See the individual parameters for more information.

Each tweak only applies if its targets are detected when this plugin is first loaded, and does nothing otherwise, so they are enabled by default.

Plugin Commands

This plugin does not define any Plugin Commands.

JavaScript API

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

There, the following property 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.

This property is frozen and the object is frozen.

parameters

Parsed plugin parameters, with __-suffixes removed from property keys.

Missing arrays and strings are added as empty, here, and Boolean properties are normalised to true or false.

This property is frozen, but the object is mutable.

BattleCommandDescription

Class that parses and evaluates structural plugin parameters. It's possible for other plugins to extend this class to create more advanced behaviour programmatically. Please refer to the source code for more information.

This property is frozen, but the class is mutable.

oldCreateAllWindows, newCreateAllWindows

Functions associated with the Scene_Battle hook installed by this plugin.

The hook uses a small "trampoline" that calls the "new…" function, so you can skip the hook very precisely using another plugin if necessary.

This hook calls setHelpWindow on this._partyCommandWindow and this._actorCommandWindow.

oldWindow_PartyCommandUpdateHelp, oldWindow_ActorCommandUpdateHelp,
newWindow_PartyCommandUpdateHelp, newWindow_ActorCommandUpdateHelp, oldWindow_PartyCommandClose, oldWindow_ActorCommandClose,
newWindow_PartyCommandClose, newWindow_ActorCommandClose

Functions associated with updateHelp and close hooks installed by this plugin.

The hooks use a small "trampoline" that calls the "new…" function, so you can skip the hook very precisely using another plugin if necessary.

updateHelp(commandWindow, commandData)

Updates the commandWindow's help window. The commandData is that returned by Window_Command.prototype.currentData.

getPartyCommandHelp(commandData): string | null
getActorCommandHelp(commandData): string | null

Determine the help text for Party and Actor commands iff available, respectively.

Save Contents

This plugin does not store any additional save data.

Compatibility Notes

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

This plugin installs only transparent hooks that cannot interfere with other plugins' functions, barring collisions of the help window assignment. A later-loaded plugin can be used to assign different help windows to the battle command windows.

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

This plugin is compatible with YEP_BattleEngineCore (tested with v1.51), as long as the matching compatibility tweak is enabled in this plugin.

This plugin appears to be fully compatible with VisuMZ_1_BattleCore (tested with Version 1.80). Note that when using VisuMZ_1_BattleCore, the "escape" command is an actor command by default!
Please note that due to VisuMZ_* plugins' obfuscation, compatibility support by me for these plugins specifically is only available as paid commission.

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.

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/battle-command-descriptions .

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 (via Elk), 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 plugin you must purchase it at or above the minimum price of $5 USD. You will get access to the following files:

TS_Battle_Command_Descriptions.js 19 kB
Version 1.0.0

Development log

Comments

Log in with itch.io to leave a comment.

(1 edit)

Hi, I have a setup in which all the skills are shown in the actor command window (so no SKILLS or MAGIC option). I tried your plugin, but it does not show the description for these skills aside from ATTACK and GUARD. Could you improve the plugin so that it shows the skill description of other skills as well? From your plugin description I assumed that it would do just that... but now I have empty windows. 

(+1)

FYI, I solved this with the help of a friend by adding the following in the getActorCommandHelp(commandData) function:

case 'singleSkill': {
const action = BattleManager.inputtingAction();
const actor = action && action.subject();
const acWindow = SceneManager._scene._actorCommandWindow
const object = actor && $dataSkills[acWindow._list[acWindow._index].ext];
const help = object.description;
if (typeof help === 'string') return help;
} break;
(2 edits)

You’re using VisuMZ_1_BattleCore to set up the menu, right?
Due to its obfuscation and lack of public API, I don’t support its custom features directly.

That said, you can load your code as separate plugin after mine, to make it easier to update my code:

'use strict';

// Untested, but very likely to work.
const oldGetActorCommandHelp = TS_Battle_Command_Descriptions.getActorCommandHelp;
TS_Battle_Command_Descriptions.getActorCommandHelp = function (commandData) {
  if (commandData && commandData.symbol === 'singleSkill') {
    const object = $dataSkills[commandData.ext];
    const help = object && object.description;
    if (typeof help === 'string') return help;
  }
  return oldGetActorCommandHelp.apply(this, arguments);
};

You don’t need to look up the _list entry because commandData should be exactly that object already. It’s also a good idea to avoid accessing the window through SceneManager._scene, as another plugin may reuse Window_ActorCommand in a different scene or under a different property name.

Thank you for your patronage and for sharing your issue and solution!

Thanks! Just for my benefit because I'm still a novice with JavaScript... why are the parts :

const action = BattleManager.inputtingAction();
const actor = action && action.subject();

...omitted in the patch in your last post? Asking because I genuinely don't understand what these do but just included them to be on the "safe" side. 

(3 edits)

The 'attack' and 'guard' skills can differ depending on the actor. That’s why I didn’t just use 1 and 2 there for their ID.

It’s only an extension point in the engine for plugins though, so you can’t change this in the editor by default. There’s a WeaponSkill.js plugin floating around that makes use of this, for example. (I’d link the original page but I’m not sure where it is from.)