2010-08-18 00:20:23 +06:00
/*
2017-01-01 16:21:30 +01:00
* Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/>
2010-08-18 00:20:23 +06:00
*
* 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, see <http://www.gnu.org/licenses/>.
*/
/*
* Scripts for spells with SPELLFAMILY_GENERIC spells used for quests.
* Ordered alphabetically using questId and scriptname.
* Scriptnames of files in this file should be prefixed with "spell_q#questID_".
*/
2014-09-04 19:42:37 +02:00
#include "CellImpl.h"
#include "CreatureTextMgr.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
2012-11-17 05:18:37 +01:00
#include "Player.h"
2012-02-19 16:57:07 +01:00
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
2013-09-06 21:18:07 +02:00
#include "SpellAuraEffects.h"
2011-09-03 16:43:15 +02:00
#include "Vehicle.h"
2010-08-18 14:09:48 +06:00
2010-09-04 02:33:57 +06:00
class spell_generic_quest_update_entry_SpellScript : public SpellScript
2010-08-18 00:20:23 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_generic_quest_update_entry_SpellScript );
private :
uint16 _spellEffect ;
uint8 _effIndex ;
uint32 _originalEntry ;
uint32 _newEntry ;
bool _shouldAttack ;
uint32 _despawnTime ;
2010-09-04 02:33:57 +06:00
2012-02-18 12:12:49 +01:00
public :
spell_generic_quest_update_entry_SpellScript ( uint16 spellEffect , uint8 effIndex , uint32 originalEntry , uint32 newEntry , bool shouldAttack , uint32 despawnTime = 0 ) :
SpellScript (), _spellEffect ( spellEffect ), _effIndex ( effIndex ), _originalEntry ( originalEntry ),
_newEntry ( newEntry ), _shouldAttack ( shouldAttack ), _despawnTime ( despawnTime ) { }
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
if ( Creature * creatureTarget = GetHitCreature ())
2013-06-11 18:39:51 -02:30
if ( ! creatureTarget -> IsPet () && creatureTarget -> GetEntry () == _originalEntry )
2012-02-18 12:12:49 +01:00
{
creatureTarget -> UpdateEntry ( _newEntry );
if ( _shouldAttack && creatureTarget -> IsAIEnabled )
creatureTarget -> AI () -> AttackStart ( GetCaster ());
if ( _despawnTime )
creatureTarget -> DespawnOrUnsummon ( _despawnTime );
}
}
2010-09-04 02:33:57 +06:00
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_generic_quest_update_entry_SpellScript :: HandleDummy , _effIndex , _spellEffect );
}
2010-09-04 02:33:57 +06:00
};
// http://www.wowhead.com/quest=55 Morbent Fel
// 8913 Sacred Cleansing
2012-02-18 12:12:49 +01:00
enum Quest55Data
2010-09-04 02:33:57 +06:00
{
NPC_MORBENT = 1200 ,
NPC_WEAKENED_MORBENT = 24782 ,
};
class spell_q55_sacred_cleansing : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q55_sacred_cleansing () : SpellScriptLoader ( "spell_q55_sacred_cleansing" ) { }
2010-09-04 02:33:57 +06:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-02-18 12:12:49 +01:00
{
return new spell_generic_quest_update_entry_SpellScript ( SPELL_EFFECT_DUMMY , EFFECT_1 , NPC_MORBENT , NPC_WEAKENED_MORBENT , true );
}
2010-09-04 02:33:57 +06:00
};
2013-06-12 21:15:17 +02:00
// 9712 - Thaumaturgy Channel
enum ThaumaturgyChannel
{
SPELL_THAUMATURGY_CHANNEL = 21029
};
class spell_q2203_thaumaturgy_channel : public SpellScriptLoader
{
public :
spell_q2203_thaumaturgy_channel () : SpellScriptLoader ( "spell_q2203_thaumaturgy_channel" ) { }
class spell_q2203_thaumaturgy_channel_AuraScript : public AuraScript
{
PrepareAuraScript ( spell_q2203_thaumaturgy_channel_AuraScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellInfo*/ ) override
2013-06-12 21:15:17 +02:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_THAUMATURGY_CHANNEL ))
return false ;
return true ;
}
void HandleEffectPeriodic ( AuraEffect const * /*aurEff*/ )
{
PreventDefaultAction ();
if ( Unit * caster = GetCaster ())
caster -> CastSpell ( caster , SPELL_THAUMATURGY_CHANNEL , false );
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-06-12 21:15:17 +02:00
{
OnEffectPeriodic += AuraEffectPeriodicFn ( spell_q2203_thaumaturgy_channel_AuraScript :: HandleEffectPeriodic , EFFECT_0 , SPELL_AURA_PERIODIC_TRIGGER_SPELL );
}
};
2014-04-29 16:35:11 +02:00
AuraScript * GetAuraScript () const override
2013-06-12 21:15:17 +02:00
{
return new spell_q2203_thaumaturgy_channel_AuraScript ();
}
};
2010-09-04 02:33:57 +06:00
// http://www.wowhead.com/quest=5206 Marauders of Darrowshire
// 17271 Test Fetid Skull
2012-02-18 12:12:49 +01:00
enum Quest5206Data
2010-09-04 02:33:57 +06:00
{
SPELL_CREATE_RESONATING_SKULL = 17269 ,
SPELL_CREATE_BONE_DUST = 17270
};
class spell_q5206_test_fetid_skull : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q5206_test_fetid_skull () : SpellScriptLoader ( "spell_q5206_test_fetid_skull" ) { }
2010-09-04 02:33:57 +06:00
2012-02-18 12:12:49 +01:00
class spell_q5206_test_fetid_skull_SpellScript : public SpellScript
2010-09-04 02:33:57 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q5206_test_fetid_skull_SpellScript );
2010-09-04 02:33:57 +06:00
2014-04-29 16:35:11 +02:00
bool Load () override
2012-02-18 12:12:49 +01:00
{
return GetCaster () -> GetTypeId () == TYPEID_PLAYER ;
}
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ ) override
2012-02-18 12:12:49 +01:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_CREATE_RESONATING_SKULL ) || ! sSpellMgr -> GetSpellInfo ( SPELL_CREATE_BONE_DUST ))
return false ;
return true ;
}
void HandleDummy ( SpellEffIndex /*effIndex*/ )
2010-09-04 02:33:57 +06:00
{
2012-02-18 12:12:49 +01:00
Unit * caster = GetCaster ();
2010-09-04 02:33:57 +06:00
uint32 spellId = roll_chance_i ( 50 ) ? SPELL_CREATE_RESONATING_SKULL : SPELL_CREATE_BONE_DUST ;
2012-02-18 12:12:49 +01:00
caster -> CastSpell ( caster , spellId , true , NULL );
2010-09-04 02:33:57 +06:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHit += SpellEffectFn ( spell_q5206_test_fetid_skull_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2010-09-04 02:33:57 +06:00
{
2012-02-18 12:12:49 +01:00
return new spell_q5206_test_fetid_skull_SpellScript ();
2010-09-04 02:33:57 +06:00
}
};
2010-09-16 13:14:14 +06:00
// http://www.wowhead.com/quest=6124 Curing the Sick (A)
// http://www.wowhead.com/quest=6129 Curing the Sick (H)
// 19512 Apply Salve
2012-02-18 12:12:49 +01:00
enum Quests6124_6129Data
2010-09-16 13:14:14 +06:00
{
NPC_SICKLY_GAZELLE = 12296 ,
NPC_CURED_GAZELLE = 12297 ,
NPC_SICKLY_DEER = 12298 ,
NPC_CURED_DEER = 12299 ,
DESPAWN_TIME = 30000
};
class spell_q6124_6129_apply_salve : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q6124_6129_apply_salve () : SpellScriptLoader ( "spell_q6124_6129_apply_salve" ) { }
2010-09-16 13:14:14 +06:00
2012-02-18 12:12:49 +01:00
class spell_q6124_6129_apply_salve_SpellScript : public SpellScript
2010-09-16 13:14:14 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q6124_6129_apply_salve_SpellScript );
2014-04-29 16:35:11 +02:00
bool Load () override
2012-02-18 12:12:49 +01:00
{
return GetCaster () -> GetTypeId () == TYPEID_PLAYER ;
}
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Player * caster = GetCaster () -> ToPlayer ();
if ( GetCastItem ())
2011-07-02 22:18:03 +02:00
if ( Creature * creatureTarget = GetHitCreature ())
2010-09-16 13:14:14 +06:00
{
2015-05-24 14:21:34 +02:00
uint32 newEntry = 0 ;
2012-02-18 12:12:49 +01:00
switch ( caster -> GetTeam ())
2010-09-16 13:14:14 +06:00
{
case HORDE :
2011-07-02 22:18:03 +02:00
if ( creatureTarget -> GetEntry () == NPC_SICKLY_GAZELLE )
2015-05-24 14:21:34 +02:00
newEntry = NPC_CURED_GAZELLE ;
2010-09-16 13:14:14 +06:00
break ;
case ALLIANCE :
2011-07-02 22:18:03 +02:00
if ( creatureTarget -> GetEntry () == NPC_SICKLY_DEER )
2015-05-24 14:21:34 +02:00
newEntry = NPC_CURED_DEER ;
2010-09-16 13:14:14 +06:00
break ;
}
2015-05-24 14:21:34 +02:00
if ( newEntry )
2010-09-16 13:14:14 +06:00
{
2015-05-24 14:21:34 +02:00
creatureTarget -> UpdateEntry ( newEntry );
2011-07-02 22:18:03 +02:00
creatureTarget -> DespawnOrUnsummon ( DESPAWN_TIME );
2015-05-24 14:21:34 +02:00
caster -> KilledMonsterCredit ( newEntry );
2010-09-16 13:14:14 +06:00
}
}
2012-02-18 12:12:49 +01:00
}
2010-09-16 13:14:14 +06:00
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q6124_6129_apply_salve_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2010-09-16 13:14:14 +06:00
{
2012-02-18 12:12:49 +01:00
return new spell_q6124_6129_apply_salve_SpellScript ();
2010-09-16 13:14:14 +06:00
}
};
2010-09-04 02:33:57 +06:00
// http://www.wowhead.com/quest=10255 Testing the Antidote
// 34665 Administer Antidote
2012-02-18 12:12:49 +01:00
enum Quest10255Data
2010-09-04 02:33:57 +06:00
{
NPC_HELBOAR = 16880 ,
NPC_DREADTUSK = 16992 ,
};
class spell_q10255_administer_antidote : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q10255_administer_antidote () : SpellScriptLoader ( "spell_q10255_administer_antidote" ) { }
2010-09-04 02:33:57 +06:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-02-18 12:12:49 +01:00
{
return new spell_generic_quest_update_entry_SpellScript ( SPELL_EFFECT_DUMMY , EFFECT_0 , NPC_HELBOAR , NPC_DREADTUSK , true );
}
2010-09-04 02:33:57 +06:00
};
2010-12-10 12:01:57 +06:00
// http://www.wowhead.com/quest=11396 Bring Down Those Shields (A)
// http://www.wowhead.com/quest=11399 Bring Down Those Shields (H)
2012-02-18 12:12:49 +01:00
enum Quest11396_11399Data
2010-12-10 12:01:57 +06:00
{
SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3 = 43874 ,
SPELL_SCOURGING_CRYSTAL_CONTROLLER = 43878
};
// 43874 Scourge Mur'gul Camp: Force Shield Arcane Purple x3
class spell_q11396_11399_force_shield_arcane_purple_x3 : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q11396_11399_force_shield_arcane_purple_x3 () : SpellScriptLoader ( "spell_q11396_11399_force_shield_arcane_purple_x3" ) { }
2010-12-10 12:01:57 +06:00
2012-02-18 12:12:49 +01:00
class spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript : public AuraScript
2010-12-10 12:01:57 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareAuraScript ( spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript );
void HandleEffectApply ( AuraEffect const * /*aurEff*/ , AuraEffectHandleModes /*mode*/ )
{
Unit * target = GetTarget ();
2014-09-14 12:55:48 -03:00
target -> SetFlag ( UNIT_FIELD_FLAGS , UNIT_FLAG_IMMUNE_TO_PC );
target -> AddUnitState ( UNIT_STATE_ROOT );
2012-02-18 12:12:49 +01:00
}
2010-12-10 12:01:57 +06:00
2012-02-18 12:12:49 +01:00
void HandleEffectRemove ( AuraEffect const * /*aurEff*/ , AuraEffectHandleModes /*mode*/ )
{
2012-02-03 18:46:05 +01:00
GetTarget () -> RemoveFlag ( UNIT_FIELD_FLAGS , UNIT_FLAG_IMMUNE_TO_PC );
2012-02-18 12:12:49 +01:00
}
2010-12-10 12:01:57 +06:00
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectApply += AuraEffectApplyFn ( spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript :: HandleEffectApply , EFFECT_0 , SPELL_AURA_DUMMY , AURA_EFFECT_HANDLE_REAL );
OnEffectRemove += AuraEffectRemoveFn ( spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript :: HandleEffectRemove , EFFECT_0 , SPELL_AURA_DUMMY , AURA_EFFECT_HANDLE_REAL );
}
2010-12-10 12:01:57 +06:00
2012-02-18 12:12:49 +01:00
};
2010-12-10 12:01:57 +06:00
2014-04-29 16:35:11 +02:00
AuraScript * GetAuraScript () const override
2012-02-18 12:12:49 +01:00
{
return new spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript ();
}
2010-12-10 12:01:57 +06:00
};
// 50133 Scourging Crystal Controller
class spell_q11396_11399_scourging_crystal_controller : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q11396_11399_scourging_crystal_controller () : SpellScriptLoader ( "spell_q11396_11399_scourging_crystal_controller" ) { }
2010-12-10 12:01:57 +06:00
2012-02-18 12:12:49 +01:00
class spell_q11396_11399_scourging_crystal_controller_SpellScript : public SpellScript
2010-12-10 12:01:57 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q11396_11399_scourging_crystal_controller_SpellScript );
2010-12-10 12:01:57 +06:00
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ ) override
2012-02-18 12:12:49 +01:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3 ) || ! sSpellMgr -> GetSpellInfo ( SPELL_SCOURGING_CRYSTAL_CONTROLLER ))
return false ;
return true ;
}
2010-12-10 12:01:57 +06:00
2012-02-18 12:12:49 +01:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
2012-04-28 14:53:40 +02:00
if ( Unit * target = GetExplTargetUnit ())
2012-02-18 12:12:49 +01:00
if ( target -> GetTypeId () == TYPEID_UNIT && target -> HasAura ( SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3 ))
// Make sure nobody else is channeling the same target
if ( ! target -> HasAura ( SPELL_SCOURGING_CRYSTAL_CONTROLLER ))
GetCaster () -> CastSpell ( target , SPELL_SCOURGING_CRYSTAL_CONTROLLER , true , GetCastItem ());
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q11396_11399_scourging_crystal_controller_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2010-12-10 12:01:57 +06:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-02-18 12:12:49 +01:00
{
return new spell_q11396_11399_scourging_crystal_controller_SpellScript ();
2015-05-27 21:16:06 -04:00
}
2010-12-10 12:01:57 +06:00
};
// 43882 Scourging Crystal Controller Dummy
class spell_q11396_11399_scourging_crystal_controller_dummy : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q11396_11399_scourging_crystal_controller_dummy () : SpellScriptLoader ( "spell_q11396_11399_scourging_crystal_controller_dummy" ) { }
2010-12-10 12:01:57 +06:00
2012-02-18 12:12:49 +01:00
class spell_q11396_11399_scourging_crystal_controller_dummy_SpellScript : public SpellScript
2010-12-10 12:01:57 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q11396_11399_scourging_crystal_controller_dummy_SpellScript );
2010-12-10 12:01:57 +06:00
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ ) override
2012-02-18 12:12:49 +01:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3 ))
return false ;
return true ;
}
2010-12-10 12:01:57 +06:00
2012-02-18 12:12:49 +01:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
if ( Unit * target = GetHitUnit ())
if ( target -> GetTypeId () == TYPEID_UNIT )
target -> RemoveAurasDueToSpell ( SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3 );
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q11396_11399_scourging_crystal_controller_dummy_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2010-12-10 12:01:57 +06:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-02-18 12:12:49 +01:00
{
return new spell_q11396_11399_scourging_crystal_controller_dummy_SpellScript ();
2015-05-27 21:16:06 -04:00
}
2010-12-10 12:01:57 +06:00
};
2010-09-04 02:33:57 +06:00
// http://www.wowhead.com/quest=11515 Blood for Blood
// 44936 Quest - Fel Siphon Dummy
2012-02-18 12:12:49 +01:00
enum Quest11515Data
2010-09-04 02:33:57 +06:00
{
NPC_FELBLOOD_INITIATE = 24918 ,
NPC_EMACIATED_FELBLOOD = 24955
};
class spell_q11515_fel_siphon_dummy : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q11515_fel_siphon_dummy () : SpellScriptLoader ( "spell_q11515_fel_siphon_dummy" ) { }
2010-09-04 02:33:57 +06:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-02-18 12:12:49 +01:00
{
return new spell_generic_quest_update_entry_SpellScript ( SPELL_EFFECT_DUMMY , EFFECT_0 , NPC_FELBLOOD_INITIATE , NPC_EMACIATED_FELBLOOD , true );
}
2010-08-18 00:20:23 +06:00
};
// http://www.wowhead.com/quest=11587 Prison Break
// 45449 Arcane Prisoner Rescue
2012-02-18 12:12:49 +01:00
enum Quest11587Data
2010-09-04 02:33:57 +06:00
{
SPELL_SUMMON_ARCANE_PRISONER_MALE = 45446 , // Summon Arcane Prisoner - Male
SPELL_SUMMON_ARCANE_PRISONER_FEMALE = 45448 , // Summon Arcane Prisoner - Female
SPELL_ARCANE_PRISONER_KILL_CREDIT = 45456 // Arcane Prisoner Kill Credit
};
2010-08-24 00:10:49 +02:00
class spell_q11587_arcane_prisoner_rescue : public SpellScriptLoader
2010-08-18 00:20:23 +06:00
{
2012-02-18 12:12:49 +01:00
public :
spell_q11587_arcane_prisoner_rescue () : SpellScriptLoader ( "spell_q11587_arcane_prisoner_rescue" ) { }
2010-08-18 00:20:23 +06:00
2012-02-18 12:12:49 +01:00
class spell_q11587_arcane_prisoner_rescue_SpellScript : public SpellScript
2010-08-18 00:20:23 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q11587_arcane_prisoner_rescue_SpellScript );
2010-08-18 00:20:23 +06:00
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ ) override
2010-08-18 00:20:23 +06:00
{
2012-02-18 12:12:49 +01:00
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_ARCANE_PRISONER_MALE ) || ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_ARCANE_PRISONER_FEMALE ) || ! sSpellMgr -> GetSpellInfo ( SPELL_ARCANE_PRISONER_KILL_CREDIT ))
return false ;
return true ;
2010-08-18 00:20:23 +06:00
}
2012-02-18 12:12:49 +01:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Unit * caster = GetCaster ();
if ( Unit * unitTarget = GetHitUnit ())
{
uint32 spellId = SPELL_SUMMON_ARCANE_PRISONER_MALE ;
2014-07-22 21:43:19 +02:00
if ( rand32 () % 2 )
2012-02-18 12:12:49 +01:00
spellId = SPELL_SUMMON_ARCANE_PRISONER_FEMALE ;
caster -> CastSpell ( caster , spellId , true );
unitTarget -> CastSpell ( caster , SPELL_ARCANE_PRISONER_KILL_CREDIT , true );
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q11587_arcane_prisoner_rescue_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2010-08-18 00:20:23 +06:00
{
2012-02-18 12:12:49 +01:00
return new spell_q11587_arcane_prisoner_rescue_SpellScript ();
2010-08-18 00:20:23 +06:00
}
};
2010-09-04 02:33:57 +06:00
// http://www.wowhead.com/quest=11730 Master and Servant
// 46023 The Ultrasonic Screwdriver
2012-02-18 12:12:49 +01:00
enum Quest11730Data
2010-08-18 00:20:23 +06:00
{
2010-09-04 02:33:57 +06:00
SPELL_SUMMON_SCAVENGEBOT_004A8 = 46063 ,
SPELL_SUMMON_SENTRYBOT_57K = 46068 ,
SPELL_SUMMON_DEFENDOTANK_66D = 46058 ,
SPELL_SUMMON_SCAVENGEBOT_005B6 = 46066 ,
SPELL_SUMMON_55D_COLLECTATRON = 46034 ,
SPELL_ROBOT_KILL_CREDIT = 46027 ,
NPC_SCAVENGEBOT_004A8 = 25752 ,
NPC_SENTRYBOT_57K = 25753 ,
NPC_DEFENDOTANK_66D = 25758 ,
NPC_SCAVENGEBOT_005B6 = 25792 ,
NPC_55D_COLLECTATRON = 25793
2010-08-18 00:20:23 +06:00
};
2010-08-24 00:10:49 +02:00
class spell_q11730_ultrasonic_screwdriver : public SpellScriptLoader
2010-08-18 00:20:23 +06:00
{
2012-02-18 12:12:49 +01:00
public :
spell_q11730_ultrasonic_screwdriver () : SpellScriptLoader ( "spell_q11730_ultrasonic_screwdriver" ) { }
2010-08-18 00:20:23 +06:00
2012-02-18 12:12:49 +01:00
class spell_q11730_ultrasonic_screwdriver_SpellScript : public SpellScript
2010-08-18 00:20:23 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q11730_ultrasonic_screwdriver_SpellScript );
2010-08-18 00:20:23 +06:00
2014-04-29 16:35:11 +02:00
bool Load () override
2012-02-18 12:12:49 +01:00
{
return GetCaster () -> GetTypeId () == TYPEID_PLAYER && GetCastItem ();
}
2010-08-18 00:20:23 +06:00
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ ) override
2012-02-18 12:12:49 +01:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_SCAVENGEBOT_004A8 ) || ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_SENTRYBOT_57K ) || ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_DEFENDOTANK_66D ) || ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_SCAVENGEBOT_005B6 ) || ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_55D_COLLECTATRON ) || ! sSpellMgr -> GetSpellInfo ( SPELL_ROBOT_KILL_CREDIT ))
return false ;
return true ;
}
2010-08-18 00:20:23 +06:00
2012-02-18 12:12:49 +01:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Item * castItem = GetCastItem ();
Unit * caster = GetCaster ();
if ( Creature * target = GetHitCreature ())
{
uint32 spellId = 0 ;
switch ( target -> GetEntry ())
{
case NPC_SCAVENGEBOT_004A8 : spellId = SPELL_SUMMON_SCAVENGEBOT_004A8 ; break ;
case NPC_SENTRYBOT_57K : spellId = SPELL_SUMMON_SENTRYBOT_57K ; break ;
case NPC_DEFENDOTANK_66D : spellId = SPELL_SUMMON_DEFENDOTANK_66D ; break ;
case NPC_SCAVENGEBOT_005B6 : spellId = SPELL_SUMMON_SCAVENGEBOT_005B6 ; break ;
case NPC_55D_COLLECTATRON : spellId = SPELL_SUMMON_55D_COLLECTATRON ; break ;
default :
return ;
}
caster -> CastSpell ( caster , spellId , true , castItem );
caster -> CastSpell ( caster , SPELL_ROBOT_KILL_CREDIT , true );
target -> DespawnOrUnsummon ();
}
}
2010-08-18 00:20:23 +06:00
2014-04-29 16:35:11 +02:00
void Register () override
2010-08-18 00:20:23 +06:00
{
2012-02-18 12:12:49 +01:00
OnEffectHitTarget += SpellEffectFn ( spell_q11730_ultrasonic_screwdriver_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
2010-08-18 00:20:23 +06:00
}
2012-02-18 12:12:49 +01:00
};
2010-08-18 00:20:23 +06:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2010-08-18 00:20:23 +06:00
{
2012-02-18 12:12:49 +01:00
return new spell_q11730_ultrasonic_screwdriver_SpellScript ();
2010-08-18 00:20:23 +06:00
}
};
2010-09-16 13:14:14 +06:00
// http://www.wowhead.com/quest=12459 That Which Creates Can Also Destroy
// 49587 Seeds of Nature's Wrath
2012-02-18 12:12:49 +01:00
enum Quest12459Data
2010-09-16 13:14:14 +06:00
{
NPC_REANIMATED_FROSTWYRM = 26841 ,
NPC_WEAK_REANIMATED_FROSTWYRM = 27821 ,
NPC_TURGID = 27808 ,
NPC_WEAK_TURGID = 27809 ,
NPC_DEATHGAZE = 27122 ,
NPC_WEAK_DEATHGAZE = 27807 ,
};
class spell_q12459_seeds_of_natures_wrath : public SpellScriptLoader
{
public :
2012-02-18 12:12:49 +01:00
spell_q12459_seeds_of_natures_wrath () : SpellScriptLoader ( "spell_q12459_seeds_of_natures_wrath" ) { }
class spell_q12459_seeds_of_natures_wrath_SpellScript : public SpellScript
2010-09-16 13:14:14 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q12459_seeds_of_natures_wrath_SpellScript );
void HandleDummy ( SpellEffIndex /*effIndex*/ )
2010-09-16 13:14:14 +06:00
{
2012-02-18 12:12:49 +01:00
if ( Creature * creatureTarget = GetHitCreature ())
2010-09-16 13:14:14 +06:00
{
2012-02-18 12:12:49 +01:00
uint32 uiNewEntry = 0 ;
switch ( creatureTarget -> GetEntry ())
{
case NPC_REANIMATED_FROSTWYRM : uiNewEntry = NPC_WEAK_REANIMATED_FROSTWYRM ; break ;
case NPC_TURGID : uiNewEntry = NPC_WEAK_TURGID ; break ;
case NPC_DEATHGAZE : uiNewEntry = NPC_WEAK_DEATHGAZE ; break ;
}
if ( uiNewEntry )
creatureTarget -> UpdateEntry ( uiNewEntry );
2010-09-16 13:14:14 +06:00
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12459_seeds_of_natures_wrath_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2010-09-16 13:14:14 +06:00
{
2012-02-18 12:12:49 +01:00
return new spell_q12459_seeds_of_natures_wrath_SpellScript ();
2010-09-16 13:14:14 +06:00
}
};
// http://www.wowhead.com/quest=12634 Some Make Lemonade, Some Make Liquor
// 51840 Despawn Fruit Tosser
2012-02-18 12:12:49 +01:00
enum Quest12634Data
2010-09-16 13:14:14 +06:00
{
SPELL_BANANAS_FALL_TO_GROUND = 51836 ,
SPELL_ORANGE_FALLS_TO_GROUND = 51837 ,
SPELL_PAPAYA_FALLS_TO_GROUND = 51839 ,
SPELL_SUMMON_ADVENTUROUS_DWARF = 52070
};
class spell_q12634_despawn_fruit_tosser : public SpellScriptLoader
{
public :
2012-02-18 12:12:49 +01:00
spell_q12634_despawn_fruit_tosser () : SpellScriptLoader ( "spell_q12634_despawn_fruit_tosser" ) { }
2010-09-16 13:14:14 +06:00
2012-02-18 12:12:49 +01:00
class spell_q12634_despawn_fruit_tosser_SpellScript : public SpellScript
2010-09-16 13:14:14 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q12634_despawn_fruit_tosser_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ ) override
2010-09-16 13:14:14 +06:00
{
2012-02-18 12:12:49 +01:00
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_BANANAS_FALL_TO_GROUND ) || ! sSpellMgr -> GetSpellInfo ( SPELL_ORANGE_FALLS_TO_GROUND ) || ! sSpellMgr -> GetSpellInfo ( SPELL_PAPAYA_FALLS_TO_GROUND ) || ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_ADVENTUROUS_DWARF ))
return false ;
return true ;
2010-09-16 13:14:14 +06:00
}
2012-02-18 12:12:49 +01:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
uint32 spellId = SPELL_BANANAS_FALL_TO_GROUND ;
switch ( urand ( 0 , 3 ))
{
case 1 : spellId = SPELL_ORANGE_FALLS_TO_GROUND ; break ;
case 2 : spellId = SPELL_PAPAYA_FALLS_TO_GROUND ; break ;
}
// sometimes, if you're lucky, you get a dwarf
if ( roll_chance_i ( 5 ))
spellId = SPELL_SUMMON_ADVENTUROUS_DWARF ;
GetCaster () -> CastSpell ( GetCaster (), spellId , true , NULL );
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHit += SpellEffectFn ( spell_q12634_despawn_fruit_tosser_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2010-09-16 13:14:14 +06:00
{
2012-02-18 12:12:49 +01:00
return new spell_q12634_despawn_fruit_tosser_SpellScript ();
2010-09-16 13:14:14 +06:00
}
};
2010-08-29 22:40:23 +06:00
// http://www.wowhead.com/quest=12683 Burning to Help
// 52308 Take Sputum Sample
class spell_q12683_take_sputum_sample : public SpellScriptLoader
{
public :
2012-02-18 12:12:49 +01:00
spell_q12683_take_sputum_sample () : SpellScriptLoader ( "spell_q12683_take_sputum_sample" ) { }
class spell_q12683_take_sputum_sample_SpellScript : public SpellScript
2010-08-29 22:40:23 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q12683_take_sputum_sample_SpellScript );
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
2014-11-24 18:57:49 +01:00
uint32 reqAuraId = GetSpellInfo () -> GetEffect ( EFFECT_1 ) -> CalcValue ();
2012-02-18 12:12:49 +01:00
Unit * caster = GetCaster ();
if ( caster -> HasAuraEffect ( reqAuraId , 0 ))
{
2014-11-24 18:57:49 +01:00
uint32 spellId = GetSpellInfo () -> GetEffect ( EFFECT_0 ) -> CalcValue ();
2012-02-18 12:12:49 +01:00
caster -> CastSpell ( caster , spellId , true , NULL );
}
}
2010-08-29 22:40:23 +06:00
2014-04-29 16:35:11 +02:00
void Register () override
2010-08-29 22:40:23 +06:00
{
2012-02-18 12:12:49 +01:00
OnEffectHit += SpellEffectFn ( spell_q12683_take_sputum_sample_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
2010-08-29 22:40:23 +06:00
}
2012-02-18 12:12:49 +01:00
};
2010-08-29 22:40:23 +06:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2010-08-29 22:40:23 +06:00
{
2012-02-18 12:12:49 +01:00
return new spell_q12683_take_sputum_sample_SpellScript ();
2010-08-29 22:40:23 +06:00
}
};
2011-01-30 18:22:30 +01:00
// http://www.wowhead.com/quest=12851 Going Bearback
// 54798 FLAMING Arrow Triggered Effect
2012-02-18 12:12:49 +01:00
enum Quest12851Data
2011-01-30 18:22:30 +01:00
{
NPC_FROSTGIANT = 29351 ,
NPC_FROSTWORG = 29358 ,
SPELL_FROSTGIANT_CREDIT = 58184 ,
SPELL_FROSTWORG_CREDIT = 58183 ,
SPELL_IMMOLATION = 54690 ,
SPELL_ABLAZE = 54683 ,
};
class spell_q12851_going_bearback : public SpellScriptLoader
{
public :
2012-02-18 12:12:49 +01:00
spell_q12851_going_bearback () : SpellScriptLoader ( "spell_q12851_going_bearback" ) { }
class spell_q12851_going_bearback_AuraScript : public AuraScript
2011-01-30 18:22:30 +01:00
{
2012-02-18 12:12:49 +01:00
PrepareAuraScript ( spell_q12851_going_bearback_AuraScript );
void HandleEffectApply ( AuraEffect const * /*aurEff*/ , AuraEffectHandleModes /*mode*/ )
2011-01-30 18:22:30 +01:00
{
2012-02-18 12:12:49 +01:00
if ( Unit * caster = GetCaster ())
2011-01-30 18:22:30 +01:00
{
2012-02-18 12:12:49 +01:00
Unit * target = GetTarget ();
2012-04-07 21:09:04 -05:00
// Already in fire
if ( target -> HasAura ( SPELL_ABLAZE ))
return ;
2012-06-27 15:04:07 -04:00
2012-02-18 12:12:49 +01:00
if ( Player * player = caster -> GetCharmerOrOwnerPlayerOrPlayerItself ())
2011-01-30 18:22:30 +01:00
{
2012-02-18 12:12:49 +01:00
switch ( target -> GetEntry ())
{
case NPC_FROSTWORG :
target -> CastSpell ( player , SPELL_FROSTWORG_CREDIT , true );
target -> CastSpell ( target , SPELL_IMMOLATION , true );
target -> CastSpell ( target , SPELL_ABLAZE , true );
break ;
case NPC_FROSTGIANT :
target -> CastSpell ( player , SPELL_FROSTGIANT_CREDIT , true );
target -> CastSpell ( target , SPELL_IMMOLATION , true );
target -> CastSpell ( target , SPELL_ABLAZE , true );
break ;
}
2011-01-30 18:22:30 +01:00
}
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
AfterEffectApply += AuraEffectApplyFn ( spell_q12851_going_bearback_AuraScript :: HandleEffectApply , EFFECT_0 , SPELL_AURA_PERIODIC_DUMMY , AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK );
}
2011-01-30 18:22:30 +01:00
2012-02-18 12:12:49 +01:00
};
2011-01-30 18:22:30 +01:00
2014-04-29 16:35:11 +02:00
AuraScript * GetAuraScript () const override
2012-02-18 12:12:49 +01:00
{
return new spell_q12851_going_bearback_AuraScript ();
}
2011-01-30 18:22:30 +01:00
};
2010-09-04 02:33:57 +06:00
// http://www.wowhead.com/quest=12937 Relief for the Fallen
// 55804 Healing Finished
2012-02-18 12:12:49 +01:00
enum Quest12937Data
2010-08-29 22:40:23 +06:00
{
SPELL_TRIGGER_AID_OF_THE_EARTHEN = 55809 ,
NPC_FALLEN_EARTHEN_DEFENDER = 30035 ,
};
class spell_q12937_relief_for_the_fallen : public SpellScriptLoader
{
public :
2012-02-18 12:12:49 +01:00
spell_q12937_relief_for_the_fallen () : SpellScriptLoader ( "spell_q12937_relief_for_the_fallen" ) { }
2010-08-29 22:40:23 +06:00
2012-02-18 12:12:49 +01:00
class spell_q12937_relief_for_the_fallen_SpellScript : public SpellScript
2010-08-29 22:40:23 +06:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q12937_relief_for_the_fallen_SpellScript );
2014-04-29 16:35:11 +02:00
bool Load () override
2010-08-29 22:40:23 +06:00
{
2012-02-18 12:12:49 +01:00
return GetCaster () -> GetTypeId () == TYPEID_PLAYER ;
}
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ ) override
2012-02-18 12:12:49 +01:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_TRIGGER_AID_OF_THE_EARTHEN ))
return false ;
return true ;
}
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Player * caster = GetCaster () -> ToPlayer ();
2011-09-29 12:43:05 +02:00
if ( Creature * target = GetHitCreature ())
2010-08-29 22:40:23 +06:00
{
2012-02-18 12:12:49 +01:00
caster -> CastSpell ( caster , SPELL_TRIGGER_AID_OF_THE_EARTHEN , true , NULL );
2014-09-14 16:54:21 +02:00
caster -> KilledMonsterCredit ( NPC_FALLEN_EARTHEN_DEFENDER );
2011-07-02 23:16:45 +02:00
target -> DespawnOrUnsummon ();
2010-08-29 22:40:23 +06:00
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12937_relief_for_the_fallen_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2010-08-29 22:40:23 +06:00
{
2012-02-18 12:12:49 +01:00
return new spell_q12937_relief_for_the_fallen_SpellScript ();
2010-08-29 22:40:23 +06:00
}
};
2012-02-18 12:12:49 +01:00
enum Whoarethey
2011-03-10 20:54:24 +01:00
{
SPELL_MALE_DISGUISE = 38080 ,
SPELL_FEMALE_DISGUISE = 38081 ,
SPELL_GENERIC_DISGUISE = 32756
};
class spell_q10041_q10040_who_are_they : public SpellScriptLoader
{
public :
spell_q10041_q10040_who_are_they () : SpellScriptLoader ( "spell_q10041_q10040_who_are_they" ) { }
class spell_q10041_q10040_who_are_they_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q10041_q10040_who_are_they_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ ) override
2011-03-10 20:54:24 +01:00
{
2012-02-18 12:12:49 +01:00
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_MALE_DISGUISE ) || ! sSpellMgr -> GetSpellInfo ( SPELL_FEMALE_DISGUISE ) || ! sSpellMgr -> GetSpellInfo ( SPELL_GENERIC_DISGUISE ))
2011-03-10 20:54:24 +01:00
return false ;
return true ;
}
void HandleScript ( SpellEffIndex effIndex )
{
2011-03-19 11:44:04 +01:00
PreventHitDefaultEffect ( effIndex );
2012-02-18 12:12:49 +01:00
if ( Player * target = GetHitPlayer ())
{
target -> CastSpell ( target , target -> getGender () == GENDER_MALE ? SPELL_MALE_DISGUISE : SPELL_FEMALE_DISGUISE , true );
target -> CastSpell ( target , SPELL_GENERIC_DISGUISE , true );
}
2011-03-10 20:54:24 +01:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2011-03-10 20:54:24 +01:00
{
2011-09-25 13:29:17 +02:00
OnEffectHitTarget += SpellEffectFn ( spell_q10041_q10040_who_are_they_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
2011-03-10 20:54:24 +01:00
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2011-03-10 20:54:24 +01:00
{
return new spell_q10041_q10040_who_are_they_SpellScript ();
}
};
2011-04-06 11:34:50 +02:00
enum symboloflife
{
SPELL_PERMANENT_FEIGN_DEATH = 29266 ,
};
// 8593 Symbol of life dummy
class spell_symbol_of_life_dummy : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_symbol_of_life_dummy () : SpellScriptLoader ( "spell_symbol_of_life_dummy" ) { }
2011-04-06 11:34:50 +02:00
2012-02-18 12:12:49 +01:00
class spell_symbol_of_life_dummy_SpellScript : public SpellScript
2011-04-06 11:34:50 +02:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_symbol_of_life_dummy_SpellScript );
void HandleDummy ( SpellEffIndex /*effIndex*/ )
2011-04-06 11:34:50 +02:00
{
2012-02-18 12:12:49 +01:00
if ( Creature * target = GetHitCreature ())
2011-04-06 11:34:50 +02:00
{
2012-02-18 12:12:49 +01:00
if ( target -> HasAura ( SPELL_PERMANENT_FEIGN_DEATH ))
{
target -> RemoveAurasDueToSpell ( SPELL_PERMANENT_FEIGN_DEATH );
2014-10-26 22:06:48 +01:00
target -> SetUInt32Value ( OBJECT_DYNAMIC_FLAGS , 0 );
2012-02-18 12:12:49 +01:00
target -> SetUInt32Value ( UNIT_FIELD_FLAGS_2 , 0 );
target -> SetHealth ( target -> GetMaxHealth () / 2 );
target -> SetPower ( POWER_MANA , uint32 ( target -> GetMaxPower ( POWER_MANA ) * 0.75f ));
}
2011-04-06 11:34:50 +02:00
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_symbol_of_life_dummy_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2011-04-06 11:34:50 +02:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-02-18 12:12:49 +01:00
{
return new spell_symbol_of_life_dummy_SpellScript ();
2015-05-27 21:16:06 -04:00
}
2011-04-06 11:34:50 +02:00
};
2011-06-12 19:46:33 +03:00
// http://www.wowhead.com/quest=12659 Scalps!
// 52090 Ahunae's Knife
2012-02-18 12:12:49 +01:00
enum Quest12659Data
2011-06-12 19:46:33 +03:00
{
NPC_SCALPS_KC_BUNNY = 28622 ,
};
class spell_q12659_ahunaes_knife : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q12659_ahunaes_knife () : SpellScriptLoader ( "spell_q12659_ahunaes_knife" ) { }
2011-06-12 19:46:33 +03:00
2012-02-18 12:12:49 +01:00
class spell_q12659_ahunaes_knife_SpellScript : public SpellScript
2011-06-12 19:46:33 +03:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q12659_ahunaes_knife_SpellScript );
2011-06-12 19:46:33 +03:00
2014-04-29 16:35:11 +02:00
bool Load () override
2011-06-12 19:46:33 +03:00
{
2012-02-18 12:12:49 +01:00
return GetCaster () -> GetTypeId () == TYPEID_PLAYER ;
2011-06-12 19:46:33 +03:00
}
2012-02-18 12:12:49 +01:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Player * caster = GetCaster () -> ToPlayer ();
if ( Creature * target = GetHitCreature ())
{
2012-04-24 16:53:37 +02:00
target -> DespawnOrUnsummon ();
2014-09-14 16:54:21 +02:00
caster -> KilledMonsterCredit ( NPC_SCALPS_KC_BUNNY );
2012-02-18 12:12:49 +01:00
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12659_ahunaes_knife_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2011-06-12 19:46:33 +03:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-02-18 12:12:49 +01:00
{
return new spell_q12659_ahunaes_knife_SpellScript ();
2015-05-27 21:16:06 -04:00
}
2011-06-12 19:46:33 +03:00
};
2011-08-24 15:57:14 +02:00
enum StoppingTheSpread
{
2011-08-24 16:45:49 +02:00
NPC_VILLAGER_KILL_CREDIT = 18240 ,
2014-03-21 23:35:19 +01:00
SPELL_FLAMES = 39199
2011-08-24 15:57:14 +02:00
};
class spell_q9874_liquid_fire : public SpellScriptLoader
{
public :
spell_q9874_liquid_fire () : SpellScriptLoader ( "spell_q9874_liquid_fire" )
{
}
class spell_q9874_liquid_fire_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q9874_liquid_fire_SpellScript );
2014-04-29 16:35:11 +02:00
bool Load () override
2012-02-18 12:12:49 +01:00
{
return GetCaster () -> GetTypeId () == TYPEID_PLAYER ;
}
2011-08-24 15:57:14 +02:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Player * caster = GetCaster () -> ToPlayer ();
2012-02-18 12:12:49 +01:00
if ( Creature * target = GetHitCreature ())
2014-03-21 23:35:19 +01:00
if ( target && ! target -> HasAura ( SPELL_FLAMES ))
2012-02-18 12:12:49 +01:00
{
2014-09-14 16:54:21 +02:00
caster -> KilledMonsterCredit ( NPC_VILLAGER_KILL_CREDIT );
2012-02-18 12:12:49 +01:00
target -> CastSpell ( target , SPELL_FLAMES , true );
target -> DespawnOrUnsummon ( 60000 );
}
2011-08-24 15:57:14 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2011-08-24 15:57:14 +02:00
{
2011-09-25 13:29:17 +02:00
OnEffectHitTarget += SpellEffectFn ( spell_q9874_liquid_fire_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
2011-08-24 15:57:14 +02:00
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2011-08-24 15:57:14 +02:00
{
return new spell_q9874_liquid_fire_SpellScript ();
2015-05-27 21:16:06 -04:00
}
2011-08-24 15:57:14 +02:00
};
2011-08-24 16:45:49 +02:00
enum SalvagingLifesStength
{
NPC_SHARD_KILL_CREDIT = 29303 ,
};
class spell_q12805_lifeblood_dummy : public SpellScriptLoader
{
public :
spell_q12805_lifeblood_dummy () : SpellScriptLoader ( "spell_q12805_lifeblood_dummy" )
{
}
class spell_q12805_lifeblood_dummy_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12805_lifeblood_dummy_SpellScript );
2014-04-29 16:35:11 +02:00
bool Load () override
2012-02-18 12:12:49 +01:00
{
return GetCaster () -> GetTypeId () == TYPEID_PLAYER ;
}
2011-08-24 16:45:49 +02:00
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
Player * caster = GetCaster () -> ToPlayer ();
2012-02-18 12:12:49 +01:00
if ( Creature * target = GetHitCreature ())
{
2014-09-14 16:54:21 +02:00
caster -> KilledMonsterCredit ( NPC_SHARD_KILL_CREDIT );
2012-02-18 12:12:49 +01:00
target -> CastSpell ( target , uint32 ( GetEffectValue ()), true );
target -> DespawnOrUnsummon ( 2000 );
}
2011-08-24 16:45:49 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2011-08-24 16:45:49 +02:00
{
2011-09-25 13:29:17 +02:00
OnEffectHitTarget += SpellEffectFn ( spell_q12805_lifeblood_dummy_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
2011-08-24 16:45:49 +02:00
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2011-08-24 16:45:49 +02:00
{
return new spell_q12805_lifeblood_dummy_SpellScript ();
2015-05-27 21:16:06 -04:00
}
2011-08-24 16:45:49 +02:00
};
2011-09-03 16:43:15 +02:00
/*
http://www.wowhead.com/quest=13283 King of the Mountain
http://www.wowhead.com/quest=13280 King of the Mountain
59643 Plant Horde Battle Standard
4338 Plant Alliance Battle Standard
*/
2012-02-18 12:12:49 +01:00
enum BattleStandard
2011-09-03 16:43:15 +02:00
{
2011-09-29 12:43:05 +02:00
NPC_KING_OF_THE_MOUNTAINT_KC = 31766 ,
2011-09-03 16:43:15 +02:00
};
2011-10-22 13:18:17 +01:00
2011-09-03 16:43:15 +02:00
class spell_q13280_13283_plant_battle_standard : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q13280_13283_plant_battle_standard () : SpellScriptLoader ( "spell_q13280_13283_plant_battle_standard" ) { }
2011-09-03 16:43:15 +02:00
2012-02-18 12:12:49 +01:00
class spell_q13280_13283_plant_battle_standard_SpellScript : public SpellScript
2011-09-29 12:43:05 +02:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q13280_13283_plant_battle_standard_SpellScript );
2011-09-03 16:43:15 +02:00
2012-02-18 12:12:49 +01:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Unit * caster = GetCaster ();
if ( caster -> IsVehicle ())
if ( Unit * player = caster -> GetVehicleKit () -> GetPassenger ( 0 ))
2014-09-14 16:54:21 +02:00
player -> ToPlayer () -> KilledMonsterCredit ( NPC_KING_OF_THE_MOUNTAINT_KC );
2012-02-18 12:12:49 +01:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHit += SpellEffectFn ( spell_q13280_13283_plant_battle_standard_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2011-09-03 16:43:15 +02:00
{
2012-02-18 12:12:49 +01:00
return new spell_q13280_13283_plant_battle_standard_SpellScript ();
2011-09-03 16:43:15 +02:00
}
};
2011-10-22 13:18:17 +01:00
enum ChumTheWaterSummons
{
SUMMON_ANGRY_KVALDIR = 66737 ,
SUMMON_NORTH_SEA_MAKO = 66738 ,
SUMMON_NORTH_SEA_THRESHER = 66739 ,
SUMMON_NORTH_SEA_BLUE_SHARK = 66740
};
class spell_q14112_14145_chum_the_water : public SpellScriptLoader
{
2012-02-18 12:12:49 +01:00
public :
spell_q14112_14145_chum_the_water () : SpellScriptLoader ( "spell_q14112_14145_chum_the_water" ) { }
2011-10-22 13:18:17 +01:00
2012-02-18 12:12:49 +01:00
class spell_q14112_14145_chum_the_water_SpellScript : public SpellScript
2011-10-22 13:18:17 +01:00
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q14112_14145_chum_the_water_SpellScript );
2012-02-18 16:52:08 +01:00
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ ) override
2012-02-18 12:12:49 +01:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SUMMON_ANGRY_KVALDIR ) || ! sSpellMgr -> GetSpellInfo ( SUMMON_NORTH_SEA_MAKO ) || ! sSpellMgr -> GetSpellInfo ( SUMMON_NORTH_SEA_THRESHER ) || ! sSpellMgr -> GetSpellInfo ( SUMMON_NORTH_SEA_BLUE_SHARK ))
return false ;
return true ;
}
2011-10-22 13:18:17 +01:00
2012-02-18 12:12:49 +01:00
void HandleScriptEffect ( SpellEffIndex /*effIndex*/ )
{
Unit * caster = GetCaster ();
caster -> CastSpell ( caster , RAND ( SUMMON_ANGRY_KVALDIR , SUMMON_NORTH_SEA_MAKO , SUMMON_NORTH_SEA_THRESHER , SUMMON_NORTH_SEA_BLUE_SHARK ));
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-18 12:12:49 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q14112_14145_chum_the_water_SpellScript :: HandleScriptEffect , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2011-10-22 13:18:17 +01:00
{
2012-02-18 12:12:49 +01:00
return new spell_q14112_14145_chum_the_water_SpellScript ();
2011-10-22 13:18:17 +01:00
}
};
2011-12-25 00:13:28 +01:00
// http://old01.wowhead.com/quest=9452 - Red Snapper - Very Tasty!
enum RedSnapperVeryTasty
{
2014-12-28 17:03:33 +00:00
ITEM_RED_SNAPPER = 23614 ,
SPELL_CAST_NET = 29866 ,
2016-07-15 18:45:50 -03:00
SPELL_NEW_SUMMON_TEST = 49214
2011-12-25 00:13:28 +01:00
};
class spell_q9452_cast_net : public SpellScriptLoader
{
public :
spell_q9452_cast_net () : SpellScriptLoader ( "spell_q9452_cast_net" ) { }
class spell_q9452_cast_net_SpellScript : public SpellScript
{
2012-02-18 12:12:49 +01:00
PrepareSpellScript ( spell_q9452_cast_net_SpellScript );
2014-04-29 16:35:11 +02:00
bool Load () override
2012-02-18 12:12:49 +01:00
{
return GetCaster () -> GetTypeId () == TYPEID_PLAYER ;
}
2011-12-25 00:13:28 +01:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Player * caster = GetCaster () -> ToPlayer ();
2012-02-21 09:28:07 -05:00
if ( roll_chance_i ( 66 ))
caster -> AddItem ( ITEM_RED_SNAPPER , 1 );
else
caster -> CastSpell ( caster , SPELL_NEW_SUMMON_TEST , true );
2011-12-25 00:13:28 +01:00
}
2014-12-28 17:03:33 +00:00
void HandleActiveObject ( SpellEffIndex effIndex )
{
PreventHitDefaultEffect ( effIndex );
GetHitGObj () -> SetRespawnTime ( roll_chance_i ( 50 ) ? 2 * MINUTE : 3 * MINUTE );
GetHitGObj () -> Use ( GetCaster ());
GetHitGObj () -> SetLootState ( GO_JUST_DEACTIVATED );
}
2014-04-29 16:35:11 +02:00
void Register () override
2011-12-25 00:13:28 +01:00
{
OnEffectHit += SpellEffectFn ( spell_q9452_cast_net_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
2014-12-28 17:03:33 +00:00
OnEffectHitTarget += SpellEffectFn ( spell_q9452_cast_net_SpellScript :: HandleActiveObject , EFFECT_1 , SPELL_EFFECT_ACTIVATE_OBJECT );
2011-12-25 00:13:28 +01:00
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2011-12-25 00:13:28 +01:00
{
return new spell_q9452_cast_net_SpellScript ();
}
};
2016-08-23 13:21:03 +02:00
enum PoundDrumSpells
{
SPELL_SUMMON_DEEP_JORMUNGAR = 66510 ,
SPELL_STORMFORGED_MOLE_MACHINE = 66492
};
class spell_q14076_14092_pound_drum : public SpellScriptLoader
{
public :
spell_q14076_14092_pound_drum () : SpellScriptLoader ( "spell_q14076_14092_pound_drum" ) { }
class spell_q14076_14092_pound_drum_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q14076_14092_pound_drum_SpellScript );
void HandleSummon ()
{
Unit * caster = GetCaster ();
if ( roll_chance_i ( 80 ))
caster -> CastSpell ( caster , SPELL_SUMMON_DEEP_JORMUNGAR , true );
else
caster -> CastSpell ( caster , SPELL_STORMFORGED_MOLE_MACHINE , true );
}
void HandleActiveObject ( SpellEffIndex /*effIndex*/ )
{
GetHitGObj () -> SetLootState ( GO_JUST_DEACTIVATED );
}
void Register () override
{
OnCast += SpellCastFn ( spell_q14076_14092_pound_drum_SpellScript :: HandleSummon );
OnEffectHitTarget += SpellEffectFn ( spell_q14076_14092_pound_drum_SpellScript :: HandleActiveObject , EFFECT_0 , SPELL_EFFECT_ACTIVATE_OBJECT );
}
};
SpellScript * GetSpellScript () const override
{
return new spell_q14076_14092_pound_drum_SpellScript ();
}
};
class spell_q12279_cast_net : public SpellScriptLoader
{
public :
spell_q12279_cast_net () : SpellScriptLoader ( "spell_q12279_cast_net" ) { }
class spell_q12279_cast_net_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12279_cast_net_SpellScript );
void HandleActiveObject ( SpellEffIndex /*effIndex*/ )
{
GetHitGObj () -> SetLootState ( GO_JUST_DEACTIVATED );
}
void Register () override
{
OnEffectHitTarget += SpellEffectFn ( spell_q12279_cast_net_SpellScript :: HandleActiveObject , EFFECT_1 , SPELL_EFFECT_ACTIVATE_OBJECT );
}
};
SpellScript * GetSpellScript () const override
{
return new spell_q12279_cast_net_SpellScript ();
}
};
2013-07-06 01:00:05 +02:00
enum HodirsHelm
{
2014-09-04 19:42:37 +02:00
SAY_1 = 1 ,
SAY_2 = 2 ,
NPC_KILLCREDIT = 30210 , // Hodir's Helm KC Bunny
NPC_ICE_SPIKE_BUNNY = 30215
2013-07-06 01:00:05 +02:00
};
2012-02-22 22:38:16 +00:00
class spell_q12987_read_pronouncement : public SpellScriptLoader
{
public :
spell_q12987_read_pronouncement () : SpellScriptLoader ( "spell_q12987_read_pronouncement" ) { }
class spell_q12987_read_pronouncement_AuraScript : public AuraScript
{
PrepareAuraScript ( spell_q12987_read_pronouncement_AuraScript );
void OnApply ( AuraEffect const * /*aurEff*/ , AuraEffectHandleModes /*mode*/ )
{
// player must cast kill credit and do emote text, according to sniff
if ( Player * target = GetTarget () -> ToPlayer ())
{
2014-09-04 19:42:37 +02:00
if ( Creature * trigger = target -> FindNearestCreature ( NPC_ICE_SPIKE_BUNNY , 25.0f ))
{
sCreatureTextMgr -> SendChat ( trigger , SAY_1 , target , CHAT_MSG_ADDON , LANG_ADDON , TEXT_RANGE_NORMAL , 0 , TEAM_OTHER , false , target );
target -> KilledMonsterCredit ( NPC_KILLCREDIT );
sCreatureTextMgr -> SendChat ( trigger , SAY_2 , target , CHAT_MSG_ADDON , LANG_ADDON , TEXT_RANGE_NORMAL , 0 , TEAM_OTHER , false , target );
}
2012-02-22 22:38:16 +00:00
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-02-22 22:38:16 +00:00
{
AfterEffectApply += AuraEffectApplyFn ( spell_q12987_read_pronouncement_AuraScript :: OnApply , EFFECT_0 , SPELL_AURA_NONE , AURA_EFFECT_HANDLE_REAL );
}
};
2014-04-29 16:35:11 +02:00
AuraScript * GetAuraScript () const override
2012-02-22 22:38:16 +00:00
{
return new spell_q12987_read_pronouncement_AuraScript ();
}
};
2012-05-10 13:43:40 +02:00
enum LeaveNothingToChance
{
NPC_UPPER_MINE_SHAFT = 27436 ,
NPC_LOWER_MINE_SHAFT = 27437 ,
SPELL_UPPER_MINE_SHAFT_CREDIT = 48744 ,
SPELL_LOWER_MINE_SHAFT_CREDIT = 48745 ,
};
class spell_q12277_wintergarde_mine_explosion : public SpellScriptLoader
{
public :
spell_q12277_wintergarde_mine_explosion () : SpellScriptLoader ( "spell_q12277_wintergarde_mine_explosion" ) { }
2012-05-10 13:52:22 +02:00
2012-05-10 13:43:40 +02:00
class spell_q12277_wintergarde_mine_explosion_SpellScript : public SpellScript
{
2012-05-10 13:52:22 +02:00
PrepareSpellScript ( spell_q12277_wintergarde_mine_explosion_SpellScript );
2012-05-10 13:43:40 +02:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
if ( Creature * unitTarget = GetHitCreature ())
{
if ( Unit * caster = GetCaster ())
{
if ( caster -> GetTypeId () == TYPEID_UNIT )
{
if ( Unit * owner = caster -> GetOwner ())
{
switch ( unitTarget -> GetEntry ())
{
case NPC_UPPER_MINE_SHAFT :
caster -> CastSpell ( owner , SPELL_UPPER_MINE_SHAFT_CREDIT , true );
break ;
case NPC_LOWER_MINE_SHAFT :
caster -> CastSpell ( owner , SPELL_LOWER_MINE_SHAFT_CREDIT , true );
break ;
default :
break ;
}
}
}
}
}
}
2012-05-10 13:52:22 +02:00
2014-04-29 16:35:11 +02:00
void Register () override
2012-05-10 13:43:40 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12277_wintergarde_mine_explosion_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2012-05-10 13:52:22 +02:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-05-10 13:43:40 +02:00
{
return new spell_q12277_wintergarde_mine_explosion_SpellScript ();
}
};
2012-06-27 15:04:07 -04:00
enum FocusOnTheBeach
{
SPELL_BUNNY_CREDIT_BEAM = 47390 ,
};
class spell_q12066_bunny_kill_credit : public SpellScriptLoader
{
public :
spell_q12066_bunny_kill_credit () : SpellScriptLoader ( "spell_q12066_bunny_kill_credit" ) { }
class spell_q12066_bunny_kill_credit_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12066_bunny_kill_credit_SpellScript );
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
if ( Creature * target = GetHitCreature ())
2012-06-27 23:17:40 +02:00
target -> CastSpell ( GetCaster (), SPELL_BUNNY_CREDIT_BEAM , false );
2012-06-27 15:04:07 -04:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-06-27 15:04:07 -04:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12066_bunny_kill_credit_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-06-27 15:04:07 -04:00
{
return new spell_q12066_bunny_kill_credit_SpellScript ();
}
};
2012-07-04 01:48:14 +02:00
enum ACleansingSong
{
SPELL_SUMMON_SPIRIT_ATAH = 52954 ,
SPELL_SUMMON_SPIRIT_HAKHALAN = 52958 ,
SPELL_SUMMON_SPIRIT_KOOSU = 52959 ,
AREA_BITTERTIDELAKE = 4385 ,
AREA_RIVERSHEART = 4290 ,
AREA_WINTERGRASPRIVER = 4388 ,
};
class spell_q12735_song_of_cleansing : public SpellScriptLoader
{
public :
spell_q12735_song_of_cleansing () : SpellScriptLoader ( "spell_q12735_song_of_cleansing" ) { }
class spell_q12735_song_of_cleansing_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12735_song_of_cleansing_SpellScript );
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
Unit * caster = GetCaster ();
2012-07-05 09:07:06 -04:00
switch ( caster -> GetAreaId ())
{
case AREA_BITTERTIDELAKE :
caster -> CastSpell ( caster , SPELL_SUMMON_SPIRIT_ATAH );
break ;
case AREA_RIVERSHEART :
caster -> CastSpell ( caster , SPELL_SUMMON_SPIRIT_HAKHALAN );
break ;
case AREA_WINTERGRASPRIVER :
caster -> CastSpell ( caster , SPELL_SUMMON_SPIRIT_KOOSU );
break ;
default :
break ;
}
2012-07-04 01:48:14 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-07-04 01:48:14 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12735_song_of_cleansing_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-07-04 01:48:14 +02:00
{
return new spell_q12735_song_of_cleansing_SpellScript ();
}
};
2012-08-26 02:55:14 +03:00
enum DefendingWyrmrestTemple
{
SPELL_SUMMON_WYRMREST_DEFENDER = 49207
};
class spell_q12372_cast_from_gossip_trigger : public SpellScriptLoader
{
public :
spell_q12372_cast_from_gossip_trigger () : SpellScriptLoader ( "spell_q12372_cast_from_gossip_trigger" ) { }
class spell_q12372_cast_from_gossip_trigger_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12372_cast_from_gossip_trigger_SpellScript );
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
2012-08-27 14:40:12 +01:00
GetCaster () -> CastSpell ( GetCaster (), SPELL_SUMMON_WYRMREST_DEFENDER , true );
2012-08-26 02:55:14 +03:00
}
2012-08-27 14:29:00 +01:00
2014-04-29 16:35:11 +02:00
void Register () override
2012-08-26 02:55:14 +03:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12372_cast_from_gossip_trigger_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-08-26 02:55:14 +03:00
{
return new spell_q12372_cast_from_gossip_trigger_SpellScript ();
}
};
2012-08-28 20:58:03 +03:00
// http://www.wowhead.com/quest=12372 Defending Wyrmrest Temple
// 49370 - Wyrmrest Defender: Destabilize Azure Dragonshrine Effect
2012-08-28 19:31:15 +01:00
enum Quest12372Data
2012-08-28 20:58:03 +03:00
{
2012-12-24 00:48:41 +02:00
// NPCs
2012-08-28 20:58:03 +03:00
NPC_WYRMREST_TEMPLE_CREDIT = 27698 ,
2012-12-24 00:48:41 +02:00
// Spells
WHISPER_ON_HIT_BY_FORCE_WHISPER = 1
2012-08-28 20:58:03 +03:00
};
class spell_q12372_destabilize_azure_dragonshrine_dummy : public SpellScriptLoader
{
public :
spell_q12372_destabilize_azure_dragonshrine_dummy () : SpellScriptLoader ( "spell_q12372_destabilize_azure_dragonshrine_dummy" ) { }
class spell_q12372_destabilize_azure_dragonshrine_dummy_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12372_destabilize_azure_dragonshrine_dummy_SpellScript );
2012-08-30 22:44:03 +01:00
2012-08-28 20:58:03 +03:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
2012-08-28 19:31:15 +01:00
if ( GetHitCreature ())
if ( Unit * caster = GetOriginalCaster ())
if ( Vehicle * vehicle = caster -> GetVehicleKit ())
if ( Unit * passenger = vehicle -> GetPassenger ( 0 ))
if ( Player * player = passenger -> ToPlayer ())
2014-09-14 16:54:21 +02:00
player -> KilledMonsterCredit ( NPC_WYRMREST_TEMPLE_CREDIT );
2012-08-28 19:31:15 +01:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-08-28 20:58:03 +03:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12372_destabilize_azure_dragonshrine_dummy_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-08-28 20:58:03 +03:00
{
return new spell_q12372_destabilize_azure_dragonshrine_dummy_SpellScript ();
}
};
2013-12-25 14:16:55 -03:30
// ID - 50287 Azure Dragon: On Death Force Cast Wyrmrest Defender to Whisper to Controller - Random (cast from Azure Dragons and Azure Drakes on death)
2012-12-24 00:48:41 +02:00
class spell_q12372_azure_on_death_force_whisper : public SpellScriptLoader
{
public :
spell_q12372_azure_on_death_force_whisper () : SpellScriptLoader ( "spell_q12372_azure_on_death_force_whisper" ) { }
class spell_q12372_azure_on_death_force_whisper_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12372_azure_on_death_force_whisper_SpellScript );
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
if ( Creature * defender = GetHitCreature ())
2013-12-23 14:23:49 +01:00
defender -> AI () -> Talk ( WHISPER_ON_HIT_BY_FORCE_WHISPER , defender -> GetCharmerOrOwner ());
2012-12-24 00:48:41 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-12-24 00:48:41 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12372_azure_on_death_force_whisper_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-12-24 00:48:41 +02:00
{
return new spell_q12372_azure_on_death_force_whisper_SpellScript ();
}
};
2012-09-13 15:01:19 +01:00
// "Bombing Run" and "Bomb Them Again!"
2012-09-13 12:27:27 +03:00
enum Quest11010_11102_11023Data
{
// Spell
2012-09-13 15:01:19 +01:00
SPELL_FLAK_CANNON_TRIGGER = 40110 ,
SPELL_CHOOSE_LOC = 40056 ,
SPELL_AGGRO_CHECK = 40112 ,
2012-09-13 15:32:17 +01:00
// NPCs
2012-09-13 15:01:19 +01:00
NPC_FEL_CANNON2 = 23082
2012-09-13 12:27:27 +03:00
};
// 40113 Knockdown Fel Cannon: The Aggro Check Aura
class spell_q11010_q11102_q11023_aggro_check_aura : public SpellScriptLoader
{
public :
spell_q11010_q11102_q11023_aggro_check_aura () : SpellScriptLoader ( "spell_q11010_q11102_q11023_aggro_check_aura" ) { }
class spell_q11010_q11102_q11023_aggro_check_aura_AuraScript : public AuraScript
{
PrepareAuraScript ( spell_q11010_q11102_q11023_aggro_check_aura_AuraScript );
void HandleTriggerSpell ( AuraEffect const * /*aurEff*/ )
{
if ( Unit * target = GetTarget ())
// On trigger proccing
target -> CastSpell ( target , SPELL_AGGRO_CHECK );
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-09-13 12:27:27 +03:00
{
OnEffectPeriodic += AuraEffectPeriodicFn ( spell_q11010_q11102_q11023_aggro_check_aura_AuraScript :: HandleTriggerSpell , EFFECT_0 , SPELL_AURA_PERIODIC_TRIGGER_SPELL );
}
};
2014-04-29 16:35:11 +02:00
AuraScript * GetAuraScript () const override
2012-09-13 12:27:27 +03:00
{
return new spell_q11010_q11102_q11023_aggro_check_aura_AuraScript ();
}
};
// 40112 Knockdown Fel Cannon: The Aggro Check
class spell_q11010_q11102_q11023_aggro_check : public SpellScriptLoader
{
public :
spell_q11010_q11102_q11023_aggro_check () : SpellScriptLoader ( "spell_q11010_q11102_q11023_aggro_check" ) { }
class spell_q11010_q11102_q11023_aggro_check_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q11010_q11102_q11023_aggro_check_SpellScript );
2012-09-13 15:32:17 +01:00
2012-09-13 12:27:27 +03:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
if ( Player * playerTarget = GetHitPlayer ())
2012-09-13 15:32:17 +01:00
// Check if found player target is on fly mount or using flying form
2012-09-13 12:27:27 +03:00
if ( playerTarget -> HasAuraType ( SPELL_AURA_FLY ) || playerTarget -> HasAuraType ( SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED ))
playerTarget -> CastSpell ( playerTarget , SPELL_FLAK_CANNON_TRIGGER , TRIGGERED_IGNORE_CASTER_MOUNTED_OR_ON_VEHICLE );
}
2012-09-13 15:32:17 +01:00
2014-04-29 16:35:11 +02:00
void Register () override
2012-09-13 12:27:27 +03:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q11010_q11102_q11023_aggro_check_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2012-09-13 15:32:17 +01:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-09-13 12:27:27 +03:00
{
return new spell_q11010_q11102_q11023_aggro_check_SpellScript ();
}
};
// 40119 Knockdown Fel Cannon: The Aggro Burst
class spell_q11010_q11102_q11023_aggro_burst : public SpellScriptLoader
{
public :
spell_q11010_q11102_q11023_aggro_burst () : SpellScriptLoader ( "spell_q11010_q11102_q11023_aggro_burst" ) { }
class spell_q11010_q11102_q11023_aggro_burst_AuraScript : public AuraScript
{
PrepareAuraScript ( spell_q11010_q11102_q11023_aggro_burst_AuraScript );
void HandleEffectPeriodic ( AuraEffect const * /*aurEff*/ )
{
if ( Unit * target = GetTarget ())
// On each tick cast Choose Loc to trigger summon
target -> CastSpell ( target , SPELL_CHOOSE_LOC );
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-09-13 12:27:27 +03:00
{
OnEffectPeriodic += AuraEffectPeriodicFn ( spell_q11010_q11102_q11023_aggro_burst_AuraScript :: HandleEffectPeriodic , EFFECT_0 , SPELL_AURA_PERIODIC_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
AuraScript * GetAuraScript () const override
2012-09-13 12:27:27 +03:00
{
return new spell_q11010_q11102_q11023_aggro_burst_AuraScript ();
}
};
// 40056 Knockdown Fel Cannon: Choose Loc
class spell_q11010_q11102_q11023_choose_loc : public SpellScriptLoader
{
public :
spell_q11010_q11102_q11023_choose_loc () : SpellScriptLoader ( "spell_q11010_q11102_q11023_choose_loc" ) { }
class spell_q11010_q11102_q11023_choose_loc_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q11010_q11102_q11023_choose_loc_SpellScript );
2012-09-13 15:32:17 +01:00
2012-09-13 12:27:27 +03:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Unit * caster = GetCaster ();
2012-09-13 15:32:17 +01:00
// Check for player that is in 65 y range
2012-09-13 15:01:19 +01:00
std :: list < Player *> playerList ;
2012-12-18 01:54:17 +02:00
Trinity :: AnyPlayerInObjectRangeCheck checker ( caster , 65.0f );
2012-09-13 15:32:17 +01:00
Trinity :: PlayerListSearcher < Trinity :: AnyPlayerInObjectRangeCheck > searcher ( caster , playerList , checker );
caster -> VisitNearbyWorldObject ( 65.0f , searcher );
2012-09-13 15:01:19 +01:00
for ( std :: list < Player *>:: const_iterator itr = playerList . begin (); itr != playerList . end (); ++ itr )
2012-09-13 15:32:17 +01:00
// Check if found player target is on fly mount or using flying form
2012-09-13 12:27:27 +03:00
if (( * itr ) -> HasAuraType ( SPELL_AURA_FLY ) || ( * itr ) -> HasAuraType ( SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED ))
// Summom Fel Cannon (bunny version) at found player
caster -> SummonCreature ( NPC_FEL_CANNON2 , ( * itr ) -> GetPositionX (), ( * itr ) -> GetPositionY (), ( * itr ) -> GetPositionZ ());
}
2012-09-13 15:32:17 +01:00
2014-04-29 16:35:11 +02:00
void Register () override
2012-09-13 12:27:27 +03:00
{
OnEffectHit += SpellEffectFn ( spell_q11010_q11102_q11023_choose_loc_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2012-09-13 15:32:17 +01:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-09-13 12:27:27 +03:00
{
return new spell_q11010_q11102_q11023_choose_loc_SpellScript ();
}
};
2012-09-13 15:41:16 +03:00
// 39844 - Skyguard Blasting Charge
2012-09-13 15:01:19 +01:00
// 40160 - Throw Bomb
class spell_q11010_q11102_q11023_q11008_check_fly_mount : public SpellScriptLoader
2012-09-13 15:41:16 +03:00
{
public :
2012-09-13 15:01:19 +01:00
spell_q11010_q11102_q11023_q11008_check_fly_mount () : SpellScriptLoader ( "spell_q11010_q11102_q11023_q11008_check_fly_mount" ) { }
2012-09-13 15:41:16 +03:00
2012-09-13 15:01:19 +01:00
class spell_q11010_q11102_q11023_q11008_check_fly_mount_SpellScript : public SpellScript
2012-09-13 15:41:16 +03:00
{
2012-09-13 15:01:19 +01:00
PrepareSpellScript ( spell_q11010_q11102_q11023_q11008_check_fly_mount_SpellScript );
2012-09-13 15:41:16 +03:00
SpellCastResult CheckRequirement ()
{
Unit * caster = GetCaster ();
2012-09-13 15:01:19 +01:00
// This spell will be cast only if caster has one of these auras
2012-09-13 15:41:16 +03:00
if ( ! ( caster -> HasAuraType ( SPELL_AURA_FLY ) || caster -> HasAuraType ( SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED )))
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW ;
return SPELL_CAST_OK ;
}
2014-04-29 16:35:11 +02:00
void Register () override
2012-09-13 15:41:16 +03:00
{
2012-09-13 15:01:19 +01:00
OnCheckCast += SpellCheckCastFn ( spell_q11010_q11102_q11023_q11008_check_fly_mount_SpellScript :: CheckRequirement );
2012-09-13 15:41:16 +03:00
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2012-09-13 15:41:16 +03:00
{
2012-09-13 15:01:19 +01:00
return new spell_q11010_q11102_q11023_q11008_check_fly_mount_SpellScript ();
2012-09-13 15:41:16 +03:00
}
};
2013-01-13 15:37:01 +01:00
enum SpellZuldrakRat
{
SPELL_SUMMON_GORGED_LURKING_BASILISK = 50928
};
class spell_q12527_zuldrak_rat : public SpellScriptLoader
{
public :
spell_q12527_zuldrak_rat () : SpellScriptLoader ( "spell_q12527_zuldrak_rat" ) { }
class spell_q12527_zuldrak_rat_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12527_zuldrak_rat_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spell*/ ) override
2013-01-13 15:37:01 +01:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_GORGED_LURKING_BASILISK ))
return false ;
return true ;
}
void HandleScriptEffect ( SpellEffIndex /* effIndex */ )
{
if ( GetHitAura () && GetHitAura () -> GetStackAmount () >= GetSpellInfo () -> StackAmount )
{
GetHitUnit () -> CastSpell (( Unit * ) NULL , SPELL_SUMMON_GORGED_LURKING_BASILISK , true );
if ( Creature * basilisk = GetHitUnit () -> ToCreature ())
basilisk -> DespawnOrUnsummon ();
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-01-13 15:37:01 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12527_zuldrak_rat_SpellScript :: HandleScriptEffect , EFFECT_1 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-01-13 15:37:01 +01:00
{
return new spell_q12527_zuldrak_rat_SpellScript ();
}
};
2014-01-23 20:55:47 +01:00
// 55368 - Summon Stefan
2013-06-17 16:44:04 +02:00
class spell_q12661_q12669_q12676_q12677_q12713_summon_stefan : public SpellScriptLoader
{
public :
spell_q12661_q12669_q12676_q12677_q12713_summon_stefan () : SpellScriptLoader ( "spell_q12661_q12669_q12676_q12677_q12713_summon_stefan" ) { }
class spell_q12661_q12669_q12676_q12677_q12713_summon_stefan_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12661_q12669_q12676_q12677_q12713_summon_stefan_SpellScript );
2014-01-23 20:55:47 +01:00
void SetDest ( SpellDestination & dest )
2013-06-17 16:44:04 +02:00
{
// Adjust effect summon position
2014-01-23 20:55:47 +01:00
Position const offset = { 0.0f , 0.0f , 20.0f , 0.0f };
dest . RelocateOffset ( offset );
2013-06-17 16:44:04 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-06-17 16:44:04 +02:00
{
2014-01-23 20:55:47 +01:00
OnDestinationTargetSelect += SpellDestinationTargetSelectFn ( spell_q12661_q12669_q12676_q12677_q12713_summon_stefan_SpellScript :: SetDest , EFFECT_0 , TARGET_DEST_CASTER_BACK );
2013-06-17 16:44:04 +02:00
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-06-17 16:44:04 +02:00
{
return new spell_q12661_q12669_q12676_q12677_q12713_summon_stefan_SpellScript ();
}
};
2013-06-13 12:44:07 +02:00
enum QuenchingMist
{
SPELL_FLICKERING_FLAMES = 53504
};
class spell_q12730_quenching_mist : public SpellScriptLoader
{
public :
spell_q12730_quenching_mist () : SpellScriptLoader ( "spell_q12730_quenching_mist" ) { }
class spell_q12730_quenching_mist_AuraScript : public AuraScript
{
PrepareAuraScript ( spell_q12730_quenching_mist_AuraScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellInfo*/ ) override
2013-06-13 12:44:07 +02:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_FLICKERING_FLAMES ))
return false ;
return true ;
}
void HandleEffectPeriodic ( AuraEffect const * /*aurEff*/ )
{
GetTarget () -> RemoveAurasDueToSpell ( SPELL_FLICKERING_FLAMES );
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-06-13 12:44:07 +02:00
{
OnEffectPeriodic += AuraEffectPeriodicFn ( spell_q12730_quenching_mist_AuraScript :: HandleEffectPeriodic , EFFECT_0 , SPELL_AURA_PERIODIC_HEAL );
}
};
2014-04-29 16:35:11 +02:00
AuraScript * GetAuraScript () const override
2013-06-13 12:44:07 +02:00
{
return new spell_q12730_quenching_mist_AuraScript ();
}
};
2013-03-08 04:45:15 +02:00
// 13291 - Borrowed Technology/13292 - The Solution Solution /Daily//13239 - Volatility/13261 - Volatiliy /Daily//
enum Quest13291_13292_13239_13261Data
{
// NPCs
NPC_SKYTALON = 31583 ,
NPC_DECOY = 31578 ,
// Spells
2016-04-16 18:22:35 +01:00
SPELL_RIDE = 59319
2013-03-08 04:45:15 +02:00
};
class spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy : public SpellScriptLoader
{
public :
spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy () : SpellScriptLoader ( "spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy" ) { }
class spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spell*/ ) override
2013-03-08 04:45:15 +02:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_RIDE ))
return false ;
return true ;
}
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
if ( ! GetHitCreature ())
return ;
// TO DO: Being triggered is hack, but in checkcast it doesn't pass aurastate requirements.
// Beside that the decoy won't keep it's freeze animation state when enter.
GetHitCreature () -> CastSpell ( GetCaster (), SPELL_RIDE , true );
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-03-08 04:45:15 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-03-08 04:45:15 +02:00
{
return new spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy_SpellScript ();
}
};
2014-01-23 20:55:47 +01:00
// 59303 - Summon Frost Wyrm
2013-03-08 04:45:15 +02:00
class spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon : public SpellScriptLoader
{
public :
spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon () : SpellScriptLoader ( "spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon" ) { }
class spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon_SpellScript );
2014-01-23 20:55:47 +01:00
void SetDest ( SpellDestination & dest )
2013-03-08 04:45:15 +02:00
{
// Adjust effect summon position
2014-01-23 20:55:47 +01:00
Position const offset = { 0.0f , 0.0f , 20.0f , 0.0f };
dest . RelocateOffset ( offset );
2013-03-08 04:45:15 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-03-08 04:45:15 +02:00
{
2014-01-23 20:55:47 +01:00
OnDestinationTargetSelect += SpellDestinationTargetSelectFn ( spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon_SpellScript :: SetDest , EFFECT_0 , TARGET_DEST_CASTER_BACK );
2013-03-08 04:45:15 +02:00
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-03-08 04:45:15 +02:00
{
return new spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon_SpellScript ();
}
};
2014-01-23 20:55:47 +01:00
// 12601 - Second Chances: Summon Landgren's Soul Moveto Target Bunny
2013-05-27 14:29:46 +02:00
class spell_q12847_summon_soul_moveto_bunny : public SpellScriptLoader
{
public :
spell_q12847_summon_soul_moveto_bunny () : SpellScriptLoader ( "spell_q12847_summon_soul_moveto_bunny" ) { }
class spell_q12847_summon_soul_moveto_bunny_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12847_summon_soul_moveto_bunny_SpellScript );
2014-01-23 20:55:47 +01:00
void SetDest ( SpellDestination & dest )
2013-05-27 14:29:46 +02:00
{
// Adjust effect summon position
2014-01-23 20:55:47 +01:00
Position const offset = { 0.0f , 0.0f , 2.5f , 0.0f };
dest . RelocateOffset ( offset );
2013-05-27 14:29:46 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-05-27 14:29:46 +02:00
{
2014-01-23 20:55:47 +01:00
OnDestinationTargetSelect += SpellDestinationTargetSelectFn ( spell_q12847_summon_soul_moveto_bunny_SpellScript :: SetDest , EFFECT_0 , TARGET_DEST_CASTER );
2013-05-27 14:29:46 +02:00
}
};
2014-09-13 20:41:31 +02:00
SpellScript * GetSpellScript () const override
2013-05-27 14:29:46 +02:00
{
return new spell_q12847_summon_soul_moveto_bunny_SpellScript ();
}
};
2013-08-09 12:55:26 +01:00
enum BearFlankMaster
{
SPELL_BEAR_FLANK_MASTER = 56565 ,
SPELL_CREATE_BEAR_FLANK = 56566 ,
SPELL_BEAR_FLANK_FAIL = 56569
};
class spell_q13011_bear_flank_master : public SpellScriptLoader
{
public :
spell_q13011_bear_flank_master () : SpellScriptLoader ( "spell_q13011_bear_flank_master" ) { }
class spell_q13011_bear_flank_master_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q13011_bear_flank_master_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellInfo*/ ) override
2013-08-09 12:55:26 +01:00
{
2013-08-09 19:59:52 +02:00
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_BEAR_FLANK_MASTER ) ||
! sSpellMgr -> GetSpellInfo ( SPELL_CREATE_BEAR_FLANK ))
2013-08-09 12:55:26 +01:00
return false ;
return true ;
}
2014-04-29 16:35:11 +02:00
bool Load () override
2013-08-09 12:55:26 +01:00
{
return GetCaster () -> GetTypeId () == TYPEID_UNIT ;
}
2013-08-09 19:59:52 +02:00
void HandleScript ( SpellEffIndex /*effIndex*/ )
2013-08-09 12:55:26 +01:00
{
if ( Player * player = GetHitPlayer ())
{
2014-07-17 15:42:57 +02:00
if ( roll_chance_i ( 50 ))
2013-08-09 12:55:26 +01:00
{
2014-07-17 15:42:57 +02:00
Creature * creature = GetCaster () -> ToCreature ();
2013-08-09 12:55:26 +01:00
player -> CastSpell ( creature , SPELL_BEAR_FLANK_FAIL );
2013-12-23 14:23:49 +01:00
creature -> AI () -> Talk ( 0 , player );
2013-08-09 12:55:26 +01:00
}
else
player -> CastSpell ( player , SPELL_CREATE_BEAR_FLANK );
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-08-09 12:55:26 +01:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q13011_bear_flank_master_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-08-09 12:55:26 +01:00
{
return new spell_q13011_bear_flank_master_SpellScript ();
}
};
2013-08-06 23:16:03 +01:00
class spell_q13086_cannons_target : public SpellScriptLoader
{
public :
spell_q13086_cannons_target () : SpellScriptLoader ( "spell_q13086_cannons_target" ) { }
class spell_q13086_cannons_target_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q13086_cannons_target_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * spellInfo ) override
2013-08-06 23:16:03 +01:00
{
2014-11-24 18:57:49 +01:00
if ( ! sSpellMgr -> GetSpellInfo ( spellInfo -> GetEffect ( EFFECT_0 ) -> CalcValue ()))
2013-08-06 23:16:03 +01:00
return false ;
return true ;
}
void HandleEffectDummy ( SpellEffIndex /*effIndex*/ )
{
if ( WorldLocation const * pos = GetExplTargetDest ())
GetCaster () -> CastSpell ( pos -> GetPositionX (), pos -> GetPositionY (), pos -> GetPositionZ (), GetEffectValue (), true );
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-08-06 23:16:03 +01:00
{
OnEffectHit += SpellEffectFn ( spell_q13086_cannons_target_SpellScript :: HandleEffectDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-08-06 23:16:03 +01:00
{
return new spell_q13086_cannons_target_SpellScript ();
}
};
2013-08-29 00:50:14 +02:00
enum BurstAtTheSeams
{
2013-08-29 03:08:08 +02:00
NPC_DRAKKARI_CHIEFTAINK = 29099 ,
QUEST_BURST_AT_THE_SEAMS = 12690 ,
SPELL_BURST_AT_THE_SEAMS = 52510 , // Burst at the Seams
SPELL_BURST_AT_THE_SEAMS_DMG = 52508 , // Damage spell
SPELL_BURST_AT_THE_SEAMS_DMG_2 = 59580 , // Abomination self damage spell
SPELL_BURST_AT_THE_SEAMS_BONE = 52516 , // Burst at the Seams:Bone
SPELL_BURST_AT_THE_SEAMS_MEAT = 52520 , // Explode Abomination:Meat
SPELL_BURST_AT_THE_SEAMS_BMEAT = 52523 , // Explode Abomination:Bloody Meat
SPELL_DRAKKARI_SKULLCRUSHER_CREDIT = 52590 , // Credit for Drakkari Skullcrusher
SPELL_SUMMON_DRAKKARI_CHIEFTAIN = 52616 , // Summon Drakkari Chieftain
SPELL_DRAKKARI_CHIEFTAINK_KILL_CREDIT = 52620 // Drakkari Chieftain Kill Credit
2013-08-29 00:50:14 +02:00
};
class spell_q12690_burst_at_the_seams : public SpellScriptLoader
{
public :
spell_q12690_burst_at_the_seams () : SpellScriptLoader ( "spell_q12690_burst_at_the_seams" ) { }
2013-08-29 03:08:08 +02:00
2013-08-29 00:50:14 +02:00
class spell_q12690_burst_at_the_seams_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12690_burst_at_the_seams_SpellScript );
2013-08-29 03:08:08 +02:00
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellInfo*/ ) override
2013-08-29 00:50:14 +02:00
{
2013-08-29 03:08:08 +02:00
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_BURST_AT_THE_SEAMS )
|| ! sSpellMgr -> GetSpellInfo ( SPELL_BURST_AT_THE_SEAMS_DMG )
|| ! sSpellMgr -> GetSpellInfo ( SPELL_BURST_AT_THE_SEAMS_DMG_2 )
|| ! sSpellMgr -> GetSpellInfo ( SPELL_BURST_AT_THE_SEAMS_BONE )
|| ! sSpellMgr -> GetSpellInfo ( SPELL_BURST_AT_THE_SEAMS_MEAT )
|| ! sSpellMgr -> GetSpellInfo ( SPELL_BURST_AT_THE_SEAMS_BMEAT ))
2013-08-29 00:50:14 +02:00
return false ;
return true ;
}
2013-08-29 03:08:08 +02:00
2014-04-29 16:35:11 +02:00
bool Load () override
2013-08-29 00:50:14 +02:00
{
return GetCaster () -> GetTypeId () == TYPEID_UNIT ;
}
2013-08-29 03:08:08 +02:00
2013-08-29 00:50:14 +02:00
void HandleKnockBack ( SpellEffIndex /*effIndex*/ )
{
2013-08-29 03:08:08 +02:00
if ( Unit * creature = GetHitCreature ())
2013-08-29 00:50:14 +02:00
{
2013-08-29 03:08:08 +02:00
if ( Unit * charmer = GetCaster () -> GetCharmerOrOwner ())
2013-08-29 00:50:14 +02:00
{
2013-08-29 03:08:08 +02:00
if ( Player * player = charmer -> ToPlayer ())
2013-08-29 00:50:14 +02:00
{
2013-08-29 03:08:08 +02:00
if ( player -> GetQuestStatus ( QUEST_BURST_AT_THE_SEAMS ) == QUEST_STATUS_INCOMPLETE )
2013-08-29 00:50:14 +02:00
{
2013-08-29 03:08:08 +02:00
creature -> CastSpell ( creature , SPELL_BURST_AT_THE_SEAMS_BONE , true );
creature -> CastSpell ( creature , SPELL_BURST_AT_THE_SEAMS_MEAT , true );
creature -> CastSpell ( creature , SPELL_BURST_AT_THE_SEAMS_BMEAT , true );
creature -> CastSpell ( creature , SPELL_BURST_AT_THE_SEAMS_DMG , true );
creature -> CastSpell ( creature , SPELL_BURST_AT_THE_SEAMS_DMG_2 , true );
player -> CastSpell ( player , SPELL_DRAKKARI_SKULLCRUSHER_CREDIT , true );
uint16 count = player -> GetReqKillOrCastCurrentCount ( QUEST_BURST_AT_THE_SEAMS , NPC_DRAKKARI_CHIEFTAINK );
if (( count % 20 ) == 0 )
player -> CastSpell ( player , SPELL_SUMMON_DRAKKARI_CHIEFTAIN , true );
2013-08-29 00:50:14 +02:00
}
}
}
}
}
2013-08-29 03:08:08 +02:00
2013-08-29 00:50:14 +02:00
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
2013-08-29 03:08:08 +02:00
GetCaster () -> ToCreature () -> DespawnOrUnsummon ( 2 * IN_MILLISECONDS );
2013-08-29 00:50:14 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-08-29 00:50:14 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12690_burst_at_the_seams_SpellScript :: HandleKnockBack , EFFECT_1 , SPELL_EFFECT_KNOCK_BACK );
OnEffectHitTarget += SpellEffectFn ( spell_q12690_burst_at_the_seams_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-08-29 00:50:14 +02:00
{
return new spell_q12690_burst_at_the_seams_SpellScript ();
}
};
2013-08-29 14:37:29 +02:00
enum EscapeFromSilverbrook
{
SPELL_SUMMON_WORGEN = 48681
};
2013-08-30 15:44:17 +01:00
2013-08-29 14:37:29 +02:00
// 48682 - Escape from Silverbrook - Periodic Dummy
class spell_q12308_escape_from_silverbrook : public SpellScriptLoader
{
public :
spell_q12308_escape_from_silverbrook () : SpellScriptLoader ( "spell_q12308_escape_from_silverbrook" ) { }
2013-08-30 15:44:17 +01:00
2013-08-29 14:37:29 +02:00
class spell_q12308_escape_from_silverbrook_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12308_escape_from_silverbrook_SpellScript );
2013-08-30 15:44:17 +01:00
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellInfo*/ ) override
2013-08-29 14:37:29 +02:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_WORGEN ))
return false ;
return true ;
}
2013-08-30 15:44:17 +01:00
2013-08-29 14:37:29 +02:00
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
GetCaster () -> CastSpell ( GetCaster (), SPELL_SUMMON_WORGEN , true );
}
2013-08-30 15:44:17 +01:00
2014-04-29 16:35:11 +02:00
void Register () override
2013-08-29 14:37:29 +02:00
{
OnEffectHit += SpellEffectFn ( spell_q12308_escape_from_silverbrook_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2013-08-30 15:44:17 +01:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-08-29 14:37:29 +02:00
{
return new spell_q12308_escape_from_silverbrook_SpellScript ();
}
};
2013-08-30 15:44:17 +01:00
2013-08-29 14:37:29 +02:00
// 48681 - Summon Silverbrook Worgen
class spell_q12308_escape_from_silverbrook_summon_worgen : public SpellScriptLoader
{
public :
spell_q12308_escape_from_silverbrook_summon_worgen () : SpellScriptLoader ( "spell_q12308_escape_from_silverbrook_summon_worgen" ) { }
2013-08-30 15:44:17 +01:00
2013-08-29 14:37:29 +02:00
class spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript );
2013-08-30 15:44:17 +01:00
2014-01-23 20:55:47 +01:00
void ModDest ( SpellDestination & dest )
2013-08-29 14:37:29 +02:00
{
2014-11-24 18:57:49 +01:00
float dist = GetSpellInfo () -> GetEffect ( EFFECT_0 ) -> CalcRadius ( GetCaster ());
2014-08-21 16:56:11 +02:00
float angle = frand ( 0.75f , 1.25f ) * float ( M_PI );
2013-08-30 15:44:17 +01:00
2014-04-25 21:19:30 +02:00
Position pos = GetCaster () -> GetNearPosition ( dist , angle );
2014-01-23 20:55:47 +01:00
dest . Relocate ( pos );
2013-08-29 14:37:29 +02:00
}
2013-08-30 15:44:17 +01:00
2014-04-29 16:35:11 +02:00
void Register () override
2013-08-29 14:37:29 +02:00
{
2014-01-23 20:55:47 +01:00
OnDestinationTargetSelect += SpellDestinationTargetSelectFn ( spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript :: ModDest , EFFECT_0 , TARGET_DEST_CASTER_SUMMON );
2013-08-29 14:37:29 +02:00
}
};
2013-08-30 15:44:17 +01:00
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-08-29 14:37:29 +02:00
{
return new spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript ();
}
};
2013-08-31 17:42:04 +02:00
enum DeathComesFromOnHigh
{
SPELL_FORGE_CREDIT = 51974 ,
SPELL_TOWN_HALL_CREDIT = 51977 ,
SPELL_SCARLET_HOLD_CREDIT = 51980 ,
SPELL_CHAPEL_CREDIT = 51982 ,
NPC_NEW_AVALON_FORGE = 28525 ,
NPC_NEW_AVALON_TOWN_HALL = 28543 ,
NPC_SCARLET_HOLD = 28542 ,
NPC_CHAPEL_OF_THE_CRIMSON_FLAME = 28544
};
// 51858 - Siphon of Acherus
class spell_q12641_death_comes_from_on_high : public SpellScriptLoader
{
public :
spell_q12641_death_comes_from_on_high () : SpellScriptLoader ( "spell_q12641_death_comes_from_on_high" ) { }
class spell_q12641_death_comes_from_on_high_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12641_death_comes_from_on_high_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellInfo*/ ) override
2013-08-31 17:42:04 +02:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_FORGE_CREDIT ) ||
! sSpellMgr -> GetSpellInfo ( SPELL_TOWN_HALL_CREDIT ) ||
! sSpellMgr -> GetSpellInfo ( SPELL_SCARLET_HOLD_CREDIT ) ||
! sSpellMgr -> GetSpellInfo ( SPELL_CHAPEL_CREDIT ))
return false ;
return true ;
}
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
uint32 spellId = 0 ;
switch ( GetHitCreature () -> GetEntry ())
{
case NPC_NEW_AVALON_FORGE :
spellId = SPELL_FORGE_CREDIT ;
break ;
case NPC_NEW_AVALON_TOWN_HALL :
spellId = SPELL_TOWN_HALL_CREDIT ;
break ;
case NPC_SCARLET_HOLD :
spellId = SPELL_SCARLET_HOLD_CREDIT ;
break ;
case NPC_CHAPEL_OF_THE_CRIMSON_FLAME :
spellId = SPELL_CHAPEL_CREDIT ;
break ;
default :
return ;
}
2013-09-05 00:59:22 +02:00
GetCaster () -> CastSpell (( Unit * ) NULL , spellId , true );
2013-08-31 17:42:04 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-08-31 17:42:04 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12641_death_comes_from_on_high_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-08-31 17:42:04 +02:00
{
return new spell_q12641_death_comes_from_on_high_SpellScript ();
}
};
2014-09-04 19:42:37 +02:00
// 52694 - Recall Eye of Acherus
2014-09-22 20:52:22 +02:00
enum Recall_Eye_of_Acherus
{
THE_EYE_OF_ACHERUS = 51852
};
2014-08-28 20:16:16 +02:00
class spell_q12641_recall_eye_of_acherus : public SpellScriptLoader
{
public :
spell_q12641_recall_eye_of_acherus () : SpellScriptLoader ( "spell_q12641_recall_eye_of_acherus" ) { }
class spell_q12641_recall_eye_of_acherus_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12641_recall_eye_of_acherus_SpellScript );
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
if ( Player * player = GetCaster () -> GetCharmerOrOwner () -> ToPlayer ())
{
player -> StopCastingCharm ();
player -> StopCastingBindSight ();
2014-09-22 20:52:22 +02:00
player -> RemoveAura ( THE_EYE_OF_ACHERUS );
2014-08-28 20:16:16 +02:00
}
}
void Register () override
{
OnEffectHitTarget += SpellEffectFn ( spell_q12641_recall_eye_of_acherus_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
SpellScript * GetSpellScript () const override
{
return new spell_q12641_recall_eye_of_acherus_SpellScript ();
}
};
2013-09-06 20:57:38 +02:00
// 51769 - Emblazon Runeblade
class spell_q12619_emblazon_runeblade : public SpellScriptLoader
{
public :
spell_q12619_emblazon_runeblade () : SpellScriptLoader ( "spell_q12619_emblazon_runeblade" ) { }
class spell_q12619_emblazon_runeblade_AuraScript : public AuraScript
{
PrepareAuraScript ( spell_q12619_emblazon_runeblade_AuraScript );
void HandleEffectPeriodic ( AuraEffect const * aurEff )
{
PreventDefaultAction ();
2013-09-07 01:21:36 +02:00
if ( Unit * caster = GetCaster ())
2014-11-24 18:57:49 +01:00
caster -> CastSpell ( caster , GetSpellInfo () -> GetEffect ( aurEff -> GetEffIndex ()) -> TriggerSpell , true , NULL , aurEff );
2013-09-06 20:57:38 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-09-06 20:57:38 +02:00
{
2013-09-07 01:21:36 +02:00
OnEffectPeriodic += AuraEffectPeriodicFn ( spell_q12619_emblazon_runeblade_AuraScript :: HandleEffectPeriodic , EFFECT_0 , SPELL_AURA_PERIODIC_TRIGGER_SPELL );
2013-09-06 20:57:38 +02:00
}
};
2014-04-29 16:35:11 +02:00
AuraScript * GetAuraScript () const override
2013-09-06 20:57:38 +02:00
{
return new spell_q12619_emblazon_runeblade_AuraScript ();
}
};
// 51770 - Emblazon Runeblade
class spell_q12619_emblazon_runeblade_effect : public SpellScriptLoader
{
public :
spell_q12619_emblazon_runeblade_effect () : SpellScriptLoader ( "spell_q12619_emblazon_runeblade_effect" ) { }
class spell_q12619_emblazon_runeblade_effect_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12619_emblazon_runeblade_effect_SpellScript );
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
2013-09-07 01:21:36 +02:00
GetCaster () -> CastSpell ( GetCaster (), uint32 ( GetEffectValue ()), false );
2013-09-06 20:57:38 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-09-06 20:57:38 +02:00
{
OnEffectHit += SpellEffectFn ( spell_q12619_emblazon_runeblade_effect_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-09-06 20:57:38 +02:00
{
return new spell_q12619_emblazon_runeblade_effect_SpellScript ();
}
};
2013-09-27 12:50:34 +02:00
enum Quest_The_Storm_King
{
SPELL_RIDE_GYMER = 43671 ,
SPELL_GRABBED = 55424
};
class spell_q12919_gymers_grab : public SpellScriptLoader
{
public :
spell_q12919_gymers_grab () : SpellScriptLoader ( "spell_q12919_gymers_grab" ) { }
class spell_q12919_gymers_grab_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12919_gymers_grab_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spell*/ ) override
2013-09-27 12:50:34 +02:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_RIDE_GYMER ))
return false ;
return true ;
}
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
int8 seatId = 2 ;
if ( ! GetHitCreature ())
return ;
GetHitCreature () -> CastCustomSpell ( SPELL_RIDE_GYMER , SPELLVALUE_BASE_POINT0 , seatId , GetCaster (), true );
GetHitCreature () -> CastSpell ( GetHitCreature (), SPELL_GRABBED , true );
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-09-27 12:50:34 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12919_gymers_grab_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-09-27 12:50:34 +02:00
{
return new spell_q12919_gymers_grab_SpellScript ();
}
};
enum Quest_The_Storm_King_Throw
{
SPELL_VARGUL_EXPLOSION = 55569
};
class spell_q12919_gymers_throw : public SpellScriptLoader
{
public :
spell_q12919_gymers_throw () : SpellScriptLoader ( "spell_q12919_gymers_throw" ) { }
class spell_q12919_gymers_throw_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12919_gymers_throw_SpellScript );
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
Unit * caster = GetCaster ();
if ( caster -> IsVehicle ())
if ( Unit * passenger = caster -> GetVehicleKit () -> GetPassenger ( 1 ))
{
passenger -> ExitVehicle ();
caster -> CastSpell ( passenger , SPELL_VARGUL_EXPLOSION , true );
}
}
2014-04-29 16:35:11 +02:00
void Register () override
2013-09-27 12:50:34 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q12919_gymers_throw_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2013-09-27 12:50:34 +02:00
{
return new spell_q12919_gymers_throw_SpellScript ();
}
};
2014-01-19 00:30:25 +02:00
enum Quest_The_Hunter_And_The_Prince
{
SPELL_ILLIDAN_KILL_CREDIT = 61748
};
class spell_q13400_illidan_kill_master : public SpellScriptLoader
{
public :
spell_q13400_illidan_kill_master () : SpellScriptLoader ( "spell_q13400_illidan_kill_master" ) { }
class spell_q13400_illidan_kill_master_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q13400_illidan_kill_master_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellInfo*/ ) override
2014-01-19 00:30:25 +02:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_ILLIDAN_KILL_CREDIT ))
return false ;
return true ;
}
void HandleDummy ( SpellEffIndex /*effIndex*/ )
{
Unit * caster = GetCaster ();
if ( caster -> IsVehicle ())
if ( Unit * passenger = caster -> GetVehicleKit () -> GetPassenger ( 0 ))
passenger -> CastSpell ( passenger , SPELL_ILLIDAN_KILL_CREDIT , true );
}
2014-04-29 16:35:11 +02:00
void Register () override
2014-01-19 00:30:25 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q13400_illidan_kill_master_SpellScript :: HandleDummy , EFFECT_0 , SPELL_EFFECT_DUMMY );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2014-01-19 00:30:25 +02:00
{
return new spell_q13400_illidan_kill_master_SpellScript ();
}
};
2014-04-14 19:48:13 +02:00
enum RelicOfTheEarthenRing
{
SPELL_TOTEM_OF_THE_EARTHEN_RING = 66747
};
// 66744 - Make Player Destroy Totems
class spell_q14100_q14111_make_player_destroy_totems : public SpellScriptLoader
{
public :
spell_q14100_q14111_make_player_destroy_totems () : SpellScriptLoader ( "spell_q14100_q14111_make_player_destroy_totems" ) { }
class spell_q14100_q14111_make_player_destroy_totems_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q14100_q14111_make_player_destroy_totems_SpellScript );
2014-04-29 16:35:11 +02:00
bool Validate ( SpellInfo const * /*spellInfo*/ ) override
2014-04-14 19:48:13 +02:00
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_TOTEM_OF_THE_EARTHEN_RING ))
return false ;
return true ;
}
void HandleScriptEffect ( SpellEffIndex /*effIndex*/ )
{
if ( Player * player = GetHitPlayer ())
2014-04-14 21:12:05 +02:00
player -> CastSpell ( player , SPELL_TOTEM_OF_THE_EARTHEN_RING , TRIGGERED_FULL_MASK ); // ignore reagent cost, consumed by quest
2014-04-14 19:48:13 +02:00
}
2014-04-29 16:35:11 +02:00
void Register () override
2014-04-14 19:48:13 +02:00
{
OnEffectHitTarget += SpellEffectFn ( spell_q14100_q14111_make_player_destroy_totems_SpellScript :: HandleScriptEffect , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
2014-04-29 16:35:11 +02:00
SpellScript * GetSpellScript () const override
2014-04-14 19:48:13 +02:00
{
return new spell_q14100_q14111_make_player_destroy_totems_SpellScript ();
}
};
2014-09-16 17:49:16 -03:00
enum Fumping
{
SPELL_SUMMON_SAND_GNOME = 39240 ,
SPELL_SUMMON_BONE_SLICER = 39241
};
// 39238 - Fumping
class spell_q10929_fumping : SpellScriptLoader
{
public :
spell_q10929_fumping () : SpellScriptLoader ( "spell_q10929_fumping" ) { }
class spell_q10929_fumpingAuraScript : public AuraScript
{
PrepareAuraScript ( spell_q10929_fumpingAuraScript );
bool Validate ( SpellInfo const * /*spell*/ ) override
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_SAND_GNOME ))
return false ;
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_SUMMON_BONE_SLICER ))
return false ;
return true ;
}
void HandleEffectRemove ( AuraEffect const * /*aurEff*/ , AuraEffectHandleModes /*mode*/ )
{
if ( GetTargetApplication () -> GetRemoveMode () != AURA_REMOVE_BY_EXPIRE )
return ;
if ( Unit * caster = GetCaster ())
caster -> CastSpell ( caster , urand ( SPELL_SUMMON_SAND_GNOME , SPELL_SUMMON_BONE_SLICER ), true );
}
void Register () override
{
OnEffectRemove += AuraEffectRemoveFn ( spell_q10929_fumpingAuraScript :: HandleEffectRemove , EFFECT_0 , SPELL_AURA_DUMMY , AURA_EFFECT_HANDLE_REAL );
}
};
AuraScript * GetAuraScript () const override
{
return new spell_q10929_fumpingAuraScript ();
}
};
2014-09-29 14:17:24 +01:00
enum FearNoEvil
{
SPELL_RENEWED_LIFE = 93097 ,
NPC_INJURED_STORMWIND_INFANTRY = 50047
};
// 93072 - Get Our Boys Back Dummy
class spell_q28813_get_our_boys_back_dummy : public SpellScriptLoader
{
public :
spell_q28813_get_our_boys_back_dummy () : SpellScriptLoader ( "spell_q28813_get_our_boys_back_dummy" ) { }
class spell_q28813_get_our_boys_back_dummy_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q28813_get_our_boys_back_dummy_SpellScript );
bool Validate ( SpellInfo const * /*spellInfo*/ ) override
{
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_RENEWED_LIFE ))
return false ;
return true ;
}
void HandleDummyEffect ()
{
Unit * caster = GetCaster ();
2014-11-14 01:55:29 +00:00
2014-09-29 14:17:24 +01:00
if ( Creature * injuredStormwindInfantry = caster -> FindNearestCreature ( NPC_INJURED_STORMWIND_INFANTRY , 5.0f , true ))
{
injuredStormwindInfantry -> SetCreatorGUID ( caster -> GetGUID ());
injuredStormwindInfantry -> CastSpell ( injuredStormwindInfantry , SPELL_RENEWED_LIFE , true );
}
}
void Register () override
{
OnCast += SpellCastFn ( spell_q28813_get_our_boys_back_dummy_SpellScript :: HandleDummyEffect );
}
};
SpellScript * GetSpellScript () const override
{
return new spell_q28813_get_our_boys_back_dummy_SpellScript ();
}
};
2014-09-30 01:14:24 +02:00
class spell_q28813_set_health_random : public SpellScriptLoader
{
public :
spell_q28813_set_health_random () : SpellScriptLoader ( "spell_q28813_set_health_random" ) { }
class spell_q28813_set_health_random_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q28813_set_health_random_SpellScript );
void HandleDummyEffect ()
{
Unit * caster = GetCaster ();
caster -> SetHealth ( caster -> CountPctFromMaxHealth ( urand ( 3 , 5 ) * 10 ));
}
void Register () override
{
OnCast += SpellCastFn ( spell_q28813_set_health_random_SpellScript :: HandleDummyEffect );
}
};
SpellScript * GetSpellScript () const override
{
return new spell_q28813_set_health_random_SpellScript ();
}
};
2015-03-15 23:27:30 +01:00
class spell_q12414_hand_over_reins : public SpellScriptLoader
{
public :
spell_q12414_hand_over_reins () : SpellScriptLoader ( "spell_q12414_hand_over_reins" ) { }
class spell_q12414_hand_over_reins_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q12414_hand_over_reins_SpellScript );
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
Creature * caster = GetCaster () -> ToCreature ();
GetHitUnit () -> ExitVehicle ();
if ( caster )
caster -> DespawnOrUnsummon ();
}
void Register () override
{
OnEffectHitTarget += SpellEffectFn ( spell_q12414_hand_over_reins_SpellScript :: HandleScript , EFFECT_1 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
SpellScript * GetSpellScript () const override
{
return new spell_q12414_hand_over_reins_SpellScript ();
}
};
2015-07-12 18:38:35 +01:00
// 13790 13793 13811 13814 - Among the Champions
// 13665 13745 13750 13756 13761 13767 13772 13777 13782 13787 - The Grand Melee
class spell_q13665_q13790_bested_trigger : public SpellScriptLoader
{
public :
spell_q13665_q13790_bested_trigger () : SpellScriptLoader ( "spell_q13665_q13790_bested_trigger" ) { }
class spell_q13665_q13790_bested_trigger_SpellScript : public SpellScript
{
PrepareSpellScript ( spell_q13665_q13790_bested_trigger_SpellScript );
void HandleScript ( SpellEffIndex /*effIndex*/ )
{
Unit * target = GetHitUnit () -> GetCharmerOrOwnerOrSelf ();
2016-08-28 18:34:23 -03:00
target -> CastSpell ( target , uint32 ( GetEffectValue ()), true );
2015-07-12 18:38:35 +01:00
}
void Register () override
{
OnEffectHitTarget += SpellEffectFn ( spell_q13665_q13790_bested_trigger_SpellScript :: HandleScript , EFFECT_0 , SPELL_EFFECT_SCRIPT_EFFECT );
}
};
SpellScript * GetSpellScript () const override
{
return new spell_q13665_q13790_bested_trigger_SpellScript ();
}
};
2010-08-18 00:20:23 +06:00
void AddSC_quest_spell_scripts ()
{
2010-09-04 02:33:57 +06:00
new spell_q55_sacred_cleansing ();
2013-06-12 21:15:17 +02:00
new spell_q2203_thaumaturgy_channel ();
2010-09-04 02:33:57 +06:00
new spell_q5206_test_fetid_skull ();
2010-09-16 13:14:14 +06:00
new spell_q6124_6129_apply_salve ();
2010-09-04 02:33:57 +06:00
new spell_q10255_administer_antidote ();
2010-12-10 12:01:57 +06:00
new spell_q11396_11399_force_shield_arcane_purple_x3 ();
new spell_q11396_11399_scourging_crystal_controller ();
new spell_q11396_11399_scourging_crystal_controller_dummy ();
2010-09-04 02:33:57 +06:00
new spell_q11515_fel_siphon_dummy ();
2010-08-18 00:20:23 +06:00
new spell_q11587_arcane_prisoner_rescue ();
new spell_q11730_ultrasonic_screwdriver ();
2010-09-16 13:14:14 +06:00
new spell_q12459_seeds_of_natures_wrath ();
new spell_q12634_despawn_fruit_tosser ();
2010-08-29 22:40:23 +06:00
new spell_q12683_take_sputum_sample ();
2011-01-30 18:22:30 +01:00
new spell_q12851_going_bearback ();
2010-08-29 22:40:23 +06:00
new spell_q12937_relief_for_the_fallen ();
2011-03-10 20:54:24 +01:00
new spell_q10041_q10040_who_are_they ();
2011-04-06 11:34:50 +02:00
new spell_symbol_of_life_dummy ();
2011-06-12 19:46:33 +03:00
new spell_q12659_ahunaes_knife ();
2011-08-24 15:57:14 +02:00
new spell_q9874_liquid_fire ();
2011-08-24 16:45:49 +02:00
new spell_q12805_lifeblood_dummy ();
2011-09-03 16:43:15 +02:00
new spell_q13280_13283_plant_battle_standard ();
2011-10-22 13:18:17 +01:00
new spell_q14112_14145_chum_the_water ();
2011-12-25 00:13:28 +01:00
new spell_q9452_cast_net ();
2016-08-23 13:21:03 +02:00
new spell_q12279_cast_net ();
new spell_q14076_14092_pound_drum ();
2012-02-22 22:38:16 +00:00
new spell_q12987_read_pronouncement ();
2012-05-10 13:43:40 +02:00
new spell_q12277_wintergarde_mine_explosion ();
2012-06-27 23:17:40 +02:00
new spell_q12066_bunny_kill_credit ();
2012-07-04 01:48:14 +02:00
new spell_q12735_song_of_cleansing ();
2012-08-26 02:55:14 +03:00
new spell_q12372_cast_from_gossip_trigger ();
2012-08-28 20:58:03 +03:00
new spell_q12372_destabilize_azure_dragonshrine_dummy ();
2012-09-13 12:27:27 +03:00
new spell_q11010_q11102_q11023_aggro_check_aura ();
new spell_q11010_q11102_q11023_aggro_check ();
new spell_q11010_q11102_q11023_aggro_burst ();
new spell_q11010_q11102_q11023_choose_loc ();
2012-09-13 15:01:19 +01:00
new spell_q11010_q11102_q11023_q11008_check_fly_mount ();
2012-12-24 00:48:41 +02:00
new spell_q12372_azure_on_death_force_whisper ();
2013-01-13 15:37:01 +01:00
new spell_q12527_zuldrak_rat ();
2013-06-17 16:44:04 +02:00
new spell_q12661_q12669_q12676_q12677_q12713_summon_stefan ();
2013-06-13 12:44:07 +02:00
new spell_q12730_quenching_mist ();
2013-03-08 04:45:15 +02:00
new spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy ();
new spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon ();
2013-05-27 14:29:46 +02:00
new spell_q12847_summon_soul_moveto_bunny ();
2013-08-09 12:55:26 +01:00
new spell_q13011_bear_flank_master ();
2013-08-06 23:16:03 +01:00
new spell_q13086_cannons_target ();
2013-08-29 00:50:14 +02:00
new spell_q12690_burst_at_the_seams ();
2013-08-29 14:37:29 +02:00
new spell_q12308_escape_from_silverbrook_summon_worgen ();
new spell_q12308_escape_from_silverbrook ();
2013-08-31 17:42:04 +02:00
new spell_q12641_death_comes_from_on_high ();
2014-08-28 20:16:16 +02:00
new spell_q12641_recall_eye_of_acherus ();
2013-09-06 20:57:38 +02:00
new spell_q12619_emblazon_runeblade ();
new spell_q12619_emblazon_runeblade_effect ();
2013-09-27 12:50:34 +02:00
new spell_q12919_gymers_grab ();
new spell_q12919_gymers_throw ();
2014-01-19 00:30:25 +02:00
new spell_q13400_illidan_kill_master ();
2014-04-14 19:48:13 +02:00
new spell_q14100_q14111_make_player_destroy_totems ();
2014-09-16 17:49:16 -03:00
new spell_q10929_fumping ();
2014-09-29 14:17:24 +01:00
new spell_q28813_get_our_boys_back_dummy ();
2014-09-30 01:14:24 +02:00
new spell_q28813_set_health_random ();
2015-03-15 23:27:30 +01:00
new spell_q12414_hand_over_reins ();
2015-07-12 18:38:35 +01:00
new spell_q13665_q13790_bested_trigger ();
2012-09-13 15:01:19 +01:00
}