YEP.94 – Selection Control

Yanfly Engine Plugins is a plugin library made for RPG Maker MV, a wonderful piece of software to help you make that role playing game of your dreams. You can find out more about RPG Maker MV here.

You can grab the plugin here:
English Dropbox
English Mirror

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.


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.


Notetags – 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.

*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.


Notetags – 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.

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.


Lunatic Mode – Custom Select Condition


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.


Happy RPG Making!


Happy RPG Making!


These plugins and Tips & Tricks ideas are made possible thanks to our creative patrons on Patreon! The majority of our Tips & Tricks ideas are placed within the Patreon-exclusive Sample Project for quick and easy access! If you'd like to make a Plugin Suggestion, Yanfly's Patreon-based Suggestion Box a visit here:


If you have any bugs to report, visit the following link:


If you have any questions about Action Sequences, visit the following link:



Thank you!