TrinityCore
Loading...
Searching...
No Matches
achievement_scripts.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "ScriptMgr.h"
19#include "BattlegroundSA.h"
20#include "BattlegroundIC.h"
21#include "Vehicle.h"
22#include "Player.h"
23#include "Creature.h"
24
26{
27 public:
28 achievement_resilient_victory() : AchievementCriteriaScript("achievement_resilient_victory") { }
29
30 bool OnCheck(Player* source, Unit* target) override
31 {
32 if (Battleground* bg = source->GetBattleground())
33 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_RESILIENT_VICTORY, source, target);
34
35 return false;
36 }
37};
38
40{
41 public:
42 achievement_bg_control_all_nodes() : AchievementCriteriaScript("achievement_bg_control_all_nodes") { }
43
44 bool OnCheck(Player* source, Unit* /*target*/) override
45 {
46 if (Battleground* bg = source->GetBattleground())
47 return bg->IsAllNodesControlledByTeam(source->GetTeam());
48
49 return false;
50 }
51};
52
54{
55 public:
56 achievement_save_the_day() : AchievementCriteriaScript("achievement_save_the_day") { }
57
58 bool OnCheck(Player* source, Unit* target) override
59 {
60 if (Battleground* bg = source->GetBattleground())
61 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_SAVE_THE_DAY, source, target);
62
63 return false;
64 }
65};
66
68{
69 public:
70 achievement_bg_ic_resource_glut() : AchievementCriteriaScript("achievement_bg_ic_resource_glut") { }
71
72 bool OnCheck(Player* source, Unit* /*target*/) override
73 {
74 if (source->HasAura(SPELL_OIL_REFINERY) && source->HasAura(SPELL_QUARRY))
75 return true;
76
77 return false;
78 }
79};
80
82{
83 public:
84 achievement_bg_ic_glaive_grave() : AchievementCriteriaScript("achievement_bg_ic_glaive_grave") { }
85
86 bool OnCheck(Player* source, Unit* /*target*/) override
87 {
88 if (Creature* vehicle = source->GetVehicleCreatureBase())
89 {
90 if (vehicle->GetEntry() == NPC_GLAIVE_THROWER_H || vehicle->GetEntry() == NPC_GLAIVE_THROWER_A)
91 return true;
92 }
93
94 return false;
95 }
96};
97
99{
100 public:
101 achievement_bg_ic_mowed_down() : AchievementCriteriaScript("achievement_bg_ic_mowed_down") { }
102
103 bool OnCheck(Player* source, Unit* /*target*/) override
104 {
105 if (Creature* vehicle = source->GetVehicleCreatureBase())
106 {
107 if (vehicle->GetEntry() == NPC_KEEP_CANNON)
108 return true;
109 }
110
111 return false;
112 }
113};
114
116{
117 public:
118 achievement_bg_sa_artillery() : AchievementCriteriaScript("achievement_bg_sa_artillery") { }
119
120 bool OnCheck(Player* source, Unit* /*target*/) override
121 {
122 if (Creature* vehicle = source->GetVehicleCreatureBase())
123 {
124 if (vehicle->GetEntry() == NPC_ANTI_PERSONNAL_CANNON)
125 return true;
126 }
127
128 return false;
129 }
130};
131
133{
134 public:
135 achievement_arena_kills(char const* name, uint8 arenaType) : AchievementCriteriaScript(name),
136 _arenaType(arenaType)
137 {
138 }
139
140 bool OnCheck(Player* source, Unit* /*target*/) override
141 {
142 // this checks GetBattleground() for NULL already
143 if (!source->InArena())
144 return false;
145
146 return ASSERT_NOTNULL(source->GetBattleground())->GetArenaType() == _arenaType;
147 }
148
149 private:
151};
152
154{
155public:
156 achievement_sickly_gazelle() : AchievementCriteriaScript("achievement_sickly_gazelle") { }
157
158 bool OnCheck(Player* /*source*/, Unit* target) override
159 {
160 if (!target)
161 return false;
162
163 if (Player* victim = target->ToPlayer())
164 if (victim->IsMounted())
165 return true;
166
167 return false;
168 }
169};
170
172{
173 public:
174 achievement_everything_counts() : AchievementCriteriaScript("achievement_everything_counts") { }
175
176 bool OnCheck(Player* source, Unit* target) override
177 {
178 if (Battleground* bg = source->GetBattleground())
179 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_EVERYTHING_COUNTS, source, target);
180
181 return false;
182 }
183};
184
186{
187 public:
188 achievement_bg_av_perfection() : AchievementCriteriaScript("achievement_bg_av_perfection") { }
189
190 bool OnCheck(Player* source, Unit* target) override
191 {
192 if (Battleground* bg = source->GetBattleground())
193 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_AV_PERFECTION, source, target);
194
195 return false;
196 }
197};
198
200{
201 public:
202 achievement_bg_sa_defense_of_ancients() : AchievementCriteriaScript("achievement_bg_sa_defense_of_ancients") { }
203
204 bool OnCheck(Player* source, Unit* target) override
205 {
206 if (Battleground* bg = source->GetBattleground())
207 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_DEFENSE_OF_THE_ANCIENTS, source, target);
208
209 return false;
210 }
211};
212
222
224{
225 public:
226 achievement_tilted() : AchievementCriteriaScript("achievement_tilted") { }
227
228 bool OnCheck(Player* player, Unit* /*target*/) override
229 {
230 if (!player)
231 return false;
232
233 bool checkArea = player->GetAreaId() == AREA_ARGENT_TOURNAMENT_FIELDS ||
234 player->GetAreaId() == AREA_RING_OF_ASPIRANTS ||
239
240 return checkArea && player->duel && player->duel->IsMounted;
241 }
242};
243
245{
246 public:
247 achievement_not_even_a_scratch() : AchievementCriteriaScript("achievement_not_even_a_scratch") { }
248
249 bool OnCheck(Player* source, Unit* target) override
250 {
251 if (Battleground* bg = source->GetBattleground())
252 return bg->CheckAchievementCriteriaMeet(BG_CRITERIA_CHECK_NOT_EVEN_A_SCRATCH, source, target);
253
254 return false;
255 }
256};
257
264
266{
267 public:
268 achievement_flirt_with_disaster_perf_check() : AchievementCriteriaScript("achievement_flirt_with_disaster_perf_check") { }
269
270 bool OnCheck(Player* player, Unit* /*target*/) override
271 {
272 if (!player)
273 return false;
274
276 return true;
277
278 return false;
279 }
280};
281
283{
284 public:
285 achievement_killed_exp_or_honor_target() : AchievementCriteriaScript("achievement_killed_exp_or_honor_target") { }
286
287 bool OnCheck(Player* player, Unit* target) override
288 {
289 return target && player->isHonorOrXPTarget(target);
290 }
291};
292
@ NPC_KEEP_CANNON
@ NPC_GLAIVE_THROWER_A
@ NPC_GLAIVE_THROWER_H
@ SPELL_QUARRY
@ SPELL_OIL_REFINERY
@ NPC_ANTI_PERSONNAL_CANNON
@ 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
uint8_t uint8
Definition Define.h:135
#define ASSERT_NOTNULL(pointer)
Definition Errors.h:84
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
static Player * ToPlayer(Object *o)
Definition Object.h:180
uint32 GetTeam() const
Definition Player.h:1832
Battleground * GetBattleground() const
Definition Player.cpp:23049
bool InArena() const
Definition Player.cpp:23148
std::unique_ptr< DuelInfo > duel
Definition Player.h:1602
bool isHonorOrXPTarget(Unit const *victim) const
Definition Player.cpp:23573
Definition Unit.h:769
Creature * GetVehicleCreatureBase() const
Definition Unit.cpp:11847
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:4535
uint32 GetAreaId() const
Definition Object.h:374
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