mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
[10546] Fixed EffectActivateRune activate only expected runes amount of some rune type.
This commit is contained in:
parent
276afc3cfb
commit
b236e83e70
5 changed files with 23 additions and 13 deletions
|
|
@ -20984,11 +20984,23 @@ void Player::ConvertRune(uint8 index, RuneType newType)
|
||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::ResyncRunes(uint8 count)
|
void Player::ActivateRunes(RuneType type, uint32 count)
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_RESYNC_RUNES, 4 + count * 2);
|
for(uint32 j = 0; count > 0 && j < MAX_RUNES; ++j)
|
||||||
data << uint32(count);
|
{
|
||||||
for(uint32 i = 0; i < count; ++i)
|
if (GetRuneCooldown(j) && GetCurrentRune(j) == type)
|
||||||
|
{
|
||||||
|
SetRuneCooldown(j, 0);
|
||||||
|
--count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::ResyncRunes()
|
||||||
|
{
|
||||||
|
WorldPacket data(SMSG_RESYNC_RUNES, 4 + MAX_RUNES * 2);
|
||||||
|
data << uint32(MAX_RUNES);
|
||||||
|
for(uint32 i = 0; i < MAX_RUNES; ++i)
|
||||||
{
|
{
|
||||||
data << uint8(GetCurrentRune(i)); // rune type
|
data << uint8(GetCurrentRune(i)); // rune type
|
||||||
data << uint8(255 - ((GetRuneCooldown(i) / REGEN_TIME_FULL) * 51)); // passed cooldown time (0-255)
|
data << uint8(255 - ((GetRuneCooldown(i) / REGEN_TIME_FULL) * 51)); // passed cooldown time (0-255)
|
||||||
|
|
|
||||||
|
|
@ -2380,7 +2380,8 @@ 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 ResyncRunes(uint8 count);
|
void ActivateRunes(RuneType type, uint32 count);
|
||||||
|
void ResyncRunes();
|
||||||
void AddRunePower(uint8 index);
|
void AddRunePower(uint8 index);
|
||||||
void InitRunes();
|
void InitRunes();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -334,6 +334,7 @@ class Spell
|
||||||
void EffectKillCredit(SpellEffectIndex eff_idx);
|
void EffectKillCredit(SpellEffectIndex eff_idx);
|
||||||
void EffectQuestFail(SpellEffectIndex eff_idx);
|
void EffectQuestFail(SpellEffectIndex eff_idx);
|
||||||
void EffectActivateRune(SpellEffectIndex eff_idx);
|
void EffectActivateRune(SpellEffectIndex eff_idx);
|
||||||
|
|
||||||
void EffectTeachTaxiNode(SpellEffectIndex eff_idx);
|
void EffectTeachTaxiNode(SpellEffectIndex eff_idx);
|
||||||
void EffectTitanGrip(SpellEffectIndex eff_idx);
|
void EffectTitanGrip(SpellEffectIndex eff_idx);
|
||||||
void EffectEnchantItemPrismatic(SpellEffectIndex eff_idx);
|
void EffectEnchantItemPrismatic(SpellEffectIndex eff_idx);
|
||||||
|
|
|
||||||
|
|
@ -7912,13 +7912,9 @@ void Spell::EffectActivateRune(SpellEffectIndex eff_idx)
|
||||||
if(plr->getClass() != CLASS_DEATH_KNIGHT)
|
if(plr->getClass() != CLASS_DEATH_KNIGHT)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for(uint32 j = 0; j < MAX_RUNES; ++j)
|
int32 count = damage; // max amount of reset runes
|
||||||
{
|
plr->ActivateRunes(RuneType(m_spellInfo->EffectMiscValue[eff_idx]), count);
|
||||||
if(plr->GetRuneCooldown(j) && plr->GetCurrentRune(j) == RuneType(m_spellInfo->EffectMiscValue[eff_idx]))
|
plr->ResyncRunes();
|
||||||
{
|
|
||||||
plr->SetRuneCooldown(j, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectTitanGrip(SpellEffectIndex eff_idx)
|
void Spell::EffectTitanGrip(SpellEffectIndex eff_idx)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "10545"
|
#define REVISION_NR "10546"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue