Merge [SD2]
r1026 Added save/load to blood furnace instance script. r1027 Remove manual summons and teleport for boss morogrim, replace with proper spells. Apply sd2 code style. r1028 Replace SetUInt32Value for display id with function SetDisplayId. r1029 Simplify spawn of adds for hydross and use combatStartPosition instead of hard coded values for radius check. SD2 code style applied. r1030 Remove call Aggro in AttackStart and start use EnterCombat AI function. Note Aggro will still be called like normal, but no longer required defined in scripts. --HG-- branch : trunk
This commit is contained in:
@@ -33,6 +33,18 @@ void npc_escortAI::AttackStart(Unit *who)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void npc_escortAI::EnterCombat(Unit* pEnemy)
|
||||||
|
{
|
||||||
|
if (!pEnemy)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Aggro(pEnemy);
|
||||||
|
}
|
||||||
|
|
||||||
|
void npc_escortAI::Aggro(Unit* pEnemy)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void npc_escortAI::MoveInLineOfSight(Unit *who)
|
void npc_escortAI::MoveInLineOfSight(Unit *who)
|
||||||
{
|
{
|
||||||
if (IsBeingEscorted && !Attack)
|
if (IsBeingEscorted && !Attack)
|
||||||
|
|||||||
@@ -34,12 +34,16 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI
|
|||||||
// Pure Virtual Functions
|
// Pure Virtual Functions
|
||||||
virtual void WaypointReached(uint32) = 0;
|
virtual void WaypointReached(uint32) = 0;
|
||||||
|
|
||||||
|
virtual void Aggro(Unit*);
|
||||||
|
|
||||||
// CreatureAI functions
|
// CreatureAI functions
|
||||||
npc_escortAI(Creature *c) : ScriptedAI(c), IsBeingEscorted(false), PlayerTimer(1000), MaxPlayerDistance(DEFAULT_MAX_PLAYER_DISTANCE), CanMelee(true), DespawnAtEnd(true), DespawnAtFar(true)
|
npc_escortAI(Creature *c) : ScriptedAI(c), IsBeingEscorted(false), PlayerTimer(1000), MaxPlayerDistance(DEFAULT_MAX_PLAYER_DISTANCE), CanMelee(true), DespawnAtEnd(true), DespawnAtFar(true)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void AttackStart(Unit* who);
|
void AttackStart(Unit* who);
|
||||||
|
|
||||||
|
void EnterCombat(Unit*);
|
||||||
|
|
||||||
void MoveInLineOfSight(Unit* who);
|
void MoveInLineOfSight(Unit* who);
|
||||||
|
|
||||||
void JustRespawned();
|
void JustRespawned();
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ struct TRINITY_DLL_DECL instance_sethekk_halls : public ScriptedInstance
|
|||||||
m_uiIkissDoorGUID = 0;
|
m_uiIkissDoorGUID = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnObjectCreate(GameObject* pGo)
|
void OnGameObjectCreate(GameObject *pGo, bool add)
|
||||||
{
|
{
|
||||||
if (pGo->GetEntry() == IKISS_DOOR)
|
if (pGo->GetEntry() == IKISS_DOOR)
|
||||||
m_uiIkissDoorGUID = pGo->GetGUID();
|
m_uiIkissDoorGUID = pGo->GetGUID();
|
||||||
|
|||||||
@@ -565,7 +565,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
GlaiveGUID[i] = Glaive->GetGUID();
|
GlaiveGUID[i] = Glaive->GetGUID();
|
||||||
Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Glaive->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686);
|
Glaive->SetDisplayId(11686);
|
||||||
Glaive->setFaction(m_creature->getFaction());
|
Glaive->setFaction(m_creature->getFaction());
|
||||||
DoCast(Glaive, SPELL_THROW_GLAIVE2);
|
DoCast(Glaive, SPELL_THROW_GLAIVE2);
|
||||||
}
|
}
|
||||||
@@ -581,7 +581,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
GlaiveGUID[i] = Glaive->GetGUID();
|
GlaiveGUID[i] = Glaive->GetGUID();
|
||||||
Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
Glaive->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Glaive->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686);
|
Glaive->SetDisplayId(11686);
|
||||||
Glaive->setFaction(m_creature->getFaction());
|
Glaive->setFaction(m_creature->getFaction());
|
||||||
DoCast(Glaive, SPELL_THROW_GLAIVE, true);
|
DoCast(Glaive, SPELL_THROW_GLAIVE, true);
|
||||||
}
|
}
|
||||||
@@ -609,7 +609,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
|
|||||||
if(Glaive)
|
if(Glaive)
|
||||||
{
|
{
|
||||||
Glaive->CastSpell(m_creature, SPELL_GLAIVE_RETURNS, false); // Make it look like the Glaive flies back up to us
|
Glaive->CastSpell(m_creature, SPELL_GLAIVE_RETURNS, false); // Make it look like the Glaive flies back up to us
|
||||||
Glaive->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); // disappear but not die for now
|
Glaive->SetDisplayId(11686); // disappear but not die for now
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -654,7 +654,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
|
|||||||
DoCast(m_creature, DemonTransformation[TransformCount].aura, true);
|
DoCast(m_creature, DemonTransformation[TransformCount].aura, true);
|
||||||
|
|
||||||
if(DemonTransformation[TransformCount].displayid)
|
if(DemonTransformation[TransformCount].displayid)
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, DemonTransformation[TransformCount].displayid); // It's morphin time!
|
m_creature->SetDisplayId(DemonTransformation[TransformCount].displayid); // It's morphin time!
|
||||||
|
|
||||||
if(DemonTransformation[TransformCount].equip)
|
if(DemonTransformation[TransformCount].equip)
|
||||||
{
|
{
|
||||||
@@ -1100,7 +1100,7 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
|
|||||||
if(Creature* Channel = m_creature->SummonCreature(ILLIDAN_DOOR_TRIGGER, x, y, z+5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000))
|
if(Creature* Channel = m_creature->SummonCreature(ILLIDAN_DOOR_TRIGGER, x, y, z+5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000))
|
||||||
{
|
{
|
||||||
ChannelGUID = Channel->GetGUID();
|
ChannelGUID = Channel->GetGUID();
|
||||||
Channel->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686); // Invisible but spell visuals can still be seen.
|
Channel->SetDisplayId(11686); // Invisible but spell visuals can still be seen.
|
||||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
DoCast(Channel, SPELL_AKAMA_DOOR_FAIL);
|
DoCast(Channel, SPELL_AKAMA_DOOR_FAIL);
|
||||||
}
|
}
|
||||||
@@ -1793,7 +1793,7 @@ struct TRINITY_DLL_DECL blade_of_azzinothAI : public NullCreatureAI
|
|||||||
void SpellHit(Unit *caster, const SpellEntry *spell)
|
void SpellHit(Unit *caster, const SpellEntry *spell)
|
||||||
{
|
{
|
||||||
if(spell->Id == SPELL_THROW_GLAIVE2 || spell->Id == SPELL_THROW_GLAIVE)
|
if(spell->Id == SPELL_THROW_GLAIVE2 || spell->Id == SPELL_THROW_GLAIVE)
|
||||||
me->SetUInt32Value(UNIT_FIELD_DISPLAYID, 21431);//appear when hit by Illidan's glaive
|
me->SetDisplayId(21431);//appear when hit by Illidan's glaive
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1834,7 +1834,7 @@ void boss_illidan_stormrageAI::Reset()
|
|||||||
FlightCount = 0;
|
FlightCount = 0;
|
||||||
TransformCount = 0;
|
TransformCount = 0;
|
||||||
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 21135);
|
m_creature->SetDisplayId(21135);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI
|
|||||||
|
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686);
|
m_creature->SetDisplayId(11686);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who) {}
|
void EnterCombat(Unit *who) {}
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ struct TRINITY_DLL_DECL boss_gythAI : public ScriptedAI
|
|||||||
Line2Count = 2;
|
Line2Count = 2;
|
||||||
|
|
||||||
//Invisible for event start
|
//Invisible for event start
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686);
|
m_creature->SetDisplayId(11686);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ struct TRINITY_DLL_DECL boss_gythAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
bAggro = true;
|
bAggro = true;
|
||||||
// Visible now!
|
// Visible now!
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 9723);
|
m_creature->SetDisplayId(9723);
|
||||||
m_creature->setFaction(14);
|
m_creature->setFaction(14);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
} else Aggro_Timer -= diff;
|
} else Aggro_Timer -= diff;
|
||||||
@@ -180,7 +180,7 @@ struct TRINITY_DLL_DECL boss_gythAI : public ScriptedAI
|
|||||||
//Inturrupt any spell casting
|
//Inturrupt any spell casting
|
||||||
m_creature->InterruptNonMeleeSpells(false);
|
m_creature->InterruptNonMeleeSpells(false);
|
||||||
//Gyth model
|
//Gyth model
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, 9806);
|
m_creature->SetDisplayId(9806);
|
||||||
m_creature->SummonCreature(10429, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000);
|
m_creature->SummonCreature(10429, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900000);
|
||||||
SummonedRend = true;
|
SummonedRend = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -458,7 +458,7 @@ struct TRINITY_DLL_DECL boss_archimondeAI : public hyjal_trashAI
|
|||||||
if (Unit *Nordrassil = Unit::GetUnit(*m_creature, WorldTreeGUID))
|
if (Unit *Nordrassil = Unit::GetUnit(*m_creature, WorldTreeGUID))
|
||||||
{
|
{
|
||||||
Nordrassil->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
Nordrassil->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Nordrassil->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686);
|
Nordrassil->SetDisplayId(11686);
|
||||||
DoCast(Nordrassil, SPELL_DRAIN_WORLD_TREE);
|
DoCast(Nordrassil, SPELL_DRAIN_WORLD_TREE);
|
||||||
IsChanneling = true;
|
IsChanneling = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -381,7 +381,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI
|
|||||||
Delay = rand()%30000;
|
Delay = rand()%30000;
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INVIS);
|
m_creature->SetDisplayId(MODEL_INVIS);
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
Reset();
|
Reset();
|
||||||
@@ -447,7 +447,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI
|
|||||||
{
|
{
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, m_creature->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
|
m_creature->SetDisplayId(m_creature->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
|
||||||
CanMove = true;
|
CanMove = true;
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ struct TRINITY_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI
|
|||||||
//m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+3, 1038);
|
//m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_INFO+3, 1038);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, THRALL_MODEL_EQUIPPED);
|
m_creature->SetDisplayId(THRALL_MODEL_EQUIPPED);
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
SetRun();
|
SetRun();
|
||||||
@@ -375,7 +375,7 @@ struct TRINITY_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI
|
|||||||
HadMount = false;
|
HadMount = false;
|
||||||
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0);
|
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0);
|
||||||
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
|
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, THRALL_MODEL_UNEQUIPPED);
|
m_creature->SetDisplayId(THRALL_MODEL_UNEQUIPPED);
|
||||||
}
|
}
|
||||||
if( IsBeingEscorted )
|
if( IsBeingEscorted )
|
||||||
{
|
{
|
||||||
|
|||||||
+172
-232
@@ -17,362 +17,303 @@
|
|||||||
/* ScriptData
|
/* ScriptData
|
||||||
SDName: Boss_Hydross_The_Unstable
|
SDName: Boss_Hydross_The_Unstable
|
||||||
SD%Complete: 90
|
SD%Complete: 90
|
||||||
SDComment: Some details and adjustments left to do, probably nothing major. Spawns may be spawned in different way/location.
|
SDComment: Some details and adjustments left to do, probably nothing major. Spawns may be spawned in different way/location. code cleanup needed
|
||||||
SDCategory: Coilfang Resevoir, Serpent Shrine Cavern
|
SDCategory: Coilfang Resevoir, Serpent Shrine Cavern
|
||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
#include "def_serpent_shrine.h"
|
#include "def_serpent_shrine.h"
|
||||||
|
|
||||||
#define SAY_AGGRO -1548000
|
enum
|
||||||
#define SAY_SWITCH_TO_CLEAN -1548001
|
{
|
||||||
#define SAY_CLEAN_SLAY1 -1548002
|
SAY_AGGRO = -1548000,
|
||||||
#define SAY_CLEAN_SLAY2 -1548003
|
SAY_SWITCH_TO_CLEAN = -1548001,
|
||||||
#define SAY_CLEAN_DEATH -1548004
|
SAY_CLEAN_SLAY1 = -1548002,
|
||||||
#define SAY_SWITCH_TO_CORRUPT -1548005
|
SAY_CLEAN_SLAY2 = -1548003,
|
||||||
#define SAY_CORRUPT_SLAY1 -1548006
|
SAY_CLEAN_DEATH = -1548004,
|
||||||
#define SAY_CORRUPT_SLAY2 -1548007
|
SAY_SWITCH_TO_CORRUPT = -1548005,
|
||||||
#define SAY_CORRUPT_DEATH -1548008
|
SAY_CORRUPT_SLAY1 = -1548006,
|
||||||
|
SAY_CORRUPT_SLAY2 = -1548007,
|
||||||
|
SAY_CORRUPT_DEATH = -1548008,
|
||||||
|
|
||||||
#define SWITCH_RADIUS 18
|
SWITCH_RADIUS = 18,
|
||||||
|
|
||||||
#define MODEL_CORRUPT 20609
|
MODEL_CORRUPT = 20609,
|
||||||
#define MODEL_CLEAN 20162
|
MODEL_CLEAN = 20162,
|
||||||
|
|
||||||
#define SPELL_WATER_TOMB 38235
|
SPELL_WATER_TOMB = 38235,
|
||||||
#define SPELL_MARK_OF_HYDROSS1 38215
|
SPELL_MARK_OF_HYDROSS1 = 38215,
|
||||||
#define SPELL_MARK_OF_HYDROSS2 38216
|
SPELL_MARK_OF_HYDROSS2 = 38216,
|
||||||
#define SPELL_MARK_OF_HYDROSS3 38217
|
SPELL_MARK_OF_HYDROSS3 = 38217,
|
||||||
#define SPELL_MARK_OF_HYDROSS4 38218
|
SPELL_MARK_OF_HYDROSS4 = 38218,
|
||||||
#define SPELL_MARK_OF_HYDROSS5 38231
|
SPELL_MARK_OF_HYDROSS5 = 38231,
|
||||||
#define SPELL_MARK_OF_HYDROSS6 40584
|
SPELL_MARK_OF_HYDROSS6 = 40584,
|
||||||
#define SPELL_MARK_OF_CORRUPTION1 38219
|
SPELL_MARK_OF_CORRUPTION1 = 38219,
|
||||||
#define SPELL_MARK_OF_CORRUPTION2 38220
|
SPELL_MARK_OF_CORRUPTION2 = 38220,
|
||||||
#define SPELL_MARK_OF_CORRUPTION3 38221
|
SPELL_MARK_OF_CORRUPTION3 = 38221,
|
||||||
#define SPELL_MARK_OF_CORRUPTION4 38222
|
SPELL_MARK_OF_CORRUPTION4 = 38222,
|
||||||
#define SPELL_MARK_OF_CORRUPTION5 38230
|
SPELL_MARK_OF_CORRUPTION5 = 38230,
|
||||||
#define SPELL_MARK_OF_CORRUPTION6 40583
|
SPELL_MARK_OF_CORRUPTION6 = 40583,
|
||||||
#define SPELL_VILE_SLUDGE 38246
|
SPELL_VILE_SLUDGE = 38246,
|
||||||
#define SPELL_ENRAGE 27680 //this spell need verification
|
SPELL_ENRAGE = 27680, //this spell need verification
|
||||||
#define SPELL_SUMMON_WATER_ELEMENT 36459 //not in use yet(in use ever?)
|
SPELL_SUMMON_WATER_ELEMENT = 36459, //not in use yet(in use ever?)
|
||||||
#define SPELL_ELEMENTAL_SPAWNIN 25035
|
SPELL_ELEMENTAL_SPAWNIN = 25035,
|
||||||
#define SPELL_BLUE_BEAM /*40227*/40227 //channeled Hydross Beam Helper (not in use yet)
|
SPELL_BLUE_BEAM = 38015, //channeled Hydross Beam Helper (not in use yet)
|
||||||
|
|
||||||
#define ENTRY_PURE_SPAWN 22035
|
NPC_PURE_SPAWN = 22035,
|
||||||
#define ENTRY_TAINTED_SPAWN 22036
|
NPC_TAINTED_SPAWN = 22036
|
||||||
#define ENTRY_BEAM_DUMMY 21934
|
};
|
||||||
|
|
||||||
#define HYDROSS_X -239.439
|
const float afSpawnDiffs[4][2] =
|
||||||
#define HYDROSS_Y -363.481
|
{
|
||||||
|
{6.934003f , -11.255012f}, // diff 1
|
||||||
#define SPAWN_X_DIFF1 6.934003
|
{-6.934003f , 11.255012f }, // diff 2
|
||||||
#define SPAWN_Y_DIFF1 -11.255012
|
{-12.577011f, -4.72702f }, // diff 3
|
||||||
#define SPAWN_X_DIFF2 -6.934003
|
{12.577011f , 4.72702f } // diff 4
|
||||||
#define SPAWN_Y_DIFF2 11.255012
|
};
|
||||||
#define SPAWN_X_DIFF3 -12.577011
|
|
||||||
#define SPAWN_Y_DIFF3 -4.72702
|
|
||||||
#define SPAWN_X_DIFF4 12.577011
|
|
||||||
#define SPAWN_Y_DIFF4 4.72702
|
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL boss_hydross_the_unstableAI : public ScriptedAI
|
struct TRINITY_DLL_DECL boss_hydross_the_unstableAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_hydross_the_unstableAI(Creature *c) : ScriptedAI(c), Summons(m_creature)
|
boss_hydross_the_unstableAI(Creature *c) : ScriptedAI(c)
|
||||||
{
|
{
|
||||||
pInstance = c->GetInstanceData();
|
m_pInstance = c->GetInstanceData();
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptedInstance* pInstance;
|
ScriptedInstance* m_pInstance; // the instance
|
||||||
uint64 beams[2];
|
|
||||||
uint32 PosCheck_Timer;
|
uint32 m_uiPosCheck_Timer;
|
||||||
uint32 MarkOfHydross_Timer;
|
uint32 m_uiMarkOfHydross_Timer;
|
||||||
uint32 MarkOfCorruption_Timer;
|
uint32 m_uiMarkOfCorruption_Timer;
|
||||||
uint32 WaterTomb_Timer;
|
uint32 m_uiWaterTomb_Timer;
|
||||||
uint32 VileSludge_Timer;
|
uint32 m_uiVileSludge_Timer;
|
||||||
uint32 MarkOfHydross_Count;
|
uint32 m_uiMarkOfHydross_Count;
|
||||||
uint32 MarkOfCorruption_Count;
|
uint32 m_uiMarkOfCorruption_Count;
|
||||||
uint32 EnrageTimer;
|
uint32 m_uiEnrageTimer;
|
||||||
bool CorruptedForm;
|
bool m_bCorruptedForm;
|
||||||
bool beam;
|
|
||||||
SummonList Summons;
|
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
DeSummonBeams();
|
m_uiPosCheck_Timer = 2500;
|
||||||
beams[0] = 0;
|
m_uiMarkOfHydross_Timer = 15000;
|
||||||
beams[1] = 0;
|
m_uiMarkOfCorruption_Timer = 15000;
|
||||||
PosCheck_Timer = 2500;
|
m_uiWaterTomb_Timer = 7000;
|
||||||
MarkOfHydross_Timer = 15000;
|
m_uiVileSludge_Timer = 7000;
|
||||||
MarkOfCorruption_Timer = 15000;
|
m_uiMarkOfHydross_Count = 0;
|
||||||
WaterTomb_Timer = 7000;
|
m_uiMarkOfCorruption_Count = 0;
|
||||||
VileSludge_Timer = 7000;
|
m_uiEnrageTimer = 600000;
|
||||||
MarkOfHydross_Count = 0;
|
|
||||||
MarkOfCorruption_Count = 0;
|
m_bCorruptedForm = false;
|
||||||
EnrageTimer = 600000;
|
|
||||||
|
|
||||||
CorruptedForm = false;
|
|
||||||
m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_FROST);
|
m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_FROST);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
||||||
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_CLEAN);
|
m_creature->SetDisplayId(MODEL_CLEAN);
|
||||||
|
|
||||||
if (pInstance)
|
if (m_pInstance)
|
||||||
pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED);
|
m_pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED);
|
||||||
beam = false;
|
|
||||||
Summons.DespawnAll();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SummonBeams()
|
void Aggro(Unit* pWho)
|
||||||
{
|
|
||||||
Creature* beamer = m_creature->SummonCreature(ENTRY_BEAM_DUMMY,-258.333,-356.34,22.0499,5.90835,TEMPSUMMON_CORPSE_DESPAWN,0);
|
|
||||||
if(beamer)
|
|
||||||
{
|
|
||||||
beamer->CastSpell(m_creature,SPELL_BLUE_BEAM,true);
|
|
||||||
beamer->SetUInt32Value(UNIT_FIELD_DISPLAYID , 11686); //invisible
|
|
||||||
beamer->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
|
||||||
beams[0]=beamer->GetGUID();
|
|
||||||
}
|
|
||||||
beamer = beamer = m_creature->SummonCreature(ENTRY_BEAM_DUMMY,-219.918,-371.308,22.0042,2.73072,TEMPSUMMON_CORPSE_DESPAWN,0);
|
|
||||||
if(beamer)
|
|
||||||
{
|
|
||||||
beamer->CastSpell(m_creature,SPELL_BLUE_BEAM,true);
|
|
||||||
beamer->SetUInt32Value(UNIT_FIELD_DISPLAYID , 11686); //invisible
|
|
||||||
beamer->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
|
||||||
beams[1]=beamer->GetGUID();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void DeSummonBeams()
|
|
||||||
{
|
|
||||||
for(uint8 i=0;i<2;i++)
|
|
||||||
{
|
|
||||||
Creature* mob = Unit::GetCreature(*m_creature,beams[i]);
|
|
||||||
if(mob)
|
|
||||||
{
|
|
||||||
mob->setDeathState(DEAD);
|
|
||||||
mob->RemoveCorpse();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void EnterCombat(Unit *who)
|
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_AGGRO, m_creature);
|
DoScriptText(SAY_AGGRO, m_creature);
|
||||||
|
|
||||||
if (pInstance)
|
if (m_pInstance)
|
||||||
pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, IN_PROGRESS);
|
m_pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, IN_PROGRESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit *victim)
|
void KilledUnit(Unit* pVictim)
|
||||||
{
|
{
|
||||||
if (CorruptedForm)
|
if (m_bCorruptedForm)
|
||||||
{
|
DoScriptText(urand(0,1) ? SAY_CORRUPT_SLAY1 : SAY_CORRUPT_SLAY2, m_creature);
|
||||||
switch(rand()%2)
|
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_CORRUPT_SLAY1, m_creature); break;
|
|
||||||
case 1: DoScriptText(SAY_CORRUPT_SLAY2, m_creature); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
DoScriptText(urand(0,1) ? SAY_CLEAN_SLAY1 : SAY_CLEAN_SLAY2, m_creature);
|
||||||
switch(rand()%2)
|
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_CLEAN_SLAY1, m_creature); break;
|
|
||||||
case 1: DoScriptText(SAY_CLEAN_SLAY2, m_creature); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustSummoned(Creature* summoned)
|
void JustSummoned(Creature* pSummoned)
|
||||||
{
|
{
|
||||||
if (summoned->GetEntry() == ENTRY_PURE_SPAWN)
|
if (pSummoned->GetEntry() == NPC_PURE_SPAWN)
|
||||||
{
|
pSummoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
|
||||||
summoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
|
else if (pSummoned->GetEntry() == NPC_TAINTED_SPAWN)
|
||||||
summoned->CastSpell(summoned,SPELL_ELEMENTAL_SPAWNIN,true);
|
pSummoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
|
||||||
Summons.Summon(summoned);
|
|
||||||
}
|
pSummoned->CastSpell(pSummoned, SPELL_ELEMENTAL_SPAWNIN, true);
|
||||||
if (summoned->GetEntry() == ENTRY_TAINTED_SPAWN)
|
|
||||||
{
|
|
||||||
summoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
|
|
||||||
summoned->CastSpell(summoned,SPELL_ELEMENTAL_SPAWNIN,true);
|
|
||||||
Summons.Summon(summoned);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SummonedCreatureDespawn(Creature *summon)
|
void JustDied(Unit* pVictim)
|
||||||
{
|
{
|
||||||
Summons.Despawn(summon);
|
DoScriptText(m_bCorruptedForm ? SAY_CORRUPT_DEATH : SAY_CLEAN_DEATH, m_creature);
|
||||||
|
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void SpawnAdds()
|
||||||
{
|
{
|
||||||
if (CorruptedForm)
|
uint32 uiAdd = 0;
|
||||||
DoScriptText(SAY_CORRUPT_DEATH, m_creature);
|
|
||||||
|
if (m_bCorruptedForm)
|
||||||
|
uiAdd = NPC_TAINTED_SPAWN;
|
||||||
else
|
else
|
||||||
DoScriptText(SAY_CLEAN_DEATH, m_creature);
|
uiAdd = NPC_PURE_SPAWN;
|
||||||
|
|
||||||
if (pInstance)
|
for(uint8 i = 0; i < 4; i++)
|
||||||
pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, DONE);
|
DoSpawnCreature(uiAdd, afSpawnDiffs[i][0], afSpawnDiffs[i][1], 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||||
Summons.DespawnAll();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 uiDiff)
|
||||||
{
|
{
|
||||||
if(!beam)
|
|
||||||
{
|
|
||||||
SummonBeams();
|
|
||||||
beam=true;
|
|
||||||
}
|
|
||||||
//Return since we have no target
|
//Return since we have no target
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// corrupted form
|
// corrupted form
|
||||||
if (CorruptedForm)
|
if (m_bCorruptedForm)
|
||||||
{
|
{
|
||||||
//MarkOfCorruption_Timer
|
//MarkOfCorruption_Timer
|
||||||
if (MarkOfCorruption_Timer < diff)
|
if (m_uiMarkOfCorruption_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
if (MarkOfCorruption_Count <= 5)
|
if (m_uiMarkOfCorruption_Count <= 5)
|
||||||
{
|
{
|
||||||
uint32 mark_spell;
|
uint32 uiMarkSpell = 0;
|
||||||
|
|
||||||
switch(MarkOfCorruption_Count)
|
switch(m_uiMarkOfCorruption_Count)
|
||||||
{
|
{
|
||||||
case 0: mark_spell = SPELL_MARK_OF_CORRUPTION1; break;
|
case 0: uiMarkSpell = SPELL_MARK_OF_CORRUPTION1; break;
|
||||||
case 1: mark_spell = SPELL_MARK_OF_CORRUPTION2; break;
|
case 1: uiMarkSpell = SPELL_MARK_OF_CORRUPTION2; break;
|
||||||
case 2: mark_spell = SPELL_MARK_OF_CORRUPTION3; break;
|
case 2: uiMarkSpell = SPELL_MARK_OF_CORRUPTION3; break;
|
||||||
case 3: mark_spell = SPELL_MARK_OF_CORRUPTION4; break;
|
case 3: uiMarkSpell = SPELL_MARK_OF_CORRUPTION4; break;
|
||||||
case 4: mark_spell = SPELL_MARK_OF_CORRUPTION5; break;
|
case 4: uiMarkSpell = SPELL_MARK_OF_CORRUPTION5; break;
|
||||||
case 5: mark_spell = SPELL_MARK_OF_CORRUPTION6; break;
|
case 5: uiMarkSpell = SPELL_MARK_OF_CORRUPTION6; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
DoCast(m_creature->getVictim(), mark_spell);
|
DoCast(m_creature->getVictim(), uiMarkSpell);
|
||||||
|
|
||||||
if (MarkOfCorruption_Count < 5)
|
if (m_uiMarkOfCorruption_Count < 5)
|
||||||
MarkOfCorruption_Count++;
|
++m_uiMarkOfCorruption_Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
MarkOfCorruption_Timer = 15000;
|
m_uiMarkOfCorruption_Timer = 15000;
|
||||||
}else MarkOfCorruption_Timer -= diff;
|
}else m_uiMarkOfCorruption_Timer -= uiDiff;
|
||||||
|
|
||||||
//VileSludge_Timer
|
//VileSludge_Timer
|
||||||
if (VileSludge_Timer < diff)
|
if (m_uiVileSludge_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||||
if (target)
|
DoCast(pTarget, SPELL_VILE_SLUDGE);
|
||||||
DoCast(target, SPELL_VILE_SLUDGE);
|
|
||||||
|
|
||||||
VileSludge_Timer = 15000;
|
m_uiVileSludge_Timer = 15000;
|
||||||
}else VileSludge_Timer -= diff;
|
}else m_uiVileSludge_Timer -= uiDiff;
|
||||||
|
|
||||||
//PosCheck_Timer
|
//PosCheck_Timer
|
||||||
if (PosCheck_Timer < diff)
|
if (m_uiPosCheck_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
if (m_creature->GetDistance2d(HYDROSS_X, HYDROSS_Y) < SWITCH_RADIUS)
|
float fPosX, fPosY, fPosZ, fPosO;
|
||||||
{
|
m_creature->GetHomePosition(fPosX, fPosY, fPosZ, fPosO);
|
||||||
// switch to clean form
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_CLEAN);
|
|
||||||
CorruptedForm = false;
|
|
||||||
MarkOfHydross_Count = 0;
|
|
||||||
|
|
||||||
|
if (m_creature->GetDistance2d(fPosX, fPosY) < SWITCH_RADIUS)
|
||||||
|
{
|
||||||
DoScriptText(SAY_SWITCH_TO_CLEAN, m_creature);
|
DoScriptText(SAY_SWITCH_TO_CLEAN, m_creature);
|
||||||
|
|
||||||
|
// switch to clean form
|
||||||
|
m_creature->SetDisplayId(MODEL_CLEAN);
|
||||||
|
m_uiMarkOfHydross_Count = 0;
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
SummonBeams();
|
|
||||||
|
|
||||||
// spawn 4 adds
|
// spawn 4 adds
|
||||||
DoSpawnCreature(ENTRY_PURE_SPAWN, SPAWN_X_DIFF1, SPAWN_Y_DIFF1, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
SpawnAdds();
|
||||||
DoSpawnCreature(ENTRY_PURE_SPAWN, SPAWN_X_DIFF2, SPAWN_Y_DIFF2, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
|
||||||
DoSpawnCreature(ENTRY_PURE_SPAWN, SPAWN_X_DIFF3, SPAWN_Y_DIFF3, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
|
||||||
DoSpawnCreature(ENTRY_PURE_SPAWN, SPAWN_X_DIFF4, SPAWN_Y_DIFF4, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
|
||||||
|
|
||||||
m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_FROST);
|
m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_FROST);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
||||||
|
|
||||||
|
m_bCorruptedForm = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PosCheck_Timer = 2500;
|
m_uiPosCheck_Timer = 2500;
|
||||||
}else PosCheck_Timer -=diff;
|
}else m_uiPosCheck_Timer -=uiDiff;
|
||||||
}
|
}
|
||||||
// clean form
|
// clean form
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//MarkOfHydross_Timer
|
//MarkOfHydross_Timer
|
||||||
if (MarkOfHydross_Timer < diff)
|
if (m_uiMarkOfHydross_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
if (MarkOfHydross_Count <= 5)
|
if (m_uiMarkOfHydross_Count <= 5)
|
||||||
{
|
{
|
||||||
uint32 mark_spell;
|
uint32 uiMarkSpell;
|
||||||
|
|
||||||
switch(MarkOfHydross_Count)
|
switch(m_uiMarkOfHydross_Count)
|
||||||
{
|
{
|
||||||
case 0: mark_spell = SPELL_MARK_OF_HYDROSS1; break;
|
case 0: uiMarkSpell = SPELL_MARK_OF_HYDROSS1; break;
|
||||||
case 1: mark_spell = SPELL_MARK_OF_HYDROSS2; break;
|
case 1: uiMarkSpell = SPELL_MARK_OF_HYDROSS2; break;
|
||||||
case 2: mark_spell = SPELL_MARK_OF_HYDROSS3; break;
|
case 2: uiMarkSpell = SPELL_MARK_OF_HYDROSS3; break;
|
||||||
case 3: mark_spell = SPELL_MARK_OF_HYDROSS4; break;
|
case 3: uiMarkSpell = SPELL_MARK_OF_HYDROSS4; break;
|
||||||
case 4: mark_spell = SPELL_MARK_OF_HYDROSS5; break;
|
case 4: uiMarkSpell = SPELL_MARK_OF_HYDROSS5; break;
|
||||||
case 5: mark_spell = SPELL_MARK_OF_HYDROSS6; break;
|
case 5: uiMarkSpell = SPELL_MARK_OF_HYDROSS6; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
DoCast(m_creature->getVictim(), mark_spell);
|
DoCast(m_creature->getVictim(), uiMarkSpell);
|
||||||
|
|
||||||
if (MarkOfHydross_Count < 5)
|
if (m_uiMarkOfHydross_Count < 5)
|
||||||
MarkOfHydross_Count++;
|
++m_uiMarkOfHydross_Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
MarkOfHydross_Timer = 15000;
|
m_uiMarkOfHydross_Timer = 15000;
|
||||||
}else MarkOfHydross_Timer -= diff;
|
}else m_uiMarkOfHydross_Timer -= uiDiff;
|
||||||
|
|
||||||
//WaterTomb_Timer
|
//WaterTomb_Timer
|
||||||
if (WaterTomb_Timer < diff)
|
if (m_uiWaterTomb_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||||
if (target)
|
DoCast(pTarget, SPELL_WATER_TOMB);
|
||||||
DoCast(target, SPELL_WATER_TOMB);
|
|
||||||
|
|
||||||
WaterTomb_Timer = 7000;
|
m_uiWaterTomb_Timer = 7000;
|
||||||
}else WaterTomb_Timer -= diff;
|
}else m_uiWaterTomb_Timer -= uiDiff;
|
||||||
|
|
||||||
//PosCheck_Timer
|
//PosCheck_Timer
|
||||||
if (PosCheck_Timer < diff)
|
if (m_uiPosCheck_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
if (m_creature->GetDistance2d(HYDROSS_X, HYDROSS_Y) >= SWITCH_RADIUS)
|
float fPosX, fPosY, fPosZ, fPosO;
|
||||||
{
|
m_creature->GetHomePosition(fPosX, fPosY, fPosZ, fPosO);
|
||||||
// switch to corrupted form
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_CORRUPT);
|
|
||||||
MarkOfCorruption_Count = 0;
|
|
||||||
CorruptedForm = true;
|
|
||||||
|
|
||||||
|
if (m_creature->GetDistance2d(fPosX, fPosY) >= SWITCH_RADIUS)
|
||||||
|
{
|
||||||
DoScriptText(SAY_SWITCH_TO_CORRUPT, m_creature);
|
DoScriptText(SAY_SWITCH_TO_CORRUPT, m_creature);
|
||||||
|
|
||||||
|
// switch to corrupted form
|
||||||
|
m_creature->SetDisplayId(MODEL_CORRUPT);
|
||||||
|
m_uiMarkOfCorruption_Count = 0;
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
DeSummonBeams();
|
|
||||||
|
|
||||||
// spawn 4 adds
|
// spawn 4 adds
|
||||||
DoSpawnCreature(ENTRY_TAINTED_SPAWN, SPAWN_X_DIFF1, SPAWN_Y_DIFF1, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
SpawnAdds();
|
||||||
DoSpawnCreature(ENTRY_TAINTED_SPAWN, SPAWN_X_DIFF2, SPAWN_Y_DIFF2, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
|
||||||
DoSpawnCreature(ENTRY_TAINTED_SPAWN, SPAWN_X_DIFF3, SPAWN_Y_DIFF3, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
|
||||||
DoSpawnCreature(ENTRY_TAINTED_SPAWN, SPAWN_X_DIFF4, SPAWN_Y_DIFF4, 3, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
|
||||||
|
|
||||||
m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_NATURE);
|
m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_NATURE);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, false);
|
||||||
|
|
||||||
|
m_bCorruptedForm = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PosCheck_Timer = 2500;
|
m_uiPosCheck_Timer = 2500;
|
||||||
}else PosCheck_Timer -=diff;
|
}else m_uiPosCheck_Timer -=uiDiff;
|
||||||
}
|
}
|
||||||
|
|
||||||
//EnrageTimer
|
//EnrageTimer
|
||||||
if (EnrageTimer < diff)
|
if (m_uiEnrageTimer < uiDiff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_ENRAGE);
|
DoCast(m_creature, SPELL_ENRAGE);
|
||||||
EnrageTimer = 60000;
|
m_uiEnrageTimer = 60000;
|
||||||
}else EnrageTimer -= diff;
|
}else m_uiEnrageTimer -= uiDiff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
CreatureAI* GetAI_boss_hydross_the_unstable(Creature *_Creature)
|
|
||||||
|
CreatureAI* GetAI_boss_hydross_the_unstable(Creature* pCreature)
|
||||||
{
|
{
|
||||||
return new boss_hydross_the_unstableAI (_Creature);
|
return new boss_hydross_the_unstableAI(pCreature);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddSC_boss_hydross_the_unstable()
|
void AddSC_boss_hydross_the_unstable()
|
||||||
@@ -383,4 +324,3 @@ void AddSC_boss_hydross_the_unstable()
|
|||||||
newscript->GetAI = &GetAI_boss_hydross_the_unstable;
|
newscript->GetAI = &GetAI_boss_hydross_the_unstable;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -890,7 +890,7 @@ struct TRINITY_DLL_DECL mob_shield_generator_channelAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Check_Timer = 0;
|
Check_Timer = 0;
|
||||||
Casted = false;
|
Casted = false;
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID , 11686); //invisible
|
m_creature->SetDisplayId(11686); //invisible
|
||||||
|
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -187,7 +187,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
|||||||
EnrageUsed = false;
|
EnrageUsed = false;
|
||||||
InnderDemon_Count = 0;
|
InnderDemon_Count = 0;
|
||||||
m_creature->SetSpeed( MOVE_RUN, 2.0f, true);
|
m_creature->SetSpeed( MOVE_RUN, 2.0f, true);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF);
|
m_creature->SetDisplayId(MODEL_NIGHTELF);
|
||||||
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
|
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
|
||||||
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
|
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
|
||||||
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true);
|
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true);
|
||||||
@@ -270,7 +270,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
|||||||
m_creature->ApplySpellImmune(AURA_BANISH, IMMUNITY_MECHANIC, MECHANIC_BANISH, true);
|
m_creature->ApplySpellImmune(AURA_BANISH, IMMUNITY_MECHANIC, MECHANIC_BANISH, true);
|
||||||
|
|
||||||
// changing model to bloodelf
|
// changing model to bloodelf
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF);
|
m_creature->SetDisplayId(MODEL_NIGHTELF);
|
||||||
|
|
||||||
// and reseting equipment
|
// and reseting equipment
|
||||||
m_creature->LoadEquipment(m_creature->GetEquipmentId());
|
m_creature->LoadEquipment(m_creature->GetEquipmentId());
|
||||||
@@ -292,7 +292,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
|||||||
DoCast(m_creature, AURA_BANISH);
|
DoCast(m_creature, AURA_BANISH);
|
||||||
|
|
||||||
// changing model
|
// changing model
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_DEMON);
|
m_creature->SetDisplayId(MODEL_DEMON);
|
||||||
|
|
||||||
// and removing weapons
|
// and removing weapons
|
||||||
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
|
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
|
||||||
@@ -457,7 +457,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
//switch to demon form
|
//switch to demon form
|
||||||
m_creature->RemoveAurasDueToSpell(SPELL_WHIRLWIND,0);
|
m_creature->RemoveAurasDueToSpell(SPELL_WHIRLWIND,0);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_DEMON);
|
m_creature->SetDisplayId(MODEL_DEMON);
|
||||||
DoScriptText(SAY_SWITCH_TO_DEMON, m_creature);
|
DoScriptText(SAY_SWITCH_TO_DEMON, m_creature);
|
||||||
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
|
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
|
||||||
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
|
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
|
||||||
@@ -534,7 +534,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
|||||||
if(SwitchToHuman_Timer < diff)
|
if(SwitchToHuman_Timer < diff)
|
||||||
{
|
{
|
||||||
//switch to nightelf form
|
//switch to nightelf form
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF);
|
m_creature->SetDisplayId(MODEL_NIGHTELF);
|
||||||
m_creature->LoadEquipment(m_creature->GetEquipmentId());
|
m_creature->LoadEquipment(m_creature->GetEquipmentId());
|
||||||
|
|
||||||
CastConsumingMadness();
|
CastConsumingMadness();
|
||||||
@@ -563,7 +563,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
|||||||
DemonForm = false;
|
DemonForm = false;
|
||||||
|
|
||||||
DoScriptText(SAY_FINAL_FORM, m_creature);
|
DoScriptText(SAY_FINAL_FORM, m_creature);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF);
|
m_creature->SetDisplayId(MODEL_NIGHTELF);
|
||||||
m_creature->LoadEquipment(m_creature->GetEquipmentId());
|
m_creature->LoadEquipment(m_creature->GetEquipmentId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+155
-209
@@ -17,133 +17,91 @@
|
|||||||
/* ScriptData
|
/* ScriptData
|
||||||
SDName: Boss_Morogrim_Tidewalker
|
SDName: Boss_Morogrim_Tidewalker
|
||||||
SD%Complete: 90
|
SD%Complete: 90
|
||||||
SDComment: Water globules don't explode properly, remove hacks
|
SDComment:
|
||||||
SDCategory: Coilfang Resevoir, Serpent Shrine Cavern
|
SDCategory: Coilfang Resevoir, Serpent Shrine Cavern
|
||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
#include "def_serpent_shrine.h"
|
#include "def_serpent_shrine.h"
|
||||||
|
|
||||||
#define SAY_AGGRO -1548030
|
enum
|
||||||
#define SAY_SUMMON1 -1548031
|
|
||||||
#define SAY_SUMMON2 -1548032
|
|
||||||
#define SAY_SUMMON_BUBL1 -1548033
|
|
||||||
#define SAY_SUMMON_BUBL2 -1548034
|
|
||||||
#define SAY_SLAY1 -1548035
|
|
||||||
#define SAY_SLAY2 -1548036
|
|
||||||
#define SAY_SLAY3 -1548037
|
|
||||||
#define SAY_DEATH -1548038
|
|
||||||
#define EMOTE_WATERY_GRAVE -1548039
|
|
||||||
#define EMOTE_EARTHQUAKE -1548040
|
|
||||||
#define EMOTE_WATERY_GLOBULES -1548041
|
|
||||||
|
|
||||||
#define SPELL_TIDAL_WAVE 37730
|
|
||||||
#define SPELL_WATERY_GRAVE 38049
|
|
||||||
#define SPELL_EARTHQUAKE 37764
|
|
||||||
#define SPELL_WATERY_GRAVE_EXPLOSION 37852
|
|
||||||
|
|
||||||
#define WATERY_GRAVE_X1 334.64
|
|
||||||
#define WATERY_GRAVE_Y1 -728.89
|
|
||||||
#define WATERY_GRAVE_Z1 -14.42
|
|
||||||
#define WATERY_GRAVE_X2 365.51
|
|
||||||
#define WATERY_GRAVE_Y2 -737.14
|
|
||||||
#define WATERY_GRAVE_Z2 -14.44
|
|
||||||
#define WATERY_GRAVE_X3 366.19
|
|
||||||
#define WATERY_GRAVE_Y3 -709.59
|
|
||||||
#define WATERY_GRAVE_Z3 -14.36
|
|
||||||
#define WATERY_GRAVE_X4 372.93
|
|
||||||
#define WATERY_GRAVE_Y4 -690.96
|
|
||||||
#define WATERY_GRAVE_Z4 -14.44
|
|
||||||
|
|
||||||
#define SPELL_WATERY_GRAVE_1 38023
|
|
||||||
#define SPELL_WATERY_GRAVE_2 38024
|
|
||||||
#define SPELL_WATERY_GRAVE_3 38025
|
|
||||||
#define SPELL_WATERY_GRAVE_4 37850
|
|
||||||
|
|
||||||
#define SPELL_SUMMON_WATER_GLOBULE_1 37854
|
|
||||||
#define SPELL_SUMMON_WATER_GLOBULE_2 37858
|
|
||||||
#define SPELL_SUMMON_WATER_GLOBULE_3 37860
|
|
||||||
#define SPELL_SUMMON_WATER_GLOBULE_4 37861
|
|
||||||
|
|
||||||
/*#define SPELL_SUMMON_MURLOC_A6 39813
|
|
||||||
#define SPELL_SUMMON_MURLOC_A7 39814
|
|
||||||
#define SPELL_SUMMON_MURLOC_A8 39815
|
|
||||||
#define SPELL_SUMMON_MURLOC_A9 39816
|
|
||||||
#define SPELL_SUMMON_MURLOC_A10 39817
|
|
||||||
|
|
||||||
#define SPELL_SUMMON_MURLOC_B6 39818
|
|
||||||
#define SPELL_SUMMON_MURLOC_B7 39819
|
|
||||||
#define SPELL_SUMMON_MURLOC_B8 39820
|
|
||||||
#define SPELL_SUMMON_MURLOC_B9 39821
|
|
||||||
#define SPELL_SUMMON_MURLOC_B10 39822*/
|
|
||||||
|
|
||||||
float MurlocCords[10][5] =
|
|
||||||
{
|
{
|
||||||
{21920, 424.36, -715.4, -7.14, 0.124},
|
SAY_AGGRO = -1548030,
|
||||||
{21920, 425.13, -719.3, -7.14, 0.124},
|
SAY_SUMMON1 = -1548031,
|
||||||
{21920, 425.05, -724.23, -7.14, 0.124},
|
SAY_SUMMON2 = -1548032,
|
||||||
{21920, 424.91, -728.68, -7.14, 0.124},
|
SAY_SUMMON_BUBL1 = -1548033,
|
||||||
{21920, 424.84, -732.18, -7.14, 0.124},
|
SAY_SUMMON_BUBL2 = -1548034,
|
||||||
{21920, 321.05, -734.2, -13.15, 0.124},
|
SAY_SLAY1 = -1548035,
|
||||||
{21920, 321.05, -729.4, -13.15, 0.124},
|
SAY_SLAY2 = -1548036,
|
||||||
{21920, 321.05, -724.03, -13.15, 0.124},
|
SAY_SLAY3 = -1548037,
|
||||||
{21920, 321.05, -718.73, -13.15, 0.124},
|
SAY_DEATH = -1548038,
|
||||||
{21920, 321.05, -714.24, -13.15, 0.124}
|
EMOTE_WATERY_GRAVE = -1548039,
|
||||||
};
|
EMOTE_EARTHQUAKE = -1548040,
|
||||||
|
EMOTE_WATERY_GLOBULES = -1548041,
|
||||||
|
|
||||||
//Creatures
|
SPELL_TIDAL_WAVE = 37730,
|
||||||
#define WATER_GLOBULE 21913
|
SPELL_EARTHQUAKE = 37764,
|
||||||
#define TIDEWALKER_LURKER 21920
|
|
||||||
|
SPELL_WATERY_GRAVE_1 = 37850,
|
||||||
|
SPELL_WATERY_GRAVE_2 = 38023,
|
||||||
|
SPELL_WATERY_GRAVE_3 = 38024,
|
||||||
|
SPELL_WATERY_GRAVE_4 = 38025,
|
||||||
|
|
||||||
|
SPELL_SUMMON_MURLOC_A6 = 39813,
|
||||||
|
SPELL_SUMMON_MURLOC_A7 = 39814,
|
||||||
|
SPELL_SUMMON_MURLOC_A8 = 39815,
|
||||||
|
SPELL_SUMMON_MURLOC_A9 = 39816,
|
||||||
|
SPELL_SUMMON_MURLOC_A10 = 39817,
|
||||||
|
|
||||||
|
SPELL_SUMMON_MURLOC_B6 = 39818,
|
||||||
|
SPELL_SUMMON_MURLOC_B7 = 39819,
|
||||||
|
SPELL_SUMMON_MURLOC_B8 = 39820,
|
||||||
|
SPELL_SUMMON_MURLOC_B9 = 39821,
|
||||||
|
SPELL_SUMMON_MURLOC_B10 = 39822,
|
||||||
|
|
||||||
|
SPELL_SUMMON_GLOBULE_1 = 37854,
|
||||||
|
SPELL_SUMMON_GLOBULE_2 = 37858,
|
||||||
|
SPELL_SUMMON_GLOBULE_3 = 37860,
|
||||||
|
SPELL_SUMMON_GLOBULE_4 = 37861,
|
||||||
|
|
||||||
|
NPC_WATER_GLOBULE = 21913,
|
||||||
|
NPC_TIDEWALKER_LURKER = 21920
|
||||||
|
};
|
||||||
|
|
||||||
//Morogrim Tidewalker AI
|
//Morogrim Tidewalker AI
|
||||||
struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI
|
struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_morogrim_tidewalkerAI(Creature *c) : ScriptedAI(c)
|
boss_morogrim_tidewalkerAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||||
{
|
{
|
||||||
pInstance = c->GetInstanceData();
|
m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData());
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptedInstance* pInstance;
|
ScriptedInstance* m_pInstance; // the instance
|
||||||
Map::PlayerList const *PlayerList;
|
|
||||||
|
|
||||||
uint32 TidalWave_Timer;
|
// timers
|
||||||
uint32 WateryGrave_Timer;
|
uint32 m_uiTidalWave_Timer;
|
||||||
uint32 Earthquake_Timer;
|
uint32 m_uiWateryGrave_Timer;
|
||||||
uint32 WateryGlobules_Timer;
|
uint32 m_uiEarthquake_Timer;
|
||||||
uint32 globulespell[4];
|
uint32 m_uiWateryGlobules_Timer;
|
||||||
int8 Playercount;
|
|
||||||
int8 counter;
|
|
||||||
|
|
||||||
bool Earthquake;
|
bool m_bEarthquake;
|
||||||
bool Phase2;
|
bool m_bPhase2;
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
TidalWave_Timer = 10000;
|
m_uiTidalWave_Timer = 10000;
|
||||||
WateryGrave_Timer = 30000;
|
m_uiWateryGrave_Timer = 30000;
|
||||||
Earthquake_Timer = 40000;
|
m_uiEarthquake_Timer = 40000;
|
||||||
WateryGlobules_Timer = 0;
|
m_uiWateryGlobules_Timer = 0;
|
||||||
globulespell[0] = SPELL_SUMMON_WATER_GLOBULE_1;
|
|
||||||
globulespell[1] = SPELL_SUMMON_WATER_GLOBULE_2;
|
|
||||||
globulespell[2] = SPELL_SUMMON_WATER_GLOBULE_3;
|
|
||||||
globulespell[3] = SPELL_SUMMON_WATER_GLOBULE_4;
|
|
||||||
|
|
||||||
Earthquake = false;
|
m_bEarthquake = false;
|
||||||
Phase2 = false;
|
m_bPhase2 = false;
|
||||||
|
|
||||||
if (pInstance)
|
if (m_pInstance)
|
||||||
pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED);
|
m_pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartEvent()
|
void KilledUnit(Unit* pVictim)
|
||||||
{
|
|
||||||
DoScriptText(SAY_AGGRO, m_creature);
|
|
||||||
|
|
||||||
if (pInstance)
|
|
||||||
pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, IN_PROGRESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void KilledUnit(Unit *victim)
|
|
||||||
{
|
{
|
||||||
switch(rand()%3)
|
switch(rand()%3)
|
||||||
{
|
{
|
||||||
@@ -153,137 +111,130 @@ struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit* pVictim)
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_DEATH, m_creature);
|
DoScriptText(SAY_DEATH, m_creature);
|
||||||
|
|
||||||
if (pInstance)
|
if (m_pInstance)
|
||||||
pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, DONE);
|
m_pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void Aggro(Unit* pWho)
|
||||||
{
|
{
|
||||||
PlayerList = &m_creature->GetMap()->GetPlayers();
|
DoScriptText(SAY_AGGRO, m_creature);
|
||||||
Playercount = PlayerList->getSize();
|
|
||||||
StartEvent();
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, IN_PROGRESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ApplyWateryGrave(Unit *player, uint8 i)
|
void JustSummoned(Creature* pSummoned)
|
||||||
{
|
{
|
||||||
switch(i)
|
if (pSummoned->GetEntry() == NPC_TIDEWALKER_LURKER)
|
||||||
{
|
{
|
||||||
case 0: player->CastSpell(player, SPELL_WATERY_GRAVE_1, true); break;
|
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||||
case 1: player->CastSpell(player, SPELL_WATERY_GRAVE_2, true); break;
|
pSummoned->AI()->AttackStart(pTarget);
|
||||||
case 2: player->CastSpell(player, SPELL_WATERY_GRAVE_3, true); break;
|
}
|
||||||
case 3: player->CastSpell(player, SPELL_WATERY_GRAVE_4, true); break;
|
|
||||||
|
if (pSummoned->GetEntry() == NPC_WATER_GLOBULE)
|
||||||
|
{
|
||||||
|
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||||
|
pSummoned->GetMotionMaster()->MoveFollow(pTarget, 0.0f, 0.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 uiDiff)
|
||||||
{
|
{
|
||||||
//Return since we have no target
|
//Return since we have no target
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Earthquake_Timer
|
//m_uiEarthquake_Timer
|
||||||
if (Earthquake_Timer < diff)
|
if (m_uiEarthquake_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
if (!Earthquake)
|
if (!m_bEarthquake)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_EARTHQUAKE);
|
DoCast(m_creature->getVictim(), SPELL_EARTHQUAKE);
|
||||||
Earthquake = true;
|
m_bEarthquake = true;
|
||||||
Earthquake_Timer = 10000;
|
m_uiEarthquake_Timer = 5000;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch(rand()%2)
|
DoScriptText(urand(0,1) ? SAY_SUMMON1 : SAY_SUMMON2, m_creature);
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_SUMMON1, m_creature); break;
|
//north
|
||||||
case 1: DoScriptText(SAY_SUMMON2, m_creature); break;
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A6,true);
|
||||||
}
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A7,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A8,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A9,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_A10,true);
|
||||||
|
|
||||||
|
//south
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B6,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B7,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B8,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B9,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_MURLOC_B10,true);
|
||||||
|
|
||||||
for(uint8 i = 0; i < 10; i++)
|
|
||||||
{
|
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
|
||||||
Creature* Murloc = m_creature->SummonCreature(MurlocCords[i][0],MurlocCords[i][1],MurlocCords[i][2],MurlocCords[i][3],MurlocCords[i][4], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
|
|
||||||
if(target && Murloc)
|
|
||||||
Murloc->AI()->AttackStart(target);
|
|
||||||
}
|
|
||||||
DoScriptText(EMOTE_EARTHQUAKE, m_creature);
|
DoScriptText(EMOTE_EARTHQUAKE, m_creature);
|
||||||
Earthquake = false;
|
|
||||||
Earthquake_Timer = 40000+rand()%5000;
|
|
||||||
}
|
|
||||||
}else Earthquake_Timer -= diff;
|
|
||||||
|
|
||||||
//TidalWave_Timer
|
m_bEarthquake = false;
|
||||||
if (TidalWave_Timer < diff)
|
m_uiEarthquake_Timer = 40000+rand()%5000;
|
||||||
|
}
|
||||||
|
}else m_uiEarthquake_Timer -= uiDiff;
|
||||||
|
|
||||||
|
//m_uiTidalWave_Timer
|
||||||
|
if (m_uiTidalWave_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_TIDAL_WAVE);
|
DoCast(m_creature->getVictim(), SPELL_TIDAL_WAVE);
|
||||||
TidalWave_Timer = 20000;
|
m_uiTidalWave_Timer = 20000;
|
||||||
}else TidalWave_Timer -= diff;
|
}else m_uiTidalWave_Timer -= uiDiff;
|
||||||
|
|
||||||
if (!Phase2)
|
if (!m_bPhase2)
|
||||||
{
|
{
|
||||||
//WateryGrave_Timer
|
//m_uiWateryGrave_Timer
|
||||||
if (WateryGrave_Timer < diff)
|
if (m_uiWateryGrave_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
//Teleport 4 players under the waterfalls
|
//Teleport 4 players under the waterfalls
|
||||||
Unit *target;
|
|
||||||
using std::set;
|
|
||||||
set<int>list;
|
|
||||||
set<int>::iterator itr;
|
|
||||||
for(uint8 i = 0; i < 4; i++)
|
for(uint8 i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
counter = 0;
|
Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);
|
||||||
do{target = SelectTarget(SELECT_TARGET_RANDOM, 1, 50, true); //target players only
|
|
||||||
if(counter < Playercount)
|
|
||||||
break;
|
|
||||||
if(target) itr = list.find(target->GetGUID());
|
|
||||||
counter++;
|
|
||||||
}while(itr != list.end());
|
|
||||||
if(target){list.insert(target->GetGUID());
|
|
||||||
ApplyWateryGrave(target, i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(rand()%2)
|
if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER && !pTarget->HasAuraType(SPELL_AURA_MOD_STUN) && pTarget->IsWithinDistInMap(m_creature, 45.0f))
|
||||||
{
|
{
|
||||||
case 0: DoScriptText(SAY_SUMMON_BUBL1, m_creature); break;
|
switch(i)
|
||||||
case 1: DoScriptText(SAY_SUMMON_BUBL2, m_creature); break;
|
{
|
||||||
|
case 0: m_creature->CastSpell(pTarget,SPELL_WATERY_GRAVE_1,false); break;
|
||||||
|
case 1: m_creature->CastSpell(pTarget,SPELL_WATERY_GRAVE_2,false); break;
|
||||||
|
case 2: m_creature->CastSpell(pTarget,SPELL_WATERY_GRAVE_3,false); break;
|
||||||
|
case 3: m_creature->CastSpell(pTarget,SPELL_WATERY_GRAVE_4,false); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DoScriptText(urand(0,1) ? SAY_SUMMON_BUBL1 : SAY_SUMMON_BUBL2, m_creature);
|
||||||
DoScriptText(EMOTE_WATERY_GRAVE, m_creature);
|
DoScriptText(EMOTE_WATERY_GRAVE, m_creature);
|
||||||
WateryGrave_Timer = 30000;
|
|
||||||
}else WateryGrave_Timer -= diff;
|
m_uiWateryGrave_Timer = 30000;
|
||||||
|
}else m_uiWateryGrave_Timer -= uiDiff;
|
||||||
|
|
||||||
//Start Phase2
|
//Start Phase2
|
||||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25)
|
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25)
|
||||||
Phase2 = true;
|
m_bPhase2 = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//WateryGlobules_Timer
|
//m_uiWateryGlobules_Timer
|
||||||
if (WateryGlobules_Timer < diff)
|
if (m_uiWateryGlobules_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
Unit* globuletarget;
|
|
||||||
using std::set;
|
|
||||||
set<int>globulelist;
|
|
||||||
set<int>::iterator itr;
|
|
||||||
for (int8 g = 0; g < 4; g++) //one unit cant cast more than one spell per update, so some players have to cast for us XD
|
|
||||||
{
|
|
||||||
counter = 0;
|
|
||||||
do {globuletarget = SelectTarget(SELECT_TARGET_RANDOM, 0,50,true);
|
|
||||||
if(globuletarget) itr = globulelist.find(globuletarget->GetGUID());
|
|
||||||
if (counter > Playercount)
|
|
||||||
break;
|
|
||||||
counter++;
|
|
||||||
} while (itr != globulelist.end());
|
|
||||||
if(globuletarget)globulelist.insert(globuletarget->GetGUID());
|
|
||||||
globuletarget->CastSpell(globuletarget, globulespell[g], true);
|
|
||||||
}
|
|
||||||
DoScriptText(EMOTE_WATERY_GLOBULES, m_creature);
|
DoScriptText(EMOTE_WATERY_GLOBULES, m_creature);
|
||||||
WateryGlobules_Timer = 25000;
|
|
||||||
}else WateryGlobules_Timer -= diff;
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_GLOBULE_1,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_GLOBULE_2,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_GLOBULE_3,true);
|
||||||
|
m_creature->CastSpell(m_creature,SPELL_SUMMON_GLOBULE_4,false);
|
||||||
|
|
||||||
|
m_uiWateryGlobules_Timer = 25000;
|
||||||
|
}else m_uiWateryGlobules_Timer -= uiDiff;
|
||||||
}
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
@@ -291,67 +242,63 @@ struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI
|
|||||||
};
|
};
|
||||||
|
|
||||||
//Water Globule AI
|
//Water Globule AI
|
||||||
#define SPELL_GLOBULE_EXPLOSION 37871
|
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL mob_water_globuleAI : public ScriptedAI
|
struct TRINITY_DLL_DECL mob_water_globuleAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
mob_water_globuleAI(Creature* c) : ScriptedAI(c) { }
|
mob_water_globuleAI(Creature* c) : ScriptedAI(c) { }
|
||||||
|
|
||||||
uint32 Check_Timer;
|
// timers
|
||||||
|
uint32 m_uiCheck_Timer;
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
Check_Timer = 1000;
|
m_uiCheck_Timer = 1000;
|
||||||
|
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->setFaction(14);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who) {}
|
void Aggro(Unit* pWho) {}
|
||||||
|
|
||||||
void MoveInLineOfSight(Unit *who)
|
void MoveInLineOfSight(Unit* pWho)
|
||||||
{
|
{
|
||||||
if (!who || m_creature->getVictim())
|
if (!pWho || m_creature->getVictim())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (who->isTargetableForAttack() && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who))
|
if (pWho->isTargetableForAttack() && pWho->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(pWho))
|
||||||
{
|
{
|
||||||
//no attack radius check - it attacks the first target that moves in his los
|
//no attack radius check - it attacks the first target that moves in his los
|
||||||
//who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
|
//pWho->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
|
||||||
AttackStart(who);
|
AttackStart(pWho);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 uiDiff)
|
||||||
{
|
{
|
||||||
//Return since we have no target
|
//Return since we have no target
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Check_Timer < diff)
|
if (m_uiCheck_Timer < uiDiff)
|
||||||
{
|
{
|
||||||
if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 5))
|
if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 5))
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_GLOBULE_EXPLOSION);
|
m_creature->DealDamage(m_creature->getVictim(), 4000+rand()%2000, NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_FROST, NULL, false);
|
||||||
|
|
||||||
//despawn
|
//despawn
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||||
}
|
}
|
||||||
Check_Timer = 500;
|
m_uiCheck_Timer = 500;
|
||||||
}else Check_Timer -= diff;
|
}else m_uiCheck_Timer -= uiDiff;
|
||||||
|
|
||||||
//do NOT deal any melee damage to the target.
|
//do NOT deal any melee damage to the target.
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CreatureAI* GetAI_boss_morogrim_tidewalker(Creature *_Creature)
|
CreatureAI* GetAI_boss_morogrim_tidewalker(Creature* pCreature)
|
||||||
{
|
{
|
||||||
return new boss_morogrim_tidewalkerAI (_Creature);
|
return new boss_morogrim_tidewalkerAI (pCreature);
|
||||||
}
|
}
|
||||||
CreatureAI* GetAI_mob_water_globule(Creature *_Creature)
|
CreatureAI* GetAI_mob_water_globule(Creature* pCreature)
|
||||||
{
|
{
|
||||||
return new mob_water_globuleAI (_Creature);
|
return new mob_water_globuleAI (pCreature);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddSC_boss_morogrim_tidewalker()
|
void AddSC_boss_morogrim_tidewalker()
|
||||||
@@ -368,4 +315,3 @@ void AddSC_boss_morogrim_tidewalker()
|
|||||||
newscript->GetAI = &GetAI_mob_water_globule;
|
newscript->GetAI = &GetAI_mob_water_globule;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI
|
|||||||
m_creature->setFaction(7);
|
m_creature->setFaction(7);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 8);
|
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 8);
|
||||||
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
|
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, m_creature->GetNativeDisplayId());
|
m_creature->SetDisplayId(m_creature->GetNativeDisplayId());
|
||||||
event_starter = 0;
|
event_starter = 0;
|
||||||
event_startet = false;
|
event_startet = false;
|
||||||
|
|
||||||
@@ -183,7 +183,7 @@ struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, modelid_dk_armor[model_counter]);
|
m_creature->SetDisplayId(modelid_dk_armor[model_counter]);
|
||||||
m_creature->LoadEquipment(m_creature->GetEquipmentId());
|
m_creature->LoadEquipment(m_creature->GetEquipmentId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+38
@@ -53,6 +53,7 @@ struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance
|
|||||||
uint64 PrisonCell8GUID;
|
uint64 PrisonCell8GUID;
|
||||||
|
|
||||||
uint32 Encounter[ENCOUNTERS];
|
uint32 Encounter[ENCOUNTERS];
|
||||||
|
std::string str_data;
|
||||||
|
|
||||||
void Initialize()
|
void Initialize()
|
||||||
{
|
{
|
||||||
@@ -158,6 +159,19 @@ struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance
|
|||||||
case TYPE_BROGGOK_EVENT: Encounter[1] = data; break;
|
case TYPE_BROGGOK_EVENT: Encounter[1] = data; break;
|
||||||
case TYPE_KELIDAN_THE_BREAKER_EVENT: Encounter[2] = data; break;
|
case TYPE_KELIDAN_THE_BREAKER_EVENT: Encounter[2] = data; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (data == DONE)
|
||||||
|
{
|
||||||
|
OUT_SAVE_INST_DATA;
|
||||||
|
|
||||||
|
std::ostringstream saveStream;
|
||||||
|
saveStream << Encounter[0] << " " << Encounter[1] << " " << Encounter[2];
|
||||||
|
|
||||||
|
str_data = saveStream.str();
|
||||||
|
|
||||||
|
SaveToDB();
|
||||||
|
OUT_SAVE_INST_DATA_COMPLETE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 GetData(uint32 data)
|
uint32 GetData(uint32 data)
|
||||||
@@ -172,6 +186,30 @@ struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* Save()
|
||||||
|
{
|
||||||
|
return str_data.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Load(const char* in)
|
||||||
|
{
|
||||||
|
if (!in)
|
||||||
|
{
|
||||||
|
OUT_LOAD_INST_DATA_FAIL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OUT_LOAD_INST_DATA(in);
|
||||||
|
|
||||||
|
std::istringstream loadStream(in);
|
||||||
|
loadStream >> Encounter[0] >> Encounter[1] >> Encounter[2];
|
||||||
|
|
||||||
|
for(uint8 i = 0; i < ENCOUNTERS; ++i)
|
||||||
|
if (Encounter[i] == IN_PROGRESS || Encounter[i] == FAIL)
|
||||||
|
Encounter[i] = NOT_STARTED;
|
||||||
|
|
||||||
|
OUT_LOAD_INST_DATA_COMPLETE;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ struct TRINITY_DLL_DECL boss_midnightAI : public ScriptedAI
|
|||||||
m_creature->GetMotionMaster()->MoveIdle();
|
m_creature->GetMotionMaster()->MoveIdle();
|
||||||
if (Unit *pAttumen = Unit::GetUnit(*m_creature, Attumen))
|
if (Unit *pAttumen = Unit::GetUnit(*m_creature, Attumen))
|
||||||
{
|
{
|
||||||
pAttumen->SetUInt32Value(UNIT_FIELD_DISPLAYID, MOUNTED_DISPLAYID);
|
pAttumen->SetDisplayId(MOUNTED_DISPLAYID);
|
||||||
pAttumen->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
pAttumen->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
if(pAttumen->getVictim())
|
if(pAttumen->getVictim())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ struct TRINITY_DLL_DECL netherspite_infernalAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if(spell->Id == SPELL_INFERNAL_RELAY)
|
if(spell->Id == SPELL_INFERNAL_RELAY)
|
||||||
{
|
{
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, m_creature->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
|
m_creature->SetDisplayId(m_creature->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
HellfireTimer = 4000;
|
HellfireTimer = 4000;
|
||||||
CleanupTimer = 170000;
|
CleanupTimer = 170000;
|
||||||
@@ -368,7 +368,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
|||||||
|
|
||||||
if (Infernal)
|
if (Infernal)
|
||||||
{
|
{
|
||||||
Infernal->SetUInt32Value(UNIT_FIELD_DISPLAYID, INFERNAL_MODEL_INVISIBLE);
|
Infernal->SetDisplayId(INFERNAL_MODEL_INVISIBLE);
|
||||||
Infernal->setFaction(m_creature->getFaction());
|
Infernal->setFaction(m_creature->getFaction());
|
||||||
if(point)
|
if(point)
|
||||||
CAST_AI(netherspite_infernalAI, Infernal->AI())->point=point;
|
CAST_AI(netherspite_infernalAI, Infernal->AI())->point=point;
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ struct TRINITY_DLL_DECL boss_noxxionAI : public ScriptedAI
|
|||||||
m_creature->setFaction(14);
|
m_creature->setFaction(14);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
//Noxxion model
|
//Noxxion model
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11172);
|
m_creature->SetDisplayId(11172);
|
||||||
Invisible = false;
|
Invisible = false;
|
||||||
//m_creature->m_canMove = true;
|
//m_creature->m_canMove = true;
|
||||||
} else if (Invisible)
|
} else if (Invisible)
|
||||||
@@ -119,7 +119,7 @@ struct TRINITY_DLL_DECL boss_noxxionAI : public ScriptedAI
|
|||||||
m_creature->setFaction(35);
|
m_creature->setFaction(35);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
// Invisible Model
|
// Invisible Model
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11686);
|
m_creature->SetDisplayId(11686);
|
||||||
SummonAdds(m_creature->getVictim());
|
SummonAdds(m_creature->getVictim());
|
||||||
SummonAdds(m_creature->getVictim());
|
SummonAdds(m_creature->getVictim());
|
||||||
SummonAdds(m_creature->getVictim());
|
SummonAdds(m_creature->getVictim());
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI
|
|||||||
//Become visible again
|
//Become visible again
|
||||||
m_creature->setFaction(14);
|
m_creature->setFaction(14);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11073); //Jandice Model
|
m_creature->SetDisplayId(11073); //Jandice Model
|
||||||
Invisible = false;
|
Invisible = false;
|
||||||
} else if (Invisible)
|
} else if (Invisible)
|
||||||
{
|
{
|
||||||
@@ -114,7 +114,7 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI
|
|||||||
m_creature->InterruptNonMeleeSpells(false);
|
m_creature->InterruptNonMeleeSpells(false);
|
||||||
m_creature->setFaction(35);
|
m_creature->setFaction(35);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11686); // Invisible Model
|
m_creature->SetDisplayId(11686); // Invisible Model
|
||||||
DoModifyThreatPercent(m_creature->getVictim(),-99);
|
DoModifyThreatPercent(m_creature->getVictim(),-99);
|
||||||
|
|
||||||
//Summon 10 Illusions attacking random gamers
|
//Summon 10 Illusions attacking random gamers
|
||||||
|
|||||||
@@ -1470,17 +1470,17 @@ struct TRINITY_DLL_DECL npc_lord_illidan_stormrageAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if(rand()%3 == 1 && FelguardCount<2)
|
if(rand()%3 == 1 && FelguardCount<2)
|
||||||
{
|
{
|
||||||
Spawn->SetUInt32Value(UNIT_FIELD_DISPLAYID,18654);
|
Spawn->SetDisplayId(18654);
|
||||||
++FelguardCount;
|
++FelguardCount;
|
||||||
}
|
}
|
||||||
else if(DreadlordCount < 3)
|
else if(DreadlordCount < 3)
|
||||||
{
|
{
|
||||||
Spawn->SetUInt32Value(UNIT_FIELD_DISPLAYID,19991);
|
Spawn->SetDisplayId(19991);
|
||||||
++DreadlordCount;
|
++DreadlordCount;
|
||||||
}
|
}
|
||||||
else if(FelguardCount<2)
|
else if(FelguardCount<2)
|
||||||
{
|
{
|
||||||
Spawn->SetUInt32Value(UNIT_FIELD_DISPLAYID,18654);
|
Spawn->SetDisplayId(18654);
|
||||||
++FelguardCount;
|
++FelguardCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI
|
|||||||
// MindControl_Timer = 10000;
|
// MindControl_Timer = 10000;
|
||||||
Transformed = false;
|
Transformed = false;
|
||||||
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,10545);
|
m_creature->SetDisplayId(10545);
|
||||||
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.00f);
|
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.00f);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -207,7 +207,7 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
//Cast
|
//Cast
|
||||||
DoCast(m_creature,SPELL_BALNAZZARTRANSFORM); //restore hp, mana and stun
|
DoCast(m_creature,SPELL_BALNAZZARTRANSFORM); //restore hp, mana and stun
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,10691); //then change disaply id
|
m_creature->SetDisplayId(10691); //then change disaply id
|
||||||
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 3.00f); //then, change size
|
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 3.00f); //then, change size
|
||||||
Transformed = true;
|
Transformed = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,9 +56,9 @@ struct TRINITY_DLL_DECL boss_magistrate_barthilasAI : public ScriptedAI
|
|||||||
AngerCount = 0;
|
AngerCount = 0;
|
||||||
|
|
||||||
if (m_creature->isAlive())
|
if (m_creature->isAlive())
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NORMAL);
|
m_creature->SetDisplayId(MODEL_NORMAL);
|
||||||
else
|
else
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_HUMAN);
|
m_creature->SetDisplayId(MODEL_HUMAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveInLineOfSight(Unit *who)
|
void MoveInLineOfSight(Unit *who)
|
||||||
@@ -70,7 +70,7 @@ struct TRINITY_DLL_DECL boss_magistrate_barthilasAI : public ScriptedAI
|
|||||||
|
|
||||||
void JustDied(Unit* Killer)
|
void JustDied(Unit* Killer)
|
||||||
{
|
{
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_HUMAN);
|
m_creature->SetDisplayId(MODEL_HUMAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI
|
|||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_DEFAULT);
|
m_creature->SetDisplayId(MODEL_DEFAULT);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, true);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, true);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
||||||
@@ -74,7 +74,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI
|
|||||||
switch(rand()%5)
|
switch(rand()%5)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_DEFAULT);
|
m_creature->SetDisplayId(MODEL_DEFAULT);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, true);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, true);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
||||||
@@ -82,7 +82,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI
|
|||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_ARCANE);
|
m_creature->SetDisplayId(MODEL_ARCANE);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, true);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, true);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
||||||
@@ -90,7 +90,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI
|
|||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_FIRE);
|
m_creature->SetDisplayId(MODEL_FIRE);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
|
||||||
@@ -98,7 +98,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI
|
|||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_FROST);
|
m_creature->SetDisplayId(MODEL_FROST);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
||||||
@@ -106,7 +106,7 @@ struct TRINITY_DLL_DECL boss_lajAI : public ScriptedAI
|
|||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,MODEL_NATURE);
|
m_creature->SetDisplayId(MODEL_NATURE);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, false);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, false);
|
||||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI
|
|||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->SetVisibility(VISIBILITY_ON);
|
m_creature->SetVisibility(VISIBILITY_ON);
|
||||||
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize);
|
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_HUMAN);
|
m_creature->SetDisplayId(MODEL_HUMAN);
|
||||||
|
|
||||||
Summons.DespawnAll();
|
Summons.DespawnAll();
|
||||||
}
|
}
|
||||||
@@ -155,7 +155,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI
|
|||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
{
|
{
|
||||||
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize);
|
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_HUMAN);
|
m_creature->SetDisplayId(MODEL_HUMAN);
|
||||||
DoScriptText(SAY_DEATH, m_creature);
|
DoScriptText(SAY_DEATH, m_creature);
|
||||||
|
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
@@ -381,7 +381,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI
|
|||||||
DoScriptText(SAY_VOIDA, m_creature);
|
DoScriptText(SAY_VOIDA, m_creature);
|
||||||
DoScriptText(SAY_VOIDB, m_creature);
|
DoScriptText(SAY_VOIDB, m_creature);
|
||||||
m_creature->SetArmor(WV_ARMOR);
|
m_creature->SetArmor(WV_ARMOR);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_VOIDWALKER);
|
m_creature->SetDisplayId(MODEL_VOIDWALKER);
|
||||||
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize*2.5f);
|
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize*2.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -89,7 +89,7 @@ struct TRINITY_DLL_DECL boss_ingvar_the_plundererAI : public ScriptedAI
|
|||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
if(undead) // Visual Hack
|
if(undead) // Visual Hack
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INGVAR_HUMAN);
|
m_creature->SetDisplayId(MODEL_INGVAR_HUMAN);
|
||||||
|
|
||||||
undead = false;
|
undead = false;
|
||||||
event_inProgress = false;
|
event_inProgress = false;
|
||||||
@@ -362,7 +362,7 @@ struct TRINITY_DLL_DECL mob_annhylde_the_callerAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
ingvar->RemoveAurasDueToSpell(SPELL_SCOURG_RESURRECTION_DUMMY);
|
ingvar->RemoveAurasDueToSpell(SPELL_SCOURG_RESURRECTION_DUMMY);
|
||||||
//ingvar->CastSpell(ingvar,SPELL_INGVAR_TRANSFORM,false);
|
//ingvar->CastSpell(ingvar,SPELL_INGVAR_TRANSFORM,false);
|
||||||
ingvar->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INGVAR_UNDEAD); // Visual Hack - when he dies he becomes human model -> wrong
|
ingvar->SetDisplayId(MODEL_INGVAR_UNDEAD); // Visual Hack - when he dies he becomes human model -> wrong
|
||||||
Creature* c_ingvar = ingvar;
|
Creature* c_ingvar = ingvar;
|
||||||
|
|
||||||
CAST_AI(boss_ingvar_the_plundererAI, (c_ingvar->AI()))->StartZombiePhase();
|
CAST_AI(boss_ingvar_the_plundererAI, (c_ingvar->AI()))->StartZombiePhase();
|
||||||
|
|||||||
@@ -392,7 +392,7 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trigger->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686);
|
trigger->SetDisplayId(11686);
|
||||||
trigger->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
trigger->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
trigger->CastSpell(target, SPELL_SIPHON_SOUL, true);
|
trigger->CastSpell(target, SPELL_SIPHON_SOUL, true);
|
||||||
trigger->GetMotionMaster()->MoveChase(m_creature);
|
trigger->GetMotionMaster()->MoveChase(m_creature);
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI
|
|||||||
PhaseTwo = false;
|
PhaseTwo = false;
|
||||||
VanishedOnce = false;
|
VanishedOnce = false;
|
||||||
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15218);
|
m_creature->SetDisplayId(15218);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI
|
|||||||
void JustDied(Unit* Killer)
|
void JustDied(Unit* Killer)
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_DEATH, m_creature);
|
DoScriptText(SAY_DEATH, m_creature);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15218);
|
m_creature->SetDisplayId(15218);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
@@ -143,7 +143,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI
|
|||||||
if (Vanish_Timer < diff)
|
if (Vanish_Timer < diff)
|
||||||
{
|
{
|
||||||
//Invisble Model
|
//Invisble Model
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,11686);
|
m_creature->SetDisplayId(11686);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
//m_creature->CombatStop();
|
//m_creature->CombatStop();
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
@@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI
|
|||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
//The Panther Model
|
//The Panther Model
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15215);
|
m_creature->SetDisplayId(15215);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
const CreatureInfo *cinfo = m_creature->GetCreatureInfo();
|
const CreatureInfo *cinfo = m_creature->GetCreatureInfo();
|
||||||
@@ -169,7 +169,7 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI
|
|||||||
if(target)
|
if(target)
|
||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
//The Panther Model
|
//The Panther Model
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15215);
|
m_creature->SetDisplayId(15215);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
PhaseTwo = true;
|
PhaseTwo = true;
|
||||||
}else Visible_Timer -= diff;
|
}else Visible_Timer -= diff;
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ struct TRINITY_DLL_DECL boss_jeklikAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15219);
|
m_creature->SetDisplayId(15219);
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
PhaseTwo = true;
|
PhaseTwo = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI
|
|||||||
|
|
||||||
if (TransformBack_Timer < diff)
|
if (TransformBack_Timer < diff)
|
||||||
{
|
{
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15220);
|
m_creature->SetDisplayId(15220);
|
||||||
const CreatureInfo *cinfo = m_creature->GetCreatureInfo();
|
const CreatureInfo *cinfo = m_creature->GetCreatureInfo();
|
||||||
m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1)));
|
m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1)));
|
||||||
m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1)));
|
m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1)));
|
||||||
|
|||||||
Reference in New Issue
Block a user