YEP.33 – Armor Scaling

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.

Download the Plugin Here:
English Dropbox
English Mirror

Scale defensive stats relative to a universal scale and gives your players a way to increase and decrease damage without having to provide pure stats. Adds new gameplay mechanics such as Armor Penetration and Armor Reduction into your game!

This plugin requires Damage Core.


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
Rate = 100 / (100 + Armor)

Negative Armor
Rate = 2 – (100 / [100 – Armor])

To get an idea of how armor scaling will affect damage, here’s a table on how 1,000 base damage is affected.

ArmorScaling16

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


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 – Custom Armor Scaling


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.


Yanfly Engine Plugins – Battle Engine Extension – Action Sequence Commands


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


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 Tips & Tricks 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!