diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-01-23 21:42:32 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-01-23 21:42:32 +0100 |
commit | e5b4f8e84d1230419e19d55f23b4fa754db4b5db (patch) | |
tree | 259fa8eeb0ee72b55c147dd86f09de7121e40b25 /src | |
parent | ac689f456dc2d08cff6bcc4cbba94c135570a56a (diff) |
Scripts/Icecrown Citadel: Implemented boss raid frames for Blood Prince Council
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Instances/InstanceScript.cpp | 9 | ||||
-rwxr-xr-x | src/server/game/Instances/InstanceScript.h | 8 | ||||
-rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp | 15 |
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; } |