Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
achievement_scripts.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "ScriptMgr.h"
7#include "BattlegroundSA.h"
8#include "BattlegroundIC.h"
9#include "Vehicle.h"
10#include "Player.h"
11#include "Creature.h"
12
14{
15 public:
16 achievement_resilient_victory() : AchievementCriteriaScript("achievement_resilient_victory") { }
17
18 bool OnCheck(Player* source, Unit* target) OVERRIDE
19 {
20 if (Battleground* bg = source->GetBattleground())
21 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_RESILIENT_VICTORY, source, target);
22
23 return false;
24 }
25};
26
28{
29 public:
30 achievement_bg_control_all_nodes() : AchievementCriteriaScript("achievement_bg_control_all_nodes") { }
31
32 bool OnCheck(Player* source, Unit* /*target*/) OVERRIDE
33 {
34 if (Battleground* bg = source->GetBattleground())
35 return bg->IsAllNodesControlledByTeam(source->GetTeam());
36
37 return false;
38 }
39};
40
42{
43 public:
44 achievement_save_the_day() : AchievementCriteriaScript("achievement_save_the_day") { }
45
46 bool OnCheck(Player* source, Unit* target) OVERRIDE
47 {
48 if (Battleground* bg = source->GetBattleground())
49 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_SAVE_THE_DAY, source, target);
50
51 return false;
52 }
53};
54
56{
57 public:
58 achievement_bg_ic_resource_glut() : AchievementCriteriaScript("achievement_bg_ic_resource_glut") { }
59
60 bool OnCheck(Player* source, Unit* /*target*/) OVERRIDE
61 {
62 if (source->HasAura(SPELL_OIL_REFINERY) && source->HasAura(SPELL_QUARRY))
63 return true;
64
65 return false;
66 }
67};
68
70{
71 public:
72 achievement_bg_ic_glaive_grave() : AchievementCriteriaScript("achievement_bg_ic_glaive_grave") { }
73
74 bool OnCheck(Player* source, Unit* /*target*/) OVERRIDE
75 {
76 if (Creature* vehicle = source->GetVehicleCreatureBase())
77 {
78 if (vehicle->GetEntry() == NPC_GLAIVE_THROWER_H || vehicle->GetEntry() == NPC_GLAIVE_THROWER_A)
79 return true;
80 }
81
82 return false;
83 }
84};
85
87{
88 public:
89 achievement_bg_ic_mowed_down() : AchievementCriteriaScript("achievement_bg_ic_mowed_down") { }
90
91 bool OnCheck(Player* source, Unit* /*target*/) OVERRIDE
92 {
93 if (Creature* vehicle = source->GetVehicleCreatureBase())
94 {
95 if (vehicle->GetEntry() == NPC_KEEP_CANNON)
96 return true;
97 }
98
99 return false;
100 }
101};
102
104{
105 public:
106 achievement_bg_sa_artillery() : AchievementCriteriaScript("achievement_bg_sa_artillery") { }
107
108 bool OnCheck(Player* source, Unit* /*target*/) OVERRIDE
109 {
110 if (Creature* vehicle = source->GetVehicleCreatureBase())
111 {
112 if (vehicle->GetEntry() == NPC_ANTI_PERSONNAL_CANNON)
113 return true;
114 }
115
116 return false;
117 }
118};
119
121{
122 public:
123 achievement_arena_kills(char const* name, uint8 arenaType) : AchievementCriteriaScript(name),
124 _arenaType(arenaType)
125 {
126 }
127
128 bool OnCheck(Player* source, Unit* /*target*/) OVERRIDE
129 {
130 // this checks GetBattleground() for NULL already
131 if (!source->InArena())
132 return false;
133
134 return source->GetBattleground()->GetArenaType() == _arenaType;
135 }
136
137 private:
139};
140
142{
143public:
144 achievement_sickly_gazelle() : AchievementCriteriaScript("achievement_sickly_gazelle") { }
145
146 bool OnCheck(Player* /*source*/, Unit* target) OVERRIDE
147 {
148 if (!target)
149 return false;
150
151 if (Player* victim = target->ToPlayer())
152 if (victim->IsMounted())
153 return true;
154
155 return false;
156 }
157};
158
160{
161 public:
162 achievement_everything_counts() : AchievementCriteriaScript("achievement_everything_counts") { }
163
164 bool OnCheck(Player* source, Unit* target) OVERRIDE
165 {
166 if (Battleground* bg = source->GetBattleground())
167 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_EVERYTHING_COUNTS, source, target);
168
169 return false;
170 }
171};
172
174{
175 public:
176 achievement_bg_av_perfection() : AchievementCriteriaScript("achievement_bg_av_perfection") { }
177
178 bool OnCheck(Player* source, Unit* target) OVERRIDE
179 {
180 if (Battleground* bg = source->GetBattleground())
181 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_AV_PERFECTION, source, target);
182
183 return false;
184 }
185};
186
188{
189 public:
190 achievement_bg_sa_defense_of_ancients() : AchievementCriteriaScript("achievement_bg_sa_defense_of_ancients") { }
191
192 bool OnCheck(Player* source, Unit* target) OVERRIDE
193 {
194 if (Battleground* bg = source->GetBattleground())
195 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_DEFENSE_OF_THE_ANCIENTS, source, target);
196
197 return false;
198 }
199};
200
210
212{
213 public:
214 achievement_tilted() : AchievementCriteriaScript("achievement_tilted") { }
215
216 bool OnCheck(Player* player, Unit* /*target*/) OVERRIDE
217 {
218 if (!player)
219 return false;
220
221 bool checkArea = player->GetAreaId() == AREA_ARGENT_TOURNAMENT_FIELDS ||
222 player->GetAreaId() == AREA_RING_OF_ASPIRANTS ||
223 player->GetAreaId() == AREA_RING_OF_ARGENT_VALIANTS ||
224 player->GetAreaId() == AREA_RING_OF_ALLIANCE_VALIANTS ||
225 player->GetAreaId() == AREA_RING_OF_HORDE_VALIANTS ||
226 player->GetAreaId() == AREA_RING_OF_CHAMPIONS;
227
228 return checkArea && player->duel && player->duel->isMounted;
229 }
230};
231
233{
234 public:
235 achievement_not_even_a_scratch() : AchievementCriteriaScript("achievement_not_even_a_scratch") { }
236
237 bool OnCheck(Player* source, Unit* target) OVERRIDE
238 {
239 if (Battleground* bg = source->GetBattleground())
240 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_NOT_EVEN_A_SCRATCH, source, target);
241
242 return false;
243 }
244};
245
252
254{
255 public:
256 achievement_flirt_with_disaster_perf_check() : AchievementCriteriaScript("achievement_flirt_with_disaster_perf_check") { }
257
258 bool OnCheck(Player* player, Unit* /*target*/) OVERRIDE
259 {
260 if (!player)
261 return false;
262
263 if (player->HasAura(AURA_PERFUME_FOREVER) || player->HasAura(AURA_PERFUME_ENCHANTRESS) || player->HasAura(AURA_PERFUME_VICTORY))
264 return true;
265
266 return false;
267 }
268};
269
271{
272 public:
273 achievement_killed_exp_or_honor_target() : AchievementCriteriaScript("achievement_killed_exp_or_honor_target") { }
274
275 bool OnCheck(Player* player, Unit* target) OVERRIDE
276 {
277 return target && player->isHonorOrXPTarget(target);
278 }
279};
280
@ BG_CRITERIA_CHECK_AV_PERFECTION
@ BG_CRITERIA_CHECK_SAVE_THE_DAY
@ BG_CRITERIA_CHECK_DEFENSE_OF_THE_ANCIENTS
@ BG_CRITERIA_CHECK_RESILIENT_VICTORY
@ BG_CRITERIA_CHECK_EVERYTHING_COUNTS
@ BG_CRITERIA_CHECK_NOT_EVEN_A_SCRATCH
@ ARENA_TYPE_5v5
@ ARENA_TYPE_3v3
@ ARENA_TYPE_2v2
@ NPC_KEEP_CANNON
@ NPC_GLAIVE_THROWER_A
@ NPC_GLAIVE_THROWER_H
@ SPELL_QUARRY
@ SPELL_OIL_REFINERY
@ NPC_ANTI_PERSONNAL_CANNON
std::uint8_t uint8
Definition Define.h:79
#define OVERRIDE
Definition Define.h:60
ArgentTournamentAreas
@ AREA_RING_OF_ALLIANCE_VALIANTS
@ AREA_RING_OF_ARGENT_VALIANTS
@ AREA_ARGENT_TOURNAMENT_FIELDS
@ AREA_RING_OF_CHAMPIONS
@ AREA_RING_OF_ASPIRANTS
@ AREA_RING_OF_HORDE_VALIANTS
void AddSC_achievement_scripts()
@ AURA_PERFUME_FOREVER
@ AURA_PERFUME_ENCHANTRESS
@ AURA_PERFUME_VICTORY
AchievementCriteriaScript(const char *name)
Player * ToPlayer()
Definition Object.h:204
Definition Unit.h:1367
Creature * GetVehicleCreatureBase() const
Definition Unit.cpp:7208
bool OnCheck(Player *source, Unit *) OVERRIDE
achievement_arena_kills(char const *name, uint8 arenaType)
bool OnCheck(Player *source, Unit *target) OVERRIDE
bool OnCheck(Player *source, Unit *) OVERRIDE
bool OnCheck(Player *source, Unit *) OVERRIDE
bool OnCheck(Player *source, Unit *) OVERRIDE
bool OnCheck(Player *source, Unit *) OVERRIDE
bool OnCheck(Player *source, Unit *) OVERRIDE
bool OnCheck(Player *source, Unit *target) OVERRIDE
bool OnCheck(Player *source, Unit *target) OVERRIDE
bool OnCheck(Player *player, Unit *) OVERRIDE
bool OnCheck(Player *player, Unit *target) OVERRIDE
bool OnCheck(Player *source, Unit *target) OVERRIDE
bool OnCheck(Player *source, Unit *target) OVERRIDE
bool OnCheck(Player *source, Unit *target) OVERRIDE
bool OnCheck(Player *, Unit *target) OVERRIDE
bool OnCheck(Player *player, Unit *) OVERRIDE