A downloadable MV Plugin

Buy Now$14.99 USD or more

Version 1.04:

Due to some changes in the VisuStella BattleCore plugin implemented on January 22, 2021, the main function of this plugin is no longer needed. VSBattleCore now implements a very similar in battle dual wielding effect to what this plugin does, and has an unrepairable conflict with the changes that my plugin makes to the system.

What does this mean for this plugin?

Currently, version 1.04 has disabled the battle related changes that this plugin originally had. That means split attacks are now handled by BattleCore, and for the attack sequence, the effect is basically the same. Fortunately, as the split attacks are now implemented in BattleCore itself, there should be no incompatibilities with their own battle system plugins, something I could not guarantee with my own.

Unfortunately, several of my battle system enhancements do not work anymore. Specifically, the ability to lock skills to one hand or the other, or automatically lock them to the hand of a required weapon. On the other hand, with their implementation, you can build that sort of thing into the action sequence for a skill anyway, and it would do you well to learn how to use custom sequences for this, as it will help you a lot more in the long run.

Several of the plugin parameters for this plugin have been marked as deprecated, as they no longer do anything. The ability to modify an actors base ATK per hand no longer functions, so those parameters (two handed, dual wield and offhanded modifier) go ignored for now. If you want your twohanded weapons to be stronger, you will now have to build that bonus into the base atk of the weapon instead, and unfortunately, there will be no good way to make a weapon wielded in the offhand weaker than the same weapon wielded in the main hand, at least for now.

The menu changes have been reverted as well. While the VS plugin does do split attack, and split weapon traits in a similar way to what I was doing, there is no way for my plugin to know the results of whatever math they do to come up with these values, so the numbers may not add up correctly. Perhaps at some point, they will include options in the menu core plugins to show these values.

So what does this plugin still do, then?

Right now, this plugin still has several features that the VSBattleCore has not interfered with:

  • Dualwield type actors can equip a shield in their offhand weapon slot.
  • Weapons can be tagged to prevent them from being wielded in the main or offhand, or to set them as being twohanded, which will auto-unequip whatever is in the offhand.
  • Shields can be set as offhand to allow them to be wielded together with a twohanded weapon.
  • Actors can be set as monkeygrip, which allows them use of a twohanded weapon in just one hand.
  • Actors can be set as titansgrip, allowing them to also put a twohanded weapon in their offhand.

All of the code for the features that have been removed has only been commented out, to allow some more savvy folks to modify it and see if they can restore some of the missing functionality, if they want.

The future:

When I first started porting the dual wield plugin to MZ, I attempted to get it to work without the VSBattleCore. It had some functionality, but I couldn't get it to display correct enough to be usable. I had promised for those who did not want to use the VS plugin library that eventually a version of this plugin that did not require it would be coming. I am still working on that version. In the future, that version will be the only version of this plugin, going forward. 

I have uploaded a second download for this plugin, which is version 1.03 - the last version that worked with VSBattleCore version 1.22 and below. You can feel free to use that if you use the outdated version of BattleCore, as it is still compatible, but know that if you update to v1.23 or later, this plugin will have all kinds of problems.

Below is the original description of the plugin:


This is a port of the MV version of Dual Wield. 

It is mechanically the same as the original plugin with a couple of differences:

  • As the original plugin relied on YEP_BattleEngineCore to function, this plugin has moved to VisuStella BattleEngineCore.
  • Because the features of dozens of old YEP plugins are rolled into a smaller number of huge VS plugins, this plugin contains a few menu adjustments that were previously part of the free Menu Extension plugin.

In case you were previously unaware of the original plugin, here's a good overview.

Dual Wielding - Default

In the default engine, dual wielding is... not great. 

Default.gif
Default Attack
  • An actor wielding two weapons makes one strike, showing only the weapon sprite of the main hand weapon, and the battle animations of both weapons simultaneously, with the offhand animation mirrored under the mainhand animation. 
  • The parameters of both weapons are added together, causing someone using two weapons to be substantially stronger than someone using only one.
  • The traits of both weapons are also combined on the actor as well, which causes balancing problems between weapons that can be dual wielded, as the player could offset a strong, inaccurate weapon with a weaker one with bonus hit % to negate the penalty from the harder hitting weapon. This could also cause the actor to use two weapons with elemental attributes, or gain the state effects of two weapons at the same time, which is a balancing nightmare on its own.
  • Dual wield type actors can only equip weapons in their second weapon slot. This is because the slot is considered a weapon slot, and a shield is not a weapon.

Dual Wielding - Improved

This plugin modifies dual wielding in the following ways:

Dual Wield.gif
Improved Attack
  • A dual wield type actor (which is to say one who has the trait to wield two weapons at once) can now equip a shield in their offhand slot.
  • All normal attacks made by an actor who is dual wielding will hit twice, once with each weapon.
  • Each individual weapon swing (called a strike from this point on to make it easier to type) ignores the traits and parameters of the opposite weapon. An offhand strike will not benefit from the stats or traits on the main hand weapon and vice versa.
  • Each strike shows only the weapon sprite of the weapon being wielded in that hand, and the weapon animation of that weapon.
  • Skills that have multiple repeats will also switch weapons after each hit. These skills will not ignore weapon traits (or stats) on the hidden weapon, unless the skill is tagged specifically to do so.
  • Weapons can be tagged to only be usable in the main or off hand, as well as to be two-handed. A two-handed weapon prevents the user from using another weapon in his offhand.
  • Weapons can also have special modifiers put on them to change their attack power if they are being two-handed or wielded in the off hand.
  • Shields can also be tagged with <offhand> to allow them to be wielded along with a two-handed weapon in the main hand.
  • Modifiers are available to modify the base attack parameter of an actor's individual strikes. The twohanded modifier is applied if they are using a twohanded weapon, the dual wield modifier is applied to both weapons, and the offhand modifier is only applied to the offhand.
  • Individual weapons can also be set up to disallow the use of other weapon types in the opposite hand. 
  • Skills can be locked to force them to only be used with one hand or the other.
  • Skills that require a specific weapon type can also be locked automatically to the correct hand if only one of those weapons is being used. 

Why?

I personally felt that the old dual wielding implementation is lackluster. Any actor who is dual wield type needs to be limited to using special weapons specifically for them, as if they had access to the same weapon a normal actor had, their raw attack power would effectively be double that of a normal actor. With this system, they can use the same weapons as everyone else, and through use of the various modifiers, can be balanced evenly with actors single-wielding the same weapon.

The dual animation, and single weapon strike thing is also not great. It's a pretty common thing in front view systems, but for the most part, side view battle systems usually have multiple strikes for dual wielding.

Most importantly, choice. The player is now free to decide between two weapons, a two-handed weapon, or a one-handed weapon and a shield. In class-based projects, this could lead to several different player-builds of the same character class. Choice is always good.

VisuStella Compatibility:

When I first set out to make this port, I had a tough time of it. The original required Yanfly's BattleEngineCore to function, and in order to bring this over to MZ I would need to find a way around that dependency. While I managed to get real base functionality out of the plugin, it wasn't great (and visually it was trash). Then VisuStella released their core plugin pack, and it contains the legacy of the YEP suite, and most importantly, action sequences. At this point, I made the decision to require the VS BattleEngineCore plugin for my plugin. If you're not using the VS plugin library, fret not, for the work I did earlier on trying to port it to base MZ will not go to waste, and once I get it to a working state, I will release a VS-less version. Do keep in mind that that version is likely to be missing some core features of this one, though.

Using This Plugin:

Import this plugin into your manager. VisuMZ_1_BattleCore is a required dependency. Dual Wield must be placed below the following VisuStella plugins, if you're using them:

  • VisuMZ_1_ItemsEquipsCore
  • VisuMZ_1_SkillsStatesCore
  • VisuMZ_1_ElementStatusCore
  • VisuMZ_1_MainMenuCore

Once imported into your project, the following happens automatically, with no required changes being made by you:

  • Actors who are dual wield type will be able to put shields in their offhand slot, but only if they have the trait required to equip shields.
  • Weapon slots are renamed for dual wield type actors, instead of both being labeled 'Weapon'. The name shown can be changed via plugin parameters, and can be set by actor class, or by actor specifically.
  • Actors who are actively wielding two weapons, or barehands, or one weapon and one empty hand, will strike twice with normal attacks.
  • Each strike with normal attacks will alternate which weapon sprite is shown in the battlers hand, as well as the battle animation shown. If one of the hands is empty, the unarmed strike animation will play.
  • Each strike with normal attacks will cause damage and effects that ignore the weapon in the opposite hand.
  • Skills that repeat more than once, or use an action sequence to hit more than one time will also alternate animations/sprite graphics.

Advanced Use:

Notetags:

The following note tags are available:

Weapons:

<mainhand>
A weapon with this tag is not allowed to be equipped in the off hand slot.
<offhand>
A weapon with this tag is not allowed in the main hand slot.
<twohanded>
A weapon with this tag is only allowed in the main hand slot, and force unequips the item in the off hand slot when equipped. Two-handed weapons can be wielded by non dual-wield type actors.
<forbidden wtypes: x y z>
This weapon will not be allowed to be equipped while the actor is also wearing a weapon with one of the given wtypes. It will also prevent weapons of those types from being equipped while wearing this one.
<twohanded attack modifier>
value = code
</twohanded attack modifier>
The code between these tags will be parsed during runtime, and added to the attack value of the weapon when it is being wielded in two hands.
<offhand attack modifier>
value = code
</offhand attack modifier>
The code between these tags is parsed during run time, and added to the attack value of the weapon when it is being wielded in the offhand.
<cannot monkeygrip>
A weapon tagged with this note tag cannot be monkeygripped. Use it to denote ranged weapons such as a bow, that should not be able to be wielded in one hand.

Shields:

<offhand>
A shield with this tag can be held in the offhand slot while a two-handed weapon is being wielded in the main hand.

Skills:

<dualwield skill>
This skill will now alternate damage and effects as if it were a normal attack, in addition to alternating weapon graphics and animations.
<mainhand skill>
This skill will only show the graphics of the main hand weapon, and will use the params and effects of only the main hand weapon, even if it hits more than once.
<offhand skill>
This skill will only show the graphics of the off hand weapon, and will use only the params and effects of the offhand weapon, even if it hits more than once.

States, armors, classes, actors:

<monkeygrip>
An actor who has something that has this note tag on it will be able to wield a two-handed weapon with one hand. Non dual-wielding actors with this tag can use it to wield a two-handed weapon together with a heavy shield
<titansgrip>
If the plugin parameter to allow a two-handed weapon in the offhand slot is set to 'Special', any source of this tag on an actor will allow them to put a two-handed weapon in their offhand. This note tag also enables monkeygrip if another source of that tag is not already present. 

Monkeygrip and Titansgrip:

Update version 1.01 brings monkeygripping and titansgrip back in from the RMMV version, this time as a patch rather than as a paid extension. An actor who has the associated note tag on their actor, class, or armor can wield a two-handed weapon in just one hand, allowing a heavy shield or another weapon in the offhand. Just like with the monkeygrip extension for the RMMV version, this plugin also contains titansgrip, which allows a dual wield actor to wield a two-handed weapon in their offhand as well. 

Monkeygrip actors who are not dual wield type can still use heavy shields in their offhand without unequipping their weapons.

Plugin Parameters:

There are three parameters for modifying damage of actors during run time. These are labeled Dualwield Damage Modifier, Offhand Damage Modifier, and Twohanded Damage Modifier.

All three of these parameters are float values by default, 1.0, 0.75 and 1.5 respectively. The parameter also has the ability to be a single line of code that can be EVAL'd. You can EVAL code in here to make conditional modifiers based on actor, class, weapons held, variables, or anything else you'd have access to on a global scope.

The modifiers multiply the base attack value of the actor, before weapons are applied. The two-handed multiplier is applied when the actor is wielding a weapon in two-hands, the dual wield multiplier is applied when dual wielding, and the offhand multiplier is applied only to the weapon in the offhand.

An actor with 100 ATK (while naked) will have 150 ATK while wielding a two-handed weapon with 0 ATK on it. If dual wielding two weapons that are the same attack, the actor will see his offhand has 75 ATK, while his mainhand has the full 100. You can use these multipliers to balance dual wielding, applying a penalty to both weapons for dual wielding them, a single penalty to the offhand for not being ambidextrous, and buffing two-handed weapons to make them more competitive with dual wielders.

UI Changes:

This plugin modifies several menu scenes to display the main and offhand weapon values more readily to players. Previously, this was available for the MV version of the plugin via an extension, but because of the way load order is set up in the VisuStella library, I was able to include some UI changes in the base plugin.


This is the default equip scene, with no modifications.


This is the same scene with dual wield enabled.

This is the EquipCore modified equip scene, with no dual wield


This is the same scene again but with dual wield enabled.

The attack parameter is now drawn as a split value, with the left side representing the attack power of the main hand, and the right number for the off hand swing. Also note that the name for the weapon slot is changed. This text is configurable.


The default parameters window


The same scene with dual wield enabled

While not evident in the above screens, the values for Hit and Critical Rate will also show split values if the actor is both dual wielding, and has different values for them. If they are the same value, it simply shows the one value.


This skill scene shows a small status window. This is the way it looks by default


The modified scene when dual wield is enabled

Once again, the split parameters show in place of the attack value. 

Terms of Use:

  • This plugin may be used in commercial or non-commercial projects. With credit to me, Ramza.
  • Purchase of this plugin allows you to use it in as many projects as you want.
  • You may modify this plugin directly, for personal use only.
  • Sharing this plugin, direct edits to it, or any demo projects that come with it is prohibited. 
  • You may share edits to this plugin as extensions to this one. Extensions require the base plugin to function.
    • You can choose to sell extensions to this plugin for profit, crowdfunding, donations, etc, as long as the extension requires this base plugin to function. 
  • Do not modify the header of the plugin file, and do not claim ownership of the plugin in your own projects.
StatusReleased
CategoryTool
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorRamza
Tagsbattle, dual-wield, mv-plugin, rmmv, RPG Maker

Purchase

Buy Now$14.99 USD or more

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

Plugin Download 82 kB
Version 1.03 Plugin (Use with VSBattleCore 1.22 or earlier) 79 kB

Development log

Comments

Log in with itch.io to leave a comment.

I can't get the UI changes to work, Only the total Attack is shown. I tried a new project with only this plugin; and this plugin plus just the VisuMZ plugins you listed above.  I do have the latest versions of the plugins. 

There are no UI changes for this plugin anymore. It doesn't split attack as of the latest version, because VS included a similar feature in their BattleCore plugin, invalidating mine. Without being able to tell what they were using to derive their main and offhand atk values, I couldn't include a display for it anymore, as it may not have been accurate, particularly because they weren't very forthcoming with information on where they were getting their numbers, not even willing to share function names with me so I could find something to alias. It almost seemed like they included the split dual wielding attack stuff in the BattleCore specifically to spite me because I'd been asking so many questions about it.

In the end, it's better for the end users if VS provided the dual wielding options for their BattleCore plugin anyway, on account of how mine was just a plugin that was built on top of theirs, and they were capable of breaking it easily just by changing something hidden in theirs.

The only thing this plugin can do now is limit which slots weapons can be equipped into (locked to mainhand/offhand), two handed weapons, and allowing a dual wield actor to equip a shield in their second weapon slot. 

There is a big block of text at the top of the plugin description explaining this change, which happened in January 2021. 

~Ramza

Thanks for the quick reply. I was mostly purchasing the plugin for the monkey grip/ Titan Grip stuff so I was fine with using VS for the battle scene stuff, infact I am using most of their plugins anyway. I must have just misunderstood your description and thought the Menu would still show weapon values.

(+1)

After rereading the discrimination, I don't know how I missed that. Thanks again.

(1 edit)

I would still like to use your plugin for the equipment part (weapons on shield slot) but unfortunately i recognized problems with the VS Equipmentmenu/Equipment Sets:

- The changing stat values are not displayed
- The Armor Set Bonuses do not change when (un)equip parts

If I use $gameActors.actor(1).refreshEquipSetBonuses()
and $gameActors.actor(1).refresh() I get the updated values (but still you will nothing see in the stat change window.

Would be great if you could fix this

Thank you

Good day.

This incompatibility stems from the way I coded it to auto-remove an offhand item if you equip a two-handed weapon. Because I overwrote a function, it ignores any other changes made to that function before my plugin loads. After looking at my own code, there is probably a much better way to do this same thing, but I was pretty inexperienced when I initially made the menu things for this plugin, so I wasn't able to come up with anything better at the time.

I should be able to patch it, and possibly get the thing you're having issue with working again. However, you might also try adjusting the plugin load order so that the VS plugins load after mine instead. It'd pretty unlikely that they overwrote such an important function, so they would've ended up building off the original, meaning my changes should still be left intact.

Give that a try and see if it works, and if not I'll see if I can cook something up to fix it.

~Ramza

(1 edit)

Thanks for your reply! No problem - I'm aware there can be issues with other plugins (a lot of VS-Plugins themselves change the menu layout/display...)

(1 edit)

Hello, I just bought this plugin, and I am using action sequences with my game. The second attack never seems to happen at all, no matter what I do. Mainhand weapon is tagged as mainhand, off-hand is tagged as offhand, and both are equipped, and my char has Dual Wield slot active, but my character only does one attack.

Oddly enough, other skills from my mage characters are showing their "weapon multiplier" numbers as 0 now.

Alas, I didn't get much testing in for custom action sequences on MZ, because the thing is so different than MV.

The default attack sequence as used by the VS sample project properly repeats the target section as it's supposed to, so it might be an issue with your custom sequence, or it might be that something updated and broke compatibility. Additionally, I can only really guarantee compatibility with the Default Battle System, as the other VS battle system plugins are paid. I'm not sure if you're using one of the other ones, but that could also be an issue.

I am not familiar with this 'weapon multiplier' value. If that's something in my plugin it goes by a different name, for sure.

We can do some tests to see if the plugin is functioning correctly (aside from the action sequence thing), though. You can open the console and type in $gameParty.leader().isArmedOffhand() , and if the party leader is dual wield type, and isn't using a shield in his offhand, it should come back true. It should come back false on a non-dual wield actor, or one who is using a shield, so anyone who can't dual wield shouldn't be modified at all.

If the actor is armed in his offhand, doing $gameParty.leader().MHCalc() should return their modified main hand attack value, which, assuming the plugin parameters are still mostly defaults, is more or less going to just be their atk param from their class + their mainhand weapon + anything on their armor slots. Likewise, $gameParty.leader().OHCalc() should return the offhand attack value, which would be their base atk, modified by the offhand penalty (which IIRC is 75%) + the offhand weapon's atk value.

The next thing to check is to make sure that nothing has changed how this plugin adds the extra attack. $gameParty.leader().attackTimesAdd() should return 1 if the leader is dual wielding, and 0 if not (or more if you have traits that add extra attacks, but lets assume that isn't the case yet). If we're getting a 1 here, that means all the ducks are in a row for the extra attack to happen, and the problem is with your action sequence. 

Are you trying with a specific skill, or just the attack command? Does the actor have something in place where the attack skill is replaced with something else? Does the skill being used use a custom action sequence? How is the actor given the dual wield trait? Is it on one of his weapons?

-Ramza

(2 edits)

Thank you for your reply mate. I was at work the whole day so I had to wait forever just to reply.  I just did a whole bunch of tests so I'll put my findings here.


1. Character has dual wield set to the basic attack Skill 1 (Slot 1), with no action sequence. She attacks twice, playing both animations, deals mainhand and off-hand damage as they are supposed to be. Everything is fine.

2. Character has dual wield set to a different Skill that is an exact copy of the basic Attack command of Skill 1. Both with and without action sequence yielded the same result. One animation plays, she deals mainhand damage only.

3. Character has dual wield set to the basic attack Skill 1 with an action sequence.  Her slash animation plays only once, but she deals two sets of damage numbers, however, both are roughly half of her main-hand damage. She should be dealing 10ish and 6ish, but both numbers are never higher than 6s unless she crits.

4. Character has dual wield set to a different Skill that is an exact copy of the basic Attack command of Skill 1, but with the <Dualwield Skill> tag in note field. Both with and without action sequence yielded the same result. One animation plays, she deals one instance of mainhand damage only, damage is correct.

5. Character has dual wield set to a different Skill that is an exact copy of the basic Attack command of Skill 1, but with the <Dual wield Skill> tag in note field. Both with and without action sequence yielded the same result. One animation plays, she deals one instance of damage only, damage is half of what it should be (off-hand damage maybe?).

----

In all tests, the Actor (Actress?) has the dual wield tag given to her by her class.

$gameParty.leader().isArmedOffhand() yields True

$gameParty.leader().MHCalc() yields 10, which is most likely right Mainhand is (base 7 + weapon 5) x .9 = 10.8, so the game rounds down.

$gameParty.leader().OHCalc() yields 5.  (7 + 1) x .75 = an exact 6, so it's a wee bit lower than it should be.

$gameParty.leader().attackTimesAdd() does yield 1.

The skill is using a custom action sequence. If there is anything else I can do to help, please let me know. I'm happy to help.

Okay, using the given information, it appears we might have two separate issues here.

  1. In some of your tests, it would appear that the actor is only dealing offhand damage, despite hitting twice.
  2. Dual Wielding with action sequences doesn't seem to be working for (most?) skills.

First, for issue #1, the calculation is probably correct for the offhand damage, as you mentioned that the mainhand hit has a modifier of 0.9, which could only have been applied if you were using the Dual Wield modifier, which applies to both the main and off hands, meaning the offhand calculation is ((atk * 0.9) * 0.75 + offhand atk).

So, the next thing to do is to check that the swing counter is properly being reset after each hit. Were each of these tests done successively, from the same instances of the game? Did you have one actor who had all of these skills set, and just used them one after eachother in the same battle test without resetting in between? The current swing is stored as a value on the battler, so $gameParty.leader()._numAttacks should show a number in the console when you call it. it should return one of three values, undefined or 0, or 1. If it shows undefined, that means the actor has not yet attacked in this battle, and so, the next hit should be a main hand one. If it is 0, that means they have attacked before, but the next hit is still going to be a main hand hit, and if it is 1, the next hit will be an off hand hit. 

I think maybe it's getting stuck with the swing counter at 1, somehow, and just keeps doing the offhand attack, but only after one actual dual wield attack has already been performed. If the above console command shows a number higher than 1, then the counter is never being reset, so it just defaults to doing an offhand swing because the value isn't 0 or undefined. We can fix that, if that turns out to be the case.

For the second thing, the problem is going to be a bit trickier to work around. Dual Wield only affects the default attack skill, but it also has a function that checks if the action being used is the 'attack skill', which in RMMV was used by the YEP Weapon Unleash plugin to 'replace' the attack command with other skills. Because this plugin specifically uses the AttackTimes+ trait, which only affects the default attack skill, any skill that the engine doesn't consider the default attack will remain unaffected. 

It sounds like you're using an Equip Skills plugin to set the attack skill, but I'm not entirely sure that is all that needs to be done here, as I don't have that plugin myself so I cannot verify if it correctly sets your equipped attack skill as the attack skill, you know? It doesn't seem like it is, and this is why your second test didn't seem to work at all. In RMMZ, there is a trait to set the 'attack skill', instead of equipping a different skill as the basic attack, try setting a trait on the class to change the attack skill to the same exact copy of the default attack skill with no action sequence, and see what happens.

In your third test case, it would appear that the dual wielding 'works' but isn't working as intended. The reason for this working over the second test case would appear to be because you reverted to using the basic attack skill again. With that being said though, I think the problem here is not that it doesn't work, but that it is working as intended, I won't be able to tell myself unless you show me the entire action sequence of the attack skill to confirm, but I will explain what is happening anyway.

When a normal actor uses the normal attack it goes through the following steps:

  • Setup Actions
  • Whole Actions
  • Target Actions
  • Follow Actions
  • Finish Actions

Even without setting one up, the default attack skill still has an action sequence, as the VS team has made it so that they follow a default action sequence if one isn't specified. With the attack skill specifically, the action sequence changes slightly if the user has an Attack Times+ trait on them. 

  • Setup Actions
  • Whole Actions
  • Target Actions
  • Target Actions (repeat until Attack Times+ is reached)
  • Follow Actions
  • Finish Actions

As you may have guessed from this, dual wield functions by adding a hidden Attack Times+ to the actor, and causes their second swing to be an offhand swing instead of the main hand one. The problem here would appear to be that your custom sequence only deals damage in the target action section, and nothing else. Since I suspect all movement and animations are done during the setup (or whole, but probably setup) action, the only thing that repeats is the action effect in the target section. Again, I'd have the see the sequence to be sure, but the default sequences they use generally put attack motions and animations in the target section too, and that's why the default attack sequence works fine.

Your other note about <dual wield skill> not doing what you'd expect it to is also a bit of a misunderstanding. That tag makes it so that a multi hit skill will do split damage, and nothing else. It does not inherently make the skill hit more times. If my assumption in the first bit up top there is correct, at the time you tested this, the actor was probably already locked to the offhand some how, so that's why it only did offhand damage, again though, that's likely a bug I can fix.

To make a skill that only strikes twice if the user is dual wielding, you'd have to add in a section in your action sequence locked behind an if check that checks to see if the actor is currently dual wielding. In MV version of this plugin I had included special action sequence commands that repeated sections of the sequence if the user was dual wielding, but I could not do that in MZ because the VS BattleCore is obfuscated, and they moved action sequences to common events so I'm not sure how they're parsed. Something like 

if (user.isCurrentlyDualWielding())
//repeat target action plugin calls
end

should work for you there.

So in conclusion, 

  • See if you set the attack skill by adding an 'Attack Skill' trait to the actor's class if it works like the default attack, rather than equipping a different skill using the equip skills thing you're using.
  • Show me what your custom action sequence looks like, and if it's only got an 'action effect - target' in the target section, that's probably why it doesn't work.
  • Check those numAttacks variables and see if it's maybe not being reset correctly after an attack, and that's likely why it seems like all your split attacks are only doing offhand damage.

-Ramza

Were each of these tests done successively, from the same instances of the game? 

Yes

Did you have one actor who had all of these skills set, and just used them one after eachother in the same battle test without resetting in between?

Yes

$gameParty.leader()._numAttacks while choosing her attack does say Undefined. Oddly enough after she attacks, and tabbing over, replacing the formula, it still says undefined. Changing back to the Skill 1 attack with no AS (Gonna use that for action sequence from now on) the number does change to 0 after she attacks.

It possibly means that the MECH: Action Effect command in the AS does not actually trigger the dual wield attack mechanic.

Dual Wield only affects the default attack skill, but it also has a function that checks if the action being used is the 'attack skill', which in RMMV was used by the YEP Weapon Unleash plugin to 'replace' the attack command with other skills. Because this plugin specifically uses the AttackTimes+ trait, which only affects the default attack skill, any skill that the engine doesn't consider the default attack will remain unaffected. 

This definitely seems to be true, since my character's skill is not the default attack skill. But even so, the default attack skill with AS doesn't seem to proc correctly, hence 2 instances of off-hand damage.


It sounds like you're using an Equip Skills plugin to set the attack skill,...

Definitely. using Battle commands replacement from Visustella.

In RMMZ, there is a trait to set the 'attack skill', instead of equipping a different skill as the basic attack, try setting a trait on the class to change the attack skill to the same exact copy of the default attack skill with no action sequence, and see what happens.

After doing so, she does indeed attack twice, but both damage appear to be mainhand damage. I even set off-hand multiplier to 0.1 and she is still doing the same as her mainhand attack. This is a bit of progress though, since she does attack twice with a skill that isn't the basic attack command.

To make a skill that only strikes twice if the user is dual wielding, you'd have to add in a section in your action sequence locked behind an if check that checks to see if the actor is currently dual wielding.

Makes a lot of sense.

I could have a conditional in the AS that checks for a state given by all off-hand weapons that can trigger it (something that gives "is dual wielding" or something like that), so there's something. But how to trigger the off-hand attack eludes me.

This is my AS.

In RMMZ, there is a trait to set the 'attack skill', instead of equipping a different skill as the basic attack, try setting a trait on the class to change the attack skill to the same exact copy of the default attack skill with no action sequence, and see what happens.
After doing so, she does indeed attack twice, but both damage appear to be mainhand damage. I even set off-hand multiplier to 0.1 and she is still doing the same as her mainhand attack. This is a bit of progress though, since she does attack twice with a skill that isn't the basic attack command.

Let's work with this first. With this specific case, set the new skill as <dual wield skill> and see if the damage is correct. This shouldn't be the case here, as the engine should treat it as the normal attack at this point, but perhaps it's not.

It appears that the default action sequence command (ACSET: Target action?) would be duplicated normally, but since your action sequence doesn't have that, and uses a custom bunch of stuff in the middle there instead, it's not being repeated properly, while the MECH: Action Effect is being duplicated correctly. 

Since you tested all of the original test cases sequentially without resetting the playtest in between, it is most likely that the swing counter is never being reset, even though that might be difficult to see using that one console command I gave you. You can try putting a script call at the end of your action sequence with the following text in it, and it should reset the swing counter completely after the attack:

delete BattleManager._subject._numAttacks

From this I can see that there is definitely something I need to fix about the custom action sequence, I'll need to try to figure out how the duplication of the target action section works in the VS Battle Engine before I can come up with a real solution. As I said above, the YEP BattleCore plugin that it was based on simply repeated the entire target action section, but it doesn't seem like they have sections anymore, at least, based on your sequence there.

(1 edit)


Hi there! I'm getting this error when I try to implement the plugin in MZ. I've tried turning off all of my other plugins, and even starting a new project and testing it out. Same error. It may be something I've done, but I wondered if you might have any idea. 

Good morning. I'm sorry you've run into this problem, but I was able to identify and fix the issue very quickly this morning.

The problem was that I'd aliased a window that only exists if you're using the VisuStella ElementsStatusCore plugin. Since I'd aliased the window without checking if that plugin was imported first, if you're not using that plugin, this error comes up on load. I wrapped the alias in an if check to make sure the plugin was imported before it aliases the function from it, so that won't happen anymore.

Redownload the plugin from your library to get the new version.

Also, keep in mind this plugin requires the VisuStella BattleCore plugin to work. So if you're not using it either, you're going to get other problems that I won't be able to fix until I release a version of the plugin that doesn't need it. I only bring this up because most people who are using the VS_BattleCore plugin are also using the ElementsStatusCore plugin as well, and that wasn't the case for you.

-Ramza

(+1)

Works like a charm! Thank you for the speedy response.

Hey Ramza. Excited for the new MZ updates. I am testing the new Visustella plugins with only DualWield and I am getting a Maximum call stack size randomly on attacks.


This actually doesn't appear to be related to the dualwield plugin

Hmm. That is interesting. I'll see if I can help narrow down what's causing that, though, like you said, it doesn't look like my plugin is causing it, based on that error stack.