aboutsummaryrefslogtreecommitdiff
path: root/src/bindings/scripts
diff options
context:
space:
mode:
authormaximius <none@none>2009-10-28 16:31:19 -0700
committermaximius <none@none>2009-10-28 16:31:19 -0700
commitf4d76b8216c911901e8a13996c55128bbfa4b08e (patch)
treed1db8d946c29cb9bdca5e0bf4d0da0a029f46d45 /src/bindings/scripts
parentd5b8ad0080d45c2f02ef5a4fdd4d8853da286b6d (diff)
*Implement new LootMode system, and add some basic support in boss_sartharion.cpp. Requires database support.
--HG-- branch : trunk
Diffstat (limited to 'src/bindings/scripts')
-rw-r--r--src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp b/src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp
index d40ed2dc2e7..d7557370174 100644
--- a/src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp
+++ b/src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp
@@ -214,6 +214,8 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
if (m_creature->HasAura(SPELL_TWILIGHT_REVENGE))
m_creature->RemoveAurasDueToSpell(SPELL_TWILIGHT_REVENGE);
+
+ m_creature->ResetLootMode();
}
void JustReachedHome()
@@ -247,6 +249,18 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
DoScriptText(RAND(SAY_SARTHARION_SLAY_1,SAY_SARTHARION_SLAY_2,SAY_SARTHARION_SLAY_3), m_creature);
}
+ // m_creature->ResetLootMode() is called from Reset()
+ // AddDrakeLootMode() should only ever be called from FetchDragons(), which is called from Aggro()
+ void AddDrakeLootMode()
+ {
+ if (m_creature->HasLootMode(4)) // Has two Drake loot modes
+ m_creature->AddLootMode(8); // Add 3rd Drake loot mode
+ else if (m_creature->HasLootMode(2)) // Has one Drake loot mode
+ m_creature->AddLootMode(4); // Add 2nd Drake loot mode
+ else // Has no Drake loot modes
+ m_creature->AddLootMode(2); // Add 1st Drake loot mode
+ }
+
void FetchDragons()
{
Unit* pTene = Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_TENEBRON));
@@ -258,6 +272,7 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
if (pTene && pTene->isAlive() && !pTene->getVictim())
{
+ AddDrakeLootMode();
bCanUseWill = true;
pTene->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aTene[0].m_fX, m_aTene[0].m_fY, m_aTene[0].m_fZ);
@@ -267,6 +282,7 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
if (pShad && pShad->isAlive() && !pShad->getVictim())
{
+ AddDrakeLootMode();
bCanUseWill = true;
pShad->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aShad[0].m_fX, m_aShad[0].m_fY, m_aShad[0].m_fZ);
@@ -276,6 +292,7 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
if (pVesp && pVesp->isAlive() && !pVesp->getVictim())
{
+ AddDrakeLootMode();
bCanUseWill = true;
pVesp->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aVesp[0].m_fX, m_aVesp[0].m_fY, m_aVesp[0].m_fZ);