diff options
author | Blaymoira <none@none> | 2009-01-21 19:53:51 +0100 |
---|---|---|
committer | Blaymoira <none@none> | 2009-01-21 19:53:51 +0100 |
commit | 1f6bff8120bfbc0577960825d7c8389aaaa803a0 (patch) | |
tree | 4430e2a073db3f7056ab3b942e3cfbd8e42796a9 /src | |
parent | 8dc780bfda3878269e9f78fc8acfe1a6e98c541a (diff) |
*Cleanup in Kael'thas script
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp | 72 |
1 files changed, 48 insertions, 24 deletions
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 40a97c548bc..d46f7cf519f 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 @@ -270,7 +270,7 @@ struct TRINITY_DLL_DECL advisorbase_ai : public ScriptedAI //Kael'thas AI struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI { - boss_kaelthasAI(Creature *c) : ScriptedAI(c), Summons(m_creature) + boss_kaelthasAI(Creature *c) : ScriptedAI(c) { pInstance = ((ScriptedInstance*)c->GetInstanceData()); AdvisorGuid[0] = 0; @@ -281,7 +281,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI } ScriptedInstance* pInstance; - SummonList Summons; + + std::list<uint64> Phoenix; uint32 Fireball_Timer; uint32 ArcaneDisruption_Timer; @@ -333,6 +334,31 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI } } + void CleanPhoenix() + { + CellPair pair(Trinity::ComputeCellPair(m_creature->GetPositionX(), m_creature->GetPositionY())); + Cell cell(pair); + cell.data.Part.reserved = ALL_DISTRICT; + cell.SetNoCreate(); + + std::list<Creature*> PhoenixList; + + Trinity::AllCreaturesOfEntryInRange check(m_creature, PHOENIX, 50); + Trinity::CreatureListSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(PhoenixList, check); + TypeContainerVisitor<Trinity::CreatureListSearcher<Trinity::AllCreaturesOfEntryInRange>, GridTypeMapContainer> visitor(searcher); + + CellLock<GridReadGuard> cell_lock(cell, pair); + cell_lock->Visit(cell_lock, visitor, *(m_creature->GetMap())); + + if(!PhoenixList.empty()) + { + for(std::list<Creature*>::iterator itr = PhoenixList.begin(); itr != PhoenixList.end(); ++itr) + { + (*itr)->RemoveFromWorld(); + } + } + } + void Reset() { Fireball_Timer = 5000+rand()%10000; @@ -354,7 +380,9 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI if(InCombat) PrepareAdvisors(); + DeleteLegs(); + CleanPhoenix(); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -364,14 +392,12 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI if(pInstance) pInstance->SetData(DATA_KAELTHASEVENT, NOT_STARTED); - - Summons.DespawnEntry(PHOENIX); } void PrepareAdvisors() { Creature *pCreature; - for(uint8 i = 0; i < 4; i++) + for(uint8 i = 0; i < 4; ++i) { pCreature = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[i])); if(pCreature) @@ -445,7 +471,6 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI summoned->setFaction(m_creature->getFaction()); Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0); summoned->AI()->AttackStart(target); - Summons.Summon(summoned); } } @@ -462,7 +487,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI pInstance->SetData(DATA_KAELTHASEVENT, DONE); Creature *pCreature; - for(uint8 i = 0; i < 4; i++) + for(uint8 i = 0; i < 4; ++i) { pCreature = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[i])); if(pCreature) @@ -488,7 +513,6 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI float attackRadius = m_creature->GetAttackDistance(who); if (Phase >= 4 && m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) { - //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); AttackStart(who); } else if(who->isAlive()) @@ -524,7 +548,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI //start advisor within 7 seconds Phase_Timer = 7000; - PhaseSubphase++; + ++PhaseSubphase; }else Phase_Timer -= diff; break; @@ -544,7 +568,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Advisor->AI()->AttackStart(target); } - PhaseSubphase++; + ++PhaseSubphase; }else Phase_Timer -= diff; break; @@ -558,7 +582,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI //start advisor within 12.5 seconds Phase_Timer = 12500; - PhaseSubphase++; + ++PhaseSubphase; } break; @@ -578,7 +602,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Advisor->AI()->AttackStart(target); } - PhaseSubphase++; + ++PhaseSubphase; }else Phase_Timer -= diff; break; @@ -592,7 +616,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI //start advisor within 7 seconds Phase_Timer = 7000; - PhaseSubphase++; + ++PhaseSubphase; } break; @@ -612,7 +636,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Advisor->AI()->AttackStart(target); } - PhaseSubphase++; + ++PhaseSubphase; }else Phase_Timer -= diff; break; @@ -626,7 +650,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI //start advisor within 8.4 seconds Phase_Timer = 8400; - PhaseSubphase++; + ++PhaseSubphase; } break; @@ -648,7 +672,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Phase_Timer = 3000; - PhaseSubphase++; + ++PhaseSubphase; }else Phase_Timer -= diff; break; @@ -683,13 +707,13 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI if (PhaseSubphase == 1) { Creature* Weapon; - for (uint32 i = 0; i < 7; i++) + for (uint32 i = 0; i < 7; ++i) { Unit* Target = SelectUnit(SELECT_TARGET_RANDOM, 0); Weapon = m_creature->SummonCreature(((uint32)KaelthasWeapons[i][0]),KaelthasWeapons[i][1],KaelthasWeapons[i][2],KaelthasWeapons[i][3],0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000); if (!Weapon) - error_log("SD2: Kael'thas weapon %i could not be spawned", i); + error_log("STSCR: Kael'thas weapon %i could not be spawned", i); else { Weapon->setFaction(m_creature->getFaction()); @@ -722,11 +746,11 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Unit* Target = SelectUnit(SELECT_TARGET_RANDOM, 0); Creature* Advisor; - for (uint32 i = 0; i < 4; i++) + for (uint32 i = 0; i < 4; ++i) { Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[i])); if (!Advisor) - error_log("SD2: Kael'Thas Advisor %u does not exist. Possibly despawned? Incorrectly Killed?", i); + error_log("TSCR: Kael'Thas Advisor %u does not exist. Possibly despawned? Incorrectly Killed?", i); else ((advisorbase_ai*)Advisor->AI())->Revive(Target); } @@ -811,7 +835,7 @@ 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("SD2: Kael'Thas mind control not supported."); + debug_log("TSCR: Kael'Thas mind control not supported."); DoCast(target, SPELL_MIND_CONTROL); } @@ -870,7 +894,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI if (PyrosCasted < 3 && Check_Timer < diff) { DoCast(m_creature->getVictim(), SPELL_PYROBLAST); - PyrosCasted++; + ++PyrosCasted; Check_Timer = 4400; }else Check_Timer -= diff; @@ -958,7 +982,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI } } GravityLapse_Timer = 10000; - GravityLapse_Phase++; + ++GravityLapse_Phase; break; case 2: @@ -967,7 +991,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI DoCast(m_creature, SPELL_NETHER_VAPOR); GravityLapse_Timer = 20000; - GravityLapse_Phase++; + ++GravityLapse_Phase; break; case 3: |