51#define MIDDLE_X 30.134f
52#define MIDDLE_Y -923.65f
55#define SPOREBAT_X 30.977156f
56#define SPOREBAT_Y -925.297761f
57#define SPOREBAT_Z 77.176567f
58#define SPOREBAT_O 5.223932f
62#define TEXT_NOT_INITIALIZED "Instance script not initialized"
63#define TEXT_ALREADY_DEACTIVATED "Already deactivated"
67 {8.3f, -835.3f, 21.9f, 5.0f},
68 {53.4f, -835.3f, 21.9f, 4.5f},
69 {96.0f, -861.9f, 21.8f, 4.0f},
70 {96.0f, -986.4f, 21.4f, 2.5f},
71 {54.4f, -1010.6f, 22, 1.8f},
72 {9.8f, -1012, 21.7f, 1.4f},
73 {-35.0f, -987.6f, 21.5f, 0.8f},
74 {-58.9f, -901.6f, 21.5f, 6.0f}
79 {71.700752f, -883.905884f, 41.097168f},
80 {45.039848f, -868.022827f, 41.097015f},
81 {14.585141f, -867.894470f, 41.097061f},
82 {-25.415508f, -906.737732f, 41.097061f},
83 {-11.801594f, -963.405884f, 41.097067f},
84 {14.556657f, -979.051514f, 41.097137f},
85 {43.466549f, -979.406677f, 41.097027f},
86 {69.945908f, -964.663940f, 41.097054f}
91 {31.6f, -896.3f, 59.1f},
92 {9.1f, -913.9f, 56.0f},
93 {5.2f, -934.4f, 52.4f},
94 {20.7f, -946.9f, 49.7f},
95 {41.0f, -941.9f, 51.0f},
96 {47.7f, -927.3f, 55.0f},
97 {42.2f, -912.4f, 51.7f},
98 {27.0f, -905.9f, 50.0f}
103 {28.84f, -923.28f, 42.9f, 6.0f},
104 {31.183281f, -953.502625f, 41.523602f, 1.640957f},
105 {58.895180f, -923.124268f, 41.545307f, 3.152848f}
110 {66.427010f, -948.778503f, 41.262245f, 2.584220f},
111 {7.513962f, -959.538208f, 41.300422f, 1.034629f},
112 {-12.843201f, -907.798401f, 41.239620f, 6.087094f}
117 {49.6262f, -902.181f, 43.0975f, 3.95683f},
118 {10.988f, -901.616f, 42.5371f, 5.4373f},
119 {10.3859f, -944.036f, 42.5446f, 0.779888f},
120 {49.3126f, -943.398f, 42.5501f, 2.40174f}
141 for (
uint8 i = 0; i < 4; ++i)
193 for (
uint8 i = 0; i < 4; ++i)
208 me->SetCorpseDelay(1000*60*60);
246 Map* map =
me->GetMap();
249 if (
Player* player = itr->GetSource())
250 player->DestroyItemCount(31088, 1,
true);
268 if (!who ||
me->GetVictim())
271 if (
me->CanCreatureAttack(who))
273 float attackRadius =
me->GetAttackDistance(who);
276 if (!
me->IsInCombat())
287 switch (std::rand() % 1)
323 if (
Phase == 2 && !
me->GetVictim() &&
me->IsInCombat())
340 me->TauntApply(
me->GetVictim());
385 me->GetMotionMaster()->Clear();
388 for (
uint8 i = 0; i < 4; ++i)
403 sporebat->AI()->AttackStart(target);
423 bool inMeleeRange =
false;
424 std::list<HostileReference*> t_list =
me->getThreatManager().getThreatList();
425 for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
453 target =
me->GetVictim();
491 else if (
me->GetVictim())
504 CoilfangStrider->AI()->AttackStart(target);
505 else if (
me->GetVictim())
506 CoilfangStrider->AI()->AttackStart(
me->GetVictim());
518 me->SetHealth(
me->CountPctFromMaxHealth(50));
527 me->GetMotionMaster()->MoveChase(
me->GetVictim());
576 for (
uint32 i = 1; i < 8; ++i)
607 me->GetMotionMaster()->MovePoint(0,
X,
Y,
Z);
608 if (
Phase == 1 &&
me->IsWithinDist3d(
X,
Y,
Z, 0.1f))
669 me->AddThreat(who, 0.1f);
727 me->SetDisableGravity(
true);
766 trig->setFaction(14);
823 me->SetDisplayId(11686);
875 uint8 channelIdentifier;
876 switch (gObj->GetEntry())
880 channelIdentifier = 0;
884 channelIdentifier = 1;
888 channelIdentifier = 2;
892 channelIdentifier = 3;
898 if (instance->
GetData(identifier))
908 instance->
SetData(identifier, 1);
911 player->DestroyItemCount(31088, 1,
true);
918 player->DestroyItemCount(31088, 1,
true);
919 player->CastSpell(targets.GetUnitTarget(), 38134,
true);
#define CREATURE_Z_ATTACK_RANGE
@ TEMPSUMMON_CORPSE_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
@ TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_DEAD_DESPAWN
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_NOT_SELECTABLE
void AddSC_boss_lady_vashj()
float SporebatWPPos[8][3]
@ SHIED_GENERATOR_CHANNEL
@ SPELL_STATIC_CHARGE_TRIGGER
float CoilfangElitePos[3][4]
#define TEXT_NOT_INITIALIZED
float CoilfangStriderPos[3][4]
float ShieldGeneratorChannelPos[4][4]
#define TEXT_ALREADY_DEACTIVATED
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
virtual void EnterEvadeMode()
CreatureScript(const char *name)
ItemScript(const char *name)
PlayerList const & GetPlayers() const
LinkedListHead::Iterator< MapReference const > const_iterator
void SetFlag(uint16 index, uint32 newFlag)
void DoMeleeAttackIfReady()
void DoCast(uint32 spellId)
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
void DoCastVictim(uint32 spellId, bool triggered=false)
virtual void AttackStart(Unit *)
bool HasAura(uint32 spellId, uint64 casterGUID=0, uint64 itemCasterGUID=0, uint32 reqEffMask=0) const
static Creature * GetCreature(WorldObject &object, uint64 guid)
static Unit * GetUnit(WorldObject &object, uint64 guid)
InstanceScript * GetInstanceScript()
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true) const
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
virtual uint64 GetData64(uint32) const
CreatureAI * GetAI(Creature *creature) const OVERRIDE
bool OnUse(Player *player, Item *, SpellCastTargets const &targets) OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
npc_enchanted_elemental()
npc_shield_generator_channel()
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
void DoTeleportTo(float x, float y, float z, uint32 time=0)
bool HealthBelowPct(uint32 pct) const
ScriptedAI(Creature *creature)
void AttackStart(Unit *) OVERRIDE
boss_lady_vashjAI(Creature *creature)
void JustDied(Unit *) OVERRIDE
void EnterCombat(Unit *who) OVERRIDE
uint32 CoilfangEliteTimer
uint32 SummonSporebatTimer
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
uint32 ForkedLightningTimer
uint32 TaintedElementalTimer
uint64 ShieldGeneratorChannel[4]
void CastShootOrMultishot()
uint32 EnchantedElementalTimer
uint8 EnchantedElementalPos
void EventTaintedElementalDeath()
InstanceScript * instance
void KilledUnit(Unit *) OVERRIDE
uint32 SummonSporebatStaticTimer
uint32 CoilfangStriderTimer
void MoveInLineOfSight(Unit *who) OVERRIDE
InstanceScript * instance
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
npc_enchanted_elementalAI(Creature *creature)
void EnterCombat(Unit *) OVERRIDE
void MoveInLineOfSight(Unit *) OVERRIDE
npc_shield_generator_channelAI(Creature *creature)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void MoveInLineOfSight(Unit *) OVERRIDE
InstanceScript * instance
void JustDied(Unit *) OVERRIDE
void EnterCombat(Unit *who) OVERRIDE
InstanceScript * instance
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
npc_tainted_elementalAI(Creature *creature)
void MovementInform(uint32 type, uint32 id) OVERRIDE
npc_toxic_sporebatAI(Creature *creature)
InstanceScript * instance
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void MoveInLineOfSight(Unit *) OVERRIDE