*Minor clean in scripts.
*Add some checks in scripts. --HG-- branch : trunk
This commit is contained in:
@@ -79,6 +79,9 @@ struct TRINITY_DLL_DECL boss_taerarAI : public ScriptedAI
|
||||
|
||||
void SummonShades(Unit* victim)
|
||||
{
|
||||
if(!victim)
|
||||
return;
|
||||
|
||||
Rand = rand()%15;
|
||||
switch (rand()%2)
|
||||
{
|
||||
|
||||
@@ -69,6 +69,9 @@ struct TRINITY_DLL_DECL boss_ysondreAI : public ScriptedAI
|
||||
|
||||
void SummonDruids(Unit* victim)
|
||||
{
|
||||
if(!victim)
|
||||
return;
|
||||
|
||||
Rand = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
|
||||
@@ -47,8 +47,8 @@ struct TRINITY_DLL_DECL npc_testAI : public npc_escortAI
|
||||
{
|
||||
m_creature->Say("Wild Felboar attack!", LANG_UNIVERSAL, 0);
|
||||
Creature* temp = m_creature->SummonCreature(21878, m_creature->GetPositionX()+5, m_creature->GetPositionY()+7, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
|
||||
|
||||
temp->AI()->AttackStart(m_creature);
|
||||
if(temp)
|
||||
temp->AI()->AttackStart(m_creature);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -69,8 +69,10 @@ struct TRINITY_DLL_DECL npc_chicken_cluckAI : public ScriptedAI
|
||||
if(m_creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER))
|
||||
{
|
||||
if(ResetFlagTimer < diff)
|
||||
{
|
||||
EnterEvadeMode();
|
||||
else ResetFlagTimer -= diff;
|
||||
return;
|
||||
}else ResetFlagTimer -= diff;
|
||||
}
|
||||
|
||||
if(UpdateVictim())
|
||||
|
||||
@@ -46,6 +46,7 @@ struct TRINITY_DLL_DECL npc_ravenholdtAI : public ScriptedAI
|
||||
|
||||
void Aggro(Unit* who) { }
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_npc_ravenholdt(Creature *_Creature)
|
||||
{
|
||||
return new npc_ravenholdtAI (_Creature);
|
||||
|
||||
@@ -261,7 +261,10 @@ struct TRINITY_DLL_DECL mob_ethereal_beaconAI : public ScriptedAI
|
||||
}else Apprentice_Timer -= diff;
|
||||
|
||||
if( CanEvade )
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+2
-1
@@ -154,7 +154,8 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI
|
||||
{
|
||||
//second top aggro target in normal, random target in heroic correct?
|
||||
Unit *target = NULL;
|
||||
if (HeroicMode ? target = SelectUnit(SELECT_TARGET_RANDOM,0) : target = SelectUnit(SELECT_TARGET_TOPAGGRO,1))
|
||||
target = HeroicMode ? SelectUnit(SELECT_TARGET_RANDOM,0) : SelectUnit(SELECT_TARGET_TOPAGGRO,1);
|
||||
if (target)
|
||||
DoCast(target,HeroicMode ? H_SPELL_POLYMORPH : SPELL_POLYMORPH);
|
||||
Sheep_Timer = 15000+rand()%2500;
|
||||
}else Sheep_Timer -= diff;
|
||||
|
||||
+1
-2
@@ -77,7 +77,6 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public ScriptedAI
|
||||
IsBanished = true;
|
||||
}
|
||||
else pInstance->SetData(TYPE_HELLMAW,FAIL);
|
||||
|
||||
if (pInstance->GetData(TYPE_OVERSEER) == DONE)
|
||||
{
|
||||
if (m_creature->HasAura(SPELL_BANISH,0))
|
||||
@@ -148,7 +147,7 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public ScriptedAI
|
||||
{
|
||||
if (EventCheck_Timer < diff)
|
||||
{
|
||||
if (pInstance)
|
||||
if(pInstance)
|
||||
{
|
||||
if (pInstance->GetData(TYPE_OVERSEER) == DONE)
|
||||
DoIntro();
|
||||
|
||||
+8
-3
@@ -156,6 +156,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
||||
banish_Timer = 17000;
|
||||
HelpYell = false;
|
||||
destroyPortals();
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_GRANDMASTERVORPILEVENT, NOT_STARTED);
|
||||
}
|
||||
@@ -168,8 +169,11 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
||||
{
|
||||
Creature *Portal = NULL;
|
||||
Portal = m_creature->SummonCreature(MOB_VOID_PORTAL,VoidPortalCoords[i][0],VoidPortalCoords[i][1],VoidPortalCoords[i][2],0,TEMPSUMMON_CORPSE_DESPAWN,3000000);
|
||||
PortalsGuid[i] = Portal->GetGUID();
|
||||
Portal->CastSpell(Portal,SPELL_VOID_PORTAL_VISUAL,false);
|
||||
if(Portal)
|
||||
{
|
||||
PortalsGuid[i] = Portal->GetGUID();
|
||||
Portal->CastSpell(Portal,SPELL_VOID_PORTAL_VISUAL,false);
|
||||
}
|
||||
}
|
||||
sumportals = true;
|
||||
summonTraveler_Timer = 5000;
|
||||
@@ -221,6 +225,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
destroyPortals();
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_GRANDMASTERVORPILEVENT, DONE);
|
||||
}
|
||||
@@ -234,6 +239,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
||||
case 2: DoScriptText(SAY_AGGRO3, m_creature); break;
|
||||
}
|
||||
summonPortals();
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_GRANDMASTERVORPILEVENT, IN_PROGRESS);
|
||||
}
|
||||
@@ -251,7 +257,6 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
|
||||
@@ -71,6 +71,7 @@ struct TRINITY_DLL_DECL mobs_spitelashesAI : public ScriptedAI
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
m_creature->RemoveCorpse(); //you don't see any corpse on off.
|
||||
EnterEvadeMode(); //spellhit will be set to false
|
||||
return;
|
||||
}
|
||||
// walk 5 seconds before summoning
|
||||
if( spellhit && morphtimer<5000 )
|
||||
|
||||
@@ -162,7 +162,7 @@ struct TRINITY_DLL_DECL npc_draenei_survivorAI : public ScriptedAI
|
||||
EnterEvadeMode();
|
||||
//set creature health
|
||||
m_creature->SetHealth(int(m_creature->GetMaxHealth()*.1));
|
||||
|
||||
return;
|
||||
}else UnSpawnTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -512,11 +512,14 @@ struct TRINITY_DLL_DECL npc_geezleAI : public ScriptedAI
|
||||
Step = 1;
|
||||
EventStarted = true;
|
||||
Creature* Spark = m_creature->SummonCreature(MOB_SPARK, SparkPos[0], SparkPos[1], SparkPos[2], 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1000);
|
||||
SparkGUID = Spark->GetGUID();
|
||||
Spark->setActive(true);
|
||||
Spark->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
if(Spark)
|
||||
{
|
||||
SparkGUID = Spark->GetGUID();
|
||||
Spark->setActive(true);
|
||||
Spark->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
Spark->GetMotionMaster()->MovePoint(0, -5080.70, -11253.61, 0.56);
|
||||
}
|
||||
m_creature->GetMotionMaster()->MovePoint(0, -5092.26, -11252, 0.71);
|
||||
Spark->GetMotionMaster()->MovePoint(0, -5080.70, -11253.61, 0.56);
|
||||
SayTimer = 23000;
|
||||
}
|
||||
|
||||
@@ -533,8 +536,11 @@ struct TRINITY_DLL_DECL npc_geezleAI : public ScriptedAI
|
||||
return 1000;
|
||||
case 2:
|
||||
DoScriptText(GEEZLE_SAY_1, m_creature, Spark);
|
||||
Spark->SetInFront(m_creature);
|
||||
m_creature->SetInFront(Spark);
|
||||
if(Spark)
|
||||
{
|
||||
Spark->SetInFront(m_creature);
|
||||
m_creature->SetInFront(Spark);
|
||||
}
|
||||
return 5000;
|
||||
case 3: DoScriptText(SPARK_SAY_2, Spark); return 7000;
|
||||
case 4: DoScriptText(SPARK_SAY_3, Spark); return 8000;
|
||||
@@ -544,10 +550,12 @@ struct TRINITY_DLL_DECL npc_geezleAI : public ScriptedAI
|
||||
case 8: DoScriptText(GEEZLE_SAY_7, m_creature, Spark); return 2000;
|
||||
case 9:
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
Spark->GetMotionMaster()->MovePoint(0, -5030.95, -11291.99, 7.97);
|
||||
if(Spark)
|
||||
Spark->GetMotionMaster()->MovePoint(0, -5030.95, -11291.99, 7.97);
|
||||
return 20000;
|
||||
case 10:
|
||||
Spark->DealDamage(Spark,Spark->GetHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
if(Spark)
|
||||
Spark->DealDamage(Spark,Spark->GetHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
//DespawnNagaFlag(false);
|
||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||
default: return 99999999;
|
||||
|
||||
@@ -145,6 +145,7 @@ struct TRINITY_DLL_DECL npc_taskmaster_fizzuleAI : public ScriptedAI
|
||||
if( Reset_Timer < diff )
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
} else Reset_Timer -= diff;
|
||||
}
|
||||
|
||||
|
||||
@@ -1067,7 +1067,8 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
|
||||
|
||||
void BeginTalk()
|
||||
{
|
||||
pInstance->SetData(DATA_ILLIDANSTORMRAGEEVENT, IN_PROGRESS);
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_ILLIDANSTORMRAGEEVENT, IN_PROGRESS);
|
||||
|
||||
for(uint8 i = 0; i < 2; i++)
|
||||
if(GETGO(Door, DoorGUID[i]))
|
||||
@@ -1670,7 +1671,8 @@ bool GOHello_cage_trap(Player* plr, GameObject* go)
|
||||
CellLock<GridReadGuard> cell_lock(cell, pair);
|
||||
cell_lock->Visit(cell_lock, cSearcher, *(plr->GetMap()));
|
||||
|
||||
((cage_trap_triggerAI*)trigger->AI())->Active = true;
|
||||
if(trigger)
|
||||
((cage_trap_triggerAI*)trigger->AI())->Active = true;
|
||||
go->SetUInt32Value(GAMEOBJECT_STATE, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -398,7 +398,8 @@ struct TRINITY_DLL_DECL boss_essence_of_sufferingAI : public ScriptedAI
|
||||
targets.sort(TargetDistanceOrder(m_creature)); // Sort players by distance.
|
||||
targets.resize(1); // Only need closest target.
|
||||
Unit* target = targets.front(); // Get the first target.
|
||||
target->CastSpell(m_creature, SPELL_FIXATE_TAUNT, true);
|
||||
if(target)
|
||||
target->CastSpell(m_creature, SPELL_FIXATE_TAUNT, true);
|
||||
DoResetThreat();
|
||||
m_creature->AddThreat(target,1000000);
|
||||
}
|
||||
|
||||
@@ -476,8 +476,10 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
}
|
||||
if(ResetTimer < diff)
|
||||
{
|
||||
EnterEvadeMode();// Reset a little while after killing Akama, evade and respawn Akama
|
||||
else ResetTimer -= diff;
|
||||
return;
|
||||
}else ResetTimer -= diff;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
@@ -195,9 +195,6 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI
|
||||
{
|
||||
if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true))
|
||||
{
|
||||
if(!target)
|
||||
target = m_creature->getVictim();
|
||||
|
||||
DoCast(target, SPELL_VOLCANIC_SUMMON);
|
||||
DoScriptText(EMOTE_GROUND_CRACK, m_creature);
|
||||
SummonVolcanoTimer = 10000;
|
||||
@@ -269,14 +266,15 @@ struct TRINITY_DLL_DECL npc_volcanoAI : public ScriptedAI
|
||||
{
|
||||
uint64 SupremusGUID = pInstance->GetData64(DATA_SUPREMUS);
|
||||
Creature* Supremus = (Unit::GetCreature((*m_creature), SupremusGUID));
|
||||
if(!Eruption && !((boss_supremusAI*)Supremus->AI())->Phase1)
|
||||
if(!Eruption && Supremus && !((boss_supremusAI*)Supremus->AI())->Phase1)
|
||||
{
|
||||
Eruption = true;
|
||||
DoCast(m_creature, SPELL_VOLCANIC_ERUPTION);
|
||||
}
|
||||
else if(Eruption && ((boss_supremusAI*)Supremus->AI())->Phase1)
|
||||
else if((Eruption && Supremus && ((boss_supremusAI*)Supremus->AI())->Phase1) || !Supremus)
|
||||
{
|
||||
m_creature->RemoveAura(SPELL_VOLCANIC_ERUPTION, 0);
|
||||
if(m_creature->HasAura(SPELL_VOLCANIC_ERUPTION, 0))
|
||||
m_creature->RemoveAura(SPELL_VOLCANIC_ERUPTION, 0);
|
||||
}
|
||||
CheckTimer = 1500;
|
||||
}else CheckTimer -= diff;
|
||||
|
||||
@@ -382,8 +382,12 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI
|
||||
AttackStart(pUnit);
|
||||
|
||||
DoZoneInCombat();
|
||||
}else EnterEvadeMode();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
}else AggroTimer -= diff;
|
||||
}
|
||||
|
||||
|
||||
@@ -372,6 +372,7 @@ struct TRINITY_DLL_DECL boss_illidari_councilAI : public ScriptedAI
|
||||
{
|
||||
error_log(ERROR_INST_DATA);
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
DoZoneInCombat();
|
||||
// Load GUIDs on first aggro because the creature guids are only set as the creatures are created in world-
|
||||
|
||||
@@ -713,8 +713,11 @@ bool GossipSelect_npc_thrall_old_hillsbrad(Player *player, Creature *_Creature,
|
||||
{
|
||||
case GOSSIP_ACTION_INFO_DEF+1:
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
pInstance->SetData(TYPE_THRALL_EVENT,IN_PROGRESS);
|
||||
pInstance->SetData(TYPE_THRALL_PART1,IN_PROGRESS);
|
||||
if(pInstance)
|
||||
{
|
||||
pInstance->SetData(TYPE_THRALL_EVENT,IN_PROGRESS);
|
||||
pInstance->SetData(TYPE_THRALL_PART1,IN_PROGRESS);
|
||||
}
|
||||
|
||||
DoScriptText(SAY_TH_START_EVENT_PART1, _Creature);
|
||||
|
||||
@@ -732,7 +735,8 @@ bool GossipSelect_npc_thrall_old_hillsbrad(Player *player, Creature *_Creature,
|
||||
case GOSSIP_ACTION_INFO_DEF+20:
|
||||
player->SEND_GOSSIP_MENU(GOSSIP_ID_SKARLOC3, _Creature->GetGUID());
|
||||
_Creature->SummonCreature(SKARLOC_MOUNT,2038.81,270.26,63.20,5.41,TEMPSUMMON_TIMED_DESPAWN,12000);
|
||||
pInstance->SetData(TYPE_THRALL_PART2,IN_PROGRESS);
|
||||
if(pInstance)
|
||||
pInstance->SetData(TYPE_THRALL_PART2,IN_PROGRESS);
|
||||
|
||||
DoScriptText(SAY_TH_START_EVENT_PART2, _Creature);
|
||||
|
||||
@@ -741,7 +745,8 @@ bool GossipSelect_npc_thrall_old_hillsbrad(Player *player, Creature *_Creature,
|
||||
|
||||
case GOSSIP_ACTION_INFO_DEF+3:
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
pInstance->SetData(TYPE_THRALL_PART3,IN_PROGRESS);
|
||||
if(pInstance)
|
||||
pInstance->SetData(TYPE_THRALL_PART3,IN_PROGRESS);
|
||||
((npc_thrall_old_hillsbradAI*)_Creature->AI())->StartWP();
|
||||
break;
|
||||
}
|
||||
@@ -827,7 +832,8 @@ bool GossipSelect_npc_taretha(Player *player, Creature *_Creature, uint32 sender
|
||||
|
||||
if( pInstance->GetData(TYPE_THRALL_EVENT) == IN_PROGRESS )
|
||||
{
|
||||
pInstance->SetData(TYPE_THRALL_PART4,IN_PROGRESS);
|
||||
if(pInstance)
|
||||
pInstance->SetData(TYPE_THRALL_PART4,IN_PROGRESS);
|
||||
if(pInstance->GetData64(DATA_EPOCH) == 0)
|
||||
_Creature->SummonCreature(ENTRY_EPOCH,2639.13,698.55,65.43,4.59,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,120000);
|
||||
|
||||
|
||||
+9
-10
@@ -131,18 +131,17 @@ struct TRINITY_DLL_DECL boss_fathomlord_karathressAI : public ScriptedAI
|
||||
Creature* pAdvisor = NULL;
|
||||
for( int i=0; i<3; i++ )
|
||||
|
||||
|
||||
if(RAdvisors[i])
|
||||
{
|
||||
pAdvisor = (Unit::GetCreature((*m_creature), RAdvisors[i]));
|
||||
if(pAdvisor && !pAdvisor->isAlive())
|
||||
if(RAdvisors[i])
|
||||
{
|
||||
pAdvisor->Respawn();
|
||||
pAdvisor->AI()->EnterEvadeMode();
|
||||
pAdvisor->GetMotionMaster()->MoveTargetedHome();
|
||||
pAdvisor = (Unit::GetCreature((*m_creature), RAdvisors[i]));
|
||||
if(pAdvisor && !pAdvisor->isAlive())
|
||||
{
|
||||
pAdvisor->Respawn();
|
||||
pAdvisor->AI()->EnterEvadeMode();
|
||||
pAdvisor->GetMotionMaster()->MoveTargetedHome();
|
||||
}
|
||||
}
|
||||
}
|
||||
pInstance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED);
|
||||
pInstance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+5
-3
@@ -76,7 +76,8 @@ struct TRINITY_DLL_DECL boss_the_lurker_belowAI : public Scripted_NoMovementAI
|
||||
{
|
||||
boss_the_lurker_belowAI(Creature *c) : Scripted_NoMovementAI(c), Summons(m_creature)
|
||||
{
|
||||
pInstance = ((ScriptedInstance*)c->GetInstanceData()); SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_SPOUT_ANIM);
|
||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||
SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_SPOUT_ANIM);
|
||||
if(TempSpell)
|
||||
{
|
||||
TempSpell->Effect[0] = 0;//remove all spell effect, only anim is needed
|
||||
@@ -227,7 +228,7 @@ struct TRINITY_DLL_DECL boss_the_lurker_belowAI : public Scripted_NoMovementAI
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
{
|
||||
Player *target = i->getSource();
|
||||
if(target->isAlive() && m_creature->HasInArc((double)diff/20000*(double)M_PI*2,target) && m_creature->GetDistance(target) <= SPOUT_DIST && !target->IsInWater())
|
||||
if(target && target->isAlive() && m_creature->HasInArc((double)diff/20000*(double)M_PI*2,target) && m_creature->GetDistance(target) <= SPOUT_DIST && !target->IsInWater())
|
||||
DoCast(target,SPELL_SPOUT,true);//only knock back palyers in arc, in 100yards, not in water
|
||||
}
|
||||
}
|
||||
@@ -370,7 +371,8 @@ struct TRINITY_DLL_DECL boss_the_lurker_belowAI : public Scripted_NoMovementAI
|
||||
Summoned = m_creature->SummonCreature(MOB_COILFANG_AMBUSHER,AddPos[i][0],AddPos[i][1],AddPos[i][2], 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
else Summoned = m_creature->SummonCreature(MOB_COILFANG_GUARDIAN,AddPos[i][0],AddPos[i][1],AddPos[i][2], 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
|
||||
Summons.Summon(Summoned);
|
||||
if(Summoned)
|
||||
Summons.Summon(Summoned);
|
||||
Spawned = true;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -206,7 +206,8 @@ struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI
|
||||
{
|
||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
Creature* Murloc = m_creature->SummonCreature(MurlocCords[i][0],MurlocCords[i][1],MurlocCords[i][2],MurlocCords[i][3],MurlocCords[i][4], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
|
||||
Murloc->AI()->AttackStart(target);
|
||||
if(target && Murloc)
|
||||
Murloc->AI()->AttackStart(target);
|
||||
}
|
||||
DoScriptText(EMOTE_EARTHQUAKE, m_creature);
|
||||
Earthquake = false;
|
||||
|
||||
@@ -63,6 +63,9 @@ struct TRINITY_DLL_DECL instance_deadmines : public ScriptedInstance
|
||||
|
||||
virtual void Update(uint32 diff)
|
||||
{
|
||||
if(!IronCladDoor || !DefiasCannon || !DoorLever)
|
||||
return;
|
||||
|
||||
switch(State)
|
||||
{
|
||||
case CANNON_GUNPOWDER_USED:
|
||||
@@ -107,6 +110,9 @@ struct TRINITY_DLL_DECL instance_deadmines : public ScriptedInstance
|
||||
|
||||
void MoveCreaturesInside()
|
||||
{
|
||||
if(!DefiasPirate1 || !DefiasPirate2 || !DefiasCompanion)
|
||||
return;
|
||||
|
||||
MoveCreatureInside(DefiasPirate1);
|
||||
MoveCreatureInside(DefiasPirate2);
|
||||
MoveCreatureInside(DefiasCompanion);
|
||||
|
||||
@@ -62,7 +62,10 @@ struct TRINITY_DLL_DECL npc_narm_faulkAI : public ScriptedAI
|
||||
if (!m_creature->GetUInt32Value(UNIT_FIELD_BYTES_1))
|
||||
{
|
||||
if(lifeTimer < diff)
|
||||
m_creature->AI()->EnterEvadeMode();
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
else
|
||||
lifeTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -62,7 +62,10 @@ struct TRINITY_DLL_DECL npc_henze_faulkAI : public ScriptedAI
|
||||
if (!m_creature->GetUInt32Value(UNIT_FIELD_BYTES_1))
|
||||
{
|
||||
if(lifeTimer < diff)
|
||||
m_creature->AI()->EnterEvadeMode();
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
else
|
||||
lifeTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ struct TRINITY_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI
|
||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||
GameObject* Cage = FindGameObject(GO_CAGE, 20, m_creature);
|
||||
if(Cage)
|
||||
Cage->SetGoState(0);
|
||||
Cage->SetGoState(0);
|
||||
DoScriptText(SAY_START, m_creature, player);
|
||||
break;
|
||||
}
|
||||
@@ -182,8 +182,11 @@ struct TRINITY_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI
|
||||
DoScriptText(SAY_PROGRESS3, m_creature, player);
|
||||
Creature* Summ1 = m_creature->SummonCreature(16342, 7627.083984, -7532.538086, 152.128616, 1.082733, TEMPSUMMON_DEAD_DESPAWN, 0);
|
||||
Creature* Summ2 = m_creature->SummonCreature(16343, 7620.432129, -7532.550293, 152.454865, 0.827478, TEMPSUMMON_DEAD_DESPAWN, 0);
|
||||
Summ1->Attack(m_creature, true);
|
||||
Summ2->Attack(player, true);
|
||||
if(Summ1 && Summ2)
|
||||
{
|
||||
Summ1->Attack(m_creature, true);
|
||||
Summ2->Attack(player, true);
|
||||
}
|
||||
m_creature->AI()->AttackStart(Summ1);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -250,8 +250,8 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI
|
||||
//Whirlwind_Timer
|
||||
if (Whirlwind_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_WHIRLWIND);
|
||||
Whirlwind_Timer = 55000;
|
||||
DoCast(m_creature->getVictim(), SPELL_WHIRLWIND);
|
||||
Whirlwind_Timer = 55000;
|
||||
}else Whirlwind_Timer -= diff;
|
||||
|
||||
//MightyBlow_Timer
|
||||
@@ -280,18 +280,19 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
if (target)
|
||||
{
|
||||
AttackStart(target);
|
||||
DoCast(target, SPELL_BERSERKER_C);
|
||||
|
||||
DoCast(target, SPELL_BERSERKER_C);
|
||||
}
|
||||
Charging_Timer = 20000;
|
||||
}else Charging_Timer -= diff;
|
||||
|
||||
//Intimidating Roar
|
||||
if(Roar_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ROAR);
|
||||
Roar_Timer = 40000+(rand()%10000);
|
||||
}else Roar_Timer -= diff;
|
||||
//Intimidating Roar
|
||||
if(Roar_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ROAR);
|
||||
Roar_Timer = 40000+(rand()%10000);
|
||||
}else Roar_Timer -= diff;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -316,7 +317,7 @@ struct TRINITY_DLL_DECL boss_olm_the_summonerAI : public ScriptedAI
|
||||
{
|
||||
DarkDecay_Timer = 10000;
|
||||
Summon_Timer = 15000;
|
||||
DeathCoil_Timer = 20000;
|
||||
DeathCoil_Timer = 20000;
|
||||
|
||||
//reset encounter
|
||||
if (pInstance)
|
||||
@@ -381,19 +382,19 @@ struct TRINITY_DLL_DECL boss_olm_the_summonerAI : public ScriptedAI
|
||||
//Summon_Timer
|
||||
if(Summon_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SUMMON_WFH);
|
||||
Summon_Timer = 30000;
|
||||
DoCast(m_creature, SPELL_SUMMON_WFH);
|
||||
Summon_Timer = 30000;
|
||||
}else Summon_Timer -= diff;
|
||||
|
||||
//DeathCoil Timer /need correct timer
|
||||
if(DeathCoil_Timer < diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
if(target)
|
||||
DoCast(target, SPELL_DEATH_COIL);
|
||||
DeathCoil_Timer = 20000;
|
||||
}else DeathCoil_Timer -= diff;
|
||||
//DeathCoil Timer /need correct timer
|
||||
if(DeathCoil_Timer < diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
if(target)
|
||||
DoCast(target, SPELL_DEATH_COIL);
|
||||
DeathCoil_Timer = 20000;
|
||||
}else DeathCoil_Timer -= diff;
|
||||
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
+5
-2
@@ -308,9 +308,11 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI
|
||||
if(!summoned)
|
||||
{
|
||||
Creature* Vazruden = m_creature->SummonCreature(ENTRY_VAZRUDEN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000);
|
||||
VazrudenGUID = Vazruden->GetGUID();
|
||||
if(Vazruden)
|
||||
VazrudenGUID = Vazruden->GetGUID();
|
||||
Creature* Nazan = m_creature->SummonCreature(ENTRY_NAZAN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000);
|
||||
NazanGUID = Nazan->GetGUID();
|
||||
if(Nazan)
|
||||
NazanGUID = Nazan->GetGUID();
|
||||
summoned = true;
|
||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||
m_creature->addUnitState(UNIT_STAT_ROOT);
|
||||
@@ -391,6 +393,7 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI
|
||||
{
|
||||
UnsummonAdds();
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
}else
|
||||
{
|
||||
|
||||
+1
@@ -276,6 +276,7 @@ struct TRINITY_DLL_DECL boss_warchief_kargath_bladefistAI : public ScriptedAI
|
||||
if ( tempx > 255 || tempx < 205)
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
resetcheck_timer = 5000;
|
||||
}else resetcheck_timer -= diff;
|
||||
|
||||
@@ -130,7 +130,8 @@ struct TRINITY_DLL_DECL boss_curatorAI : public ScriptedAI
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_TOPAGGRO, 1);
|
||||
DoCast(target, SPELL_HATEFUL_BOLT);
|
||||
if(target)
|
||||
DoCast(target, SPELL_HATEFUL_BOLT);
|
||||
|
||||
HatefulBoltTimer = 15000;
|
||||
}else HatefulBoltTimer -= diff;
|
||||
|
||||
@@ -104,9 +104,6 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
|
||||
void StartEvent()
|
||||
{
|
||||
if(!pInstance)
|
||||
return;
|
||||
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_MOROES_EVENT, IN_PROGRESS);
|
||||
}
|
||||
@@ -266,7 +263,10 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
if(pInstance && !pInstance->GetData(DATA_MOROES_EVENT))
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!Enrage && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 30)
|
||||
{
|
||||
|
||||
@@ -117,7 +117,12 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
|
||||
{
|
||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
m_creature->RemoveCorpse();
|
||||
}else pInstance->SetData(DATA_NIGHTBANE_EVENT, NOT_STARTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(pInstance)
|
||||
pInstance->SetData(DATA_NIGHTBANE_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
HandleTerraceDoors(true);
|
||||
|
||||
|
||||
@@ -288,6 +288,7 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
|
||||
{
|
||||
RaidWiped = true;
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
|
||||
WipeTimer = 15000;
|
||||
@@ -507,6 +508,8 @@ struct TRINITY_DLL_DECL npc_image_of_medivhAI : public ScriptedAI
|
||||
Step = 1;
|
||||
EventStarted = true;
|
||||
Creature* Arcanagos = m_creature->SummonCreature(MOB_ARCANAGOS,ArcanagosPos[0],ArcanagosPos[1],ArcanagosPos[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
if(!Arcanagos)
|
||||
return;
|
||||
ArcanagosGUID = Arcanagos->GetGUID();
|
||||
Arcanagos->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING);
|
||||
(*Arcanagos).GetMotionMaster()->MovePoint(0,ArcanagosPos[0],ArcanagosPos[1],ArcanagosPos[2]);
|
||||
|
||||
@@ -145,7 +145,7 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
|
||||
if(ChainLightningTimer < diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_CHAIN_LIGHTNING);
|
||||
DoCast(target, SPELL_CHAIN_LIGHTNING);
|
||||
ChainLightningTimer = 10000;
|
||||
}else ChainLightningTimer -= diff;
|
||||
|
||||
@@ -153,7 +153,8 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
DoCast(target, SPELL_ARCANE_SHOCK);
|
||||
if(target)
|
||||
DoCast(target, SPELL_ARCANE_SHOCK);
|
||||
ArcaneShockTimer = 8000;
|
||||
}else ArcaneShockTimer -= diff;
|
||||
}else
|
||||
@@ -161,7 +162,7 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
|
||||
if(OverloadTimer < diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_OVERLOAD);
|
||||
DoCast(target, SPELL_OVERLOAD);
|
||||
OverloadTimer = 2200;
|
||||
}else OverloadTimer -= diff;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user