aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortvaroh <none@none>2009-05-30 18:27:08 +0200
committertvaroh <none@none>2009-05-30 18:27:08 +0200
commita3a7996fd1b15238172a737320ba22c95e7c35ca (patch)
tree064bfb2c44aa4419601ff8128bf1a6675618d4a6 /src
parent3a223e0e8075139f4a91572ec33fa2841fd60c2d (diff)
Do not remove poison enchantment auras when entering arena battle.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/BattleGround.cpp2
-rw-r--r--src/game/Player.cpp15
-rw-r--r--src/game/Player.h2
-rw-r--r--src/game/SpellMgr.h4
-rw-r--r--src/game/Unit.cpp4
-rw-r--r--src/shared/Database/DBCEnums.h10
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,