diff options
Diffstat (limited to 'src')
3 files changed, 61 insertions, 63 deletions
diff --git a/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_trollgore.cpp b/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_trollgore.cpp index ec211ecde86..db33d3887d2 100644 --- a/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_trollgore.cpp +++ b/src/bindings/scripts/scripts/northrend/draktharon_keep/boss_trollgore.cpp @@ -59,7 +59,7 @@ enum Creatures NPC_DRAKKARI_INVADER_2 = 27709 }; -Position SpawnPoint = { -260.493011, -622.968018, 26.605301, 3.036870 }; +Position AddSpawnPoint = { -260.493011, -622.968018, 26.605301, 3.036870 }; struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI { @@ -118,7 +118,7 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI if (uiSpawnTimer < diff) { for (uint8 i = 0; i < urand(2,HEROIC(3,5)); ++i) - DoSpawnCreature(RAND(NPC_DRAKKARI_INVADER_1,NPC_DRAKKARI_INVADER_2), SpawnPoint.GetPositionX(), SpawnPoint.GetPositionY(), SpawnPoint.GetPositionZ(), SpawnPoint.GetOrientation(), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000); + DoSpawnCreature(RAND(NPC_DRAKKARI_INVADER_1,NPC_DRAKKARI_INVADER_2), AddSpawnPoint.GetPositionX(), AddSpawnPoint.GetPositionY(), AddSpawnPoint.GetPositionZ(), AddSpawnPoint.GetOrientation(), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000); uiSpawnTimer = urand(30000,40000); } else uiSpawnTimer -= diff; diff --git a/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp b/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp index afcf5f85580..2108ebae55b 100644 --- a/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp +++ b/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp @@ -14,42 +14,42 @@ update creature_template set scriptname = 'boss_sjonnir' where entry = ''; enum Spells { - SPELL_LIGHTING_RING = 51849, //Periodic Trigger (interval 2s) spell = 50841 - H_SPELL_LIGHTING_RING = 59861, //Periodic Trigger (interval 2s) spell = 59849 - SPELL_LIGHTING_RING_1 = 50840, //Periodic Trigger (interval 2s) spell = 50841 - H_SPELL_LIGHTING_RING_1 = 59848, //Periodic Trigger (interval 2s) spell = 59849 - SPELL_STATIC_CHARGE = 50834, //Periodic Trigger 2s interval, spell =50835 - H_SPELL_STATIC_CHARGE = 59846, //Periodic Trigger 2s interval, spell =50847 - SPELL_CHAIN_LIGHTING = 50830, - H_SPELL_CHAIN_LIGHTING = 59844, - SPELL_LIGHTING_SHIELD = 50831, - H_SPELL_LIGHTING_SHIELD = 59845, - SPELL_FRENZY = 28747 + SPELL_LIGHTING_RING = 51849, //Periodic Trigger (interval 2s) spell = 50841 + H_SPELL_LIGHTING_RING = 59861, //Periodic Trigger (interval 2s) spell = 59849 + SPELL_LIGHTING_RING_1 = 50840, //Periodic Trigger (interval 2s) spell = 50841 + H_SPELL_LIGHTING_RING_1 = 59848, //Periodic Trigger (interval 2s) spell = 59849 + SPELL_STATIC_CHARGE = 50834, //Periodic Trigger 2s interval, spell =50835 + H_SPELL_STATIC_CHARGE = 59846, //Periodic Trigger 2s interval, spell =50847 + SPELL_CHAIN_LIGHTING = 50830, + H_SPELL_CHAIN_LIGHTING = 59844, + SPELL_LIGHTING_SHIELD = 50831, + H_SPELL_LIGHTING_SHIELD = 59845, + SPELL_FRENZY = 28747 }; enum Yells { - SAY_AGGRO = -1603011, - SAY_SLAY_1 = -1603012, - SAY_SLAY_2 = -1603013, - SAY_SLAY_3 = -1603014, - SAY_DEATH = -1603015 + SAY_AGGRO = -1603011, + SAY_SLAY_1 = -1603012, + SAY_SLAY_2 = -1603013, + SAY_SLAY_3 = -1603014, + SAY_DEATH = -1603015 }; -#define EMOTE_GENERIC_FRENZY -1000002 +#define EMOTE_GENERIC_FRENZY -1000002 enum Creatures { - CREATURE_FORGED_IRON_TROGG = 27979, - CREATURE_MALFORMED_OOZE = 27981, - CREATURE_FORGED_IRON_DWARF = 27982, - CREATURE_IRON_SLUDGE = 28165 + CREATURE_FORGED_IRON_TROGG = 27979, + CREATURE_MALFORMED_OOZE = 27981, + CREATURE_FORGED_IRON_DWARF = 27982, + CREATURE_IRON_SLUDGE = 28165 }; enum Misc { - DATA_TIME_BEFORE_OOZE = 150000, //2min 30 secs - ACHIEVEMENT_ABUSE_THE_OOZE = 2155 + DATA_TIME_BEFORE_OOZE = 150000, //2min 30 secs + ACHIEV_ABUSE_THE_OOZE = 2155 }; struct Locations @@ -67,7 +67,7 @@ static Locations CenterPoint = {1295.21, 667.157, 189.691}; struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI { - boss_sjonnirAI(Creature *c) : ScriptedAI(c) + boss_sjonnirAI(Creature *c) : ScriptedAI(c), lSummons(me) { pInstance = c->GetInstanceData(); } @@ -83,6 +83,8 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI uint32 uiEncounterTimer; uint32 uiKilledIronSludges; + SummonList lSummons; + ScriptedInstance* pInstance; void Reset() @@ -98,6 +100,8 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI uiFrenzyTimer = 300000; //5 minutes uiKilledIronSludges = 0; + lSummons.DespawnAll(); + if (pInstance) pInstance->SetData(DATA_SJONNIR_EVENT, NOT_STARTED); } @@ -175,29 +179,20 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI summon->GetMotionMaster()->MovePoint(0, CenterPoint.x, CenterPoint.y, CenterPoint.z); /*if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) summon->AI()->AttackStart(pTarget);*/ + lSummons.Summon(summon); } void JustDied(Unit* killer) { DoScriptText(SAY_DEATH, m_creature); - - if (HeroicMode && uiKilledIronSludges > 4) - { - AchievementEntry const *AchievAbuseTheOoze = GetAchievementStore()->LookupEntry(ACHIEVEMENT_ABUSE_THE_OOZE); - if (AchievAbuseTheOoze) - { - Map* pMap = m_creature->GetMap(); - if (pMap && pMap->IsDungeon()) - { - Map::PlayerList const &players = pMap->GetPlayers(); - for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - itr->getSource()->CompletedAchievement(AchievAbuseTheOoze); - } - } - } + lSummons.DespawnAll(); if (pInstance) + { pInstance->SetData(DATA_SJONNIR_EVENT, DONE); + if (HeroicMode && uiKilledIronSludges > 4) + pInstance->DoCompleteAchievement(ACHIEV_ABUSE_THE_OOZE); + } } void KilledUnit(Unit *victim) { @@ -222,41 +217,30 @@ struct TRINITY_DLL_DECL mob_malformed_oozeAI : public ScriptedAI mob_malformed_oozeAI(Creature *c) : ScriptedAI(c) {} uint32 uiMergeTimer; - bool bIsMerging; void Reset() { - uiMergeTimer = 5000; - bIsMerging = false; + uiMergeTimer = 10000; } void UpdateAI(const uint32 diff) { - if (bIsMerging) + if (uiMergeTimer <= diff) { - if (uiMergeTimer <= diff) + if (Creature* pTemp = m_creature->FindNearestCreature(CREATURE_MALFORMED_OOZE, 3.0f, true)) { - if (Creature* pTemp = m_creature->FindNearestCreature(CREATURE_MALFORMED_OOZE, 1.0f, true)) - { - DoSpawnCreature(CREATURE_IRON_SLUDGE, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000); - pTemp->DisappearAndDie(); - m_creature->DisappearAndDie(); - } else bIsMerging = false; - } else uiMergeTimer -= diff; - } + DoSpawnCreature(CREATURE_IRON_SLUDGE, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000); + pTemp->DisappearAndDie(); + m_creature->DisappearAndDie(); + } + uiMergeTimer = 3000; + } else uiMergeTimer -= diff; if (!UpdateVictim()) return; DoMeleeAttackIfReady(); } - - void MovementInform(uint32 type, uint32 id) - { - if(type != POINT_MOTION_TYPE) - return; - bIsMerging = true; - } }; CreatureAI* GetAI_mob_malformed_ooze(Creature* pCreature) diff --git a/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/instance_halls_of_stone.cpp b/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/instance_halls_of_stone.cpp index 1d0af37a36d..baa63a9342c 100644 --- a/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/instance_halls_of_stone.cpp +++ b/src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/instance_halls_of_stone.cpp @@ -10,6 +10,12 @@ 3- Sjonnir The Ironshaper */ +enum GameObjects +{ + GO_TRIBUNAL_CHEST = 190586, + GO_TRIBUNAL_CHEST_HERO = 193996 +}; + struct TRINITY_DLL_DECL instance_halls_of_stone : public ScriptedInstance { instance_halls_of_stone(Map* pMap) : ScriptedInstance(pMap) {Initialize();}; @@ -71,7 +77,7 @@ struct TRINITY_DLL_DECL instance_halls_of_stone : public ScriptedInstance case 27978: uiSjonnir = pCreature->GetGUID(); break; case 30897: uiMarnak = pCreature->GetGUID(); break; case 30898: uiKaddrak = pCreature->GetGUID(); break; - case 30099: uiAbedneum = pCreature->GetGUID(); break; + case 30899: uiAbedneum = pCreature->GetGUID(); break; case 28070: uiBrann = pCreature->GetGUID(); break; } } @@ -113,8 +119,11 @@ struct TRINITY_DLL_DECL instance_halls_of_stone : public ScriptedInstance case 193907: uiTribunalConsole = pGo->GetGUID(); break; - case 190586: + case GO_TRIBUNAL_CHEST: + case GO_TRIBUNAL_CHEST_HERO: uiTribunalChest = pGo->GetGUID(); + if (m_auiEncounter[2] == DONE) + pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_INTERACT_COND); break; case 191527: uiTribunalSkyFloor = pGo->GetGUID(); @@ -142,7 +151,12 @@ struct TRINITY_DLL_DECL instance_halls_of_stone : public ScriptedInstance case DATA_BRANN_EVENT: m_auiEncounter[2] = data; if (m_auiEncounter[2] == DONE) + { HandleGameObject(uiSjonnirDoor,true); + GameObject *pGo = instance->GetGameObject(uiTribunalChest); + if (pGo) + pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_INTERACT_COND); + } break; } |