aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKudlaty <none@none>2009-08-12 18:38:13 +0200
committerKudlaty <none@none>2009-08-12 18:38:13 +0200
commit864e17924060ac865bd7f7db511e536b0933d78e (patch)
tree09344dab46a1f8287ffbad0895fe7d7fb8b7a9d6
parent99eafd6a522b8fb480182be87828a00a6f500575 (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.cpp103
-rw-r--r--src/bindings/scripts/scripts/zone/obsidian_sanctum/boss_sartharion.cpp111
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();
}