[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/Player.h"
#include "../../game/Map.h" #include "../../game/Map.h"
#include "../../game/ObjectMgr.h" #include "../../game/ObjectMgr.h"
#include "../../game/SpellAuras.h"
//uint8 loglevel = 0; //uint8 loglevel = 0;
int nrscripts; int nrscripts;
@ -310,6 +311,16 @@ bool EffectDummyItem(Unit *caster, uint32 spellId, SpellEffectIndex effIndex, It
return tmpscript->pEffectDummyItem(caster, spellId, effIndex, itemTarget); 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) void ScriptedAI::UpdateAI(const uint32)
{ {
//Check if we have a current target //Check if we have a current target

View file

@ -31,6 +31,7 @@ class Item;
class GameObject; class GameObject;
class SpellCastTargets; class SpellCastTargets;
class Map; class Map;
class Aura;
#define MAX_SCRIPTS 1000 #define MAX_SCRIPTS 1000
#define MAX_INSTANCE_SCRIPTS 1000 #define MAX_INSTANCE_SCRIPTS 1000
@ -42,7 +43,7 @@ struct Script
pQuestSelect(NULL), pQuestComplete(NULL), pNPCDialogStatus(NULL), pGODialogStatus(NULL), pChooseReward(NULL), pQuestSelect(NULL), pQuestComplete(NULL), pNPCDialogStatus(NULL), pGODialogStatus(NULL), pChooseReward(NULL),
pItemHello(NULL), pGOHello(NULL), pAreaTrigger(NULL), pItemQuestAccept(NULL), pGOQuestAccept(NULL), pItemHello(NULL), pGOHello(NULL), pAreaTrigger(NULL), pItemQuestAccept(NULL), pGOQuestAccept(NULL),
pGOChooseReward(NULL), pItemUse(NULL), pEffectDummyGameObj(NULL), pEffectDummyCreature(NULL), pGOChooseReward(NULL), pItemUse(NULL), pEffectDummyGameObj(NULL), pEffectDummyCreature(NULL),
pEffectDummyItem(NULL), GetAI(NULL) pEffectDummyItem(NULL), pEffectAuraDummy(NULL), GetAI(NULL)
{} {}
std::string Name; std::string Name;
@ -67,6 +68,7 @@ struct Script
bool (*pEffectDummyGameObj )(Unit*, uint32, SpellEffectIndex, GameObject* ); bool (*pEffectDummyGameObj )(Unit*, uint32, SpellEffectIndex, GameObject* );
bool (*pEffectDummyCreature )(Unit*, uint32, SpellEffectIndex, Creature* ); bool (*pEffectDummyCreature )(Unit*, uint32, SpellEffectIndex, Creature* );
bool (*pEffectDummyItem )(Unit*, uint32, SpellEffectIndex, Item* ); bool (*pEffectDummyItem )(Unit*, uint32, SpellEffectIndex, Item* );
bool (*pEffectAuraDummy )(const Aura*, bool);
CreatureAI* (*GetAI)(Creature *_Creature); CreatureAI* (*GetAI)(Creature *_Creature);
InstanceData* (*GetInstanceData)(Map*); 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->EffectDummyGameObj =(scriptCallEffectDummyGameObj )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyGameObj" ))
||!(testScript->EffectDummyCreature =(scriptCallEffectDummyCreature )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyCreature" )) ||!(testScript->EffectDummyCreature =(scriptCallEffectDummyCreature )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyCreature" ))
||!(testScript->EffectDummyItem =(scriptCallEffectDummyItem )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyItem" )) ||!(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->GetAI =(scriptCallGetAI )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"GetAI" ))
||!(testScript->CreateInstanceData =(scriptCallCreateInstanceData )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"CreateInstanceData" )) ||!(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 * 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 * 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 * 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 CreatureAI* (MANGOS_IMPORT * scriptCallGetAI) ( Creature *_Creature );
typedef InstanceData* (MANGOS_IMPORT * scriptCallCreateInstanceData) (Map *map); typedef InstanceData* (MANGOS_IMPORT * scriptCallCreateInstanceData) (Map *map);
@ -87,6 +88,7 @@ typedef struct
scriptCallEffectDummyGameObj EffectDummyGameObj; scriptCallEffectDummyGameObj EffectDummyGameObj;
scriptCallEffectDummyCreature EffectDummyCreature; scriptCallEffectDummyCreature EffectDummyCreature;
scriptCallEffectDummyItem EffectDummyItem; scriptCallEffectDummyItem EffectDummyItem;
scriptCallEffectAuraDummy EffectAuraDummy;
scriptCallGetAI GetAI; scriptCallGetAI GetAI;
scriptCallCreateInstanceData CreateInstanceData; 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) void Aura::HandleAuraMounted(bool apply, bool Real)

View file

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