TrinityCore
Loading...
Searching...
No Matches
spell_quest.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/*
19 * Scripts for spells with SPELLFAMILY_GENERIC spells used for quests.
20 * This file is only for spells used in multiple zones.
21 * Scriptnames of files in this file should be prefixed with "spell_quest_".
22 */
23
24#include "ScriptMgr.h"
25#include "ObjectMgr.h"
26#include "Player.h"
27#include "SpellAuras.h"
28#include "SpellScript.h"
29
69
71{
73
98
99 void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
100 {
101 if (!GetCaster() || !GetCaster()->IsAlive() || !GetTarget()->IsAlive())
102 return;
103
104 if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
105 return;
106
107 uint32 finalSpellId = 0;
108 switch (GetId())
109 {
110 case SPELL_TAME_ICE_CLAW_BEAR: finalSpellId = SPELL_TAME_ICE_CLAW_BEAR_1; break;
112 case SPELL_TAME_SNOW_LEOPARD: finalSpellId = SPELL_TAME_SNOW_LEOPARD_1; break;
115 case SPELL_TAME_SWOOP: finalSpellId = SPELL_TAME_SWOOP_1; break;
116 case SPELL_TAME_WEBWOOD_LURKER: finalSpellId = SPELL_TAME_WEBWOOD_LURKER_1; break;
118 case SPELL_TAME_SURF_CRAWLER: finalSpellId = SPELL_TAME_SURF_CRAWLER_1; break;
122 case SPELL_TAME_BARBED_CRAWLER: finalSpellId = SPELL_TAME_BARBED_CRAWLER_1; break;
124 case SPELL_TAME_NIGHTSTALKER: finalSpellId = SPELL_TAME_NIGHTSTALKER_1; break;
127 case SPELL_TAME_MISTBAT: finalSpellId = SPELL_TAME_MISTBAT_1; break;
128 }
129
130 if (finalSpellId)
131 GetCaster()->CastSpell(GetTarget(), finalSpellId, true);
132 }
133
138};
139
140// 53099, 57896, 58418, 58420, 59064, 59065, 59439, 60900, 60940
142{
144
145 bool Validate(SpellInfo const* spellInfo) override
146 {
147 return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }) &&
148 sObjectMgr->GetQuestTemplate(uint32(spellInfo->GetEffect(EFFECT_1).CalcValue()));
149 }
150
152 {
153 Player* target = GetHitPlayer();
154 if (!target)
155 return;
156
157 uint32 spellId = GetEffectInfo().CalcValue();
159
160 // This probably should be a way to throw error in SpellCastResult
161 if (target->IsActiveQuest(questId))
162 target->CastSpell(target, spellId, true);
163 }
164
169};
170
184
185// 24194 - Uther's Tribute
186// 24195 - Grom's Tribute
188{
190
202
203 void HandleScript(SpellEffIndex /*effIndex*/)
204 {
205 Player* caster = GetCaster()->ToPlayer();
206 if (!caster)
207 return;
208
209 uint32 spell = 0;
210 switch (caster->GetRace())
211 {
212 case RACE_TROLL: spell = SPELL_GROMS_TROLL_TRIBUTE; break;
213 case RACE_TAUREN: spell = SPELL_GROMS_TAUREN_TRIBUTE; break;
215 case RACE_ORC: spell = SPELL_GROMS_ORC_TRIBUTE; break;
216 case RACE_BLOODELF: spell = SPELL_GROMS_BLOODELF_TRIBUTE; break;
217 case RACE_HUMAN: spell = SPELL_UTHERS_HUMAN_TRIBUTE; break;
218 case RACE_GNOME: spell = SPELL_UTHERS_GNOME_TRIBUTE; break;
219 case RACE_DWARF: spell = SPELL_UTHERS_DWARF_TRIBUTE; break;
220 case RACE_NIGHTELF: spell = SPELL_UTHERS_NIGHTELF_TRIBUTE; break;
221 case RACE_DRAENEI: spell = SPELL_UTHERS_DRAENEI_TRIBUTE; break;
222 default: break;
223 }
224
225 if (spell)
226 caster->CastSpell(caster, spell);
227 }
228
233};
234
239
240// 66744 - Make Player Destroy Totems
261
uint32_t uint32
Definition Define.h:133
#define sObjectMgr
Definition ObjectMgr.h:1721
#define RegisterSpellScript(spell_script)
Definition ScriptMgr.h:1128
SpellEffIndex
@ EFFECT_1
@ EFFECT_0
@ SPELL_EFFECT_SCRIPT_EFFECT
@ RACE_TROLL
@ RACE_UNDEAD_PLAYER
@ RACE_ORC
@ RACE_DRAENEI
@ RACE_NIGHTELF
@ RACE_BLOODELF
@ RACE_DWARF
@ RACE_GNOME
@ RACE_HUMAN
@ RACE_TAUREN
@ AURA_REMOVE_BY_EXPIRE
AuraEffectHandleModes
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_DUMMY
@ TRIGGERED_IGNORE_POWER_AND_REAGENT_COST
Will ignore Spell and Category cooldowns.
#define SpellEffectFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
Unit * GetCaster() const
Unit * GetTarget() const
uint32 GetId() const
static Player * ToPlayer(Object *o)
Definition Object.h:180
bool IsActiveQuest(uint32 quest_id) const
Definition Player.cpp:14410
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
Definition SpellInfo.h:483
Player * GetHitPlayer() const
Unit * GetCaster() const
HookList< EffectHandler > OnEffectHit
Unit * GetHitUnit() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
uint8 GetRace() const
Definition Unit.h:892
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition Object.cpp:2832
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_quest_make_player_destroy_totems)
PrepareSpellScript(spell_quest_portal_with_condition)
bool Validate(SpellInfo const *spellInfo) override
void HandleScriptEffect(SpellEffIndex)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_quest_taming_the_beast)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
PrepareSpellScript(spell_quest_uther_grom_tribute)
TamingTheBeast
@ SPELL_TAME_SURF_CRAWLER
@ SPELL_TAME_SNOW_LEOPARD_1
@ SPELL_TAME_GREATER_TIMBERSTRIDER_1
@ SPELL_TAME_ELDER_SPRINGPAW_1
@ SPELL_TAME_PRAIRIE_STALKER
@ SPELL_TAME_WEBWOOD_LURKER_1
@ SPELL_TAME_LARGE_CRAG_BOAR
@ SPELL_TAME_MISTBAT
@ SPELL_TAME_STRIGID_SCREECHER_1
@ SPELL_TAME_NIGHTSTALKER_1
@ SPELL_TAME_NIGHTSABER_STALKER
@ SPELL_TAME_ELDER_SPRINGPAW
@ SPELL_TAME_ARMORED_SCORPID
@ SPELL_TAME_ICE_CLAW_BEAR
@ SPELL_TAME_CRAZED_DRAGONHAWK_1
@ SPELL_TAME_CRAZED_DRAGONHAWK
@ SPELL_TAME_ICE_CLAW_BEAR_1
@ SPELL_TAME_ARMORED_SCORPID_1
@ SPELL_TAME_WEBWOOD_LURKER
@ SPELL_TAME_DIRE_MOTTLED_BOAR_1
@ SPELL_TAME_STRIGID_SCREECHER
@ SPELL_TAME_BARBED_CRAWLER
@ SPELL_TAME_SWOOP
@ SPELL_TAME_SURF_CRAWLER_1
@ SPELL_TAME_LARGE_CRAG_BOAR_1
@ SPELL_TAME_NIGHTSTALKER
@ SPELL_TAME_BARBED_CRAWLER_1
@ SPELL_TAME_ADULT_PLAINSTRIDER
@ SPELL_TAME_GREATER_TIMBERSTRIDER
@ SPELL_TAME_SWOOP_1
@ SPELL_TAME_DIRE_MOTTLED_BOAR
@ SPELL_TAME_PRAIRIE_STALKER_1
@ SPELL_TAME_NIGHTSABER_STALKER_1
@ SPELL_TAME_SNOW_LEOPARD
@ SPELL_TAME_MISTBAT_1
@ SPELL_TAME_ADULT_PLAINSTRIDER_1
TributeSpells
@ SPELL_UTHERS_DRAENEI_TRIBUTE
@ SPELL_GROMS_TAUREN_TRIBUTE
@ SPELL_UTHERS_HUMAN_TRIBUTE
@ SPELL_UTHERS_GNOME_TRIBUTE
@ SPELL_UTHERS_NIGHTELF_TRIBUTE
@ SPELL_GROMS_ORC_TRIBUTE
@ SPELL_GROMS_TROLL_TRIBUTE
@ SPELL_GROMS_BLOODELF_TRIBUTE
@ SPELL_UTHERS_DWARF_TRIBUTE
@ SPELL_GROMS_UNDEAD_TRIBUTE
RelicOfTheEarthenRing
@ SPELL_TOTEM_OF_THE_EARTHEN_RING
void AddSC_quest_spell_scripts()