aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-01-23 21:42:32 +0100
committerShauren <shauren.trinity@gmail.com>2011-01-23 21:42:32 +0100
commite5b4f8e84d1230419e19d55f23b4fa754db4b5db (patch)
tree259fa8eeb0ee72b55c147dd86f09de7121e40b25 /src
parentac689f456dc2d08cff6bcc4cbba94c135570a56a (diff)
Scripts/Icecrown Citadel: Implemented boss raid frames for Blood Prince Council
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Instances/InstanceScript.cpp9
-rwxr-xr-xsrc/server/game/Instances/InstanceScript.h8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp15
3 files changed, 27 insertions, 5 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp
index e6a13d0ab85..348ff7a766c 100755
--- a/src/server/game/Instances/InstanceScript.cpp
+++ b/src/server/game/Instances/InstanceScript.cpp
@@ -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);
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h
index 0034b031574..652c29fbf2f 100755
--- a/src/server/game/Instances/InstanceScript.h
+++ b/src/server/game/Instances/InstanceScript.h
@@ -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); }
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index db79ed39b2f..da9ec2380d0 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -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;
}