diff options
author | megamage <none@none> | 2009-06-10 10:13:45 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-06-10 10:13:45 -0500 |
commit | b8f95e054617bb5ae6bf80401865f04b43c3b57f (patch) | |
tree | 08652a33db284ba6bcfd034d2bfcd135e58d5a54 | |
parent | 40e353a9ca49fcad6ffa70224c7c2137e71ed205 (diff) |
*Fix the bug that players lose stats when change weapons when have disarm auras.
--HG--
branch : trunk
-rw-r--r-- | src/game/Creature.cpp | 2 | ||||
-rw-r--r-- | src/game/Player.cpp | 2 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 15 |
3 files changed, 10 insertions, 9 deletions
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index e8916aad70a..f31dcbf4df7 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -140,7 +140,7 @@ m_defaultMovementType(IDLE_MOTION_TYPE), m_DBTableGuid(0), m_equipmentId(0), m_A m_regenHealth(true), m_AI_locked(false), m_isDeadByDefault(false), m_meleeDamageSchoolMask(SPELL_SCHOOL_MASK_NORMAL), m_creatureInfo(NULL), m_reactState(REACT_AGGRESSIVE), m_formation(NULL), m_summonMask(SUMMON_MASK_NONE) , m_AlreadySearchedAssistance(false) -, m_creatureData(NULL) +, m_creatureData(NULL), m_PlayerDamageReq(0) { m_regenTimer = 200; m_valuesCount = UNIT_END; diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 2ffd1a8fb58..5f97ab82e68 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -6502,7 +6502,7 @@ void Player::_ApplyItemMods(Item *item, uint8 slot,bool apply) uint8 attacktype = Player::GetAttackBySlot(slot); //check disarm only on mod apply to allow remove item mods - if (apply && !CanUseAttackType(attacktype) ) + if (!CanUseAttackType(attacktype) ) return; if(attacktype < MAX_ATTACK) diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 43f004d7701..51c27aabac3 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -3907,17 +3907,19 @@ void AuraEffect::HandleAuraModDisarm(bool apply, bool Real, bool /*changeAmount* default: return; } - if(apply) - m_target->SetFlag(field, flag); - else - m_target->RemoveFlag(field, flag); if (m_target->GetTypeId() == TYPEID_PLAYER) { if(Item *pItem = ((Player*)m_target)->GetItemByPos( INVENTORY_SLOT_BAG_0, slot )) ((Player*)m_target)->_ApplyItemMods(pItem, slot, !apply); } - else if (((Creature*)m_target)->GetCurrentEquipmentId()) + + if(apply) + m_target->SetFlag(field, flag); + else + m_target->RemoveFlag(field, flag); + + if (m_target->GetTypeId() == TYPEID_UNIT && ((Creature*)m_target)->GetCurrentEquipmentId()) m_target->UpdateDamagePhysical(attType); } @@ -5418,8 +5420,7 @@ void AuraEffect::HandleModDamageDone(bool apply, bool Real, bool changeAmount) m_target->ApplyModUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+i,m_amount,apply); } } - Pet* pet = ((Player*)m_target)->GetPet(); - if(pet) + if(Guardian* pet = ((Player*)m_target)->GetGuardianPet()) pet->UpdateAttackPowerAndDamage(); } } |