View Single Post
  #5  
Old 04-06-2014, 06:30 AM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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

Code:
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.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote