diff options
| author | tvaroh <none@none> | 2009-05-30 18:27:08 +0200 |
|---|---|---|
| committer | tvaroh <none@none> | 2009-05-30 18:27:08 +0200 |
| commit | a3a7996fd1b15238172a737320ba22c95e7c35ca (patch) | |
| tree | 064bfb2c44aa4419601ff8128bf1a6675618d4a6 /src | |
| parent | 3a223e0e8075139f4a91572ec33fa2841fd60c2d (diff) | |
Do not remove poison enchantment auras when entering arena battle.
--HG--
branch : trunk
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/BattleGround.cpp | 2 | ||||
| -rw-r--r-- | src/game/Player.cpp | 15 | ||||
| -rw-r--r-- | src/game/Player.h | 2 | ||||
| -rw-r--r-- | src/game/SpellMgr.h | 4 | ||||
| -rw-r--r-- | src/game/Unit.cpp | 4 | ||||
| -rw-r--r-- | src/shared/Database/DBCEnums.h | 10 |
6 files changed, 30 insertions, 7 deletions
diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index 9be5650a16e..695b32fd2df 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -957,7 +957,7 @@ void BattleGround::AddPlayer(Player *plr) { plr->RemoveArenaSpellCooldowns(); plr->RemoveArenaAuras(); - plr->RemoveAllEnchantments(TEMP_ENCHANTMENT_SLOT); + plr->RemoveAllEnchantments(TEMP_ENCHANTMENT_SLOT, true); if(team == ALLIANCE) // gold { if(plr->GetTeam() == HORDE) diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 6485355a294..8ee2c97e5fe 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -11539,7 +11539,7 @@ void Player::RemoveEnchantmentDurations(Item *item) } } -void Player::RemoveAllEnchantments(EnchantmentSlot slot) +void Player::RemoveAllEnchantments(EnchantmentSlot slot, bool arena) { // remove enchantments from equipped items first to clean up the m_enchantDuration list for(EnchantDurationList::iterator itr = m_enchantDuration.begin(),next;itr != m_enchantDuration.end();itr=next) @@ -11547,6 +11547,19 @@ void Player::RemoveAllEnchantments(EnchantmentSlot slot) next = itr; if(itr->slot==slot) { + if(arena && itr->item) + { + uint32 enchant_id = itr->item->GetEnchantmentId(slot); + if(enchant_id) + { + SpellItemEnchantmentEntry const *pEnchant = sSpellItemEnchantmentStore.LookupEntry(enchant_id); + if(pEnchant && pEnchant->aura_id == ITEM_ENCHANTMENT_AURAID_POISON) + { + ++next; + continue; + } + } + } if(itr->item && itr->item->GetEnchantmentId(slot)) { // remove from stats diff --git a/src/game/Player.h b/src/game/Player.h index aff836b33c4..384acf7b760 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1154,7 +1154,7 @@ class TRINITY_DLL_SPEC Player : public Unit void UpdateItemDuration(uint32 time, bool realtimeonly=false); void AddEnchantmentDurations(Item *item); void RemoveEnchantmentDurations(Item *item); - void RemoveAllEnchantments(EnchantmentSlot slot); + void RemoveAllEnchantments(EnchantmentSlot slot, bool arena); void AddEnchantmentDuration(Item *item,EnchantmentSlot slot,uint32 duration); void ApplyEnchantment(Item *item,EnchantmentSlot slot,bool apply, bool apply_dur = true, bool ignore_condition = false); void ApplyEnchantment(Item *item,bool apply); diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index 62c46ccf990..ccf16d1c7e8 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -485,7 +485,7 @@ enum ProcFlags PROC_FLAG_KILLED = 0x00000001, // 00 Killed by agressor PROC_FLAG_KILL_AND_GET_XP = 0x00000002, // 01 Kill that yields experience or honor - PROC_FLAG_SUCCESSFUL_MILEE_HIT = 0x00000004, // 02 Successful melee attack + PROC_FLAG_SUCCESSFUL_MELEE_HIT = 0x00000004, // 02 Successful melee attack PROC_FLAG_TAKEN_MELEE_HIT = 0x00000008, // 03 Taken damage from melee strike hit PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT = 0x00000010, // 04 Successful attack by Spell that use melee weapon @@ -519,7 +519,7 @@ enum ProcFlags PROC_FLAG_SUCCESSFUL_OFFHAND_HIT = 0x00800000 // 23 Successful off-hand melee attacks }; -#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MILEE_HIT | \ +#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MELEE_HIT | \ PROC_FLAG_TAKEN_MELEE_HIT | \ PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT | \ PROC_FLAG_TAKEN_MELEE_SPELL_HIT | \ diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index d2a10593a1d..44e07887d93 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1334,12 +1334,12 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da switch (attackType) { case BASE_ATTACK: - damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MILEE_HIT; + damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_HIT; damageInfo->procVictim = PROC_FLAG_TAKEN_MELEE_HIT; damageInfo->HitInfo = HITINFO_NORMALSWING2; break; case OFF_ATTACK: - damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MILEE_HIT | PROC_FLAG_SUCCESSFUL_OFFHAND_HIT; + damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_HIT | PROC_FLAG_SUCCESSFUL_OFFHAND_HIT; damageInfo->procVictim = PROC_FLAG_TAKEN_MELEE_HIT;//|PROC_FLAG_TAKEN_OFFHAND_HIT // not used damageInfo->HitInfo = HITINFO_LEFTSWING; break; diff --git a/src/shared/Database/DBCEnums.h b/src/shared/Database/DBCEnums.h index d8699b2c240..fbd87aafbe7 100644 --- a/src/shared/Database/DBCEnums.h +++ b/src/shared/Database/DBCEnums.h @@ -98,6 +98,16 @@ enum ItemEnchantmentType ITEM_ENCHANTMENT_TYPE_TOTEM = 6 }; +enum ItemEnchantmentAuraId +{ + ITEM_ENCHANTMENT_AURAID_POISON = 26, + ITEM_ENCHANTMENT_AURAID_NORMAL = 28, + ITEM_ENCHANTMENT_AURAID_FIRE = 32, + ITEM_ENCHANTMENT_AURAID_FROST = 33, + ITEM_ENCHANTMENT_AURAID_NATURE = 81, + ITEM_ENCHANTMENT_AURAID_SHADOW = 107 +}; + enum TotemCategoryType { TOTEM_CATEGORY_TYPE_KNIFE = 1, |
