[7469] Allow scripting aura spell triggering in case not existed spell. Author: VladimirMangos

--HG--
branch : trunk
This commit is contained in:
megamage
2009-03-16 15:46:27 -06:00
parent 3eba06e4ad
commit 8921eb048d
+9 -13
View File
@@ -43,6 +43,7 @@
#include "OutdoorPvP.h" #include "OutdoorPvP.h"
#include "OutdoorPvPMgr.h" #include "OutdoorPvPMgr.h"
#include "CreatureAI.h" #include "CreatureAI.h"
#include "ScriptCalls.h"
#include "Util.h" #include "Util.h"
#include "GridNotifiers.h" #include "GridNotifiers.h"
#include "GridNotifiersImpl.h" #include "GridNotifiersImpl.h"
@@ -1310,7 +1311,7 @@ void Aura::TriggerSpell()
caster->ModifyPower( POWER_MANA, mana ); caster->ModifyPower( POWER_MANA, mana );
caster->SendEnergizeSpellLog(caster, 23493, mana, POWER_MANA); caster->SendEnergizeSpellLog(caster, 23493, mana, POWER_MANA);
} }
break; return;
} }
// // Stoneclaw Totem Passive TEST // // Stoneclaw Totem Passive TEST
// case 23792: break; // case 23792: break;
@@ -1389,8 +1390,6 @@ void Aura::TriggerSpell()
// case 28522: break; // case 28522: break;
// // Silithyst // // Silithyst
// case 29519: break; // case 29519: break;
// // Inoculate Nestlewood Owlkin
case 29528: trigger_spell_id = 28713; break;
// // Overload // // Overload
// case 29768: break; // case 29768: break;
// // Return Fire // // Return Fire
@@ -1432,7 +1431,6 @@ void Aura::TriggerSpell()
creature->SetHealth(0); // just for nice GM-mode view creature->SetHealth(0); // just for nice GM-mode view
} }
return; return;
break;
} }
// Quake // Quake
case 30576: trigger_spell_id = 30571; break; case 30576: trigger_spell_id = 30571; break;
@@ -1826,13 +1824,9 @@ void Aura::TriggerSpell()
default: default:
break; break;
} }
// Reget trigger spell proto // Reget trigger spell proto
triggeredSpellInfo = sSpellStore.LookupEntry(trigger_spell_id); triggeredSpellInfo = sSpellStore.LookupEntry(trigger_spell_id);
if(triggeredSpellInfo == NULL)
{
sLog.outError("Aura::TriggerSpell: Spell %u have 0 in EffectTriggered[%d], not handled custom case?",GetId(),GetEffIndex());
return;
}
} }
else else
{ {
@@ -1884,17 +1878,19 @@ void Aura::TriggerSpell()
} }
} }
} }
if(!caster->GetSpellMaxRangeForTarget(m_target,sSpellRangeStore.LookupEntry(triggeredSpellInfo->rangeIndex))) if(!caster->GetSpellMaxRangeForTarget(m_target,sSpellRangeStore.LookupEntry(triggeredSpellInfo->rangeIndex)))
target = m_target; //for druid dispel poison target = m_target; //for druid dispel poison
if(triggeredSpellInfo)
m_target->CastSpell(target, triggeredSpellInfo, true, 0, this, GetCasterGUID()); m_target->CastSpell(target, triggeredSpellInfo, true, 0, this, GetCasterGUID());
else if(target->GetTypeId()!=TYPEID_UNIT || !Script->EffectDummyCreature(caster, GetId(), GetEffIndex(), (Creature*)target))
sLog.outError("Aura::TriggerSpell: Spell %u have 0 in EffectTriggered[%d], not handled custom case?",GetId(),GetEffIndex());
} }
Unit* Aura::GetTriggerTarget() const Unit* Aura::GetTriggerTarget() const
{ {
Unit* target = ObjectAccessor::GetUnit(*m_target, Unit* target = ObjectAccessor::GetUnit(*m_target, m_target->GetUInt64Value(UNIT_FIELD_TARGET));
/*m_target->GetTypeId()==TYPEID_PLAYER ?
((Player*)m_target)->GetSelection() :*/
m_target->GetUInt64Value(UNIT_FIELD_TARGET));
return target ? target : m_target; return target ? target : m_target;
} }