mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-17 16:10:49 +01:00
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
This commit is contained in:
2
sql/updates/world/2013_07_18_00_world_conditions.sql
Normal file
2
sql/updates/world/2013_07_18_00_world_conditions.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- Fix There's Something About the Squire
|
||||
UPDATE `conditions` SET `ConditionTarget`=1 WHERE `SourceTypeOrReferenceId`=17 AND `SourceGroup`=0 AND `SourceEntry`=63126 AND `ConditionTypeOrReference`=9;
|
||||
15
sql/updates/world/2013_07_18_01_world_koralon.sql
Normal file
15
sql/updates/world/2013_07_18_01_world_koralon.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (66725,68161,66808,68160,66765,67333,66809,67331);
|
||||
INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES
|
||||
(66725, 'spell_koralon_meteor_fists'),
|
||||
(68161, 'spell_koralon_meteor_fists'),
|
||||
(66808, 'spell_flame_warder_meteor_fists'),
|
||||
(68160, 'spell_flame_warder_meteor_fists'),
|
||||
(66765, 'spell_koralon_meteor_fists_damage'),
|
||||
(67333, 'spell_koralon_meteor_fists_damage'),
|
||||
(66809, 'spell_koralon_meteor_fists_damage'),
|
||||
(67331, 'spell_koralon_meteor_fists_damage');
|
||||
|
||||
DELETE FROM `spell_proc_event` WHERE `entry` IN (66808,68160);
|
||||
INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES
|
||||
(66808,0,0,0,0,0,0x4,0,0,0,0),
|
||||
(68160,0,0,0,0,0,0x4,0,0,0,0);
|
||||
@@ -719,6 +719,8 @@ class ObjectMgr
|
||||
* If the player is online, the name is retrieved immediately otherwise
|
||||
* a database query is done.
|
||||
*
|
||||
* @remark Use sWorld->GetCharacterNameData because it doesn't require a database query when player is offline
|
||||
*
|
||||
* @param guid player full guid
|
||||
* @param name returned name
|
||||
*
|
||||
|
||||
@@ -70,9 +70,11 @@ public:
|
||||
char* name = handler->extractQuotedArg(tailStr);
|
||||
if (!name)
|
||||
return false;
|
||||
|
||||
char* typeStr = strtok(NULL, "");
|
||||
if (!typeStr)
|
||||
return false;
|
||||
|
||||
int8 type = atoi(typeStr);
|
||||
if (sArenaTeamMgr->GetArenaTeamByName(name))
|
||||
{
|
||||
@@ -90,18 +92,18 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
ArenaTeam* Arena = new ArenaTeam();
|
||||
ArenaTeam* arena = new ArenaTeam();
|
||||
|
||||
if (!Arena->Create(target->GetGUID(), type, name, 4293102085, 101, 4293253939, 4, 4284049911))
|
||||
if (!arena->Create(target->GetGUID(), type, name, 4293102085, 101, 4293253939, 4, 4284049911))
|
||||
{
|
||||
delete Arena;
|
||||
delete arena;
|
||||
handler->SendSysMessage(LANG_BAD_VALUE);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
sArenaTeamMgr->AddArenaTeam(Arena);
|
||||
handler->PSendSysMessage(LANG_ARENA_CREATE, Arena->GetName().c_str(), Arena->GetId(), Arena->GetType(), Arena->GetCaptain());
|
||||
sArenaTeamMgr->AddArenaTeam(arena);
|
||||
handler->PSendSysMessage(LANG_ARENA_CREATE, arena->GetName().c_str(), arena->GetId(), arena->GetType(), arena->GetCaptain());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -109,6 +111,7 @@ public:
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -121,29 +124,32 @@ public:
|
||||
if (!teamId)
|
||||
return false;
|
||||
|
||||
ArenaTeam* Arena = sArenaTeamMgr->GetArenaTeamById(teamId);
|
||||
ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
|
||||
|
||||
if (!Arena)
|
||||
if (!arena)
|
||||
{
|
||||
handler->PSendSysMessage(LANG_ARENA_ERROR_NOT_FOUND, teamId);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Arena->IsFighting())
|
||||
if (arena->IsFighting())
|
||||
{
|
||||
handler->SendSysMessage(LANG_ARENA_ERROR_COMBAT);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
std::string name = Arena->GetName();
|
||||
Arena->Disband();
|
||||
|
||||
std::string name = arena->GetName();
|
||||
arena->Disband();
|
||||
if (handler->GetSession())
|
||||
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "GameMaster: %s [GUID: %u] disbanded arena team type: %u [Id: %u].",
|
||||
handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), Arena->GetType(), teamId);
|
||||
handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), arena->GetType(), teamId);
|
||||
else
|
||||
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: disbanded arena team type: %u [Id: %u].", Arena->GetType(), teamId);
|
||||
delete(Arena);
|
||||
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: disbanded arena team type: %u [Id: %u].", arena->GetType(), teamId);
|
||||
|
||||
delete(arena);
|
||||
|
||||
handler->PSendSysMessage(LANG_ARENA_DISBAND, name.c_str(), teamId);
|
||||
return true;
|
||||
}
|
||||
@@ -171,8 +177,8 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
ArenaTeam* Arena = sArenaTeamMgr->GetArenaTeamByName(oldArenaStr);
|
||||
if (!Arena)
|
||||
ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamByName(oldArenaStr);
|
||||
if (!arena)
|
||||
{
|
||||
handler->PSendSysMessage(LANG_AREAN_ERROR_NAME_NOT_FOUND, oldArenaStr);
|
||||
handler->SetSentErrorMessage(true);
|
||||
@@ -186,25 +192,27 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Arena->IsFighting())
|
||||
if (arena->IsFighting())
|
||||
{
|
||||
handler->SendSysMessage(LANG_ARENA_ERROR_COMBAT);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Arena->SetName(newArenaStr))
|
||||
if (!arena->SetName(newArenaStr))
|
||||
{
|
||||
handler->SendSysMessage(LANG_BAD_VALUE);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
handler->PSendSysMessage(LANG_ARENA_RENAME, Arena->GetId(), oldArenaStr, newArenaStr);
|
||||
|
||||
handler->PSendSysMessage(LANG_ARENA_RENAME, arena->GetId(), oldArenaStr, newArenaStr);
|
||||
if (handler->GetSession())
|
||||
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "GameMaster: %s [GUID: %u] rename arena team \"%s\"[Id: %u] to \"%s\"",
|
||||
handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), oldArenaStr, Arena->GetId(), newArenaStr);
|
||||
handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), oldArenaStr, arena->GetId(), newArenaStr);
|
||||
else
|
||||
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: rename arena team \"%s\"[Id: %u] to \"%s\"", oldArenaStr, Arena->GetId(), newArenaStr);
|
||||
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: rename arena team \"%s\"[Id: %u] to \"%s\"", oldArenaStr, arena->GetId(), newArenaStr);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -265,17 +273,23 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string oldCaptainName;
|
||||
sObjectMgr->GetPlayerNameByGUID(arena->GetCaptain(), oldCaptainName);
|
||||
arena->SetCaptain(targetGuid);
|
||||
|
||||
handler->PSendSysMessage(LANG_ARENA_CAPTAIN, arena->GetName().c_str(), arena->GetId(), oldCaptainName.c_str(), target->GetName().c_str());
|
||||
CharacterNameData const* oldCaptainNameData = sWorld->GetCharacterNameData(GUID_LOPART(arena->GetCaptain()));
|
||||
if (!oldCaptainNameData)
|
||||
{
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
handler->PSendSysMessage(LANG_ARENA_CAPTAIN, arena->GetName().c_str(), arena->GetId(), oldCaptainNameData->m_name.c_str(), target->GetName().c_str());
|
||||
if (handler->GetSession())
|
||||
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "GameMaster: %s [GUID: %u] promoted player: %s [GUID: %u] to leader of arena team \"%s\"[Id: %u]",
|
||||
handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), target->GetName().c_str(), target->GetGUIDLow(), arena->GetName().c_str(), arena->GetId());
|
||||
else
|
||||
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: promoted player: %s [GUID: %u] to leader of arena team \"%s\"[Id: %u]",
|
||||
target->GetName().c_str(), target->GetGUIDLow(), arena->GetName().c_str(), arena->GetId());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -288,20 +302,19 @@ public:
|
||||
if (!teamId)
|
||||
return false;
|
||||
|
||||
ArenaTeam* Arena = sArenaTeamMgr->GetArenaTeamById(teamId);
|
||||
ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
|
||||
|
||||
if (!Arena)
|
||||
if (!arena)
|
||||
{
|
||||
handler->PSendSysMessage(LANG_ARENA_ERROR_NOT_FOUND, teamId);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
handler->PSendSysMessage(LANG_ARENA_INFO_HEADER, Arena->GetName().c_str(), Arena->GetId(), Arena->GetRating(), Arena->GetType(), Arena->GetType());
|
||||
for (ArenaTeam::MemberList::iterator itr = Arena->m_membersBegin(); itr != Arena->m_membersEnd(); ++itr)
|
||||
{
|
||||
handler->PSendSysMessage(LANG_ARENA_INFO_MEMBERS, itr->Name.c_str(), GUID_LOPART(itr->Guid), itr->PersonalRating, (Arena->GetCaptain() == itr->Guid ? "- Captain" : ""));
|
||||
}
|
||||
handler->PSendSysMessage(LANG_ARENA_INFO_HEADER, arena->GetName().c_str(), arena->GetId(), arena->GetRating(), arena->GetType(), arena->GetType());
|
||||
for (ArenaTeam::MemberList::iterator itr = arena->m_membersBegin(); itr != arena->m_membersEnd(); ++itr)
|
||||
handler->PSendSysMessage(LANG_ARENA_INFO_MEMBERS, itr->Name.c_str(), GUID_LOPART(itr->Guid), itr->PersonalRating, (arena->GetCaptain() == itr->Guid ? "- Captain" : ""));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -322,17 +335,16 @@ public:
|
||||
ArenaTeamMgr::ArenaTeamContainer::const_iterator i = sArenaTeamMgr->GetArenaTeamMapBegin();
|
||||
for (; i != sArenaTeamMgr->GetArenaTeamMapEnd(); ++i)
|
||||
{
|
||||
ArenaTeam* Arena = i->second;
|
||||
ArenaTeam* arena = i->second;
|
||||
|
||||
if (Utf8FitTo(Arena->GetName(), wnamepart))
|
||||
if (Utf8FitTo(arena->GetName(), wnamepart))
|
||||
{
|
||||
if (handler->GetSession())
|
||||
handler->PSendSysMessage(LANG_ARENA_LOOKUP, Arena->GetName().c_str(), Arena->GetId(), Arena->GetType(), Arena->GetType());
|
||||
|
||||
if (!found)
|
||||
found = true;
|
||||
|
||||
continue;
|
||||
{
|
||||
handler->PSendSysMessage(LANG_ARENA_LOOKUP, arena->GetName().c_str(), arena->GetId(), arena->GetType(), arena->GetType());
|
||||
found = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
#include "vault_of_archavon.h"
|
||||
|
||||
enum Events
|
||||
@@ -24,14 +26,12 @@ enum Events
|
||||
// Koralon
|
||||
EVENT_BURNING_BREATH = 1,
|
||||
EVENT_BURNING_FURY = 2,
|
||||
EVENT_FLAME_CINDER_A = 3,
|
||||
EVENT_METEOR_FISTS_A = 4,
|
||||
EVENT_METEOR_FISTS_B = 5,
|
||||
EVENT_FLAME_CINDER = 3,
|
||||
EVENT_METEOR_FISTS = 4,
|
||||
|
||||
// Flame Warder
|
||||
EVENT_FW_LAVA_BIRST = 6,
|
||||
EVENT_FW_METEOR_FISTS_A = 7,
|
||||
EVENT_FW_METEOR_FISTS_B = 8,
|
||||
EVENT_FW_LAVA_BIRST = 5,
|
||||
EVENT_FW_METEOR_FISTS = 6
|
||||
};
|
||||
|
||||
enum Spells
|
||||
@@ -41,13 +41,13 @@ enum Spells
|
||||
SPELL_BURNING_FURY = 66721,
|
||||
SPELL_FLAME_CINDER_A = 66684,
|
||||
SPELL_FLAME_CINDER_B = 66681, // don't know the real relation to SPELL_FLAME_CINDER_A atm.
|
||||
SPELL_METEOR_FISTS_A = 66725,
|
||||
SPELL_METEOR_FISTS_B = 67333,
|
||||
SPELL_METEOR_FISTS = 66725,
|
||||
SPELL_METEOR_FISTS_DAMAGE = 66765,
|
||||
|
||||
// Spells Flame Warder
|
||||
SPELL_FW_LAVA_BIRST = 66813,
|
||||
SPELL_FW_METEOR_FISTS_A = 66808,
|
||||
SPELL_FW_METEOR_FISTS_B = 67331,
|
||||
SPELL_FW_METEOR_FISTS = 66808,
|
||||
SPELL_FW_METEOR_FISTS_DAMAGE = 66809
|
||||
};
|
||||
|
||||
class boss_koralon : public CreatureScript
|
||||
@@ -67,8 +67,8 @@ class boss_koralon : public CreatureScript
|
||||
|
||||
events.ScheduleEvent(EVENT_BURNING_FURY, 20000); /// @todo check timer
|
||||
events.ScheduleEvent(EVENT_BURNING_BREATH, 15000); // 1st after 15sec, then every 45sec
|
||||
events.ScheduleEvent(EVENT_METEOR_FISTS_A, 75000); // 1st after 75sec, then every 45sec
|
||||
events.ScheduleEvent(EVENT_FLAME_CINDER_A, 30000); /// @todo check timer
|
||||
events.ScheduleEvent(EVENT_METEOR_FISTS, 75000); // 1st after 75sec, then every 45sec
|
||||
events.ScheduleEvent(EVENT_FLAME_CINDER, 30000); /// @todo check timer
|
||||
|
||||
_EnterCombat();
|
||||
}
|
||||
@@ -95,17 +95,13 @@ class boss_koralon : public CreatureScript
|
||||
DoCast(me, SPELL_BURNING_BREATH);
|
||||
events.ScheduleEvent(EVENT_BURNING_BREATH, 45000);
|
||||
break;
|
||||
case EVENT_METEOR_FISTS_A:
|
||||
DoCast(me, SPELL_METEOR_FISTS_A);
|
||||
events.ScheduleEvent(EVENT_METEOR_FISTS_B, 1500);
|
||||
case EVENT_METEOR_FISTS:
|
||||
DoCast(me, SPELL_METEOR_FISTS);
|
||||
events.ScheduleEvent(EVENT_METEOR_FISTS, 45000);
|
||||
break;
|
||||
case EVENT_METEOR_FISTS_B:
|
||||
DoCast(me, SPELL_METEOR_FISTS_B);
|
||||
events.ScheduleEvent(EVENT_METEOR_FISTS_A, 45000);
|
||||
break;
|
||||
case EVENT_FLAME_CINDER_A:
|
||||
case EVENT_FLAME_CINDER:
|
||||
DoCast(me, SPELL_FLAME_CINDER_A);
|
||||
events.ScheduleEvent(EVENT_FLAME_CINDER_A, 30000);
|
||||
events.ScheduleEvent(EVENT_FLAME_CINDER, 30000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -123,7 +119,7 @@ class boss_koralon : public CreatureScript
|
||||
};
|
||||
|
||||
/*######
|
||||
## Mob Flame Warder
|
||||
## Npc Flame Warder
|
||||
######*/
|
||||
class npc_flame_warder : public CreatureScript
|
||||
{
|
||||
@@ -146,7 +142,7 @@ class npc_flame_warder : public CreatureScript
|
||||
DoZoneInCombat();
|
||||
|
||||
events.ScheduleEvent(EVENT_FW_LAVA_BIRST, 5000);
|
||||
events.ScheduleEvent(EVENT_FW_METEOR_FISTS_A, 10000);
|
||||
events.ScheduleEvent(EVENT_FW_METEOR_FISTS, 10000);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) OVERRIDE
|
||||
@@ -164,13 +160,9 @@ class npc_flame_warder : public CreatureScript
|
||||
DoCastVictim(SPELL_FW_LAVA_BIRST);
|
||||
events.ScheduleEvent(EVENT_FW_LAVA_BIRST, 15000);
|
||||
break;
|
||||
case EVENT_FW_METEOR_FISTS_A:
|
||||
DoCast(me, SPELL_FW_METEOR_FISTS_A);
|
||||
events.ScheduleEvent(EVENT_FW_METEOR_FISTS_B, 1500);
|
||||
break;
|
||||
case EVENT_FW_METEOR_FISTS_B:
|
||||
DoCast(me, SPELL_FW_METEOR_FISTS_B);
|
||||
events.ScheduleEvent(EVENT_FW_METEOR_FISTS_A, 20000);
|
||||
case EVENT_FW_METEOR_FISTS:
|
||||
DoCast(me, SPELL_FW_METEOR_FISTS);
|
||||
events.ScheduleEvent(EVENT_FW_METEOR_FISTS, 20000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -190,8 +182,121 @@ class npc_flame_warder : public CreatureScript
|
||||
}
|
||||
};
|
||||
|
||||
class spell_koralon_meteor_fists : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_koralon_meteor_fists() : SpellScriptLoader("spell_koralon_meteor_fists") { }
|
||||
|
||||
class spell_koralon_meteor_fists_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_koralon_meteor_fists_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_METEOR_FISTS_DAMAGE))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_METEOR_FISTS_DAMAGE, true, NULL, aurEff);
|
||||
}
|
||||
|
||||
void Register() OVERRIDE
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_koralon_meteor_fists_AuraScript::TriggerFists, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const OVERRIDE
|
||||
{
|
||||
return new spell_koralon_meteor_fists_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
class spell_koralon_meteor_fists_damage : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_koralon_meteor_fists_damage() : SpellScriptLoader("spell_koralon_meteor_fists_damage") { }
|
||||
|
||||
class spell_koralon_meteor_fists_damage_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_koralon_meteor_fists_damage_SpellScript);
|
||||
|
||||
bool Load() OVERRIDE
|
||||
{
|
||||
_chainTargets = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
_chainTargets = targets.size();
|
||||
}
|
||||
|
||||
void CalculateSplitDamage()
|
||||
{
|
||||
if (_chainTargets)
|
||||
SetHitDamage(GetHitDamage() / (_chainTargets + 1));
|
||||
}
|
||||
|
||||
void Register() OVERRIDE
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_koralon_meteor_fists_damage_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_TARGET_ENEMY);
|
||||
OnHit += SpellHitFn(spell_koralon_meteor_fists_damage_SpellScript::CalculateSplitDamage);
|
||||
}
|
||||
|
||||
private:
|
||||
uint8 _chainTargets;
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const OVERRIDE
|
||||
{
|
||||
return new spell_koralon_meteor_fists_damage_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
class spell_flame_warder_meteor_fists : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_flame_warder_meteor_fists() : SpellScriptLoader("spell_flame_warder_meteor_fists") { }
|
||||
|
||||
class spell_flame_warder_meteor_fists_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_flame_warder_meteor_fists_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_FW_METEOR_FISTS_DAMAGE))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_FW_METEOR_FISTS_DAMAGE, true, NULL, aurEff);
|
||||
}
|
||||
|
||||
void Register() OVERRIDE
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_flame_warder_meteor_fists_AuraScript::TriggerFists, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const OVERRIDE
|
||||
{
|
||||
return new spell_flame_warder_meteor_fists_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_koralon()
|
||||
{
|
||||
new boss_koralon();
|
||||
new npc_flame_warder();
|
||||
new spell_koralon_meteor_fists();
|
||||
new spell_koralon_meteor_fists_damage();
|
||||
new spell_flame_warder_meteor_fists();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user