From 16913c63c3a2ec707be0d351e44ece5a6e9c7bc0 Mon Sep 17 00:00:00 2001 From: Anubisss Date: Fri, 1 May 2009 01:06:19 +0200 Subject: *Minor clean in scripts. *Add some checks in scripts. --HG-- branch : trunk --- src/bindings/scripts/CMakeLists.txt | 26 +-- src/bindings/scripts/scripts/boss/boss_taerar.cpp | 3 + src/bindings/scripts/scripts/boss/boss_ysondre.cpp | 3 + .../scripts/scripts/creature/mob_event_ai.cpp | 2 +- src/bindings/scripts/scripts/custom/test.cpp | 4 +- src/bindings/scripts/scripts/go/go_scripts.cpp | 4 +- src/bindings/scripts/scripts/npc/npcs_special.cpp | 4 +- .../zone/alterac_mountains/alterac_mountains.cpp | 1 + .../mana_tombs/boss_nexusprince_shaffar.cpp | 3 + .../sethekk_halls/boss_tailonking_ikiss.cpp | 3 +- .../shadow_labyrinth/boss_ambassador_hellmaw.cpp | 3 +- .../shadow_labyrinth/boss_grandmaster_vorpil.cpp | 11 +- .../aunchindoun/shadow_labyrinth/boss_murmur.cpp | 2 +- .../scripts/scripts/zone/azshara/azshara.cpp | 1 + .../scripts/zone/azuremyst_isle/azuremyst_isle.cpp | 26 ++- .../scripts/scripts/zone/barrens/the_barrens.cpp | 1 + .../scripts/zone/black_temple/boss_illidan.cpp | 6 +- .../zone/black_temple/boss_reliquary_of_souls.cpp | 3 +- .../zone/black_temple/boss_shade_of_akama.cpp | 12 +- .../scripts/zone/black_temple/boss_supremus.cpp | 10 +- .../zone/black_temple/boss_teron_gorefiend.cpp | 10 +- .../scripts/zone/black_temple/illidari_council.cpp | 1 + .../zone/caverns_of_time/hyjal/boss_anetheron.cpp | 42 ++-- .../zone/caverns_of_time/hyjal/boss_azgalor.cpp | 26 +-- .../zone/caverns_of_time/hyjal/boss_kazrogal.cpp | 26 +-- .../hyjal/boss_rage_winterchill.cpp | 18 +- .../scripts/zone/caverns_of_time/hyjal/hyjal.cpp | 2 +- .../scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp | 234 ++++++++++----------- .../scripts/zone/caverns_of_time/hyjal/hyjalAI.h | 2 +- .../zone/caverns_of_time/hyjal/hyjal_trash.cpp | 110 +++++----- .../zone/caverns_of_time/hyjal/hyjal_trash.h | 2 +- .../zone/caverns_of_time/hyjal/instance_hyjal.cpp | 34 +-- .../old_hillsbrad/old_hillsbrad.cpp | 22 +- .../serpent_shrine/boss_fathomlord_karathress.cpp | 19 +- .../serpent_shrine/boss_leotheras_the_blind.cpp | 2 +- .../serpent_shrine/boss_lurker_below.cpp | 8 +- .../serpent_shrine/boss_morogrim_tidewalker.cpp | 3 +- .../underbog/boss_the_black_stalker.cpp | 2 +- .../scripts/scripts/zone/deadmines/deadmines.cpp | 6 + .../scripts/scripts/zone/dun_morogh/dun_morogh.cpp | 5 +- .../scripts/zone/elwynn_forest/elwynn_forest.cpp | 5 +- .../scripts/scripts/zone/ghostlands/ghostlands.cpp | 9 +- .../zone/gruuls_lair/boss_high_king_maulgar.cpp | 51 ++--- .../hellfire_ramparts/boss_vazruden_the_herald.cpp | 7 +- .../boss_warchief_kargath_bladefist.cpp | 1 + .../scripts/scripts/zone/karazhan/boss_curator.cpp | 3 +- .../scripts/scripts/zone/karazhan/boss_moroes.cpp | 6 +- .../scripts/zone/karazhan/boss_nightbane.cpp | 7 +- .../scripts/scripts/zone/karazhan/karazhan.cpp | 3 + .../zone/magisters_terrace/boss_vexallus.cpp | 7 +- 50 files changed, 437 insertions(+), 364 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/CMakeLists.txt b/src/bindings/scripts/CMakeLists.txt index dadb2d76985..96e672f376b 100644 --- a/src/bindings/scripts/CMakeLists.txt +++ b/src/bindings/scripts/CMakeLists.txt @@ -67,19 +67,19 @@ SET(trinityscript_LIB_SRCS scripts/zone/black_temple/def_black_temple.h scripts/zone/black_temple/illidari_council.cpp scripts/zone/black_temple/instance_black_temple.cpp - scripts/zone/blackrock_depths/blackrock_depths.cpp - scripts/zone/blackrock_depths/boss_ambassador_flamelash.cpp - scripts/zone/blackrock_depths/boss_anubshiah.cpp - scripts/zone/blackrock_depths/boss_emperor_dagran_thaurissan.cpp - scripts/zone/blackrock_depths/boss_general_angerforge.cpp + scripts/zone/blackrock_depths/blackrock_depths.cpp + scripts/zone/blackrock_depths/boss_ambassador_flamelash.cpp + scripts/zone/blackrock_depths/boss_anubshiah.cpp + scripts/zone/blackrock_depths/boss_emperor_dagran_thaurissan.cpp + scripts/zone/blackrock_depths/boss_general_angerforge.cpp scripts/zone/blackrock_depths/boss_gorosh_the_dervish.cpp - scripts/zone/blackrock_depths/boss_grizzle.cpp - scripts/zone/blackrock_depths/boss_high_interrogator_gerstahn.cpp - scripts/zone/blackrock_depths/boss_magmus.cpp - scripts/zone/blackrock_depths/boss_moira_bronzebeard.cpp - scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp - scripts/zone/blackrock_depths/def_blackrock_depths.h - scripts/zone/blackrock_depths/instance_blackrock_depths.cpp + scripts/zone/blackrock_depths/boss_grizzle.cpp + scripts/zone/blackrock_depths/boss_high_interrogator_gerstahn.cpp + scripts/zone/blackrock_depths/boss_magmus.cpp + scripts/zone/blackrock_depths/boss_moira_bronzebeard.cpp + scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp + scripts/zone/blackrock_depths/def_blackrock_depths.h + scripts/zone/blackrock_depths/instance_blackrock_depths.cpp scripts/zone/blackrock_spire/boss_drakkisath.cpp scripts/zone/blackrock_spire/boss_gyth.cpp scripts/zone/blackrock_spire/boss_halycon.cpp @@ -242,7 +242,7 @@ SET(trinityscript_LIB_SRCS scripts/zone/onyxias_lair/boss_onyxia.cpp scripts/zone/orgrimmar/orgrimmar.cpp scripts/zone/razorfen_downs/boss_amnennar_the_coldbringer.cpp - scripts/zone/razorfen_kraul/razorfen_kraul.cpp + scripts/zone/razorfen_kraul/razorfen_kraul.cpp scripts/zone/ruins_of_ahnqiraj/boss_ayamiss.cpp scripts/zone/ruins_of_ahnqiraj/boss_buru.cpp scripts/zone/ruins_of_ahnqiraj/boss_kurinnaxx.cpp diff --git a/src/bindings/scripts/scripts/boss/boss_taerar.cpp b/src/bindings/scripts/scripts/boss/boss_taerar.cpp index 57184aa4b98..7e7a2bd1363 100644 --- a/src/bindings/scripts/scripts/boss/boss_taerar.cpp +++ b/src/bindings/scripts/scripts/boss/boss_taerar.cpp @@ -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) { diff --git a/src/bindings/scripts/scripts/boss/boss_ysondre.cpp b/src/bindings/scripts/scripts/boss/boss_ysondre.cpp index fca9bc4b15b..8738ce3eb88 100644 --- a/src/bindings/scripts/scripts/boss/boss_ysondre.cpp +++ b/src/bindings/scripts/scripts/boss/boss_ysondre.cpp @@ -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) { diff --git a/src/bindings/scripts/scripts/creature/mob_event_ai.cpp b/src/bindings/scripts/scripts/creature/mob_event_ai.cpp index 5ae059f0a30..d43b863300d 100644 --- a/src/bindings/scripts/scripts/creature/mob_event_ai.cpp +++ b/src/bindings/scripts/scripts/creature/mob_event_ai.cpp @@ -1426,7 +1426,7 @@ CreatureAI* GetAI_Mob_EventAI(Creature *pCreature) } } else - { + { if (EAI_ErrorLevel > 1) error_db_log("TSCR: EventMap for Creature %u is empty but creature is using Mob_EventAI.", pCreature->GetEntry()); } diff --git a/src/bindings/scripts/scripts/custom/test.cpp b/src/bindings/scripts/scripts/custom/test.cpp index 9d847223940..ff3de65f599 100644 --- a/src/bindings/scripts/scripts/custom/test.cpp +++ b/src/bindings/scripts/scripts/custom/test.cpp @@ -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; diff --git a/src/bindings/scripts/scripts/go/go_scripts.cpp b/src/bindings/scripts/scripts/go/go_scripts.cpp index cc64074b6bc..0dc6427cc5e 100644 --- a/src/bindings/scripts/scripts/go/go_scripts.cpp +++ b/src/bindings/scripts/scripts/go/go_scripts.cpp @@ -173,7 +173,7 @@ bool GOHello_go_jump_a_tron(Player *player, GameObject* _GO) /*###### ## go_ethereum_prison ######*/ - + float ethereum_NPC[2][7] = { {20785,20790,20789,20784,20786,20783,20788}, // hostile npc @@ -184,7 +184,7 @@ bool GOHello_go_ethereum_prison(Player *player, GameObject* _GO) { _GO->SetGoState(0); switch(rand()%2){ - case 0: + case 0: _GO->SummonCreature(ethereum_NPC[0][rand()%6],_GO->GetPositionX(),_GO->GetPositionY(),_GO->GetPositionZ()+0.3, 0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,10000); break; case 1: diff --git a/src/bindings/scripts/scripts/npc/npcs_special.cpp b/src/bindings/scripts/scripts/npc/npcs_special.cpp index 252ca107031..c5269eb0973 100644 --- a/src/bindings/scripts/scripts/npc/npcs_special.cpp +++ b/src/bindings/scripts/scripts/npc/npcs_special.cpp @@ -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()) diff --git a/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp b/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp index 72dda8dd835..c095666fb97 100644 --- a/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp +++ b/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp @@ -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); diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp index 325b5aeb8dd..72d9030bca6 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp @@ -261,7 +261,10 @@ struct TRINITY_DLL_DECL mob_ethereal_beaconAI : public ScriptedAI }else Apprentice_Timer -= diff; if( CanEvade ) + { EnterEvadeMode(); + return; + } DoMeleeAttackIfReady(); } diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp index e1d1e98206e..ebf2dd46a44 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp @@ -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; diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp index 1154f71cb64..8aac9412a79 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp @@ -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(); diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp index 32aa9c3e844..2a070f2fc84 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp @@ -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; diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp index aae194de9b8..0ac15f31f40 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp @@ -88,7 +88,7 @@ struct TRINITY_DLL_DECL boss_murmurAI : public Scripted_NoMovementAI } if (SonicBoom_Timer < diff) { - DoScriptText(EMOTE_SONIC_BOOM, m_creature); + DoScriptText(EMOTE_SONIC_BOOM, m_creature); DoCast(m_creature, SPELL_SONIC_BOOM_CAST); SonicBoom_Timer = 30000; SonicBoom = true; diff --git a/src/bindings/scripts/scripts/zone/azshara/azshara.cpp b/src/bindings/scripts/scripts/zone/azshara/azshara.cpp index a94d3e003b7..b92017bf394 100644 --- a/src/bindings/scripts/scripts/zone/azshara/azshara.cpp +++ b/src/bindings/scripts/scripts/zone/azshara/azshara.cpp @@ -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 ) diff --git a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp index d87cf571baf..8af01b16c14 100644 --- a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp +++ b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp @@ -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; diff --git a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp index 37d0ee089f5..23b2676314a 100644 --- a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp +++ b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp @@ -145,6 +145,7 @@ struct TRINITY_DLL_DECL npc_taskmaster_fizzuleAI : public ScriptedAI if( Reset_Timer < diff ) { EnterEvadeMode(); + return; } else Reset_Timer -= diff; } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp index 4b0190c1dd5..bd0cb3e2e23 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp @@ -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 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; } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp index fb4d97780ed..35bff456074 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp @@ -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); } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp index 8dc8ca344dd..5d82affcacf 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp @@ -466,7 +466,7 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI if(HasKilledAkama) { if(!HasKilledAkamaAndReseting)//do not let players kill Shade if Akama is dead and Shade is waiting for ResetTimer!! event would bug - { + { HasKilledAkamaAndReseting = true; m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); @@ -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(); @@ -517,7 +519,7 @@ struct TRINITY_DLL_DECL npc_akamaAI : public ScriptedAI EndingTalkCount = 0; WayPointId = 0; BrokenSummonIndex = 0; - BrokenList.clear(); + BrokenList.clear(); HasYelledOnce = false; } @@ -547,7 +549,7 @@ struct TRINITY_DLL_DECL npc_akamaAI : public ScriptedAI DestructivePoisonTimer = 15000; LightningBoltTimer = 10000; CheckTimer = 2000; - + if(!EventBegun) { m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0); // Database sometimes has very very strange values @@ -617,7 +619,7 @@ struct TRINITY_DLL_DECL npc_akamaAI : public ScriptedAI EndingTalkCount = 0; WayPointId = 0; BrokenSummonIndex = 0; - BrokenList.clear(); + BrokenList.clear(); HasYelledOnce = false; Creature* Shade = Unit::GetCreature((*m_creature), ShadeGUID); if(Shade && Shade->isAlive()) diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp index 994f3d500ad..44fbeaadad1 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp @@ -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; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp index a1800a4a951..492860fd4f4 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp @@ -90,7 +90,7 @@ struct TRINITY_DLL_DECL mob_doom_blossomAI : public ScriptedAI Despawn(); CheckTeronTimer = 5000; - }else CheckTeronTimer -= diff; + }else CheckTeronTimer -= diff; if(ShadowBoltTimer < diff && InCombat) { @@ -382,8 +382,12 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI AttackStart(pUnit); DoZoneInCombat(); - }else EnterEvadeMode(); - + } + else + { + EnterEvadeMode(); + return; + } }else AggroTimer -= diff; } diff --git a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp index bbf1c600f59..266c84bd09e 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp @@ -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- diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp index cae3a17ff02..3b51b941d1f 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp @@ -41,7 +41,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI boss_anetheronAI(Creature *c) : hyjal_trashAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); - go = false; + go = false; pos = 0; SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_SLEEP); if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 1) @@ -71,7 +71,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI } void Aggro(Unit *who) - { + { if(pInstance && IsEvent) pInstance->SetData(DATA_ANETHERONEVENT, IN_PROGRESS); DoPlaySoundToSet(m_creature, SOUND_ONAGGRO); @@ -89,12 +89,12 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_ONSLAY2); DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL); - break; + break; case 2: DoPlaySoundToSet(m_creature, SOUND_ONSLAY3); DoYell(SAY_ONSLAY3, LANG_UNIVERSAL, NULL); - break; - } + break; + } } void WaypointReached(uint32 i) @@ -105,7 +105,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_JAINAPROUDMOORE)); if (target && target->isAlive()) m_creature->AddThreat(target,0.0); - } + } } void JustDied(Unit *victim) @@ -138,7 +138,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5067.23, -1789.95, 1321.17); ((npc_escortAI*)(m_creature->AI()))->Start(false, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); - } + } } } @@ -162,8 +162,8 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_SWARM2); DoYell(SAY_SWARM2, LANG_UNIVERSAL, NULL); - break; - } + break; + } }else SwarmTimer -= diff; if(SleepTimer < diff) @@ -184,13 +184,13 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_SLEEP2); DoYell(SAY_SLEEP2, LANG_UNIVERSAL, NULL); - break; - } - }else SleepTimer -= diff; + break; + } + }else SleepTimer -= diff; if(AuraTimer < diff) { DoCast(m_creature, SPELL_VAMPIRIC_AURA,true); - AuraTimer = 10000+rand()%10000; + AuraTimer = 10000+rand()%10000; }else AuraTimer -= diff; if(InfernoTimer < diff) { @@ -205,8 +205,8 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_INFERNO2); DoYell(SAY_INFERNO2, LANG_UNIVERSAL, NULL); - break; - } + break; + } }else InfernoTimer -= diff; DoMeleeAttackIfReady(); @@ -243,18 +243,18 @@ struct TRINITY_DLL_DECL mob_towering_infernalAI : public ScriptedAI } void Aggro(Unit *who) - { - + { + } void KilledUnit(Unit *victim) { - + } void JustDied(Unit *victim) { - + } void MoveInLineOfSight(Unit *who) @@ -289,7 +289,7 @@ struct TRINITY_DLL_DECL mob_towering_infernalAI : public ScriptedAI if(ImmolationTimer < diff) { - DoCast(m_creature, SPELL_IMMOLATION); + DoCast(m_creature, SPELL_IMMOLATION); ImmolationTimer = 5000; }else ImmolationTimer -= diff; @@ -313,5 +313,5 @@ void AddSC_boss_anetheron() newscript = new Script; newscript->Name="mob_towering_infernal"; newscript->GetAI = &GetAI_mob_towering_infernal; - newscript->RegisterSelf(); + newscript->RegisterSelf(); } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp index 9bdee9887e5..c8d9c403a29 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp @@ -32,7 +32,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI boss_azgalorAI(Creature *c) : hyjal_trashAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); - go = false; + go = false; pos = 0; SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_HOWL_OF_AZGALOR); if(TempSpell) @@ -64,7 +64,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI } void Aggro(Unit *who) - { + { if(pInstance && IsEvent) pInstance->SetData(DATA_AZGALOREVENT, IN_PROGRESS); DoPlaySoundToSet(m_creature, SOUND_ONAGGRO); @@ -82,12 +82,12 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_ONSLAY2); DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL); - break; + break; case 2: DoPlaySoundToSet(m_creature, SOUND_ONSLAY3); DoYell(SAY_ONSLAY3, LANG_UNIVERSAL, NULL); - break; - } + break; + } } void WaypointReached(uint32 i) @@ -98,7 +98,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THRALL)); if (target && target->isAlive()) m_creature->AddThreat(target,0.0); - } + } } void JustDied(Unit *victim) @@ -130,7 +130,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5457.04, -2726.26, 1485.10); ((npc_escortAI*)(m_creature->AI()))->Start(false, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); - } + } } } @@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI if(CleaveTimer < diff) { DoCast(m_creature->getVictim(), SPELL_CLEAVE); - CleaveTimer = 10000+rand()%5000; + CleaveTimer = 10000+rand()%5000; }else CleaveTimer -= diff; if(EnrageTimer < diff && !enraged) @@ -207,17 +207,17 @@ struct TRINITY_DLL_DECL mob_lesser_doomguardAI : public hyjal_trashAI } void Aggro(Unit *who) - { + { } void KilledUnit(Unit *victim) { - + } void WaypointReached(uint32 i) { - + } void MoveInLineOfSight(Unit *who) @@ -231,7 +231,7 @@ struct TRINITY_DLL_DECL mob_lesser_doomguardAI : public hyjal_trashAI void JustDied(Unit *victim) { - + } void UpdateAI(const uint32 diff) @@ -265,7 +265,7 @@ struct TRINITY_DLL_DECL mob_lesser_doomguardAI : public hyjal_trashAI { DoCast(SelectUnit(SELECT_TARGET_RANDOM,0,100,true), SPELL_CRIPPLE); CrippleTimer = 25000+rand()%5000; - }else CrippleTimer -= diff; + }else CrippleTimer -= diff; DoMeleeAttackIfReady(); } diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp index 33c6ec44cf9..2d8eb508ce4 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp @@ -29,7 +29,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI boss_kazrogalAI(Creature *c) : hyjal_trashAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); - go = false; + go = false; pos = 0; SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_MARK); if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 1) @@ -59,7 +59,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI } void Aggro(Unit *who) - { + { if(pInstance && IsEvent) pInstance->SetData(DATA_KAZROGALEVENT, IN_PROGRESS); DoPlaySoundToSet(m_creature, SOUND_ONAGGRO); @@ -77,12 +77,12 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_ONSLAY2); DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL); - break; + break; case 2: DoPlaySoundToSet(m_creature, SOUND_ONSLAY3); DoYell(SAY_ONSLAY3, LANG_UNIVERSAL, NULL); - break; - } + break; + } } void WaypointReached(uint32 i) @@ -93,7 +93,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THRALL)); if (target && target->isAlive()) m_creature->AddThreat(target,0.0); - } + } } void JustDied(Unit *victim) @@ -125,7 +125,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5457.04, -2726.26, 1485.10); ((npc_escortAI*)(m_creature->AI()))->Start(false, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); - } + } } } @@ -136,7 +136,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI if(CleaveTimer < diff) { DoCast(m_creature, SPELL_CLEAVE); - CleaveTimer = 6000+rand()%15000; + CleaveTimer = 6000+rand()%15000; }else CleaveTimer -= diff; if(WarStompTimer < diff) @@ -150,8 +150,8 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI if(MarkTimer < diff) { //cast dummy, useful for bos addons - m_creature->CastCustomSpell(m_creature, SPELL_MARK, NULL, NULL, NULL, false, NULL, NULL, m_creature->GetGUID()); - + m_creature->CastCustomSpell(m_creature, SPELL_MARK, NULL, NULL, NULL, false, NULL, NULL, m_creature->GetGUID()); + std::list t_list = m_creature->getThreatManager().getThreatList(); for(std::list::iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) { @@ -160,11 +160,11 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI { target->CastSpell(target, SPELL_MARK,true);//only cast on mana users } - } + } MarkTimerBase -= 5000; if(MarkTimerBase < 5500) MarkTimerBase = 5500; - MarkTimer = MarkTimerBase; + MarkTimer = MarkTimerBase; switch(rand()%3) { case 0: @@ -174,7 +174,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_MARK2); DoYell(SAY_MARK2, LANG_UNIVERSAL, NULL); - break; + break; } }else MarkTimer -= diff; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp index ddf5e0ad715..809aa9c7690 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp @@ -35,7 +35,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI boss_rage_winterchillAI(Creature *c) : hyjal_trashAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); - go = false; + go = false; pos = 0; } @@ -59,7 +59,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI } void Aggro(Unit *who) - { + { if(pInstance && IsEvent) pInstance->SetData(DATA_RAGEWINTERCHILLEVENT, IN_PROGRESS); DoPlaySoundToSet(m_creature, SOUND_ONAGGRO); @@ -77,8 +77,8 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_ONSLAY2); DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL); - break; - } + break; + } } void WaypointReached(uint32 i) @@ -89,7 +89,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_JAINAPROUDMOORE)); if (target && target->isAlive()) m_creature->AddThreat(target,0.0); - } + } } void JustDied(Unit *victim) @@ -122,7 +122,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5067.23, -1789.95, 1321.17); ((npc_escortAI*)(m_creature->AI()))->Start(false, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); - } + } } } @@ -148,8 +148,8 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_DECAY2); DoYell(SAY_DECAY2, LANG_UNIVERSAL, NULL); - break; - } + break; + } }else DecayTimer -= diff; if(NovaTimer < diff) { @@ -164,7 +164,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI case 1: DoPlaySoundToSet(m_creature, SOUND_NOVA2); DoYell(SAY_NOVA2, LANG_UNIVERSAL, NULL); - break; + break; } }else NovaTimer -= diff; if(IceboltTimer < diff) diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal.cpp index ad8206dce3e..386a7ec8216 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal.cpp @@ -202,7 +202,7 @@ bool GossipHello_npc_tyrande_whisperwind(Player* player, Creature* _Creature) bool GossipSelect_npc_tyrande_whisperwind(Player *player, Creature *_Creature, uint32 sender, uint32 action) { - if (action == GOSSIP_ACTION_INFO_DEF) + if (action == GOSSIP_ACTION_INFO_DEF) { ItemPosCountVec dest; uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_TEAR_OF_GODDESS, 1); diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp index 1c561140bec..6003e927d5c 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp @@ -34,7 +34,7 @@ EndScriptData */ #define SPAWN_NEAR_TOWER 2 // Locations for summoning gargoyls and frost wyrms in special cases float SpawnPointSpecial[3][3]= -{ +{ {5497.08, -2493.23, 1535.72}, //spawn point for the gargoyles near the horde gate {5624.53, -2548.12, 1551.54}, //spawn point for the frost wyrm near the horde gate {5604.41, -2811.98, 1547.77} //spawn point for the gargoyles and wyrms near the horde tower @@ -57,7 +57,7 @@ float JainaDummySpawn[2][4]= // Locations for summoning waves in Horde base -float HordeBase[4][3]= +float HordeBase[4][3]= { {5458.01, -2340.27, 1459.60}, {5466.01, -2334.69, 1460.06}, @@ -66,7 +66,7 @@ float HordeBase[4][3]= }; // Lady Jaina's waypoints when retreathing -float JainaWPs[2][3]= +float JainaWPs[2][3]= { {5078.56, -1789.79, 1320.73},//next to the small stairs {5037.38, -1778.39, 1322.61},//center of alliance base @@ -239,70 +239,70 @@ float AllianceFirePos[92][8]=//spawn points for the fire visuals (GO) in the all float HordeFirePos[65][8]=//spawn points for the fire visuals (GO) in the horde base { - {5524.11, -2612.73, 1483.38, 1.96198, 0, 0, 0.831047, 0.556202}, - {5514.42, -2617.19, 1505.77, 1.82453, 0, 0, 0.790892, 0.611956}, - {5510.21, -2624.77, 1485.34, 1.71065, 0, 0, 0.754783, 0.655974}, - {5570.72, -2619.04, 1487.62, 0.728898, 0, 0, 0.356435, 0.93432}, - {5570.29, -2639.37, 1487.31, 1.49308, 0, 0, 0.679104, 0.734042}, - {5583.56, -2637.2, 1503.78, 1.46559, 0, 0, 0.668951, 0.743307}, - {5571.53, -2626.81, 1510.99, 0.362107, 0, 0, 0.180066, 0.983654}, - {5545.97, -2659.62, 1489.64, 5.07055, 0, 0, 0.569845, -0.821752}, - {5557.44, -2675.91, 1482.58, 1.70118, 0, 0, 0.751671, 0.659539}, - {5594.98, -2742.31, 1495.51, 4.5993, 0, 0, 0.74594, -0.666013}, - {5599.65, -2755.6, 1505.05, 1.66896, 0, 0, 0.740947, 0.671564}, - {5565.95, -2774.75, 1499.48, 6.22425, 0, 0, 0.0294611, -0.999566}, - {5567.1, -2769.7, 1511.17, 5.99257, 0, 0, 0.144799, -0.989461}, - {5572.84, -2774.16, 1527.06, 0.836428, 0, 0, 0.406129, 0.913816}, - {5538.32, -2805.94, 1498.87, 4.30082, 0, 0, 0.836674, -0.547701}, - {5515.66, -2801.74, 1503.53, 5.57316, 0, 0, 0.347602, -0.937642}, - {5516.76, -2827.14, 1501.15, 0.35026, 0, 0, 0.174236, 0.984704}, - {5536.13, -2813.51, 1537.21, 4.51681, 0, 0, 0.772765, -0.634692}, - {5525.05, -2825.16, 1538.53, 0.489275, 0, 0, 0.242205, 0.970225}, - {5534.42, -2815.45, 1562.84, 4.62834, 0, 0, 0.736191, -0.676774}, - {5519.64, -2831.12, 1526.46, 0.611008, 0, 0, 0.300774, 0.953696}, - {5551.04, -2827.55, 1523.5, 3.35206, 0, 0, 0.994468, -0.10504}, - {5469.22, -2802.87, 1503.5, 4.99509, 0, 0, 0.600436, -0.799673}, - {5427.8, -2737.26, 1487.12, 1.78673, 0, 0, 0.779186, 0.626793}, - {5454.1, -2709.1, 1485.92, 3.03552, 0, 0, 0.998594, 0.0530137}, - {5436.3, -2718.2, 1506.02, 2.7567, 0, 0, 0.981539, 0.191261}, - {5412.6, -2740.55, 1510.79, 2.98446, 0, 0, 0.996915, 0.0784832}, - {5406.12, -2752.48, 1521.01, 2.05769, 0, 0, 0.856705, 0.515807}, - {5445.24, -2676.35, 1521.89, 2.91378, 0, 0, 0.99352, 0.113661}, - {5481.4, -2665.08, 1482.23, 4.30001, 0, 0, 0.836895, -0.547363}, - {5443.51, -2675.44, 1487.12, 2.90986, 0, 0, 0.993295, 0.115606}, - {5391.72, -2647.3, 1528.9, 3.76987, 0, 0, 0.951063, -0.308997}, - {5421.09, -2734.12, 1521.01, 2.70567, 0, 0, 0.97634, 0.216242}, - {5405.39, -2710.33, 1533.77, 2.51324, 0, 0, 0.951052, 0.309032}, - {5423.96, -2703.76, 1516.34, 2.79206, 0, 0, 0.984767, 0.173879}, - {5444.75, -2735.23, 1486.37, 2.22657, 0, 0, 0.897155, 0.441715}, - {5570.98, -2747.91, 1495.7, 5.14433, 0, 0, 0.53915, -0.84221}, - {5567.79, -2673.9, 1484.66, 2.72529, 0, 0, 0.978415, 0.20665}, - {5600.71, -2696.8, 1500.42, 0.443704, 0, 0, 0.220036, 0.975492}, - {5600.7, -2693.04, 1515.2, 5.16003, 0, 0, 0.532522, -0.846416}, - {5627.56, -2839.66, 1510.53, 5.41527, 0, 0, 0.420463, -0.907309}, - {5622.02, -2868.71, 1516.22, 2.25482, 0, 0, 0.903303, 0.429002}, - {5586.61, -2878.97, 1510.34, 4.55604, 0, 0, 0.76017, -0.649724}, - {5583.78, -2843.71, 1509.54, 5.35715, 0, 0, 0.44665, -0.894709}, - {5580.95, -2811.3, 1513.3, 3.57587, 0, 0, 0.976518, -0.215434}, - {5542.52, -2869.31, 1523.13, 5.23304, 0, 0, 0.501275, -0.865288}, - {5557.35, -2866.36, 1518.76, 4.48299, 0, 0, 0.783388, -0.621533}, - {5380.91, -2849.36, 1512.81, 3.90962, 0, 0, 0.927168, -0.374646}, - {5395.76, -2881.41, 1521.11, 4.28426, 0, 0, 0.84118, -0.540755}, - {5374.87, -2859.63, 1528.98, 3.30252, 0, 0, 0.996765, -0.0803745}, - {5356.07, -2854.66, 1520.34, 5.83933, 0, 0, 0.220108, -0.975475}, - {5363.01, -2975.72, 1539.02, 4.13738, 0, 0, 0.87859, -0.477576}, - {5336.85, -2980.74, 1561.24, 5.11126, 0, 0, 0.553001, -0.83318}, - {5335.23, -2974.62, 1540.05, 5.04451, 0, 0, 0.580496, -0.814263}, - {5422.37, -2998.87, 1549.98, 4.51831, 0, 0, 0.772288, -0.635272}, - {5405.54, -3014.6, 1562.16, 5.86761, 0, 0, 0.206298, -0.978489}, - {5427.96, -3019.4, 1561.58, 3.53498, 0, 0, 0.980718, -0.19543}, - {5348.12, -2977.84, 1582.47, 3.94025, 0, 0, 0.921323, -0.388799}, - {5331.12, -2993.71, 1576.14, 0.0642734, 0, 0, 0.0321311, 0.999484}, - {5321.63, -2986.55, 1552.2, 5.29503, 0, 0, 0.474219, -0.880407}, - {5292.1, -2914.36, 1529.52, 2.9742, 0, 0, 0.996499, 0.083601}, - {5281.77, -2926.5, 1530.62, 1.67829, 0, 0, 0.744071, 0.6681}, - {5287.19, -2909.94, 1543.49, 3.31192, 0, 0, 0.996376, -0.0850591}, - {5534.15, -2679.35, 1483.61, 0.428685, 0, 0, 0.212705, 0.977116}, + {5524.11, -2612.73, 1483.38, 1.96198, 0, 0, 0.831047, 0.556202}, + {5514.42, -2617.19, 1505.77, 1.82453, 0, 0, 0.790892, 0.611956}, + {5510.21, -2624.77, 1485.34, 1.71065, 0, 0, 0.754783, 0.655974}, + {5570.72, -2619.04, 1487.62, 0.728898, 0, 0, 0.356435, 0.93432}, + {5570.29, -2639.37, 1487.31, 1.49308, 0, 0, 0.679104, 0.734042}, + {5583.56, -2637.2, 1503.78, 1.46559, 0, 0, 0.668951, 0.743307}, + {5571.53, -2626.81, 1510.99, 0.362107, 0, 0, 0.180066, 0.983654}, + {5545.97, -2659.62, 1489.64, 5.07055, 0, 0, 0.569845, -0.821752}, + {5557.44, -2675.91, 1482.58, 1.70118, 0, 0, 0.751671, 0.659539}, + {5594.98, -2742.31, 1495.51, 4.5993, 0, 0, 0.74594, -0.666013}, + {5599.65, -2755.6, 1505.05, 1.66896, 0, 0, 0.740947, 0.671564}, + {5565.95, -2774.75, 1499.48, 6.22425, 0, 0, 0.0294611, -0.999566}, + {5567.1, -2769.7, 1511.17, 5.99257, 0, 0, 0.144799, -0.989461}, + {5572.84, -2774.16, 1527.06, 0.836428, 0, 0, 0.406129, 0.913816}, + {5538.32, -2805.94, 1498.87, 4.30082, 0, 0, 0.836674, -0.547701}, + {5515.66, -2801.74, 1503.53, 5.57316, 0, 0, 0.347602, -0.937642}, + {5516.76, -2827.14, 1501.15, 0.35026, 0, 0, 0.174236, 0.984704}, + {5536.13, -2813.51, 1537.21, 4.51681, 0, 0, 0.772765, -0.634692}, + {5525.05, -2825.16, 1538.53, 0.489275, 0, 0, 0.242205, 0.970225}, + {5534.42, -2815.45, 1562.84, 4.62834, 0, 0, 0.736191, -0.676774}, + {5519.64, -2831.12, 1526.46, 0.611008, 0, 0, 0.300774, 0.953696}, + {5551.04, -2827.55, 1523.5, 3.35206, 0, 0, 0.994468, -0.10504}, + {5469.22, -2802.87, 1503.5, 4.99509, 0, 0, 0.600436, -0.799673}, + {5427.8, -2737.26, 1487.12, 1.78673, 0, 0, 0.779186, 0.626793}, + {5454.1, -2709.1, 1485.92, 3.03552, 0, 0, 0.998594, 0.0530137}, + {5436.3, -2718.2, 1506.02, 2.7567, 0, 0, 0.981539, 0.191261}, + {5412.6, -2740.55, 1510.79, 2.98446, 0, 0, 0.996915, 0.0784832}, + {5406.12, -2752.48, 1521.01, 2.05769, 0, 0, 0.856705, 0.515807}, + {5445.24, -2676.35, 1521.89, 2.91378, 0, 0, 0.99352, 0.113661}, + {5481.4, -2665.08, 1482.23, 4.30001, 0, 0, 0.836895, -0.547363}, + {5443.51, -2675.44, 1487.12, 2.90986, 0, 0, 0.993295, 0.115606}, + {5391.72, -2647.3, 1528.9, 3.76987, 0, 0, 0.951063, -0.308997}, + {5421.09, -2734.12, 1521.01, 2.70567, 0, 0, 0.97634, 0.216242}, + {5405.39, -2710.33, 1533.77, 2.51324, 0, 0, 0.951052, 0.309032}, + {5423.96, -2703.76, 1516.34, 2.79206, 0, 0, 0.984767, 0.173879}, + {5444.75, -2735.23, 1486.37, 2.22657, 0, 0, 0.897155, 0.441715}, + {5570.98, -2747.91, 1495.7, 5.14433, 0, 0, 0.53915, -0.84221}, + {5567.79, -2673.9, 1484.66, 2.72529, 0, 0, 0.978415, 0.20665}, + {5600.71, -2696.8, 1500.42, 0.443704, 0, 0, 0.220036, 0.975492}, + {5600.7, -2693.04, 1515.2, 5.16003, 0, 0, 0.532522, -0.846416}, + {5627.56, -2839.66, 1510.53, 5.41527, 0, 0, 0.420463, -0.907309}, + {5622.02, -2868.71, 1516.22, 2.25482, 0, 0, 0.903303, 0.429002}, + {5586.61, -2878.97, 1510.34, 4.55604, 0, 0, 0.76017, -0.649724}, + {5583.78, -2843.71, 1509.54, 5.35715, 0, 0, 0.44665, -0.894709}, + {5580.95, -2811.3, 1513.3, 3.57587, 0, 0, 0.976518, -0.215434}, + {5542.52, -2869.31, 1523.13, 5.23304, 0, 0, 0.501275, -0.865288}, + {5557.35, -2866.36, 1518.76, 4.48299, 0, 0, 0.783388, -0.621533}, + {5380.91, -2849.36, 1512.81, 3.90962, 0, 0, 0.927168, -0.374646}, + {5395.76, -2881.41, 1521.11, 4.28426, 0, 0, 0.84118, -0.540755}, + {5374.87, -2859.63, 1528.98, 3.30252, 0, 0, 0.996765, -0.0803745}, + {5356.07, -2854.66, 1520.34, 5.83933, 0, 0, 0.220108, -0.975475}, + {5363.01, -2975.72, 1539.02, 4.13738, 0, 0, 0.87859, -0.477576}, + {5336.85, -2980.74, 1561.24, 5.11126, 0, 0, 0.553001, -0.83318}, + {5335.23, -2974.62, 1540.05, 5.04451, 0, 0, 0.580496, -0.814263}, + {5422.37, -2998.87, 1549.98, 4.51831, 0, 0, 0.772288, -0.635272}, + {5405.54, -3014.6, 1562.16, 5.86761, 0, 0, 0.206298, -0.978489}, + {5427.96, -3019.4, 1561.58, 3.53498, 0, 0, 0.980718, -0.19543}, + {5348.12, -2977.84, 1582.47, 3.94025, 0, 0, 0.921323, -0.388799}, + {5331.12, -2993.71, 1576.14, 0.0642734, 0, 0, 0.0321311, 0.999484}, + {5321.63, -2986.55, 1552.2, 5.29503, 0, 0, 0.474219, -0.880407}, + {5292.1, -2914.36, 1529.52, 2.9742, 0, 0, 0.996499, 0.083601}, + {5281.77, -2926.5, 1530.62, 1.67829, 0, 0, 0.744071, 0.6681}, + {5287.19, -2909.94, 1543.49, 3.31192, 0, 0, 0.996376, -0.0850591}, + {5534.15, -2679.35, 1483.61, 0.428685, 0, 0, 0.212705, 0.977116}, {5545.43, -2647.82, 1483.05, 5.38848, 0, 0, 0.432578, -0.901596} }; @@ -333,7 +333,7 @@ void hyjalAI::JustSummoned(Creature *summoned) Summons.Summon(summoned); } -void hyjalAI::SummonedCreatureDespawn(Creature* summoned) +void hyjalAI::SummonedCreatureDespawn(Creature* summoned) { Summons.Despawn(summoned); } @@ -372,14 +372,14 @@ void hyjalAI::Reset() break; } - //Bools + //Bools EventBegun = false; FirstBossDead = false; SecondBossDead = false; Summon = false; bRetreat = false; Debug = false; - + //Flags m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); @@ -387,7 +387,7 @@ void hyjalAI::Reset() //Initialize spells memset(Spell, 0, sizeof(Spell)); - + //Reset Instance Data for trash count if(pInstance) @@ -417,7 +417,7 @@ void hyjalAI::EnterEvadeMode() if(m_creature->isAlive()) m_creature->GetMotionMaster()->MoveTargetedHome(); - + m_creature->SetLootRecipient(NULL); InCombat = false; @@ -456,7 +456,7 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3]) } Creature* pCreature = NULL; switch(entry) - { + { case 17906: //GARGOYLE if(!FirstBossDead && (WaveCount == 1 || WaveCount == 3)) @@ -468,7 +468,7 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3]) pCreature = m_creature->SummonCreature(entry, SpawnPointSpecial[SPAWN_GARG_GATE][0]+irand(-10,10), SpawnPointSpecial[SPAWN_GARG_GATE][1]+irand(-10,10), SpawnPointSpecial[SPAWN_GARG_GATE][2]+irand(-10,10), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000); } break; - case 17907: //FROST_WYRM , + case 17907: //FROST_WYRM , if(FirstBossDead && WaveCount == 1) {//summon at gate pCreature = m_creature->SummonCreature(entry, SpawnPointSpecial[SPAWN_WYRM_GATE][0],SpawnPointSpecial[SPAWN_WYRM_GATE][1],SpawnPointSpecial[SPAWN_WYRM_GATE][2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000); @@ -476,9 +476,9 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3]) pCreature = m_creature->SummonCreature(entry, SpawnPointSpecial[SPAWN_NEAR_TOWER][0], SpawnPointSpecial[SPAWN_NEAR_TOWER][1],SpawnPointSpecial[SPAWN_NEAR_TOWER][2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000); if(pCreature) ((hyjal_trashAI*)pCreature->AI())->useFlyPath = true; - } + } break; - case 17908: //GIANT_INFERNAL + case 17908: //GIANT_INFERNAL InfernalCount++; if(InfernalCount > 7)InfernalCount = 0; pCreature = m_creature->SummonCreature(entry, InfernalPos[InfernalCount][0], InfernalPos[InfernalCount][1], InfernalPos[InfernalCount][2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000); @@ -486,9 +486,9 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3]) default: pCreature = m_creature->SummonCreature(entry, SpawnLoc[0], SpawnLoc[1], SpawnLoc[2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000); break; - + } - + if(pCreature) { // Increment Enemy Count to be used in World States and instance script @@ -498,21 +498,21 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3]) pCreature->setActive(true); switch(entry) { - case NECROMANCER: - case ABOMINATION: - case GHOUL: - case BANSHEE: - case CRYPT_FIEND: - case GARGOYLE: + case NECROMANCER: + case ABOMINATION: + case GHOUL: + case BANSHEE: + case CRYPT_FIEND: + case GARGOYLE: case FROST_WYRM: - case GIANT_INFERNAL: - case FEL_STALKER: - case RAGE_WINTERCHILL: - case ANETHERON: - case KAZROGAL: - case AZGALOR: + case GIANT_INFERNAL: + case FEL_STALKER: + case RAGE_WINTERCHILL: + case ANETHERON: + case KAZROGAL: + case AZGALOR: ((hyjal_trashAI*)pCreature->AI())->IsEvent = true; - break; + break; } if(pInstance) { @@ -648,12 +648,12 @@ void hyjalAI::Talk(uint32 id) void hyjalAI::UpdateWorldState(uint32 id, uint32 state) { Map * map = m_creature->GetMap(); - - if(!map->IsDungeon()) + + if(!map->IsDungeon()) return; Map::PlayerList const& players = map->GetPlayers(); - + if (!players.isEmpty()) { for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) @@ -665,7 +665,7 @@ void hyjalAI::UpdateWorldState(uint32 id, uint32 state) } void hyjalAI::Retreat() -{ +{ if(pInstance) { if(Faction == 0) @@ -681,7 +681,7 @@ void hyjalAI::Retreat() pInstance->SetData(DATA_HORDE_RETREAT, 1); Creature* JainaDummy = m_creature->SummonCreature(JAINA,JainaDummySpawn[0][0],JainaDummySpawn[0][1],JainaDummySpawn[0][2],JainaDummySpawn[0][3],TEMPSUMMON_TIMED_DESPAWN,60000); if(JainaDummy) - { + { JainaDummy->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); ((hyjalAI*)JainaDummy->AI())->IsDummy = true; DummyGuid = JainaDummy->GetGUID(); @@ -692,7 +692,7 @@ void hyjalAI::Retreat() } } SpawnVeins(); - Overrun = true; + Overrun = true; m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);//cant talk after overrun event started } @@ -724,7 +724,7 @@ void hyjalAI::SpawnVeins() void hyjalAI::DeSpawnVeins() { - if(!pInstance)return; + if(!pInstance)return; if(Faction == 1) { Creature* pUnit=Unit::GetCreature((*m_creature),pInstance->GetData64(DATA_JAINAPROUDMOORE)); @@ -768,7 +768,7 @@ void hyjalAI::UpdateAI(const uint32 diff) DoHide = false; switch(m_creature->GetEntry()) { - case JAINA: + case JAINA: if(pInstance->GetData(DATA_ALLIANCE_RETREAT)) { m_creature->SetVisibility(VISIBILITY_OFF); @@ -776,7 +776,7 @@ void hyjalAI::UpdateAI(const uint32 diff) HideNearPos(5037.76, -1889.71); for(uint8 i = 0; i < 92; i++)//summon fires m_creature->SummonGameObject(FLAMEOBJECT,AllianceFirePos[i][0],AllianceFirePos[i][1],AllianceFirePos[i][2],AllianceFirePos[i][3],AllianceFirePos[i][4],AllianceFirePos[i][5],AllianceFirePos[i][6],AllianceFirePos[i][7],0); - + } else m_creature->SetVisibility(VISIBILITY_ON); break; @@ -789,11 +789,11 @@ void hyjalAI::UpdateAI(const uint32 diff) HideNearPos(5542.2, -2629.36); for(uint8 i = 0; i < 65; i++)//summon fires m_creature->SummonGameObject(FLAMEOBJECT,HordeFirePos[i][0],HordeFirePos[i][1],HordeFirePos[i][2],HordeFirePos[i][3],HordeFirePos[i][4],HordeFirePos[i][5],HordeFirePos[i][6],HordeFirePos[i][7],0); - + } - else m_creature->SetVisibility(VISIBILITY_ON); + else m_creature->SetVisibility(VISIBILITY_ON); break; - } + } } if(DoRespawn) { @@ -802,7 +802,7 @@ void hyjalAI::UpdateAI(const uint32 diff) DoRespawn = false; RespawnNearPos(m_creature->GetPositionX(), m_creature->GetPositionY()); if(Faction == 0) - { + { RespawnNearPos(5037.76, -1889.71); }else if (Faction == 1) { @@ -832,11 +832,11 @@ void hyjalAI::UpdateAI(const uint32 diff) break; case THRALL://thrall HideNearPos(5563, -2763.19); - HideNearPos(5542.2, -2629.36); + HideNearPos(5542.2, -2629.36); HideNearPos(5603.75, -2853.12); break; } - m_creature->SetVisibility(VISIBILITY_OFF); + m_creature->SetVisibility(VISIBILITY_OFF); }else RetreatTimer -= diff; } @@ -944,7 +944,7 @@ void hyjalAI::JustDied(Unit* killer) if(pInstance->GetData(DATA_AZGALOREVENT) == IN_PROGRESS) pInstance->SetData(DATA_AZGALOREVENT, NOT_STARTED); pInstance->SetData(DATA_RESET_RAIDDAMAGE, NULL);//reset damage on die - } + } } void hyjalAI::HideNearPos(float x, float y) { @@ -1094,14 +1094,14 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) case 0://alliance for(uint8 i = 0; i < 92; i++)//summon fires m_creature->SummonGameObject(FLAMEOBJECT,AllianceFirePos[i][0],AllianceFirePos[i][1],AllianceFirePos[i][2],AllianceFirePos[i][3],AllianceFirePos[i][4],AllianceFirePos[i][5],AllianceFirePos[i][6],AllianceFirePos[i][7],0); - + for(uint8 i = 0; i < 25; i++)//summon 25 ghouls { uint8 r = rand()%4; Creature* pUnit = m_creature->SummonCreature(GHOUL, AllianceBase[r][0]+irand(-15,15), AllianceBase[r][1]+irand(-15,15), AllianceBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); if(pUnit) { - ((hyjal_trashAI*)pUnit->AI())->faction = Faction; + ((hyjal_trashAI*)pUnit->AI())->faction = Faction; ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; pUnit->setActive(true); @@ -1113,7 +1113,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) Creature* pUnit = m_creature->SummonCreature(ABOMINATION, AllianceBase[r][0]+irand(-15,15), AllianceBase[r][1]+irand(-15,15), AllianceBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); if(pUnit) { - ((hyjal_trashAI*)pUnit->AI())->faction = Faction; + ((hyjal_trashAI*)pUnit->AI())->faction = Faction; ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; pUnit->setActive(true); @@ -1125,28 +1125,28 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) if(pUnit) { pUnit->SetHomePosition(AllianceOverrunGargPos[i][0], AllianceOverrunGargPos[i][1], AllianceOverrunGargPos[i][2], AllianceOverrunGargPos[i][3]); - ((hyjal_trashAI*)pUnit->AI())->faction = Faction; + ((hyjal_trashAI*)pUnit->AI())->faction = Faction; ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; pUnit->setActive(true); } } break; - case 1://horde + case 1://horde for(uint8 i = 0; i < 65; i++)//summon fires m_creature->SummonGameObject(FLAMEOBJECT,HordeFirePos[i][0],HordeFirePos[i][1],HordeFirePos[i][2],HordeFirePos[i][3],HordeFirePos[i][4],HordeFirePos[i][5],HordeFirePos[i][6],HordeFirePos[i][7],0); - + for(uint8 i = 0; i < 26; i++)//summon infernals { Creature* pUnit = m_creature->SummonCreature(GIANT_INFERNAL, InfernalSPWP[i][0], InfernalSPWP[i][1], InfernalSPWP[i][2], InfernalSPWP[i][3], TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); if(pUnit) { pUnit->SetHomePosition(InfernalSPWP[i][0], InfernalSPWP[i][1], InfernalSPWP[i][2], InfernalSPWP[i][3]); - ((hyjal_trashAI*)pUnit->AI())->faction = Faction; + ((hyjal_trashAI*)pUnit->AI())->faction = Faction; ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; pUnit->setActive(true); - } + } } for(uint8 i = 0; i < 25; i++)//summon 25 ghouls { @@ -1154,7 +1154,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) Creature* pUnit = m_creature->SummonCreature(GHOUL, HordeBase[r][0]+irand(-15,15), HordeBase[r][1]+irand(-15,15), HordeBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); if(pUnit) { - ((hyjal_trashAI*)pUnit->AI())->faction = Faction; + ((hyjal_trashAI*)pUnit->AI())->faction = Faction; ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; pUnit->setActive(true); @@ -1166,7 +1166,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) Creature* pUnit = m_creature->SummonCreature(ABOMINATION, HordeBase[r][0]+irand(-15,15), HordeBase[r][1]+irand(-15,15), HordeBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); if(pUnit) { - ((hyjal_trashAI*)pUnit->AI())->faction = Faction; + ((hyjal_trashAI*)pUnit->AI())->faction = Faction; ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; pUnit->setActive(true); diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.h b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.h index 4a2fbd6494e..6f252d8e2bc 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.h +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.h @@ -216,7 +216,7 @@ struct TRINITY_DLL_DECL hyjalAI : public npc_escortAI bool Summon; bool bRetreat; bool Debug; - bool VeinsSpawned[2]; + bool VeinsSpawned[2]; uint8 InfernalCount; SummonList Summons; bool Overrun; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp index 998db444cfb..55096b56e42 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp @@ -30,21 +30,21 @@ float AllianceWPs[8][3]=//basic waypoints from spawn to leader {4989.16, -1716.67, 1335.74},//first WP in the base, after the gate {5026.27, -1736.89, 1323.02}, {5037.77, -1770.56, 1324.36}, - {5067.23, -1789.95, 1321.17} + {5067.23, -1789.95, 1321.17} }; float FrostWyrmWPs[3][3]=//waypoints for the frost wyrms in horde base { {5580.82, -2628.83, 1528.28}, {5550.90, -2667.16, 1505.45}, - {5459.64, -2725.91, 1484.83} + {5459.64, -2725.91, 1484.83} }; float GargoyleWPs[3][3]=//waypoints for the gargoyles in horde base -{ +{ {5533.66, -2634.32, 1495.33}, - {5517.88, -2712.05, 1490.54}, - {5459.64, -2725.91, 1484.83} + {5517.88, -2712.05, 1490.54}, + {5459.64, -2725.91, 1484.83} }; float FlyPathWPs[3][3]=//waypoints for the gargoyls and frost wyrms in horde base in wave 1/3 @@ -115,7 +115,7 @@ float AllianceOverrunWP[55][3]=//waypoints in the alliance base used in the end }; float HordeOverrunWP[21][3]=//waypoints in the horde base used in the end in the cleaning wave -{ +{ {5490.72,-2702.94,1482.14},//0 start {5469.77,-2741.34,1486.95}, {5439.47,-2771.02,1494.59}, @@ -162,7 +162,7 @@ void hyjal_trashAI::DamageTaken(Unit *done_by, uint32 &damage) { damageTaken += damage; if(pInstance) - pInstance->SetData(DATA_RAIDDAMAGE,damage);//store raid's damage + pInstance->SetData(DATA_RAIDDAMAGE,damage);//store raid's damage } } @@ -174,7 +174,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff) { SetupOverrun = true; if(faction == 0) - { + { if(m_creature->GetEntry() == GARGOYLE) { DummyTarget[0] = AllianceOverrunWP[50+OverrunType][0]; //+OverrunType 0 - 4 @@ -195,7 +195,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff) AddWaypoint( 8, AllianceOverrunWP[26][0]+irand(-3,3), AllianceOverrunWP[26][1]+irand(-3,3), AllianceOverrunWP[26][2]); AddWaypoint( 9, AllianceOverrunWP[27][0]+irand(-3,3), AllianceOverrunWP[27][1]+irand(-3,3), AllianceOverrunWP[27][2]); AddWaypoint(10, AllianceOverrunWP[28][0]+irand(-3,3), AllianceOverrunWP[28][1]+irand(-3,3), AllianceOverrunWP[28][2]); - + AddWaypoint(11, AllianceOverrunWP[36][0]+irand(-3,3), AllianceOverrunWP[36][1]+irand(-3,3), AllianceOverrunWP[36][2]); AddWaypoint(12, AllianceOverrunWP[37][0]+irand(-3,3), AllianceOverrunWP[37][1]+irand(-3,3), AllianceOverrunWP[37][2]); AddWaypoint(13, AllianceOverrunWP[38][0]+irand(-3,3), AllianceOverrunWP[38][1]+irand(-3,3), AllianceOverrunWP[38][2]); @@ -311,11 +311,11 @@ void hyjal_trashAI::UpdateAI(const uint32 diff) LastOverronPos = 17; Start(true, true, true); break; - } - } + } + } } if(faction == 1) - { + { if(m_creature->GetEntry() == GHOUL) { for(uint8 i = 0; i < 6; i++) @@ -359,7 +359,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff) AddWaypoint( i+6, HordeOverrunWP[i][0]+irand(-10,10), HordeOverrunWP[i][1]+irand(-10,10), HordeOverrunWP[i][2]); SetDespawnAtEnd(true); LastOverronPos = 21; - Start(true, true, true); + Start(true, true, true); } } } @@ -386,7 +386,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INVIS); - go = false; + go = false; pos = 0; Reset(); } @@ -401,7 +401,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI bool imol; void Reset() - { + { spawnTimer = 2000; FlameBuffetTimer= 2000; imol = false; @@ -463,7 +463,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI }else if (pInstance->GetData(DATA_ALLIANCE_RETREAT) && pInstance->GetData(DATA_HORDE_RETREAT)){ //do overrun } - } + } }else spawnTimer -= diff; } if(!CanMove)return; @@ -514,7 +514,7 @@ struct mob_abominationAI : public hyjal_trashAI mob_abominationAI(Creature* c) : hyjal_trashAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); - go = false; + go = false; pos = 0; Reset(); } @@ -561,7 +561,7 @@ struct mob_abominationAI : public hyjal_trashAI if(IsEvent || IsOverrun) npc_escortAI::UpdateAI(diff); if (IsEvent) - { + { if(!go) { go = true; @@ -580,7 +580,7 @@ struct mob_abominationAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->Start(false, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); } - } + } } } if(!m_creature->HasAura(SPELL_DISEASE_CLOUD,0)) @@ -609,7 +609,7 @@ struct mob_ghoulAI : public hyjal_trashAI mob_ghoulAI(Creature* c) : hyjal_trashAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); - go = false; + go = false; pos = 0; Reset(); } @@ -650,7 +650,7 @@ struct mob_ghoulAI : public hyjal_trashAI m_creature->setDeathState(DEAD); m_creature->RemoveCorpse(); } - + } } @@ -681,14 +681,14 @@ struct mob_ghoulAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->Start(false, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); } - } - } + } + } } if(FrenzyTimerGetInstanceData()); - go = false; + go = false; pos = 0; Reset(); } @@ -800,8 +800,8 @@ struct mob_necromancerAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->Start(true, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); } - } - } + } + } } if (!UpdateVictim()) return; @@ -809,7 +809,7 @@ struct mob_necromancerAI : public hyjal_trashAI { DoCast(m_creature->getVictim(),SPELL_SHADOW_BOLT); ShadowBoltTimer = 20000+rand()%10000; - }else ShadowBoltTimer -= diff; + }else ShadowBoltTimer -= diff; DoMeleeAttackIfReady(); } @@ -830,7 +830,7 @@ struct mob_bansheeAI : public hyjal_trashAI mob_bansheeAI(Creature* c) : hyjal_trashAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); - go = false; + go = false; pos = 0; Reset(); } @@ -892,8 +892,8 @@ struct mob_bansheeAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->Start(false, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); } - } - } + } + } } if (!UpdateVictim()) return; @@ -929,7 +929,7 @@ struct mob_crypt_fiendAI : public hyjal_trashAI mob_crypt_fiendAI(Creature* c) : hyjal_trashAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); - go = false; + go = false; pos = 0; Reset(); } @@ -988,8 +988,8 @@ struct mob_crypt_fiendAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); } - } - } + } + } } if (!UpdateVictim()) return; @@ -1015,7 +1015,7 @@ struct mob_fel_stalkerAI : public hyjal_trashAI mob_fel_stalkerAI(Creature* c) : hyjal_trashAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); - go = false; + go = false; pos = 0; Reset(); } @@ -1074,8 +1074,8 @@ struct mob_fel_stalkerAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); } - } - } + } + } } if (!UpdateVictim()) return; @@ -1114,7 +1114,7 @@ struct mob_frost_wyrmAI : public hyjal_trashAI void Reset() { FrostBreathTimer = 5000; - MoveTimer = 0; + MoveTimer = 0; m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING); } @@ -1129,7 +1129,7 @@ struct mob_frost_wyrmAI : public hyjal_trashAI m_creature->AddThreat(target,0.0); DoCast(target,SPELL_FROST_BREATH,true); } - } + } } void JustDied(Unit *victim) @@ -1154,8 +1154,8 @@ struct mob_frost_wyrmAI : public hyjal_trashAI ((hyjal_trashAI*)m_creature->AI())->SetCanMelee(false); npc_escortAI::UpdateAI(diff); } - if (IsEvent) - { + if (IsEvent) + { if(!go) { go = true; @@ -1173,8 +1173,8 @@ struct mob_frost_wyrmAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->Start(false, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); } - } - } + } + } } if (!UpdateVictim()) return; @@ -1185,7 +1185,7 @@ struct mob_frost_wyrmAI : public hyjal_trashAI MoveTimer = 2000; }else MoveTimer-=diff; } - + if(FrostBreathTimerGetDistance(m_creature->getVictim()) < 25) @@ -1194,7 +1194,7 @@ struct mob_frost_wyrmAI : public hyjal_trashAI m_creature->StopMoving(); m_creature->GetMotionMaster()->Clear(); FrostBreathTimer = 4000; - } + } }else FrostBreathTimer -= diff; } }; @@ -1223,15 +1223,15 @@ struct mob_gargoyleAI : public hyjal_trashAI uint32 pos; uint32 MoveTimer; float Zpos; - bool forcemove; + bool forcemove; void Reset() { forcemove = true; Zpos = 10.0; StrikeTimer = 2000+rand()%5000; - MoveTimer = 0; - m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING); + MoveTimer = 0; + m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING); } void WaypointReached(uint32 i) @@ -1245,7 +1245,7 @@ struct mob_gargoyleAI : public hyjal_trashAI m_creature->AddThreat(target,0.0); DoCast(target,SPELL_GARGOYLE_STRIKE,true); } - } + } } void JustDied(Unit *victim) @@ -1255,7 +1255,7 @@ struct mob_gargoyleAI : public hyjal_trashAI z = m_creature->GetMap()->GetVmapHeight(x, y, z, true); m_creature->GetMotionMaster()->MovePoint(0,x,y,z); m_creature->Relocate(x,y,z,0); - hyjal_trashAI::JustDied(victim); + hyjal_trashAI::JustDied(victim); } void UpdateAI(const uint32 diff) @@ -1285,8 +1285,8 @@ struct mob_gargoyleAI : public hyjal_trashAI ((npc_escortAI*)(m_creature->AI()))->Start(false, true, true); ((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false); } - } - } + } + } } if(IsOverrun && !UpdateVictim()) { @@ -1294,7 +1294,7 @@ struct mob_gargoyleAI : public hyjal_trashAI { if(StrikeTimerCastSpell(DummyTarget[0],DummyTarget[1],DummyTarget[2],SPELL_GARGOYLE_STRIKE,false); + m_creature->CastSpell(DummyTarget[0],DummyTarget[1],DummyTarget[2],SPELL_GARGOYLE_STRIKE,false); StrikeTimer = 2000+rand()%1000; }else StrikeTimer -= diff; } @@ -1316,10 +1316,10 @@ struct mob_gargoyleAI : public hyjal_trashAI m_creature->getVictim()->GetPosition(x,y,z); m_creature->GetMotionMaster()->MovePoint(0,x,y,z+Zpos); Zpos-=1.0; - if(Zpos<=0)Zpos=0; + if(Zpos<=0)Zpos=0; MoveTimer = 2000; }else MoveTimer-=diff; - } + } if(StrikeTimerGetDistance(m_creature->getVictim()) < 20) diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h index 1113ce4c8a2..bbc2f6663a8 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h @@ -23,7 +23,7 @@ struct TRINITY_DLL_DECL hyjal_trashAI : public npc_escortAI void DamageTaken(Unit *done_by, uint32 &damage); - public: + public: ScriptedInstance* pInstance; bool IsEvent; uint32 Delay; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp index 9ce778b3600..ccfdcf2eb31 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp @@ -92,18 +92,18 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance } void OnObjectCreate(GameObject *go) - { + { switch(go->GetEntry()) { - case 182060: - HordeGate = go->GetGUID(); + case 182060: + HordeGate = go->GetGUID(); if(allianceRetreat) go->SetGoState(0); else go->SetGoState(1); break; - case 182061: - ElfGate = go->GetGUID(); + case 182061: + ElfGate = go->GetGUID(); if(hordeRetreat) go->SetGoState(0); else @@ -155,23 +155,23 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance switch(type) { case DATA_RAGEWINTERCHILLEVENT: Encounters[0] = data; break; - case DATA_ANETHERONEVENT: - Encounters[1] = data; + case DATA_ANETHERONEVENT: + Encounters[1] = data; break; case DATA_KAZROGALEVENT: Encounters[2] = data; break; - case DATA_AZGALOREVENT: + case DATA_AZGALOREVENT: { - Encounters[3] = data; + Encounters[3] = data; if(data==DONE) - { + { if(ArchiYell)break; ArchiYell = true; Creature* pCreature = instance->GetCreatureInMap(Azgalor); if(pCreature) - { + { Creature* pUnit = pCreature->SummonCreature(21987,pCreature->GetPositionX(),pCreature->GetPositionY(),pCreature->GetPositionZ(),0,TEMPSUMMON_TIMED_DESPAWN,10000); - + Map *map = pCreature->GetMap(); if (map->IsDungeon() && pUnit) { @@ -179,12 +179,12 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance Map::PlayerList const &PlayerList = map->GetPlayers(); if (PlayerList.isEmpty()) return; - + for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) { if (i->getSource()) { - WorldPacket data(SMSG_MESSAGECHAT, 200); + WorldPacket data(SMSG_MESSAGECHAT, 200); pUnit->BuildMonsterChat(&data,CHAT_MSG_MONSTER_YELL,"All of your efforts have been in vain, for the draining of the World Tree has already begun. Soon the heart of your world will beat no more.",0,"Archimonde",i->getSource()->GetGUID()); i->getSource()->GetSession()->SendPacket(&data); @@ -206,12 +206,12 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance else Trash--; UpdateWorldState(WORLD_STATE_ENEMYCOUNT, Trash); break; - case DATA_ALLIANCE_RETREAT: + case DATA_ALLIANCE_RETREAT: allianceRetreat = data; OpenDoor(HordeGate,true); SaveToDB(); break; - case DATA_HORDE_RETREAT: + case DATA_HORDE_RETREAT: hordeRetreat = data; OpenDoor(ElfGate,true); SaveToDB(); @@ -252,7 +252,7 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance void UpdateWorldState(uint32 id, uint32 state) { Map::PlayerList const& players = instance->GetPlayers(); - + if (!players.isEmpty()) { for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp index ea85414a27e..c350990cde7 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp @@ -386,11 +386,11 @@ struct TRINITY_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI //alot will happen here, thrall and taretha talk, erozion appear at spot to explain m_creature->SummonCreature(EROZION_ENTRY,2646.47,680.416,55.38,4.16,TEMPSUMMON_TIMED_DESPAWN,120000); } - break; + break; case 108: - //last waypoint, just set Thrall invisible, respawn is turned off + //last waypoint, just set Thrall invisible, respawn is turned off m_creature->SetVisibility(VISIBILITY_OFF); - break; + break; } } @@ -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); diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp index 134dac56ca0..3a3f7e8291d 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp @@ -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); } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp index 6c2588671e6..73d55127c78 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp @@ -219,7 +219,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI float ny = y; float o = 2.4f; if (i == 0) {nx += 10; ny -= 5; o=2.5f;} - if (i == 1) {nx -= 8; ny -= 7; o=0.9f;} + if (i == 1) {nx -= 8; ny -= 7; o=0.9f;} if (i == 2) {nx -= 3; ny += 9; o=5.0f;} Creature* binder = m_creature->SummonCreature(MOB_SPELLBINDER,nx,ny,z,o,TEMPSUMMON_DEAD_DESPAWN,0); if (binder) diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp index 02125f5fd38..a3a4230c342 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp @@ -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; } } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp index 7d56bbf6d2a..b892741c973 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp @@ -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; diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp index 5153edb5e62..c3c8d977509 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp @@ -131,7 +131,7 @@ struct TRINITY_DLL_DECL boss_the_black_stalkerAI : public ScriptedAI target->AddAura(SPELL_SUSPENSION, target); LevitatedTarget = 0; } - else + else { target->CastSpell(target, SPELL_MAGNETIC_PULL, true); InAir = true; diff --git a/src/bindings/scripts/scripts/zone/deadmines/deadmines.cpp b/src/bindings/scripts/scripts/zone/deadmines/deadmines.cpp index 3f71dc9041b..fcafcf6079e 100644 --- a/src/bindings/scripts/scripts/zone/deadmines/deadmines.cpp +++ b/src/bindings/scripts/scripts/zone/deadmines/deadmines.cpp @@ -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); diff --git a/src/bindings/scripts/scripts/zone/dun_morogh/dun_morogh.cpp b/src/bindings/scripts/scripts/zone/dun_morogh/dun_morogh.cpp index abba40ffe2a..623cda57518 100644 --- a/src/bindings/scripts/scripts/zone/dun_morogh/dun_morogh.cpp +++ b/src/bindings/scripts/scripts/zone/dun_morogh/dun_morogh.cpp @@ -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; } diff --git a/src/bindings/scripts/scripts/zone/elwynn_forest/elwynn_forest.cpp b/src/bindings/scripts/scripts/zone/elwynn_forest/elwynn_forest.cpp index 2e07f91984c..354da2892c1 100644 --- a/src/bindings/scripts/scripts/zone/elwynn_forest/elwynn_forest.cpp +++ b/src/bindings/scripts/scripts/zone/elwynn_forest/elwynn_forest.cpp @@ -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; } diff --git a/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp b/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp index bdd36dba074..d6a3bbb51ba 100644 --- a/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp +++ b/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp @@ -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; } diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp index 0131d39dc48..e7a392a5370 100644 --- a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp +++ b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp @@ -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(); @@ -445,9 +446,9 @@ struct TRINITY_DLL_DECL boss_kiggler_the_crazedAI : public ScriptedAI if(Maulgar) ((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath(); - + if(CheckAllBossDied(pInstance, m_creature)) - pInstance->SetData(DATA_MAULGAREVENT, DONE); + pInstance->SetData(DATA_MAULGAREVENT, DONE); } } @@ -551,7 +552,7 @@ struct TRINITY_DLL_DECL boss_blindeye_the_seerAI : public ScriptedAI if(Maulgar) ((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath(); - + if(CheckAllBossDied(pInstance, m_creature)) pInstance->SetData(DATA_MAULGAREVENT, DONE); } diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_vazruden_the_herald.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_vazruden_the_herald.cpp index 86d76952b45..4483a8be037 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_vazruden_the_herald.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_vazruden_the_herald.cpp @@ -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 { diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp index 8c4b24421c6..7ae44f2f80a 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warchief_kargath_bladefist.cpp @@ -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; diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_curator.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_curator.cpp index 9c5563e8ac8..c2bfeaecbb8 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_curator.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_curator.cpp @@ -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; diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp index 0d3f6f010c6..20bf8076b27 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp @@ -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) { diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp index 96f58bd3a3c..e738466652b 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_nightbane.cpp @@ -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); diff --git a/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp index e3babcf89df..00fe2e23c69 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp @@ -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]); diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp index 3743423f0e0..5575e700405 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp @@ -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; } -- cgit v1.2.3 From f72cd39122d6345bb1262883b5b5bd648459fc7c Mon Sep 17 00:00:00 2001 From: Anubisss Date: Fri, 1 May 2009 01:07:09 +0200 Subject: *Add the second part of the previous commit. --HG-- branch : trunk --- .../scripts/zone/molten_core/boss_golemagg.cpp | 2 +- .../scripts/zone/molten_core/boss_ragnaros.cpp | 16 +++-- .../scripts/scripts/zone/mulgore/mulgore.cpp | 2 +- .../scripts/scripts/zone/nagrand/nagrand.cpp | 1 + .../scripts/zone/naxxramas/boss_maexxna.cpp | 3 +- .../boss_amnennar_the_coldbringer.cpp | 9 ++- .../scarlet_monastery/boss_headless_horseman.cpp | 26 ++++++-- .../zone/scholomance/boss_darkmaster_gandling.cpp | 60 +++++++++++------ .../zone/scholomance/boss_jandice_barov.cpp | 3 +- .../scripts/zone/scholomance/boss_kormok.cpp | 6 +- .../zone/shadowmoon_valley/shadowmoon_valley.cpp | 14 ++-- .../zone/stranglethorn_vale/stranglethorn_vale.cpp | 1 + .../zone/stratholme/boss_baron_rivendare.cpp | 1 - .../zone/stratholme/boss_baroness_anastari.cpp | 1 - .../zone/stratholme/boss_cannon_master_willey.cpp | 1 - .../zone/stratholme/boss_magistrate_barthilas.cpp | 1 - .../zone/stratholme/boss_maleki_the_pallid.cpp | 1 - .../scripts/zone/stratholme/boss_nerubenkan.cpp | 6 +- .../zone/stratholme/boss_order_of_silver_hand.cpp | 4 -- .../zone/stratholme/boss_postmaster_malown.cpp | 1 - .../zone/stratholme/boss_ramstein_the_gorger.cpp | 1 - .../zone/stratholme/boss_timmy_the_cruel.cpp | 11 ++-- .../zone/sunwell_plateau/boss_eredar_twins.cpp | 24 ++++--- .../scripts/zone/sunwell_plateau/boss_felmyst.cpp | 27 ++++++-- .../scripts/zone/sunwell_plateau/boss_kalecgos.cpp | 4 +- .../zone/sunwell_plateau/boss_kiljaeden.cpp | 3 +- .../scripts/scripts/zone/tanaris/tanaris.cpp | 2 +- .../zone/tempest_keep/the_eye/boss_alar.cpp | 13 ++-- .../zone/tempest_keep/the_eye/boss_astromancer.cpp | 61 +++++++++--------- .../zone/tempest_keep/the_eye/boss_kaelthas.cpp | 34 ++++++---- .../the_mechanar/boss_nethermancer_sepethrea.cpp | 2 - .../the_mechanar/boss_pathaleon_the_calculator.cpp | 2 - .../the_mechanar/instance_mechanar.cpp | 2 +- .../zone/temple_of_ahnqiraj/boss_bug_trio.cpp | 2 +- .../zone/temple_of_ahnqiraj/boss_fankriss.cpp | 39 +++++++---- .../scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp | 3 +- .../zone/temple_of_ahnqiraj/boss_sartura.cpp | 2 - .../zone/temple_of_ahnqiraj/boss_skeram.cpp | 8 ++- .../zone/temple_of_ahnqiraj/boss_twinemperors.cpp | 9 ++- .../zone/terokkar_forest/terokkar_forest.cpp | 1 + .../scripts/zone/uldaman/boss_archaedas.cpp | 12 +++- .../scripts/scripts/zone/zulaman/boss_hexlord.cpp | 9 ++- .../scripts/scripts/zone/zulaman/boss_janalai.cpp | 2 +- .../scripts/scripts/zone/zulaman/boss_nalorakk.cpp | 3 +- .../scripts/scripts/zone/zulaman/boss_zuljin.cpp | 14 +++- .../scripts/scripts/zone/zulgurub/boss_arlokk.cpp | 7 +- .../scripts/zone/zulgurub/boss_hazzarah.cpp | 6 +- .../scripts/scripts/zone/zulgurub/boss_jeklik.cpp | 7 +- .../scripts/scripts/zone/zulgurub/boss_jindo.cpp | 37 +++++++---- .../scripts/scripts/zone/zulgurub/boss_marli.cpp | 20 ++++-- .../scripts/scripts/zone/zulgurub/boss_thekal.cpp | 75 ++++++++++++++-------- .../scripts/scripts/zone/zulgurub/boss_venoxis.cpp | 4 +- 52 files changed, 389 insertions(+), 216 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp b/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp index 8684f10c509..e512d42384c 100644 --- a/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp +++ b/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp @@ -65,10 +65,10 @@ struct TRINITY_DLL_DECL boss_golemaggAI : public ScriptedAI void JustDied(Unit* Killer) { - if(pInstance) pInstance->SetData(DATA_GOLEMAGG_DEATH, 0); } + void UpdateAI(const uint32 diff) { if (!UpdateVictim()) diff --git a/src/bindings/scripts/scripts/zone/molten_core/boss_ragnaros.cpp b/src/bindings/scripts/scripts/zone/molten_core/boss_ragnaros.cpp index 7d9a64666cf..2a698c975fc 100644 --- a/src/bindings/scripts/scripts/zone/molten_core/boss_ragnaros.cpp +++ b/src/bindings/scripts/scripts/zone/molten_core/boss_ragnaros.cpp @@ -224,8 +224,12 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public Scripted_NoMovementAI for(int i = 0; i < 9;i++) { target = SelectUnit(SELECT_TARGET_RANDOM,0); - Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(target) + { + Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); + } } HasSubmergedOnce = true; @@ -241,8 +245,12 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public Scripted_NoMovementAI for(int i = 0; i < 9;i++) { target = SelectUnit(SELECT_TARGET_RANDOM,0); - Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(target) + { + Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); + } } WasBanished = true; diff --git a/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp b/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp index 74d800a5484..4af70ebda45 100644 --- a/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp +++ b/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp @@ -106,7 +106,7 @@ struct TRINITY_DLL_DECL npc_kyle_frenziedAI : public ScriptedAI { Unit *plr = Unit::GetUnit((*m_creature),player); if(plr) - m_creature->SetOrientation(m_creature->GetAngle(plr)); + m_creature->SetOrientation(m_creature->GetAngle(plr)); m_creature->HandleEmoteCommand(EMOTE_STATE_USESTANDING); //eat WorldPacket data; m_creature->BuildHeartBeatMsg(&data); diff --git a/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp b/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp index 0266fa8ef43..9259cc31121 100644 --- a/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp +++ b/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp @@ -157,6 +157,7 @@ struct TRINITY_DLL_DECL mob_lumpAI : public ScriptedAI EnterEvadeMode(); bReset = false; m_creature->setFaction(1711); //hostile + return; } else Reset_Timer -= diff; } diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_maexxna.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_maexxna.cpp index 235029f1cb7..b3185d01cdf 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_maexxna.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_maexxna.cpp @@ -75,7 +75,8 @@ struct TRINITY_DLL_DECL mob_webwrapAI : public ScriptedAI { Unit* victim = NULL; victim = Unit::GetUnit((*m_creature), victimGUID); - victim->RemoveAurasDueToSpell(SPELL_WEBTRAP); + if(victim) + victim->RemoveAurasDueToSpell(SPELL_WEBTRAP); } } } diff --git a/src/bindings/scripts/scripts/zone/razorfen_downs/boss_amnennar_the_coldbringer.cpp b/src/bindings/scripts/scripts/zone/razorfen_downs/boss_amnennar_the_coldbringer.cpp index d8e1a297872..5502fe61f1a 100644 --- a/src/bindings/scripts/scripts/zone/razorfen_downs/boss_amnennar_the_coldbringer.cpp +++ b/src/bindings/scripts/scripts/zone/razorfen_downs/boss_amnennar_the_coldbringer.cpp @@ -115,9 +115,12 @@ struct TRINITY_DLL_DECL boss_amnennar_the_coldbringerAI : public ScriptedAI Unit* target = NULL; target = SelectUnit(SELECT_TARGET_RANDOM,0); - SummonSpectrals(target); - SummonSpectrals(target); - SummonSpectrals(target); + if(target) + { + SummonSpectrals(target); + SummonSpectrals(target); + SummonSpectrals(target); + } Spectrals = true; } diff --git a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp index 441797ec158..99d08375fae 100644 --- a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp +++ b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp @@ -224,6 +224,7 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI DoScriptText(textEntry, m_creature, target); //DoCast(m_creature,SPELL_HEAD_SPEAKS,true); Creature *speaker = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,1000); + if(speaker) speaker->CastSpell(speaker,SPELL_HEAD_SPEAKS,false); laugh += 3000; } @@ -295,6 +296,7 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI DoPlaySoundToSet(m_creature, RandomLaught[rand()%3]); //DoCast(m_creature,SPELL_HEAD_SPEAKS,true); //this spell remove buff "head" Creature *speaker = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,1000); + if(speaker) speaker->CastSpell(speaker,SPELL_HEAD_SPEAKS,false); DoTextEmote("laughts",NULL); } else laugh -= diff; @@ -421,8 +423,9 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI m_creature->SetVisibility(VISIBILITY_ON);break; case 1: { Creature *smoke = m_creature->SummonCreature(HELPER,Spawn[1].x,Spawn[1].y,Spawn[1].z,0,TEMPSUMMON_TIMED_DESPAWN,20000); + if(smoke) ((mob_wisp_invisAI*)smoke->AI())->SetType(3); - DoCast(m_creature,SPELL_RHYME_BIG); + DoCast(m_creature,SPELL_RHYME_BIG); break;} case 6: if(pInstance) @@ -515,8 +518,10 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI //m_creature->GetMotionMaster()->MoveIdle(); test SaySound(SAY_DEATH); Creature *flame = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,60000); + if(flame) flame->CastSpell(flame,SPELL_BODY_FLAME,false); Creature *wisp = DoSpawnCreature(WISP_INVIS,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,60000); + if(wisp) ((mob_wisp_invisAI*)wisp->AI())->SetType(4); if(pInstance) pInstance->SetData(DATA_HORSEMAN_EVENT, DONE); @@ -592,11 +597,15 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI say_timer = 3000; Player *plr = SelectRandomPlayer(100.0f,false); if (count < 3) - plr->Say(Text[count].text,0); + if(plr) + plr->Say(Text[count].text,0); else { DoCast(m_creature,SPELL_RHYME_BIG); - plr->Say(Text[count].text,0); - plr->HandleEmoteCommand(ANIM_EMOTE_SHOUT); + if(plr) + { + plr->Say(Text[count].text,0); + plr->HandleEmoteCommand(ANIM_EMOTE_SHOUT); + } wp_reached = true; IsFlying = true; count = 0; @@ -618,8 +627,9 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI if(burn < diff) { Creature *flame = m_creature->SummonCreature(HELPER,Spawn[0].x,Spawn[0].y,Spawn[0].z,0,TEMPSUMMON_TIMED_DESPAWN,17000); + if(flame) ((mob_wisp_invisAI*)flame->AI())->SetType(2); - burned = true; + burned = true; }else burn -= diff; break; case 2: @@ -727,10 +737,13 @@ struct TRINITY_DLL_DECL mob_pulsing_pumpkinAI : public ScriptedAI m_creature->Relocate(x,y,z + 0.35f); Despawn(); Creature *debuff = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,14500); + if(debuff) + { debuff->SetDisplayId(m_creature->GetDisplayId()); debuff->CastSpell(debuff,SPELL_PUMPKIN_AURA_GREEN,false); ((mob_wisp_invisAI*)debuff->AI())->SetType(1); debuffGUID = debuff->GetGUID(); + } sprouted = false; DoCast(m_creature,SPELL_PUMPKIN_AURA,true); DoCast(m_creature,SPELL_SPROUTING); @@ -792,8 +805,11 @@ bool GOHello_go_loosely_turned_soil(Player *plr, GameObject* soil) { */ plr->AreaExploredOrEventHappens(11405); Creature *horseman = soil->SummonCreature(HH_MOUNTED,FlightPoint[20].x,FlightPoint[20].y,FlightPoint[20].z,0,TEMPSUMMON_MANUAL_DESPAWN,0); + if(horseman) + { ((boss_headless_horsemanAI*)horseman->AI())->playerGUID = plr->GetGUID(); ((boss_headless_horsemanAI*)horseman->AI())->FlyMode(); + } //} return true; } diff --git a/src/bindings/scripts/scripts/zone/scholomance/boss_darkmaster_gandling.cpp b/src/bindings/scripts/scripts/zone/scholomance/boss_darkmaster_gandling.cpp index a20cd4d8b83..094b61a6c7e 100644 --- a/src/bindings/scripts/scripts/zone/scholomance/boss_darkmaster_gandling.cpp +++ b/src/bindings/scripts/scripts/zone/scholomance/boss_darkmaster_gandling.cpp @@ -113,60 +113,80 @@ struct TRINITY_DLL_DECL boss_darkmaster_gandlingAI : public ScriptedAI case 0: DoTeleportPlayer(target, 250.0696,0.3921,84.8408,3.149); Summoned = m_creature->SummonCreature(16119,254.2325,0.3417,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,257.7133,4.0226,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,258.6702,-2.60656,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); break; case 1: DoTeleportPlayer(target, 181.4220,-91.9481,84.8410,1.608); Summoned = m_creature->SummonCreature(16119,184.0519,-73.5649,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,179.5951,-73.7045,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,180.6452,-78.2143,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,283.2274,-78.1518,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); break; case 2: DoTeleportPlayer(target, 95.1547,-1.8173,85.2289,0.043); Summoned = m_creature->SummonCreature(16119,100.9404,-1.8016,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,101.3729,0.4882,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,101.4596,-4.4740,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); break; case 3: DoTeleportPlayer(target, 250.0696,0.3921,72.6722,3.149); Summoned = m_creature->SummonCreature(16119,240.34481,0.7368,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,240.3633,-2.9520,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,240.6702,3.34949,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); break; case 4: DoTeleportPlayer(target, 181.4220,-91.9481,70.7734,1.608); Summoned = m_creature->SummonCreature(16119,184.0519,-73.5649,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,179.5951,-73.7045,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,180.6452,-78.2143,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,283.2274,-78.1518,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); break; case 5: DoTeleportPlayer(target, 106.1541,-1.8994,75.3663,0.043); Summoned = m_creature->SummonCreature(16119,115.3945,-1.5555,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,257.7133,1.8066,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); Summoned = m_creature->SummonCreature(16119,258.6702,-5.1001,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000); - ((CreatureAI*)Summoned->AI())->AttackStart(target); + if(Summoned) + ((CreatureAI*)Summoned->AI())->AttackStart(target); break; } } diff --git a/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp b/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp index c6ff12be817..c8f7cfcac0a 100644 --- a/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp +++ b/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp @@ -122,7 +122,8 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI for(int i = 0; i < 10;i++) { target = SelectUnit(SELECT_TARGET_RANDOM,0); - SummonIllusions(target); + if(target) + SummonIllusions(target); } Invisible = true; Invisible_Timer = 3000; diff --git a/src/bindings/scripts/scripts/zone/scholomance/boss_kormok.cpp b/src/bindings/scripts/scripts/zone/scholomance/boss_kormok.cpp index 355fbd90c9b..b9e0254b8bc 100644 --- a/src/bindings/scripts/scripts/zone/scholomance/boss_kormok.cpp +++ b/src/bindings/scripts/scripts/zone/scholomance/boss_kormok.cpp @@ -74,7 +74,8 @@ struct TRINITY_DLL_DECL boss_kormokAI : public ScriptedAI } Rand1 = 0; SummonedMinions = DoSpawnCreature(16119, Rand1X, Rand1Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000); - ((CreatureAI*)SummonedMinions->AI())->AttackStart(victim); + if(SummonedMinions) + ((CreatureAI*)SummonedMinions->AI())->AttackStart(victim); } void SummonMages(Unit* victim) @@ -94,7 +95,8 @@ struct TRINITY_DLL_DECL boss_kormokAI : public ScriptedAI } Rand2 = 0; SummonedMages = DoSpawnCreature(16120, Rand2X, Rand2Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000); - ((CreatureAI*)SummonedMages->AI())->AttackStart(victim); + if(SummonedMages) + ((CreatureAI*)SummonedMages->AI())->AttackStart(victim); } void UpdateAI(const uint32 diff) diff --git a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp index 720d5aabb1c..365499a7956 100644 --- a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp +++ b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp @@ -140,8 +140,10 @@ struct TRINITY_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI if(Evade) if(ResetTimer < diff) + { EnterEvadeMode(); - else ResetTimer -= diff; + return; + }else ResetTimer -= diff; if(!UpdateVictim()) return; @@ -695,12 +697,16 @@ struct TRINITY_DLL_DECL npc_overlord_morghorAI : public ScriptedAI m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0); m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0); Unit* Illidan = m_creature->SummonCreature(C_ILLIDAN, -5107.83, 602.584, 85.2393, 4.92598, TEMPSUMMON_CORPSE_DESPAWN, 0); - IllidanGUID = Illidan->GetGUID(); - Illidan->SetVisibility(VISIBILITY_OFF); + if(Illidan) + { + IllidanGUID = Illidan->GetGUID(); + Illidan->SetVisibility(VISIBILITY_OFF); + } if(PlayerGUID) { Player* player = Unit::GetPlayer(PlayerGUID); - DoScriptText(OVERLORD_SAY_1, m_creature, player); + if(player) + DoScriptText(OVERLORD_SAY_1, m_creature, player); } ConversationTimer = 4200; Step = 0; diff --git a/src/bindings/scripts/scripts/zone/stranglethorn_vale/stranglethorn_vale.cpp b/src/bindings/scripts/scripts/zone/stranglethorn_vale/stranglethorn_vale.cpp index c2aa57d8c49..3b28c1526ee 100644 --- a/src/bindings/scripts/scripts/zone/stranglethorn_vale/stranglethorn_vale.cpp +++ b/src/bindings/scripts/scripts/zone/stranglethorn_vale/stranglethorn_vale.cpp @@ -77,6 +77,7 @@ struct TRINITY_DLL_DECL mob_yennikuAI : public ScriptedAI EnterEvadeMode(); bReset = false; m_creature->setFaction(28); //troll, bloodscalp + return; } else Reset_Timer -= diff; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp index c8ad95038c0..e50ab2196fb 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp @@ -177,7 +177,6 @@ CreatureAI* GetAI_boss_baron_rivendare(Creature *_Creature) return new boss_baron_rivendareAI (_Creature); } - void AddSC_boss_baron_rivendare() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_baroness_anastari.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_baroness_anastari.cpp index c30f712a98b..cef99648d2f 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_baroness_anastari.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_baroness_anastari.cpp @@ -116,7 +116,6 @@ CreatureAI* GetAI_boss_baroness_anastari(Creature *_Creature) return new boss_baroness_anastariAI (_Creature); } - void AddSC_boss_baroness_anastari() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_cannon_master_willey.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_cannon_master_willey.cpp index 9fc9194ca4b..ab2aa112a01 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_cannon_master_willey.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_cannon_master_willey.cpp @@ -210,7 +210,6 @@ CreatureAI* GetAI_boss_cannon_master_willey(Creature *_Creature) return new boss_cannon_master_willeyAI (_Creature); } - void AddSC_boss_cannon_master_willey() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp index 5d0eda58c37..cae6dbcbcc6 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp @@ -122,7 +122,6 @@ CreatureAI* GetAI_boss_magistrate_barthilas(Creature *_Creature) return new boss_magistrate_barthilasAI (_Creature); } - void AddSC_boss_magistrate_barthilas() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_maleki_the_pallid.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_maleki_the_pallid.cpp index 652dd48e766..68890d43c1d 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_maleki_the_pallid.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_maleki_the_pallid.cpp @@ -97,7 +97,6 @@ CreatureAI* GetAI_boss_maleki_the_pallid(Creature *_Creature) return new boss_maleki_the_pallidAI (_Creature); } - void AddSC_boss_maleki_the_pallid() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_nerubenkan.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_nerubenkan.cpp index db425ebcca0..68336fca890 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_nerubenkan.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_nerubenkan.cpp @@ -52,7 +52,7 @@ struct TRINITY_DLL_DECL boss_nerubenkanAI : public ScriptedAI CryptScarabs_Timer = 3000; EncasingWebs_Timer = 7000; PierceArmor_Timer = 19000; - RaiseUndeadScarab_Timer = 3000; + RaiseUndeadScarab_Timer = 3000; } void Aggro(Unit *who) @@ -94,9 +94,7 @@ struct TRINITY_DLL_DECL boss_nerubenkanAI : public ScriptedAI //EncasingWebs if (EncasingWebs_Timer < diff) { - DoCast(m_creature->getVictim(),SPELL_ENCASINGWEBS); - EncasingWebs_Timer = 30000; }else EncasingWebs_Timer -= diff; @@ -105,7 +103,6 @@ struct TRINITY_DLL_DECL boss_nerubenkanAI : public ScriptedAI { if (rand()%100 < 75) DoCast(m_creature->getVictim(),SPELL_PIERCEARMOR); - PierceArmor_Timer = 35000; }else PierceArmor_Timer -= diff; @@ -131,7 +128,6 @@ CreatureAI* GetAI_boss_nerubenkan(Creature *_Creature) return new boss_nerubenkanAI (_Creature); } - void AddSC_boss_nerubenkan() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp index 86602f40d34..42b9a32ae8b 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp @@ -145,10 +145,6 @@ CreatureAI* GetAI_boss_silver_hand_bossesAI(Creature *_Creature) return new boss_silver_hand_bossesAI (_Creature); } -/*##### -# -#####*/ - void AddSC_boss_order_of_silver_hand() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_postmaster_malown.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_postmaster_malown.cpp index d6a87d43d8b..8e088dd4126 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_postmaster_malown.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_postmaster_malown.cpp @@ -133,7 +133,6 @@ CreatureAI* GetAI_boss_postmaster_malown(Creature *_Creature) return new boss_postmaster_malownAI (_Creature); } - void AddSC_boss_postmaster_malown() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp index 2e16dc883cc..9b7682a522a 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp @@ -88,7 +88,6 @@ CreatureAI* GetAI_boss_ramstein_the_gorger(Creature *_Creature) return new boss_ramstein_the_gorgerAI (_Creature); } - void AddSC_boss_ramstein_the_gorger() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp index f41c5f013b6..0e013642b3a 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp @@ -42,11 +42,11 @@ struct TRINITY_DLL_DECL boss_timmy_the_cruelAI : public ScriptedAI void Aggro(Unit *who) { - if (!HasYelled) - { - DoYell(SAY_SPAWN,LANG_UNIVERSAL,NULL); - HasYelled = true; - } + if (!HasYelled) + { + DoYell(SAY_SPAWN,LANG_UNIVERSAL,NULL); + HasYelled = true; + } } void UpdateAI(const uint32 diff) @@ -72,7 +72,6 @@ CreatureAI* GetAI_boss_timmy_the_cruel(Creature *_Creature) return new boss_timmy_the_cruelAI (_Creature); } - void AddSC_boss_timmy_the_cruel() { Script *newscript; diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp index f408212b129..5dcb5e2abc5 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp @@ -262,7 +262,8 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI m_creature->InterruptSpell(CURRENT_GENERIC_SPELL); Unit* target = NULL; target = SelectUnit(SELECT_TARGET_RANDOM, 0); - DoCast(target, SPELL_CONFLAGRATION); + if(target) + DoCast(target, SPELL_CONFLAGRATION); ConflagrationTimer = 30000+(rand()%5000); } }else ConflagrationTimer -= diff; @@ -275,11 +276,13 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI { Unit* target = NULL; target = SelectUnit(SELECT_TARGET_RANDOM, 0); - DoCast(target, SPELL_SHADOW_NOVA); + if(target) + DoCast(target, SPELL_SHADOW_NOVA); if(!SisterDeath) { - DoScriptText(EMOTE_SHADOW_NOVA, m_creature, target); + if(target) + DoScriptText(EMOTE_SHADOW_NOVA, m_creature, target); DoScriptText(YELL_SHADOW_NOVA, m_creature); } ShadownovaTimer = 30000+(rand()%5000); @@ -293,7 +296,8 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI { Unit* target = NULL; target = SelectUnit(SELECT_TARGET_RANDOM, 0); - DoCast(target, SPELL_CONFOUNDING_BLOW); + if(target) + DoCast(target, SPELL_CONFOUNDING_BLOW); ConfoundingblowTimer = 20000 + (rand()%5000); } }else ConfoundingblowTimer -=diff; @@ -306,7 +310,8 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI { target = SelectUnit(SELECT_TARGET_RANDOM, 0); temp = DoSpawnCreature(MOB_SHADOW_IMAGE,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN,10000); - temp->AI()->AttackStart(target); + if(temp && target) + temp->AI()->AttackStart(target); } ShadowimageTimer = 20000; }else ShadowimageTimer -=diff; @@ -595,7 +600,8 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI { Unit* target = NULL; target = SelectUnit(SELECT_TARGET_RANDOM, 0); - DoCast(target, SPELL_SHADOW_NOVA); + if(target) + DoCast(target, SPELL_SHADOW_NOVA); ShadownovaTimer= 30000+(rand()%5000); } }else ShadownovaTimer -=diff; @@ -609,12 +615,14 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI m_creature->InterruptSpell(CURRENT_GENERIC_SPELL); Unit* target = NULL; target = SelectUnit(SELECT_TARGET_RANDOM, 0); - DoCast(target, SPELL_CONFLAGRATION); + if(target) + DoCast(target, SPELL_CONFLAGRATION); ConflagrationTimer = 30000+(rand()%5000); if(!SisterDeath) { - DoScriptText(EMOTE_CONFLAGRATION, m_creature, target); + if(target) + DoScriptText(EMOTE_CONFLAGRATION, m_creature, target); DoScriptText(YELL_CANFLAGRATION, m_creature); } diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp index 230ba2e9cd3..50770b30dff 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp @@ -318,7 +318,12 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI m_creature->CastSpell(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true); } - }else EnterEvadeMode(); + } + else + { + EnterEvadeMode(); + return; + } Timer[EVENT_FLIGHT_SEQUENCE] = 10000; break;} case 3: { @@ -339,7 +344,12 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI m_creature->CastSpell(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true); } - }else EnterEvadeMode(); + } + else + { + EnterEvadeMode(); + return; + } Timer[EVENT_FLIGHT_SEQUENCE] = 10000; break;} case 4: @@ -357,7 +367,11 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI float x, y, z; target->GetContactPoint(m_creature, x, y, z, 70); m_creature->GetMotionMaster()->MovePoint(0, x, y, z+10); - }else EnterEvadeMode(); + }else + { + EnterEvadeMode(); + return; + } Timer[EVENT_FLIGHT_SEQUENCE] = 0; break;} case 6: @@ -391,7 +405,12 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI float x, y, z; target->GetContactPoint(m_creature, x, y, z); m_creature->GetMotionMaster()->MovePoint(0, x, y, z); - }else EnterEvadeMode(); + } + else + { + EnterEvadeMode(); + return; + } Timer[EVENT_FLIGHT_SEQUENCE] = 0; break; case 10: diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp index e39f7e02bd7..fca9b0c19e3 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp @@ -396,6 +396,7 @@ struct TRINITY_DLL_DECL boss_sathrovarrAI : public ScriptedAI { DoTextEmote("is unable to find Kalecgos", NULL); EnterEvadeMode(); + return; } } CheckTimer = 1000; @@ -594,6 +595,7 @@ void boss_kalecgosAI::UpdateAI(const uint32 diff) { error_log("TSCR: Didn't find Shathrowar. Kalecgos event reseted."); EnterEvadeMode(); + return; } } CheckTimer = 1000; @@ -627,7 +629,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 && target != m_creature->getVictim() ) && target->isAlive() && !(target->HasAura(AURA_SPECTRAL_EXHAUSTION, 0)) ) { DoCast(target, SPELL_SPECTRAL_BLAST); SpectralBlastTimer = 20000+(rand()%5000); diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp index 2ac90b87c35..29248b5e786 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kiljaeden.cpp @@ -545,7 +545,8 @@ struct TRINITY_DLL_DECL boss_kiljaedenAI : public Scripted_NoMovementAI } target->GetPosition(x,y,z); Creature* SinisterReflection = m_creature->SummonCreature(CREATURE_SINISTER_REFLECTION, x,y,z,0, TEMPSUMMON_CORPSE_DESPAWN, 0); - SinisterReflection->AI()->AttackStart(target); + if(SinisterReflection) + SinisterReflection->AI()->AttackStart(target); } } diff --git a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp index 45d9eba60d5..8e1a9967bb8 100644 --- a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp +++ b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp @@ -407,7 +407,7 @@ struct TRINITY_DLL_DECL npc_OOX17AI : public npc_escortAI DoScriptText(SAY_CHICKEN_AMB, m_creature); {Unit* scoff = FindCreature(SPAWN_SECOND_2, 30, m_creature); if(scoff) - DoScriptText(SAY_SCOFF, scoff);}break; + DoScriptText(SAY_SCOFF, scoff);}break; break; case 86: diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp index 813222b52c9..52c2433ae43 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp @@ -276,8 +276,12 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI m_creature->Relocate(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); m_creature->StopMoving(); WaitEvent = WE_LAND; - }else EnterEvadeMode(); - return; + } + else + { + EnterEvadeMode(); + return; + } case WE_LAND: WaitEvent = WE_SUMMON; WaitTimer = 2000; @@ -349,7 +353,8 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI if(Charge_Timer < diff) { Unit *target= SelectUnit(SELECT_TARGET_RANDOM, 1, GetSpellMaxRange(SPELL_CHARGE), true); - DoCast(target, SPELL_CHARGE); + if(target) + DoCast(target, SPELL_CHARGE); Charge_Timer = 30000; }else Charge_Timer -= diff; @@ -405,7 +410,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI else { Unit *target = NULL; - if(Phase1 && (target = m_creature->SelectNearestTarget(5))) + if(Phase1 && target && (target = m_creature->SelectNearestTarget(5))) m_creature->AI()->AttackStart(target); else { diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp index bc215f8c683..4e2320d1d90 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp @@ -233,38 +233,38 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI Wrath_Timer = 20000+rand()%5000; }else Wrath_Timer -= diff; - if (ArcaneMissiles_Timer < diff) - { - if(BlindingLight) - { - DoCast(m_creature->getVictim(), SPELL_BLINDING_LIGHT); - BlindingLight = false; - }else{ - Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0); - - if(!m_creature->HasInArc(2.5f, target)) - target = m_creature->getVictim(); + if (ArcaneMissiles_Timer < diff) + { + if(BlindingLight) + { + DoCast(m_creature->getVictim(), SPELL_BLINDING_LIGHT); + BlindingLight = false; + }else{ + Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0); + + if(!m_creature->HasInArc(2.5f, target)) + target = m_creature->getVictim(); + + if(target) + DoCast(target, SPELL_ARCANE_MISSILES); + } + ArcaneMissiles_Timer = 3000; + }else ArcaneMissiles_Timer -= diff; + if (MarkOfTheSolarian_Timer < diff) + { + DoCast(m_creature->getVictim(), MARK_OF_SOLARIAN); + MarkOfTheSolarian_Timer = 45000; + }else MarkOfTheSolarian_Timer -= diff; + + if (MarkOfTheAstromancer_Timer < diff) //A debuff that lasts for 5 seconds, cast several times each phase on a random raid member, but not the main tank + { + Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1, 100, true); if(target) - DoCast(target, SPELL_ARCANE_MISSILES); - } - ArcaneMissiles_Timer = 3000; - }else ArcaneMissiles_Timer -= diff; - - if (MarkOfTheSolarian_Timer < diff) - { - DoCast(m_creature->getVictim(), MARK_OF_SOLARIAN); - MarkOfTheSolarian_Timer = 45000; - }else MarkOfTheSolarian_Timer -= diff; - - if (MarkOfTheAstromancer_Timer < diff) //A debuff that lasts for 5 seconds, cast several times each phase on a random raid member, but not the main tank - { - Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1, 100, true); - if(target) - DoCast(target, SPELL_MARK_OF_THE_ASTROMANCER); - else DoCast(m_creature->getVictim(), SPELL_MARK_OF_THE_ASTROMANCER); - MarkOfTheAstromancer_Timer = 15000; - }else MarkOfTheAstromancer_Timer -= diff; + DoCast(target, SPELL_MARK_OF_THE_ASTROMANCER); + else DoCast(m_creature->getVictim(), SPELL_MARK_OF_THE_ASTROMANCER); + MarkOfTheAstromancer_Timer = 15000; + }else MarkOfTheAstromancer_Timer -= diff; //Phase1_Timer if (Phase1_Timer < diff) @@ -383,6 +383,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_VOIDWALKER); m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize*2.5f); } + DoMeleeAttackIfReady(); } }; diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp index f4e80001cf7..1a2fcaea1a2 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp @@ -258,6 +258,8 @@ struct TRINITY_DLL_DECL advisorbase_ai : public ScriptedAI if (!Target) Target = m_creature->getVictim(); DoResetThreat(); + if(!Target) + return; AttackStart(Target); m_creature->GetMotionMaster()->Clear(); m_creature->GetMotionMaster()->MoveChase(Target); @@ -325,7 +327,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI i_pl->DestroyItemCount(30318, 1, true); i_pl->DestroyItemCount(30319, 1, true); i_pl->DestroyItemCount(30320, 1, true); - } + } } void Reset() @@ -436,7 +438,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI { summoned->setFaction(m_creature->getFaction()); Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0); - summoned->AI()->AttackStart(target); + if(target) + summoned->AI()->AttackStart(target); } summons.Summon(summoned); } @@ -498,12 +501,12 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI void UpdateAI(const uint32 diff) { - + if(pInstance && Phase) { if(pInstance->GetData(DATA_KAELTHASEVENT) == IN_PROGRESS && m_creature->getThreatManager().getThreatList().empty()) { - EnterEvadeMode(); + EnterEvadeMode(); return; } } @@ -730,7 +733,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[i])); if (!Advisor) error_log("TSCR: Kael'Thas Advisor %u does not exist. Possibly despawned? Incorrectly Killed?", i); - else ((advisorbase_ai*)Advisor->AI())->Revive(Target); + else if(Target) + ((advisorbase_ai*)Advisor->AI())->Revive(Target); } PhaseSubphase = 1; @@ -815,7 +819,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Unit* target =SelectUnit(SELECT_TARGET_RANDOM, 1, 70, true); if(!target) target = m_creature->getVictim(); debug_log("TSCR: Kael'Thas mind control not supported."); - DoCast(target, SPELL_MIND_CONTROL); + if(target) + DoCast(target, SPELL_MIND_CONTROL); } MindControl_Timer = 60000; @@ -1078,8 +1083,11 @@ struct TRINITY_DLL_DECL boss_thaladred_the_darkenerAI : public advisorbase_ai if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true)) { DoResetThreat(); - m_creature->AddThreat(target, 5000000.0f); - DoScriptText(EMOTE_THALADRED_GAZE, m_creature, target); + if(target) + { + m_creature->AddThreat(target, 5000000.0f); + DoScriptText(EMOTE_THALADRED_GAZE, m_creature, target); + } Gaze_Timer = 8500; } }else Gaze_Timer -= diff; @@ -1398,7 +1406,7 @@ struct TRINITY_DLL_DECL mob_kael_flamestrikeAI : public ScriptedAI //Phoenix AI struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI { - mob_phoenix_tkAI(Creature *c) : ScriptedAI(c) + mob_phoenix_tkAI(Creature *c) : ScriptedAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); } @@ -1408,7 +1416,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI bool egg; void JustDied(Unit *victim) - { + { if(egg) { float x,y,z; @@ -1438,7 +1446,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI } void UpdateAI(const uint32 diff) - { + { if (Cycle_Timer < diff) { if(pInstance)//check for boss reset @@ -1447,7 +1455,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI if (Kael && Kael->getThreatManager().getThreatList().empty()) { egg = false; - m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); Cycle_Timer = 2000; return; } @@ -1460,7 +1468,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); Cycle_Timer = 2000; }else Cycle_Timer -= diff; - + if (!UpdateVictim()) return; DoMeleeAttackIfReady(); diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp index b3eddfa7ebe..14bf854b6df 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp @@ -100,7 +100,6 @@ struct TRINITY_DLL_DECL boss_nethermancer_sepethreaAI : public ScriptedAI void UpdateAI(const uint32 diff) { - //Return since we have no target if (!UpdateVictim() ) return; @@ -151,7 +150,6 @@ struct TRINITY_DLL_DECL boss_nethermancer_sepethreaAI : public ScriptedAI }else solarburn_Timer -= diff; DoMeleeAttackIfReady(); - } }; diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_pathaleon_the_calculator.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_pathaleon_the_calculator.cpp index 338e115ef85..073054c3b90 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_pathaleon_the_calculator.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_pathaleon_the_calculator.cpp @@ -216,7 +216,6 @@ struct TRINITY_DLL_DECL mob_nether_wraithAI : public ScriptedAI DoCast(m_creature,SPELL_DETONATION); Detonation = true; }else Detonation_Timer -= diff; - } if (Detonation) @@ -228,7 +227,6 @@ struct TRINITY_DLL_DECL mob_nether_wraithAI : public ScriptedAI }else Die_Timer -= diff; } - DoMeleeAttackIfReady(); } diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp index 05866eb27fb..a3b4661389e 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp @@ -56,7 +56,7 @@ struct TRINITY_DLL_DECL instance_mechanar : public ScriptedInstance { switch(type) { - case DATA_NETHERMANCER_EVENT: return Encounters[0]; + case DATA_NETHERMANCER_EVENT: return Encounters[0]; } return false; diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp index dc1e4df24ca..7c04dc5e0d0 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp @@ -239,7 +239,7 @@ struct TRINITY_DLL_DECL boss_yaujAI : public ScriptedAI { Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0); Creature* Summoned = m_creature->SummonCreature(15621,m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,90000); - if(Summoned) + if(Summoned && target) ((CreatureAI*)Summoned->AI())->AttackStart(target); } } diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_fankriss.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_fankriss.cpp index 0888c395489..b560f174bc4 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_fankriss.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_fankriss.cpp @@ -58,6 +58,9 @@ struct TRINITY_DLL_DECL boss_fankrissAI : public ScriptedAI void SummonSpawn(Unit* victim) { + if(!victim) + return; + Rand = 10 + (rand()%10); switch (rand()%2) { @@ -135,35 +138,47 @@ struct TRINITY_DLL_DECL boss_fankrissAI : public ScriptedAI case 0: DoTeleportPlayer(target, -8106.0142,1289.2900,-74.419533,5.112); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()-3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()+3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()-5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()+5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); break; case 1: DoTeleportPlayer(target, -7990.135354,1155.1907,-78.849319,2.608); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()-3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()+3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()-5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()+5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); break; case 2: DoTeleportPlayer(target,-8159.7753,1127.9064,-76.868660,0.675); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()-3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()+3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()-5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()+5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - ((CreatureAI*)Hatchling->AI())->AttackStart(target); + if(Hatchling) + ((CreatureAI*)Hatchling->AI())->AttackStart(target); break; } } diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp index 7f5827d398b..4193c7a666f 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp @@ -103,7 +103,8 @@ struct TRINITY_DLL_DECL boss_ouroAI : public ScriptedAI Unit* target = NULL; target = SelectUnit(SELECT_TARGET_RANDOM,0); - DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); + if(target) + DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); ChangeTarget_Timer = 10000 + rand()%10000; }else ChangeTarget_Timer -= diff; diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_sartura.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_sartura.cpp index a9b0578279d..e1e88101fdd 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_sartura.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_sartura.cpp @@ -161,7 +161,6 @@ struct TRINITY_DLL_DECL boss_sarturaAI : public ScriptedAI } }; - struct TRINITY_DLL_DECL mob_sartura_royal_guardAI : public ScriptedAI { mob_sartura_royal_guardAI(Creature *c) : ScriptedAI(c) {} @@ -187,7 +186,6 @@ struct TRINITY_DLL_DECL mob_sartura_royal_guardAI : public ScriptedAI WhirlWind = false; AggroReset = false; - } void Aggro(Unit *who) diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp index 84311d725f5..bbf7df27f78 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp @@ -274,16 +274,20 @@ struct TRINITY_DLL_DECL boss_skeramAI : public ScriptedAI Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0); Image1 = m_creature->SummonCreature(15263, i1->x, i1->y, i1->z, i1->r, TEMPSUMMON_CORPSE_DESPAWN, 30000); + if(!Image1) + return; Image1->SetMaxHealth(m_creature->GetMaxHealth() / 5); Image1->SetHealth(m_creature->GetHealth() / 5); if (target) - Image1->AI()->AttackStart(target); + Image1->AI()->AttackStart(target); Image2 = m_creature->SummonCreature(15263,i2->x, i2->y, i2->z, i2->r, TEMPSUMMON_CORPSE_DESPAWN, 30000); + if(!Image2) + return; Image2->SetMaxHealth(m_creature->GetMaxHealth() / 5); Image2->SetHealth(m_creature->GetHealth() / 5); if (target) - Image2->AI()->AttackStart(target); + Image2->AI()->AttackStart(target); ((boss_skeramAI*)Image1->AI())->IsImage = true; ((boss_skeramAI*)Image2->AI())->IsImage = true; diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp index c707ad23cee..2a658449b97 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp @@ -266,8 +266,11 @@ struct TRINITY_DLL_DECL boss_twinemperorsAI : public ScriptedAI m_creature->clearUnitState(UNIT_STAT_STUNNED); Unit *nearu = m_creature->SelectNearestTarget(100); //DoYell(nearu->GetName(), LANG_UNIVERSAL, 0); - AttackStart(nearu); - m_creature->getThreatManager().addThreat(nearu, 10000); + if(nearu) + { + AttackStart(nearu); + m_creature->getThreatManager().addThreat(nearu, 10000); + } return true; } else @@ -346,7 +349,7 @@ struct TRINITY_DLL_DECL boss_twinemperorsAI : public ScriptedAI for(std::list::iterator iter = unitList.begin(); iter != unitList.end(); ++iter) { Creature *c = (Creature *)(*iter); - if (c->isDead()) + if (c && c->isDead()) { c->Respawn(); c->setFaction(7); diff --git a/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp b/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp index 9e7e809ba66..7146b33de7d 100644 --- a/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp +++ b/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp @@ -120,6 +120,7 @@ struct TRINITY_DLL_DECL mob_unkor_the_ruthlessAI : public ScriptedAI if( UnkorUnfriendly_Timer < diff ) { EnterEvadeMode(); + return; }else UnkorUnfriendly_Timer -= diff; } } diff --git a/src/bindings/scripts/scripts/zone/uldaman/boss_archaedas.cpp b/src/bindings/scripts/scripts/zone/uldaman/boss_archaedas.cpp index adf88585a39..1536728365e 100644 --- a/src/bindings/scripts/scripts/zone/uldaman/boss_archaedas.cpp +++ b/src/bindings/scripts/scripts/zone/uldaman/boss_archaedas.cpp @@ -120,6 +120,8 @@ struct TRINITY_DLL_DECL boss_archaedasAI : public ScriptedAI void UpdateAI(const uint32 diff) { + if(!pInstance) + return; // we're still doing awaken animation if (wakingUp && Awaken_Timer >= 0) { Awaken_Timer -= diff; @@ -180,8 +182,11 @@ struct TRINITY_DLL_DECL boss_archaedasAI : public ScriptedAI } void JustDied (Unit *killer) { - pInstance->SetData(NULL,3); // open the vault door - pInstance->SetData(NULL,4); // deactivate his minions + if(pInstance) + { + pInstance->SetData(NULL,3); // open the vault door + pInstance->SetData(NULL,4); // deactivate his minions + } } }; @@ -389,7 +394,8 @@ struct TRINITY_DLL_DECL mob_stonekeepersAI : public ScriptedAI void DamageTaken (Unit *attacker, uint32 &damage) { if (damage > m_creature->GetHealth()) { DoCast (m_creature, SPELL_SELF_DESTRUCT,true); - pInstance->SetData(NULL, 1); // activate next stonekeeper + if(pInstance) + pInstance->SetData(NULL, 1); // activate next stonekeeper } } diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp index 8792a988c6f..375c8758bb0 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp @@ -189,7 +189,10 @@ struct TRINITY_DLL_DECL boss_hexlord_addAI : public ScriptedAI void UpdateAI(const uint32 diff) { if(pInstance && pInstance->GetData(DATA_HEXLORDEVENT) != IN_PROGRESS) + { EnterEvadeMode(); + return; + } DoMeleeAttackIfReady(); } @@ -383,7 +386,11 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI { Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 70, true); Unit *trigger = DoSpawnCreature(MOB_TEMP_TRIGGER, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 30000); - if(!target || !trigger) EnterEvadeMode(); + if(!target || !trigger) + { + EnterEvadeMode(); + return; + } else { trigger->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp index c70bd007c58..05b92144a89 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp @@ -397,7 +397,7 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI m_creature->AttackStop(); m_creature->GetMotionMaster()->Clear(); - DoTeleportTo(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2]); + DoTeleportTo(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2]); m_creature->StopMoving(); m_creature->CastSpell(m_creature, SPELL_HATCH_ALL, false); HatchAllEggs(2); diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp index 75d08661834..d8a909f605a 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp @@ -407,7 +407,8 @@ struct TRINITY_DLL_DECL boss_nalorakkAI : public ScriptedAI DoYell(YELL_SURGE, LANG_UNIVERSAL, NULL); DoPlaySoundToSet(m_creature, SOUND_YELL_SURGE); Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 1, GetSpellMaxRange(SPELL_SURGE), true); - DoCast(target, SPELL_SURGE); + if(target) + DoCast(target, SPELL_SURGE); Surge_Timer = 15000 + rand()%5000; }else Surge_Timer -= diff; } diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp index cf319c8f063..6cdd5316fec 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp @@ -487,7 +487,12 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI else Claw_Loop_Timer = 500; } - }else EnterEvadeMode(); // if(target) + } + else + { + EnterEvadeMode(); // if(target) + return; + } }else Claw_Loop_Timer -= diff; } //if(TankGUID) }else Claw_Rage_Timer -= diff; @@ -529,7 +534,12 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI else AttackStart(SelectUnit(SELECT_TARGET_RANDOM, 0)); } - }else EnterEvadeMode(); // if(target) + } + else + { + EnterEvadeMode(); // if(target) + return; + } } //if(TankGUID) }else Lynx_Rush_Timer -= diff; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp index a472fff2076..3d90fad3b63 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp @@ -125,13 +125,13 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI { DoScriptText(SAY_FEAST_PANTHER, m_creature, markedTarget); Panther ->AI()->AttackStart(markedTarget); - }else Panther ->AI()->AttackStart(target); + }else if(Panther && target) Panther ->AI()->AttackStart(target); Panther = m_creature->SummonCreature(15101,-11532.9970,-1606.4840,41.2979,0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); if(markedTarget && Panther ) Panther ->AI()->AttackStart(markedTarget); - else + else if(Panther && target) Panther ->AI()->AttackStart(target); Counter++; @@ -164,7 +164,8 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); m_creature->UpdateDamagePhysical(BASE_ATTACK); - AttackStart(target); + if(target) + AttackStart(target); //The Panther Model m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15215); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_hazzarah.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_hazzarah.cpp index efe847045d5..ca47d766676 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_hazzarah.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_hazzarah.cpp @@ -75,8 +75,12 @@ struct TRINITY_DLL_DECL boss_hazzarahAI : public ScriptedAI for(int i = 0; i < 3;i++) { target = SelectUnit(SELECT_TARGET_RANDOM,0); + if(!target) + return; + Illusion = m_creature->SummonCreature(15163,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,30000); - ((CreatureAI*)Illusion->AI())->AttackStart(target); + if(Illusion) + ((CreatureAI*)Illusion->AI())->AttackStart(target); } Illusions_Timer = 15000 + rand()%10000; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp index aecc2f450db..7e29787cc5b 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp @@ -184,13 +184,12 @@ struct TRINITY_DLL_DECL boss_jeklikAI : public ScriptedAI if(SpawnFlyingBats_Timer < diff) { Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0); + if(!target) + return; Creature* FlyingBat = m_creature->SummonCreature(14965, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()+15, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); if(FlyingBat) - { - if(target) - FlyingBat->AI()->AttackStart(target); - } + FlyingBat->AI()->AttackStart(target); SpawnFlyingBats_Timer = 10000 + rand()%5000; }else SpawnFlyingBats_Timer -=diff; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp index 100d8881127..1f9486ed625 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp @@ -108,10 +108,11 @@ struct TRINITY_DLL_DECL boss_jindoAI : public ScriptedAI { if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) { - DoCast(target, SPELL_DELUSIONSOFJINDO); + DoCast(target, SPELL_DELUSIONSOFJINDO); - Shade = m_creature->SummonCreature(14986, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Shade->AI()->AttackStart(target); + Shade = m_creature->SummonCreature(14986, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if(Shade) + Shade->AI()->AttackStart(target); } Delusions_Timer = 4000 + rand()%8000; @@ -130,23 +131,32 @@ struct TRINITY_DLL_DECL boss_jindoAI : public ScriptedAI DoModifyThreatPercent(target,-100); Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()+2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Skeletons->AI()->AttackStart(target); + if(Skeletons) + Skeletons->AI()->AttackStart(target); Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()-2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Skeletons->AI()->AttackStart(target); + if(Skeletons) + Skeletons->AI()->AttackStart(target); Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()+4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Skeletons->AI()->AttackStart(target); + if(Skeletons) + Skeletons->AI()->AttackStart(target); Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()-4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Skeletons->AI()->AttackStart(target); + if(Skeletons) + Skeletons->AI()->AttackStart(target); Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Skeletons->AI()->AttackStart(target); + if(Skeletons) + Skeletons->AI()->AttackStart(target); Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Skeletons->AI()->AttackStart(target); + if(Skeletons) + Skeletons->AI()->AttackStart(target); Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Skeletons->AI()->AttackStart(target); + if(Skeletons) + Skeletons->AI()->AttackStart(target); Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Skeletons->AI()->AttackStart(target); + if(Skeletons) + Skeletons->AI()->AttackStart(target); Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()+3, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Skeletons->AI()->AttackStart(target); + if(Skeletons) + Skeletons->AI()->AttackStart(target); } Teleport_Timer = 15000 + rand()%8000; @@ -185,7 +195,8 @@ struct TRINITY_DLL_DECL mob_healing_wardAI : public ScriptedAI if(pInstance) { Unit *pJindo = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_JINDO)); - DoCast(pJindo, SPELL_HEAL); + if(pJindo) + DoCast(pJindo, SPELL_HEAL); } Heal_Timer = 3000; }else Heal_Timer -= diff; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp index 69588bdfbb8..83db48e0a54 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp @@ -112,15 +112,21 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI DoScriptText(SAY_SPIDER_SPAWN, m_creature); Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0); + if(!target) + return; Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if(target && Spider ) Spider ->AI()->AttackStart(target); + if(Spider) + Spider->AI()->AttackStart(target); Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if(target && Spider ) Spider ->AI()->AttackStart(target); + if(Spider) + Spider->AI()->AttackStart(target); Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if(target && Spider ) Spider ->AI()->AttackStart(target); + if(Spider) + Spider->AI()->AttackStart(target); Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if(target && Spider ) Spider ->AI()->AttackStart(target); + if(Spider) + Spider->AI()->AttackStart(target); Spawned = true; }else SpawnStartSpiders_Timer -= diff; @@ -128,10 +134,12 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI if (SpawnSpider_Timer < diff) { Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0); + if(!target) + return; Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (target && Spider ) - Spider ->AI()->AttackStart(target); + if(Spider) + Spider->AI()->AttackStart(target); SpawnSpider_Timer = 12000 + rand()%5000; }else SpawnSpider_Timer -= diff; diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp index 36e9fd9c84d..6fbdebc40d5 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp @@ -118,20 +118,26 @@ struct TRINITY_DLL_DECL boss_thekalAI : public ScriptedAI { //Resurrect LorKhan Unit *pLorKhan = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_LORKHAN)); - pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pLorKhan->setFaction(14); - pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pLorKhan->SetHealth(int(pLorKhan->GetMaxHealth()*1.0)); + if(pLorKhan) + { + pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pLorKhan->setFaction(14); + pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pLorKhan->SetHealth(int(pLorKhan->GetMaxHealth()*1.0)); + } } if(pInstance->GetData(DATA_ZATHISDEAD)) { //Resurrect Zath Unit *pZath = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_ZATH)); - pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pZath->setFaction(14); - pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pZath->SetHealth(int(pZath->GetMaxHealth()*1.0)); + if(pZath) + { + pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pZath->setFaction(14); + pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pZath->SetHealth(int(pZath->GetMaxHealth()*1.0)); + } } } @@ -192,9 +198,9 @@ struct TRINITY_DLL_DECL boss_thekalAI : public ScriptedAI { if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) { - DoCast(target,SPELL_CHARGE); - DoResetThreat(); - AttackStart(target); + DoCast(target,SPELL_CHARGE); + DoResetThreat(); + AttackStart(target); } Charge_Timer = 15000 + rand()%7000; @@ -296,6 +302,9 @@ struct TRINITY_DLL_DECL mob_zealot_lorkhanAI : public ScriptedAI Unit *pThekal = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THEKAL)); Unit *pZath = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_ZATH)); + if(!pThekal || !pZath) + return; + switch(rand()%2) { case 0: @@ -328,20 +337,26 @@ struct TRINITY_DLL_DECL mob_zealot_lorkhanAI : public ScriptedAI { //Resurrect Thekal Unit *pThekal = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THEKAL)); - pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pThekal->setFaction(14); - pThekal->SetHealth(int(pThekal->GetMaxHealth()*1.0)); + if(pThekal) + { + pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pThekal->setFaction(14); + pThekal->SetHealth(int(pThekal->GetMaxHealth()*1.0)); + } } if(pInstance->GetData(DATA_ZATHISDEAD)) { //Resurrect Zath Unit *pZath = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_ZATH)); - pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pZath->setFaction(14); - pZath->SetHealth(int(pZath->GetMaxHealth()*1.0)); + if(pZath) + { + pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pZath->setFaction(14); + pZath->SetHealth(int(pZath->GetMaxHealth()*1.0)); + } } } @@ -459,20 +474,26 @@ struct TRINITY_DLL_DECL mob_zealot_zathAI : public ScriptedAI { //Resurrect LorKhan Unit *pLorKhan = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_LORKHAN)); - pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pLorKhan->setFaction(14); - pLorKhan->SetHealth(int(pLorKhan->GetMaxHealth()*1.0)); + if(pLorKhan) + { + pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pLorKhan->setFaction(14); + pLorKhan->SetHealth(int(pLorKhan->GetMaxHealth()*1.0)); + } } if(pInstance->GetData(DATA_THEKALISFAKEDEAD)) { //Resurrect Thekal Unit *pThekal = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THEKAL)); - pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pThekal->setFaction(14); - pThekal->SetHealth(int(pThekal->GetMaxHealth()*1.0)); + if(pThekal) + { + pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pThekal->setFaction(14); + pThekal->SetHealth(int(pThekal->GetMaxHealth()*1.0)); + } } } diff --git a/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp b/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp index 29c79a28187..5bed9f80ddd 100644 --- a/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp +++ b/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp @@ -134,7 +134,7 @@ struct TRINITY_DLL_DECL boss_venoxisAI : public ScriptedAI if (HolyFire_Timer < diff && TargetInRange < 3) { if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) - DoCast(target, SPELL_HOLY_FIRE); + DoCast(target, SPELL_HOLY_FIRE); HolyFire_Timer = 8000; }else HolyFire_Timer -= diff; @@ -164,7 +164,7 @@ struct TRINITY_DLL_DECL boss_venoxisAI : public ScriptedAI if (PhaseTwo && VenomSpit_Timer < diff) { if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) - DoCast(target, SPELL_VENOMSPIT); + DoCast(target, SPELL_VENOMSPIT); VenomSpit_Timer = 15000 + rand()%5000; }else VenomSpit_Timer -= diff; -- cgit v1.2.3 From d44d827200e596564f26c2a5c5b418a9fd3cffb2 Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 30 Apr 2009 22:04:15 -0500 Subject: *Explicitly implement spell target 28 and 29. --HG-- branch : trunk --- src/game/GridNotifiersImpl.h | 2 +- src/game/PetHandler.cpp | 2 +- src/game/SharedDefines.h | 5 ++--- src/game/Spell.cpp | 19 ++++++++++--------- src/game/SpellMgr.cpp | 9 +++------ 5 files changed, 17 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/game/GridNotifiersImpl.h b/src/game/GridNotifiersImpl.h index a43a97cd898..78d3d9aba5a 100644 --- a/src/game/GridNotifiersImpl.h +++ b/src/game/GridNotifiersImpl.h @@ -180,7 +180,7 @@ inline void Trinity::DynamicObjectUpdater::VisitHelper(Unit* target) SpellEntry const *spellInfo = sSpellStore.LookupEntry(i_dynobject.GetSpellId()); uint32 eff_index = i_dynobject.GetEffIndex(); - if(spellInfo->EffectImplicitTargetB[eff_index] == TARGET_UNIT_AREA_ALLY_CHANNEL + if(spellInfo->EffectImplicitTargetB[eff_index] == TARGET_DEST_DYNOBJ_ALLY || spellInfo->EffectImplicitTargetB[eff_index] == TARGET_UNIT_AREA_ALLY_GROUND) { if(!i_check->IsFriendlyTo(target)) diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index 932eb593ff8..de9079750ff 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -194,7 +194,7 @@ void WorldSession::HandlePetAction( WorldPacket & recv_data ) for(uint32 i = 0; i < 3;i++) { - if(spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA || spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA_INSTANT || spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA_CHANNELED) + if(spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA || spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA_INSTANT || spellInfo->EffectImplicitTargetA[i] == TARGET_DEST_DYNOBJ_ENEMY) return; } diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index 61cbcaa35ad..3266b5aa62d 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -827,9 +827,8 @@ enum Targets TARGET_GAMEOBJECT_ITEM = 26, //TARGET_OBJECT_ITEM_PICKLOCK TARGET_UNIT_MASTER = 27, - TARGET_ALL_ENEMY_IN_AREA_CHANNELED = 28, - TARGET_UNIT_AREA_ENEMY_CHANNEL = 28, - TARGET_UNIT_AREA_ALLY_CHANNEL = 29, // 28,29 only used for effect 27, if interrupt channel, pstAA cancel + TARGET_DEST_DYNOBJ_ENEMY = 28, + TARGET_DEST_DYNOBJ_ALLY = 29, // only for effect 27 TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER = 30, // in TargetB used only with TARGET_ALL_AROUND_CASTER and in self casting range in TargetA TARGET_UNIT_AREA_ALLY = 30, TARGET_ALL_FRIENDLY_UNITS_IN_AREA = 31, diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 27667f0ddc3..81f73e6ad65 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1977,17 +1977,13 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list &TagUnitMap) break; } - if(cur == TARGET_DEST_DEST) - break; - - float x, y, z, angle, dist; - - dist = GetSpellRadius(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i])); - if (cur == TARGET_DEST_DEST_RANDOM) - dist *= rand_norm(); - + float angle; switch(cur) { + case TARGET_DEST_DYNOBJ_ENEMY: + case TARGET_DEST_DYNOBJ_ALLY: + case TARGET_DEST_DEST: + return; case TARGET_DEST_DEST_FRONT: angle = 0.0f; break; case TARGET_DEST_DEST_BACK: angle = M_PI; break; case TARGET_DEST_DEST_RIGHT: angle = M_PI/2; break; @@ -1999,6 +1995,11 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list &TagUnitMap) default: angle = rand_norm()*2*M_PI; break; } + float dist, x, y, z; + dist = GetSpellRadius(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i])); + if (cur == TARGET_DEST_DEST_RANDOM) + dist *= rand_norm(); + x = m_targets.m_destX; y = m_targets.m_destY; z = m_targets.m_destZ; diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 95ddab074b1..e77bce1fc4d 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -124,8 +124,6 @@ SpellMgr::SpellMgr() case TARGET_UNIT_AREA_ENTRY: case TARGET_UNIT_AREA_PARTY_GROUND: case TARGET_UNIT_AREA_PARTY: - //case TARGET_UNIT_AREA_ENEMY_CHANNEL: - //case TARGET_UNIT_AREA_ALLY_CHANNEL: SpellTargetType[i] = TARGET_TYPE_AREA_DEST; break; case TARGET_DEST_TARGET_ENEMY: @@ -158,6 +156,8 @@ SpellMgr::SpellMgr() case TARGET_DEST_CASTER_RADIUS: SpellTargetType[i] = TARGET_TYPE_DEST_CASTER; break; + case TARGET_DEST_DYNOBJ_ENEMY: + case TARGET_DEST_DYNOBJ_ALLY: case TARGET_DEST_DEST: case TARGET_DEST_DEST_FRONT_LEFT: case TARGET_DEST_DEST_BACK_LEFT: @@ -187,9 +187,6 @@ SpellMgr::SpellMgr() case TARGET_UNIT_AREA_ENTRY: case TARGET_UNIT_AREA_PARTY_GROUND: case TARGET_UNIT_AREA_PARTY: - //Check persistant aura seperately - //case TARGET_UNIT_AREA_ENEMY_CHANNEL: - //case TARGET_UNIT_AREA_ALLY_CHANNEL: case TARGET_UNIT_PARTY_TARGET: case TARGET_UNIT_PARTY_CASTER: case TARGET_UNIT_CONE_ENEMY: @@ -493,7 +490,7 @@ bool IsPositiveTarget(uint32 targetA, uint32 targetB) case TARGET_ALL_ENEMY_IN_AREA: case TARGET_ALL_ENEMY_IN_AREA_INSTANT: case TARGET_IN_FRONT_OF_CASTER: - case TARGET_ALL_ENEMY_IN_AREA_CHANNELED: + case TARGET_DEST_DYNOBJ_ENEMY: case TARGET_CURRENT_ENEMY_COORDINATES: case TARGET_UNIT_CHANNEL: return false; -- cgit v1.2.3 From 570b148264b041a30e0b3ca453df0eacbe5bf4a4 Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 30 Apr 2009 22:58:08 -0500 Subject: *Change the radius of dynamic object to normal. I cannot see any bug by myself using normal radius. --HG-- branch : trunk --- src/game/DynamicObject.cpp | 2 +- src/game/SpellEffects.cpp | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/game/DynamicObject.cpp b/src/game/DynamicObject.cpp index 801626d5a9b..82076f734f2 100644 --- a/src/game/DynamicObject.cpp +++ b/src/game/DynamicObject.cpp @@ -81,7 +81,7 @@ bool DynamicObject::Create( uint32 guidlow, Unit *caster, uint32 spellId, uint32 SetUInt64Value( DYNAMICOBJECT_CASTER, caster->GetGUID() ); SetUInt32Value( DYNAMICOBJECT_BYTES, 0x00000001 ); SetUInt32Value( DYNAMICOBJECT_SPELLID, spellId ); - SetFloatValue( DYNAMICOBJECT_RADIUS, radius * 2); + SetFloatValue( DYNAMICOBJECT_RADIUS, radius); SetFloatValue( DYNAMICOBJECT_POS_X, x ); SetFloatValue( DYNAMICOBJECT_POS_Y, y ); SetFloatValue( DYNAMICOBJECT_POS_Z, z ); diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index c38f46d867b..37f1dc0a083 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2650,7 +2650,6 @@ void Spell::EffectPersistentAA(uint32 i) return; } dynObj->SetUInt32Value(OBJECT_FIELD_TYPE, 65); - dynObj->SetUInt32Value(GAMEOBJECT_DISPLAYID, 368003); dynObj->SetUInt32Value(DYNAMICOBJECT_BYTES, 0x01eeeeee); caster->AddDynObject(dynObj); dynObj->GetMap()->Add(dynObj); -- cgit v1.2.3