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
This commit is contained in:
Kudlaty
2009-08-12 18:38:13 +02:00
parent 99eafd6a52
commit 864e179240
2 changed files with 113 additions and 101 deletions
@@ -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;
}
@@ -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,42 +204,27 @@ 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();
}
}
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();
}