*Fix totemic call mana gain
*Fix chimera shot effect with viper sting *Fix charges display *Fix stealth applying while using vanish --HG-- branch : trunk
This commit is contained in:
+1
-1
@@ -18682,7 +18682,7 @@ void Player::SendAurasForTarget(Unit *target)
|
|||||||
// level
|
// level
|
||||||
data << aura->m_auraLevel;
|
data << aura->m_auraLevel;
|
||||||
// charges
|
// charges
|
||||||
data << uint8(aura->GetStackAmount() ? aura->GetStackAmount() : aura->GetAuraCharges());
|
data << uint8(aura->GetStackAmount()>1 ? aura->GetStackAmount() : aura->GetAuraCharges());
|
||||||
|
|
||||||
if(!(aura->m_auraFlags & AFLAG_CASTER))
|
if(!(aura->m_auraFlags & AFLAG_CASTER))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -904,7 +904,7 @@ void Aura::SendAuraUpdate()
|
|||||||
data << uint32(GetId());
|
data << uint32(GetId());
|
||||||
data << uint8(m_auraFlags);
|
data << uint8(m_auraFlags);
|
||||||
data << uint8(m_auraLevel);
|
data << uint8(m_auraLevel);
|
||||||
data << uint8(m_stackAmount ? m_stackAmount : m_procCharges);
|
data << uint8(m_stackAmount>1 ? m_stackAmount : m_procCharges);
|
||||||
|
|
||||||
if(!(m_auraFlags & AFLAG_CASTER))
|
if(!(m_auraFlags & AFLAG_CASTER))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -332,6 +332,7 @@ class TRINITY_DLL_SPEC AuraEffect
|
|||||||
uint32 GetId() const { return m_spellProto->Id; }
|
uint32 GetId() const { return m_spellProto->Id; }
|
||||||
uint32 GetEffIndex() const { return m_effIndex; }
|
uint32 GetEffIndex() const { return m_effIndex; }
|
||||||
int32 GetBasePoints() const { return m_currentBasePoints; }
|
int32 GetBasePoints() const { return m_currentBasePoints; }
|
||||||
|
int32 GetAuraAmplitude(){return m_amplitude;}
|
||||||
void Update(uint32 diff);
|
void Update(uint32 diff);
|
||||||
|
|
||||||
bool IsAreaAura() const { return m_isAreaAura; }
|
bool IsAreaAura() const { return m_isAreaAura; }
|
||||||
|
|||||||
@@ -500,11 +500,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
|
|||||||
{
|
{
|
||||||
damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.08f);
|
damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.08f);
|
||||||
}
|
}
|
||||||
// Faerie Fire (Feral)
|
|
||||||
else if(m_spellInfo->Id == 60089)
|
|
||||||
{
|
|
||||||
damage += int32((m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 5 / 100) + 1);
|
|
||||||
}
|
|
||||||
//Mangle Bonus for the initial damage of Lacerate and Rake
|
//Mangle Bonus for the initial damage of Lacerate and Rake
|
||||||
if((m_spellInfo->SpellFamilyFlags.IsEqual(0x1000,0,0) && m_spellInfo->SpellIconID==494) ||
|
if((m_spellInfo->SpellFamilyFlags.IsEqual(0x1000,0,0) && m_spellInfo->SpellIconID==494) ||
|
||||||
(m_spellInfo->SpellFamilyFlags.IsEqual(0,0x100,0) && m_spellInfo->SpellIconID==2246))
|
(m_spellInfo->SpellFamilyFlags.IsEqual(0,0x100,0) && m_spellInfo->SpellIconID==2246))
|
||||||
@@ -2003,6 +1998,7 @@ void Spell::EffectTriggerSpell(uint32 i)
|
|||||||
|
|
||||||
// get highest rank of the Stealth spell
|
// get highest rank of the Stealth spell
|
||||||
uint32 spellId = 0;
|
uint32 spellId = 0;
|
||||||
|
SpellEntry const *spellInfo;
|
||||||
const PlayerSpellMap& sp_list = ((Player*)m_caster)->GetSpellMap();
|
const PlayerSpellMap& sp_list = ((Player*)m_caster)->GetSpellMap();
|
||||||
for (PlayerSpellMap::const_iterator itr = sp_list.begin(); itr != sp_list.end(); ++itr)
|
for (PlayerSpellMap::const_iterator itr = sp_list.begin(); itr != sp_list.end(); ++itr)
|
||||||
{
|
{
|
||||||
@@ -2010,7 +2006,7 @@ void Spell::EffectTriggerSpell(uint32 i)
|
|||||||
if(!itr->second->active || itr->second->disabled || itr->second->state == PLAYERSPELL_REMOVED)
|
if(!itr->second->active || itr->second->disabled || itr->second->state == PLAYERSPELL_REMOVED)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(itr->first);
|
spellInfo = sSpellStore.LookupEntry(itr->first);
|
||||||
if (!spellInfo)
|
if (!spellInfo)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -2029,7 +2025,8 @@ void Spell::EffectTriggerSpell(uint32 i)
|
|||||||
if(((Player*)m_caster)->HasSpellCooldown(spellId))
|
if(((Player*)m_caster)->HasSpellCooldown(spellId))
|
||||||
((Player*)m_caster)->RemoveSpellCooldown(spellId);
|
((Player*)m_caster)->RemoveSpellCooldown(spellId);
|
||||||
|
|
||||||
m_caster->CastSpell(m_caster, spellId, true);
|
// Push stealth to list because it must be handled after combat remove
|
||||||
|
m_TriggerSpells.push_back(spellInfo);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// just skip
|
// just skip
|
||||||
@@ -4908,8 +4905,14 @@ void Spell::EffectScriptEffect(uint32 effIndex)
|
|||||||
// Viper Sting - Instantly restores mana to you equal to 60% of the total amount drained by your Viper Sting.
|
// Viper Sting - Instantly restores mana to you equal to 60% of the total amount drained by your Viper Sting.
|
||||||
if (familyFlag[1] & 0x00000080)
|
if (familyFlag[1] & 0x00000080)
|
||||||
{
|
{
|
||||||
|
int32 tickCount = (aura->GetAuraMaxDuration() - aura->GetAuraDuration()) / aura->GetPartAura(0)->GetAuraAmplitude();
|
||||||
spellId = 53358; // 53358 Chimera Shot - Viper
|
spellId = 53358; // 53358 Chimera Shot - Viper
|
||||||
basePoint = aura->GetPartAura(0)->GetAmount() * 4 * 60 / 100;
|
// Amount of one aura tick
|
||||||
|
basePoint = aura->GetPartAura(0)->GetAmount() * aura->GetTarget()->GetMaxPower(POWER_MANA) / 100 ;
|
||||||
|
int32 casterBasePoint = aura->GetPartAura(0)->GetAmount() * unitTarget->GetMaxPower(POWER_MANA) / 50 ;
|
||||||
|
if (basePoint > casterBasePoint)
|
||||||
|
basePoint = casterBasePoint;
|
||||||
|
basePoint = basePoint * tickCount * 60 / 100;
|
||||||
}
|
}
|
||||||
// Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute.
|
// Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute.
|
||||||
if (familyFlag[0] & 0x00008000)
|
if (familyFlag[0] & 0x00008000)
|
||||||
@@ -5898,10 +5901,14 @@ void Spell::EffectDestroyAllTotems(uint32 /*i*/)
|
|||||||
uint32 spell_id = totem->GetUInt32Value(UNIT_CREATED_BY_SPELL);
|
uint32 spell_id = totem->GetUInt32Value(UNIT_CREATED_BY_SPELL);
|
||||||
SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell_id);
|
SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell_id);
|
||||||
if(spellInfo)
|
if(spellInfo)
|
||||||
mana += spellInfo->manaCost * damage / 100;
|
{
|
||||||
|
mana += spellInfo->manaCost;
|
||||||
|
mana += spellInfo->ManaCostPercentage * m_caster->GetCreateMana() / 100;
|
||||||
|
}
|
||||||
((Totem*)totem)->UnSummon();
|
((Totem*)totem)->UnSummon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mana = mana * damage / 100;
|
||||||
|
|
||||||
int32 gain = m_caster->ModifyPower(POWER_MANA,int32(mana));
|
int32 gain = m_caster->ModifyPower(POWER_MANA,int32(mana));
|
||||||
m_caster->SendEnergizeSpellLog(m_caster, m_spellInfo->Id, gain, POWER_MANA);
|
m_caster->SendEnergizeSpellLog(m_caster, m_spellInfo->Id, gain, POWER_MANA);
|
||||||
|
|||||||
Reference in New Issue
Block a user