aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp144
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h7
2 files changed, 73 insertions, 78 deletions
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
index e86ea8daaee..0f575043da6 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
@@ -31,7 +31,7 @@ enum Spells
SPELL_REJOIN_VISCIDUS = 25896,
SPELL_VISCIDUS_EXPLODE = 25938,
SPELL_VISCIDUS_SUICIDE = 26003,
-
+
SPELL_MEMBRANE_VISCIDUS = 25994, // damage reduction spell - removed from DBC
SPELL_VISCIDUS_WEAKNESS = 25926, // aura which procs at damage - should trigger the slow spells - removed from DBC
SPELL_VISCIDUS_SHRINKS = 25893, // (6) Apply Aura #61: Mod Scale Value: -4 - removed from DBC
@@ -41,7 +41,7 @@ enum Spells
};
enum Events
-{
+{
EVENT_POISONBOLT_VOLLEY = 1,
EVENT_POISON_SHOCK = 2,
EVENT_RESET_PHASE = 3
@@ -56,14 +56,14 @@ enum Phases
enum HitCounter
{
- HITCOUNTER_SLOW = 100, // "Viscidus begins to slow."
- HITCOUNTER_SLOW_MORE = 150, // "Viscidus begins to freeze."
- HITCOUNTER_FREEZE = 200, // "Viscidus is frozen solid."
+ HITCOUNTER_SLOW = 100, // "Viscidus begins to slow."
+ HITCOUNTER_SLOW_MORE = 150, // "Viscidus begins to freeze."
+ HITCOUNTER_FREEZE = 200, // "Viscidus is frozen solid."
// 4.3.4 data
- HITCOUNTER_CRACK = 50, // "Viscidus begins to crack."
- HITCOUNTER_SHATTER = 100, // "Viscidus looks ready to shatter."
- HITCOUNTER_EXPLODE = 150, // "Viscidus explodes."
+ HITCOUNTER_CRACK = 50, // "Viscidus begins to crack."
+ HITCOUNTER_SHATTER = 100, // "Viscidus looks ready to shatter."
+ HITCOUNTER_EXPLODE = 150, // "Viscidus explodes."
// 1.12 data
// HITCOUNTER_EXPLODE = 75
@@ -84,72 +84,68 @@ class boss_viscidus : public CreatureScript
struct boss_viscidusAI : public BossAI
{
- boss_viscidusAI(Creature* creature) : BossAI(creature, DATA_VISCIDUS)
- {
- Reset();
- }
-
- uint8 Hitcounter;
- uint8 Phase;
+ boss_viscidusAI(Creature* creature) : BossAI(creature, DATA_VISCIDUS) { }
void Reset()
{
_Reset();
- Hitcounter = 0;
- Phase = PHASE_FROST;
+ _hitcounter = 0;
+ _phase = PHASE_FROST;
}
- void DamageTaken(Unit* attacker, uint32& damage)
- {
- if (Phase != PHASE_MELEE)
+ void DamageTaken(Unit* attacker, uint32& /*damage*/)
+ {
+ if (_phase != PHASE_MELEE)
return;
-
- ++Hitcounter;
-
- if (attacker->HasUnitState(UNIT_STATE_MELEE_ATTACKING) && Hitcounter >= HITCOUNTER_EXPLODE)
+
+ ++_hitcounter;
+
+ if (attacker->HasUnitState(UNIT_STATE_MELEE_ATTACKING) && _hitcounter >= HITCOUNTER_EXPLODE)
{
events.Reset();
- Phase = PHASE_GLOB;
+ _phase = PHASE_GLOB;
DoCast(me, SPELL_VISCIDUS_EXPLODE);
me->SetVisible(false);
me->RemoveAura(SPELL_TOXIN);
me->RemoveAura(SPELL_VISCIDUS_FREEZE);
- uint8 NumGlobes = me->GetHealthPct() / 5;
+ uint8 NumGlobes = me->GetHealthPct() / 5.0f;
for (uint8 i = 0; i < NumGlobes; ++i)
{
- float Angle = i * 2 * PI / NumGlobes;
+ float Angle = i * 2 * M_PI / NumGlobes;
float X = ViscidusCoord.GetPositionX() + std::cos(Angle) * RoomRadius;
float Y = ViscidusCoord.GetPositionY() + std::sin(Angle) * RoomRadius;
- float Z = -35;
+ float Z = -35.0f;
- TempSummon* Glob = me->SummonCreature(NPC_GLOB_OF_VISCIDUS, X, Y, Z);
- Glob->UpdateAllowedPositionZ(X, Y, Z);
- Glob->NearTeleportTo(X, Y, Z, 0);
- Glob->GetMotionMaster()->MovePoint(ROOM_CENTER, ViscidusCoord);
+ if (TempSummon* Glob = me->SummonCreature(NPC_GLOB_OF_VISCIDUS, X, Y, Z))
+ {
+ Glob->UpdateAllowedPositionZ(X, Y, Z);
+ Glob->NearTeleportTo(X, Y, Z, 0.0f);
+ Glob->GetMotionMaster()->MovePoint(ROOM_CENTER, ViscidusCoord);
+ }
}
}
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
{
- if ((spell->GetSchoolMask() & SPELL_SCHOOL_MASK_FROST) && Phase == PHASE_FROST && me->GetHealthPct() > 5)
+ if ((spell->GetSchoolMask() & SPELL_SCHOOL_MASK_FROST) && _phase == PHASE_FROST && me->GetHealthPct() > 5.0f)
{
- ++Hitcounter;
+ ++_hitcounter;
- if (Hitcounter >= HITCOUNTER_FREEZE)
+ if (_hitcounter >= HITCOUNTER_FREEZE)
{
- Phase = PHASE_MELEE;
+ _phase = PHASE_MELEE;
DoCast(me, SPELL_VISCIDUS_FREEZE);
me->RemoveAura(SPELL_VISCIDUS_SLOWED_MORE);
events.ScheduleEvent(EVENT_RESET_PHASE, 15000);
}
- else if (Hitcounter >= HITCOUNTER_SLOW_MORE)
+ else if (_hitcounter >= HITCOUNTER_SLOW_MORE)
{
me->RemoveAura(SPELL_VISCIDUS_SLOWED);
DoCast(me, SPELL_VISCIDUS_SLOWED_MORE);
}
- else if (Hitcounter >= HITCOUNTER_SLOW)
+ else if (_hitcounter >= HITCOUNTER_SLOW)
DoCast(me, SPELL_VISCIDUS_SLOWED);
}
}
@@ -160,7 +156,7 @@ class boss_viscidus : public CreatureScript
events.Reset();
InitSpells();
}
-
+
void InitSpells()
{
DoCast(me, SPELL_TOXIN);
@@ -173,61 +169,66 @@ class boss_viscidus : public CreatureScript
summons.DespawnAll();
ScriptedAI::EnterEvadeMode();
}
-
+
void JustDied(Unit* /*killer*/)
{
DoCast(me, SPELL_VISCIDUS_SUICIDE);
summons.DespawnAll();
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
return;
-
- if (Phase == PHASE_GLOB && summons.empty())
+
+ if (_phase == PHASE_GLOB && summons.empty())
{
me->NearTeleportTo(ViscidusCoord.GetPositionX(),
- ViscidusCoord.GetPositionY(),
- ViscidusCoord.GetPositionZ(),
- ViscidusCoord.GetOrientation());
- Hitcounter = 0;
- Phase = PHASE_FROST;
+ ViscidusCoord.GetPositionY(),
+ ViscidusCoord.GetPositionZ(),
+ ViscidusCoord.GetOrientation());
+
+ _hitcounter = 0;
+ _phase = PHASE_FROST;
InitSpells();
me->SetVisible(true);
}
-
+
events.Update(diff);
while (uint32 eventId = events.ExecuteEvent())
{
switch (eventId)
{
- case EVENT_POISONBOLT_VOLLEY:
- DoCast(me, SPELL_POISONBOLT_VOLLEY);
- events.ScheduleEvent(EVENT_POISONBOLT_VOLLEY, urand(10000, 15000));
- break;
- case EVENT_POISON_SHOCK:
- DoCast(me, SPELL_POISON_SHOCK);
- events.ScheduleEvent(EVENT_POISON_SHOCK, urand(7000, 12000));
- break;
- case EVENT_RESET_PHASE:
- Hitcounter = 0;
- Phase = PHASE_FROST;
- break;
- default:
- break;
+ case EVENT_POISONBOLT_VOLLEY:
+ DoCast(me, SPELL_POISONBOLT_VOLLEY);
+ events.ScheduleEvent(EVENT_POISONBOLT_VOLLEY, urand(10000, 15000));
+ break;
+ case EVENT_POISON_SHOCK:
+ DoCast(me, SPELL_POISON_SHOCK);
+ events.ScheduleEvent(EVENT_POISON_SHOCK, urand(7000, 12000));
+ break;
+ case EVENT_RESET_PHASE:
+ _hitcounter = 0;
+ _phase = PHASE_FROST;
+ break;
+ default:
+ break;
}
}
- if (Phase != PHASE_GLOB)
+ if (_phase != PHASE_GLOB)
DoMeleeAttackIfReady();
}
+
+ private:
+ uint8 _hitcounter;
+ Phases _phase;
};
CreatureAI* GetAI(Creature* creature) const
{
- return new boss_viscidusAI (creature);
+ return new boss_viscidusAI(creature);
}
};
@@ -238,23 +239,20 @@ class npc_glob_of_viscidus : public CreatureScript
struct npc_glob_of_viscidusAI : public ScriptedAI
{
- npc_glob_of_viscidusAI(Creature* creature) : ScriptedAI(creature)
- {
- }
+ npc_glob_of_viscidusAI(Creature* creature) : ScriptedAI(creature) { }
void JustDied(Unit* /*killer*/)
{
InstanceScript* Instance = me->GetInstanceScript();
-
if (!Instance)
return;
-
+
if (Creature* Viscidus = me->GetMap()->GetCreature(Instance->GetData64(DATA_VISCIDUS)))
{
if (BossAI* ViscidusAI = dynamic_cast<BossAI*>(Viscidus->GetAI()))
ViscidusAI->SummonedCreatureDespawn(me);
-
- if (Viscidus->isAlive() && Viscidus->GetHealthPct() < 5)
+
+ if (Viscidus->isAlive() && Viscidus->GetHealthPct() < 5.0f)
{
Viscidus->SetVisible(true);
Viscidus->getVictim()->Kill(Viscidus);
@@ -279,7 +277,7 @@ class npc_glob_of_viscidus : public CreatureScript
CreatureAI* GetAI(Creature* creature) const
{
- return new npc_glob_of_viscidusAI (creature);
+ return new npc_glob_of_viscidusAI(creature);
}
};
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
index 98895ee09d4..f154ccf2c5d 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
@@ -49,18 +49,15 @@ enum Creatures
MOB_GIANT_EYE_TENTACLE = 15334,
MOB_FLESH_TENTACLE = 15802,
MOB_GIANT_PORTAL = 15910,
-
+
NPC_VISCIDUS = 15299,
NPC_GLOB_OF_VISCIDUS = 15667,
-
+
NPC_SKERAM = 15263,
NPC_VEM = 15544,
NPC_KRI = 15511,
NPC_VEKLOR = 15276,
NPC_VEKNILASH = 15275
};
-
-#define PI 3.14
-
#endif