Log in

View Full Version : Dual Wield Rule Changes


Uleat
04-06-2014, 05:36 AM
I changed the rules for dual-wielding to allow non-monk/beastlord class to use their fists as long as they have at least one weapon equipped
in either their primary or secondary slots.


Primary Secondary Dual Wield
----------------------------------
2H Empty No

1H 1H Yes
1H Object No
1H Empty Yes

Object 1H Yes
Object Object No
Object Empty Yes

Empty 1H Yes
Empty Object No
Empty Empty No (unless you are a monk or beastlord)


If this is incorrect in any way, please let me know and I'll (or someone) will correct it.

If you have an opinion on this, please post and a discussion should ensue.

Kingly_Krab
04-06-2014, 05:46 AM
Yeah, this make sense. But why Beastlords?

Uleat
04-06-2014, 06:06 AM
They were always coded to allow dual-wielding fists.

I'm pretty sure they've always been considered a Monk-lite class since their introduction.

Kingly_Krab
04-06-2014, 06:14 AM
They were always coded to allow dual-wielding fists.

I'm pretty sure they've always been considered a Monk-lite class since their introduction.
Okay, I was just confused, as they do have to earn their Dual Wield, I thought they would just be like the rest.

Uleat
04-06-2014, 06:30 AM
All of the checks are wrapped in a Client::HasSkill(SkillDualWield) check.

If there's no skill, then no one has it. This logic matrix only applies once they have trained it..unless there's a bug elsewhere that grants them that skill :)

bool Mob::CanThisClassDualWield(void) const {
if(!IsClient()) {
return(GetSkill(SkillDualWield) > 0);
}
else if(CastToClient()->HasSkill(SkillDualWield)) {
const ItemInst* pinst = CastToClient()->GetInv().GetItem(SLOT_PRIMARY);
const ItemInst* sinst = CastToClient()->GetInv().GetItem(SLOT_SECONDARY);

// 2HS, 2HB, or 2HP
if(pinst && pinst->IsWeapon()) {
const Item_Struct* item = pinst->GetItem();

if((item->ItemType == ItemType2HBlunt) || (item->ItemType == ItemType2HSlash) || (item->ItemType == ItemType2HPiercing))
return false;
}

// OffHand Weapon
if(sinst && !sinst->IsWeapon())
return false;

// Dual-Wielding Empty Fists
if(!pinst && !sinst)
if(class_ != MONK && class_ != MONKGM && class_ != BEASTLORD && class_ != BEASTLORDGM)
return false;

return true;
}

return false;
}

This is an on-the-fly check for current conditions..not a base does this class get the dual wield ability.

It's name is a bit mis-leading.

Kingly_Krab
04-06-2014, 06:50 AM
Oh I know, I read the code. I was just assuming all non-innate dual wielding classes would not be able to dual wield with hands.

jsr
04-06-2014, 09:46 PM
I changed the rules for dual-wielding to allow non-monk/beastlord class to use their fists as long as they have at least one weapon equipped
in either their primary or secondary slots.


Primary Secondary Dual Wield
----------------------------------
Empty Empty No (unless you are a monk or beastlord)


If you have an opinion on this, please post and a discussion should ensue.

I don't understand the restriction on dw with fist/fist, I've never seen anyone in a fist fight use one hand.

Uleat
04-06-2014, 10:28 PM
Ok..here is the original function:

bool Mob::CanThisClassDualWield(void) const
{
if (!IsClient()) {
return(GetSkill(SkillDualWield) > 0);
} else {
const ItemInst* inst = CastToClient()->GetInv().GetItem(SLOT_PRIMARY);
// 2HS, 2HB, or 2HP
if (inst && inst->IsType(ItemClassCommon)) {
const Item_Struct* item = inst->GetItem();
if ((item->ItemType == ItemType2HBlunt) || (item->ItemType == ItemType2HSlash) || (item->ItemType == ItemType2HPiercing))
return false;
} else {
//No weapon in hand... using hand-to-hand...
//only monks and beastlords? can dual wield their fists.
if(class_ != MONK && class_ != MONKGM && class_ != BEASTLORD && class_ != BEASTLORDGM) {
return false;
}
}

return (CastToClient()->HasSkill(SkillDualWield)); // No skill = no chance
}
}

As you can see, I did not change the effective behavior of dual-wielding empty hands.

This change affects all non-Monk/Beastlord dual wield characteristics only.


There were reports of warriors not attacking with their off-hand weapon when they unequipped their primary weapon.

Now, these classes can use either Primary or Secondary for their empty hand, so long as the other has a weapon.


In regards to the old rule for only allowing Monk and Beastlord, I don't know why it was set up that way. I only restated the criteria
to fix an issue for the other d-w classes.

If someone can provide a reference as to why or why not the other classes should or should not be capable of dual-wielding
their fists, I will gladly adapt this function to the finding.

jsr
04-06-2014, 10:42 PM
I'll check Live later :)

Robregen
04-06-2014, 10:52 PM
It seems obvious to choose H2H weapons because of the lore of beastlords. However, H2H weapons are mostly late additions to the game (Luclin onwards) and thus relatively rare, and are heavily competed for against monk twinks, as a result are extremely expensive for the damage they can do. It is worth getting H2H skills and keeping them maxed, because H2H weapons will be preferred at 60+, but the cost imbalance makes them less than ideal until then. H2H weapons in general have better ratios than other types for beastlords.

http://www.paullynch.org/Everquest/VSBL/88weapons.html

Uleat
04-07-2014, 01:51 AM
Here's a good one: http://everquest.allakhazam.com/wiki/eq:warrior

Hand to Hand 1 Bare fists; no use for anyone other than monks and beastlords.

I guess, according to this, we should nix all bare-fisted attacking other classes.


EDIT: I guess that just muddies the water..Just because they get the skill and can increase, it still doesn't specify whether it's dual wieldable.

Hopefully, jsr will find a positive answer :)

jsr
04-07-2014, 08:58 AM
fyi later will probably be next weekend!

Uleat
04-07-2014, 09:28 AM
Lol! No worries! And it doesn't have to be just you..anyone can proffer this information :)

ChaosSlayerZ
04-08-2014, 08:06 PM
you could make it into a Rule:

NakedFistsDWRule:

0 - default (only monks/bst can DW naked fists)
1 - you can DW 1 naked fist if you got 1 hand armed
2 - everyone can DW naked fists

jsr
04-13-2014, 02:26 AM
I changed the rules for dual-wielding to allow non-monk/beastlord class to use their fists as long as they have at least one weapon equipped
in either their primary or secondary slots.


Primary Secondary Dual Wield
----------------------------------
2H Empty No

1H 1H Yes
1H Object No
1H Empty Yes

Object 1H Yes
Object Object No
Object Empty Yes

Empty 1H Yes
Empty Object No
Empty Empty No (unless you are a monk or beastlord)


If this is incorrect in any way, please let me know and I'll (or someone) will correct it.

If you have an opinion on this, please post and a discussion should ensue.

Used a ranger with 269 dual wield skill.


empty/empty empty/object
1 attempt per sec 5 7
2 attempts per sec 2 36
3 attempts per sec 5 12
4 attempts per sec 38 9
5 attempts per sec 5 3
6 attempts per sec 16 1
time 161 252
attempts 279 172
attempts per time 1.73 0.68


- Didn't exclude riposte data
- Drop in attack rate for empty/object is more than expected, but I assume it's within margin for error.

In any event data clearly shows rangers dual wield with empty/empty, DW animation also played. I think we have no reason to expect different results for other classes, the only other I can test (without the effort of levelling up) would be rogue if you think this is insufficient.

Akkadius
04-13-2014, 03:39 AM
When changing core function behavior. It is wise create a rule to offer a before and after that you can choose as the operator. As with all systematic core changes

Uleat
04-13-2014, 03:46 AM
Ok..definitely looks like you have more attacks dual-wielding empty fists.

I'm still not sure why it was originally coded that way..but, I will take a closer at the attack code.

I agree..it doesn't make sense why no one else couldn't use both fists in a fist fight.

One thing I did find was that as a monk's level increases, his (her) fist damage rating increases..but, that doesn't correlate to d-w'ness of fists.

Since I didn't change the original effective behavior, I'll look into this at a future date. I'm really trying to finalize the item/inventory code in this rework
so I can move on to all of the calling code and database changes, and don't want to get side-tracked on this project (again...)


Funny thing about that 'margin of error' with the object..what if ripostes go off with an object and not an empty hand?


PRE-POST EDIT: Yes, I will add a rule for that :P

jsr
04-13-2014, 07:53 AM
Ok..definitely looks like you have more attacks dual-wielding empty fists.

I'm still not sure why it was originally coded that way..but, I will take a closer at the attack code.

I agree..it doesn't make sense why no one else couldn't use both fists in a fist fight.

One thing I did find was that as a monk's level increases, his (her) fist damage rating increases..but, that doesn't correlate to d-w'ness of fists.

Since I didn't change the original effective behavior, I'll look into this at a future date. I'm really trying to finalize the item/inventory code in this rework
so I can move on to all of the calling code and database changes, and don't want to get side-tracked on this project (again...)


Funny thing about that 'margin of error' with the object..what if ripostes go off with an object and not an empty hand?


PRE-POST EDIT: Yes, I will add a rule for that :P


Riposte rate was roughly consistent across both samples, and not high enough to confuse the result which is why I left it in. Eq designers opted for a simple combat system compared to many other mud codebases around at the time.. so personally I wouldn't look for complexity to mirror live, simplest is probably closest :)