*Format BattleGroundSA.cpp

*Check if game is still in progress before awarding teams
*Resurrect and refresh players at round end

--HG--
branch : trunk
This commit is contained in:
thenecromancer
2010-03-07 14:16:55 +01:00
parent 0c11fcee1b
commit 34bc948f37
+25 -36
View File
@@ -38,7 +38,6 @@ BattleGroundSA::BattleGroundSA()
BattleGroundSA::~BattleGroundSA() BattleGroundSA::~BattleGroundSA()
{ {
} }
void BattleGroundSA::Reset() void BattleGroundSA::Reset()
@@ -46,22 +45,18 @@ void BattleGroundSA::Reset()
TotalTime = 0; TotalTime = 0;
attackers = ( (urand(0,1)) ? TEAM_ALLIANCE : TEAM_HORDE); attackers = ( (urand(0,1)) ? TEAM_ALLIANCE : TEAM_HORDE);
for(uint8 i = 0; i <= 5; i++) for(uint8 i = 0; i <= 5; i++)
{
GateStatus[i] = BG_SA_GATE_OK; GateStatus[i] = BG_SA_GATE_OK;
}
ShipsStarted = false; ShipsStarted = false;
status = BG_SA_WARMUP; status = BG_SA_WARMUP;
} }
bool BattleGroundSA::SetupBattleGround() bool BattleGroundSA::SetupBattleGround()
{ {
return ResetObjs(); return ResetObjs();
} }
bool BattleGroundSA::ResetObjs() bool BattleGroundSA::ResetObjs()
{ {
uint32 atF = BG_SA_Factions[attackers]; uint32 atF = BG_SA_Factions[attackers];
uint32 defF = BG_SA_Factions[attackers ? TEAM_ALLIANCE : TEAM_HORDE]; uint32 defF = BG_SA_Factions[attackers ? TEAM_ALLIANCE : TEAM_HORDE];
@@ -85,7 +80,6 @@ bool BattleGroundSA::ResetObjs()
BG_SA_ObjSpawnlocs[i][2],BG_SA_ObjSpawnlocs[i][3], BG_SA_ObjSpawnlocs[i][2],BG_SA_ObjSpawnlocs[i][3],
0,0,0,0,RESPAWN_ONE_DAY)) 0,0,0,0,RESPAWN_ONE_DAY))
return false; return false;
} }
GetBGObject(BG_SA_TITAN_RELIC)->SetUInt32Value(GAMEOBJECT_FACTION, defF); GetBGObject(BG_SA_TITAN_RELIC)->SetUInt32Value(GAMEOBJECT_FACTION, defF);
@@ -110,9 +104,7 @@ bool BattleGroundSA::ResetObjs()
} }
for(uint8 i = 0; i <= 5; i++) for(uint8 i = 0; i <= 5; i++)
{
GateStatus[i] = BG_SA_GATE_OK; GateStatus[i] = BG_SA_GATE_OK;
}
// MAD props for Kiper for discovering those values - 4 hours of his work. // MAD props for Kiper for discovering those values - 4 hours of his work.
GetBGObject(BG_SA_BOAT_ONE)->UpdateRotationFields(1.0f, 0.0002f); GetBGObject(BG_SA_BOAT_ONE)->UpdateRotationFields(1.0f, 0.0002f);
@@ -144,11 +136,9 @@ bool BattleGroundSA::ResetObjs()
{ {
GraveyardStatus[i] = ((attackers == TEAM_HORDE )? TEAM_ALLIANCE : TEAM_HORDE); GraveyardStatus[i] = ((attackers == TEAM_HORDE )? TEAM_ALLIANCE : TEAM_HORDE);
if(!AddSpiritGuide(i + BG_SA_MAXNPC, sg->x, sg->y, sg->z, BG_SA_GYOrientation[i], ((attackers == TEAM_HORDE )? ALLIANCE : HORDE) )) if(!AddSpiritGuide(i + BG_SA_MAXNPC, sg->x, sg->y, sg->z, BG_SA_GYOrientation[i], ((attackers == TEAM_HORDE )? ALLIANCE : HORDE) ))
{
sLog.outError("SOTA: couldn't spawn GY: %u",i); sLog.outError("SOTA: couldn't spawn GY: %u",i);
} }
} }
}
//GY capture points //GY capture points
for(uint8 i = BG_SA_CENTRAL_FLAG; i < BG_SA_MAXOBJ; i++) for(uint8 i = BG_SA_CENTRAL_FLAG; i < BG_SA_MAXOBJ; i++)
@@ -181,7 +171,6 @@ bool BattleGroundSA::ResetObjs()
UpdateWorldState(BG_SA_HORDE_DEFENCE_TOKEN,1); UpdateWorldState(BG_SA_HORDE_DEFENCE_TOKEN,1);
UpdateWorldState(BG_SA_ALLIANCE_DEFENCE_TOKEN,0); UpdateWorldState(BG_SA_ALLIANCE_DEFENCE_TOKEN,0);
} }
else else
{ {
@@ -195,7 +184,6 @@ bool BattleGroundSA::ResetObjs()
UpdateWorldState(BG_SA_HORDE_DEFENCE_TOKEN,0); UpdateWorldState(BG_SA_HORDE_DEFENCE_TOKEN,0);
UpdateWorldState(BG_SA_ALLIANCE_DEFENCE_TOKEN,1); UpdateWorldState(BG_SA_ALLIANCE_DEFENCE_TOKEN,1);
} }
UpdateWorldState(BG_SA_PURPLE_GATEWS, 1); UpdateWorldState(BG_SA_PURPLE_GATEWS, 1);
@@ -206,7 +194,6 @@ bool BattleGroundSA::ResetObjs()
UpdateWorldState(BG_SA_ANCIENT_GATEWS, 1); UpdateWorldState(BG_SA_ANCIENT_GATEWS, 1);
TeleportPlayers(); TeleportPlayers();
return true; return true;
} }
@@ -214,6 +201,7 @@ void BattleGroundSA::StartShips()
{ {
if(ShipsStarted) if(ShipsStarted)
return; return;
DoorOpen(BG_SA_BOAT_ONE); DoorOpen(BG_SA_BOAT_ONE);
DoorOpen(BG_SA_BOAT_TWO); DoorOpen(BG_SA_BOAT_TWO);
@@ -234,7 +222,6 @@ void BattleGroundSA::StartShips()
} }
} }
} }
ShipsStarted = true; ShipsStarted = true;
} }
@@ -253,10 +240,11 @@ void BattleGroundSA::Update(uint32 diff)
} }
if(TotalTime >= BG_SA_BOAT_START) if(TotalTime >= BG_SA_BOAT_START)
StartShips(); StartShips();
return; return;
} }
else if(status == BG_SA_ROUND_ONE) else if (GetStatus() == STATUS_IN_PROGRESS)
{
if(status == BG_SA_ROUND_ONE)
{ {
if(TotalTime >= BG_SA_ROUNDLENGTH) if(TotalTime >= BG_SA_ROUNDLENGTH)
{ {
@@ -284,14 +272,13 @@ void BattleGroundSA::Update(uint32 diff)
EndBattleGround(RoundScores[0].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE); EndBattleGround(RoundScores[0].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE);
else else
EndBattleGround(RoundScores[1].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE); EndBattleGround(RoundScores[1].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE);
return; return;
} }
} }
if(status == BG_SA_ROUND_ONE || status == BG_SA_ROUND_TWO) if(status == BG_SA_ROUND_ONE || status == BG_SA_ROUND_TWO)
SendTime(); SendTime();
} }
}
void BattleGroundSA::StartingEventCloseDoors() void BattleGroundSA::StartingEventCloseDoors()
{ {
@@ -348,6 +335,7 @@ void BattleGroundSA::AddPlayer(Player *plr)
BattleGroundSAScore* sc = new BattleGroundSAScore; BattleGroundSAScore* sc = new BattleGroundSAScore;
if(!ShipsStarted) if(!ShipsStarted)
{
if(plr->GetTeamId() == attackers) if(plr->GetTeamId() == attackers)
{ {
plr->CastSpell(plr,12438,true);//Without this player falls before boat loads... plr->CastSpell(plr,12438,true);//Without this player falls before boat loads...
@@ -357,8 +345,10 @@ void BattleGroundSA::AddPlayer(Player *plr)
else else
plr->TeleportTo(607, 2577.003f, 980.261f, 50.0f, 0.807f, 0); plr->TeleportTo(607, 2577.003f, 980.261f, 50.0f, 0.807f, 0);
}else }
else
plr->TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f, 0); plr->TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f, 0);
}
else else
{ {
if(plr->GetTeamId() == attackers) if(plr->GetTeamId() == attackers)
@@ -372,7 +362,6 @@ void BattleGroundSA::AddPlayer(Player *plr)
void BattleGroundSA::RemovePlayer(Player* /*plr*/,uint64 /*guid*/) void BattleGroundSA::RemovePlayer(Player* /*plr*/,uint64 /*guid*/)
{ {
} }
void BattleGroundSA::HandleAreaTrigger(Player * /*Source*/, uint32 /*Trigger*/) void BattleGroundSA::HandleAreaTrigger(Player * /*Source*/, uint32 /*Trigger*/)
@@ -384,7 +373,6 @@ void BattleGroundSA::HandleAreaTrigger(Player * /*Source*/, uint32 /*Trigger*/)
void BattleGroundSA::UpdatePlayerScore(Player* Source, uint32 type, uint32 value) void BattleGroundSA::UpdatePlayerScore(Player* Source, uint32 type, uint32 value)
{ {
BattleGroundScoreMap::iterator itr = m_PlayerScores.find(Source->GetGUID()); BattleGroundScoreMap::iterator itr = m_PlayerScores.find(Source->GetGUID());
if(itr == m_PlayerScores.end()) // player not found... if(itr == m_PlayerScores.end()) // player not found...
return; return;
@@ -403,6 +391,19 @@ void BattleGroundSA::TeleportPlayers()
{ {
if(Player *plr = objmgr.GetPlayer(itr->first)) if(Player *plr = objmgr.GetPlayer(itr->first))
{ {
// should remove spirit of redemption
if(plr->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))
plr->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);
if (!plr->isAlive())
{
plr->ResurrectPlayer(1.0f);
plr->SpawnCorpseBones();
}
plr->SetHealth(plr->GetMaxHealth());
plr->SetPower(POWER_MANA, plr->GetMaxPower(POWER_MANA));
plr->CombatStopWithPets(true);
if(plr->GetTeamId() == attackers) if(plr->GetTeamId() == attackers)
{ {
@@ -415,14 +416,12 @@ void BattleGroundSA::TeleportPlayers()
} }
else else
plr->TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f, 0); plr->TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f, 0);
} }
} }
} }
void BattleGroundSA::EventPlayerDamagedGO(Player* plr, GameObject* go, uint32 event) void BattleGroundSA::EventPlayerDamagedGO(Player* plr, GameObject* go, uint32 event)
{ {
switch(event) switch(event)
{ {
case 19046: //Green gate destroyed case 19046: //Green gate destroyed
@@ -446,7 +445,6 @@ void BattleGroundSA::EventPlayerDamagedGO(Player* plr, GameObject* go, uint32 ev
default: default:
return; return;
} }
} }
void BattleGroundSA::HandleKillUnit(Creature* unit, Player* killer) void BattleGroundSA::HandleKillUnit(Creature* unit, Player* killer)
@@ -456,7 +454,6 @@ void BattleGroundSA::HandleKillUnit(Creature* unit, Player* killer)
if(unit->GetEntry() == 28781) //Demolisher if(unit->GetEntry() == 28781) //Demolisher
UpdatePlayerScore(killer, SCORE_DESTROYED_DEMOLISHER, 1); UpdatePlayerScore(killer, SCORE_DESTROYED_DEMOLISHER, 1);
} }
/* /*
@@ -469,17 +466,16 @@ void BattleGroundSA::OverrideGunFaction()
return; return;
for(uint8 i = BG_SA_GUN_1; i <= BG_SA_GUN_10;i++) for(uint8 i = BG_SA_GUN_1; i <= BG_SA_GUN_10;i++)
if(Creature* gun = GetBGCreature(i))
{ {
if(Creature* gun = GetBGCreature(i))
gun->setFaction(BG_SA_Factions[attackers? TEAM_ALLIANCE : TEAM_HORDE]); gun->setFaction(BG_SA_Factions[attackers? TEAM_ALLIANCE : TEAM_HORDE]);
} }
for(uint8 i = BG_SA_DEMOLISHER_1; i <= BG_SA_DEMOLISHER_4;i++) for(uint8 i = BG_SA_DEMOLISHER_1; i <= BG_SA_DEMOLISHER_4;i++)
if(Creature* dem = GetBGCreature(i))
{ {
if(Creature* dem = GetBGCreature(i))
dem->setFaction(BG_SA_Factions[attackers]); dem->setFaction(BG_SA_Factions[attackers]);
} }
} }
void BattleGroundSA::DestroyGate(uint32 i, Player* pl) void BattleGroundSA::DestroyGate(uint32 i, Player* pl)
@@ -524,7 +520,6 @@ void BattleGroundSA::DestroyGate(uint32 i, Player* pl)
UpdatePlayerScore(pl,SCORE_DESTROYED_WALL, 1); UpdatePlayerScore(pl,SCORE_DESTROYED_WALL, 1);
} }
} }
} }
WorldSafeLocsEntry const* BattleGroundSA::GetClosestGraveYard(Player* player) WorldSafeLocsEntry const* BattleGroundSA::GetClosestGraveYard(Player* player)
@@ -570,7 +565,6 @@ void BattleGroundSA::SendTime()
void BattleGroundSA::EventPlayerClickedOnFlag(Player *Source, GameObject* target_obj) void BattleGroundSA::EventPlayerClickedOnFlag(Player *Source, GameObject* target_obj)
{ {
switch(target_obj->GetEntry()) switch(target_obj->GetEntry())
{ {
case 191307: case 191307:
@@ -588,12 +582,10 @@ void BattleGroundSA::EventPlayerClickedOnFlag(Player *Source, GameObject* target
default: default:
return; return;
}; };
} }
void BattleGroundSA::CaptureGraveyard(BG_SA_Graveyards i) void BattleGroundSA::CaptureGraveyard(BG_SA_Graveyards i)
{ {
DelCreature(BG_SA_MAXNPC + i); DelCreature(BG_SA_MAXNPC + i);
GraveyardStatus[i] = (GraveyardStatus[i] == TEAM_ALLIANCE? TEAM_HORDE : TEAM_ALLIANCE); GraveyardStatus[i] = (GraveyardStatus[i] == TEAM_ALLIANCE? TEAM_HORDE : TEAM_ALLIANCE);
WorldSafeLocsEntry const *sg = NULL; WorldSafeLocsEntry const *sg = NULL;
@@ -630,8 +622,6 @@ void BattleGroundSA::CaptureGraveyard(BG_SA_Graveyards i)
ASSERT(0); ASSERT(0);
break; break;
}; };
} }
void BattleGroundSA::EventPlayerUsedGO(Player* Source, GameObject* object) void BattleGroundSA::EventPlayerUsedGO(Player* Source, GameObject* object)
@@ -667,10 +657,8 @@ void BattleGroundSA::EventPlayerUsedGO(Player* Source, GameObject* object)
void BattleGroundSA::ToggleTimer() void BattleGroundSA::ToggleTimer()
{ {
TimerEnabled = !TimerEnabled; TimerEnabled = !TimerEnabled;
UpdateWorldState(BG_SA_ENABLE_TIMER, (TimerEnabled) ? 1 : 0); UpdateWorldState(BG_SA_ENABLE_TIMER, (TimerEnabled) ? 1 : 0);
} }
void BattleGroundSA::EndBattleGround(uint32 winner) void BattleGroundSA::EndBattleGround(uint32 winner)
@@ -688,3 +676,4 @@ void BattleGroundSA::EndBattleGround(uint32 winner)
BattleGround::EndBattleGround(winner); BattleGround::EndBattleGround(winner);
} }