aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRat <none@none>2010-06-03 16:24:10 +0200
committerRat <none@none>2010-06-03 16:24:10 +0200
commit2e5edd301b5d1800213f0ceafda5af5dd4e2c0f6 (patch)
treea29063ae4bddff713dc3eca3321454157bf98145
parent227cd4d9936c3367b55691d7136d3d862dec6d38 (diff)
dismount when entering a battleground
use 80 for max level honor bonus calculation fixed SOTA second round timer by Gyullo --HG-- branch : trunk
-rw-r--r--src/game/BattleGround.cpp5
-rw-r--r--src/game/BattleGroundSA.cpp14
-rw-r--r--src/game/BattleGroundSA.h1
3 files changed, 15 insertions, 5 deletions
diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp
index 5fd7e7a3f6b..5bfe2e139b6 100644
--- a/src/game/BattleGround.cpp
+++ b/src/game/BattleGround.cpp
@@ -856,7 +856,8 @@ void BattleGround::EndBattleGround(uint32 winner)
uint32 BattleGround::GetBonusHonorFromKill(uint32 kills) const
{
//variable kills means how many honorable kills you scored (so we need kills * honor_for_one_kill)
- return Trinity::Honor::hk_honor_at_level(GetMaxLevel(), kills);
+ uint32 maxLevel = (GetMaxLevel()<80)?GetMaxLevel():80;
+ return Trinity::Honor::hk_honor_at_level(maxLevel, kills);
}
uint32 BattleGround::GetBattlemasterEntry() const
@@ -1080,6 +1081,8 @@ void BattleGround::AddPlayer(Player *plr)
sBattleGroundMgr.BuildBattleGroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType());
plr->GetSession()->SendPacket(&status);
+ plr->RemoveAurasByType(SPELL_AURA_MOUNTED);
+
// add arena specific auras
if (isArena())
{
diff --git a/src/game/BattleGroundSA.cpp b/src/game/BattleGroundSA.cpp
index 48595dcfa98..429ec07ff83 100644
--- a/src/game/BattleGroundSA.cpp
+++ b/src/game/BattleGroundSA.cpp
@@ -253,6 +253,7 @@ void BattleGroundSA::Update(uint32 diff)
if (status == BG_SA_WARMUP )
{
+ BG_SA_ENDROUNDTIME = BG_SA_ROUNDLENGTH;
if (TotalTime >= BG_SA_WARMUPLENGTH)
{
TotalTime = 0;
@@ -266,6 +267,11 @@ void BattleGroundSA::Update(uint32 diff)
}
else if (status == BG_SA_SECOND_WARMUP)
{
+ if (RoundScores[0].time<BG_SA_ROUNDLENGTH)
+ BG_SA_ENDROUNDTIME = RoundScores[0].time;
+ else
+ BG_SA_ENDROUNDTIME = BG_SA_ROUNDLENGTH;
+
if (TotalTime >= 60000)
{
SendWarningToAll(LANG_BG_SA_HAS_BEGUN);
@@ -291,11 +297,11 @@ void BattleGroundSA::Update(uint32 diff)
{
if (TotalTime >= BG_SA_ROUNDLENGTH)
{
+ RoundScores[0].winner = attackers;
RoundScores[0].time = BG_SA_ROUNDLENGTH;
TotalTime = 0;
status = BG_SA_SECOND_WARMUP;
- attackers = (attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE;
- RoundScores[0].winner = attackers;
+ attackers = (attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE;
status = BG_SA_SECOND_WARMUP;
ToggleTimer();
ResetObjs();
@@ -304,7 +310,7 @@ void BattleGroundSA::Update(uint32 diff)
}
else if (status == BG_SA_ROUND_TWO)
{
- if (TotalTime >= BG_SA_ROUNDLENGTH)
+ if (TotalTime >= BG_SA_ENDROUNDTIME)
{
RoundScores[1].time = BG_SA_ROUNDLENGTH;
RoundScores[1].winner = (attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE;
@@ -627,7 +633,7 @@ WorldSafeLocsEntry const* BattleGroundSA::GetClosestGraveYard(Player* player)
void BattleGroundSA::SendTime()
{
- uint32 end_of_round = (BG_SA_ROUNDLENGTH - TotalTime);
+ uint32 end_of_round = (BG_SA_ENDROUNDTIME - TotalTime);
UpdateWorldState(BG_SA_TIMER_MINS, end_of_round/60000);
UpdateWorldState(BG_SA_TIMER_SEC_TENS, (end_of_round%60000)/10000);
UpdateWorldState(BG_SA_TIMER_SEC_DECS, ((end_of_round%60000)%10000)/1000);
diff --git a/src/game/BattleGroundSA.h b/src/game/BattleGroundSA.h
index 85f94c01a36..760be3ca02e 100644
--- a/src/game/BattleGroundSA.h
+++ b/src/game/BattleGroundSA.h
@@ -369,6 +369,7 @@ class BattleGroundSA : public BattleGround
void UpdateDemolisherSpawns();
TeamId attackers;
uint32 TotalTime;
+ uint32 BG_SA_ENDROUNDTIME;
bool ShipsStarted;
BG_SA_GateState GateStatus[6];
BG_SA_Status status;