if (apply)
target->SetAttackTime(BASE_ATTACK,BASE_ATTACK_TIME);
else
((Player *)target)->SetRegularAttackTime();
This part and some other don't must be applied for main weapon only for any cases.
Other look good.
Agree, for consistence i rename to offhand and add comment related shield.
if(player->CanBlock() && player->IsUseEquipedWeapon(OFF_ATTACK))
this part unclear for me.
CanBlock used also in Player::UpdateBlockPercentage
If at disarm character stats window must show chance 0 then IsUseEquipedWeapon must be moved under CanBlock
with small other changes. I will not touch this in added version, but intresting any info about this case.
With this changes and notes in [10957]. Thank you for prepering and updating patch.