diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 0e07aa41b..f3f53875b 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -3580,19 +3580,26 @@ void Player::removeSpell(uint32 spell_id, bool disabled, bool learn_low_rank, bo } } - if (CanTitanGrip()) + // for Titan's Grip and shaman Dual-wield + if (CanDualWield() || CanTitanGrip()) { SpellEntry const *spellInfo = sSpellStore.LookupEntry(spell_id); - if (IsSpellHaveEffect(spellInfo, SPELL_EFFECT_TITAN_GRIP)) + + if (CanDualWield() && IsSpellHaveEffect(spellInfo, SPELL_EFFECT_DUAL_WIELD)) + SetCanDualWield(false); + + if (CanTitanGrip() && IsSpellHaveEffect(spellInfo, SPELL_EFFECT_TITAN_GRIP)) { SetCanTitanGrip(false); // Remove Titan's Grip damage penalty now RemoveAurasDueToSpell(49152); - if(sWorld.getConfig(CONFIG_BOOL_OFFHAND_CHECK_AT_TALENTS_RESET)) - AutoUnequipOffhandIfNeed(); } } + // for talents and normal spell unlearn that allow offhand use for some weapons + if(sWorld.getConfig(CONFIG_BOOL_OFFHAND_CHECK_AT_TALENTS_RESET)) + AutoUnequipOffhandIfNeed(); + // remove from spell book if not replaced by lesser rank if (!prev_activate && sendUpdate) { @@ -20137,7 +20144,7 @@ void Player::AutoUnequipOffhandIfNeed() return; // need unequip offhand for 2h-weapon without TitanGrip (in any from hands) - if (CanTitanGrip() || (offItem->GetProto()->InventoryType != INVTYPE_2HWEAPON && !IsTwoHandUsed())) + if (CanDualWield() && (CanTitanGrip() || (offItem->GetProto()->InventoryType != INVTYPE_2HWEAPON && !IsTwoHandUsed()))) return; ItemPosCountVec off_dest; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index f2958ce5c..5a11a4d3a 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "10570" + #define REVISION_NR "10571" #endif // __REVISION_NR_H__