aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-01-23 16:59:33 +0100
committerShauren <shauren.trinity@gmail.com>2011-01-23 16:59:33 +0100
commitac689f456dc2d08cff6bcc4cbba94c135570a56a (patch)
tree0d46fd76f8be81d3175f2c71069c37463f643da5 /src
parent9dfa00bb600fd7d4a657366c08e98f219a9e9290 (diff)
Core/Scripts: Implemented method for sending encounter boss frames from scripts
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Instances/InstanceScript.cpp30
-rwxr-xr-xsrc/server/game/Instances/InstanceScript.h2
-rwxr-xr-xsrc/server/game/Server/Protocol/Opcodes.cpp2
-rwxr-xr-xsrc/server/game/Server/Protocol/Opcodes.h2
4 files changed, 34 insertions, 2 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp
index 29cf2043662..e6a13d0ab85 100755
--- a/src/server/game/Instances/InstanceScript.cpp
+++ b/src/server/game/Instances/InstanceScript.cpp
@@ -396,3 +396,33 @@ bool InstanceScript::CheckAchievementCriteriaMeet(uint32 criteria_id, Player con
instance->GetId(),criteria_id);
return false;
}
+
+void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit, uint8 param1 /*= 0*/, uint8 param2 /*= 0*/)
+{
+ WorldPacket data(SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT, 1);
+ data << uint32(type);
+
+ switch (type)
+ {
+ case 0:
+ case 1:
+ case 2:
+ data.append(unit->GetPackGUID());
+ data << uint8(param1);
+ break;
+ case 3:
+ case 4:
+ case 6:
+ data << uint8(param1);
+ data << uint8(param2);
+ break;
+ case 5:
+ data << uint8(param1);
+ break;
+ case 7:
+ default:
+ break;
+ }
+
+ instance->SendToPlayers(&data);
+}
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h
index 675adc9304b..0034b031574 100755
--- a/src/server/game/Instances/InstanceScript.h
+++ b/src/server/game/Instances/InstanceScript.h
@@ -190,6 +190,8 @@ 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);
+
protected:
void SetBossNumber(uint32 number) { bosses.resize(number); }
void LoadDoorData(const DoorData *data);
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index e64301b2579..49ac60112c2 100755
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -344,7 +344,7 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
/*0x13B*/ { "CMSG_CANCEL_CHANNELLING", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelChanneling },
/*0x13C*/ { "SMSG_AI_REACTION", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
/*0x13D*/ { "CMSG_SET_SELECTION", STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetSelectionOpcode },
- /*0x13E*/ { "CMSG_EQUIPMENT_SET_DELETE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetDelete },
+ /*0x13E*/ { "CMSG_EQUIPMENT_SET_DELETE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleEquipmentSetDelete },
/*0x13F*/ { "CMSG_INSTANCE_LOCK_WARNING_RESPONSE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
/*0x140*/ { "CMSG_UNUSED2", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
/*0x141*/ { "CMSG_ATTACKSWING", STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackSwingOpcode },
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 66f186076c2..0596fb64d9c 100755
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -566,7 +566,7 @@ enum Opcodes
CMSG_GMTICKET_GETTICKET = 0x211,
SMSG_GMTICKET_GETTICKET = 0x212,
CMSG_UNLEARN_TALENTS = 0x213,
- SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE = 0x214,
+ SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT = 0x214,
SMSG_GAMEOBJECT_DESPAWN_ANIM = 0x215,
MSG_CORPSE_QUERY = 0x216,
CMSG_GMTICKET_DELETETICKET = 0x217,