aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortartalo <none@none>2009-11-05 19:06:08 +0100
committertartalo <none@none>2009-11-05 19:06:08 +0100
commit3d337232c9be74b06b67ddbf312b861cfe0f1e62 (patch)
tree33de99e467f5a424a976b8ca9030f7915a71df85
parentc5c6013ced225204c2cf1818a25e44255b3fa535 (diff)
Drak'Tharon Keep, Trollgore: Fix name collision
Halls of Stone: Chest handling & fix typo, by trazom. Closes #79 Halls of Stone, Sjonnir the Ironshaper: Despawn adds on reset, Attempt to fix add merging --HG-- branch : trunk
-rw-r--r--src/bindings/scripts/scripts/northrend/draktharon_keep/boss_trollgore.cpp4
-rw-r--r--src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/boss_sjonnir.cpp102
-rw-r--r--src/bindings/scripts/scripts/northrend/ulduar/halls_of_stone/instance_halls_of_stone.cpp18
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;
}