[9444] Add script call EffectAuraDummy, called at dummy aura(4) apply/remove

Signed-off-by: NoFantasy <nofantasy@nf.no>
This commit is contained in:
NoFantasy 2010-02-24 17:14:44 +01:00
parent 9f3b42d8ee
commit 24f2d4658f
6 changed files with 22 additions and 2 deletions

View file

@ -23,6 +23,7 @@
#include "../../game/Player.h"
#include "../../game/Map.h"
#include "../../game/ObjectMgr.h"
#include "../../game/SpellAuras.h"
//uint8 loglevel = 0;
int nrscripts;
@ -310,6 +311,16 @@ bool EffectDummyItem(Unit *caster, uint32 spellId, SpellEffectIndex effIndex, It
return tmpscript->pEffectDummyItem(caster, spellId, effIndex, itemTarget);
}
MANGOS_DLL_EXPORT
bool EffectAuraDummy(const Aura* pAura, bool apply)
{
Script *tmpscript = m_scripts[((Creature*)pAura->GetTarget())->GetScriptId()];
if (!tmpscript || !tmpscript->pEffectAuraDummy)
return false;
return tmpscript->pEffectAuraDummy(pAura, apply);
}
void ScriptedAI::UpdateAI(const uint32)
{
//Check if we have a current target

View file

@ -31,6 +31,7 @@ class Item;
class GameObject;
class SpellCastTargets;
class Map;
class Aura;
#define MAX_SCRIPTS 1000
#define MAX_INSTANCE_SCRIPTS 1000
@ -42,7 +43,7 @@ struct Script
pQuestSelect(NULL), pQuestComplete(NULL), pNPCDialogStatus(NULL), pGODialogStatus(NULL), pChooseReward(NULL),
pItemHello(NULL), pGOHello(NULL), pAreaTrigger(NULL), pItemQuestAccept(NULL), pGOQuestAccept(NULL),
pGOChooseReward(NULL), pItemUse(NULL), pEffectDummyGameObj(NULL), pEffectDummyCreature(NULL),
pEffectDummyItem(NULL), GetAI(NULL)
pEffectDummyItem(NULL), pEffectAuraDummy(NULL), GetAI(NULL)
{}
std::string Name;
@ -67,6 +68,7 @@ struct Script
bool (*pEffectDummyGameObj )(Unit*, uint32, SpellEffectIndex, GameObject* );
bool (*pEffectDummyCreature )(Unit*, uint32, SpellEffectIndex, Creature* );
bool (*pEffectDummyItem )(Unit*, uint32, SpellEffectIndex, Item* );
bool (*pEffectAuraDummy )(const Aura*, bool);
CreatureAI* (*GetAI)(Creature *_Creature);
InstanceData* (*GetInstanceData)(Map*);

View file

@ -76,6 +76,7 @@ bool LoadScriptingModule(char const* libName)
||!(testScript->EffectDummyGameObj =(scriptCallEffectDummyGameObj )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyGameObj" ))
||!(testScript->EffectDummyCreature =(scriptCallEffectDummyCreature )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyCreature" ))
||!(testScript->EffectDummyItem =(scriptCallEffectDummyItem )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyItem" ))
||!(testScript->EffectAuraDummy =(scriptCallEffectAuraDummy )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"EffectAuraDummy" ))
||!(testScript->GetAI =(scriptCallGetAI )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"GetAI" ))
||!(testScript->CreateInstanceData =(scriptCallCreateInstanceData )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"CreateInstanceData" ))
)

View file

@ -59,6 +59,7 @@ typedef bool(MANGOS_IMPORT * scriptCallItemUse) (Player *player, Item *_Item, Sp
typedef bool(MANGOS_IMPORT * scriptCallEffectDummyGameObj) (Unit *caster, uint32 spellId, SpellEffectIndex effIndex, GameObject *gameObjTarget);
typedef bool(MANGOS_IMPORT * scriptCallEffectDummyCreature) (Unit *caster, uint32 spellId, SpellEffectIndex effIndex, Creature *crTarget);
typedef bool(MANGOS_IMPORT * scriptCallEffectDummyItem) (Unit *caster, uint32 spellId, SpellEffectIndex effIndex, Item *itemTarget);
typedef bool(MANGOS_IMPORT * scriptCallEffectAuraDummy) (const Aura* pAura, bool apply);
typedef CreatureAI* (MANGOS_IMPORT * scriptCallGetAI) ( Creature *_Creature );
typedef InstanceData* (MANGOS_IMPORT * scriptCallCreateInstanceData) (Map *map);
@ -87,6 +88,7 @@ typedef struct
scriptCallEffectDummyGameObj EffectDummyGameObj;
scriptCallEffectDummyCreature EffectDummyCreature;
scriptCallEffectDummyItem EffectDummyItem;
scriptCallEffectAuraDummy EffectAuraDummy;
scriptCallGetAI GetAI;
scriptCallCreateInstanceData CreateInstanceData;

View file

@ -2859,6 +2859,10 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
}
}
}
// script has to "handle with care", only use where data are not ok to use in the above code.
if (m_target->GetTypeId() == TYPEID_UNIT)
Script->EffectAuraDummy(this, apply);
}
void Aura::HandleAuraMounted(bool apply, bool Real)

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "9443"
#define REVISION_NR "9444"
#endif // __REVISION_NR_H__