aboutsummaryrefslogtreecommitdiff
path: root/src/game/Wintergrasp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Wintergrasp.cpp')
-rw-r--r--src/game/Wintergrasp.cpp45
1 files changed, 38 insertions, 7 deletions
diff --git a/src/game/Wintergrasp.cpp b/src/game/Wintergrasp.cpp
index 8f23f799faa..d762b5bfed2 100644
--- a/src/game/Wintergrasp.cpp
+++ b/src/game/Wintergrasp.cpp
@@ -292,6 +292,10 @@ bool OPvPWintergrasp::SetupOutdoorPvP()
m_wartime = false;
m_timer = sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_START_TIME) * MINUTE * IN_MILISECONDS;
+ if(sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_CUSTOM_HONOR))
+ for(int i = 0; i < WG_REWARD_EVENT_MAX; ++i)
+ m_customHonorReward[i] = sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_CUSTOM_HONOR_0 + i);
+
RegisterZone(ZONE_WINTERGRASP);
return true;
}
@@ -317,7 +321,16 @@ void OPvPWintergrasp::ProcessEvent(GameObject *obj, uint32 eventId)
state->damageState = DAMAGE_DAMAGED;
if(state->type == BUILDING_TOWER)
- LieutenantCastSpell(m_defender, SPELL_DAMAGED_TOWER);
+ {
+ if(sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_CUSTOM_HONOR))
+ {
+ for(PlayerSet::const_iterator itr = m_players[m_defender].begin(); itr != m_players[m_defender].end(); ++itr)
+ if((*itr)->HasAura(SPELL_LIEUTENANT) && ((*itr)->getLevel() > 69))
+ (*itr)->ModifyHonorPoints(m_customHonorReward[DAMAGED_TOWER]);
+ }
+ else
+ LieutenantCastSpell(m_defender, SPELL_DAMAGED_TOWER);
+ }
}
else if(eventId == obj->GetGOInfo()->building.destroyedEvent)
{
@@ -336,7 +349,14 @@ void OPvPWintergrasp::ProcessEvent(GameObject *obj, uint32 eventId)
else
{
--m_towerCount;
- LieutenantCastSpell(m_defender, SPELL_DESTROYED_TOWER);
+ if(sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_CUSTOM_HONOR))
+ {
+ for(PlayerSet::const_iterator itr = m_players[m_defender].begin(); itr != m_players[m_defender].end(); ++itr)
+ if((*itr)->HasAura(SPELL_LIEUTENANT) && ((*itr)->getLevel() > 69))
+ (*itr)->ModifyHonorPoints(m_customHonorReward[DESTROYED_TOWER]);
+ }
+ else
+ LieutenantCastSpell(m_defender, SPELL_DESTROYED_TOWER);
}
}
}
@@ -901,11 +921,22 @@ void OPvPWintergrasp::EndBattle()
{
if((*itr)->HasAura(SPELL_LIEUTENANT))
{
- (*itr)->CastSpell(*itr, team == m_defender ? SPELL_VICTORY_REWARD : SPELL_DEFEAT_REWARD, true);
- for(uint32 i = 0; i < intactNum; ++i)
- (*itr)->CastSpell(*itr, SPELL_INTACT_BUILDING, true);
- for(uint32 i = 0; i < damagedNum; ++i)
- (*itr)->CastSpell(*itr, SPELL_DAMAGED_BUILDING, true);
+ if(!sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_CUSTOM_HONOR))
+ {
+ (*itr)->CastSpell(*itr, team == m_defender ? SPELL_VICTORY_REWARD : SPELL_DEFEAT_REWARD, true);
+ for(uint32 i = 0; i < intactNum; ++i)
+ (*itr)->CastSpell(*itr, SPELL_INTACT_BUILDING, true);
+ for(uint32 i = 0; i < damagedNum; ++i)
+ (*itr)->CastSpell(*itr, SPELL_DAMAGED_BUILDING, true);
+ }
+ else if(sWorld.getConfig(CONFIG_OUTDOORPVP_WINTERGRASP_CUSTOM_HONOR))
+ {
+ (*itr)->ModifyHonorPoints( team == m_defender ? m_customHonorReward[WIN_BATTLE] : m_customHonorReward[LOSE_BATTLE] );
+ for(uint32 i = 0; i < intactNum; ++i)
+ (*itr)->ModifyHonorPoints(m_customHonorReward[INTACT_BUILDING]);
+ for(uint32 i = 0; i < damagedNum; ++i)
+ (*itr)->ModifyHonorPoints(m_customHonorReward[DAMAGED_BUILDING]);
+ }
}
REMOVE_RANK_AURAS(*itr);
}