*Mangos [7031] Implement some mage, paladin dummy trigers.
*Mangos [7029] Some work vs aura charges:
Move to protected: need use SetAuraCharges, GetAuraCharges, DropAuraCharge
Now m_procCharges == 0 if infinite charges, and > 0 for limit
Remove not need UpdateAuraCharges()
By DiSlord.
--HG--
branch : trunk
This commit is contained in:
+16
-28
@@ -431,15 +431,9 @@ m_periodicTimer(0), m_PeriodicEventId(0), m_AuraDRGroup(DIMINISHING_NONE)
|
||||
|
||||
m_isDeathPersist = IsDeathPersistentSpell(m_spellProto);
|
||||
|
||||
if(m_spellProto->procCharges)
|
||||
{
|
||||
m_procCharges = m_spellProto->procCharges;
|
||||
|
||||
if(modOwner)
|
||||
modOwner->ApplySpellMod(GetId(), SPELLMOD_CHARGES, m_procCharges);
|
||||
}
|
||||
else
|
||||
m_procCharges = -1;
|
||||
m_procCharges = m_spellProto->procCharges;
|
||||
if(modOwner)
|
||||
modOwner->ApplySpellMod(GetId(), SPELLMOD_CHARGES, m_procCharges);
|
||||
|
||||
m_isRemovedOnShapeLost = (m_caster_guid==m_target->GetGUID() && m_spellProto->Stances &&
|
||||
!(m_spellProto->AttributesEx2 & 0x80000) && !(m_spellProto->Attributes & 0x10000));
|
||||
@@ -877,17 +871,16 @@ void Aura::_AddAura()
|
||||
SetAuraSlot( slot );
|
||||
|
||||
// Not update fields for not first spell's aura, all data already in fields
|
||||
if(slot < MAX_AURAS) // slot found
|
||||
{
|
||||
SetAura(false);
|
||||
SetAuraFlags((1 << GetEffIndex()) | AFLAG_NOT_CASTER | ((GetAuraMaxDuration() > 0) ? AFLAG_DURATION : AFLAG_NONE) | (IsPositive() ? AFLAG_POSITIVE : AFLAG_NEGATIVE));
|
||||
SetAuraLevel(caster ? caster->getLevel() : sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL));
|
||||
UpdateAuraCharges();
|
||||
SendAuraUpdate(false);
|
||||
if(slot < MAX_AURAS) // slot found
|
||||
{
|
||||
SetAura(false);
|
||||
SetAuraFlags((1 << GetEffIndex()) | AFLAG_NOT_CASTER | ((GetAuraMaxDuration() > 0) ? AFLAG_DURATION : AFLAG_NONE) | (IsPositive() ? AFLAG_POSITIVE : AFLAG_NEGATIVE));
|
||||
SetAuraLevel(caster ? caster->getLevel() : sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL));
|
||||
SendAuraUpdate(false);
|
||||
|
||||
// update for out of range group members
|
||||
m_target->UpdateAuraForGroup(slot);
|
||||
}
|
||||
// update for out of range group members
|
||||
m_target->UpdateAuraForGroup(slot);
|
||||
}
|
||||
}
|
||||
else // use found slot
|
||||
{
|
||||
@@ -1027,7 +1020,7 @@ void Aura::SendAuraUpdate(bool remove)
|
||||
uint8 auraFlags = GetAuraFlags();
|
||||
data << uint8(auraFlags);
|
||||
data << uint8(GetAuraLevel());
|
||||
data << uint8(m_procCharges >= 0 ? m_procCharges : 0);
|
||||
data << uint8(GetAuraCharges());
|
||||
|
||||
if(!(auraFlags & AFLAG_NOT_CASTER))
|
||||
{
|
||||
@@ -1097,7 +1090,7 @@ void Aura::HandleAddModifier(bool apply, bool Real)
|
||||
case 34754: // Clearcasting
|
||||
case 34936: // Backlash
|
||||
case 48108: // Hot Streak
|
||||
m_procCharges = 1;
|
||||
SetAuraCharges(1);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1125,11 +1118,7 @@ void Aura::HandleAddModifier(bool apply, bool Real)
|
||||
|
||||
mod->mask = (uint64)ptr[0] | (uint64)ptr[1]<<32;
|
||||
mod->mask2= (uint64)ptr[2];
|
||||
|
||||
if (m_procCharges > 0)
|
||||
mod->charges = m_procCharges;
|
||||
else
|
||||
mod->charges = 0;
|
||||
mod->charges = m_procCharges;
|
||||
|
||||
m_spellmod = mod;
|
||||
}
|
||||
@@ -3859,8 +3848,7 @@ void Aura::HandleAuraProcTriggerSpell(bool apply, bool Real)
|
||||
switch (GetId())
|
||||
{
|
||||
case 28200: // Ascendance (Talisman of Ascendance trinket)
|
||||
m_procCharges = 6;
|
||||
UpdateAuraCharges();
|
||||
SetAuraCharges(6);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user