diff options
-rw-r--r-- | src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp | 103 | ||||
-rw-r--r-- | src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp | 111 |
2 files changed, 113 insertions, 101 deletions
diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp b/src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp index 321952f2e60..00212ac1c42 100644 --- a/src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp +++ b/src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp @@ -17,16 +17,19 @@ /* ScriptData SDName: Boss_Tomb_Of_Seven SD%Complete: 50 -SDComment: Learning Smelt Dark Iron if tribute quest rewarded. Missing event and re-spawn GO Spectral Chalice +SDComment: Learning Smelt Dark Iron if tribute quest rewarded. Missing event. SDCategory: Blackrock Depths EndScriptData */ #include "precompiled.h" #include "def_blackrock_depths.h" -#define SPELL_SUNDERARMOR 24317 -#define SPELL_SHIELDBLOCK 12169 -#define SPELL_STRIKE 15580 +enum +{ + SPELL_SUNDERARMOR = 24317, + SPELL_SHIELDBLOCK = 12169, + SPELL_STRIKE = 15580 +}; struct TRINITY_DLL_DECL boss_angerrelAI : public ScriptedAI { @@ -102,9 +105,12 @@ CreatureAI* GetAI_boss_angerrel(Creature *_Creature) return new boss_angerrelAI (_Creature); } -#define SPELL_SINISTERSTRIKE 15581 -#define SPELL_BACKSTAB 15582 -#define SPELL_GOUGE 13579 +enum +{ + SPELL_SINISTERSTRIKE = 15581, + SPELL_BACKSTAB = 15582, + SPELL_GOUGE = 13579 +}; struct TRINITY_DLL_DECL boss_doperelAI : public ScriptedAI { @@ -180,9 +186,12 @@ CreatureAI* GetAI_boss_doperel(Creature *_Creature) return new boss_doperelAI (_Creature); } -#define SPELL_SHADOWBOLT 17483 //Not sure if right ID -#define SPELL_MANABURN 10876 -#define SPELL_SHADOWSHIELD 22417 +enum +{ + SPELL_SHADOWBOLT = 17483, //Not sure if right ID + SPELL_MANABURN = 10876, + SPELL_SHADOWSHIELD = 22417 +}; struct TRINITY_DLL_DECL boss_haterelAI : public ScriptedAI { @@ -271,10 +280,13 @@ CreatureAI* GetAI_boss_haterel(Creature *_Creature) return new boss_haterelAI (_Creature); } -#define SPELL_MINDBLAST 15587 -#define SPELL_HEAL 15586 -#define SPELL_PRAYEROFHEALING 15585 -#define SPELL_SHIELD 10901 +enum +{ + SPELL_MINDBLAST = 15587, + SPELL_HEAL = 15586, + SPELL_PRAYEROFHEALING = 15585, + SPELL_SHIELD = 10901 +}; struct TRINITY_DLL_DECL boss_vilerelAI : public ScriptedAI { @@ -359,11 +371,14 @@ CreatureAI* GetAI_boss_vilerel(Creature *_Creature) return new boss_vilerelAI (_Creature); } -#define SPELL_FROSTBOLT 16799 -#define SPELL_FROSTARMOR 15784 //This is actually a buff he gives himself -#define SPELL_BLIZZARD 19099 -#define SPELL_FROSTNOVA 15063 -#define SPELL_FROSTWARD 15004 +enum +{ + SPELL_FROSTBOLT = 16799, + SPELL_FROSTARMOR = 15784, //This is actually a buff he gives himself + SPELL_BLIZZARD = 19099, + SPELL_FROSTNOVA = 15063, + SPELL_FROSTWARD = 15004 +}; struct TRINITY_DLL_DECL boss_seethrelAI : public ScriptedAI { @@ -461,9 +476,12 @@ CreatureAI* GetAI_boss_seethrel(Creature *_Creature) return new boss_seethrelAI (_Creature); } -#define SPELL_HAMSTRING 9080 -#define SPELL_CLEAVE 15579 -#define SPELL_MORTALSTRIKE 15708 +enum +{ + SPELL_HAMSTRING = 9080, + SPELL_CLEAVE = 15579, + SPELL_MORTALSTRIKE = 15708 +}; struct TRINITY_DLL_DECL boss_gloomrelAI : public ScriptedAI { @@ -585,10 +603,14 @@ bool GossipSelect_boss_gloomrel(Player *player, Creature *_Creature, uint32 send return true; } -#define SPELL_SHADOWBOLTVOLLEY 17228 -#define SPELL_IMMOLATE 15505 -#define SPELL_CURSEOFWEAKNESS 17227 -#define SPELL_DEMONARMOR 11735 +enum +{ + SPELL_SHADOWBOLTVOLLEY = 17228, + SPELL_IMMOLATE = 15505, + SPELL_CURSEOFWEAKNESS = 17227, + SPELL_DEMONARMOR = 11735, + SPELL_SUMMON_VOIDWALKERS = 15092 +}; struct TRINITY_DLL_DECL boss_doomrelAI : public ScriptedAI { @@ -614,6 +636,10 @@ struct TRINITY_DLL_DECL boss_doomrelAI : public ScriptedAI Voidwalkers = false; m_creature->setFaction(FACTION_FRIEND); + + // was set before event start, so set again + m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2); + if(pInstance) if(pInstance->GetData(DATA_GHOSTKILL) >= 7) m_creature->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE); @@ -644,27 +670,6 @@ struct TRINITY_DLL_DECL boss_doomrelAI : public ScriptedAI pInstance->SetData(DATA_GHOSTKILL, 1); } - void SummonVoidwalkers(Unit* victim) - { - Rand = rand()%5; - switch (rand()%2) - { - case 0: RandX = 0 - Rand; break; - case 1: RandX = 0 + Rand; break; - } - Rand = 0; - Rand = rand()%5; - switch (rand()%2) - { - case 0: RandY = 0 - Rand; break; - case 1: RandY = 0 + Rand; break; - } - Rand = 0; - Summoned = DoSpawnCreature(16119, RandX, RandY, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000); - if(Summoned) - (Summoned->AI())->AttackStart(victim); - } - void UpdateAI(const uint32 diff) { if (!UpdateVictim() ) @@ -703,9 +708,7 @@ struct TRINITY_DLL_DECL boss_doomrelAI : public ScriptedAI //Summon Voidwalkers if (!Voidwalkers && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 51 ) { - SummonVoidwalkers(m_creature->getVictim()); - SummonVoidwalkers(m_creature->getVictim()); - SummonVoidwalkers(m_creature->getVictim()); + m_creature->CastSpell(m_creature->getVictim(), SPELL_SUMMON_VOIDWALKERS, true); Voidwalkers = true; } diff --git a/src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp b/src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp index 98439172b21..84d6d467f54 100644 --- a/src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp +++ b/src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp @@ -118,9 +118,6 @@ enum POINT_ID_LAND = 200 }; -//POS_SARTHARION_X = 3246.57, -//POS_SARTHARION_Y = 551.263, - struct Waypoint { float m_fX, m_fY, m_fZ; @@ -207,41 +204,26 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI m_bHasCalledShadron = false; m_bHasCalledVesperon = false; - if (m_pInstance) - { - if (!m_creature->isAlive()) - return; - - m_pInstance->SetData(TYPE_SARTHARION_EVENT, NOT_STARTED); - - //do dragons actually respawn like this? Commented for now, until confirmed. - - /*if (Unit* Temp1 = Unit::GetUnit((*m_creature),m_pInstance->GetData64(DATA_TENEBRON))) - if (Temp1->isDead()) - ((Creature*)Temp1)->Respawn(); - - if (Unit* Temp2 = Unit::GetUnit((*m_creature),m_pInstance->GetData64(DATA_SHADRON))) - if (Temp2->isDead()) - ((Creature*)Temp2)->Respawn(); - - if (Unit* Temp3 = Unit::GetUnit((*m_creature),m_pInstance->GetData64(DATA_VESPERON))) - if (Temp3->isDead()) - ((Creature*)Temp3)->Respawn();*/ - } - if (m_creature->HasAura(SPELL_TWILIGHT_REVENGE)) m_creature->RemoveAurasDueToSpell(SPELL_TWILIGHT_REVENGE); } + void JustReachedHome() + { + if (m_pInstance) + m_pInstance->SetData(TYPE_SARTHARION_EVENT, NOT_STARTED); + } + void Aggro(Unit* pWho) { DoScriptText(SAY_SARTHARION_AGGRO,m_creature); DoZoneInCombat(); if (m_pInstance) + { m_pInstance->SetData(TYPE_SARTHARION_EVENT, IN_PROGRESS); - - FetchDragons(); + FetchDragons(); + } } void JustDied(Unit* pKiller) @@ -355,13 +337,6 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI if (!UpdateVictim()) return; - //reset if out of his platform, must find better/faster way to do this - //if (m_creature->GetDistance2d(POS_SARTHARION_X, POS_SARTHARION_Y) > 55) - //{ - //EnterEvadeMode(); - //return; - //} - if (!m_bIsBerserk && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 10) { DoScriptText(SAY_SARTHARION_BERSERK,m_creature); @@ -376,7 +351,9 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI { DoCast(m_creature, SPELL_WILL_OF_SARTHARION); m_uiEnrageTimer = 0; - }else m_uiEnrageTimer -= uiDiff; + } + else + m_uiEnrageTimer -= uiDiff; } // flame tsunami @@ -384,7 +361,9 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI { SendFlameTsunami(); m_uiFlameTsunamiTimer = 30000; - }else m_uiFlameTsunamiTimer -= uiDiff; + } + else + m_uiFlameTsunamiTimer -= uiDiff; // flame breath if (m_uiFlameBreathTimer < uiDiff) @@ -392,21 +371,27 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI DoScriptText(SAY_SARTHARION_BREATH, m_creature); DoCast(m_creature->getVictim(), m_bIsHeroic ? SPELL_FLAME_BREATH_H : SPELL_FLAME_BREATH); m_uiFlameBreathTimer = 25000 + rand()%10000; - }else m_uiFlameBreathTimer -= uiDiff; + } + else + m_uiFlameBreathTimer -= uiDiff; // Tail Sweep if (m_uiTailSweepTimer < uiDiff) { DoCast(m_creature->getVictim(), m_bIsHeroic ? SPELL_TAIL_LASH_H : SPELL_TAIL_LASH); m_uiTailSweepTimer = 15000 + rand()%5000; - }else m_uiTailSweepTimer -= uiDiff; + } + else + m_uiTailSweepTimer -= uiDiff; // Cleave if (m_uiCleaveTimer < uiDiff) { DoCast(m_creature->getVictim(), SPELL_CLEAVE); m_uiCleaveTimer = 7000 + rand()%3000; - }else m_uiCleaveTimer -= uiDiff; + } + else + m_uiCleaveTimer -= uiDiff; // Lavas Strike if (m_uiLavaStrikeTimer < uiDiff) @@ -423,28 +408,36 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI } } m_uiLavaStrikeTimer = 5000 + rand()%15000; - }else m_uiLavaStrikeTimer -= uiDiff; + } + else + m_uiLavaStrikeTimer -= uiDiff; // call tenebron if (!m_bHasCalledTenebron && m_uiTenebronTimer < uiDiff) { CallDragon(DATA_TENEBRON); m_bHasCalledTenebron = true; - }else m_uiTenebronTimer -= uiDiff; + } + else + m_uiTenebronTimer -= uiDiff; // call shadron if (!m_bHasCalledShadron && m_uiShadronTimer < uiDiff) { CallDragon(DATA_SHADRON); m_bHasCalledShadron = true; - }else m_uiShadronTimer -= uiDiff; + } + else + m_uiShadronTimer -= uiDiff; // call vesperon if (!m_bHasCalledVesperon && m_uiVesperonTimer < uiDiff) { CallDragon(DATA_VESPERON); m_bHasCalledVesperon = true; - }else m_uiVesperonTimer -= uiDiff; + } + else + m_uiVesperonTimer -= uiDiff; DoMeleeAttackIfReady(); @@ -682,7 +675,9 @@ struct TRINITY_DLL_DECL dummy_dragonAI : public ScriptedAI debug_log("dummy_dragonAI: %s moving to point %u", m_creature->GetName(), m_uiWaypointId); m_uiMoveNextTimer = 0; - } else m_uiMoveNextTimer -= uiDiff; + } + else + m_uiMoveNextTimer -= uiDiff; } } }; @@ -738,7 +733,9 @@ struct TRINITY_DLL_DECL mob_tenebronAI : public dummy_dragonAI DoCast(pTarget, m_bIsHeroic ? SPELL_SHADOW_FISSURE_H : SPELL_SHADOW_FISSURE); m_uiShadowFissureTimer = 15000 + rand()%5000; - }else m_uiShadowFissureTimer -= uiDiff; + } + else + m_uiShadowFissureTimer -= uiDiff; // shadow breath if (m_uiShadowBreathTimer < uiDiff) @@ -746,7 +743,9 @@ struct TRINITY_DLL_DECL mob_tenebronAI : public dummy_dragonAI DoScriptText(SAY_TENEBRON_BREATH, m_creature); DoCast(m_creature->getVictim(), m_bIsHeroic ? SPELL_SHADOW_BREATH_H : SPELL_SHADOW_BREATH); m_uiShadowBreathTimer = 20000 + rand()%5000; - }else m_uiShadowBreathTimer -= uiDiff; + } + else + m_uiShadowBreathTimer -= uiDiff; DoMeleeAttackIfReady(); } @@ -814,7 +813,9 @@ struct TRINITY_DLL_DECL mob_shadronAI : public dummy_dragonAI DoCast(pTarget, m_bIsHeroic ? SPELL_SHADOW_FISSURE_H : SPELL_SHADOW_FISSURE); m_uiShadowFissureTimer = 15000 + rand()%5000; - }else m_uiShadowFissureTimer -= uiDiff; + } + else + m_uiShadowFissureTimer -= uiDiff; // shadow breath if (m_uiShadowBreathTimer < uiDiff) @@ -822,7 +823,9 @@ struct TRINITY_DLL_DECL mob_shadronAI : public dummy_dragonAI DoScriptText(SAY_SHADRON_BREATH, m_creature); DoCast(m_creature->getVictim(), m_bIsHeroic ? SPELL_SHADOW_BREATH_H : SPELL_SHADOW_BREATH); m_uiShadowBreathTimer = 20000 + rand()%5000; - }else m_uiShadowBreathTimer -= uiDiff; + } + else + m_uiShadowBreathTimer -= uiDiff; DoMeleeAttackIfReady(); } @@ -884,7 +887,9 @@ struct TRINITY_DLL_DECL mob_vesperonAI : public dummy_dragonAI DoCast(pTarget, m_bIsHeroic ? SPELL_SHADOW_FISSURE_H : SPELL_SHADOW_FISSURE); m_uiShadowFissureTimer = 15000 + rand()%5000; - }else m_uiShadowFissureTimer -= uiDiff; + } + else + m_uiShadowFissureTimer -= uiDiff; // shadow breath if (m_uiShadowBreathTimer < uiDiff) @@ -892,7 +897,9 @@ struct TRINITY_DLL_DECL mob_vesperonAI : public dummy_dragonAI DoScriptText(SAY_VESPERON_BREATH, m_creature); DoCast(m_creature->getVictim(), m_bIsHeroic ? SPELL_SHADOW_BREATH_H : SPELL_SHADOW_BREATH); m_uiShadowBreathTimer = 20000 + rand()%5000; - }else m_uiShadowBreathTimer -= uiDiff; + } + else + m_uiShadowBreathTimer -= uiDiff; DoMeleeAttackIfReady(); } @@ -1061,7 +1068,9 @@ struct TRINITY_DLL_DECL mob_twilight_whelpAI : public ScriptedAI { DoCast(m_creature->getVictim(), SPELL_FADE_ARMOR); m_uiFadeArmorTimer = 5000 + rand()%5000; - }else m_uiFadeArmorTimer -= uiDiff; + } + else + m_uiFadeArmorTimer -= uiDiff; DoMeleeAttackIfReady(); } |