diff options
author | Kudlaty <none@none> | 2009-06-18 16:12:09 +0200 |
---|---|---|
committer | Kudlaty <none@none> | 2009-06-18 16:12:09 +0200 |
commit | 5910425dd5b0ebf16b2c1a72f5b93333a8add6db (patch) | |
tree | 27e8fb4ae617cbfdd57a1d45fa3d28f268406f6a /src | |
parent | f5eb15c3e77803bfbab084fb6e6490040f80bcfe (diff) |
Merge [SD2]
r1046 Fixed misc bugs in various scripts:
Initialize variables, correct indexes too big/small, correct local declaration of pointers already declared in outer scopes.
r1047 Fixed a few more, continued from previous commit.
r1048 Initialize variables for 4 more scripts.
r1049 Fixing more uninitialized variables in misc scripts.
r1050 Fixed memory leaks in delrissa script and few other possible crashes.
--HG--
branch : trunk
Diffstat (limited to 'src')
19 files changed, 220 insertions, 241 deletions
diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp index 8a00b3a2e0f..2cdfe43df24 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp @@ -241,7 +241,7 @@ struct TRINITY_DLL_DECL boss_shahrazAI : public ScriptedAI // Just make them explode three times... they're supposed to keep exploding while they are in range, but it'll take too much code. I'll try to think of an efficient way for it later. if(ExplosionCount < 3) { - for(uint8 i = 0; i < 4; i++) + for(uint8 i = 0; i < 3; ++i) { Unit* pUnit = NULL; if(TargetGUID[i]) diff --git a/src/bindings/scripts/scripts/zone/bloodmyst_isle/bloodmyst_isle.cpp b/src/bindings/scripts/scripts/zone/bloodmyst_isle/bloodmyst_isle.cpp index b9660576097..2b9a72105b9 100644 --- a/src/bindings/scripts/scripts/zone/bloodmyst_isle/bloodmyst_isle.cpp +++ b/src/bindings/scripts/scripts/zone/bloodmyst_isle/bloodmyst_isle.cpp @@ -49,7 +49,7 @@ struct TRINITY_DLL_DECL mob_webbed_creatureAI : public ScriptedAI void JustDied(Unit* Killer) { - uint32 spawnCreatureID; + uint32 spawnCreatureID = 0; switch(rand()%3) { diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp index 58962c0c469..068ca965df9 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp @@ -32,7 +32,8 @@ EndScriptData */ #define SPELL_RIFT_CHANNEL 31387 #define RIFT_BOSS 1 -inline uint32 RandRiftBoss() { return rand()%2 ? C_RKEEP : C_RLORD; } + +inline uint32 RandRiftBoss() { return ((rand()%2) ? C_RKEEP : C_RLORD); } float PortalLocation[4][4]= { diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp index 9f15b45a3ac..a56676c5e68 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp @@ -77,6 +77,7 @@ struct mob_ancient_wispAI : public ScriptedAI mob_ancient_wispAI(Creature* c) : ScriptedAI(c) { pInstance = c->GetInstanceData(); + ArchimondeGUID = 0; } ScriptedInstance* pInstance; @@ -85,9 +86,11 @@ struct mob_ancient_wispAI : public ScriptedAI void Reset() { - ArchimondeGUID = 0; CheckTimer = 1000; + if (pInstance) + ArchimondeGUID = pInstance->GetData64(DATA_ARCHIMONDE); + m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); } @@ -97,24 +100,14 @@ struct mob_ancient_wispAI : public ScriptedAI void UpdateAI(const uint32 diff) { - if (!ArchimondeGUID) - { - if (pInstance) - ArchimondeGUID = pInstance->GetData64(DATA_ARCHIMONDE); - } - if (CheckTimer < diff) { - if (ArchimondeGUID) + if (Unit* Archimonde = Unit::GetUnit((*m_creature), ArchimondeGUID)) { - Unit* Archimonde = Unit::GetUnit((*m_creature), ArchimondeGUID); - if (Archimonde) - { - if ((((Archimonde->GetHealth()*100) / Archimonde->GetMaxHealth()) < 2) || !Archimonde->isAlive()) - DoCast(m_creature, SPELL_DENOUEMENT_WISP); - else - DoCast(Archimonde, SPELL_ANCIENT_SPARK); - } + if ((((Archimonde->GetHealth()*100) / Archimonde->GetMaxHealth()) < 2) || !Archimonde->isAlive()) + DoCast(m_creature, SPELL_DENOUEMENT_WISP); + else + DoCast(Archimonde, SPELL_ANCIENT_SPARK); } CheckTimer = 1000; }else CheckTimer -= diff; @@ -357,9 +350,14 @@ struct TRINITY_DLL_DECL boss_archimondeAI : public hyjal_trashAI void JustSummoned(Creature *summoned) { - summoned->setFaction(m_creature->getFaction()); - summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + if (summoned->GetEntry() == CREATURE_ANCIENT_WISP) + summoned->AI()->AttackStart(m_creature); + else + { + summoned->setFaction(m_creature->getFaction()); + summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + } if (summoned->GetEntry() == CREATURE_DOOMFIRE_SPIRIT) { @@ -526,12 +524,7 @@ struct TRINITY_DLL_DECL boss_archimondeAI : public hyjal_trashAI if (SummonWispTimer < diff) { - Creature* Wisp = DoSpawnCreature(CREATURE_ANCIENT_WISP, rand()%40, rand()%40, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Wisp) - { - Wisp->AI()->AttackStart(m_creature); - CAST_AI(mob_ancient_wispAI, Wisp->AI())->ArchimondeGUID = m_creature->GetGUID(); - } + DoSpawnCreature(CREATURE_ANCIENT_WISP, rand()%40, rand()%40, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); SummonWispTimer = 1500; ++WispCount; }else SummonWispTimer -= diff; 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 edf74187ef5..f9eac237176 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 @@ -606,7 +606,7 @@ uint32 hyjalAI::GetInstanceData(uint32 Event) void hyjalAI::Talk(uint32 id) { std::list<uint8> index; - for(uint8 i = 0; i < 10; i++) + for(uint8 i = 0; i < 9; ++i) { if(Faction == 0) // Alliance { 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 6607c7c7939..010b25384bc 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 @@ -178,6 +178,7 @@ struct TRINITY_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI npc_thrall_old_hillsbradAI(Creature *c) : npc_escortAI(c) { pInstance = c->GetInstanceData(); + HadMount = false; m_creature->setActive(true); } diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp index 69084fb2d14..fcdac62f183 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp @@ -221,6 +221,7 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI RandChat_Timer = 90000; Phase3 = false; + NeedCheckCube = false; m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); diff --git a/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp b/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp index 19046679816..6d12d6f86c8 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp @@ -150,7 +150,7 @@ struct TRINITY_DLL_DECL npc_wounded_blood_elfAI : public npc_escortAI { Player* player = Unit::GetPlayer(PlayerGUID); - if (!player) + if (!player || player->GetTypeId() != TYPEID_PLAYER) return; switch (i) @@ -176,9 +176,7 @@ struct TRINITY_DLL_DECL npc_wounded_blood_elfAI : public npc_escortAI case 27: DoScriptText(SAY_ELF_COMPLETE, m_creature, player); // Award quest credit - Player* player = Unit::GetPlayer(PlayerGUID); - if (player) - player->GroupEventHappens(QUEST_ROAD_TO_FALCON_WATCH,m_creature); + ((Player*)player)->GroupEventHappens(QUEST_ROAD_TO_FALCON_WATCH,m_creature); break; } } diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp index 0501a6b6436..9901e0d413d 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp @@ -318,9 +318,9 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI targets.erase(targets.begin()+rand()%targets.size()); int i = 0; - for(std::vector<Unit *>::iterator itr = targets.begin(); itr!= targets.end(); ++itr, ++i) + for(std::vector<Unit *>::iterator iter = targets.begin(); iter!= targets.end(); ++iter, ++i) { - Unit *target = *itr; + Unit *target = *iter; if(target) { enfeeble_targets[i] = target->GetGUID(); diff --git a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp index abcea27249b..984c2a26416 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp @@ -199,7 +199,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance std::ostringstream saveStream; saveStream << Encounters[0] << " " << Encounters[1] << " " << Encounters[2] << " " << Encounters[3] << " " << Encounters[4] << " " << Encounters[5] << " " << Encounters[6] << " " - << Encounters[7] << " " << Encounters[8] << " " << Encounters[9] << " " << Encounters[10]; + << Encounters[7] << " " << Encounters[8] << " " << Encounters[9] << " " << Encounters[10] << " " << Encounters[11]; str_data = saveStream.str(); diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp index 692f93a91a0..80ee4efb55c 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp @@ -128,16 +128,22 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI Phase = 0; if (pInstance) - pInstance->SetData(DATA_KAELTHAS_EVENT, 0); + { + pInstance->SetData(DATA_KAELTHAS_EVENT, NOT_STARTED); if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_DOOR))) Door->SetGoState(GO_STATE_ACTIVE); // Open the big encounter door. Close it in Aggro and open it only in JustDied(and here) // Small door opened after event are expected to be closed by default + } } void JustDied(Unit *killer) { DoScriptText(SAY_DEATH, m_creature); + + if (!pInstance) + return; + if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_DOOR))) EncounterDoor->SetGoState(GO_STATE_ACTIVE); // Open the encounter door } @@ -150,11 +156,11 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI void EnterCombat(Unit *who) { - if (pInstance) - { + if (!pInstance) + return; + if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_DOOR))) EncounterDoor->SetGoState(GO_STATE_READY); //Close the encounter door, open it in JustDied/Reset - } } void MoveInLineOfSight(Unit *who) diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp index 2a7187442cf..c3224fdc0b6 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp @@ -46,19 +46,24 @@ static Speech PlayerDeath[]= {-1585021}, }; -#define SAY_AGGRO -1585012 -#define SAY_DEATH -1585022 - -#define SPELL_DISPEL_MAGIC 27609 -#define SPELL_FLASH_HEAL 17843 -#define SPELL_SW_PAIN_NORMAL 14032 -#define SPELL_SW_PAIN_HEROIC 15654 -#define SPELL_SHIELD 44291 -#define SPELL_RENEW_NORMAL 44174 -#define SPELL_RENEW_HEROIC 46192 +enum +{ + SAY_AGGRO = -1585012, + SAY_DEATH = -1585022, + + SPELL_DISPEL_MAGIC = 27609, + SPELL_FLASH_HEAL = 17843, + SPELL_SW_PAIN_NORMAL = 14032, + SPELL_SW_PAIN_HEROIC = 15654, + SPELL_SHIELD = 44291, + SPELL_RENEW_NORMAL = 44174, + SPELL_RENEW_HEROIC = 46192, + + MAX_ACTIVE_LACKEY = 4 +}; -#define ORIENT 4.98 -#define POS_Z -19.9215 +const float fOrientation = 4.98; +const float fZLocation = -19.921; float LackeyLocations[4][2]= { @@ -68,7 +73,7 @@ float LackeyLocations[4][2]= {129.988, 17.2355}, }; -const uint32 AddEntry[8]= +const uint32 m_auiAddEntries[] = { 24557, //Kagani Nightstrike 24558, //Elris Duskhallow @@ -80,29 +85,21 @@ const uint32 AddEntry[8]= 24556, //Zelfan }; -struct Add -{ - Add(uint32 _entry, uint64 _guid) - { - entry = _entry; - guid = _guid; - } - - uint32 entry; - uint64 guid; -}; - struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI { boss_priestess_delrissaAI(Creature* c) : ScriptedAI(c) { pInstance = c->GetInstanceData(); Heroic = c->GetMap()->IsHeroic(); + memset(&m_auiLackeyGUID, 0, sizeof(m_auiLackeyGUID)); + LackeyEntryList.clear(); } ScriptedInstance* pInstance; + bool Heroic; - std::vector<Add*> Adds; + std::vector<uint32> LackeyEntryList; + uint64 m_auiLackeyGUID[MAX_ACTIVE_LACKEY]; uint8 LackeysKilled; uint8 PlayersKilled; @@ -114,10 +111,6 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI uint32 DispelTimer; uint32 ResetTimer; - uint32 CombatPulseTimer; // Periodically puts all players in the instance in combat - - bool Heroic; - void Reset() { LackeysKilled = 0; @@ -130,10 +123,7 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI DispelTimer = 7500; ResetTimer = 5000; - CombatPulseTimer = 5000; - - SummonAdds(); - CheckAdds(); + InitializeLackeys(); if (pInstance) { @@ -146,54 +136,59 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI { DoScriptText(SAY_AGGRO, m_creature); - for(uint8 i = 0; i < Adds.size(); ++i) - if(Unit* pAdd = Unit::GetUnit(*m_creature, Adds[i]->guid)) - pAdd->AddThreat(who, 1.0f); - } - - void SummonAdds() - { - if(!Adds.empty()) - return; - - std::vector<uint32> AddList; - for(uint8 i = 0; i < 8; ++i) - AddList.push_back(AddEntry[i]); - - while(AddList.size() > 4) - AddList.erase(AddList.begin() + rand()%AddList.size()); - - for(uint8 i = 0; i < AddList.size(); ++i) + for(uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i) { - Creature* pAdd = m_creature->SummonCreature(AddList[i], LackeyLocations[i][0], LackeyLocations[i][1], POS_Z, ORIENT, TEMPSUMMON_DEAD_DESPAWN, 0); - if (pAdd) + if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[i])) { - Add* nAdd = new Add(AddList[i], pAdd->GetGUID()); - Adds.push_back(nAdd); + if (!pAdd->getVictim()) + { + who->SetInCombatWith(pAdd); + pAdd->AddThreat(who, 0.0f); + } } } } - void CheckAdds() + void InitializeLackeys() { - if (Adds.empty()) - return; + uint8 j = 0; - uint32 n = 0; - for(std::vector<Add*>::iterator i = Adds.begin(); i != Adds.end(); ++i, ++n) + //it's empty, so first time + if (LackeyEntryList.empty()) { - Creature* pAdd = (Unit::GetCreature(*m_creature, (*i)->guid)); - if(pAdd && pAdd->isAlive()) + //pre-allocate size for speed + LackeyEntryList.resize((sizeof(m_auiAddEntries) / sizeof(uint32))); + + //fill vector array with entries from creature array + for(uint8 i = 0; i < LackeyEntryList.size(); ++i) + LackeyEntryList[i] = m_auiAddEntries[i]; + + //remove random entries + while(LackeyEntryList.size() > MAX_ACTIVE_LACKEY) + LackeyEntryList.erase(LackeyEntryList.begin() + rand()%LackeyEntryList.size()); + + //summon all the remaining in vector + for(std::vector<uint32>::iterator itr = LackeyEntryList.begin(); itr != LackeyEntryList.end(); ++itr) { - pAdd->AI()->EnterEvadeMode(); // Force them out of combat and reset if they are in combat. + if (Creature* pAdd = m_creature->SummonCreature((*itr), LackeyLocations[j][0], LackeyLocations[j][1], fZLocation, fOrientation, TEMPSUMMON_CORPSE_DESPAWN, 0)) + m_auiLackeyGUID[j] = pAdd->GetGUID(); + + ++j; } - else + } + else + { + for(std::vector<uint32>::iterator itr = LackeyEntryList.begin(); itr != LackeyEntryList.end(); ++itr) { - pAdd = m_creature->SummonCreature((*i)->entry, LackeyLocations[n][0], LackeyLocations[n][1], POS_Z, ORIENT, TEMPSUMMON_DEAD_DESPAWN, 0); - if(pAdd) - (*i)->guid = pAdd->GetGUID(); - else - (*i)->guid = 0; + Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[j]); + + //object already removed, not exist + if (!pAdd) + { + if (Creature* pAdd = m_creature->SummonCreature((*itr), LackeyLocations[j][0], LackeyLocations[j][1], fZLocation, fOrientation, TEMPSUMMON_CORPSE_DESPAWN, 0)) + m_auiLackeyGUID[j] = pAdd->GetGUID(); + } + ++j; } } } @@ -264,10 +259,14 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI { uint32 health = m_creature->GetHealth(); Unit* target = m_creature; - for(uint8 i = 0; i < Adds.size(); ++i) - if (Unit* pAdd = Unit::GetUnit(*m_creature, Adds[i]->guid)) + for(uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i) + { + if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[i])) + { if (pAdd->isAlive() && pAdd->GetHealth() < health) target = pAdd; + } + } DoCast(target, SPELL_FLASH_HEAL); HealTimer = 15000; @@ -276,12 +275,14 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI if (RenewTimer < diff) { Unit* target = m_creature; + if (rand()%2 == 1) { - std::vector<Add*>::iterator itr = Adds.begin() + rand()%Adds.size(); - Unit* pAdd = Unit::GetUnit(*m_creature, (*itr)->guid); - if (pAdd && pAdd->isAlive()) - target = pAdd; + if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[rand()%MAX_ACTIVE_LACKEY])) + { + if (pAdd->isAlive()) + target = pAdd; + } } DoCast(target,Heroic ? SPELL_RENEW_HEROIC : SPELL_RENEW_NORMAL); RenewTimer = 5000; @@ -290,13 +291,16 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI if(ShieldTimer < diff) { Unit* target = m_creature; + if (rand()%2 == 1) { - std::vector<Add*>::iterator itr = Adds.begin() + rand()%Adds.size(); - if (Unit* pAdd = Unit::GetUnit(*m_creature, (*itr)->guid)) - if (!pAdd->HasAura(SPELL_SHIELD) && pAdd->isAlive()) + if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[rand()%MAX_ACTIVE_LACKEY])) + { + if (pAdd->isAlive() && !pAdd->HasAura(SPELL_SHIELD)) target = pAdd; + } } + DoCast(target, SPELL_SHIELD); ShieldTimer = 7500; }else ShieldTimer -= diff; @@ -305,48 +309,39 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI { Unit* target = NULL; bool friendly = false; + if (rand()%2 == 1) target = SelectUnit(SELECT_TARGET_RANDOM, 0); else { friendly = true; + if (rand()%2 == 1) target = m_creature; else { - std::vector<Add*>::iterator itr = Adds.begin() + rand()%Adds.size(); - Unit* pAdd = Unit::GetUnit(*m_creature, (*itr)->guid); - if (pAdd && pAdd->isAlive()) - target = pAdd; + if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[rand()%MAX_ACTIVE_LACKEY])) + { + if (pAdd->isAlive()) + target = pAdd; + } } } + if (target) - { DoCast(target, SPELL_DISPEL_MAGIC); - DispelTimer = 12000; - } + + DispelTimer = 12000; }else DispelTimer -= diff; if (SWPainTimer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0),Heroic ? SPELL_SW_PAIN_HEROIC : SPELL_SW_PAIN_NORMAL); + if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(pTarget, Heroic ? SPELL_SW_PAIN_HEROIC : SPELL_SW_PAIN_NORMAL); + SWPainTimer = 10000; }else SWPainTimer -= diff; - /* - if(CombatPulseTimer < diff) - { - DoZoneInCombat(); - for(uint8 i = 0; i < Adds.size(); ++i) - { - if(Unit* pAdd = Unit::GetUnit(*m_creature, Add[i]->guid)) - if(pAdd->isAlive()) - DoZoneInCombat(pAdd); - } - - CombatPulseTimer = 10000; - }else CombatPulseTimer -= diff;*/ - DoMeleeAttackIfReady(); } }; @@ -357,15 +352,14 @@ struct TRINITY_DLL_DECL boss_priestess_guestAI : public ScriptedAI { boss_priestess_guestAI(Creature* c) : ScriptedAI(c) { - Group.clear(); pInstance = c->GetInstanceData(); + memset(&m_auiLackeyGUIDs, 0, sizeof(m_auiLackeyGUIDs)); AcquireGUIDs(); } ScriptedInstance* pInstance; - std::vector<Add*> Group; - + uint64 m_auiLackeyGUIDs[MAX_ACTIVE_LACKEY]; uint32 ResetThreatTimer; bool UsedPotion; @@ -373,7 +367,6 @@ struct TRINITY_DLL_DECL boss_priestess_guestAI : public ScriptedAI void Reset() { UsedPotion = false; - ResetThreatTimer = 5000 + rand()%15000; // These guys like to switch targets often, and are not meant to be tanked. } @@ -387,8 +380,7 @@ struct TRINITY_DLL_DECL boss_priestess_guestAI : public ScriptedAI return; } - Creature* Delrissa = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_DELRISSA))); - if (Delrissa) + if (Creature* Delrissa = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_DELRISSA)))) { pInstance->SetData(DATA_DELRISSA_DEATH_COUNT, 1); @@ -407,8 +399,7 @@ struct TRINITY_DLL_DECL boss_priestess_guestAI : public ScriptedAI return; } - Creature* Delrissa = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_DELRISSA))); - if (Delrissa) + if (Creature* Delrissa = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_DELRISSA)))) Delrissa->AI()->KilledUnit(victim); } @@ -420,12 +411,10 @@ struct TRINITY_DLL_DECL boss_priestess_guestAI : public ScriptedAI return; } - Creature* Delrissa = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_DELRISSA))); - if (Delrissa) + if (Creature* Delrissa = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_DELRISSA)))) { - Group = CAST_AI(boss_priestess_delrissaAI, Delrissa->AI())->Adds; - Add* dAdd = new Add(Delrissa->GetEntry(), Delrissa->GetGUID()); - Group.push_back(dAdd); + for(uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i) + m_auiLackeyGUIDs[i] = ((boss_priestess_delrissaAI*)Delrissa->AI())->m_auiLackeyGUID[i]; } } @@ -486,13 +475,18 @@ struct TRINITY_DLL_DECL boss_kagani_nightstrikeAI : public boss_priestess_guestA if (Vanish_Timer < diff) { - m_creature->SetVisibility(VISIBILITY_OFF); // ...? Hacklike DoCast(m_creature, SPELL_VANISH); + + Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0); + + DoResetThreat(); + + if (pUnit) + m_creature->AddThreat(pUnit, 1000.0f); + InVanish = true; Vanish_Timer = 30000; Wait_Timer = 10000; - DoResetThreat(); - m_creature->AddThreat(SelectUnit(SELECT_TARGET_RANDOM, 0), 1000.0f); }else Vanish_Timer -= diff; if (InVanish) @@ -626,19 +620,25 @@ struct TRINITY_DLL_DECL boss_ellris_duskhallowAI : public boss_priestess_guestAI if (Seed_of_Corruption_Timer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_SEED_OF_CORRUPTION); + if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(pUnit, SPELL_SEED_OF_CORRUPTION); + Seed_of_Corruption_Timer = 10000; }else Seed_of_Corruption_Timer -= diff; if (Curse_of_Agony_Timer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_CURSE_OF_AGONY); + if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(pUnit, SPELL_CURSE_OF_AGONY); + Curse_of_Agony_Timer = 13000; }else Curse_of_Agony_Timer -= diff; if (Fear_Timer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_FEAR); + if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(pUnit, SPELL_FEAR); + Fear_Timer = 10000; }else Fear_Timer -= diff; @@ -764,7 +764,9 @@ struct TRINITY_DLL_DECL boss_yazzaiAI : public boss_priestess_guestAI if (Blizzard_Timer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_BLIZZARD); + if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(pUnit, SPELL_BLIZZARD); + Blizzard_Timer = 8000; }else Blizzard_Timer -= diff; @@ -878,7 +880,10 @@ struct TRINITY_DLL_DECL boss_warlord_salarisAI : public boss_priestess_guestAI //if nobody is in melee range than try to use Intercept if (!InMeleeRange) - DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_INTERCEPT_STUN); + { + if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(pUnit, SPELL_INTERCEPT_STUN); + } Intercept_Stun_Timer = 10000; }else Intercept_Stun_Timer -= diff; @@ -925,7 +930,7 @@ struct TRINITY_DLL_DECL boss_warlord_salarisAI : public boss_priestess_guestAI #define SPELL_WING_CLIP 44286 #define SPELL_FREEZING_TRAP 44136 -#define CREATURE_SLIVER 24552 +#define NPC_SLIVER 24552 /*struct TRINITY_DLL_DECL mob_sliverAI : public ScriptedAI { @@ -945,10 +950,9 @@ struct TRINITY_DLL_DECL boss_warlord_salarisAI : public boss_priestess_guestAI struct TRINITY_DLL_DECL boss_garaxxasAI : public boss_priestess_guestAI { //Hunter - boss_garaxxasAI(Creature *c) : boss_priestess_guestAI(c) {} + boss_garaxxasAI(Creature *c) : boss_priestess_guestAI(c) { m_uiPetGUID = 0; } - //uint64 SliverGUID; - bool HasSummonedSliver; + uint64 m_uiPetGUID; uint32 Aimed_Shot_Timer; uint32 Shoot_Timer; @@ -959,9 +963,6 @@ struct TRINITY_DLL_DECL boss_garaxxasAI : public boss_priestess_guestAI void Reset() { - //SliverGUID = 0; - HasSummonedSliver = false; - Aimed_Shot_Timer = 6000; Shoot_Timer = 2500; Concussive_Shot_Timer = 8000; @@ -969,9 +970,18 @@ struct TRINITY_DLL_DECL boss_garaxxasAI : public boss_priestess_guestAI Wing_Clip_Timer = 4000; Freezing_Trap_Timer = 15000; + Unit* pPet = Unit::GetUnit(*m_creature,m_uiPetGUID); + if (!pPet) + m_creature->SummonCreature(NPC_SLIVER, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0); + boss_priestess_guestAI::Reset(); } + void JustSummoned(Creature* pSummoned) + { + m_uiPetGUID = pSummoned->GetGUID(); + } + void JustDied(Unit* killer) { boss_priestess_guestAI::JustDied(killer); @@ -979,17 +989,6 @@ struct TRINITY_DLL_DECL boss_garaxxasAI : public boss_priestess_guestAI void UpdateAI(const uint32 diff) { - if (!HasSummonedSliver) - { - Creature* Sliver = m_creature->SummonCreature(CREATURE_SLIVER, 0, 0, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); - if (Sliver) - { - //CAST_AI(mob_sliverAI, Sliver->AI())->GaraxxasGUID = m_creature->GetGUID(); - //SliverGUID = Sliver->GetGUID(); - HasSummonedSliver = true; - } - } - if (!UpdateVictim()) return; @@ -1111,7 +1110,9 @@ struct TRINITY_DLL_DECL boss_apokoAI : public boss_priestess_guestAI if (Purge_Timer < diff) { - DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_PURGE); + if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0)) + DoCast(pUnit, SPELL_PURGE); + Purge_Timer = 15000; }else Purge_Timer -= diff; @@ -1198,9 +1199,9 @@ struct TRINITY_DLL_DECL boss_zelfanAI : public boss_priestess_guestAI if (Recombobulate_Timer < diff) { - for(uint8 i = 0; i < Group.size(); ++i) + for(uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i) { - if (Unit* pAdd = Unit::GetUnit(*m_creature, Group[i]->guid)) + if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUIDs[i])) { if (pAdd->IsPolymorphed()) { @@ -1209,6 +1210,7 @@ struct TRINITY_DLL_DECL boss_zelfanAI : public boss_priestess_guestAI } } } + Recombobulate_Timer = 2000; }else Recombobulate_Timer -= diff; if (High_Explosive_Sheep_Timer < diff) 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 77d0da94a1b..3e32645bc69 100644 --- a/src/bindings/scripts/scripts/zone/molten_core/boss_ragnaros.cpp +++ b/src/bindings/scripts/scripts/zone/molten_core/boss_ragnaros.cpp @@ -212,23 +212,17 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public Scripted_NoMovementAI m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE); - Unit* target = NULL; - target = SelectUnit(SELECT_TARGET_RANDOM,0); - if (!HasSubmergedOnce) { DoScriptText(SAY_REINFORCEMENTS1, m_creature); // summon 10 elementals - Unit* target = NULL; - for(int i = 0; i < 9;i++) + for(int i = 0; i < 9; ++i) { - target = SelectUnit(SELECT_TARGET_RANDOM,0); - if(target) + if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0)) { - Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000); - if(Summoned) - (Summoned->AI())->AttackStart(target); + if (Creature* pSummoned = m_creature->SummonCreature(12143,pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(),0.0f,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000)) + pSummoned->AI()->AttackStart(pTarget); } } @@ -237,19 +231,17 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public Scripted_NoMovementAI DoCast(m_creature,SPELL_RAGSUBMERGE); Attack_Timer = 90000; - }else + } + else { DoScriptText(SAY_REINFORCEMENTS2, m_creature); - Unit* target = NULL; - for(int i = 0; i < 9;i++) + for(int i = 0; i < 9; ++i) { - target = SelectUnit(SELECT_TARGET_RANDOM,0); - if(target) + if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0)) { - Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000); - if(Summoned) - (Summoned->AI())->AttackStart(target); + if (Creature* pSummoned = m_creature->SummonCreature(12143,pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(),0.0f,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000)) + pSummoned->AI()->AttackStart(pTarget); } } @@ -270,7 +262,8 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public Scripted_NoMovementAI m_creature->AttackerStateUpdate(m_creature->getVictim()); m_creature->resetAttackTimer(); } - }else + } + else { //MagmaBurst_Timer if (MagmaBurst_Timer < diff) diff --git a/src/bindings/scripts/scripts/zone/molten_core/molten_core.cpp b/src/bindings/scripts/scripts/zone/molten_core/molten_core.cpp index d25ddc7631c..33d213b22fa 100644 --- a/src/bindings/scripts/scripts/zone/molten_core/molten_core.cpp +++ b/src/bindings/scripts/scripts/zone/molten_core/molten_core.cpp @@ -49,7 +49,7 @@ CreatureAI* GetAI_mob_ancient_core_hound(Creature *_Creature) ai->Spell[0].First_Cast = 10000; ai->Spell[0].Cast_Target_Type = CAST_HOSTILE_TARGET; - uint32 RandDebuff; + uint32 RandDebuff = 0; switch(rand()%6) { case 0 : RandDebuff = SPELL_GROUND_STOMP; break; diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp index 46679f0df5d..cd4dfee272f 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp @@ -33,7 +33,7 @@ struct TRINITY_DLL_DECL boss_anubrekhanAI : public BossAI { - boss_anubrekhanAI(Creature *c) : BossAI(c, BOSS_ANUBREKHAN) {} + boss_anubrekhanAI(Creature *c) : BossAI(c, BOSS_ANUBREKHAN) { HasTaunted = false; } bool HasTaunted; diff --git a/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp b/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp index d86a41990b9..f9ea42b5159 100644 --- a/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp +++ b/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp @@ -51,7 +51,7 @@ bool GossipHello_npc_archmage_malin(Player *player, Creature *_Creature) bool GossipSelect_npc_archmage_malin(Player *player, Creature *_Creature, uint32 sender, uint32 action) { - if(action = GOSSIP_ACTION_INFO_DEF) + if (action == GOSSIP_ACTION_INFO_DEF) { player->CLOSE_GOSSIP_MENU(); _Creature->CastSpell(player, 42711, true); diff --git a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp index 523b117181c..03977287d71 100644 --- a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp +++ b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp @@ -76,11 +76,11 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance void Initialize() { - for(uint8 i = 0; i < ENCOUNTERS; i++) + for(uint8 i = 0; i < ENCOUNTERS; ++i) Encounter[i] = NOT_STARTED; - for(uint8 i = 0; i < 5; i++) - IsSilverHandDead[5] = false; + for(uint8 i = 0; i < 5; ++i) + IsSilverHandDead[i] = false; BaronRun_Timer = 0; SlaugtherSquare_Timer = 0; 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 533d67d70be..6bb2bd9511e 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 @@ -189,7 +189,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI float Portal_Y(float x, float radius) { - float z; + float z = 0.0f; switch(rand()%2) { diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp index ec1756083ce..aeb44a7bc3d 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp @@ -913,8 +913,7 @@ struct TRINITY_DLL_DECL eye_tentacleAI : public Scripted_NoMovementAI { eye_tentacleAI(Creature *c) : Scripted_NoMovementAI(c) { - Unit* p = DoSpawnCreature(MOB_SMALL_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0); - if (p) + if (Unit* p = DoSpawnCreature(MOB_SMALL_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0)) Portal = p->GetGUID(); } @@ -924,8 +923,7 @@ struct TRINITY_DLL_DECL eye_tentacleAI : public Scripted_NoMovementAI void JustDied(Unit* who) { - Unit* p = Unit::GetUnit(*m_creature, Portal); - if (p) + if (Unit* p = Unit::GetUnit(*m_creature, Portal)) p->DealDamage(p, p->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false); } @@ -960,8 +958,7 @@ struct TRINITY_DLL_DECL eye_tentacleAI : public Scripted_NoMovementAI //MindflayTimer if (MindflayTimer < diff) { - Unit* target = NULL; - target = SelectUnit(SELECT_TARGET_RANDOM,0); + Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0); if (target && !target->HasAura(SPELL_DIGESTIVE_ACID)) DoCast(target,SPELL_MIND_FLAY); @@ -975,8 +972,7 @@ struct TRINITY_DLL_DECL claw_tentacleAI : public Scripted_NoMovementAI { claw_tentacleAI(Creature *c) : Scripted_NoMovementAI(c) { - Unit* p = DoSpawnCreature(MOB_SMALL_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0); - if (p) + if (Unit* p = DoSpawnCreature(MOB_SMALL_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0)) Portal = p->GetGUID(); } @@ -987,8 +983,7 @@ struct TRINITY_DLL_DECL claw_tentacleAI : public Scripted_NoMovementAI void JustDied(Unit* who) { - Unit* p = Unit::GetUnit(*m_creature, Portal); - if (p) + if (Unit* p = Unit::GetUnit(*m_creature, Portal)) p->DealDamage(p, p->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false); } @@ -1015,15 +1010,13 @@ struct TRINITY_DLL_DECL claw_tentacleAI : public Scripted_NoMovementAI if (!m_creature->IsWithinMeleeRange(m_creature->getVictim())) if (EvadeTimer < diff) { - Unit* p = Unit::GetUnit(*m_creature, Portal); - if (p) + if (Unit* p = Unit::GetUnit(*m_creature, Portal)) p->DealDamage(p, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false); //Dissapear and reappear at new position m_creature->SetVisibility(VISIBILITY_OFF); - Unit* target = NULL; - target = SelectUnit(SELECT_TARGET_RANDOM,0); + Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0); if (!target) { m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false); @@ -1033,8 +1026,7 @@ struct TRINITY_DLL_DECL claw_tentacleAI : public Scripted_NoMovementAI if (!target->HasAura(SPELL_DIGESTIVE_ACID)) { m_creature->GetMap()->CreatureRelocation(m_creature, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0); - Unit* p = DoSpawnCreature(MOB_SMALL_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0); - if (p) + if (Unit* p = DoSpawnCreature(MOB_SMALL_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0)) Portal = p->GetGUID(); GroundRuptureTimer = 500; @@ -1069,8 +1061,7 @@ struct TRINITY_DLL_DECL giant_claw_tentacleAI : public Scripted_NoMovementAI { giant_claw_tentacleAI(Creature *c) : Scripted_NoMovementAI(c) { - Unit* p = DoSpawnCreature(MOB_GIANT_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0); - if (p) + if (Unit* p = DoSpawnCreature(MOB_GIANT_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0)) Portal = p->GetGUID(); } @@ -1082,8 +1073,7 @@ struct TRINITY_DLL_DECL giant_claw_tentacleAI : public Scripted_NoMovementAI void JustDied(Unit* who) { - Unit* p = Unit::GetUnit(*m_creature, Portal); - if (p) + if (Unit* p = Unit::GetUnit(*m_creature, Portal)) p->DealDamage(p, p->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false); } @@ -1111,15 +1101,13 @@ struct TRINITY_DLL_DECL giant_claw_tentacleAI : public Scripted_NoMovementAI if (!m_creature->IsWithinMeleeRange(m_creature->getVictim())) if (EvadeTimer < diff) { - Unit* p = Unit::GetUnit(*m_creature, Portal); - if (p) + if (Unit* p = Unit::GetUnit(*m_creature, Portal)) p->DealDamage(p, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false); //Dissapear and reappear at new position m_creature->SetVisibility(VISIBILITY_OFF); - Unit* target = NULL; - target = SelectUnit(SELECT_TARGET_RANDOM, 0); + Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0); if (!target) { m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false); @@ -1129,8 +1117,7 @@ struct TRINITY_DLL_DECL giant_claw_tentacleAI : public Scripted_NoMovementAI if (!target->HasAura(SPELL_DIGESTIVE_ACID)) { m_creature->GetMap()->CreatureRelocation(m_creature, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0); - Unit* p = DoSpawnCreature(MOB_GIANT_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0); - if (p) + if (Unit* p = DoSpawnCreature(MOB_GIANT_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0)) Portal = p->GetGUID(); GroundRuptureTimer = 500; @@ -1173,8 +1160,7 @@ struct TRINITY_DLL_DECL giant_eye_tentacleAI : public Scripted_NoMovementAI { giant_eye_tentacleAI(Creature *c) : Scripted_NoMovementAI(c) { - Unit* p = DoSpawnCreature(MOB_GIANT_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0); - if (p) + if (Unit* p = DoSpawnCreature(MOB_GIANT_PORTAL,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN, 0)) Portal = p->GetGUID(); } @@ -1183,8 +1169,7 @@ struct TRINITY_DLL_DECL giant_eye_tentacleAI : public Scripted_NoMovementAI void JustDied(Unit* who) { - Unit* p = Unit::GetUnit(*m_creature, Portal); - if (p) + if (Unit* p = Unit::GetUnit(*m_creature, Portal)) p->DealDamage(p, p->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false); } @@ -1208,8 +1193,7 @@ struct TRINITY_DLL_DECL giant_eye_tentacleAI : public Scripted_NoMovementAI //BeamTimer if (BeamTimer < diff) { - Unit* target = NULL; - target = SelectUnit(SELECT_TARGET_RANDOM,0); + Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0); if (target && !target->HasAura(SPELL_DIGESTIVE_ACID)) DoCast(target,SPELL_GREEN_BEAM); |