aboutsummaryrefslogtreecommitdiff
path: root/src/game/BattleGroundAV.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/BattleGroundAV.cpp')
-rw-r--r--src/game/BattleGroundAV.cpp120
1 files changed, 120 insertions, 0 deletions
diff --git a/src/game/BattleGroundAV.cpp b/src/game/BattleGroundAV.cpp
new file mode 100644
index 00000000000..78b585be190
--- /dev/null
+++ b/src/game/BattleGroundAV.cpp
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "Object.h"
+#include "Player.h"
+#include "BattleGround.h"
+#include "BattleGroundAV.h"
+#include "Creature.h"
+#include "MapManager.h"
+#include "Language.h"
+
+BattleGroundAV::BattleGroundAV()
+{
+
+}
+
+BattleGroundAV::~BattleGroundAV()
+{
+
+}
+
+void BattleGroundAV::Update(time_t diff)
+{
+ BattleGround::Update(diff);
+}
+
+void BattleGroundAV::AddPlayer(Player *plr)
+{
+ BattleGround::AddPlayer(plr);
+ //create score and add it to map, default values are set in constructor
+ BattleGroundAVScore* sc = new BattleGroundAVScore;
+
+ m_PlayerScores[plr->GetGUID()] = sc;
+}
+
+void BattleGroundAV::RemovePlayer(Player* /*plr*/,uint64 /*guid*/)
+{
+
+}
+
+void BattleGroundAV::HandleAreaTrigger(Player *Source, uint32 Trigger)
+{
+ // this is wrong way to implement these things. On official it done by gameobject spell cast.
+ if(GetStatus() != STATUS_IN_PROGRESS)
+ return;
+
+ uint32 SpellId = 0;
+ switch(Trigger)
+ {
+ case 95:
+ case 2606:
+ case 2608:
+ case 3326:
+ case 3327:
+ case 3328:
+ case 3329:
+ case 3330:
+ case 3331:
+ break;
+ default:
+ sLog.outError("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger);
+ Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger);
+ break;
+ }
+
+ if(SpellId)
+ Source->CastSpell(Source, SpellId, true);
+}
+
+void BattleGroundAV::UpdatePlayerScore(Player* Source, uint32 type, uint32 value)
+{
+
+ std::map<uint64, BattleGroundScore*>::iterator itr = m_PlayerScores.find(Source->GetGUID());
+
+ if(itr == m_PlayerScores.end()) // player not found...
+ return;
+
+ switch(type)
+ {
+ case SCORE_GRAVEYARDS_ASSAULTED:
+ ((BattleGroundAVScore*)itr->second)->GraveyardsAssaulted += value;
+ break;
+ case SCORE_GRAVEYARDS_DEFENDED:
+ ((BattleGroundAVScore*)itr->second)->GraveyardsDefended += value;
+ break;
+ case SCORE_TOWERS_ASSAULTED:
+ ((BattleGroundAVScore*)itr->second)->TowersAssaulted += value;
+ break;
+ case SCORE_TOWERS_DEFENDED:
+ ((BattleGroundAVScore*)itr->second)->TowersDefended += value;
+ break;
+ case SCORE_MINES_CAPTURED:
+ ((BattleGroundAVScore*)itr->second)->MinesCaptured += value;
+ break;
+ case SCORE_LEADERS_KILLED:
+ ((BattleGroundAVScore*)itr->second)->LeadersKilled += value;
+ break;
+ case SCORE_SECONDARY_OBJECTIVES:
+ ((BattleGroundAVScore*)itr->second)->SecondaryObjectives += value;
+ break;
+ default:
+ BattleGround::UpdatePlayerScore(Source,type,value);
+ break;
+ }
+}