Difference between revisions of "Armor Scaling (YEP)"
Line 307: | Line 307: | ||
- Finished Plugin! | - Finished Plugin! | ||
</nowiki> | </nowiki> | ||
+ | |||
+ | <!-- This is a comment, remove the arrows surrounding this for the categories you want to show --> | ||
+ | <!-- [[Category: RPG Maker MV Core Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Battle Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Item Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Skill Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Equip Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Status Menu Plugins]] --> | ||
+ | [[Category: RPG Maker MV Gameplay Plugins]] | ||
+ | <!-- [[Category: RPG Maker MV Movement Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Quest Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Options Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Eventing Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Utility Plugins]] --> | ||
+ | [[Category: RPG Maker MV Mechanical Plugins]] | ||
+ | <!-- [[Category: RPG Maker MV Visual Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Menu Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Message Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Quality of Life Plugins]] --> | ||
+ | <!-- [[Category: RPG Maker MV Plugin Tips & Tricks]] --> | ||
+ | <!-- [[Category: Action Sequences (MV)]] --> | ||
+ | <!-- [[Category: Comment Tags (MV)]] --> | ||
+ | <!-- [[Category: Main Menu Manager Integration (MV)]] --> | ||
+ | <!-- [[Category: Notetags (MV)]] --> | ||
+ | <!-- [[Category: Options Core Integration (MV)]] --> | ||
+ | <!-- [[Category: Plugin Commands (MV)]] --> | ||
+ | <!-- [[Category: Script Calls (MV)]] --> | ||
+ | <!-- [[Category: Text Codes (MV)]] --> |
Revision as of 18:14, 26 June 2019
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_DamageCore. Make sure this plugin is located under YEP_DamageCore in the plugin list. This plugin serves as a damage balancing plugin to make numbers across the battlefield more universal for both actors and enemies alike and gets past the flaws that ATK - DEF formulas have.
Armor Scaling
Armor Scaling allows the damage formula to be rid of "b.def * 2" and similar calculations in favor of scaling the damage relative to the armor values that the attack target has. The following is the armor scaling formula for both positive and negative armor values: Positive Armor Negative Armor 100 100 Rate = ------------- Rate = 2 - ------------- 100 + armor 100 - armor To get an idea of how armor scaling will affect damage, you can visit FlyingDream's Armor Scaling Calculator here: http://yanfly.moe/tools/armorscalingcalculator/ For quick reference, here's a table on how 1,000 base damage is affected. Armor Level Rate% Damage Armor Level Rate% Damage 1 99.01% 990 -1 100.99% 1,010 2 98.04% 980 -2 101.96% 1,020 3 97.09% 971 -3 102.91% 1,029 4 96.15% 962 -4 103.85% 1,038 5 95.24% 952 -5 104.76% 1,048 6 94.34% 943 -6 105.66% 1,057 7 93.46% 935 -7 106.54% 1,065 8 92.59% 926 -8 107.41% 1,074 9 91.74% 917 -9 108.26% 1,083 10 90.91% 909 -10 109.09% 1,091 25 80.00% 800 -25 120.00% 1,200 50 66.67% 667 -50 133.33% 1,333 75 57.14% 571 -75 142.86% 1,429 100 50.00% 500 -100 150.00% 1,500 150 40.00% 400 -150 160.00% 1,600 200 33.33% 333 -200 166.67% 1,667 250 28.57% 286 -250 171.43% 1,714 300 25.00% 250 -300 175.00% 1,750 350 22.22% 222 -350 177.78% 1,778 400 20.00% 200 -400 180.00% 1,800 450 18.18% 182 -450 181.82% 1,818 500 16.67% 167 -500 183.33% 1,833 550 15.38% 154 -550 184.62% 1,846 600 14.29% 143 -600 185.71% 1,857 650 13.33% 133 -650 186.67% 1,867 700 12.50% 125 -700 187.50% 1,875 750 11.76% 118 -750 188.24% 1,882 800 11.11% 111 -800 188.89% 1,889 850 10.53% 105 -850 189.47% 1,895 900 10.00% 100 -900 190.00% 1,900 950 9.52% 95 -950 190.48% 1,905 999 9.10% 91 -999 190.90% 1,909 9,999 0.99% 10 -9,999 199.01% 1,990 99,999 0.10% 1 -99,999 199.90% 1,999 999,999 0.01% 0 -999,999 199.99% 2,000 9,999,999 0.00% 0 -9,999,999 200.00% 2,000 Using the default base armor formula of 2 defense points is equal to 1 armor, this means at 200 defense, a battler will take only 50% damage. At 999 defense, the battler will take a little bit more than 16.67% damage. At those values without armor scaling, damage can be entirely undone for that very matter. This goes to show how effective armor scaling can be to maintain long-term balancing.
Armor Reduction and Armor Penetration
There are various modifiers that can alter the armor level before the armor scaling rate is applied to damage. Armor goes through four main steps and they are as follows. 1. Armor Reduction, Flat 2. Armor Reduction, Percentage 3. Armor Penetration, Percentage 4. Armor Penetration, Flat In step 1 (Armor Reduction, Flat), the target's armor is reduced by a value. Flat armor reduction stacks additively. Flat armor reduction can reduce a target's armor below zero. For example, if an enemy with 10 armor has their armor reduced by 25, the enemy will have -15 armor. Armor reduction values are provided by target and not the attacker. In step 2 (Armor Reduction, Percentage), the target's armor is multiplied by a percentage (100% - the listed value). Percentage armor reduction stacks multiplicatively and is ignored if the target's armor is 0 or less. Percentage armor reduction makes a bigger difference on targets with higher armor. For instance, with 40% armor reduction, a target with 200 armor will lose 80 while a target with only 50 armor will lose 20. Armor reduction values are provided by the target and not the attacker. In step 3 (Armor Penetration, Percentage), the target's armor is multiplied by a percentage (100% - the listed value). Percentage armor penetration stacks multiplicatively and is ignored if the target's armor is 0 or less. Percentage armor penetration makes a bigger difference on targets with higher armor. For instance, with 40% armor penetration, a target with 200 armor will be considered as having 80 less while a target with only 50 armor will be considered as having 20 less. Armor penetration values are provided by the attacker and not the target. In step 4 (Armor Penetration, Flat), the target's armor is treated as being reduced by an amount for purposes of damage calculation, but cannot be reduced below 0. Flat armor penetration stacks additively. Armor penetration values are provided by the attacker and not the target.
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.
---
You may use these notetags to adjust various factors for armor scaling rates and calculations. Skill and Item Notetags: <Armor Reduction: x> Causes the skill/item to reduce the target's armor level by x. This is calculated first above everything else. <Armor Reduction: x%> Causes the skill/item to reduce the target's armor level by x%. This is calculated second but is ignored if the armor level is less than 0. <Armor Penetration: x%> Causes the skill/item to reduce the target's armor level by x% (but will not go past 0). This is calculated third. <Armor Penetration: x> Causes the skill/item to reduce the target's armor level by x (but will not go past 0). This is calculated last. <Bypass Armor Scaling> This notetag allows you to bypass the armor scaling process for this individual skill/item. Actor, Class, Enemy, Weapon, Armor, State Notetags: <Physical Armor Reduction: x> Causes this actor to lose x armor when targeted by physical skills/items. This is calculated first. <Magical Armor Reduction: x> Causes this actor to lose x armor when targeted by magical skills/items. This is calculated first. <Certain Armor Reduction: x> Causes this actor to lose x armor when targeted by certain skills/items. This is calculated first. <Physical Armor Reduction: x%> Causes this actor to lose x% armor when targeted by physical skills/items. This is calculated second. <Magical Armor Reduction: x%> Causes this actor to lose x% armor when targeted by magical skills/items. This is calculated second. <Certain Armor Reduction: x%> Causes this actor to lose x% armor when targeted by certain skills/items. This is calculated second. <Physical Armor Penetration: x%> Causes this actor to cause the target to lose x% armor when using a physical skills/items. This is calculated third. <Magical Armor Penetration: x%> Causes this actor to cause the target to lose x% armor when using a magical skills/items. This is calculated third. <Certain Armor Penetration: x%> Causes this actor to cause the target to lose x% armor when using a physical skills/items. This is calculated third. <Physical Armor Penetration: x> Causes this actor to cause the target to lose x armor but not drop below 0 armor when using a physical skills/items. This is calculated last. <Magical Armor Penetration: x> Causes this actor to cause the target to lose x armor but not drop below 0 armor when using a magical skills/items. This is calculated last. <Certain Armor Penetration: x> Causes this actor to cause the target to lose x armor but not drop below 0 armor when using a certain skills/items. This is calculated last.
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 some JavaScript experience, you can make use of Lunatic Mode to calculate the way you want armor scaling done for particular skills and items right within the notebox! <Positive Armor Rate> value *= 100; value /= 100 + armor; </Positive Armor Rate> This enables you to set a custom positive armor calculation rate for the skill/item instead of using the default positive armor rate. <Negative Armor Rate> value *= 2 - (100 / (100 - armor)); value *= 1.5; </Negative Armor Rate> This enables you to set a custom negative armor calculation rate for the skill/item instead of using the default positive armor rate. <Base Armor> armor = target.def; armor -= user.atk / 4; </Base Armor> This enables you to set a custom way for the skill/item to calculate the base armor value used for armor scaling.
Action Sequences
These are action sequences that you can use with this plugin. Action Sequences will require Yanfly's Battle Engine Core to work.
Action Sequences - ala Melody
Battle Engine Core includes Yanfly Engine Melody's Battle Engine system, where each individual aspect of the skill and item effects can be controlled to a degree. These are called Action Sequences, where each command in the action sequence causes the game to perform a distinct individual action.
Each skill and item consists of five different action sequences. They are as follows:
- 1. Setup Actions
- They prepare the active battler before carrying out the bulk of the action
and its individual effects. Usually what you see here are things such as the active battler moving forward a bit, unsheathing their weapon, etc. This step will occur before the active battler expends their skill or item costs.
- 2. Whole Actions
- These actions will affect all of the targets simultaneously. Although this
section does not need to be used, most actions will use this for displaying animations upon all enemies. This step occurs after skill and item costs.
- 3. Target Actions
- This section will affect all of the targets individually. Used primarily
for physical attacks that will deliver more personal forms of damage. Actions that occur here will not affect other targets unless specifically ordered to do so otherwise.
- 4. Follow Actions
- This section will dedicate towards cleanup work after the individual
targeting actions. Here, it'll do things such as removing immortal flags, start up common events, and more.
- 5. Finish Actions
- This section will have the active battler close up the action sequence.
Usually stuff like running waits and holds at the last minute for skills and items, moving back to place, and others.
Now that you know each of the five steps each action sequence goes through, here's the tags you can insert inside of skills and items. Pay attention to each tag name.
1. <setup action> action list action list </setup action> 2. <whole action> action list action list </whole action> 3. <target action> action list action list </target action> 4. <follow action> action list action list </follow action> 5. <finish action> action list action list </finish action>
They will do their own respective action sets. The methods to insert for the action list can be found below in the core of the Help Manual.
Furthermore, to prevent overflooding every single one of your database item's noteboxes with action sequence lists, there's a shortcut you can take to copy all of the setup actions, whole actions, target actions, follow actions, and finish actions with just one line.
<action copy: x:y>
Replace x with "item" or "skill" to set the type for the action list code to directly copy. The integer y is then the ID assigned for that particular object type. For example, to copy 45th skill's action sequences, the code would be <action copy: skill:45> for anything that will accept these action codes. If you do use this notetag, it will take priority over any custom that you've placed in the notebox.
Target Typing
You may notice that in some of the actions below will say "refer to target typing" which is this section right here. Here's a quick run down on the various targets you may select.
user | This will select the active battler. |
target, targets | These will select the active targets in question. |
actors, existing actors | These will select all living actors. |
all actors | This will select all actors including dead ones. |
dead actors | This will select only dead actors. |
actors not user | This will select all living actors except for the user. |
actor x | This will select the actor in slot x. |
character x | This will select the specific character with actor ID x. |
enemies, existing enemies | This will select all living enemies. |
all enemies | This will select all enemies, even dead. |
dead enemies | This will select only dead enemies. |
enemies not user | This will select all enemies except for the user. |
enemy x | This will select the enemy in slot x. |
friends | This will select the battler's alive allies. |
all friends | This will select the all of battler's allies, even dead. |
dead friends | This will select the battler's dead allies. |
friends not user | This will select the battler's allies except itself. |
friend x | This will select the battler's ally in slot x. |
opponents | This will select the battler's alive opponents. |
all opponents | This will select the all of the battler's opponents. |
dead opponents | This will select the battler's dead opponents. |
opponent x | This will select the battler's opponent in slot x. |
all alive | Selects all living actors and enemies. |
all members | Selects all living and dead actors and enemies. |
all dead | Selects all dead actors and enemies. |
all not user | This will select all living battlers except user. |
focus | Selects the active battler and its targets. |
not focus | Selects everything but the active battler and its targets. |
prev target | Requires Action Sequence Impact.
During <Target Actions>, this will get the previous target in the targets list. |
next target | Requires Action Sequence Impact.
During <Target Actions>, this will get the next target in the targets list. |
$UnisonMemberX | Requires Unison Attack.
Replace X with the Unison Attack participant where X is slot used based on the <Unison Skill: x, y, z> notetag. |
$UnisonMembers | Requires Unison Attack.
Returns all of the participating Unison Skill members. |
Action Sequence List
The following is a list of Action Sequences provided by this plugin.
If you have YEP_BattleEngineCore.js installed with this plugin located underneath it in the Plugin Manager, you can make use of these extra armor scaling related action sequences. ============================================================================= ARMOR PENETRATION: X ARMOR PENETRATION: X% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Causes the skill to have a global armor pentration property of either x or x% rate. This property is reset at the end of the action sequence. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Usage Example: armor penetration: 20 armor penetration: 30% ============================================================================= ============================================================================= ARMOR REDUCTION: X ARMOR REDUCTION: X% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Causes the skill to have a global armor reduction property of either x or x% rate. This property is reset at the end of the action sequence. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Usage Example: armor reduction: 20 armor reduction: 30% ============================================================================= ============================================================================= RESET ARMOR PENETRATION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Resets global set armor penetration properties. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Usage Example: reset armor penetration ============================================================================= ============================================================================= RESET ARMOR REDUCTION - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Resets global set armor reduction properties. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Usage Example: reset armor reduction =============================================================================
Changelog
Version 1.05: - 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.04: - Updated for RPG Maker MV version 1.5.0. Version 1.03: - Lunatic Mode fail safes added. Version 1.02: - Updated for RPG Maker MV version 1.1.0. Version 1.01: - Fixed the notetag <Armor Reduction: x%> from not working with the intended effect. - Negative armor damage calculations are reworked to function as intended. Version 1.00: - Finished Plugin!