*Update of aura system.
--HG-- branch : trunk
This commit is contained in:
@@ -666,9 +666,8 @@ struct TRINITY_DLL_DECL Mob_EventAI : public ScriptedAI
|
||||
// If cast flag CAST_AURA_NOT_PRESENT is active, check if target already has aura on them
|
||||
if(param3 & CAST_AURA_NOT_PRESENT)
|
||||
{
|
||||
for(uint8 i = 0; i < 3; ++i)
|
||||
if(target->HasAura(param1, i))
|
||||
return;
|
||||
if(target->HasAura(param1))
|
||||
return;
|
||||
}
|
||||
|
||||
if (canCast)
|
||||
|
||||
@@ -138,7 +138,7 @@ struct TRINITY_DLL_DECL example_escortAI : public npc_escortAI
|
||||
if (IsBeingEscorted)
|
||||
if (ChatTimer < diff)
|
||||
{
|
||||
if (m_creature->HasAura(3593, 0))
|
||||
if (m_creature->HasAura(3593))
|
||||
{
|
||||
DoScriptText(SAY_RAND_1, m_creature);
|
||||
m_creature->CastSpell(m_creature, 11540, false);
|
||||
|
||||
@@ -223,7 +223,7 @@ bool ItemUse_item_flying_machine(Player *player, Item* _Item, SpellCastTargets c
|
||||
bool ItemUse_item_gor_dreks_ointment(Player *player, Item* _Item, SpellCastTargets const& targets)
|
||||
{
|
||||
if( targets.getUnitTarget() && targets.getUnitTarget()->GetTypeId()==TYPEID_UNIT &&
|
||||
targets.getUnitTarget()->GetEntry() == 20748 && !targets.getUnitTarget()->HasAura(32578,0) )
|
||||
targets.getUnitTarget()->GetEntry() == 20748 && !targets.getUnitTarget()->HasAura(32578) )
|
||||
return false;
|
||||
|
||||
player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW,_Item,NULL);
|
||||
|
||||
@@ -52,7 +52,7 @@ bool GossipHello_npc_innkeeper(Player *player, Creature *_Creature)
|
||||
if (_Creature->isQuestGiver())
|
||||
player->PrepareQuestMenu( _Creature->GetGUID() );
|
||||
|
||||
if (isEventActive()&& !player->GetAura(SPELL_TRICK_OR_TREATED,0))
|
||||
if (isEventActive()&& !player->GetAura(SPELL_TRICK_OR_TREATED, player->GetGUID()))
|
||||
{
|
||||
char* localizedEntry;
|
||||
switch (player->GetSession()->GetSessionDbLocaleIndex())
|
||||
@@ -83,7 +83,7 @@ bool GossipHello_npc_innkeeper(Player *player, Creature *_Creature)
|
||||
|
||||
bool GossipSelect_npc_innkeeper(Player *player, Creature *_Creature, uint32 sender, uint32 action )
|
||||
{
|
||||
if (action == GOSSIP_ACTION_INFO_DEF+HALLOWEEN_EVENTID && isEventActive() && !player->GetAura(SPELL_TRICK_OR_TREATED,0))
|
||||
if (action == GOSSIP_ACTION_INFO_DEF+HALLOWEEN_EVENTID && isEventActive() && !player->GetAura(SPELL_TRICK_OR_TREATED, player->GetGUID()))
|
||||
{
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player, SPELL_TRICK_OR_TREATED, true);
|
||||
|
||||
@@ -199,7 +199,7 @@ bool ReceiveEmote_npc_dancing_flames( Player *player, Creature *flame, uint32 em
|
||||
case TEXTEMOTE_JOKE: flame->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH); break;
|
||||
case TEXTEMOTE_DANCE:
|
||||
{
|
||||
if (!player->HasAura(SPELL_SEDUCTION,0))
|
||||
if (!player->HasAura(SPELL_SEDUCTION))
|
||||
flame->CastSpell(player,SPELL_SEDUCTION,true);
|
||||
}
|
||||
break;
|
||||
@@ -1213,7 +1213,7 @@ CreatureAI* GetAI_npc_tonk_mine(Creature *_Creature)
|
||||
bool ReceiveEmote_npc_winter_reveler( Player *player, Creature *_Creature, uint32 emote )
|
||||
{
|
||||
//TODO: check auralist.
|
||||
if(player->HasAura(26218, 0))
|
||||
if(player->HasAura(26218))
|
||||
return false;
|
||||
|
||||
if( emote == TEXTEMOTE_KISS )
|
||||
|
||||
+3
-3
@@ -80,7 +80,7 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public ScriptedAI
|
||||
|
||||
if (pInstance->GetData(TYPE_OVERSEER) == DONE)
|
||||
{
|
||||
if (m_creature->HasAura(SPELL_BANISH,0))
|
||||
if (m_creature->HasAura(SPELL_BANISH))
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_BANISH);
|
||||
Intro = true;
|
||||
}
|
||||
@@ -89,7 +89,7 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public ScriptedAI
|
||||
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
{
|
||||
if (m_creature->HasAura(SPELL_BANISH,0))
|
||||
if (m_creature->HasAura(SPELL_BANISH))
|
||||
return;
|
||||
|
||||
ScriptedAI::MoveInLineOfSight(who);
|
||||
@@ -105,7 +105,7 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public ScriptedAI
|
||||
{
|
||||
DoScriptText(SAY_INTRO, m_creature);
|
||||
|
||||
if (m_creature->HasAura(SPELL_BANISH,0))
|
||||
if (m_creature->HasAura(SPELL_BANISH))
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_BANISH);
|
||||
|
||||
IsBanished = false;
|
||||
|
||||
+2
-8
@@ -60,12 +60,6 @@ float VoidPortalCoords[5][3] =
|
||||
{-261.4533, -297.3298, 17.1}
|
||||
};
|
||||
|
||||
class EmpoweringShadowsAura: public Aura
|
||||
{
|
||||
public:
|
||||
EmpoweringShadowsAura(SpellEntry *spell, uint32 eff, int32 *bp, Unit *target, Unit *caster) : Aura(spell, eff, bp, target, caster, NULL) {}
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL mob_voidtravelerAI : public ScriptedAI
|
||||
{
|
||||
mob_voidtravelerAI(Creature *c) : ScriptedAI(c)
|
||||
@@ -100,7 +94,7 @@ struct TRINITY_DLL_DECL mob_voidtravelerAI : public ScriptedAI
|
||||
{
|
||||
SpellEntry *spell = (SpellEntry *)GetSpellStore()->LookupEntry(HeroicMode?H_SPELL_EMPOWERING_SHADOWS:SPELL_EMPOWERING_SHADOWS);
|
||||
if( spell )
|
||||
Vorpil->AddAura(new EmpoweringShadowsAura(spell, 0, NULL, Vorpil, m_creature));
|
||||
Vorpil->AddAura(new Aura(spell, 1, NULL, Vorpil, m_creature));
|
||||
Vorpil->SetHealth(Vorpil->GetHealth()+Vorpil->GetMaxHealth()/25);
|
||||
DoCast(m_creature, SPELL_SHADOW_NOVA, true);
|
||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
@@ -277,7 +271,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
||||
Map::PlayerList const &PlayerList = map->GetPlayers();
|
||||
for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
if (Player* i_pl = i->getSource())
|
||||
if (i_pl->isAlive() && !i_pl->HasAura(SPELL_BANISH,0))
|
||||
if (i_pl->isAlive() && !i_pl->HasAura(SPELL_BANISH))
|
||||
i_pl->TeleportTo(m_creature->GetMapId(), VorpilPosition[0],VorpilPosition[1],VorpilPosition[2], 0, TELE_TO_NOT_LEAVE_COMBAT);
|
||||
|
||||
m_creature->Relocate(VorpilPosition[0],VorpilPosition[1],VorpilPosition[2]);
|
||||
|
||||
@@ -73,7 +73,7 @@ struct TRINITY_DLL_DECL boss_murmurAI : public Scripted_NoMovementAI
|
||||
if (target && target->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
//Not do anything without aura, spell can be resisted!
|
||||
if (target->HasAura(SPELL_SONIC_BOOM_CAST,1) && m_creature->IsWithinDistInMap(target, 34.0f))
|
||||
if (target->HasAura(SPELL_SONIC_BOOM_CAST) && m_creature->IsWithinDistInMap(target, 34.0f))
|
||||
{
|
||||
//This will be wrong calculation. Also, comments suggest it must deal damage
|
||||
target->SetHealth(uint32(target->GetMaxHealth() - target->GetMaxHealth() * 0.8));
|
||||
|
||||
@@ -215,7 +215,7 @@ struct TRINITY_DLL_DECL boss_gurtogg_bloodboilAI : public ScriptedAI
|
||||
FelAcidTimer = 25000;
|
||||
}else FelAcidTimer -= diff;
|
||||
|
||||
if(!m_creature->HasAura(SPELL_BERSERK, 0))
|
||||
if(!m_creature->HasAura(SPELL_BERSERK))
|
||||
{
|
||||
if(EnrageTimer < diff)
|
||||
{
|
||||
|
||||
@@ -748,7 +748,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
|
||||
if(m_creature->IsNonMeleeSpellCasted(false))
|
||||
return;
|
||||
|
||||
if(Phase == PHASE_NORMAL || Phase == PHASE_NORMAL_2 || Phase == PHASE_NORMAL_MAIEV && !m_creature->HasAura(SPELL_CAGED, 0))
|
||||
if(Phase == PHASE_NORMAL || Phase == PHASE_NORMAL_2 || Phase == PHASE_NORMAL_MAIEV && !m_creature->HasAura(SPELL_CAGED))
|
||||
{
|
||||
switch(Event)
|
||||
{
|
||||
@@ -933,7 +933,7 @@ struct TRINITY_DLL_DECL flame_of_azzinothAI : public ScriptedAI
|
||||
AttackStart(m_creature->getVictim());
|
||||
}
|
||||
}
|
||||
else if(!m_creature->HasAura(SPELL_AZZINOTH_CHANNEL, 0))
|
||||
else if(!m_creature->HasAura(SPELL_AZZINOTH_CHANNEL))
|
||||
{
|
||||
Glaive->CastSpell(m_creature, SPELL_AZZINOTH_CHANNEL, false);
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_FLAME_ENRAGE);
|
||||
@@ -1625,12 +1625,12 @@ struct TRINITY_DLL_DECL cage_trap_triggerAI : public ScriptedAI
|
||||
{
|
||||
if(who->GetEntry() == ILLIDAN_STORMRAGE) // Check if who is Illidan
|
||||
{
|
||||
if(!IllidanGUID && m_creature->IsWithinDistInMap(who, 3) && (!who->HasAura(SPELL_CAGED, 0)))
|
||||
if(!IllidanGUID && m_creature->IsWithinDistInMap(who, 3) && (!who->HasAura(SPELL_CAGED)))
|
||||
{
|
||||
IllidanGUID = who->GetGUID();
|
||||
who->CastSpell(who, SPELL_CAGED, true);
|
||||
DespawnTimer = 5000;
|
||||
if(who->HasAura(SPELL_ENRAGE, 0))
|
||||
if(who->HasAura(SPELL_ENRAGE))
|
||||
who->RemoveAurasDueToSpell(SPELL_ENRAGE); // Dispel his enrage
|
||||
//if(GameObject* CageTrap = GameObject::GetGameObject(*m_creature, CageTrapGUID))
|
||||
// CageTrap->SetLootState(GO_JUST_DEACTIVATED);
|
||||
@@ -1708,7 +1708,7 @@ struct TRINITY_DLL_DECL shadow_demonAI : public ScriptedAI
|
||||
|
||||
if(m_creature->getVictim()->GetTypeId() != TYPEID_PLAYER) return; // Only cast the below on players.
|
||||
|
||||
if(!m_creature->getVictim()->HasAura(SPELL_PARALYZE, 0))
|
||||
if(!m_creature->getVictim()->HasAura(SPELL_PARALYZE))
|
||||
{
|
||||
TargetGUID = m_creature->getVictim()->GetGUID();
|
||||
m_creature->AddThreat(m_creature->getVictim(), 10000000.0f);
|
||||
@@ -1750,8 +1750,8 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
|
||||
{
|
||||
if( m_creature->isAttackReady() && m_creature->IsWithinMeleeRange(m_creature->getVictim()))
|
||||
{
|
||||
if(!m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0)
|
||||
&& !m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND2, 0))
|
||||
if(!m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND)
|
||||
&& !m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND2))
|
||||
{
|
||||
m_creature->CastSpell(m_creature->getVictim(), SPELL_PARASITIC_SHADOWFIEND2, true, 0, 0, IllidanGUID); //do not stack
|
||||
}
|
||||
@@ -1862,8 +1862,8 @@ void boss_illidan_stormrageAI::JustSummoned(Creature* summon)
|
||||
return;
|
||||
}
|
||||
Unit *target = SelectUnit(SELECT_TARGET_TOPAGGRO, 0, 999, true);
|
||||
if(!target || target->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0)
|
||||
|| target->HasAura(SPELL_PARASITIC_SHADOWFIEND2, 0))
|
||||
if(!target || target->HasAura(SPELL_PARASITIC_SHADOWFIEND)
|
||||
|| target->HasAura(SPELL_PARASITIC_SHADOWFIEND2))
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true);
|
||||
if(target)
|
||||
summon->AI()->AttackStart(target);
|
||||
|
||||
@@ -276,7 +276,7 @@ struct TRINITY_DLL_DECL boss_shahrazAI : public ScriptedAI
|
||||
}else SaberTimer -= diff;
|
||||
|
||||
//Enrage
|
||||
if(!m_creature->HasAura(SPELL_BERSERK, 0))
|
||||
if(!m_creature->HasAura(SPELL_BERSERK))
|
||||
if(EnrageTimer < diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_BERSERK);
|
||||
|
||||
@@ -290,7 +290,7 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI
|
||||
|
||||
debug_log("SD2: Increasing Death Count for Shade of Akama encounter");
|
||||
++DeathCount;
|
||||
m_creature->RemoveSingleAuraFromStack(SPELL_SHADE_SOUL_CHANNEL_2, 0);
|
||||
m_creature->RemoveAuraFromStack(SPELL_SHADE_SOUL_CHANNEL_2);
|
||||
if(guid)
|
||||
{
|
||||
if(Sorcerers.empty())
|
||||
|
||||
@@ -153,7 +153,7 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if(!m_creature->HasAura(SPELL_BERSERK, 0))
|
||||
if(!m_creature->HasAura(SPELL_BERSERK))
|
||||
{
|
||||
if(BerserkTimer < diff)
|
||||
DoCast(m_creature, SPELL_BERSERK);
|
||||
@@ -276,7 +276,7 @@ struct TRINITY_DLL_DECL npc_volcanoAI : public ScriptedAI
|
||||
}
|
||||
else if(Eruption && ((boss_supremusAI*)Supremus->AI())->Phase1)
|
||||
{
|
||||
m_creature->RemoveAura(SPELL_VOLCANIC_ERUPTION, 0);
|
||||
m_creature->RemoveAura(SPELL_VOLCANIC_ERUPTION);
|
||||
}
|
||||
CheckTimer = 1500;
|
||||
}else CheckTimer -= diff;
|
||||
|
||||
@@ -331,7 +331,7 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI
|
||||
Unit* Ghost = NULL;
|
||||
if(GhostGUID)
|
||||
Ghost = Unit::GetUnit((*m_creature), GhostGUID);
|
||||
if(Ghost && Ghost->isAlive() && Ghost->HasAura(SPELL_SHADOW_OF_DEATH, 0))
|
||||
if(Ghost && Ghost->isAlive() && Ghost->HasAura(SPELL_SHADOW_OF_DEATH))
|
||||
{
|
||||
/*float x,y,z;
|
||||
Ghost->GetPosition(x,y,z);
|
||||
@@ -487,7 +487,7 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI
|
||||
RandomYellTimer = 50000 + rand()%51 * 1000;
|
||||
}else RandomYellTimer -= diff;
|
||||
|
||||
if(!m_creature->HasAura(SPELL_BERSERK, 0))
|
||||
if(!m_creature->HasAura(SPELL_BERSERK))
|
||||
{
|
||||
if(EnrageTimer < diff)
|
||||
{
|
||||
|
||||
@@ -95,7 +95,7 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI
|
||||
|
||||
void SpellHit(Unit *caster, const SpellEntry *spell)
|
||||
{
|
||||
if(spell->Id == SPELL_HURL_SPINE && m_creature->HasAura(SPELL_TIDAL_SHIELD, 0))
|
||||
if(spell->Id == SPELL_HURL_SPINE && m_creature->HasAura(SPELL_TIDAL_SHIELD))
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_TIDAL_SHIELD);
|
||||
m_creature->CastSpell(m_creature, SPELL_TIDAL_BURST, true);
|
||||
@@ -116,7 +116,7 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI
|
||||
{
|
||||
if(!SpineTargetGUID) return false;
|
||||
Unit* target = Unit::GetUnit(*m_creature, SpineTargetGUID);
|
||||
if(target && target->HasAura(SPELL_IMPALING_SPINE, 1))
|
||||
if(target && target->HasAura(SPELL_IMPALING_SPINE))
|
||||
target->RemoveAurasDueToSpell(SPELL_IMPALING_SPINE);
|
||||
SpineTargetGUID=0;
|
||||
return true;
|
||||
|
||||
@@ -258,11 +258,11 @@ struct TRINITY_DLL_DECL boss_chromaggusAI : public ScriptedAI
|
||||
DoCast(pUnit, SpellAfflict, true);
|
||||
|
||||
//Chromatic mutation if target is effected by all afflictions
|
||||
if (pUnit->HasAura(SPELL_BROODAF_BLUE,0)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_BLACK,0)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_RED,0)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_BRONZE,0)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_GREEN,0))
|
||||
if (pUnit->HasAura(SPELL_BROODAF_BLUE)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_BLACK)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_RED)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_BRONZE)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_GREEN))
|
||||
{
|
||||
//target->RemoveAllAuras();
|
||||
//DoCast(target,SPELL_CHROMATIC_MUT_1);
|
||||
|
||||
@@ -76,7 +76,7 @@ struct TRINITY_DLL_DECL boss_ebonrocAI : public ScriptedAI
|
||||
ShadowOfEbonroc_Timer = 25000 + rand()%10000;
|
||||
}else ShadowOfEbonroc_Timer -= diff;
|
||||
|
||||
if (m_creature->getVictim()->HasAura(SPELL_SHADOWOFEBONROC,0))
|
||||
if (m_creature->getVictim()->HasAura(SPELL_SHADOWOFEBONROC))
|
||||
{
|
||||
if (Heal_Timer < diff)
|
||||
{
|
||||
|
||||
@@ -104,7 +104,7 @@ struct TRINITY_DLL_DECL boss_razorgoreAI : public ScriptedAI
|
||||
}else Conflagration_Timer -= diff;
|
||||
|
||||
// Aura Check. If the gamer is affected by confliguration we attack a random gamer.
|
||||
if (m_creature->getVictim()->HasAura(SPELL_CONFLAGRATION,0))
|
||||
if (m_creature->getVictim()->HasAura(SPELL_CONFLAGRATION))
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,1);
|
||||
|
||||
@@ -258,7 +258,7 @@ struct TRINITY_DLL_DECL npc_daranelleAI : public ScriptedAI
|
||||
{
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
if (who->HasAura(36904,0) && m_creature->IsWithinDistInMap(who, 10.0f))
|
||||
if (who->HasAura(36904) && m_creature->IsWithinDistInMap(who, 10.0f))
|
||||
{
|
||||
DoScriptText(SAY_SPELL_INFLUENCE, m_creature, who);
|
||||
//TODO: Move the below to updateAI and run if this statement == true
|
||||
|
||||
@@ -81,7 +81,7 @@ CreatureAI* GetAI_mob_webbed_creature(Creature *_Creature)
|
||||
|
||||
bool GossipHello_npc_captured_sunhawk_agent(Player *player, Creature *_Creature)
|
||||
{
|
||||
if (player->HasAura(31609,1) && player->GetQuestStatus(9756) == QUEST_STATUS_INCOMPLETE)
|
||||
if (player->HasAura(31609) && player->GetQuestStatus(9756) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM( 0, "[PH] ", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||
player->SEND_GOSSIP_MENU(9136, _Creature->GetGUID());
|
||||
|
||||
@@ -52,7 +52,7 @@ struct TRINITY_DLL_DECL npc_ragged_johnAI : public ScriptedAI
|
||||
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
{
|
||||
if( who->HasAura(16468,0) )
|
||||
if( who->HasAura(16468) )
|
||||
{
|
||||
if( who->GetTypeId() == TYPEID_PLAYER && m_creature->IsWithinDistInMap(who, 15) && who->isInAccessiblePlaceFor(m_creature) )
|
||||
{
|
||||
|
||||
@@ -79,8 +79,8 @@ struct TRINITY_DLL_DECL npc_medivh_bmAI : public ScriptedAI
|
||||
|
||||
if (pInstance->GetData(TYPE_MEDIVH) == IN_PROGRESS)
|
||||
m_creature->CastSpell(m_creature,SPELL_CHANNEL,true);
|
||||
else if (m_creature->HasAura(SPELL_CHANNEL,0))
|
||||
m_creature->RemoveAura(SPELL_CHANNEL,0);
|
||||
else if (m_creature->HasAura(SPELL_CHANNEL))
|
||||
m_creature->RemoveAura(SPELL_CHANNEL);
|
||||
|
||||
m_creature->CastSpell(m_creature,SPELL_PORTAL_RUNE,true);
|
||||
}
|
||||
@@ -160,9 +160,9 @@ struct TRINITY_DLL_DECL npc_medivh_bmAI : public ScriptedAI
|
||||
{
|
||||
pInstance->SetData(TYPE_MEDIVH,SPECIAL);
|
||||
|
||||
if (m_creature->HasAura(SPELL_CORRUPT_AEONUS,0))
|
||||
if (m_creature->HasAura(SPELL_CORRUPT_AEONUS))
|
||||
SpellCorrupt_Timer = 1000;
|
||||
else if (m_creature->HasAura(SPELL_CORRUPT,0))
|
||||
else if (m_creature->HasAura(SPELL_CORRUPT))
|
||||
SpellCorrupt_Timer = 3000;
|
||||
else
|
||||
SpellCorrupt_Timer = 0;
|
||||
@@ -207,8 +207,8 @@ struct TRINITY_DLL_DECL npc_medivh_bmAI : public ScriptedAI
|
||||
DoScriptText(SAY_WIN, m_creature);
|
||||
Check_Timer = 0;
|
||||
|
||||
if (m_creature->HasAura(SPELL_CHANNEL,0))
|
||||
m_creature->RemoveAura(SPELL_CHANNEL,0);
|
||||
if (m_creature->HasAura(SPELL_CHANNEL))
|
||||
m_creature->RemoveAura(SPELL_CHANNEL);
|
||||
|
||||
//TODO: start the post-event here
|
||||
pInstance->SetData(TYPE_MEDIVH,DONE);
|
||||
|
||||
@@ -411,9 +411,9 @@ struct TRINITY_DLL_DECL boss_archimondeAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_creature->HasAura(chargeSpell, 0))
|
||||
if (m_creature->HasAura(chargeSpell))
|
||||
{
|
||||
m_creature->RemoveSingleAuraFromStack(chargeSpell, 0);
|
||||
m_creature->RemoveAuraFromStack(chargeSpell);
|
||||
DoCast(m_creature->getVictim(), unleashSpell);
|
||||
HasCast = true;
|
||||
SoulChargeCount--;
|
||||
|
||||
+1
-1
@@ -519,7 +519,7 @@ struct TRINITY_DLL_DECL boss_fathomguard_tidalvessAI : public ScriptedAI
|
||||
return;
|
||||
}
|
||||
|
||||
if( !m_creature->HasAura(SPELL_WINDFURY_WEAPON, 0) )
|
||||
if( !m_creature->HasAura(SPELL_WINDFURY_WEAPON) )
|
||||
{
|
||||
DoCast(m_creature, SPELL_WINDFURY_WEAPON);
|
||||
}
|
||||
|
||||
+7
-11
@@ -365,7 +365,7 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI
|
||||
Unit *target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
|
||||
if(target && !target->HasAura(SPELL_STATIC_CHARGE_TRIGGER, 0))
|
||||
if(target && !target->HasAura(SPELL_STATIC_CHARGE_TRIGGER))
|
||||
//cast Static Charge every 2 seconds for 20 seconds
|
||||
DoCast(target, SPELL_STATIC_CHARGE_TRIGGER);
|
||||
|
||||
@@ -571,12 +571,7 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
};
|
||||
class TRINITY_DLL_DECL VashjSurgeAura : public Aura
|
||||
{
|
||||
public:
|
||||
VashjSurgeAura(SpellEntry *spell, uint32 eff, int32 *bp, Unit *target, Unit *caster) : Aura(spell, eff, bp, target, caster, NULL)
|
||||
{}
|
||||
};
|
||||
|
||||
//Enchanted Elemental
|
||||
//If one of them reaches Vashj he will increase her damage done by 5%.
|
||||
struct TRINITY_DLL_DECL mob_enchanted_elementalAI : public ScriptedAI
|
||||
@@ -660,13 +655,14 @@ struct TRINITY_DLL_DECL mob_enchanted_elementalAI : public ScriptedAI
|
||||
SpellEntry *spell = (SpellEntry *)GetSpellStore()->LookupEntry(SPELL_SURGE);
|
||||
if( spell )
|
||||
{
|
||||
for(uint32 i = 0;i<3;i++)
|
||||
uint8 eff_mask=0;
|
||||
for (int i=0; i<3; i++)
|
||||
{
|
||||
if (!spell->Effect[i])
|
||||
continue;
|
||||
|
||||
Vashj->AddAura(new VashjSurgeAura(spell, i, NULL, Vashj, Vashj));
|
||||
eff_mask|=1<<i;
|
||||
}
|
||||
Vashj->AddAura(new Aura(spell, eff_mask, NULL, Vashj, Vashj));
|
||||
}
|
||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
}
|
||||
@@ -918,7 +914,7 @@ struct TRINITY_DLL_DECL mob_shield_generator_channelAI : public ScriptedAI
|
||||
if(Vashj && Vashj->isAlive())
|
||||
{
|
||||
//start visual channel
|
||||
if (!Casted || !Vashj->HasAura(SPELL_MAGIC_BARRIER,0))
|
||||
if (!Casted || !Vashj->HasAura(SPELL_MAGIC_BARRIER))
|
||||
{
|
||||
m_creature->CastSpell(Vashj,SPELL_MAGIC_BARRIER,true);
|
||||
Casted = true;
|
||||
|
||||
+13
-17
@@ -65,12 +65,6 @@ EndScriptData */
|
||||
#define SAY_FREE -1548019
|
||||
#define SAY_DEATH -1548020
|
||||
|
||||
class TRINITY_DLL_DECL InsidiousAura : public Aura {
|
||||
public:
|
||||
InsidiousAura(SpellEntry *spell, uint32 eff, int32 *bp, Unit *target, Unit *caster) : Aura(spell, eff, bp, target, caster, NULL)
|
||||
{}
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL mob_inner_demonAI : public ScriptedAI
|
||||
{
|
||||
mob_inner_demonAI(Creature *c) : ScriptedAI(c)
|
||||
@@ -91,7 +85,7 @@ struct TRINITY_DLL_DECL mob_inner_demonAI : public ScriptedAI
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
Unit* pUnit = Unit::GetUnit((*m_creature),victimGUID);
|
||||
if (pUnit && pUnit->HasAura(SPELL_INSIDIOUS_WHISPER,0))
|
||||
if (pUnit && pUnit->HasAura(SPELL_INSIDIOUS_WHISPER))
|
||||
pUnit->RemoveAurasDueToSpell(SPELL_INSIDIOUS_WHISPER);
|
||||
}
|
||||
|
||||
@@ -128,7 +122,7 @@ struct TRINITY_DLL_DECL mob_inner_demonAI : public ScriptedAI
|
||||
}else Link_Timer -= diff;
|
||||
|
||||
|
||||
if(!m_creature->HasAura(AURA_DEMONIC_ALIGNMENT, 0))
|
||||
if(!m_creature->HasAura(AURA_DEMONIC_ALIGNMENT))
|
||||
DoCast(m_creature, AURA_DEMONIC_ALIGNMENT,true);
|
||||
|
||||
if(ShadowBolt_Timer < diff)
|
||||
@@ -229,7 +223,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
||||
}
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
{
|
||||
if(m_creature->HasAura(AURA_BANISH, 0))
|
||||
if(m_creature->HasAura(AURA_BANISH))
|
||||
return;
|
||||
|
||||
if( !m_creature->getVictim() && who->isTargetableForAttack() && ( m_creature->IsHostileTo( who )) && who->isInAccessiblePlaceFor(m_creature) )
|
||||
@@ -267,7 +261,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
||||
}
|
||||
|
||||
// channelers == 0 remove banish aura
|
||||
if(AliveChannelers == 0 && m_creature->HasAura(AURA_BANISH, 0))
|
||||
if(AliveChannelers == 0 && m_creature->HasAura(AURA_BANISH))
|
||||
{
|
||||
// removing banish aura
|
||||
m_creature->RemoveAurasDueToSpell(AURA_BANISH);
|
||||
@@ -290,7 +284,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
||||
StartEvent();
|
||||
}
|
||||
}
|
||||
else if(AliveChannelers != 0 && !m_creature->HasAura(AURA_BANISH, 0))
|
||||
else if(AliveChannelers != 0 && !m_creature->HasAura(AURA_BANISH))
|
||||
{
|
||||
// channelers != 0 apply banish aura
|
||||
// removing Leotheras banish immune to apply AURA_BANISH
|
||||
@@ -390,7 +384,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
||||
|
||||
void Aggro(Unit *who)
|
||||
{
|
||||
if(m_creature->HasAura(AURA_BANISH, 0))
|
||||
if(m_creature->HasAura(AURA_BANISH))
|
||||
return;
|
||||
|
||||
m_creature->LoadEquipment(m_creature->GetEquipmentId());
|
||||
@@ -399,7 +393,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (m_creature->HasAura(AURA_BANISH, 0) || !UpdateVictim())
|
||||
if (m_creature->HasAura(AURA_BANISH) || !UpdateVictim())
|
||||
{
|
||||
if(BanishTimer<diff)
|
||||
{
|
||||
@@ -408,7 +402,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
||||
}else BanishTimer -= diff;
|
||||
return;
|
||||
}
|
||||
if(m_creature->HasAura(SPELL_WHIRLWIND, 0))
|
||||
if(m_creature->HasAura(SPELL_WHIRLWIND))
|
||||
if(Whirlwind_Timer < diff)
|
||||
{
|
||||
Unit *newTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
@@ -422,7 +416,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
||||
}else Whirlwind_Timer -= diff;
|
||||
|
||||
// reseting after changing forms and after ending whirlwind
|
||||
if(NeedThreatReset && !m_creature->HasAura(SPELL_WHIRLWIND, 0))
|
||||
if(NeedThreatReset && !m_creature->HasAura(SPELL_WHIRLWIND))
|
||||
{
|
||||
// when changing forms seting timers (or when ending whirlwind - to avoid adding new variable i use Whirlwind_Timer to countdown 2s while whirlwinding)
|
||||
if(DemonForm)
|
||||
@@ -446,7 +440,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
||||
if(!DemonForm)
|
||||
{
|
||||
//Whirldind Timer
|
||||
if(!m_creature->HasAura(SPELL_WHIRLWIND, 0))
|
||||
if(!m_creature->HasAura(SPELL_WHIRLWIND))
|
||||
{
|
||||
if(Whirlwind_Timer < diff)
|
||||
{
|
||||
@@ -513,12 +507,14 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
||||
((ScriptedAI *)demon->AI())->AttackStart( (*itr) );
|
||||
((mob_inner_demonAI *)demon->AI())->victimGUID = (*itr)->GetGUID();
|
||||
|
||||
uint8 eff_mask=0;
|
||||
for (int i=0; i<3; i++)
|
||||
{
|
||||
if (!spell->Effect[i])
|
||||
continue;
|
||||
(*itr)->AddAura(new InsidiousAura(spell, i, NULL, (*itr), (*itr)));
|
||||
eff_mask|=1<<i;
|
||||
}
|
||||
(*itr)->AddAura(new Aura(spell, eff_mask, NULL, (*itr), (*itr)));
|
||||
if( InnderDemon_Count > 4 ) InnderDemon_Count = 0;
|
||||
|
||||
//Safe storing of creatures
|
||||
|
||||
+1
-1
@@ -266,7 +266,7 @@ struct TRINITY_DLL_DECL boss_the_lurker_belowAI : public Scripted_NoMovementAI
|
||||
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
{
|
||||
if (i->getSource()->isAlive() && i->getSource()->IsInWater() && !i->getSource()->HasAura(SPELL_SCALDINGWATER, 0))
|
||||
if (i->getSource()->isAlive() && i->getSource()->IsInWater() && !i->getSource()->HasAura(SPELL_SCALDINGWATER))
|
||||
i->getSource()->CastSpell(i->getSource(), SPELL_SCALDINGWATER, true);
|
||||
else if(!i->getSource()->IsInWater())
|
||||
i->getSource()->RemoveAurasDueToSpell(SPELL_SCALDINGWATER);
|
||||
|
||||
+1
-1
@@ -121,7 +121,7 @@ struct TRINITY_DLL_DECL boss_the_black_stalkerAI : public ScriptedAI
|
||||
{
|
||||
if(Unit* target = (Unit*)Unit::GetUnit(*m_creature, LevitatedTarget))
|
||||
{
|
||||
if(!target->HasAura(SPELL_LEVITATE,0))
|
||||
if(!target->HasAura(SPELL_LEVITATE))
|
||||
{
|
||||
LevitatedTarget = 0;
|
||||
return;
|
||||
|
||||
+8
-12
@@ -62,12 +62,6 @@ const float ShadowmoonChannelers[5][4]=
|
||||
{316,-109,-24.6,1.257}
|
||||
};
|
||||
|
||||
class TRINITY_DLL_DECL BurningNovaAura : public Aura
|
||||
{
|
||||
public:
|
||||
BurningNovaAura(SpellEntry *spell, uint32 eff, Unit *target, Unit *caster) : Aura(spell, eff, NULL, target, caster, NULL){}
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI
|
||||
{
|
||||
boss_kelidan_the_breakerAI(Creature *c) : ScriptedAI(c)
|
||||
@@ -234,12 +228,14 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI
|
||||
|
||||
if(SpellEntry *nova = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_BURNING_NOVA))
|
||||
{
|
||||
for(uint32 i = 0; i < 3; ++i)
|
||||
if(nova->Effect[i] == SPELL_EFFECT_APPLY_AURA)
|
||||
{
|
||||
Aura *Aur = new BurningNovaAura(nova, i, m_creature, m_creature);
|
||||
m_creature->AddAura(Aur);
|
||||
}
|
||||
uint8 eff_mask=0;
|
||||
for (int i=0; i<3; i++)
|
||||
{
|
||||
if (!nova->Effect[i])
|
||||
continue;
|
||||
eff_mask|=1<<i;
|
||||
}
|
||||
m_creature->AddAura(new Aura(nova, eff_mask, NULL, m_creature, m_creature));
|
||||
}
|
||||
|
||||
if (HeroicMode)
|
||||
|
||||
+4
-4
@@ -257,7 +257,7 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
|
||||
for(CubeMap::iterator i = Cube.begin(); i != Cube.end(); ++i)
|
||||
{
|
||||
Unit *clicker = Unit::GetUnit(*m_creature, (*i).second);
|
||||
if(!clicker || !clicker->HasAura(SPELL_SHADOW_GRASP, 1))
|
||||
if(!clicker || !clicker->HasAura(SPELL_SHADOW_GRASP))
|
||||
{
|
||||
DebuffClicker(clicker);
|
||||
(*i).second = 0;
|
||||
@@ -265,12 +265,12 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
|
||||
}
|
||||
|
||||
// if 5 clickers from other cubes apply shadow cage
|
||||
if(ClickerNum >= CLICKERS_COUNT && !m_creature->HasAura(SPELL_SHADOW_CAGE, 0))
|
||||
if(ClickerNum >= CLICKERS_COUNT && !m_creature->HasAura(SPELL_SHADOW_CAGE))
|
||||
{
|
||||
DoScriptText(SAY_BANISH, m_creature);
|
||||
m_creature->CastSpell(m_creature, SPELL_SHADOW_CAGE, true);
|
||||
}
|
||||
else if(ClickerNum < CLICKERS_COUNT && m_creature->HasAura(SPELL_SHADOW_CAGE, 0))
|
||||
else if(ClickerNum < CLICKERS_COUNT && m_creature->HasAura(SPELL_SHADOW_CAGE))
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SHADOW_CAGE);
|
||||
|
||||
if(!ClickerNum) NeedCheckCube = false;
|
||||
@@ -510,7 +510,7 @@ bool GOHello_go_Manticron_Cube(Player *player, GameObject* _GO)
|
||||
if(!Magtheridon || !Magtheridon->isAlive()) return true;
|
||||
|
||||
// if exhausted or already channeling return
|
||||
if(player->HasAura(SPELL_MIND_EXHAUSTION, 0) || player->HasAura(SPELL_SHADOW_GRASP, 1))
|
||||
if(player->HasAura(SPELL_MIND_EXHAUSTION) || player->HasAura(SPELL_SHADOW_GRASP))
|
||||
return true;
|
||||
|
||||
player->InterruptNonMeleeSpells(false);
|
||||
|
||||
@@ -164,7 +164,7 @@ struct TRINITY_DLL_DECL npc_greengill_slaveAI : public ScriptedAI
|
||||
if(!caster)
|
||||
return;
|
||||
|
||||
if(caster->GetTypeId() == TYPEID_PLAYER && spell->Id == ORB && !m_creature->HasAura(ENRAGE, 0))
|
||||
if(caster->GetTypeId() == TYPEID_PLAYER && spell->Id == ORB && !m_creature->HasAura(ENRAGE))
|
||||
{
|
||||
PlayerGUID = caster->GetGUID();
|
||||
if(PlayerGUID)
|
||||
|
||||
@@ -150,7 +150,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
{
|
||||
if (i->getSource()->isAlive() && i->getSource()->HasAura(SPELL_GARROTE,0))
|
||||
if (i->getSource()->isAlive() && i->getSource()->HasAura(SPELL_GARROTE))
|
||||
i->getSource()->RemoveAurasDueToSpell(SPELL_GARROTE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -625,7 +625,7 @@ struct TRINITY_DLL_DECL mob_cycloneAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if(!m_creature->HasAura(SPELL_KNOCKBACK, 0))
|
||||
if(!m_creature->HasAura(SPELL_KNOCKBACK))
|
||||
DoCast(m_creature, SPELL_KNOCKBACK, true);
|
||||
|
||||
if(MoveTimer < diff)
|
||||
|
||||
@@ -277,7 +277,7 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI
|
||||
{
|
||||
std::vector<Add*>::iterator itr = Adds.begin() + rand()%Adds.size();
|
||||
if (Unit* pAdd = Unit::GetUnit(*m_creature, (*itr)->guid))
|
||||
if (!pAdd->HasAura(SPELL_SHIELD, 0) && pAdd->isAlive())
|
||||
if (!pAdd->HasAura(SPELL_SHIELD) && pAdd->isAlive())
|
||||
target = pAdd;
|
||||
}
|
||||
DoCast(target, SPELL_SHIELD);
|
||||
|
||||
@@ -134,8 +134,8 @@ struct TRINITY_DLL_DECL mob_lumpAI : public ScriptedAI
|
||||
|
||||
void Aggro(Unit *who)
|
||||
{
|
||||
if (m_creature->HasAura(SPELL_VISUAL_SLEEP,0))
|
||||
m_creature->RemoveAura(SPELL_VISUAL_SLEEP,0);
|
||||
if (m_creature->HasAura(SPELL_VISUAL_SLEEP))
|
||||
m_creature->RemoveAura(SPELL_VISUAL_SLEEP);
|
||||
|
||||
if (!m_creature->IsStandState())
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
|
||||
@@ -109,7 +109,7 @@ struct TRINITY_DLL_DECL boss_anubrekhanAI : public ScriptedAI
|
||||
{
|
||||
//Cast Impale on a random target
|
||||
//Do NOT cast it when we are afflicted by locust swarm
|
||||
if (!m_creature->HasAura(SPELL_LOCUSTSWARM,1))
|
||||
if (!m_creature->HasAura(SPELL_LOCUSTSWARM))
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target,SPELL_IMPALE);
|
||||
|
||||
@@ -652,7 +652,7 @@ Creature* SearchDawnforge(Player *source, uint32 entry, float range)
|
||||
bool AreaTrigger_at_commander_dawnforge(Player *player, AreaTriggerEntry *at)
|
||||
{
|
||||
//if player lost aura or not have at all, we should not try start event.
|
||||
if (!player->HasAura(SPELL_SUNFURY_DISGUISE,0))
|
||||
if (!player->HasAura(SPELL_SUNFURY_DISGUISE))
|
||||
return false;
|
||||
|
||||
if (player->isAlive() && player->GetQuestStatus(QUEST_INFO_GATHERING) == QUEST_STATUS_INCOMPLETE)
|
||||
@@ -858,7 +858,7 @@ struct TRINITY_DLL_DECL mob_phase_hunterAI : public ScriptedAI
|
||||
DoScriptText(EMOTE_WEAK, m_creature);
|
||||
Weak = true;
|
||||
}
|
||||
if(Weak && !Drained && m_creature->HasAura(34219, 0))
|
||||
if(Weak && !Drained && m_creature->HasAura(34219))
|
||||
{
|
||||
Drained = true;
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@ struct TRINITY_DLL_DECL mob_wisp_invisAI : public ScriptedAI
|
||||
if (!who || Creaturetype != 1 || !who->isTargetableForAttack())
|
||||
return;
|
||||
|
||||
if (m_creature->GetDistance2d(who) < 0.1 && !who->HasAura(SPELL_SQUASH_SOUL,0))
|
||||
if (m_creature->GetDistance2d(who) < 0.1 && !who->HasAura(SPELL_SQUASH_SOUL))
|
||||
DoCast(who,SPELL_SQUASH_SOUL);
|
||||
}
|
||||
|
||||
@@ -505,7 +505,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
void SpellHitTarget(Unit* unit, const SpellEntry* spell)
|
||||
{
|
||||
if (spell->Id == SPELL_CONFLAGRATION)
|
||||
if (unit->HasAura(SPELL_CONFLAGRATION,0))
|
||||
if (unit->HasAura(SPELL_CONFLAGRATION))
|
||||
SaySound(SAY_CONFLAGRATION,unit);
|
||||
}
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ struct TRINITY_DLL_DECL boss_doomwalkerAI : public ScriptedAI
|
||||
|
||||
//remove enrage before casting earthquake because enrage + earthquake = 16000dmg over 8sec and all dead
|
||||
if (InEnrage)
|
||||
m_creature->RemoveAura(SPELL_ENRAGE, 0);
|
||||
m_creature->RemoveAura(SPELL_ENRAGE);
|
||||
|
||||
DoCast(m_creature,SPELL_EARTHQUAKE);
|
||||
Quake_Timer = 30000 + rand()%25000;
|
||||
|
||||
@@ -94,7 +94,7 @@ struct TRINITY_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI
|
||||
if(!caster)
|
||||
return;
|
||||
|
||||
if(caster->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_PLACE_CARCASS && !m_creature->HasAura(SPELL_JUST_EATEN, 0) && !PlayerGUID)
|
||||
if(caster->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_PLACE_CARCASS && !m_creature->HasAura(SPELL_JUST_EATEN) && !PlayerGUID)
|
||||
{
|
||||
float PlayerX, PlayerY, PlayerZ;
|
||||
caster->GetClosePoint(PlayerX, PlayerY, PlayerZ, m_creature->GetObjectSize());
|
||||
|
||||
@@ -280,10 +280,10 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance
|
||||
if (!pGroupie)
|
||||
continue;
|
||||
|
||||
if (pGroupie->HasAura(SPELL_BARON_ULTIMATUM,0))
|
||||
if (pGroupie->HasAura(SPELL_BARON_ULTIMATUM))
|
||||
pGroupie->RemoveAurasDueToSpell(SPELL_BARON_ULTIMATUM);
|
||||
}
|
||||
} else if (player->HasAura(SPELL_BARON_ULTIMATUM,0))
|
||||
} else if (player->HasAura(SPELL_BARON_ULTIMATUM))
|
||||
player->RemoveAurasDueToSpell(SPELL_BARON_ULTIMATUM);
|
||||
|
||||
if (Unit *temp = Unit::GetUnit(*player,GetData64(DATA_BARON)))
|
||||
|
||||
@@ -54,12 +54,12 @@ bool GOHello_go_gauntlet_gate(Player *player, GameObject* _GO)
|
||||
continue;
|
||||
|
||||
if (pGroupie->GetQuestStatus(QUEST_DEAD_MAN_PLEA) == QUEST_STATUS_INCOMPLETE &&
|
||||
!pGroupie->HasAura(SPELL_BARON_ULTIMATUM,0) &&
|
||||
!pGroupie->HasAura(SPELL_BARON_ULTIMATUM) &&
|
||||
pGroupie->GetMap() == _GO->GetMap())
|
||||
pGroupie->CastSpell(pGroupie,SPELL_BARON_ULTIMATUM,true);
|
||||
}
|
||||
} else if (player->GetQuestStatus(QUEST_DEAD_MAN_PLEA) == QUEST_STATUS_INCOMPLETE &&
|
||||
!player->HasAura(SPELL_BARON_ULTIMATUM,0) &&
|
||||
!player->HasAura(SPELL_BARON_ULTIMATUM) &&
|
||||
player->GetMap() == _GO->GetMap())
|
||||
player->CastSpell(player,SPELL_BARON_ULTIMATUM,true);
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
|
||||
Unit *Target = m_creature->getVictim();
|
||||
DoCast(Target,SPELL_STOMP);
|
||||
if(Target->HasAura(45151,0)) Target->RemoveAura(45151,0);
|
||||
if(Target->HasAura(45151)) Target->RemoveAura(45151);
|
||||
StompTimer = 30000;
|
||||
}else StompTimer -= diff;
|
||||
|
||||
|
||||
@@ -209,9 +209,9 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
switch(TouchedType)
|
||||
{
|
||||
case SPELL_FLAME_TOUCHED:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME))
|
||||
{
|
||||
if(target->HasAura(SPELL_DARK_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_DARK_TOUCHED))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_DARK_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
@@ -222,9 +222,9 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
||||
}
|
||||
break;
|
||||
case SPELL_DARK_TOUCHED:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME))
|
||||
{
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_FLAME_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
@@ -507,9 +507,9 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
switch(TouchedType)
|
||||
{
|
||||
case SPELL_FLAME_TOUCHED:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME))
|
||||
{
|
||||
if(target->HasAura(SPELL_DARK_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_DARK_TOUCHED))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_DARK_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
@@ -520,9 +520,9 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
||||
}
|
||||
break;
|
||||
case SPELL_DARK_TOUCHED:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME))
|
||||
{
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_FLAME_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
@@ -709,9 +709,9 @@ struct TRINITY_DLL_DECL mob_shadow_imageAI : public ScriptedAI
|
||||
|
||||
case SPELL_SHADOW_FURY:
|
||||
case SPELL_DARK_STRIKE:
|
||||
if(!target->HasAura(SPELL_DARK_FLAME,0))
|
||||
if(!target->HasAura(SPELL_DARK_FLAME))
|
||||
{
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED,0))
|
||||
if(target->HasAura(SPELL_FLAME_TOUCHED))
|
||||
{
|
||||
target->RemoveAurasDueToSpell(SPELL_FLAME_TOUCHED);
|
||||
target->CastSpell(target,SPELL_DARK_FLAME,true);
|
||||
@@ -726,7 +726,7 @@ struct TRINITY_DLL_DECL mob_shadow_imageAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if(!m_creature->HasAura(SPELL_IMAGE_VISUAL,0))
|
||||
if(!m_creature->HasAura(SPELL_IMAGE_VISUAL))
|
||||
DoCast(m_creature,SPELL_IMAGE_VISUAL);
|
||||
|
||||
if(kill_timer < diff)
|
||||
|
||||
@@ -384,7 +384,7 @@ struct TRINITY_DLL_DECL boss_sathrovarrAI : public ScriptedAI
|
||||
|
||||
if(ResetThreat < diff)
|
||||
{
|
||||
if ( ( m_creature->getVictim()->HasAura(AURA_SPECTRAL_EXHAUSTION,0)) && (m_creature->getVictim()->GetTypeId() == TYPEID_PLAYER) )
|
||||
if ( ( m_creature->getVictim()->HasAura(AURA_SPECTRAL_EXHAUSTION)) && (m_creature->getVictim()->GetTypeId() == TYPEID_PLAYER) )
|
||||
{
|
||||
for(std::list<HostilReference*>::iterator itr = m_creature->getThreatManager().getThreatList().begin(); itr != m_creature->getThreatManager().getThreatList().end(); ++itr)
|
||||
{
|
||||
@@ -609,7 +609,7 @@ void boss_kalecgosAI::UpdateAI(const uint32 diff)
|
||||
{
|
||||
//this is a hack. we need to find a victim without aura in core
|
||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
if( ( target != m_creature->getVictim() ) && target->isAlive() && !(target->HasAura(AURA_SPECTRAL_EXHAUSTION, 0)) )
|
||||
if( ( target != m_creature->getVictim() ) && target->isAlive() && !(target->HasAura(AURA_SPECTRAL_EXHAUSTION)) )
|
||||
{
|
||||
DoCast(target, SPELL_SPECTRAL_BLAST);
|
||||
SpectralBlastTimer = 20000+(rand()%5000);
|
||||
@@ -626,7 +626,7 @@ void boss_kalecgosAI::UpdateAI(const uint32 diff)
|
||||
|
||||
bool GOkalocegos_teleporter(Player *player, GameObject* _GO)
|
||||
{
|
||||
if(player->HasAura(AURA_SPECTRAL_EXHAUSTION, 0))
|
||||
if(player->HasAura(AURA_SPECTRAL_EXHAUSTION))
|
||||
player->GetSession()->SendNotification(GO_FAILED);
|
||||
else
|
||||
player->CastSpell(player, SPELL_TELEPORT_SPECTRAL, true);
|
||||
|
||||
@@ -191,7 +191,7 @@ struct TRINITY_DLL_DECL npc_custodian_of_timeAI : public npc_escortAI
|
||||
|
||||
if( who->GetTypeId() == TYPEID_PLAYER )
|
||||
{
|
||||
if( ((Player*)who)->HasAura(34877,1) && ((Player*)who)->GetQuestStatus(10277) == QUEST_STATUS_INCOMPLETE )
|
||||
if( ((Player*)who)->HasAura(34877) && ((Player*)who)->GetQuestStatus(10277) == QUEST_STATUS_INCOMPLETE )
|
||||
{
|
||||
float Radius = 10.0;
|
||||
if( m_creature->IsWithinDistInMap(who, Radius) )
|
||||
|
||||
@@ -347,7 +347,7 @@ struct TRINITY_DLL_DECL npc_warden_mellicharAI : public ScriptedAI
|
||||
if( pInstance )
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
m_creature->RemoveSpellsCausingAura(SPELL_AURA_DUMMY);
|
||||
m_creature->RemoveAurasByType(SPELL_AURA_DUMMY);
|
||||
|
||||
switch( Phase )
|
||||
{
|
||||
|
||||
@@ -965,7 +965,7 @@ struct TRINITY_DLL_DECL eye_tentacleAI : public Scripted_NoMovementAI
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target && !target->HasAura(SPELL_DIGESTIVE_ACID, 0))
|
||||
if (target && !target->HasAura(SPELL_DIGESTIVE_ACID))
|
||||
DoCast(target,SPELL_MIND_FLAY);
|
||||
|
||||
//Mindflay every 10 seconds
|
||||
@@ -1033,7 +1033,7 @@ struct TRINITY_DLL_DECL claw_tentacleAI : public Scripted_NoMovementAI
|
||||
return;
|
||||
}
|
||||
|
||||
if (!target->HasAura(SPELL_DIGESTIVE_ACID, 0))
|
||||
if (!target->HasAura(SPELL_DIGESTIVE_ACID))
|
||||
{
|
||||
m_creature->GetMap()->CreatureRelocation(m_creature, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0);
|
||||
Unit* p = DoSpawnCreature(MOB_SMALL_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
@@ -1129,7 +1129,7 @@ struct TRINITY_DLL_DECL giant_claw_tentacleAI : public Scripted_NoMovementAI
|
||||
return;
|
||||
}
|
||||
|
||||
if (!target->HasAura(SPELL_DIGESTIVE_ACID, 0))
|
||||
if (!target->HasAura(SPELL_DIGESTIVE_ACID))
|
||||
{
|
||||
m_creature->GetMap()->CreatureRelocation(m_creature, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0);
|
||||
Unit* p = DoSpawnCreature(MOB_GIANT_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
@@ -1213,7 +1213,7 @@ struct TRINITY_DLL_DECL giant_eye_tentacleAI : public Scripted_NoMovementAI
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target && !target->HasAura(SPELL_DIGESTIVE_ACID, 0))
|
||||
if (target && !target->HasAura(SPELL_DIGESTIVE_ACID))
|
||||
DoCast(target,SPELL_GREEN_BEAM);
|
||||
|
||||
//Beam every 2 seconds
|
||||
|
||||
@@ -404,13 +404,6 @@ struct TRINITY_DLL_DECL boss_twinemperorsAI : public ScriptedAI
|
||||
}
|
||||
};
|
||||
|
||||
class TRINITY_DLL_DECL BugAura : public Aura
|
||||
{
|
||||
public:
|
||||
BugAura(SpellEntry *spell, uint32 eff, int32 *bp, Unit *target, Unit *caster) : Aura(spell, eff, bp, target, caster, NULL)
|
||||
{}
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL boss_veknilashAI : public boss_twinemperorsAI
|
||||
{
|
||||
bool IAmVeklor() {return false;}
|
||||
@@ -441,12 +434,14 @@ struct TRINITY_DLL_DECL boss_veknilashAI : public boss_twinemperorsAI
|
||||
target->setFaction(14);
|
||||
((CreatureAI*)target->AI())->AttackStart(m_creature->getThreatManager().getHostilTarget());
|
||||
SpellEntry *spell = (SpellEntry *)GetSpellStore()->LookupEntry(SPELL_MUTATE_BUG);
|
||||
uint8 eff_mask=0;
|
||||
for (int i=0; i<3; i++)
|
||||
{
|
||||
if (!spell->Effect[i])
|
||||
continue;
|
||||
target->AddAura(new BugAura(spell, i, NULL, target, target));
|
||||
eff_mask|=1<<i;
|
||||
}
|
||||
target->AddAura(new Aura(spell, eff_mask, NULL, target, target));
|
||||
target->SetHealth(target->GetMaxHealth());
|
||||
}
|
||||
|
||||
@@ -524,12 +519,14 @@ struct TRINITY_DLL_DECL boss_veklorAI : public boss_twinemperorsAI
|
||||
{
|
||||
target->setFaction(14);
|
||||
SpellEntry *spell = (SpellEntry *)GetSpellStore()->LookupEntry(SPELL_EXPLODEBUG);
|
||||
uint8 eff_mask=0;
|
||||
for (int i=0; i<3; i++)
|
||||
{
|
||||
if (!spell->Effect[i])
|
||||
continue;
|
||||
target->AddAura(new BugAura(spell, i, NULL, target, target));
|
||||
eff_mask|=1<<i;
|
||||
}
|
||||
target->AddAura(new Aura(spell, eff_mask, NULL, target, target));
|
||||
target->SetHealth(target->GetMaxHealth());
|
||||
}
|
||||
|
||||
|
||||
@@ -247,13 +247,16 @@ struct TRINITY_DLL_DECL aqsentinelAI : public ScriptedAI
|
||||
void GainSentinelAbility(uint32 id)
|
||||
{
|
||||
const SpellEntry *spell = GetSpellStore()->LookupEntry(id);
|
||||
uint8 eff_mask=0;
|
||||
for (int i=0; i<3; i++)
|
||||
{
|
||||
if (!spell->Effect[i])
|
||||
continue;
|
||||
SentinelAbilityAura *a = new SentinelAbilityAura(this, (SpellEntry *)spell, id, i);
|
||||
m_creature->AddAura(a);
|
||||
eff_mask=1<<i;
|
||||
}
|
||||
SentinelAbilityAura *a = new SentinelAbilityAura(this, (SpellEntry *)spell, id, eff_mask);
|
||||
m_creature->AddAura(a);
|
||||
|
||||
if (id == SPELL_KNOCK_BUFF)
|
||||
{
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
|
||||
@@ -341,6 +344,5 @@ SentinelAbilityAura::SentinelAbilityAura(aqsentinelAI *abilityOwner, SpellEntry
|
||||
{
|
||||
aOwner = abilityOwner;
|
||||
abilityId = ability;
|
||||
currentBasePoints = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ struct TRINITY_DLL_DECL npc_lady_sylvanas_windrunnerAI : public ScriptedAI
|
||||
m_creature->SummonCreature(ENTRY_HIGHBORNE_BUNNY, raX, raY, myZ, 0, TEMPSUMMON_TIMED_DESPAWN, 3000);
|
||||
|
||||
LamentEvent_Timer = 2000;
|
||||
if( !m_creature->HasAura(SPELL_SYLVANAS_CAST, 0))
|
||||
if( !m_creature->HasAura(SPELL_SYLVANAS_CAST))
|
||||
{
|
||||
DoScriptText(SAY_LAMENT_END, m_creature);
|
||||
DoScriptText(EMOTE_LAMENT_END, m_creature);
|
||||
@@ -210,7 +210,7 @@ bool GossipHello_npc_parqual_fintallas(Player *player, Creature *_Creature)
|
||||
if (_Creature->isQuestGiver())
|
||||
player->PrepareQuestMenu( _Creature->GetGUID() );
|
||||
|
||||
if (player->GetQuestStatus(6628) == QUEST_STATUS_INCOMPLETE && !player->HasAura(SPELL_MARK_OF_SHAME,0) )
|
||||
if (player->GetQuestStatus(6628) == QUEST_STATUS_INCOMPLETE && !player->HasAura(SPELL_MARK_OF_SHAME) )
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM( 0, GOSSIP_HPF1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||
player->ADD_GOSSIP_ITEM( 0, GOSSIP_HPF2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||
|
||||
+1
-1
@@ -344,7 +344,7 @@ struct TRINITY_DLL_DECL mob_annhylde_the_callerAI : public ScriptedAI
|
||||
switch (id)
|
||||
{
|
||||
case 1:
|
||||
ingvar->RemoveAura(SPELL_SUMMON_BANSHEE,1);
|
||||
ingvar->RemoveAura(SPELL_SUMMON_BANSHEE);
|
||||
ingvar->CastSpell(ingvar,SPELL_SCOURG_RESURRECTION_DUMMY,true);
|
||||
DoCast(ingvar,SPELL_SCOURG_RESURRECTION_BEAM);
|
||||
Resurect_Timer = 8000;
|
||||
|
||||
@@ -86,7 +86,7 @@ struct TRINITY_DLL_DECL mob_frost_tombAI : public ScriptedAI
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
Unit* temp = Unit::GetUnit((*m_creature),FrostTombGUID);
|
||||
if((temp && temp->isAlive() && !temp->HasAura(SPELL_FROST_TOMB,0)) || !temp )
|
||||
if((temp && temp->isAlive() && !temp->HasAura(SPELL_FROST_TOMB)) || !temp )
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -394,7 +394,7 @@ struct TRINITY_DLL_DECL boss_nalorakkAI : public ScriptedAI
|
||||
|
||||
if(Mangle_Timer < diff)
|
||||
{
|
||||
if(m_creature->getVictim() && !m_creature->getVictim()->HasAura(SPELL_MANGLEEFFECT, 0))
|
||||
if(m_creature->getVictim() && !m_creature->getVictim()->HasAura(SPELL_MANGLEEFFECT))
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MANGLE);
|
||||
Mangle_Timer = 1000;
|
||||
|
||||
Reference in New Issue
Block a user