2010-07-24 22:41:42 +02:00
/*
2011-01-01 15:01:13 +01:00
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
2010-07-24 22:41:42 +02: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/>.
*/
/*
* An example of a spell script file
* to bind a script to spell you have to add entry for it in `spell_script_names`
* where `spell_id` is id of the spell to bind
* and `ScriptName` is the name of a script assigned on registration
*/
#include "ScriptPCH.h"
2010-08-24 00:10:49 +02:00
#include "SpellAuras.h"
#include "SpellAuraEffects.h"
2010-07-24 22:41:42 +02:00
2011-04-27 18:58:40 +02:00
enum Spells
{
SPELL_TRIGGERED = 18282
};
2010-08-24 00:10:49 +02:00
class spell_ex_5581 : public SpellScriptLoader
2010-07-24 22:41:42 +02:00
{
2010-08-06 11:41:32 -07:00
public :
2010-08-24 00:10:49 +02:00
spell_ex_5581 () : SpellScriptLoader ( "spell_ex_5581" ) { }
2010-07-25 02:05:12 +02:00
2010-08-24 00:10:49 +02:00
class spell_ex_5581SpellScript : public SpellScript
2010-08-06 11:41:32 -07:00
{
2010-10-08 21:33:44 +02:00
// initialize script, this macro does compile time check for type of the function - prevents possible issues
// if you have assigned wrong type of function to a hook you'll receive type conversion error during build
// this line is required, otherwise you'll get XXXHandlerFunction - identifier not found errors
2011-04-27 18:58:40 +02:00
PrepareSpellScript ( spell_ex_5581SpellScript );
2010-08-24 00:10:49 +02:00
2010-08-06 11:41:32 -07:00
std :: string localVariable ;
2011-04-27 18:58:40 +02:00
char * localVariable2 ;
2010-07-24 22:41:42 +02:00
2010-08-24 00:10:49 +02:00
// function called on server startup
// checks if script has data required for it to work
2011-07-26 23:09:28 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ )
2010-08-24 00:10:49 +02:00
{
// check if spellid 70522 exists in dbc, we will trigger it later
2011-07-26 23:09:28 +02:00
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_TRIGGERED ))
2010-08-24 00:10:49 +02:00
return false ;
return true ;
}
// function called just after script is added to spell
// we initialize local variables if needed
bool Load ()
{
localVariable = "we're using local variable" ;
2011-04-27 18:58:40 +02:00
localVariable2 = new char ();
2010-08-24 00:10:49 +02:00
return true ;
// return false - script will be immediately removed from the spell
// for example - we don't want this script to be executed on a creature
// if (GetCaster()->GetTypeID() != TYPEID_PLAYER)
// return false;
}
// function called just before script delete
// we free allocated memory
void Unload ()
{
delete localVariable2 ;
}
2011-09-25 13:29:17 +02:00
void HandleDummyLaunch ( SpellEffIndex /*effIndex*/ )
2010-08-06 11:41:32 -07:00
{
2011-09-25 13:29:17 +02:00
sLog -> outString ( "Spell %u with SPELL_EFFECT_DUMMY is just launched!" , GetSpellInfo () -> Id );
}
void HandleDummyLaunchTarget ( SpellEffIndex /*effIndex*/ )
{
uint64 targetGUID = 0 ;
if ( Unit * unitTarget = GetHitUnit ())
targetGUID = unitTarget -> GetGUID ();
2010-08-06 11:41:32 -07:00
// we're handling SPELL_EFFECT_DUMMY in effIndex 0 here
2011-09-25 13:29:17 +02:00
sLog -> outString ( "Spell %u with SPELL_EFFECT_DUMMY is just launched at it's target: " UI64FMTD "!" , GetSpellInfo () -> Id , targetGUID );
}
void HandleDummyHit ( SpellEffIndex /*effIndex*/ )
{
sLog -> outString ( "Spell %u with SPELL_EFFECT_DUMMY has hit!" , GetSpellInfo () -> Id );
}
void HandleDummyHitTarget ( SpellEffIndex /*effIndex*/ )
{
sLog -> outString ( "SPELL_EFFECT_DUMMY is hits it's target!" );
2010-08-06 11:41:32 -07:00
// make caster cast a spell on a unit target of effect
2011-04-27 18:58:40 +02:00
if ( Unit * target = GetHitUnit ())
2010-08-24 00:10:49 +02:00
GetCaster () -> CastSpell ( target , SPELL_TRIGGERED , true );
}
2010-08-06 11:41:32 -07:00
2010-08-21 20:18:54 +02:00
void HandleBeforeHit ()
{
2010-12-23 23:25:44 +01:00
sLog -> outString ( "Spell is about to hit target!" );
2010-08-21 20:18:54 +02:00
}
void HandleOnHit ()
{
2010-12-23 23:25:44 +01:00
sLog -> outString ( "Spell just hit target!" );
2010-08-21 20:18:54 +02:00
}
void HandleAfterHit ()
{
2010-12-23 23:25:44 +01:00
sLog -> outString ( "Spell just finished hitting target!" );
2010-08-21 20:18:54 +02:00
}
2011-01-21 23:42:51 +01:00
void FilterTargets ( std :: list < Unit *>& /*targetList*/ )
{
// usually you want this call for Area Target spells
sLog -> outString ( "Spell is about to add targets from targetList to final targets!" );
}
2010-08-24 00:10:49 +02:00
// register functions used in spell script - names of these functions do not matter
2010-08-06 11:41:32 -07:00
void Register ()
{
// we're registering our function here
2011-09-25 13:29:17 +02:00
// function HandleDummy will be called when spell is launched, independant from targets selected for spell, just before default effect 0 launch handler
OnEffectLaunch += SpellEffectFn ( spell_ex_5581SpellScript :: HandleDummyLaunch , EFFECT_0 , SPELL_EFFECT_DUMMY );
// function HandleDummy will be called when spell is launched at target, just before default effect 0 launch at target handler
OnEffectLaunchTarget += SpellEffectFn ( spell_ex_5581SpellScript :: HandleDummyLaunchTarget , EFFECT_0 , SPELL_EFFECT_DUMMY );
// function HandleDummy will be called when spell hits it's destination, independant from targets selected for spell, just before default effect 0 hit handler
OnEffectHit += SpellEffectFn ( spell_ex_5581SpellScript :: HandleDummyHit , EFFECT_0 , SPELL_EFFECT_DUMMY );
// function HandleDummy will be called when unit is hit by spell, just before default effect 0 hit target handler
OnEffectHitTarget += SpellEffectFn ( spell_ex_5581SpellScript :: HandleDummyHitTarget , EFFECT_0 , SPELL_EFFECT_DUMMY );
2010-08-06 11:41:32 -07:00
// this will prompt an error on startup because effect 0 of spell 49375 is set to SPELL_EFFECT_DUMMY, not SPELL_EFFECT_APPLY_AURA
2011-09-25 13:29:17 +02:00
//OnEffectHitTarget += SpellEffectFn(spell_gen_49375SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
2010-08-08 19:45:53 +02:00
// this will make HandleDummy function to be called on first != 0 effect of spell 49375
2011-09-25 13:29:17 +02:00
//OnEffectHitTarget += SpellEffectFn(spell_gen_49375SpellScript::HandleDummy, EFFECT_FIRST_FOUND, SPELL_EFFECT_ANY);
2010-08-08 19:45:53 +02:00
// this will make HandleDummy function to be called on all != 0 effect of spell 49375
2011-09-25 13:29:17 +02:00
//OnEffectHitTarget += SpellEffectFn(spell_gen_49375SpellScript::HandleDummy, EFFECT_ALL, SPELL_EFFECT_ANY);
2010-08-21 20:18:54 +02:00
// bind handler to BeforeHit event of the spell
2010-08-24 00:10:49 +02:00
BeforeHit += SpellHitFn ( spell_ex_5581SpellScript :: HandleBeforeHit );
2010-08-21 20:18:54 +02:00
// bind handler to OnHit event of the spell
2010-08-24 00:10:49 +02:00
OnHit += SpellHitFn ( spell_ex_5581SpellScript :: HandleOnHit );
2010-08-21 20:18:54 +02:00
// bind handler to AfterHit event of the spell
2010-08-24 00:10:49 +02:00
AfterHit += SpellHitFn ( spell_ex_5581SpellScript :: HandleAfterHit );
2011-01-21 23:42:51 +01:00
// bind handler to OnUnitTargetSelect event of the spell
//OnUnitTargetSelect += SpellUnitTargetFn(spell_ex_5581SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_CASTER);
2010-08-24 00:10:49 +02:00
}
};
2010-08-06 11:41:32 -07:00
2010-08-24 00:10:49 +02:00
// function which creates SpellScript
2011-04-27 18:58:40 +02:00
SpellScript * GetSpellScript () const
2010-08-24 00:10:49 +02:00
{
return new spell_ex_5581SpellScript ();
}
};
class spell_ex_66244 : public SpellScriptLoader
{
public :
spell_ex_66244 () : SpellScriptLoader ( "spell_ex_66244" ) { }
class spell_ex_66244AuraScript : public AuraScript
{
2011-04-27 18:58:40 +02:00
PrepareAuraScript ( spell_ex_66244AuraScript );
2010-08-06 11:41:32 -07:00
// function called on server startup
// checks if script has data required for it to work
2011-07-26 23:09:28 +02:00
bool Validate ( SpellInfo const * /*spellEntry*/ )
2010-08-06 11:41:32 -07:00
{
2010-12-27 20:14:54 +01:00
// check if spellid exists in dbc, we will trigger it later
2011-07-26 23:09:28 +02:00
if ( ! sSpellMgr -> GetSpellInfo ( SPELL_TRIGGERED ))
2010-08-06 11:41:32 -07:00
return false ;
return true ;
2010-08-24 00:10:49 +02:00
}
2010-08-06 11:41:32 -07:00
2010-08-24 00:10:49 +02:00
// function called in aura constructor
2010-08-06 11:41:32 -07:00
// we initialize local variables if needed
bool Load ()
{
2010-08-24 00:10:49 +02:00
// do not load script if aura is casted by player or caster not avalible
2011-04-27 18:58:40 +02:00
if ( Unit * caster = GetCaster ())
2010-08-24 00:10:49 +02:00
if ( caster -> GetTypeId () == TYPEID_PLAYER )
return true ;
return false ;
2010-08-06 11:41:32 -07:00
}
2011-05-25 17:13:32 +02:00
void HandleOnEffectApply ( AuraEffect const * /*aurEff*/ , AuraEffectHandleModes /*mode*/ )
2010-08-06 11:41:32 -07:00
{
2010-12-23 23:25:44 +01:00
sLog -> outString ( "Aura Effect is about to be applied on target!" );
2011-05-25 17:13:32 +02:00
// this hook allows you to prevent execution of AuraEffect handler, or to replace it with your own handler
//PreventDefaultAction();
}
void HandleOnEffectRemove ( AuraEffect const * /*aurEff*/ , AuraEffectHandleModes /*mode*/ )
{
sLog -> outString ( "Aura Effect is about to be removed from target!" );
// this hook allows you to prevent execution of AuraEffect handler, or to replace it with your own handler
//PreventDefaultAction();
}
void HandleAfterEffectApply ( AuraEffect const * /*aurEff*/ , AuraEffectHandleModes /*mode*/ )
{
sLog -> outString ( "Aura Effect has just been applied on target!" );
2011-04-27 18:58:40 +02:00
Unit * target = GetTarget ();
2010-08-24 00:10:49 +02:00
// cast spell on target on aura apply
target -> CastSpell ( target , SPELL_TRIGGERED , true );
}
2011-05-25 17:13:32 +02:00
void HandleAfterEffectRemove ( AuraEffect const * /*aurEff*/ , AuraEffectHandleModes /*mode*/ )
2010-08-24 00:10:49 +02:00
{
2011-05-25 17:13:32 +02:00
sLog -> outString ( "Aura Effect has just been just removed from target!" );
2011-04-27 18:58:40 +02:00
Unit * target = GetTarget ();
Unit * caster = GetCaster ();
2010-08-24 00:10:49 +02:00
// caster may be not avalible (logged out for example)
if ( ! caster )
return ;
// cast spell on caster on aura remove
target -> CastSpell ( caster , SPELL_TRIGGERED , true );
}
2011-04-27 18:58:40 +02:00
void HandleEffectPeriodic ( AuraEffect const * /*aurEff*/ )
2010-08-24 00:10:49 +02:00
{
2010-12-23 23:25:44 +01:00
sLog -> outString ( "Perioidic Aura Effect is does a tick on target!" );
2011-04-27 18:58:40 +02:00
Unit * target = GetTarget ();
2010-08-24 00:10:49 +02:00
// aura targets damage self on tick
target -> DealDamage ( target , 100 );
}
2011-04-27 18:58:40 +02:00
void HandleEffectPeriodicUpdate ( AuraEffect * aurEff )
2010-08-24 00:10:49 +02:00
{
2010-12-23 23:25:44 +01:00
sLog -> outString ( "Perioidic Aura Effect is now updated!" );
2010-08-24 00:10:49 +02:00
// we're doubling aura amount every tick
aurEff -> ChangeAmount ( aurEff -> GetAmount () * 2 );
}
2011-04-27 18:58:40 +02:00
void HandleEffectCalcAmount ( AuraEffect const * /*aurEff*/ , int32 & amount , bool & canBeRecalculated )
2010-08-24 00:10:49 +02:00
{
2010-12-23 23:25:44 +01:00
sLog -> outString ( "Amount of Aura Effect is being calculated now!" );
2010-12-27 20:14:54 +01:00
// we're setting amount to 100
2010-08-24 00:10:49 +02:00
amount = 100 ;
// amount will be never recalculated due to applying passive aura
canBeRecalculated = false ;
}
2011-04-27 18:58:40 +02:00
void HandleEffectCalcPeriodic ( AuraEffect const * /*aurEff*/ , bool & isPeriodic , int32 & amplitude )
2010-08-24 00:10:49 +02:00
{
2010-12-23 23:25:44 +01:00
sLog -> outString ( "Periodic data of Aura Effect is being calculated now!" );
2010-08-24 00:10:49 +02:00
// we're setting aura to be periodic and tick every 10 seconds
isPeriodic = true ;
amplitude = 2 * IN_MILLISECONDS ;
}
2011-04-27 18:58:40 +02:00
void HandleEffectCalcSpellMod ( AuraEffect const * /*aurEff*/ , SpellModifier *& spellMod )
2010-08-24 00:10:49 +02:00
{
2010-12-23 23:25:44 +01:00
sLog -> outString ( "SpellMod data of Aura Effect is being calculated now!" );
2010-08-24 00:10:49 +02:00
// we don't want spellmod for example
2011-04-27 18:58:40 +02:00
if ( spellMod )
2010-08-24 00:10:49 +02:00
{
delete spellMod ;
spellMod = NULL ;
}
/*
// alternative: we want spellmod for spell which doesn't have it
if (!spellMod)
{
spellMod = new SpellModifier(GetAura());
spellMod->op = SPELLMOD_DOT;
spellMod->type = SPELLMOD_PCT;
spellMod->spellId = GetId();
spellMod->mask[1] = 0x00002000;
}
*/
}
2010-09-12 01:40:27 +02:00
// function registering
2010-08-24 00:10:49 +02:00
void Register ()
{
2011-05-25 17:13:32 +02:00
OnEffectApply += AuraEffectApplyFn ( spell_ex_66244AuraScript :: HandleOnEffectApply , EFFECT_0 , SPELL_AURA_DUMMY , AURA_EFFECT_HANDLE_REAL );
OnEffectRemove += AuraEffectRemoveFn ( spell_ex_66244AuraScript :: HandleOnEffectRemove , EFFECT_0 , SPELL_AURA_DUMMY , AURA_EFFECT_HANDLE_REAL );
2011-05-29 13:18:47 +02:00
// AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK - makes handler to be called when aura is reapplied on target
AfterEffectApply += AuraEffectApplyFn ( spell_ex_66244AuraScript :: HandleAfterEffectApply , EFFECT_0 , SPELL_AURA_DUMMY , AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK );
2011-05-25 17:13:32 +02:00
AfterEffectRemove += AuraEffectRemoveFn ( spell_ex_66244AuraScript :: HandleAfterEffectRemove , EFFECT_0 , SPELL_AURA_DUMMY , AURA_EFFECT_HANDLE_REAL );
2011-04-29 20:47:02 +02:00
OnEffectPeriodic += AuraEffectPeriodicFn ( spell_ex_66244AuraScript :: HandleEffectPeriodic , EFFECT_0 , SPELL_AURA_DUMMY );
2010-08-24 00:10:49 +02:00
OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn ( spell_ex_66244AuraScript :: HandleEffectPeriodicUpdate , EFFECT_0 , SPELL_AURA_DUMMY );
2010-12-27 20:14:54 +01:00
DoEffectCalcAmount += AuraEffectCalcAmountFn ( spell_ex_66244AuraScript :: HandleEffectCalcAmount , EFFECT_0 , SPELL_AURA_DUMMY );
DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn ( spell_ex_66244AuraScript :: HandleEffectCalcPeriodic , EFFECT_0 , SPELL_AURA_DUMMY );
DoEffectCalcSpellMod += AuraEffectCalcSpellModFn ( spell_ex_66244AuraScript :: HandleEffectCalcSpellMod , EFFECT_0 , SPELL_AURA_DUMMY );
/*OnApply += AuraEffectApplyFn();
OnRemove += AuraEffectRemoveFn();
DoCheckAreaTarget += AuraCheckAreaTargetFn();*/
}
/*
void OnApply()
{
}
void OnRemove()
{
2010-08-06 11:41:32 -07:00
}
2010-12-27 20:14:54 +01:00
2011-06-11 22:35:29 +02:00
bool DoCheckAreaTarget(Unit* proposedTarget)
2010-12-27 20:14:54 +01:00
{
}*/
2010-08-06 11:41:32 -07:00
};
2010-07-24 22:41:42 +02:00
2010-08-24 00:10:49 +02:00
// function which creates AuraScript
2011-04-27 18:58:40 +02:00
AuraScript * GetAuraScript () const
2010-08-06 11:41:32 -07:00
{
2010-08-24 00:10:49 +02:00
return new spell_ex_66244AuraScript ();
2010-08-06 11:41:32 -07:00
}
2010-12-27 20:14:54 +01:00
};
2011-05-31 20:02:55 +02:00
// example usage of OnEffectManaShield and AfterEffectManaShield hooks
// see spell_ex_absorb_aura, these hooks work the same as OnEffectAbsorb and AfterEffectAbsorb
2010-12-30 19:05:19 +01:00
// example usage of OnEffectAbsorb and AfterEffectAbsorb hooks
2010-12-27 20:14:54 +01:00
class spell_ex_absorb_aura : public SpellScriptLoader
{
public :
spell_ex_absorb_aura () : SpellScriptLoader ( "spell_ex_absorb_aura" ) { }
class spell_ex_absorb_auraAuraScript : public AuraScript
{
2011-04-27 18:58:40 +02:00
PrepareAuraScript ( spell_ex_absorb_auraAuraScript );
2010-12-27 20:14:54 +01:00
2011-04-27 18:58:40 +02:00
void HandleOnEffectAbsorb ( AuraEffect * /*aurEff*/ , DamageInfo & dmgInfo , uint32 & absorbAmount )
2010-12-27 20:14:54 +01:00
{
sLog -> outString ( "Our aura is now absorbing damage done to us!" );
// absorb whole damage done to us
absorbAmount = dmgInfo . GetDamage ();
}
2011-04-27 18:58:40 +02:00
void HandleAfterEffectAbsorb ( AuraEffect * /*aurEff*/ , DamageInfo & /*dmgInfo*/ , uint32 & absorbAmount )
2010-12-30 02:03:46 +01:00
{
sLog -> outString ( "Our aura has absorbed %u damage!" , absorbAmount );
}
2010-12-27 20:14:54 +01:00
// function registering
void Register ()
{
OnEffectAbsorb += AuraEffectAbsorbFn ( spell_ex_absorb_auraAuraScript :: HandleOnEffectAbsorb , EFFECT_0 );
2010-12-30 02:03:46 +01:00
AfterEffectAbsorb += AuraEffectAbsorbFn ( spell_ex_absorb_auraAuraScript :: HandleAfterEffectAbsorb , EFFECT_0 );
2010-12-27 20:14:54 +01:00
}
};
// function which creates AuraScript
2011-04-27 18:58:40 +02:00
AuraScript * GetAuraScript () const
2010-12-27 20:14:54 +01:00
{
return new spell_ex_absorb_auraAuraScript ();
}
2010-08-06 11:41:32 -07:00
};
2010-08-24 00:10:49 +02:00
2011-05-31 20:02:55 +02:00
class spell_ex_463 : public SpellScriptLoader
{
public :
spell_ex_463 () : SpellScriptLoader ( "spell_ex_463" ) { }
class spell_ex_463AuraScript : public AuraScript
{
PrepareAuraScript ( spell_ex_463AuraScript );
bool CheckAreaTarget ( Unit * target )
{
sLog -> outString ( "Area aura checks if unit is a valid target for it!" );
// in our script we allow only players to be affected
2011-05-31 20:28:36 +02:00
return target -> GetTypeId () == TYPEID_PLAYER ;
2011-05-31 20:02:55 +02:00
}
void Register ()
{
DoCheckAreaTarget += AuraCheckAreaTargetFn ( spell_ex_463AuraScript :: CheckAreaTarget );
}
};
// function which creates AuraScript
AuraScript * GetAuraScript () const
{
return new spell_ex_463AuraScript ();
}
};
2010-08-24 00:10:49 +02:00
// this function has to be added to function set in ScriptLoader.cpp
void AddSC_example_spell_scripts ()
{
new spell_ex_5581 ;
new spell_ex_66244 ;
2010-12-27 20:14:54 +01:00
new spell_ex_absorb_aura ;
2011-05-31 20:02:55 +02:00
new spell_ex_463 ;
2010-08-24 00:10:49 +02:00
}
2010-07-25 02:05:12 +02:00
/* empty script for copypasting
2010-08-24 00:10:49 +02:00
class spell_ex : public SpellScriptLoader
2010-07-25 02:05:12 +02:00
{
2010-08-08 19:45:53 +02:00
public:
2010-08-24 00:10:49 +02:00
spell_ex() : SpellScriptLoader("spell_ex") { }
2010-08-06 11:41:32 -07:00
class spell_ex_SpellScript : public SpellScript
{
2011-04-27 18:58:40 +02:00
PrepareSpellScript(spell_ex_SpellScript);
2011-07-26 23:09:28 +02:00
//bool Validate(SpellInfo const* spellEntry){return true;}
2010-08-24 00:10:49 +02:00
//bool Load(){return true;}
//void Unload(){}
//void Function(SpellEffIndex effIndex) //OnEffect += SpellEffectFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_EFFECT_ANY);
//void Function() //OnHit += SpellEffectFn(spell_ex_SpellScript::Function);
2010-08-06 11:41:32 -07:00
void Register()
{
}
};
2010-07-25 02:05:12 +02:00
2011-04-27 18:58:40 +02:00
SpellScript* GetSpellScript() const
2010-08-06 11:41:32 -07:00
{
return new spell_ex_SpellScript();
}
2010-07-25 02:05:12 +02:00
};
*/
2010-08-24 00:10:49 +02:00
/* empty script for copypasting
class spell_ex : public SpellScriptLoader
2010-07-24 22:41:42 +02:00
{
2010-08-24 00:10:49 +02:00
public:
spell_ex() : SpellScriptLoader("spell_ex") { }
class spell_ex_AuraScript : public AuraScript
{
2010-10-08 22:33:21 +02:00
PrepareAuraScript(spell_ex)
2011-07-26 23:09:28 +02:00
//bool Validate(SpellInfo const* spellEntry){return true;}
2010-08-24 00:10:49 +02:00
//bool Load(){return true;}
//void Unload(){}
2011-04-27 18:58:40 +02:00
//void spell_ex_SpellScript::Function(AuraEffect const* aurEff, AuraEffectHandleModes mode) //OnEffectApply += AuraEffectApplyFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL);
//void spell_ex_SpellScript::Function(AuraEffect const* aurEff, AuraEffectHandleModes mode) //OnEffectRemove += AuraEffectRemoveFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL);
//void spell_ex_SpellScript::Function(AuraEffect const* aurEff) //OnEffectPeriodic += AuraEffectPeriodicFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
//void spell_ex_SpellScript::Function(AuraEffect* aurEff) //OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
//void spell_ex_SpellScript::Function(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated) //DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
//void spell_ex_SpellScript::Function(AuraEffect const* aurEff, bool& isPeriodic, int32& amplitude) //OnEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
//void spell_ex_SpellScript::Function(AuraEffect const* aurEff, SpellModifier*& spellMod) //OnEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
2010-08-24 00:10:49 +02:00
void Register()
{
}
};
2011-04-27 18:58:40 +02:00
AuraScript* GetAuraScript() const
2010-08-24 00:10:49 +02:00
{
return new spell_ex_AuraScript();
}
};
2010-08-01 17:16:31 -07:00
*/