BF/Wintergrasp: Now graveyards use db spawned spirits.

This commit is contained in:
Manuel Carrasco
2012-08-20 13:36:37 -04:00
committed by Kandera
parent 82b49c7b84
commit 3478f3e7b7
4 changed files with 99 additions and 32 deletions
+18 -25
View File
@@ -717,32 +717,24 @@ BfGraveYard::BfGraveYard(Battlefield *Bf)
m_ResurrectQueue.clear();
}
void BfGraveYard::Init(uint32 horde_entry, uint32 alliance_entry, float x, float y, float z, float o, TeamId startcontrol, uint32 gy)
void BfGraveYard::Initialize(TeamId startcontrol, uint32 gy)
{
m_ControlTeam = startcontrol;
if (Creature* cre = m_Bf->SpawnCreature(horde_entry, x, y, z, o, TEAM_HORDE))
{
m_SpiritGuide[TEAM_HORDE] = cre;
m_SpiritGuide[TEAM_HORDE]->SetReactState(REACT_PASSIVE);
if (m_ControlTeam == TEAM_ALLIANCE)
m_SpiritGuide[TEAM_HORDE]->SetVisible(false);
}
else
sLog->outError("BfGraveYard::Init can't spawn horde spiritguide %u", horde_entry);
if (Creature* cre = m_Bf->SpawnCreature(alliance_entry, x, y, z, o, TEAM_ALLIANCE))
{
m_SpiritGuide[TEAM_ALLIANCE] = cre;
m_SpiritGuide[TEAM_ALLIANCE]->SetReactState(REACT_PASSIVE);
if (m_ControlTeam == TEAM_HORDE)
m_SpiritGuide[TEAM_ALLIANCE]->SetVisible(false);
}
else
sLog->outError("BfGraveYard::Init can't spawn alliance spiritguide %u", alliance_entry);
m_GraveyardId = gy;
}
void BfGraveYard::SetSpirit(Creature* spirit, TeamId team)
{
if (!spirit)
{
sLog->outError("<Error - Wintergrasp>: Invalid Spirit.");
return;
}
m_SpiritGuide[team] = spirit->GetGUID();
spirit->SetReactState(REACT_PASSIVE);
}
float BfGraveYard::GetDistance(Player *plr)
{
const WorldSafeLocsEntry* ws = sWorldSafeLocsStore.LookupEntry(m_GraveyardId);
@@ -782,8 +774,8 @@ void BfGraveYard::Resurrect()
// Check player isinworld and player is on good graveyard
if (plr->IsInWorld())
if (m_SpiritGuide[m_ControlTeam])
m_SpiritGuide[m_ControlTeam]->CastSpell(m_SpiritGuide[m_ControlTeam], SPELL_SPIRIT_HEAL, true);
if (Unit* spirit = sObjectAccessor->FindUnit(m_SpiritGuide[m_ControlTeam]))
spirit->CastSpell(spirit, SPELL_SPIRIT_HEAL, true);
// Resurect player
plr->CastSpell(plr, SPELL_RESURRECTION_VISUAL, true);
@@ -801,10 +793,11 @@ void BfGraveYard::Resurrect()
void BfGraveYard::ChangeControl(TeamId team)
{
// Guide switching
if (m_SpiritGuide[1 - team])
// Note: Visiblity changes are made by phasing
/*if (m_SpiritGuide[1 - team])
m_SpiritGuide[1 - team]->SetVisible(false);
if (m_SpiritGuide[team])
m_SpiritGuide[team]->SetVisible(true);
m_SpiritGuide[team]->SetVisible(true);*/
m_ControlTeam = team;
// Teleport to other graveyard, player witch were on this graveyard