Some SA fixes by gyullo.

Also added formating fix for BattleGroundSA::EventPlayerUsedGO.

--HG--
branch : trunk
This commit is contained in:
p0wer
2010-03-02 19:44:54 -06:00
parent d3e09cb65f
commit 2942a19592
4 changed files with 53 additions and 28 deletions
+6
View File
@@ -872,6 +872,9 @@ void BattleGround::RewardMark(Player *plr,uint32 count)
case BATTLEGROUND_EY: case BATTLEGROUND_EY:
mark = ITEM_EY_MARK_OF_HONOR; mark = ITEM_EY_MARK_OF_HONOR;
break; break;
case BATTLEGROUND_SA:
mark = ITEM_SA_MARK_OF_HONOR;
break;
default: default:
return; return;
} }
@@ -977,6 +980,9 @@ void BattleGround::RewardQuestComplete(Player *plr)
case BATTLEGROUND_EY: case BATTLEGROUND_EY:
quest = SPELL_EY_QUEST_REWARD; quest = SPELL_EY_QUEST_REWARD;
break; break;
case BATTLEGROUND_SA:
quest = SPELL_SA_QUEST_REWARD;
break;
default: default:
return; return;
} }
+5 -1
View File
@@ -50,6 +50,7 @@ enum BattleGroundQuests
SPELL_AV_QUEST_REWARD = 43475, SPELL_AV_QUEST_REWARD = 43475,
SPELL_AV_QUEST_KILLED_BOSS = 23658, SPELL_AV_QUEST_KILLED_BOSS = 23658,
SPELL_EY_QUEST_REWARD = 43477, SPELL_EY_QUEST_REWARD = 43477,
SPELL_SA_QUEST_REWARD = 61213,
SPELL_AB_QUEST_REWARD_4_BASES = 24061, SPELL_AB_QUEST_REWARD_4_BASES = 24061,
SPELL_AB_QUEST_REWARD_5_BASES = 24064 SPELL_AB_QUEST_REWARD_5_BASES = 24064
}; };
@@ -62,10 +63,13 @@ enum BattleGroundMarks
SPELL_AB_MARK_WINNER = 24953, SPELL_AB_MARK_WINNER = 24953,
SPELL_AV_MARK_LOSER = 24954, SPELL_AV_MARK_LOSER = 24954,
SPELL_AV_MARK_WINNER = 24955, SPELL_AV_MARK_WINNER = 24955,
SPELL_SA_MARK_WINNER = 61160,
SPELL_SA_MARK_LOSER = 61159,
ITEM_AV_MARK_OF_HONOR = 20560, ITEM_AV_MARK_OF_HONOR = 20560,
ITEM_WS_MARK_OF_HONOR = 20558, ITEM_WS_MARK_OF_HONOR = 20558,
ITEM_AB_MARK_OF_HONOR = 20559, ITEM_AB_MARK_OF_HONOR = 20559,
ITEM_EY_MARK_OF_HONOR = 29024 ITEM_EY_MARK_OF_HONOR = 29024,
ITEM_SA_MARK_OF_HONOR = 42425
}; };
enum BattleGroundMarksCount enum BattleGroundMarksCount
+40 -27
View File
@@ -634,36 +634,33 @@ void BattleGroundSA::CaptureGraveyard(BG_SA_Graveyards i)
void BattleGroundSA::EventPlayerUsedGO(Player* Source, GameObject* object) void BattleGroundSA::EventPlayerUsedGO(Player* Source, GameObject* object)
{ {
if(object->GetEntry() == BG_SA_ObjEntries[BG_SA_TITAN_RELIC])
if(object->GetEntry() == BG_SA_ObjEntries[BG_SA_TITAN_RELIC])
{ {
if(Source->GetTeamId() == attackers) if(Source->GetTeamId() == attackers)
{ {
if(status == BG_SA_ROUND_ONE)
if(status == BG_SA_ROUND_ONE) {
{ RoundScores[0].winner = attackers;
RoundScores[0].winner = attackers; RoundScores[0].time = TotalTime;
RoundScores[0].time = TotalTime; attackers = (attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE;
attackers = (attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE; status = BG_SA_SECOND_WARMUP;
status = BG_SA_SECOND_WARMUP; TotalTime = 0;
TotalTime = 0; ToggleTimer();
ToggleTimer(); ResetObjs();
ResetObjs(); }
else if(status == BG_SA_ROUND_TWO)
{
RoundScores[1].winner = attackers;
RoundScores[1].time = TotalTime;ToggleTimer();
if(RoundScores[0].time == RoundScores[1].time)
EndBattleGround(NULL);
else if(RoundScores[0].time < RoundScores[1].time)
EndBattleGround(RoundScores[0].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE);
else
EndBattleGround(RoundScores[1].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE);
}
} }
else if(status == BG_SA_ROUND_TWO)
{
RoundScores[1].winner = attackers;
RoundScores[1].time = TotalTime;
ToggleTimer();
if(RoundScores[0].time < RoundScores[1].time)
EndBattleGround(RoundScores[0].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE);
else
EndBattleGround(RoundScores[1].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE);
}
}
} }
} }
void BattleGroundSA::ToggleTimer() void BattleGroundSA::ToggleTimer()
@@ -673,3 +670,19 @@ void BattleGroundSA::ToggleTimer()
UpdateWorldState(BG_SA_ENABLE_TIMER, (TimerEnabled) ? 1 : 0); UpdateWorldState(BG_SA_ENABLE_TIMER, (TimerEnabled) ? 1 : 0);
} }
void BattleGroundSA::EndBattleGround(uint32 winner)
{
//win reward
if (winner == ALLIANCE)
RewardHonorToTeam(GetBonusHonorFromKill(m_HonorWinKills), ALLIANCE);
else if (winner == HORDE)
RewardHonorToTeam(GetBonusHonorFromKill(m_HonorWinKills), HORDE);
//complete map_end rewards (even if no team wins)
RewardHonorToTeam(GetBonusHonorFromKill(m_HonorEndKills), ALLIANCE);
RewardHonorToTeam(GetBonusHonorFromKill(m_HonorEndKills), HORDE);
BattleGround::EndBattleGround(winner);
}
+2
View File
@@ -309,6 +309,8 @@ class BattleGroundSA : public BattleGround
virtual void EventPlayerClickedOnFlag(Player *Source, GameObject* target_obj); virtual void EventPlayerClickedOnFlag(Player *Source, GameObject* target_obj);
virtual void EventPlayerUsedGO(Player* Source, GameObject* object); virtual void EventPlayerUsedGO(Player* Source, GameObject* object);
void EndBattleGround(uint32 winner);
void RemovePlayer(Player *plr,uint64 guid); void RemovePlayer(Player *plr,uint64 guid);
void HandleAreaTrigger(Player *Source, uint32 Trigger); void HandleAreaTrigger(Player *Source, uint32 Trigger);