mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-24 02:46:33 +01:00
Scripts/Icecrown Citadel: Implemented boss raid frames for Blood Prince Council
This commit is contained in:
@@ -397,15 +397,16 @@ bool InstanceScript::CheckAchievementCriteriaMeet(uint32 criteria_id, Player con
|
||||
return false;
|
||||
}
|
||||
|
||||
void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit, uint8 param1 /*= 0*/, uint8 param2 /*= 0*/)
|
||||
void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit /*= NULL*/, uint8 param1 /*= 0*/, uint8 param2 /*= 0*/)
|
||||
{
|
||||
WorldPacket data(SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT, 1);
|
||||
// size of this packet is at most 15 (usually less)
|
||||
WorldPacket data(SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT, 15);
|
||||
data << uint32(type);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case ENCOUNTER_FRAME_ADD:
|
||||
case ENCOUNTER_FRAME_REMOVE:
|
||||
case 2:
|
||||
data.append(unit->GetPackGUID());
|
||||
data << uint8(param1);
|
||||
|
||||
@@ -39,6 +39,12 @@ class Creature;
|
||||
typedef std::set<GameObject*> DoorSet;
|
||||
typedef std::set<Creature*> MinionSet;
|
||||
|
||||
enum EncounterFrameType
|
||||
{
|
||||
ENCOUNTER_FRAME_ADD = 0,
|
||||
ENCOUNTER_FRAME_REMOVE = 1,
|
||||
};
|
||||
|
||||
enum EncounterState
|
||||
{
|
||||
NOT_STARTED = 0,
|
||||
@@ -190,7 +196,7 @@ class InstanceScript : public ZoneScript
|
||||
// Checks boss requirements (one boss required to kill other)
|
||||
virtual bool CheckRequiredBosses(uint32 /*bossId*/, Player const* /*player*/ = NULL) const { return true; }
|
||||
|
||||
void SendEncounterUnit(uint32 type, Unit* unit, uint8 param1 = 0, uint8 param2 = 0);
|
||||
void SendEncounterUnit(uint32 type, Unit* unit = NULL, uint8 param1 = 0, uint8 param2 = 0);
|
||||
|
||||
protected:
|
||||
void SetBossNumber(uint32 number) { bosses.resize(number); }
|
||||
|
||||
@@ -213,16 +213,25 @@ class boss_blood_council_controller : public CreatureScript
|
||||
DoCast(me, SPELL_INVOCATION_OF_BLOOD_VALANAR);
|
||||
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, keleseth);
|
||||
if (!keleseth->isInCombat())
|
||||
DoZoneInCombat(keleseth);
|
||||
}
|
||||
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, taldaram);
|
||||
if (!taldaram->isInCombat())
|
||||
DoZoneInCombat(taldaram);
|
||||
}
|
||||
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, valanar);
|
||||
if (!valanar->isInCombat())
|
||||
DoZoneInCombat(valanar);
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_INVOCATION_OF_BLOOD, 46500);
|
||||
|
||||
@@ -408,10 +417,12 @@ class boss_prince_keleseth_icc : public CreatureScript
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
Talk(SAY_KELESETH_DEATH);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
|
||||
}
|
||||
|
||||
void JustReachedHome()
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
|
||||
me->SetHealth(spawnHealth);
|
||||
isEmpowered = false;
|
||||
}
|
||||
@@ -593,10 +604,12 @@ class boss_prince_taldaram_icc : public CreatureScript
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
Talk(EMOTE_TALDARAM_DEATH);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
|
||||
}
|
||||
|
||||
void JustReachedHome()
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
|
||||
me->SetHealth(spawnHealth);
|
||||
isEmpowered = false;
|
||||
}
|
||||
@@ -792,10 +805,12 @@ class boss_prince_valanar_icc : public CreatureScript
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
Talk(SAY_VALANAR_DEATH);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
|
||||
}
|
||||
|
||||
void JustReachedHome()
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
isEmpowered = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user