[7454] Support scripting for dummy spell effects. Author: Lightguard
Note: scripting calls specially added in end of function for allow calling only
if internal implementaion absent for dummy effect.
Note: TScript part is not updated.
--HG--
branch : trunk
This commit is contained in:
@@ -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" ))
|
||||
)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user