aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/World
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/World')
-rwxr-xr-xsrc/server/scripts/World/achievement_scripts.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/server/scripts/World/achievement_scripts.cpp b/src/server/scripts/World/achievement_scripts.cpp
index ed4f404d9be..f26b34e6308 100755
--- a/src/server/scripts/World/achievement_scripts.cpp
+++ b/src/server/scripts/World/achievement_scripts.cpp
@@ -167,6 +167,27 @@ class achievement_bg_sa_artillery : public AchievementCriteriaScript
}
};
+class achievement_arena_kills : public AchievementCriteriaScript
+{
+ public:
+ achievement_arena_kills(char const* name, uint8 arenaType) : AchievementCriteriaScript(name),
+ _arenaType(arenaType)
+ {
+ }
+
+ bool OnCheck(Player* source, Unit* /*target*/)
+ {
+ // this checks GetBattleground() for NULL already
+ if (!source->InArena())
+ return false;
+
+ return source->GetBattleground()->GetArenaType() == _arenaType;
+ }
+
+ private:
+ uint8 const _arenaType;
+};
+
void AddSC_achievement_scripts()
{
new achievement_storm_glory();
@@ -177,4 +198,7 @@ void AddSC_achievement_scripts()
new achievement_bg_ic_glaive_grave();
new achievement_bg_ic_mowed_down();
new achievement_bg_sa_artillery();
+ new achievement_arena_kills("achievement_arena_2v2_kills", ARENA_TYPE_2v2);
+ new achievement_arena_kills("achievement_arena_3v3_kills", ARENA_TYPE_3v3);
+ new achievement_arena_kills("achievement_arena_5v5_kills", ARENA_TYPE_5v5);
}