diff options
-rw-r--r-- | src/game/ScriptCalls.cpp | 3 | ||||
-rw-r--r-- | src/game/ScriptCalls.h | 6 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 13 |
3 files changed, 20 insertions, 2 deletions
diff --git a/src/game/ScriptCalls.cpp b/src/game/ScriptCalls.cpp index c101cd6c10a..33423611146 100644 --- a/src/game/ScriptCalls.cpp +++ b/src/game/ScriptCalls.cpp @@ -76,6 +76,9 @@ bool LoadScriptingModule(char const* libName) ||!(testScript->GOQuestAccept =(scriptCallGOQuestAccept )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"GOQuestAccept" )) ||!(testScript->ReceiveEmote =(scriptCallReceiveEmote )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"ReceiveEmote" )) ||!(testScript->ItemUse =(scriptCallItemUse )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"ItemUse" )) + ||!(testScript->EffectDummyGameObj =(scriptCallEffectDummyGameObj )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyGameObj" )) + ||!(testScript->EffectDummyCreature =(scriptCallEffectDummyCreature )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyCreature" )) + ||!(testScript->EffectDummyItem =(scriptCallEffectDummyItem )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"EffectDummyItem" )) ||!(testScript->GetAI =(scriptCallGetAI )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"GetAI" )) ||!(testScript->CreateInstanceData =(scriptCallCreateInstanceData )TRINITY_GET_PROC_ADDR(testScript->hScriptsLib,"CreateInstanceData" )) ) diff --git a/src/game/ScriptCalls.h b/src/game/ScriptCalls.h index bb618e5af9f..e1de919272e 100644 --- a/src/game/ScriptCalls.h +++ b/src/game/ScriptCalls.h @@ -58,6 +58,9 @@ typedef bool(TRINITY_IMPORT * scriptCallGOQuestAccept)(Player *player, GameObjec typedef bool(TRINITY_IMPORT * scriptCallGOChooseReward)(Player *player, GameObject *, Quest const*, uint32 opt ); typedef bool(TRINITY_IMPORT * scriptCallReceiveEmote) ( Player *player, Creature *_Creature, uint32 emote ); typedef bool(TRINITY_IMPORT * scriptCallItemUse) (Player *player, Item *_Item, SpellCastTargets const& targets); +typedef bool(TRINITY_IMPORT * scriptCallEffectDummyGameObj) (Unit *caster, uint32 spellId, uint32 effIndex, GameObject *gameObjTarget); +typedef bool(TRINITY_IMPORT * scriptCallEffectDummyCreature) (Unit *caster, uint32 spellId, uint32 effIndex, Creature *crTarget); +typedef bool(TRINITY_IMPORT * scriptCallEffectDummyItem) (Unit *caster, uint32 spellId, uint32 effIndex, Item *itemTarget); typedef CreatureAI* (TRINITY_IMPORT * scriptCallGetAI) ( Creature *_Creature ); typedef InstanceData* (TRINITY_IMPORT * scriptCallCreateInstanceData) (Map *map); @@ -84,6 +87,9 @@ typedef struct scriptCallGOQuestAccept GOQuestAccept; scriptCallReceiveEmote ReceiveEmote; scriptCallItemUse ItemUse; + scriptCallEffectDummyGameObj EffectDummyGameObj; + scriptCallEffectDummyCreature EffectDummyCreature; + scriptCallEffectDummyItem EffectDummyItem; scriptCallGetAI GetAI; scriptCallCreateInstanceData CreateInstanceData; diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 5de46a3483e..a52f289194c 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -1247,7 +1247,7 @@ void Spell::EffectDummy(uint32 i) return; unitTarget->CastSpell(unitTarget, 58419, true); - break; + return; } case 58420: // Portal to Stormwind { @@ -1255,7 +1255,7 @@ void Spell::EffectDummy(uint32 i) return; unitTarget->CastSpell(unitTarget, 58421, true); - break; + return; } } @@ -1914,6 +1914,15 @@ void Spell::EffectDummy(uint32 i) m_caster->AddPetAura(petSpell); return; } + + // Script based implementation. Must be used only for not good for implementation in core spell effects + // So called only for not proccessed cases + if(gameObjTarget) + Script->EffectDummyGameObj(m_caster, m_spellInfo->Id, i, gameObjTarget); + else if(unitTarget && unitTarget->GetTypeId()==TYPEID_UNIT) + Script->EffectDummyCreature(m_caster, m_spellInfo->Id, i, (Creature*)unitTarget); + else if(itemTarget) + Script->EffectDummyItem(m_caster, m_spellInfo->Id, i, itemTarget); } void Spell::EffectTriggerSpellWithValue(uint32 i) |