aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Instances/InstanceScript.cpp21
-rwxr-xr-xsrc/server/game/Instances/InstanceScript.h13
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp14
-rwxr-xr-xsrc/server/game/Server/Protocol/Opcodes.h14
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp22
-rwxr-xr-xsrc/server/game/Spells/Spell.h2
6 files changed, 58 insertions, 28 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp
index d0a96e3b62e..2a0f62d8de2 100755
--- a/src/server/game/Instances/InstanceScript.cpp
+++ b/src/server/game/Instances/InstanceScript.cpp
@@ -397,22 +397,25 @@ void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit /*= NULL*/, uint8
switch (type)
{
- case ENCOUNTER_FRAME_ADD:
- case ENCOUNTER_FRAME_REMOVE:
- case 2:
+ case ENCOUNTER_FRAME_ENGAGE:
+ case ENCOUNTER_FRAME_DISENGAGE:
+ case ENCOUNTER_FRAME_UPDATE_PRIORITY:
+ if (!unit)
+ return;
data.append(unit->GetPackGUID());
data << uint8(param1);
break;
- case 3:
- case 4:
- case 6:
+ case ENCOUNTER_FRAME_ADD_TIMER:
+ case ENCOUNTER_FRAME_ENABLE_OBJECTIVE:
+ case ENCOUNTER_FRAME_DISABLE_OBJECTIVE:
+ case ENCOUNTER_FRAME_COMBAT_RES_LIMIT:
data << uint8(param1);
- data << uint8(param2);
break;
- case 5:
+ case ENCOUNTER_FRAME_UPDATE_OBJECTIVE:
data << uint8(param1);
+ data << uint8(param2);
break;
- case 7:
+ case ENCOUNTER_FRAME_UNK7:
default:
break;
}
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h
index 69f11c203c1..469948d8e2d 100755
--- a/src/server/game/Instances/InstanceScript.h
+++ b/src/server/game/Instances/InstanceScript.h
@@ -42,8 +42,17 @@ typedef std::set<Creature*> MinionSet;
enum EncounterFrameType
{
- ENCOUNTER_FRAME_ADD = 0,
- ENCOUNTER_FRAME_REMOVE = 1,
+ ENCOUNTER_FRAME_SET_COMBAT_RES_LIMIT = 0,
+ ENCOUNTER_FRAME_RESET_COMBAT_RES_LIMIT = 1,
+ ENCOUNTER_FRAME_ENGAGE = 2,
+ ENCOUNTER_FRAME_DISENGAGE = 3,
+ ENCOUNTER_FRAME_UPDATE_PRIORITY = 4,
+ ENCOUNTER_FRAME_ADD_TIMER = 5,
+ ENCOUNTER_FRAME_ENABLE_OBJECTIVE = 6,
+ ENCOUNTER_FRAME_UPDATE_OBJECTIVE = 7,
+ ENCOUNTER_FRAME_DISABLE_OBJECTIVE = 8,
+ ENCOUNTER_FRAME_UNK7 = 9, // Seems to have something to do with sorting the encounter units
+ ENCOUNTER_FRAME_ADD_COMBAT_RES_LIMIT = 10,
};
enum EncounterState
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 8e53d6230c4..541fd054e89 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -91,7 +91,7 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(SMSG_DEBUG_AISTATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_DISABLE_PVP_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//DEFINE_OPCODE_HANDLER(CMSG_ADVANCE_SPAWN_TIME, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- //DEFINE_OPCODE_HANDLER(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_OPCODE_HANDLER(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_AUTH_SRP6_BEGIN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//DEFINE_OPCODE_HANDLER(CMSG_AUTH_SRP6_PROOF, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//DEFINE_OPCODE_HANDLER(CMSG_AUTH_SRP6_RECODE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -235,7 +235,7 @@ void InitOpcodes()
DEFINE_OPCODE_HANDLER(CMSG_READ_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleReadItem );
DEFINE_OPCODE_HANDLER(SMSG_READ_ITEM_OK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_READ_ITEM_FAILED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- //DEFINE_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(CMSG_GAMEOBJ_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGameObjectUseOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_DESTROY_ITEMS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(SMSG_GAMEOBJECT_CUSTOM_ANIM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@@ -372,7 +372,7 @@ void InitOpcodes()
DEFINE_OPCODE_HANDLER(CMSG_CANCEL_AURA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelAuraOpcode );
//DEFINE_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_SAVED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_PET_CAST_FAILED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- //DEFINE_OPCODE_HANDLER(MSG_CHANNEL_START, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_OPCODE_HANDLER(MSG_CHANNEL_START, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//DEFINE_OPCODE_HANDLER(MSG_CHANNEL_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(CMSG_CANCEL_CHANNELLING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelChanneling );
DEFINE_OPCODE_HANDLER(SMSG_AI_REACTION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@@ -384,8 +384,8 @@ void InitOpcodes()
DEFINE_OPCODE_HANDLER(CMSG_ATTACKSTOP, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackStopOpcode );
DEFINE_OPCODE_HANDLER(SMSG_ATTACKSTART, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_ATTACKSTOP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- //DEFINE_OPCODE_HANDLER(SMSG_ATTACKSWING_NOTINRANGE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- //DEFINE_OPCODE_HANDLER(SMSG_ATTACKSWING_BADFACING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_ATTACKSWING_NOTINRANGE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_ATTACKSWING_BADFACING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_INSTANCE_LOCK_WARNING_QUERY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_ATTACKSWING_DEADTARGET, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_ATTACKSWING_CANT_ATTACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@@ -591,7 +591,7 @@ void InitOpcodes()
DEFINE_OPCODE_HANDLER(CMSG_GMTICKET_GETTICKET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketGetTicketOpcode );
//DEFINE_OPCODE_HANDLER(SMSG_GMTICKET_GETTICKET, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_UNLEARN_TALENTS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- //DEFINE_OPCODE_HANDLER(SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_GAMEOBJECT_DESPAWN_ANIM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(MSG_CORPSE_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCorpseQueryOpcode );
DEFINE_OPCODE_HANDLER(CMSG_GMTICKET_DELETETICKET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketDeleteOpcode );
@@ -1020,7 +1020,7 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(CMSG_COMMENTATOR_ENTER_INSTANCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//DEFINE_OPCODE_HANDLER(CMSG_COMMENTATOR_EXIT_INSTANCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//DEFINE_OPCODE_HANDLER(CMSG_COMMENTATOR_INSTANCE_COMMAND, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- //DEFINE_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_CLEAR_TARGET, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_BOT_DETECTED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(SMSG_CROSSED_INEBRIATION_THRESHOLD, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_CHEAT_PLAYER_LOGIN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 65fa2a5a950..0f6dcb48677 100755
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -558,10 +558,10 @@ enum Opcodes
SMSG_ATTACKERSTATEUPDATE = 0x0E6A,
SMSG_ATTACKSTART = 0xCA4A,
SMSG_ATTACKSTOP = 0xCED7,
- SMSG_ATTACKSWING_BADFACING = 0x00,
- SMSG_ATTACKSWING_CANT_ATTACK = 0x00,
- SMSG_ATTACKSWING_DEADTARGET = 0x00,
- SMSG_ATTACKSWING_NOTINRANGE = 0x00,
+ SMSG_ATTACKSWING_BADFACING = 0x18E2,
+ SMSG_ATTACKSWING_CANT_ATTACK = 0x00, // 0x1CEA or 0x4CFE
+ SMSG_ATTACKSWING_DEADTARGET = 0x00, // 0x1CEA or 0x4CFE
+ SMSG_ATTACKSWING_NOTINRANGE = 0xCC62,
SMSG_AUCTION_BIDDER_LIST_RESULT = 0x88E3,
SMSG_AUCTION_BIDDER_NOTIFICATION = 0xC85B,
SMSG_AUCTION_COMMAND_RESULT = 0xCCCE,
@@ -625,7 +625,7 @@ enum Opcodes
SMSG_CHAT_WRONG_FACTION = 0x0E66,
SMSG_CHECK_FOR_BOTS = 0x00,
SMSG_CLEAR_COOLDOWN = 0x986F,
- SMSG_CLEAR_TARGET = 0x00,
+ SMSG_CLEAR_TARGET = 0xDA7A,
SMSG_CLIENT_CONTROL_UPDATE = 0x08CB,
SMSG_CLIENTCACHE_VERSION = 0x88F2,
SMSG_COMBAT_LOG_MULTIPLE = 0x5C56,
@@ -671,7 +671,7 @@ enum Opcodes
SMSG_EMOTE = 0x0C67,
SMSG_ENABLE_BARBER_SHOP = 0x9C7A,
SMSG_ENCHANTMENTLOG = 0x48E2,
- SMSG_ENVIRONMENTALDAMAGELOG = 0x00,
+ SMSG_ENVIRONMENTALDAMAGELOG = 0x5A6B,
SMSG_EQUIPMENT_SET_LIST = 0x18DF,
SMSG_EQUIPMENT_SET_SAVED = 0x00,
SMSG_EQUIPMENT_SET_USE_RESULT = 0x00,
@@ -1057,7 +1057,7 @@ enum Opcodes
SMSG_UPDATE_COMBO_POINTS = 0x9AF6,
SMSG_UPDATE_CURRENCY = 0x00,
SMSG_UPDATE_CURRENCY_WEEK_LIMIT = 0x00,
- SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT = 0x00,
+ SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT = 0x8C4A,
SMSG_UPDATE_INSTANCE_OWNERSHIP = 0xCA73,
SMSG_UPDATE_ITEM_ENCHANTMENTS = 0xCA43,
SMSG_UPDATE_LAST_INSTANCE = 0x58FE,
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 8d98e4c2777..531a944bada 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -3858,7 +3858,7 @@ void Spell::SendSpellStart()
data << uint32(0);
}
- if (castFlags & CAST_FLAG_UNKNOWN_31)
+ if (castFlags & CAST_FLAG_HEAL_PREDICTION)
{
data << uint32(0);
data << uint8(0); // unkByte
@@ -4175,7 +4175,25 @@ void Spell::SendChannelStart(uint32 duration)
data.append(m_caster->GetPackGUID());
data << uint32(m_spellInfo->Id);
data << uint32(duration);
-
+ data << uint8(0); // immunity (castflag & 0x04000000)
+ /*
+ if (immunity)
+ {
+ data << uint32(); // CastSchoolImmunities
+ data << uint32(); // CastImmunities
+ }
+ */
+ data << uint8(0); // healPrediction (castflag & 0x40000000)
+ /*
+ if (healPrediction)
+ {
+ data.appendPackGUID(channelTarget); // target packguid
+ data << uint32(); // spellid
+ data << uint8(0); // unk3
+ if (unk3 == 2)
+ data.append(); // unk packed guid (unused ?)
+ }
+ */
m_caster->SendMessageToSet(&data, true);
m_timer = duration;
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index dd377d66feb..ca069046677 100755
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -68,7 +68,7 @@ enum SpellCastFlags
CAST_FLAG_UNKNOWN_28 = 0x08000000,
CAST_FLAG_UNKNOWN_29 = 0x10000000,
CAST_FLAG_UNKNOWN_30 = 0x20000000,
- CAST_FLAG_UNKNOWN_31 = 0x40000000,
+ CAST_FLAG_HEAL_PREDICTION = 0x40000000,
CAST_FLAG_UNKNOWN_32 = 0x80000000,
};