A downloadable plugin extension

Buy Now$3.99 USD or more

Extend the defensive capabilities of your actors by allowing them to parry incoming attacks. Requires Shield Block to function.

Features:

  • New action result - parried (target.result().parried)
  • Set a base parry rate
  • Add an additional parry rate based on a simple or complex formula
  • Weapons provide an additional parry rate
  • Enemies can have a different base rate than the default, to simulate equipment
  • States can also add more parry rate
  • Configurable parry rate rules for dual wielding (more info below)
  • Custom reaction when a parry happens
  • Set individual skills to be allowed to be parried or not
  • All physical skills can be parried by default
  • New in v1.05
    • Expertise is a new xparam that can be put on equipment, classes, enemies, and states which lowers the effective parry rate of a defender.
    • Parry Piercing is a new effect that can be placed on states, weapons, skills, and enemies which reduces a defenders parry rating by a percentage.

Description:

For those not quite in the know, a parry is a block made with a weapon instead of a shield. A successful parry will show a short visual, and reduce the damage of the hit to zero, cancel any added effects on the skill (such as poison), and (if set) hide the damage popup for that hit. This works very similarly to blocking using the Shield Block Plugin, with several exceptions:

  • Anyone can parry, as long as their parry chance isn't 0, and they aren't incapacitated.
  • An actors (or enemies) parry chance can be based on their other parameters
  • Parrying always reduces all damage to zero
  • Parrying doesn't require a state in your database to determine if an actor can parry or not.

Modes:

Multi-Weapon Parry calculation mode is a plugin parameter that changes how parry rate is calculated by actors who are dual wielding. Most parameters for dual wielding actors are simply added together, but that might not necessarily be what you want for a powerful defensive parameter like parry, as it can quickly stack up too high and make your project unbalanced if left unchecked. There are several modes included:

  • Individual: Each attack made against an actor is checked twice, once for each weapon, the individual checks use the base + added parry rate + the parry chance of the weapon held in that hand. The default parry reaction effect includes the ability to show the offhand weapon instead of the mainhand weapon in the case where a parry was caused by the offhand. Because this mode checks each attack twice, your base and added parry rates are twice as effective.
  • Additive: The parry chances for both weapons are added together, and then added to your base + added parry rate. Each hit is only checked once against this value.
  • Average: The parry chances for each weapon are averaged, and then added to your base + added parry rate. Each hit is only checked once against this value.
  • Highest: The highest parry chance between your two weapons is chosen, and then added to your base and added parry rates. Each hit is only checked once against this value.
  • Mainhand Only: Only the parry value for your mainhand weapon is added to your base and added parry rates. Each hit is only checked once against this value.
  • Offhand Only: Only the offhand parry value is used in the calculation above. Each hit is only checked once against this value.

Added Parry Chance:

The additional parry chance plugin parameter is a codebox, in which you can input just about anything to determine a bonus parry amount that updates in real time in game. The default value gives you a small boost to parry chance based on your atk value. This value is calculated on both enemies and allies as well. If you use a value not available to an enemy, it will fail, however, so keep that in mind.

Using the additional parry chance, you could modify parry rate based on any of the following:

  • Direct or indirect correlation to other battler parameters (hp, atk, def, agi, etc)
  • Equipped armors/weapons, or combinations of each
  •  Bonuses for being unarmed
  • States, or combinations of states

Notetags:

<Parry Chance: x> Gives a weapon, enemy, or state x% parry rate. This value can be negative. Enemies with this tag use it in place of their base parry rate, which is the default parry rate parameter.

<Parry Animation: x> The animation that plays on an enemy when they parry an attack

<CannotParry> Skills with this tag are not able to be parried, even if they are physical skills. Enemies with this tag will be unable to parry.

<CanParry> Skills set with this tag can be parried, even if they are magical or certain skill types.


YEP_StatusMenuCore Additions:

If you are using YEP_StatusMenuCore, there is a scene on the status menu where you can view a customized list of exparams and sparams. Traditionally, added params that have been added by the shield block plugin could only really be seen in the game by editing that plugin, or using the DualWield menu extension plugin, which not everyone owns. I have included a small script that adds block chance, block percent, shield piercing, and parry rate to this scene. Add this script anywhere after the YEP_StatusMenuCore plugin.

Advanced:

Like with the block state, you can heavily customize what happens when a parry occurs. This react effect is stored in the plugin parameters, and by default, it plays an animation over a parrying enemy, and does a weapon swing + sound effect over an actor that parries. You can edit this parameter to cause other things to happen, plugin calls, healing, state adds, etc.

Plugin Dependencies:
Ramza_BlockChance.js is required for this extension to work. The plugin will throw an error if it doesn't detect a working copy of it in your plugin manager. This extension must be loaded after it.

YEP_BattleEngineCore.js is required for the shield block plugin to function. This extension needs to load after it.

YEP_BuffsStatesCore.js is also a hard requirement for this plugin to work. Parry Chance needs to load after this plugin in order for the react effect plugin parameter to work. If you crank parry rate to 100%, and still aren't seeing any parries, check your load order.

Example load order:


Terms of Use:

  • You may use this plugin in free or commercial games
  • You may use this plugin in as many projects as you like.
  • You may not share this plugin, or the demo project with anyone else.
  • You may modify this original script in any way you see fit, but you may not claim full ownership of the resulting edited file.
  • You may share edits you made to this script publicly, but only as standalone extensions to this plugin, meaning that your modifications cannot be used without also owning this plugin.


StatusReleased
CategoryTool
Rating
Rated 5.0 out of 5 stars
(2 total ratings)
AuthorRamza
Tagsplugin, RPG Maker

Purchase

Buy Now$3.99 USD or more

In order to download this plugin extension you must purchase it at or above the minimum price of $3.99 USD. You will get access to the following files:

Plugin Download 35 kB
Demo Project 22 MB
exparamfix.js 2.5 kB

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

Hi again. I'm having an issue with one of my states and after some testing found it was incompatible with this Parry plug-in. Honestly not sure what could be causing the issue.

Below is the state's notebox; basically it blocks a physical skill of a pre-defined skill type. Any idea what could be causing it/how to fix it?

<custom select="" effect=""> // Check if this action is a skill and targets an opponent. if (this.item() && DataManager.isSkill(this.item()) && this.isForOpponent()) {   // Create a pool of blocked Skill TYPES.   var blockedtypes = [];   // Add the skill type ID's to that pool.   blockedtypes.push(2, 3, 5, 7, 8, 10, 11, 13, 14);   // Create a pool of blocked individual skills.   var blockedskills = [];   // Add the individual skill ID's to that pool.   blockedskills.push(1, 3, 4, 5, 8, 9, 200, 201, 202, 203, 204, 205, 206, 208, 209);   blockedskills.push(56, 125, 300, 407);   // Check if the skill type or skill ID matches.   if (blockedtypes.contains(this.item().stypeId) || blockedskills.contains(this.item().id)) {     // If it does, then store the skill's original success rate.     this._formerItemSuccessRate = this.item().successRate;     // Now drop the skill's success rate to 0.     this.item().successRate = 0;     // Start an animation to show the spell shield occurred.     target.startAnimation(53);   } } </custom>  <custom deselect="" effect=""> // Check if there is a success rate stored. if (this._formerItemSuccessRate !== undefined) {   // Restore the skill's success rate.   this.item().successRate = this._formerItemSuccessRate;   // Remove this spell shield state.   target.removeState(stateId); } </custom>

What specifically is happening when this skill triggers?

The plugin makes some changes to how an action is applied to a target (namely, it checks for a parry after it checks for a block, which it does after the miss chance is checked), so it's possible that your effect is triggering when a parry (or block) has happened. You could add some extra checks like if (this.result.isBlocked() || this.result.isParried()) and then do the rest of it.


Nothing in those note tags should be affected by my plugin though, select effects and deselect effects have been thoroughly tested, as the block chance plugin uses them to cause the block effect.

~Ramza

Thanks for the response. The skill is based on one by Yanfly which basically sets the success rate to 0 if the incoming skill is on the list.

I tried adding an if/else at the beginning of the <Custom Select Effect> checking for a parry/block like you suggested and then activating the skill if false, but my JS skills are pretty basic and not 100% I did it correct.

I don't think the block/parry is the issue though. If I turn the Parry plug-in OFF, the skill still activates with the Block plug-in ON. Also when Parry is ON, even though none of my characters are capable of Parrying the skill doesn't trigger.

Where is the Parry plugin loaded in your plugin order?

Both of the plugins overwrote functions that other plugins might use, knowing this I did state to load block chance immediately after BattleCore, and it's possible that you may also need to load Parry Chance right after that as well to prevent any compatibility problems because of the way I did this.

~Ramza

(1 edit)

Hey it's loaded under Yanfly's BuffStates Core; I read somewhere that it needed to be under that one whereas your Block plug-in is right under the BattleCore. If I move Parry right under Block, it doesn't work anymore.

If it's just not compatible with the skill it's too bad and I won't be able to use it, but at least the Block plug-in works with no problems.

Hello, I'm trying to add an increase to Parry chance to armor based on this comment:

Using the additional parry chance, you could modify parry rate based on any of the following:
  • Equipped armors/weapons, or combinations of each

I'm not exactly sure how to get this to work though. As a previous user mentioned 2 years ago there aren't any Notetags for +Parry for armor, so I assume this was a workaround added later?

That comment was referring to the Additional Parry Chance plugin parameter.

That parameter is just a big notebox which is parsed into the game as a function. The default value in that box is just a flat parry rate increase based on the battler's atk parameter, but you can change it to be just about anything.

The snippet of text there is referring to something you could do with it, knowing that it can access anything on the battler. That effect isn't very easy to implement via the notebox, though because it is checked on every battler (who can parry) every time a parriable attack is used on them. While you could use that notebox to set up a series of checks (if a.isActor() && a.equips()[3] === ... etc), it would be pretty inefficient, especially if you have multiple equips that can do that.

The much easier way to do it is to add parry rate to states, and then put the states on the armor passively using the YEP_AutoPassiveStates plugin. Perhaps using a different state for each equipment slot so you don't run into weird stacking issues.

~Ramza

(+1)

Cool, the Passive States idea works perfectly. Thanks!

Greetings! I've been having a great time with your plugins, in my opinion many of them are practically essential. Thank you for existing. I have a suggestion, if you'd have it.  

Parry Chance notetags seems like they can't be placed on armors which, of course, makes sense in practicality. But I think it could add some depth for players if you could boost that stat with armor types. For example, something like a "Fencer's Ring" that could add a flat amount of parry chance. I suppose it could be done by giving the equipment a passive state that boosts parry chance, but then I don't think it would be stackable if you have 2 of the rings on, or similar armors without bloating up the state database.

Also Block Chance/Percent/Value notetags for weapons for similar reasons. Being able to boost blocking potential through weapon equips could have some pretty great synergy. Perhaps something like "Gladiator's Sword".

Thanks for your time and these awesome plugins :)

Those are good suggestions. I'll see about adding them in future updates.

That would be fantastic :D

(+1)

If using Yanfly Item Durability, The Parry plugin will crash if player attacks with a weapon with 0 durability.

(1 edit)

What normally happens when a player attacks with a weapon with no durability without the parry chance plugin? Does it show a barehanded attack? I feel like a weapon with no durability is replaced with nothing during the attack sequence, causing this error, as it can't get the Parry ignore chance of an item that doesn't exist.

I'll see if I can correct this problem when I get home later.

It shows a barehanded attack which works fine, then it shows a sword on the second dual attack and black screens.

Greetings.

I have uploaded version 1.07 of this plugin which corrects this issue you have reported. 

You can see the update devlog here.

Thanks for the report.

Awesome Ramza. Thanks!

Hmmm, I dig the parry, but is there any way to factor in parameters from the opposing side to balance down parry chances?  As it stands, as far as I can tell with the default formula + base parry, by a.atk 435 you're at a 100% chance to Parry, basically.  

Can work around this by not having a scaling bonus formula, but I'd ideally like to have a little bit of give / take with scaling, especially if enemy battlers are going to have a chance to parry player attacks too.

Cheers!

I had not included comparisons to the params of the incoming attacker when I made this.

This is a good suggestion, so I will include it in a future update. 

I will also add a new offensive parameter, similar to shield piercing that will reduce the targets effective parry chance, as that seems like a wise addition as well.

I'm pretty excited about the possibilities--I was stoked when I saw this plugin available, as one of the core party members for my current project is framed as a duelist and intended to be a very 'mechanical' sort of character, juggling various stances and the like.  

Having the ability to wrangle parrying and triggering actions into ripostes and the like has great potential for fun and interesting mechanics--and I similarly like the idea of being able to have enemy battlers or even bosses who utilize parrying in compelling ways too.

As it stands I just worry for managing scaling without ending up in a situation where the player is left frustrated because enemies are frequently parrying with no recourse on their part--but I don't want to write off enemies being able to parry altogether.  Thanks again for the consideration!

(1 edit)

I have just posted an update to this plugin that adds in a couple of ways to mitigate balance problems resulting from scaling.

Expertise is an xparam-like trait that subtracts from a targets parry rate during an attack. It can be added to classes, states, weapons, armor, and enemies via note tags. Multiple sources of this trait stack additively. Every 1% of expertise reduces the chance for your attack to be parried by 1%. This xparam can also be shown on the YEP_StatusMenuCore screen using the short code 'xpt' via the exparamfix plugin, or the dual wield's menu extension.

I also added Pierce Parry, which is an effect that can be put onto weapons, states, or enemies, and reduces the targets parry rate by a % of their total. This effect is calculated after expertise has been applied. If there are multiple sources of this trait, only the one with the highest magnitude is used.  This trait can also be negative, causing the targets effective parry chance to increase by a %. Actors who are dual wielding weapons with this trait will only get the value from the weapon currently being swung, allowing specific weapons to break parries more easily.

I was unable to implement the ability to use the attackers parameters in the additional parry chance formula. This is because the additional parry chance formula is used to calculate parry chance at all times, not just during battle, so an attacker cannot be part of the formula, as one is not always present when the calculation is being done. However, the above two additions should more than make up for this.

(1 edit)

Remarkably swift!  Expertise and Pierce Parry are both great--I was actually just experimenting with setting up flails and Pierce Shield so that they're harder to block, so having a source of parry piercing as well is fantastic!

My only remaining wishlist element then is not having an avenue for a scaling expertise formula, simply for concern over how to balance expertise against scaling enemy parry chance.  I'm going to need to do some brainstorming over how to best present expertise equipment / skills / actor perks to players in a fashion they can appreciate defeating enemies with high parry (or really, a way to visually ID parry-happy enemies in general.)   Maybe a state icon, or a 'parry aura' effect as visual shorthand.  Hmm.

I realize this is ultimately a sliding scale issue to begin with though, since it will be difficult for a player in an RPG Maker game to really get a transparent understanding of their odds / the 'why' of how these calculations occur in a given battle.  That stems from the broader boundary of RPG Maker MV's UI limitations in general though--my kingdom for the ability to mouseover a UI element and get a tooltip with information for the player!

Though writing that, I'm prompted with the notion of potentially having an optional animation for expertise making the difference for an otherwise parried hit (I imagine that is not actually viable, with expertise reducing parry rate instead of being its own calculation--but it's a fun mental image for one battler to do a parry 'clash' animation, only for the attacker to do their own expertise 'clash' animation to 'overrule' it.)

Much oblige for your efforts, stellar materials!