*Wintergrasp: Changes to HandlePlayerResurrect to cast missing buffs, by Spp

*Wintergrasp: Minor change to CustomHonor to make sure honor is shared by team members, by Spp

--HG--
branch : trunk
This commit is contained in:
tartalo
2009-10-19 21:45:20 +02:00
parent d072fada10
commit d10f09e08f
+34 -9
View File
@@ -367,7 +367,7 @@ void OPvPWintergrasp::ProcessEvent(GameObject *obj, uint32 eventId)
if (state->GetTeam() == getAttackerTeam()) if (state->GetTeam() == getAttackerTeam())
{ {
TeamCastSpell(getAttackerTeam(), -SPELL_TOWER_CONTROL); TeamCastSpell(getAttackerTeam(), -SPELL_TOWER_CONTROL);
uint32 newStack = 3 -m_towerDestroyedCount[getAttackerTeam()]; uint32 newStack = 3 - m_towerDestroyedCount[getAttackerTeam()];
if (newStack > 0) if (newStack > 0)
{ {
for (PlayerSet::iterator itr = m_players[getAttackerTeam()].begin(); itr != m_players[getAttackerTeam()].end(); ++itr) for (PlayerSet::iterator itr = m_players[getAttackerTeam()].begin(); itr != m_players[getAttackerTeam()].end(); ++itr)
@@ -786,14 +786,38 @@ void OPvPWintergrasp::HandlePlayerEnterZone(Player * plr, uint32 zone)
// Reapply Tenacity if needed // Reapply Tenacity if needed
void OPvPWintergrasp::HandlePlayerResurrects(Player * plr, uint32 zone) void OPvPWintergrasp::HandlePlayerResurrects(Player * plr, uint32 zone)
{ {
if (isWarTime() && !plr->HasAura(SPELL_TENACITY) && plr->getLevel() > 69 && if (isWarTime())
(plr->GetTeamId() == TEAM_ALLIANCE && m_tenacityStack > 0 ||
plr->GetTeamId() == TEAM_HORDE && m_tenacityStack < 0))
{ {
int32 newStack = m_tenacityStack < 0 ? -m_tenacityStack : m_tenacityStack; if (plr->getLevel() > 69)
if (newStack > 20) {
newStack = 20; // Tenacity
CastTenacity(plr, newStack); if (!plr->HasAura(SPELL_TENACITY) && &&
(plr->GetTeamId() == TEAM_ALLIANCE && m_tenacityStack > 0 ||
plr->GetTeamId() == TEAM_HORDE && m_tenacityStack < 0))
{
int32 newStack = m_tenacityStack < 0 ? -m_tenacityStack : m_tenacityStack;
if (newStack > 20)
newStack = 20;
CastTenacity(plr, newStack);
}
// Tower Control (Attacker only)
if (uint32 newStack = 3 - m_towerDestroyedCount[getAttackerTeam()])
{
if (plr->GetTeamId() == getAttackerTeam())
plr->SetStackAura(SPELL_TOWER_CONTROL, plr, newStack);
}
else // Spell Rullers (Defender only)
{
if (plr->GetTeamId() == getDefenderTeam())
plr->CastSpell(plr, SPELL_RULLERS_OF_WG, true);
}
}
}
else // Essence of Wintergrasp
{
if (plr->GetTeamId() == getDefenderTeam())
plr->CastSpell(plr, SPELL_ESSENCE_OF_WG, true);
} }
OutdoorPvP::HandlePlayerResurrects(plr, zone); OutdoorPvP::HandlePlayerResurrects(plr, zone);
} }
@@ -1110,6 +1134,7 @@ void OPvPWintergrasp::EndBattle()
baseHonor += (m_customHonorReward[DESTROYED_TOWER] * m_towerDestroyedCount[OTHER_TEAM(team)]); baseHonor += (m_customHonorReward[DESTROYED_TOWER] * m_towerDestroyedCount[OTHER_TEAM(team)]);
baseHonor += (m_customHonorReward[INTACT_BUILDING] * intactNum); baseHonor += (m_customHonorReward[INTACT_BUILDING] * intactNum);
baseHonor += (m_customHonorReward[DAMAGED_BUILDING] * damagedNum); baseHonor += (m_customHonorReward[DAMAGED_BUILDING] * damagedNum);
baseHonor /= playersWithRankNum;
} }
// Revive players, remove auras and give rewards // Revive players, remove auras and give rewards
@@ -1165,7 +1190,7 @@ void OPvPWintergrasp::EndBattle()
honor = 0; honor = 0;
} }
} }
(*itr)->RewardHonor(NULL, playersWithRankNum, honor); (*itr)->RewardHonor(NULL, 1, honor);
RewardMarkOfHonor(*itr, marks); RewardMarkOfHonor(*itr, marks);
(*itr)->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, spellRewardId); (*itr)->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, spellRewardId);
} }