converted all tabs to 4 spaces

This commit is contained in:
Yehonal
2016-06-26 19:23:57 +02:00
parent 52f305111c
commit f6eefedcd5
717 changed files with 132388 additions and 132388 deletions

View File

@@ -7,34 +7,34 @@ REWRITTEN BY XINEF
enum bloodFurnace
{
DATA_THE_MAKER = 0,
DATA_BROGGOK = 1,
DATA_KELIDAN = 2,
MAX_ENCOUNTER = 3,
DATA_THE_MAKER = 0,
DATA_BROGGOK = 1,
DATA_KELIDAN = 2,
MAX_ENCOUNTER = 3,
DATA_DOOR1 = 10,
DATA_DOOR2 = 11,
DATA_DOOR3 = 12,
DATA_DOOR4 = 13,
DATA_DOOR5 = 14,
DATA_DOOR6 = 15,
DATA_DOOR1 = 10,
DATA_DOOR2 = 11,
DATA_DOOR3 = 12,
DATA_DOOR4 = 13,
DATA_DOOR5 = 14,
DATA_DOOR6 = 15,
DATA_PRISON_CELL1 = 20,
DATA_PRISON_CELL2 = 21,
DATA_PRISON_CELL3 = 22,
DATA_PRISON_CELL4 = 23,
DATA_PRISON_CELL1 = 20,
DATA_PRISON_CELL2 = 21,
DATA_PRISON_CELL3 = 22,
DATA_PRISON_CELL4 = 23,
ACTION_ACTIVATE_BROGGOK = 30,
ACTION_PREPARE_BROGGOK = 31
ACTION_ACTIVATE_BROGGOK = 30,
ACTION_PREPARE_BROGGOK = 31
};
enum bloodFurnaceNPC
{
NPC_THE_MAKER = 17381,
NPC_BROGGOK = 17380,
NPC_KELIDAN = 17377,
NPC_NASCENT_FEL_ORC = 17398,
NPC_CHANNELER = 17653
NPC_THE_MAKER = 17381,
NPC_BROGGOK = 17380,
NPC_KELIDAN = 17377,
NPC_NASCENT_FEL_ORC = 17398,
NPC_CHANNELER = 17653
};
#endif

View File

@@ -15,9 +15,9 @@ enum eEnums
SPELL_POISON_BOLT = 30917,
SPELL_POISON = 30914,
EVENT_SPELL_SLIME = 1,
EVENT_SPELL_POISON = 2,
EVENT_SPELL_BOLT = 3
EVENT_SPELL_SLIME = 1,
EVENT_SPELL_POISON = 2,
EVENT_SPELL_BOLT = 3
};
class boss_broggok : public CreatureScript
@@ -36,7 +36,7 @@ class boss_broggok : public CreatureScript
}
InstanceScript* instance;
EventMap events;
EventMap events;
bool canAttack;
void Reset()
@@ -47,8 +47,8 @@ class boss_broggok : public CreatureScript
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
canAttack = false;
if (instance)
instance->SetData(DATA_BROGGOK, NOT_STARTED);
if (instance)
instance->SetData(DATA_BROGGOK, NOT_STARTED);
}
void EnterCombat(Unit* /*who*/)
@@ -69,27 +69,27 @@ class boss_broggok : public CreatureScript
if (!UpdateVictim() || !canAttack)
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
{
case EVENT_SPELL_SLIME:
me->CastSpell(me->GetVictim(), SPELL_SLIME_SPRAY, false);
events.RepeatEvent(urand(7000, 12000));
break;
case EVENT_SPELL_BOLT:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
me->CastSpell(target, SPELL_POISON_BOLT, false);
events.RepeatEvent(urand(6000, 11000));
break;
case EVENT_SPELL_POISON:
me->CastSpell(me, SPELL_POISON_CLOUD, false);
events.RepeatEvent(20000);
break;
}
switch (events.GetEvent())
{
case EVENT_SPELL_SLIME:
me->CastSpell(me->GetVictim(), SPELL_SLIME_SPRAY, false);
events.RepeatEvent(urand(7000, 12000));
break;
case EVENT_SPELL_BOLT:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
me->CastSpell(target, SPELL_POISON_BOLT, false);
events.RepeatEvent(urand(6000, 11000));
break;
case EVENT_SPELL_POISON:
me->CastSpell(me, SPELL_POISON_CLOUD, false);
events.RepeatEvent(20000);
break;
}
DoMeleeAttackIfReady();
}
@@ -112,9 +112,9 @@ class boss_broggok : public CreatureScript
me->SetInCombatWithZone();
break;
case ACTION_ACTIVATE_BROGGOK:
events.ScheduleEvent(EVENT_SPELL_SLIME, 10000);
events.ScheduleEvent(EVENT_SPELL_POISON, 5000);
events.ScheduleEvent(EVENT_SPELL_BOLT, 7000);
events.ScheduleEvent(EVENT_SPELL_SLIME, 10000);
events.ScheduleEvent(EVENT_SPELL_POISON, 5000);
events.ScheduleEvent(EVENT_SPELL_BOLT, 7000);
me->SetReactState(REACT_AGGRESSIVE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
@@ -141,10 +141,10 @@ class go_broggok_lever : public GameObjectScript
if (InstanceScript* instance = go->GetInstanceScript())
if (instance->GetData(DATA_BROGGOK) != DONE && instance->GetData(DATA_BROGGOK) != IN_PROGRESS)
if (Creature* broggok = ObjectAccessor::GetCreature(*go, instance->GetData64(DATA_BROGGOK)))
{
instance->SetData(DATA_BROGGOK, IN_PROGRESS);
{
instance->SetData(DATA_BROGGOK, IN_PROGRESS);
broggok->AI()->DoAction(ACTION_PREPARE_BROGGOK);
}
}
go->UseDoorOrButton();
return false;

View File

@@ -15,7 +15,7 @@ enum eKelidan
SAY_NOVA = 3,
SAY_DIE = 4,
// Keldian spells
// Keldian spells
SPELL_CORRUPTION = 30938,
SPELL_EVOCATION = 30935,
SPELL_FIRE_NOVA = 33132,
@@ -23,23 +23,23 @@ enum eKelidan
SPELL_BURNING_NOVA = 30940,
SPELL_VORTEX = 37370,
// Channelers spells
SPELL_SHADOW_BOLT = 12739,
SPELL_SHADOW_BOLT_H = 15472,
SPELL_MARK_OF_SHADOW = 30937,
SPELL_CHANNELING = 39123,
// Channelers spells
SPELL_SHADOW_BOLT = 12739,
SPELL_SHADOW_BOLT_H = 15472,
SPELL_MARK_OF_SHADOW = 30937,
SPELL_CHANNELING = 39123,
// Events
EVENT_SPELL_VOLLEY = 1,
EVENT_SPELL_CORRUPTION = 2,
EVENT_SPELL_BURNING_NOVA = 3,
EVENT_SPELL_FIRE_NOVA = 4,
EVENT_SPELL_SHADOW_BOLT = 5,
EVENT_SPELL_MARK = 6,
// Events
EVENT_SPELL_VOLLEY = 1,
EVENT_SPELL_CORRUPTION = 2,
EVENT_SPELL_BURNING_NOVA = 3,
EVENT_SPELL_FIRE_NOVA = 4,
EVENT_SPELL_SHADOW_BOLT = 5,
EVENT_SPELL_MARK = 6,
// Actions
ACTION_CHANNELER_ENGAGED = 1,
ACTION_CHANNELER_DIED = 2,
// Actions
ACTION_CHANNELER_ENGAGED = 1,
ACTION_CHANNELER_DIED = 2,
};
const float ShadowmoonChannelers[5][4] =
@@ -64,22 +64,22 @@ class boss_kelidan_the_breaker : public CreatureScript
boss_kelidan_the_breakerAI(Creature* creature) : ScriptedAI(creature)
{
instance = creature->GetInstanceScript();
memset(&channelers, 0, sizeof(channelers));
memset(&channelers, 0, sizeof(channelers));
}
InstanceScript* instance;
EventMap events;
uint64 channelers[5];
uint32 checkTimer;
EventMap events;
uint64 channelers[5];
uint32 checkTimer;
bool addYell;
void Reset()
{
addYell = false;
checkTimer = 5000;
checkTimer = 5000;
events.Reset();
ApplyImmunities(true);
events.Reset();
ApplyImmunities(true);
SummonChannelers();
me->SetReactState(REACT_PASSIVE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
@@ -89,74 +89,74 @@ class boss_kelidan_the_breaker : public CreatureScript
void EnterCombat(Unit* who)
{
events.ScheduleEvent(EVENT_SPELL_VOLLEY, 1000);
events.ScheduleEvent(EVENT_SPELL_CORRUPTION, 5000);
events.ScheduleEvent(EVENT_SPELL_BURNING_NOVA, 15000);
events.ScheduleEvent(EVENT_SPELL_VOLLEY, 1000);
events.ScheduleEvent(EVENT_SPELL_CORRUPTION, 5000);
events.ScheduleEvent(EVENT_SPELL_BURNING_NOVA, 15000);
me->InterruptNonMeleeSpells(false);
me->InterruptNonMeleeSpells(false);
Talk(SAY_WAKE);
if (instance)
instance->SetData(DATA_KELIDAN, IN_PROGRESS);
if (instance)
instance->SetData(DATA_KELIDAN, IN_PROGRESS);
}
void KilledUnit(Unit* /*victim*/)
{
if (urand(0,1))
Talk(SAY_KILL);
Talk(SAY_KILL);
}
void DoAction(int32 param)
{
if (param == ACTION_CHANNELER_ENGAGED)
{
if (!addYell)
{
addYell = true;
Talk(SAY_ADD_AGGRO);
for (uint8 i = 0; i < 5; ++i)
{
Creature* channeler = ObjectAccessor::GetCreature(*me, channelers[i]);
if (channeler && !channeler->IsInCombat())
channeler->SetInCombatWithZone();
}
}
}
else if (param == ACTION_CHANNELER_DIED)
{
for (uint8 i = 0; i < 5; ++i)
{
Creature* channeler = ObjectAccessor::GetCreature(*me, channelers[i]);
if (channeler && channeler->IsAlive())
return;
}
me->SetReactState(REACT_AGGRESSIVE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
if (Unit* target = me->SelectNearestPlayer(100.0f))
AttackStart(target);
}
}
void DoAction(int32 param)
{
if (param == ACTION_CHANNELER_ENGAGED)
{
if (!addYell)
{
addYell = true;
Talk(SAY_ADD_AGGRO);
for (uint8 i = 0; i < 5; ++i)
{
Creature* channeler = ObjectAccessor::GetCreature(*me, channelers[i]);
if (channeler && !channeler->IsInCombat())
channeler->SetInCombatWithZone();
}
}
}
else if (param == ACTION_CHANNELER_DIED)
{
for (uint8 i = 0; i < 5; ++i)
{
Creature* channeler = ObjectAccessor::GetCreature(*me, channelers[i]);
if (channeler && channeler->IsAlive())
return;
}
me->SetReactState(REACT_AGGRESSIVE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
if (Unit* target = me->SelectNearestPlayer(100.0f))
AttackStart(target);
}
}
void CheckChannelers()
{
if (addYell)
{
if (!SelectTargetFromPlayerList(100.0f))
EnterEvadeMode();
return;
}
if (addYell)
{
if (!SelectTargetFromPlayerList(100.0f))
EnterEvadeMode();
return;
}
SummonChannelers();
SummonChannelers();
for (uint8 i = 0; i < 5; ++i)
{
Creature* channeler = ObjectAccessor::GetCreature(*me, channelers[i]);
if (channeler && !channeler->HasUnitState(UNIT_STATE_CASTING) && !channeler->IsInCombat())
{
Creature* target = ObjectAccessor::GetCreature(*me, channelers[(i+2)%5]);
if (target)
channeler->CastSpell(target, SPELL_CHANNELING, false);
}
{
Creature* target = ObjectAccessor::GetCreature(*me, channelers[(i+2)%5]);
if (target)
channeler->CastSpell(target, SPELL_CHANNELING, false);
}
}
}
@@ -165,15 +165,15 @@ class boss_kelidan_the_breaker : public CreatureScript
for (uint8 i = 0; i < 5; ++i)
{
Creature* channeler = ObjectAccessor::GetCreature(*me, channelers[i]);
if (channeler && channeler->isDead())
{
channeler->DespawnOrUnsummon(1);
channeler = NULL;
}
if (channeler && channeler->isDead())
{
channeler->DespawnOrUnsummon(1);
channeler = NULL;
}
if (!channeler)
channeler = me->SummonCreature(NPC_CHANNELER, ShadowmoonChannelers[i][0], ShadowmoonChannelers[i][1], ShadowmoonChannelers[i][2], ShadowmoonChannelers[i][3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
channelers[i] = channeler ? channeler->GetGUID() : 0;
channelers[i] = channeler ? channeler->GetGUID() : 0;
}
}
@@ -181,86 +181,86 @@ class boss_kelidan_the_breaker : public CreatureScript
{
Talk(SAY_DIE);
if (instance)
{
// Xinef: load grid with start doors
me->GetMap()->LoadGrid(0, -111.0f);
instance->SetData(DATA_KELIDAN, DONE);
instance->HandleGameObject(instance->GetData64(DATA_DOOR1), true);
instance->HandleGameObject(instance->GetData64(DATA_DOOR6), true);
}
{
// Xinef: load grid with start doors
me->GetMap()->LoadGrid(0, -111.0f);
instance->SetData(DATA_KELIDAN, DONE);
instance->HandleGameObject(instance->GetData64(DATA_DOOR1), true);
instance->HandleGameObject(instance->GetData64(DATA_DOOR6), true);
}
}
void ApplyImmunities(bool apply)
{
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_CHARM, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_DISORIENTED, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_DISTRACT, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_FEAR, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_ROOT, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SILENCE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SLEEP, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SNARE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_FREEZE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_KNOCKOUT, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_POLYMORPH, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_BANISH, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SHACKLE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_TURN, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_HORROR, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_DAZE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SAPPED, apply);
}
void ApplyImmunities(bool apply)
{
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_CHARM, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_DISORIENTED, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_DISTRACT, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_FEAR, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_ROOT, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SILENCE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SLEEP, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SNARE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_FREEZE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_KNOCKOUT, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_POLYMORPH, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_BANISH, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SHACKLE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_TURN, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_HORROR, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_DAZE, apply);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SAPPED, apply);
}
void UpdateAI(uint32 diff)
{
if (!UpdateVictim())
{
checkTimer += diff;
checkTimer += diff;
if (checkTimer >= 5000)
{
checkTimer = 0;
checkTimer = 0;
CheckChannelers();
if (!me->HasUnitState(UNIT_STATE_CASTING))
if (!me->HasUnitState(UNIT_STATE_CASTING))
me->CastSpell(me, SPELL_EVOCATION, false);
}
return;
}
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
{
case EVENT_SPELL_VOLLEY:
me->CastSpell(me, SPELL_SHADOW_BOLT_VOLLEY, false);
events.RepeatEvent(urand(8000, 13000));
break;
case EVENT_SPELL_CORRUPTION:
me->CastSpell(me, SPELL_CORRUPTION, false);
events.RepeatEvent(urand(30000, 50000));
break;
case EVENT_SPELL_BURNING_NOVA:
Talk(SAY_NOVA);
ApplyImmunities(false);
me->AddAura(SPELL_BURNING_NOVA, me);
ApplyImmunities(true);
switch (events.GetEvent())
{
case EVENT_SPELL_VOLLEY:
me->CastSpell(me, SPELL_SHADOW_BOLT_VOLLEY, false);
events.RepeatEvent(urand(8000, 13000));
break;
case EVENT_SPELL_CORRUPTION:
me->CastSpell(me, SPELL_CORRUPTION, false);
events.RepeatEvent(urand(30000, 50000));
break;
case EVENT_SPELL_BURNING_NOVA:
Talk(SAY_NOVA);
ApplyImmunities(false);
me->AddAura(SPELL_BURNING_NOVA, me);
ApplyImmunities(true);
if (IsHeroic())
DoTeleportAll(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
if (IsHeroic())
DoTeleportAll(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
events.DelayEvents(6000, 0);
events.RepeatEvent(urand(25000, 32000));
events.ScheduleEvent(EVENT_SPELL_FIRE_NOVA, 5000);
break;
case EVENT_SPELL_FIRE_NOVA:
me->CastSpell(me, SPELL_FIRE_NOVA, true);
events.PopEvent();
break;
}
events.DelayEvents(6000, 0);
events.RepeatEvent(urand(25000, 32000));
events.ScheduleEvent(EVENT_SPELL_FIRE_NOVA, 5000);
break;
case EVENT_SPELL_FIRE_NOVA:
me->CastSpell(me, SPELL_FIRE_NOVA, true);
events.PopEvent();
break;
}
DoMeleeAttackIfReady();
}
@@ -286,24 +286,24 @@ class npc_shadowmoon_channeler : public CreatureScript
void Reset()
{
events.Reset();
events.Reset();
}
Creature* GetKelidan()
{
if (me->GetInstanceScript())
return ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(DATA_KELIDAN));
return NULL;
}
Creature* GetKelidan()
{
if (me->GetInstanceScript())
return ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(DATA_KELIDAN));
return NULL;
}
void EnterCombat(Unit* who)
{
if (Creature* kelidan = GetKelidan())
kelidan->AI()->DoAction(ACTION_CHANNELER_ENGAGED);
me->InterruptNonMeleeSpells(false);
events.ScheduleEvent(EVENT_SPELL_SHADOW_BOLT, urand(1500, 3500));
events.ScheduleEvent(EVENT_SPELL_MARK, urand(5000, 6500));
me->InterruptNonMeleeSpells(false);
events.ScheduleEvent(EVENT_SPELL_SHADOW_BOLT, urand(1500, 3500));
events.ScheduleEvent(EVENT_SPELL_MARK, urand(5000, 6500));
}
void JustDied(Unit* killer)
@@ -317,22 +317,22 @@ class npc_shadowmoon_channeler : public CreatureScript
if (!UpdateVictim())
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
{
case EVENT_SPELL_SHADOW_BOLT:
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_SHADOW_BOLT_H : SPELL_SHADOW_BOLT, false);
events.RepeatEvent(urand(6000, 7500));
break;
case EVENT_SPELL_MARK:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
me->CastSpell(target, SPELL_MARK_OF_SHADOW, false);
events.RepeatEvent(urand(16000, 17500));
break;
}
switch (events.GetEvent())
{
case EVENT_SPELL_SHADOW_BOLT:
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_SHADOW_BOLT_H : SPELL_SHADOW_BOLT, false);
events.RepeatEvent(urand(6000, 7500));
break;
case EVENT_SPELL_MARK:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
me->CastSpell(target, SPELL_MARK_OF_SHADOW, false);
events.RepeatEvent(urand(16000, 17500));
break;
}
DoMeleeAttackIfReady();
}

View File

@@ -17,10 +17,10 @@ enum eEnums
SPELL_KNOCKDOWN = 20276,
SPELL_DOMINATION = 25772,
EVENT_SPELL_ACID = 1,
EVENT_SPELL_EXPLODING = 2,
EVENT_SPELL_DOMINATION = 3,
EVENT_SPELL_KNOCKDOWN = 4,
EVENT_SPELL_ACID = 1,
EVENT_SPELL_EXPLODING = 2,
EVENT_SPELL_DOMINATION = 3,
EVENT_SPELL_KNOCKDOWN = 4,
};
class boss_the_maker : public CreatureScript
@@ -39,11 +39,11 @@ class boss_the_maker : public CreatureScript
}
InstanceScript* instance;
EventMap events;
EventMap events;
void Reset()
{
events.Reset();
events.Reset();
if (!instance)
return;
@@ -54,10 +54,10 @@ class boss_the_maker : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_SPELL_ACID, 15000);
events.ScheduleEvent(EVENT_SPELL_EXPLODING, 6000);
events.ScheduleEvent(EVENT_SPELL_DOMINATION, 120000);
events.ScheduleEvent(EVENT_SPELL_KNOCKDOWN, 10000);
events.ScheduleEvent(EVENT_SPELL_ACID, 15000);
events.ScheduleEvent(EVENT_SPELL_EXPLODING, 6000);
events.ScheduleEvent(EVENT_SPELL_DOMINATION, 120000);
events.ScheduleEvent(EVENT_SPELL_KNOCKDOWN, 10000);
if (!instance)
return;
@@ -68,8 +68,8 @@ class boss_the_maker : public CreatureScript
void KilledUnit(Unit* victim)
{
if (victim->GetTypeId() == TYPEID_PLAYER && urand(0,1))
Talk(SAY_KILL);
if (victim->GetTypeId() == TYPEID_PLAYER && urand(0,1))
Talk(SAY_KILL);
}
void JustDied(Unit* /*killer*/)
@@ -90,31 +90,31 @@ class boss_the_maker : public CreatureScript
if (!UpdateVictim())
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.GetEvent())
{
case EVENT_SPELL_ACID:
me->CastSpell(me->GetVictim(), SPELL_ACID_SPRAY, false);
events.RepeatEvent(urand(15000, 23000));
break;
case EVENT_SPELL_EXPLODING:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
me->CastSpell(target, SPELL_EXPLODING_BREAKER, false);
events.RepeatEvent(urand(7000, 11000));
break;
case EVENT_SPELL_DOMINATION:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
me->CastSpell(target, SPELL_DOMINATION, false);
events.RepeatEvent(120000);
break;
case EVENT_SPELL_KNOCKDOWN:
me->CastSpell(me->GetVictim(), SPELL_KNOCKDOWN, false);
events.RepeatEvent(urand(4000, 12000));
break;
}
switch (events.GetEvent())
{
case EVENT_SPELL_ACID:
me->CastSpell(me->GetVictim(), SPELL_ACID_SPRAY, false);
events.RepeatEvent(urand(15000, 23000));
break;
case EVENT_SPELL_EXPLODING:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
me->CastSpell(target, SPELL_EXPLODING_BREAKER, false);
events.RepeatEvent(urand(7000, 11000));
break;
case EVENT_SPELL_DOMINATION:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
me->CastSpell(target, SPELL_DOMINATION, false);
events.RepeatEvent(120000);
break;
case EVENT_SPELL_KNOCKDOWN:
me->CastSpell(me->GetVictim(), SPELL_KNOCKDOWN, false);
events.RepeatEvent(urand(4000, 12000));
break;
}
DoMeleeAttackIfReady();
}

View File

@@ -16,10 +16,10 @@ class instance_blood_furnace : public InstanceMapScript
{
instance_blood_furnace_InstanceMapScript(Map* map) : InstanceScript(map) {}
uint32 _auiEncounter[MAX_ENCOUNTER];
uint32 _auiEncounter[MAX_ENCOUNTER];
uint64 _bossGUIDs[3];
uint64 _doorGUIDs[6];
uint64 _prisonGUIDs[4];
uint64 _doorGUIDs[6];
uint64 _prisonGUIDs[4];
std::set<uint64> _prisonersCell[4];
@@ -30,13 +30,13 @@ class instance_blood_furnace : public InstanceMapScript
void Initialize()
{
memset(&_auiEncounter, 0, sizeof(_auiEncounter));
memset(&_bossGUIDs, 0, sizeof(_bossGUIDs));
memset(&_doorGUIDs, 0, sizeof(_doorGUIDs));
memset(&_prisonGUIDs, 0, sizeof(_prisonGUIDs));
memset(&_prisonerCounter, 0, sizeof(_prisonerCounter));
memset(&_bossGUIDs, 0, sizeof(_bossGUIDs));
memset(&_doorGUIDs, 0, sizeof(_doorGUIDs));
memset(&_prisonGUIDs, 0, sizeof(_prisonGUIDs));
memset(&_prisonerCounter, 0, sizeof(_prisonerCounter));
for (uint8 i = 0; i < 4; ++i)
_prisonersCell[i].clear();
for (uint8 i = 0; i < 4; ++i)
_prisonersCell[i].clear();
_broggokLeverGUID = 0;
}
@@ -73,19 +73,19 @@ class instance_blood_furnace : public InstanceMapScript
if (go->GetEntry() == 181811) //The Maker Front door
_doorGUIDs[1] = go->GetGUID();
if (go->GetEntry() == 181812) //The Maker Rear door
{
{
_doorGUIDs[2] = go->GetGUID();
if (GetData(DATA_THE_MAKER) == DONE)
HandleGameObject(go->GetGUID(), true);
}
if (GetData(DATA_THE_MAKER) == DONE)
HandleGameObject(go->GetGUID(), true);
}
if (go->GetEntry() == 181822) //Broggok Front door
_doorGUIDs[3] = go->GetGUID();
if (go->GetEntry() == 181819) //Broggok Rear door
{
{
_doorGUIDs[4] = go->GetGUID();
if (GetData(DATA_BROGGOK) == DONE)
HandleGameObject(go->GetGUID(), true);
}
if (GetData(DATA_BROGGOK) == DONE)
HandleGameObject(go->GetGUID(), true);
}
if (go->GetEntry() == 181823) //Kelidan exit door
_doorGUIDs[5] = go->GetGUID();
@@ -107,9 +107,9 @@ class instance_blood_furnace : public InstanceMapScript
switch (data)
{
case DATA_THE_MAKER:
case DATA_BROGGOK:
case DATA_BROGGOK:
case DATA_KELIDAN:
return _bossGUIDs[data];
return _bossGUIDs[data];
case DATA_DOOR1:
case DATA_DOOR2:
@@ -117,13 +117,13 @@ class instance_blood_furnace : public InstanceMapScript
case DATA_DOOR4:
case DATA_DOOR5:
case DATA_DOOR6:
return _doorGUIDs[data-DATA_DOOR1];
return _doorGUIDs[data-DATA_DOOR1];
case DATA_PRISON_CELL1:
case DATA_PRISON_CELL2:
case DATA_PRISON_CELL3:
case DATA_PRISON_CELL4:
return _prisonGUIDs[data-DATA_PRISON_CELL1];
return _prisonGUIDs[data-DATA_PRISON_CELL1];
}
return 0;
}
@@ -133,37 +133,37 @@ class instance_blood_furnace : public InstanceMapScript
switch (type)
{
case DATA_THE_MAKER:
case DATA_BROGGOK:
case DATA_KELIDAN:
case DATA_BROGGOK:
case DATA_KELIDAN:
_auiEncounter[type] = data;
if (type == DATA_BROGGOK)
UpdateBroggokEvent(data);
if (type == DATA_BROGGOK)
UpdateBroggokEvent(data);
break;
}
if (data == DONE)
SaveToDB();
}
SaveToDB();
}
std::string GetSaveData()
{
OUT_SAVE_INST_DATA;
std::string GetSaveData()
{
OUT_SAVE_INST_DATA;
std::ostringstream saveStream;
std::ostringstream saveStream;
saveStream << "B F " << _auiEncounter[0] << ' ' << _auiEncounter[1] << ' ' << _auiEncounter[2];
OUT_SAVE_INST_DATA_COMPLETE;
return saveStream.str();
}
OUT_SAVE_INST_DATA_COMPLETE;
return saveStream.str();
}
uint32 GetData(uint32 type) const
{
switch (type)
{
case DATA_THE_MAKER:
case DATA_BROGGOK:
case DATA_KELIDAN:
return _auiEncounter[type];
case DATA_THE_MAKER:
case DATA_BROGGOK:
case DATA_KELIDAN:
return _auiEncounter[type];
}
return 0;
}
@@ -176,21 +176,21 @@ class instance_blood_furnace : public InstanceMapScript
return;
}
OUT_LOAD_INST_DATA(strIn);
OUT_LOAD_INST_DATA(strIn);
char dataHead1, dataHead2;
char dataHead1, dataHead2;
std::istringstream loadStream(strIn);
loadStream >> dataHead1 >> dataHead2;
std::istringstream loadStream(strIn);
loadStream >> dataHead1 >> dataHead2;
if (dataHead1 == 'B' && dataHead2 == 'F')
{
loadStream >> _auiEncounter[0] >> _auiEncounter[1] >> _auiEncounter[2];
if (dataHead1 == 'B' && dataHead2 == 'F')
{
loadStream >> _auiEncounter[0] >> _auiEncounter[1] >> _auiEncounter[2];
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (_auiEncounter[i] == IN_PROGRESS || _auiEncounter[i] == FAIL)
_auiEncounter[i] = NOT_STARTED;
}
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (_auiEncounter[i] == IN_PROGRESS || _auiEncounter[i] == FAIL)
_auiEncounter[i] = NOT_STARTED;
}
OUT_LOAD_INST_DATA_COMPLETE;
}
@@ -215,12 +215,12 @@ class instance_blood_furnace : public InstanceMapScript
void ResetPrisons()
{
for (uint8 i = 0; i < 4; ++i)
{
_prisonerCounter[i] = _prisonersCell[i].size();
ResetPrisoners(_prisonersCell[i]);
HandleGameObject(_prisonGUIDs[i], false);
}
for (uint8 i = 0; i < 4; ++i)
{
_prisonerCounter[i] = _prisonersCell[i].size();
ResetPrisoners(_prisonersCell[i]);
HandleGameObject(_prisonGUIDs[i], false);
}
}
void ResetPrisoners(std::set<uint64> prisoners)
@@ -248,13 +248,13 @@ class instance_blood_furnace : public InstanceMapScript
{
_prisonersCell[0].insert(creature->GetGUID());
++_prisonerCounter[0];
ResetPrisoner(creature);
ResetPrisoner(creature);
}
else if (posY >= 76.0f && posY <= 91.0f)
{
_prisonersCell[1].insert(creature->GetGUID());
++_prisonerCounter[1];
ResetPrisoner(creature);
ResetPrisoner(creature);
}
}
else if (posX >= 490.0f && posX <= 506.0f)
@@ -263,13 +263,13 @@ class instance_blood_furnace : public InstanceMapScript
{
_prisonersCell[2].insert(creature->GetGUID());
++_prisonerCounter[2];
ResetPrisoner(creature);
ResetPrisoner(creature);
}
else if (posY >= 76.0f && posY <= 91.0f)
{
_prisonersCell[3].insert(creature->GetGUID());
++_prisonerCounter[3];
ResetPrisoner(creature);
ResetPrisoner(creature);
}
}
}