[8519] Use RuneType enum where appropriate and more explicit data for rune init.

This commit is contained in:
VladimirMangos 2009-09-21 12:11:28 +04:00
parent e4ed2ce29c
commit 1c59403b39
6 changed files with 24 additions and 15 deletions

View file

@ -19599,7 +19599,7 @@ void Player::SetTitle(CharTitlesEntry const* title, bool lost)
GetSession()->SendPacket(&data); GetSession()->SendPacket(&data);
} }
void Player::ConvertRune(uint8 index, uint8 newType) void Player::ConvertRune(uint8 index, RuneType newType)
{ {
SetCurrentRune(index, newType); SetCurrentRune(index, newType);
@ -19627,6 +19627,15 @@ void Player::AddRunePower(uint8 index)
GetSession()->SendPacket(&data); GetSession()->SendPacket(&data);
} }
static RuneType runeSlotTypes[MAX_RUNES] = {
/*0*/ RUNE_BLOOD,
/*1*/ RUNE_BLOOD,
/*2*/ RUNE_UNHOLY,
/*3*/ RUNE_UNHOLY,
/*4*/ RUNE_FROST,
/*5*/ RUNE_FROST
};
void Player::InitRunes() void Player::InitRunes()
{ {
if(getClass() != CLASS_DEATH_KNIGHT) if(getClass() != CLASS_DEATH_KNIGHT)
@ -19638,8 +19647,8 @@ void Player::InitRunes()
for(uint32 i = 0; i < MAX_RUNES; ++i) for(uint32 i = 0; i < MAX_RUNES; ++i)
{ {
SetBaseRune(i, i / 2); // init base types SetBaseRune(i, runeSlotTypes[i]); // init base types
SetCurrentRune(i, i / 2); // init current types SetCurrentRune(i, runeSlotTypes[i]); // init current types
SetRuneCooldown(i, 0); // reset cooldowns SetRuneCooldown(i, 0); // reset cooldowns
m_runes->SetRuneState(i); m_runes->SetRuneState(i);
} }

View file

@ -2206,13 +2206,13 @@ class MANGOS_DLL_SPEC Player : public Unit
DeclinedName const* GetDeclinedNames() const { return m_declinedname; } DeclinedName const* GetDeclinedNames() const { return m_declinedname; }
uint8 GetRunesState() const { return m_runes->runeState; } uint8 GetRunesState() const { return m_runes->runeState; }
uint8 GetBaseRune(uint8 index) const { return m_runes->runes[index].BaseRune; } RuneType GetBaseRune(uint8 index) const { return RuneType(m_runes->runes[index].BaseRune); }
uint8 GetCurrentRune(uint8 index) const { return m_runes->runes[index].CurrentRune; } RuneType GetCurrentRune(uint8 index) const { return RuneType(m_runes->runes[index].CurrentRune); }
uint16 GetRuneCooldown(uint8 index) const { return m_runes->runes[index].Cooldown; } uint16 GetRuneCooldown(uint8 index) const { return m_runes->runes[index].Cooldown; }
void SetBaseRune(uint8 index, uint8 baseRune) { m_runes->runes[index].BaseRune = baseRune; } void SetBaseRune(uint8 index, RuneType baseRune) { m_runes->runes[index].BaseRune = baseRune; }
void SetCurrentRune(uint8 index, uint8 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, uint8 newType); void ConvertRune(uint8 index, RuneType newType);
void ResyncRunes(uint8 count); void ResyncRunes(uint8 count);
void AddRunePower(uint8 index); void AddRunePower(uint8 index);
void InitRunes(); void InitRunes();

View file

@ -3540,7 +3540,7 @@ SpellCastResult Spell::CheckRuneCost(uint32 runeCostID)
for(uint32 i = 0; i < MAX_RUNES; ++i) for(uint32 i = 0; i < MAX_RUNES; ++i)
{ {
uint8 rune = plr->GetCurrentRune(i); RuneType rune = plr->GetCurrentRune(i);
if((plr->GetRuneCooldown(i) == 0) && (runeCost[rune] > 0)) if((plr->GetRuneCooldown(i) == 0) && (runeCost[rune] > 0))
runeCost[rune]--; runeCost[rune]--;
} }
@ -3583,7 +3583,7 @@ void Spell::TakeRunePower()
for(uint32 i = 0; i < MAX_RUNES; ++i) for(uint32 i = 0; i < MAX_RUNES; ++i)
{ {
uint8 rune = plr->GetCurrentRune(i); RuneType rune = plr->GetCurrentRune(i);
if((plr->GetRuneCooldown(i) == 0) && (runeCost[rune] > 0)) if((plr->GetRuneCooldown(i) == 0) && (runeCost[rune] > 0))
{ {
plr->SetRuneCooldown(i, RUNE_COOLDOWN); // 5*2=10 sec plr->SetRuneCooldown(i, RUNE_COOLDOWN); // 5*2=10 sec
@ -3597,7 +3597,7 @@ void Spell::TakeRunePower()
{ {
for(uint32 i = 0; i < MAX_RUNES; ++i) for(uint32 i = 0; i < MAX_RUNES; ++i)
{ {
uint8 rune = plr->GetCurrentRune(i); RuneType rune = plr->GetCurrentRune(i);
if((plr->GetRuneCooldown(i) == 0) && (rune == RUNE_DEATH)) if((plr->GetRuneCooldown(i) == 0) && (rune == RUNE_DEATH))
{ {
plr->SetRuneCooldown(i, RUNE_COOLDOWN); // 5*2=10 sec plr->SetRuneCooldown(i, RUNE_COOLDOWN); // 5*2=10 sec

View file

@ -7280,13 +7280,13 @@ void Aura::HandleAuraConvertRune(bool apply, bool Real)
{ {
if(!plr->GetRuneCooldown(i)) if(!plr->GetRuneCooldown(i))
{ {
plr->ConvertRune(i, GetSpellProto()->EffectMiscValueB[m_effIndex]); plr->ConvertRune(i, RuneType(GetSpellProto()->EffectMiscValueB[m_effIndex]));
break; break;
} }
} }
else else
{ {
if(plr->GetCurrentRune(i) == GetSpellProto()->EffectMiscValueB[m_effIndex]) if(plr->GetCurrentRune(i) == RuneType(GetSpellProto()->EffectMiscValueB[m_effIndex]))
{ {
plr->ConvertRune(i, plr->GetBaseRune(i)); plr->ConvertRune(i, plr->GetBaseRune(i));
break; break;

View file

@ -6881,7 +6881,7 @@ void Spell::EffectActivateRune(uint32 eff_idx)
for(uint32 j = 0; j < MAX_RUNES; ++j) for(uint32 j = 0; j < MAX_RUNES; ++j)
{ {
if(plr->GetRuneCooldown(j) && plr->GetCurrentRune(j) == m_spellInfo->EffectMiscValue[eff_idx]) if(plr->GetRuneCooldown(j) && plr->GetCurrentRune(j) == RuneType(m_spellInfo->EffectMiscValue[eff_idx]))
{ {
plr->SetRuneCooldown(j, 0); plr->SetRuneCooldown(j, 0);
} }

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 "8518" #define REVISION_NR "8519"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__