[10548] Implement missing part spell 47568 functionality.

Original patch prowided by False.Genesis.
This commit is contained in:
VladimirMangos 2010-09-26 23:34:23 +04:00
parent 958c3ac04c
commit 7f49bd357e
4 changed files with 22 additions and 5 deletions

View file

@ -20984,16 +20984,20 @@ void Player::ConvertRune(uint8 index, RuneType newType)
GetSession()->SendPacket(&data); GetSession()->SendPacket(&data);
} }
void Player::ActivateRunes(RuneType type, uint32 count) bool Player::ActivateRunes(RuneType type, uint32 count)
{ {
bool modify = false;
for(uint32 j = 0; count > 0 && j < MAX_RUNES; ++j) for(uint32 j = 0; count > 0 && j < MAX_RUNES; ++j)
{ {
if (GetRuneCooldown(j) && GetCurrentRune(j) == type) if (GetRuneCooldown(j) && GetCurrentRune(j) == type)
{ {
SetRuneCooldown(j, 0); SetRuneCooldown(j, 0);
--count; --count;
modify = true;
} }
} }
return modify;
} }
void Player::ResyncRunes() void Player::ResyncRunes()

View file

@ -2380,7 +2380,7 @@ class MANGOS_DLL_SPEC Player : public Unit
void SetCurrentRune(uint8 index, RuneType currentRune) { m_runes->runes[index].CurrentRune = currentRune; } void SetCurrentRune(uint8 index, RuneType currentRune) { m_runes->runes[index].CurrentRune = currentRune; }
void SetRuneCooldown(uint8 index, uint16 cooldown) { m_runes->runes[index].Cooldown = cooldown; m_runes->SetRuneState(index, (cooldown == 0) ? true : false); } void SetRuneCooldown(uint8 index, uint16 cooldown) { m_runes->runes[index].Cooldown = cooldown; m_runes->SetRuneState(index, (cooldown == 0) ? true : false); }
void ConvertRune(uint8 index, RuneType newType); void ConvertRune(uint8 index, RuneType newType);
void ActivateRunes(RuneType type, uint32 count); bool ActivateRunes(RuneType type, uint32 count);
void ResyncRunes(); void ResyncRunes();
void AddRunePower(uint8 index); void AddRunePower(uint8 index);
void InitRunes(); void InitRunes();

View file

@ -2731,6 +2731,19 @@ void Spell::EffectTriggerSpell(SpellEffectIndex effIndex)
pet->CastSpell(pet, 28305, true); pet->CastSpell(pet, 28305, true);
return; return;
} }
// Empower Rune Weapon
case 53258:
{
// remove cooldown of frost/death, undead/blood activated in main spell
if (unitTarget->GetTypeId() == TYPEID_PLAYER)
{
bool res1 = ((Player*)unitTarget)->ActivateRunes(RUNE_FROST, 2);
bool res2 = ((Player*)unitTarget)->ActivateRunes(RUNE_DEATH, 2);
if (res1 || res2)
((Player*)unitTarget)->ResyncRunes();
}
return;
}
} }
// normal case // normal case
@ -7913,8 +7926,8 @@ void Spell::EffectActivateRune(SpellEffectIndex eff_idx)
return; return;
int32 count = damage; // max amount of reset runes int32 count = damage; // max amount of reset runes
plr->ActivateRunes(RuneType(m_spellInfo->EffectMiscValue[eff_idx]), count); if (plr->ActivateRunes(RuneType(m_spellInfo->EffectMiscValue[eff_idx]), count))
plr->ResyncRunes(); plr->ResyncRunes();
} }
void Spell::EffectTitanGrip(SpellEffectIndex eff_idx) void Spell::EffectTitanGrip(SpellEffectIndex eff_idx)

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "10547" #define REVISION_NR "10548"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__