*Update to Mangos 6967.
--HG-- branch : trunk
This commit is contained in:
@@ -382,7 +382,7 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
|
||||
data << (uint8)3;
|
||||
data << GetPlayer()->GetName();
|
||||
data << plName;
|
||||
data << guild->GetRankName(slot->RankId+1);
|
||||
data << guild->GetRankName(slot->RankId);
|
||||
guild->BroadcastPacket(&data);
|
||||
}
|
||||
|
||||
|
||||
+21
-6
@@ -6145,12 +6145,7 @@ bool Player::RewardHonor(Unit *uVictim, uint32 groupsize, float honor, bool pvpt
|
||||
victim_guid = 0; // Don't show HK: <rank> message, only log.
|
||||
}
|
||||
|
||||
if(k_level <= 5)
|
||||
k_grey = 0;
|
||||
else if( k_level <= 39 )
|
||||
k_grey = k_level - 5 - k_level/10;
|
||||
else
|
||||
k_grey = k_level - 1 - k_level/5;
|
||||
k_grey = Trinity::XP::GetGrayLevel(k_level);
|
||||
|
||||
if(v_level<=k_grey)
|
||||
return false;
|
||||
@@ -19021,6 +19016,26 @@ uint32 Player::GetResurrectionSpellId()
|
||||
return spell_id;
|
||||
}
|
||||
|
||||
// Used in triggers for check "Only to targets that grant experience or honor" req
|
||||
bool Player::isHonorOrXPTarget(Unit* pVictim)
|
||||
{
|
||||
uint32 v_level = pVictim->getLevel();
|
||||
uint32 k_grey = Trinity::XP::GetGrayLevel(getLevel());
|
||||
|
||||
// Victim level less gray level
|
||||
if(v_level<=k_grey)
|
||||
return false;
|
||||
|
||||
if(pVictim->GetTypeId() == TYPEID_UNIT)
|
||||
{
|
||||
if (((Creature*)pVictim)->isTotem() ||
|
||||
((Creature*)pVictim)->isPet() ||
|
||||
((Creature*)pVictim)->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_XP_AT_KILL)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
|
||||
{
|
||||
bool PvP = pVictim->isCharmedOwnedByPlayerOrPlayer();
|
||||
|
||||
@@ -1773,6 +1773,7 @@ class TRINITY_DLL_SPEC Player : public Unit
|
||||
|
||||
bool IsAtGroupRewardDistance(WorldObject const* pRewardSource) const;
|
||||
bool RewardPlayerAndGroupAtKill(Unit* pVictim);
|
||||
bool isHonorOrXPTarget(Unit* pVictim);
|
||||
|
||||
FactionStateList m_factions;
|
||||
ForcedReactions m_forcedReactions;
|
||||
|
||||
@@ -275,7 +275,7 @@ enum AuraType
|
||||
SPELL_AURA_DETECT_STEALTH = 228,
|
||||
SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE = 229,
|
||||
SPELL_AURA_230 = 230,
|
||||
SPELL_AURA_231 = 231,
|
||||
SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE = 231,
|
||||
SPELL_AURA_MECHANIC_DURATION_MOD = 232,
|
||||
SPELL_AURA_233 = 233,
|
||||
SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK = 234,
|
||||
|
||||
@@ -285,7 +285,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
|
||||
&Aura::HandleNoImmediateEffect, //228 stealth detection
|
||||
&Aura::HandleNULL, //229 SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE
|
||||
&Aura::HandleAuraModIncreaseMaxHealth, //230 Commanding Shout
|
||||
&Aura::HandleNULL, //231
|
||||
&Aura::HandleNoImmediateEffect, //231 SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE
|
||||
&Aura::HandleNoImmediateEffect, //232 SPELL_AURA_MECHANIC_DURATION_MOD implement in Unit::CalculateSpellDuration
|
||||
&Aura::HandleNULL, //233 set model id to the one of the creature with id m_modifier.m_miscvalue
|
||||
&Aura::HandleNoImmediateEffect, //234 SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK implement in Unit::CalculateSpellDuration
|
||||
|
||||
@@ -358,7 +358,7 @@ SpellSpecific GetSpellSpecific(uint32 spellId)
|
||||
if (IsSealSpell(spellInfo))
|
||||
return SPELL_SEAL;
|
||||
|
||||
if (spellInfo->SpellFamilyFlags & 0x10000100LL)
|
||||
if (spellInfo->SpellFamilyFlags & 0x0000000011010002LL)
|
||||
return SPELL_BLESSING;
|
||||
|
||||
if ((spellInfo->SpellFamilyFlags & 0x00000820180400LL) && (spellInfo->AttributesEx3 & 0x200))
|
||||
|
||||
+1
-1
@@ -337,7 +337,7 @@ inline bool IsSealSpell(SpellEntry const *spellInfo)
|
||||
{
|
||||
//Collection of all the seal family flags. No other paladin spell has any of those.
|
||||
return spellInfo->SpellFamilyName == SPELLFAMILY_PALADIN &&
|
||||
( spellInfo->SpellFamilyFlags & 0x4000A000200LL );
|
||||
( spellInfo->SpellFamilyFlags & 0x26000C000A000000LL );
|
||||
}
|
||||
|
||||
inline bool IsElementalShield(SpellEntry const *spellInfo)
|
||||
|
||||
+58
-97
@@ -5593,18 +5593,17 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
Unit* target = NULL;
|
||||
int32 basepoints0 = 0;
|
||||
|
||||
if(triggeredByAura->GetModifier()->m_auraname == SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE)
|
||||
basepoints0 = triggerAmount;
|
||||
|
||||
Item* castItem = triggeredByAura->GetCastItemGUID() && GetTypeId()==TYPEID_PLAYER
|
||||
? ((Player*)this)->GetItemByGuid(triggeredByAura->GetCastItemGUID()) : NULL;
|
||||
|
||||
// Try handle uncnown trigger spells
|
||||
if (sSpellStore.LookupEntry(trigger_spell_id)==NULL)
|
||||
{
|
||||
switch (auraSpellInfo->SpellFamilyName)
|
||||
{
|
||||
//=====================================================================
|
||||
// Generic class
|
||||
// ====================================================================
|
||||
// .....
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_GENERIC:
|
||||
//if (auraSpellInfo->Id==59532) // Abandon Passengers on Poly
|
||||
//if (auraSpellInfo->Id==54775) // Abandon Vehicle on Poly
|
||||
@@ -5663,8 +5662,7 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
//else if (auraSpellInfo->Id==16092) // Defensive State (DND)
|
||||
//else if (auraSpellInfo->Id==24949) // Defensive State 2 (DND)
|
||||
//else if (auraSpellInfo->Id==40329) // Demo Shout Sensor
|
||||
// Desperate Defense (Stonescythe Whelp, Stonescythe Alpha, Stonescythe Ambusher)
|
||||
else if (auraSpellInfo->Id == 33896)
|
||||
else if (auraSpellInfo->Id == 33896) // Desperate Defense (Stonescythe Whelp, Stonescythe Alpha, Stonescythe Ambusher)
|
||||
trigger_spell_id = 33898;
|
||||
//else if (auraSpellInfo->Id==18943) // Double Attack
|
||||
//else if (auraSpellInfo->Id==19194) // Double Attack
|
||||
@@ -5681,7 +5679,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
case 34329:
|
||||
case 34524:
|
||||
case 34582:
|
||||
case 36733:break;
|
||||
case 36733:
|
||||
break;
|
||||
default:
|
||||
sLog.outError("Unit::HandleProcTriggerSpell: Spell %u miss posibly Elemental Response",auraSpellInfo->Id);
|
||||
return false;
|
||||
@@ -5689,18 +5688,19 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
//This generic aura self-triggers a different spell for each school of magic that lands on the wearer:
|
||||
switch (procSpell->School)
|
||||
{
|
||||
case SPELL_SCHOOL_FIRE: trigger_spell_id = 34192;break;//Fire: 34192
|
||||
case SPELL_SCHOOL_FROST: trigger_spell_id = 34193;break;//Frost: 34193
|
||||
case SPELL_SCHOOL_ARCANE: trigger_spell_id = 34194;break;//Arcane: 34194
|
||||
case SPELL_SCHOOL_NATURE: trigger_spell_id = 34195;break;//Nature: 34195
|
||||
case SPELL_SCHOOL_SHADOW: trigger_spell_id = 34196;break;//Shadow: 34196
|
||||
case SPELL_SCHOOL_HOLY: trigger_spell_id = 34197;break;//Holy: 34197
|
||||
case SPELL_SCHOOL_NORMAL: trigger_spell_id = 34198;break;//Physical: 34198
|
||||
case SPELL_SCHOOL_FIRE: trigger_spell_id = 34192; break;
|
||||
case SPELL_SCHOOL_FROST: trigger_spell_id = 34193; break;
|
||||
case SPELL_SCHOOL_ARCANE:trigger_spell_id = 34194; break;
|
||||
case SPELL_SCHOOL_NATURE:trigger_spell_id = 34195; break;
|
||||
case SPELL_SCHOOL_SHADOW:trigger_spell_id = 34196; break;
|
||||
case SPELL_SCHOOL_HOLY: trigger_spell_id = 34197; break;
|
||||
case SPELL_SCHOOL_NORMAL:trigger_spell_id = 34198; break;
|
||||
default:
|
||||
sLog.outError("Unit::HandleProcTriggerSpell: Spell %u Elemental Response wrong school",auraSpellInfo->Id);
|
||||
return false;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
*/
|
||||
//else if (auraSpellInfo->Id==40364) // Entangling Roots Sensor
|
||||
//else if (auraSpellInfo->Id==33207) // Gossip NPC Periodic - Fidget
|
||||
//else if (auraSpellInfo->Id==50051) // Ethereal Pet Aura
|
||||
@@ -5715,7 +5715,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
//else if (auraSpellInfo->Id==40250) // Improved Duration
|
||||
//else if (auraSpellInfo->Id==59288) // Infra-Green Shield
|
||||
//else if (auraSpellInfo->Id==54072) // Knockback Ball Passive
|
||||
else if (auraSpellInfo->Id==27522 || auraSpellInfo->Id==40336) // Mana Drain Trigger
|
||||
else if (auraSpellInfo->Id==27522 || auraSpellInfo->Id==40336)
|
||||
// Mana Drain Trigger
|
||||
{
|
||||
// On successful melee or ranged attack gain $29471s1 mana and if possible drain $27526s1 mana from the target.
|
||||
if (this && this->isAlive())
|
||||
@@ -5740,14 +5741,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
//else if (auraSpellInfo->Id==59735) // Woe Strike
|
||||
//else if (auraSpellInfo->Id==46146) // [PH] Ahune Spanky Hands
|
||||
break;
|
||||
//=====================================================================
|
||||
// Mage
|
||||
//=====================================================================
|
||||
// Blazing Speed (Rank 1,2) trigger = 18350
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_MAGE:
|
||||
// Blazing Speed
|
||||
if (auraSpellInfo->SpellIconID == 2127)
|
||||
if (auraSpellInfo->SpellIconID == 2127) // Blazing Speed
|
||||
{
|
||||
switch (auraSpellInfo->Id)
|
||||
{
|
||||
@@ -5761,25 +5756,10 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
}
|
||||
}
|
||||
break;
|
||||
//=====================================================================
|
||||
// Warrior
|
||||
//=====================================================================
|
||||
// Scent of Blood
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_WARRIOR:
|
||||
{
|
||||
// Scent of Blood
|
||||
if (auraSpellInfo->Id == 50421)
|
||||
if (auraSpellInfo->Id == 50421) // Scent of Blood
|
||||
trigger_spell_id = 50422;
|
||||
}
|
||||
break;
|
||||
//=====================================================================
|
||||
// Warlock
|
||||
//=====================================================================
|
||||
// Pyroclasm trigger = 18350
|
||||
// Nether Protection trigger = 1206
|
||||
// Drain Soul (Rank 1-5) trigger = 0
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_WARLOCK:
|
||||
{
|
||||
// Pyroclasm
|
||||
@@ -5851,12 +5831,6 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
}
|
||||
break;
|
||||
}
|
||||
//=====================================================================
|
||||
// Priest
|
||||
//=====================================================================
|
||||
// Greater Heal Refund trigger = 18350
|
||||
// Blessed Recovery (Rank 1-3) trigger = 18350
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_PRIEST:
|
||||
{
|
||||
// Greater Heal Refund
|
||||
@@ -5879,13 +5853,6 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
}
|
||||
break;
|
||||
}
|
||||
//=====================================================================
|
||||
// Druid
|
||||
// ====================================================================
|
||||
// Druid Forms Trinket trigger = 18350
|
||||
// Entangling Roots trigger = 30023
|
||||
// Leader of the Pack trigger = 18350
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_DRUID:
|
||||
{
|
||||
// Druid Forms Trinket
|
||||
@@ -5893,7 +5860,7 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
{
|
||||
switch(m_form)
|
||||
{
|
||||
case 0: trigger_spell_id = 37344;break;
|
||||
case FORM_NONE: trigger_spell_id = 37344;break;
|
||||
case FORM_CAT: trigger_spell_id = 37341;break;
|
||||
case FORM_BEAR:
|
||||
case FORM_DIREBEAR: trigger_spell_id = 37340;break;
|
||||
@@ -5915,26 +5882,12 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
}
|
||||
break;
|
||||
}
|
||||
//=====================================================================
|
||||
// Hunter
|
||||
// ====================================================================
|
||||
// ......
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_HUNTER:
|
||||
break;
|
||||
//=====================================================================
|
||||
// Paladin
|
||||
// ====================================================================
|
||||
// Blessed Life trigger = 31934
|
||||
// Healing Discount trigger = 18350
|
||||
// Illumination (Rank 1-5) trigger = 18350
|
||||
// Lightning Capacitor trigger = 18350
|
||||
// Thunder Capacitor trigger = 18350
|
||||
// Soul Preserver trigger = 18350
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_PALADIN:
|
||||
{
|
||||
/* // Blessed Life
|
||||
/*
|
||||
// Blessed Life
|
||||
if (auraSpellInfo->SpellIconID == 2137)
|
||||
{
|
||||
switch (auraSpellInfo->Id)
|
||||
@@ -5947,7 +5900,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
sLog.outError("Unit::HandleProcTriggerSpell: Spell %u miss posibly Blessed Life", auraSpellInfo->Id);
|
||||
return false;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
*/
|
||||
// Healing Discount
|
||||
if (auraSpellInfo->Id==37705)
|
||||
{
|
||||
@@ -6035,13 +5989,6 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
}
|
||||
break;
|
||||
}
|
||||
//=====================================================================
|
||||
// Shaman
|
||||
//====================================================================
|
||||
// Lightning Shield trigger = 18350
|
||||
// Mana Surge trigger = 18350
|
||||
// Nature's Guardian (Rank 1-5) trigger = 18350
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_SHAMAN:
|
||||
{
|
||||
// Lightning Shield (overwrite non existing triggered spell call in spell.dbc
|
||||
@@ -6049,17 +5996,28 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
{
|
||||
switch(auraSpellInfo->Id)
|
||||
{
|
||||
case 324: trigger_spell_id = 26364; break; // Rank 1
|
||||
case 325: trigger_spell_id = 26365; break; // Rank 2
|
||||
case 905: trigger_spell_id = 26366; break; // Rank 3
|
||||
case 945: trigger_spell_id = 26367; break; // Rank 4
|
||||
case 8134: trigger_spell_id = 26369; break; // Rank 5
|
||||
case 10431: trigger_spell_id = 26370; break; // Rank 6
|
||||
case 10432: trigger_spell_id = 26363; break; // Rank 7
|
||||
case 25469: trigger_spell_id = 26371; break; // Rank 8
|
||||
case 25472: trigger_spell_id = 26372; break; // Rank 9
|
||||
case 49280: trigger_spell_id = 49278; break; // Rank 10
|
||||
case 49281: trigger_spell_id = 49279; break; // Rank 11
|
||||
case 324: // Rank 1
|
||||
trigger_spell_id = 26364; break;
|
||||
case 325: // Rank 2
|
||||
trigger_spell_id = 26365; break;
|
||||
case 905: // Rank 3
|
||||
trigger_spell_id = 26366; break;
|
||||
case 945: // Rank 4
|
||||
trigger_spell_id = 26367; break;
|
||||
case 8134: // Rank 5
|
||||
trigger_spell_id = 26369; break;
|
||||
case 10431: // Rank 6
|
||||
trigger_spell_id = 26370; break;
|
||||
case 10432: // Rank 7
|
||||
trigger_spell_id = 26363; break;
|
||||
case 25469: // Rank 8
|
||||
trigger_spell_id = 26371; break;
|
||||
case 25472: // Rank 9
|
||||
trigger_spell_id = 26372; break;
|
||||
case 49280: // Rank 10
|
||||
trigger_spell_id = 49278; break;
|
||||
case 49281: // Rank 11
|
||||
trigger_spell_id = 49279; break;
|
||||
default:
|
||||
sLog.outError("Unit::HandleProcTriggerSpell: Spell %u not handled in LShield", auraSpellInfo->Id);
|
||||
return false;
|
||||
@@ -6099,12 +6057,6 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
}
|
||||
break;
|
||||
}
|
||||
//=====================================================================
|
||||
// Death Knight
|
||||
//====================================================================
|
||||
// Acclimation trigger = 1206
|
||||
// Blood Presence trigger = 1206
|
||||
//=====================================================================
|
||||
case SPELLFAMILY_DEATHKNIGHT:
|
||||
{
|
||||
// Acclimation
|
||||
@@ -6131,17 +6083,17 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||
{
|
||||
if (GetTypeId() != TYPEID_PLAYER)
|
||||
return false;
|
||||
if (!((Player*)this)->RewardPlayerAndGroupAtKill(pVictim))
|
||||
if (!((Player*)this)->isHonorOrXPTarget(pVictim))
|
||||
return false;
|
||||
trigger_spell_id = 50475;
|
||||
basepoints0 = damage * triggerAmount / 100;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// default
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// All ok. Check current trigger spell
|
||||
SpellEntry const* triggerEntry = sSpellStore.LookupEntry(trigger_spell_id);
|
||||
@@ -9937,6 +9889,7 @@ bool InitTriggerAuraData()
|
||||
isTriggerAura[SPELL_AURA_MOD_HASTE] = true;
|
||||
isTriggerAura[SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE]=true;
|
||||
isTriggerAura[SPELL_AURA_PRAYER_OF_MENDING] = true;
|
||||
isTriggerAura[SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE] = true;
|
||||
|
||||
isNonTriggerAura[SPELL_AURA_MOD_POWER_REGEN]=true;
|
||||
isNonTriggerAura[SPELL_AURA_RESIST_PUSHBACK]=true;
|
||||
@@ -10171,6 +10124,14 @@ void Unit::ProcDamageAndSpellFor( bool isVictim, Unit * pTarget, uint32 procFlag
|
||||
HandleMeandingAuraProc(triggeredByAura);
|
||||
break;
|
||||
}
|
||||
case SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE:
|
||||
{
|
||||
sLog.outDebug("ProcDamageAndSpell: casting spell %u (triggered with value by %s aura of spell %u)", spellInfo->Id,(isVictim?"a victim's":"an attacker's"), triggeredByAura->GetId());
|
||||
|
||||
if (!HandleProcTriggerSpell(pTarget, damage, triggeredByAura, procSpell, procFlag, procExtra, cooldown))
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
case SPELL_AURA_MOD_STUN:
|
||||
// Remove by default, but if charge exist drop it
|
||||
if (triggeredByAura->m_procCharges == 0)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "6963"
|
||||
#define REVISION_NR "6967"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
||||
Reference in New Issue
Block a user