Selection Control (YEP)
VisuStella, Caz Wolf, Fallen Angel Olivia, Atelier Irina, and other affiliated content creators.
Download
System
This is a plugin created for RPG Maker MV.
For help on how to install plugins, click here.
For help on how to update plugins, click here.
Got errors with your RPG Maker MV plugin? Click here.
Required Plugins
The following plugins are required in order to use this plugin.
Place the following plugins above this plugin located in the Plugin Manager.
Yanfly Engine Plugins
This plugin is a part of the Yanfly Engine Plugins library.
Introduction
This plugin requires YEP_BattleEngineCore and YEP_TargetCore. Make sure this plugin is located under both of those plugins in the plugin list. When selecting targets, RPG Maker MV has it set by default that the list of valid targets is always either alive enemies, alive allies, or only dead allies. Actions would not be able to target either actors or enemies or change from single target to multiple targets. This extension plugin for the Target Core will allow you to break free of that restriction for better selection control of targets as well as insert customized conditions. If you are using the YEP_X_BattleSysCTB plugin, place this plugin under that plugin in the plugin list for the best compatibility.
Notetags
RPG Maker MV's editor is unable to allow for custom traits/properties that a game dev may wish to associate with a database object, event, map, etc. Notetags are used to work around such limitations by allowing the game dev to tag certain traits/properties using specific Notetags declared by the related plugin.
Here is a list of Notetag(s) that you may use.
---
General
To make skills and items select only certain types of battlers, you can use the following notetag setup to do so: Skill and Item Notetags: <Single or Multiple Select> This will allow the skill or item to be able to select either single targets or all targets at once. This will automatically make a skill default to single target selecting. You MUST change your scope in the database to work with this effect. *Note: Having this option will cancel out AoE Circles and AoE Rectangles to avoid conflicting issues. *Note: If there is an enemy with taunt, the option to switch between a group target and a single target will not be available. *Note: Enemy AI will NOT make use of the ability to toggle between single target and multi-target scopes. <Disperse Damage> Used in conjunction with the above notetag, this will cause damage to be split evenly amongst the number of targets the skill is dispersed into. The damage dispersion effect will only occur if multiple targets are being selected after toggling. <Enemy or Actor Select> <Actor or Enemy Select> This will allow the player to toggle between selecting an enemy or actor for the action's target scope. When using <Enemy or Actor Select>, it will first target enemies by default. Using <Actor or Enemy Select> will target actors by default. Using either notetag will change the action's target scope to single target. *Note: Enemy AI will NOT make use of the ability to toggle between actors or enemies for skill selection. <Weapon Range> <Weapon Ranged> Requires YEP_RowFormation.js. This will make the selection of targets vary based on the battler's weapon range. If the weapon is 'melee', then it will target the front row only. If the weapon is 'ranged', then it can target any row the battler wants. *Note: If you use any <Select Condition> effects, all selection options provided by default with the plugin parameters will be reset under the assumption that it will no longer be an action of default nature. If this is the case, you will need to use the above notetags to specify how you wish to make your skill's selection methods. Actor, Class, Enemy, Weapon, Armor, State Notetags: <Cannot Select: All> All actions cannot select this battler unless it's an action whose scope is a user scope. <Cannot Select: Physical Hit> <Cannot Select: Magical Hit> <Cannot Select: Certain Hit> This will prevent physical, magical, or certain hit actions from being able to select the battler. They will be excluded out of multi-hit skills, as well unless it's an action whose scope targets the user itself. targets the user itself. <Cannot Select: Skills> <Cannot Select: Items> This will prevent skills/items from being able to target the battler unless it's an action whose scope targets the user itself. <Cannot Select: Item x> <Cannot Select: Item name> This will prevent item 'x' (or the named item) from being able to target the battler unless the item's scope targets the user itself. If you have multiple items in your database with the same name, priority will be given to the item with the highest ID. <Cannot Select: Skill x> <Cannot Select: Skill name> This will prevent skill 'x' (or the named skill) from being able to target the battler unless the skill's scope targets the user itself. If you have multiple skills in your database with the same name, priority will be given to the skill with the highest ID. <Cannot Select: SType x> <Cannot Select: SType name> This will prevent skills of skill type 'x' (or named) from being able to target the battler unless the skill's scope targets the user itself. If you have multiple skill types in your database with the same name, then priority will be given to the skill type with the highest ID. <Cannot Select: Element x> <Cannot Select: Element name> This will prevent actions with an elemental ID of 'x' (or named) from being able to target the battler unless the action's scope targets the user itself. If you have multiple elements in your database with the same name, then priority will be given to the element with the highest ID. Weapon and Enemy Notetags: <Melee> This will designate the weapon/enemy as being melee and will affect any skill or item selection range that uses the 'Weapon Range' condition. Weapons/Enemies of this nature will target only the front row for those selection conditions. <Range> <Ranged> This will designate the weapon/enemy as being ranged and will affect any skill or item selection range that uses the 'Weapon Range' condition. Weapons/Enemies of this nature will be able to target any row for those selection conditions.
Select Conditions
To impose specific conditions on which targets are valid targets, use the following notetag setup: --- Skill and Item Notetags: <Select Conditions> condition condition </Select Conditions> Replace 'condition' with the desired condition setup. Insert multiple conditions to make an action require more conditions for viable targets. Using this will overwrite the default settings imposed by the plugin parameters so if you wish to use those settings, you'll have to use the associated condition with it. --- Conditions: --- Any Row - Requires YEP_RowFormation.js. The battler can be targeted from any row it is in as a valid target. This will conflict with the other 'Row Only' select conditions. --- Back Row Only - Requires YEP_RowFormation.js. This will make only the back row battlers be selectable for target. The back row will refer to whatever row is in the back that has living members. If row 3's enemies are all dead, but row 2 has living members, then row 2 will be considered the back row. This will conflict with the other 'Row Only' select conditions. --- Front Row Only - Requires YEP_RowFormation.js. This will make only the front row battlers be selectable for target. The front row will refer to whatever row is in front that has living members. If row 1's enemies are all dead, but row 2 has living members, then row 2 will be considered the front row. This will conflict with the other 'Row Only' select conditions. --- Weapon Range - Requires YEP_RowFormation.js. This will make the selection of targets vary based on the battler's weapon range. If the weapon is 'melee', then it will target the front row only. If the weapon is 'ranged', then it can target any row the battler wants. --- Row x Only - Requires YEP_RowFormation.js. This will make only battlers in row x be selectable for target. Any battlers not in row x will be excluded from target selection. This will conflict with the other 'Row Only' select conditions. --- Row x Max - Requires YEP_RowFormation.js. This will make all battlers who are located in a lower number row up to row x be selectable for target. Any battlers in a row number larger than x will be excluded from target selection. --- Row x Min - Requires YEP_RowFormation.js. This will make all battlers who are located in a row from row x onward selectable for target. Any battlers in a row number smaller than x will be excluded from target selection. --- Param stat eval ie: Param MaxHP >= 500 ie: Param HP% <= 0.30 ie: Param Level === 25 - This makes the selection have a check on the target's parameter values before deciding if the target is a valid target for selection. You can replace 'stat' with 'MaxHP', 'MaxMP', 'MaxTP', 'HP', 'MP', 'TP', 'HP%', 'MP%', 'TP%', 'ATK', 'DEF', 'MAT', 'MDF', 'AGI', 'LUK', or 'LEVEL'. This run an eval check against that parameter owned by the target. --- State: x State: name - The target must have state 'x' in order to be selected as a valid target. If you're using the named version of the condition and you have multiple states with the same name in your database, priority will be given to the state with the highest ID. If the target doesn't have state 'x', then the target is not a valid target for selection. --- Not State: x Not State: name - The target must not have state 'x' in order to be selected as a valid target. If you're using the named version of the condition and you have multiple states with the same name in your database, priority will be given to the state with the highest ID. If the target does have state 'x', then the target is not a valid target for selection. --- Not User - This will remove the user from the possible selection pool making the user unable to be selected as a valid target.
Lunatic Mode
For advanced users who have an understanding of JavaScript, you can use the following features added by the plugin to further enhance what you can do with your game project.
For those with JavaScript experience, you can use the following notetags to make custom selection conditions for skills and items. Skill and Item Notetags: <Custom Select Condition> if (target.name() === 'Harold') { condition = true; } else { condition = false; } </Custom Select Condition> The 'condition' variable determines if the condition will pass or not. If the variable returns 'true', the condition will pass. If the variable is 'false', the condition will fail and the target will not be a valid target for the action. Even if the <Custom Select Condition> notetag passes, all other selection conditions must pass, too.
Tips & Tricks
The following Tips & Tricks effects use this plugin:
Changelog
Version 1.15: - Bypass the isDevToolsOpen() error when bad code is inserted into a script call or custom Lunatic Mode code segment due to updating to MV 1.6.1. Version 1.14: - Updated for RPG Maker MV version 1.6.1. Version 1.13: - Fixed a bug for the cached items. Version 1.12: - Updated for RPG Maker MV version 1.5.0. Version 1.11: - Optimization update. Lag that occurred during menu scrolling in the middle of battle is now reduced/removed. Version 1.10: - Lunatic Mode fail safes added. Version 1.09: - Fixed an exploit with skills that gain TP across Disperse Damage. Version 1.08: - New Feature: Clicking upon the Party Status Window to select actors works. This requires Battle Engine Core v1.38 or else it will not work. - New Feature: Visual Enemy and Visual Ally select for touch input. This requires Battle Engine Core v1.38 or else it will not work. Verison 1.07a: - Fixed a bug that caused the all dead check to not check the actors that were unselectable. - Compatibility update with Battle System CTB to prevent taunt effects and unselectable from making the CTB Turn Order bug out. Version 1.06a: - Added 'Physical Weapon Range' and 'Default Weapon Range' parameters. These parameters are used for the new Select Condition: 'Weapon Range', which will determine the range of a skill based on the weapon's range (melee or ranged) and allow which enemies the battler can select. - Added <Weapon Ranged> for Skills and Items. This will make the skill/item be range dependent on the weapon equipped (or if the enemy is ranged). - <Melee> and <Ranged> notetags added for weapons and enemies. This will give weapons and enemies melee or ranged attributes. - Changed sorting algorithm to better fit actors based on their visual position on the screen. Version 1.05: - Compatibility update with Damage Core to fix Damage Dispersion if damage caps are being used. Version 1.04: - Fixed a bug with the <Cannot Select> notetags that made them only work with states. Version 1.03: - Fixed a bug that made <Bypass Taunt> and <Ignore Taunt> notetags not work for the YEP_Taunt.js plugin. Version 1.02a: - Fixed a bug that caused a crash when multiple targets are present. - Fixed an error with getting the wrong eval variable. Version 1.01: - Fixed a bug with the 'Not User' select condition not working properly. Version 1.00: - Finished Plugin!