diff options
author | Kudlaty <none@none> | 2009-08-12 18:38:13 +0200 |
---|---|---|
committer | Kudlaty <none@none> | 2009-08-12 18:38:13 +0200 |
commit | 864e17924060ac865bd7f7db511e536b0933d78e (patch) | |
tree | 09344dab46a1f8287ffbad0895fe7d7fb8b7a9d6 | |
parent | 99eafd6a522b8fb480182be87828a00a6f500575 (diff) |
Merge [SD2]
r1186 Remove one hack (SPELL_EFFECT_CHARGE2 implemented in Mangos) - skip
r1187 After one boss of tomb of seven event dead (BRD), open door for progression of instance. Remove manual summon and use spell instead.
r1188 Move most handling of GO's in BT to instance script. - skip
r1189 Fix possible crash, m_pInstance must always be checked before use. - we don't have that problem
r1190 Remove old commented code no longer valid and apply code style
r1191 Update MaNGOS-8095-ScriptDev2.patch, correcting whitespace, tabs and linefeed - skip
--HG--
branch : trunk
-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(); } |