From ac81411db461184a9d20cb43b44eca414df5e81e Mon Sep 17 00:00:00 2001 From: kaelima Date: Fri, 30 Mar 2012 02:43:17 +0200 Subject: [PATCH 1/4] Core/Protocol: - 5 new opcodes - Some spell research and fixed MSG_CHANNEL_START - Fixed SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT for 4.2.2, and removed SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE (which does not exist) --- src/server/game/Instances/InstanceScript.cpp | 23 +++++++++++--------- src/server/game/Instances/InstanceScript.h | 13 +++++++++-- src/server/game/Server/Protocol/Opcodes.cpp | 14 ++++++------ src/server/game/Server/Protocol/Opcodes.h | 14 ++++++------ src/server/game/Spells/Spell.cpp | 22 +++++++++++++++++-- src/server/game/Spells/Spell.h | 2 +- 6 files changed, 59 insertions(+), 29 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); + break; + case ENCOUNTER_FRAME_UPDATE_OBJECTIVE: data << uint8(param1); data << uint8(param2); break; - case 5: - data << uint8(param1); - 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 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, }; From fc673fce920fca74652576276dee3df991c117bf Mon Sep 17 00:00:00 2001 From: kaelima Date: Fri, 30 Mar 2012 15:13:54 +0200 Subject: [PATCH 2/4] Core/Protocol: Missing changes from ac81411db461184a9d20cb43b44eca414df5e81e --- src/server/game/Instances/InstanceScript.cpp | 4 +++- .../boss_blood_prince_council.cpp | 18 +++++++++--------- .../boss_valithria_dreamwalker.cpp | 10 +++++----- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 2a0f62d8de2..90a669b8615 100755 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -408,7 +408,7 @@ void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit /*= NULL*/, uint8 case ENCOUNTER_FRAME_ADD_TIMER: case ENCOUNTER_FRAME_ENABLE_OBJECTIVE: case ENCOUNTER_FRAME_DISABLE_OBJECTIVE: - case ENCOUNTER_FRAME_COMBAT_RES_LIMIT: + case ENCOUNTER_FRAME_SET_COMBAT_RES_LIMIT: data << uint8(param1); break; case ENCOUNTER_FRAME_UPDATE_OBJECTIVE: @@ -416,6 +416,8 @@ void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit /*= NULL*/, uint8 data << uint8(param2); break; case ENCOUNTER_FRAME_UNK7: + case ENCOUNTER_FRAME_ADD_COMBAT_RES_LIMIT: + case ENCOUNTER_FRAME_RESET_COMBAT_RES_LIMIT: default: break; } 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 70b07c61e79..22717279c5a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -210,19 +210,19 @@ class boss_blood_council_controller : public CreatureScript if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID))) { - instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, keleseth); + instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, keleseth); DoZoneInCombat(keleseth); } if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID))) { - instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, taldaram); + instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, taldaram); DoZoneInCombat(taldaram); } if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID))) { - instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, valanar); + instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, valanar); DoZoneInCombat(valanar); } @@ -412,12 +412,12 @@ class boss_prince_keleseth_icc : public CreatureScript summons.DespawnAll(); Talk(SAY_KELESETH_DEATH); - instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); } void JustReachedHome() { - instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); me->SetHealth(_spawnHealth); _isEmpowered = false; if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL))) @@ -636,12 +636,12 @@ class boss_prince_taldaram_icc : public CreatureScript summons.DespawnAll(); Talk(EMOTE_TALDARAM_DEATH); - instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); } void JustReachedHome() { - instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); me->SetHealth(_spawnHealth); _isEmpowered = false; if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL))) @@ -859,12 +859,12 @@ class boss_prince_valanar_icc : public CreatureScript summons.DespawnAll(); Talk(SAY_VALANAR_DEATH); - instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); } void JustReachedHome() { - instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); me->SetHealth(me->GetMaxHealth()); _isEmpowered = false; if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL))) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index e0993178890..2298e9fe65f 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -232,7 +232,7 @@ class ValithriaDespawner : public BasicEvent { case NPC_VALITHRIA_DREAMWALKER: if (InstanceScript* instance = creature->GetInstanceScript()) - instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, creature); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, creature); break; case NPC_BLAZING_SKELETON: case NPC_SUPPRESSER: @@ -304,7 +304,7 @@ class boss_valithria_dreamwalker : public CreatureScript me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_HEAL_PCT, true); // Glyph of Dispel Magic - not a percent heal by effect, its cast with custom basepoints me->ApplySpellImmune(0, IMMUNITY_ID, 56131, true); - _instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me); + _instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); _missedPortals = 0; _under25PercentTalkDone = false; _over75PercentTalkDone = false; @@ -322,7 +322,7 @@ class boss_valithria_dreamwalker : public CreatureScript return; DoCast(me, SPELL_COPY_DAMAGE); - _instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, me); + _instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me); _events.ScheduleEvent(EVENT_INTRO_TALK, 15000); _events.ScheduleEvent(EVENT_DREAM_PORTAL, urand(45000, 48000)); if (IsHeroic()) @@ -336,7 +336,7 @@ class boss_valithria_dreamwalker : public CreatureScript { _done = true; Talk(SAY_VALITHRIA_SUCCESS); - _instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me); + _instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); me->RemoveAurasDueToSpell(SPELL_CORRUPTION_VALITHRIA); DoCast(me, SPELL_ACHIEVEMENT_CHECK); DoCastAOE(SPELL_DREAMWALKERS_RAGE); @@ -371,7 +371,7 @@ class boss_valithria_dreamwalker : public CreatureScript { _justDied = true; Talk(SAY_VALITHRIA_DEATH); - _instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me); + _instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER))) trigger->AI()->DoAction(ACTION_DEATH); } From 56cd111c64cecaa9ac5df0a1e57cd3fdcd6a19b8 Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 3 Apr 2012 20:19:29 -0500 Subject: [PATCH 3/4] Core/Protocol: Fixed structure of CMSG_GUILD_ROSTER and added a new opcode --- src/server/game/Handlers/GuildHandler.cpp | 40 ++++++++++++++++----- src/server/game/Server/Protocol/Opcodes.cpp | 1 + src/server/game/Server/Protocol/Opcodes.h | 2 +- src/server/game/Server/WorldSession.h | 1 + 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index fd3f0c07fb4..f2a905def42 100755 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -134,13 +134,13 @@ void WorldSession::HandleGuildRosterOpcode(WorldPacket& recvPacket) ByteBuffer bytes(8, true); recvPacket.ReadXorByte(mask[0], bytes[7]); - recvPacket.ReadXorByte(mask[5], bytes[4]); - recvPacket.ReadXorByte(mask[4], bytes[5]); - recvPacket.ReadXorByte(mask[7], bytes[0]); - recvPacket.ReadXorByte(mask[3], bytes[1]); - recvPacket.ReadXorByte(mask[2], bytes[2]); - recvPacket.ReadXorByte(mask[1], bytes[6]); - recvPacket.ReadXorByte(mask[6], bytes[3]); + recvPacket.ReadXorByte(mask[3], bytes[5]); + recvPacket.ReadXorByte(mask[4], bytes[4]); + recvPacket.ReadXorByte(mask[5], bytes[0]); + recvPacket.ReadXorByte(mask[6], bytes[1]); + recvPacket.ReadXorByte(mask[1], bytes[2]); + recvPacket.ReadXorByte(mask[2], bytes[6]); + recvPacket.ReadXorByte(mask[7], bytes[3]); uint64 guildGuid = BitConverter::ToUInt64(bytes); @@ -576,7 +576,7 @@ void WorldSession::HandleQueryGuildBankTabText(WorldPacket &recv_data) guild->SendBankTabText(this, tabId); } -void WorldSession::HandleSetGuildBankTabText(WorldPacket &recv_data) +void WorldSession::HandleSetGuildBankTabText(WorldPacket& recv_data) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_SET_GUILD_BANK_TEXT"); @@ -589,3 +589,27 @@ void WorldSession::HandleSetGuildBankTabText(WorldPacket &recv_data) if (Guild* guild = _GetPlayerGuild(this)) guild->SetBankTabText(tabId, text); } + +void WorldSession::HandleGuildQueryXPOpcode(WorldPacket& recv_data) +{ + sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUERY_GUILD_XP"); + /* + Bitstream is correct, it just needs a proper guild implementation + uint64 playerGuid = 0; + + BitStream mask = recv_data.ReadBitStream(8); + + ByteBuffer bytes(8, true); + + recv_data.ReadXorByte(mask[5], bytes[6]); + recv_data.ReadXorByte(mask[1], bytes[2]); + recv_data.ReadXorByte(mask[7], bytes[1]); + recv_data.ReadXorByte(mask[4], bytes[4]); + recv_data.ReadXorByte(mask[0], bytes[0]); + recv_data.ReadXorByte(mask[6], bytes[3]); + recv_data.ReadXorByte(mask[3], bytes[5]); + recv_data.ReadXorByte(mask[2], bytes[7]); + + playerGuid = BitConverter::ToUInt64(bytes); + */ +} \ No newline at end of file diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 541fd054e89..98af62e85b5 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -127,6 +127,7 @@ void InitOpcodes() DEFINE_OPCODE_HANDLER(CMSG_PET_NAME_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetNameQuery ); DEFINE_OPCODE_HANDLER(SMSG_PET_NAME_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(CMSG_GUILD_QUERY, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryOpcode ); + DEFINE_OPCODE_HANDLER(CMSG_QUERY_GUILD_XP, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryXPOpcode ); DEFINE_OPCODE_HANDLER(SMSG_GUILD_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_DB_REPLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(CMSG_PAGE_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePageTextQueryOpcode ); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 0f6dcb48677..4a628c3c50a 100755 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -345,7 +345,7 @@ enum Opcodes CMSG_PUSHQUESTTOPARTY = 0xA47, CMSG_QUERY_GUILD_MAX_XP = 0x00, CMSG_QUERY_GUILD_REWARDS = 0x00, - CMSG_QUERY_GUILD_XP = 0x00, + CMSG_QUERY_GUILD_XP = 0x0952, CMSG_QUERY_QUESTS_COMPLETED = 0x98DF, CMSG_QUERY_TIME = 0x18FE, CMSG_QUEST_CONFIRM_ACCEPT = 0x8CD3, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 21cc3991b9f..dcfab847504 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -873,6 +873,7 @@ class WorldSession void HandleGuildBankBuyTab(WorldPacket& recv_data); void HandleQueryGuildBankTabText(WorldPacket& recv_data); void HandleSetGuildBankTabText(WorldPacket& recv_data); + void HandleGuildQueryXPOpcode(WorldPacket& recv_data); // Refer-a-Friend void HandleGrantLevel(WorldPacket& recv_data); From 34442e83b08affa9862c7106355e2f6adc5de4fa Mon Sep 17 00:00:00 2001 From: kaelima Date: Wed, 4 Apr 2012 04:27:18 +0200 Subject: [PATCH 4/4] Core/Protocol: 4 opcodez --- src/server/game/Server/Protocol/Opcodes.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 4a628c3c50a..f1b54acf57f 100755 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -897,7 +897,7 @@ enum Opcodes SMSG_PARTY_MEMBER_STATS_FULL = 0x0EDF, SMSG_PARTYKILLLOG = 0xCCC2, SMSG_PAUSE_MIRROR_TIMER = 0xD8EE, - SMSG_PERIODICAURALOG = 0x00, + SMSG_PERIODICAURALOG = 0x8CF2, SMSG_PET_ACTION_FEEDBACK = 0x4E5A, SMSG_PET_ACTION_SOUND = 0x0CC7, SMSG_PET_CAST_FAILED = 0x00, @@ -1007,9 +1007,9 @@ enum Opcodes SMSG_SPELL_GO = 0x0A53, SMSG_SPELL_START = 0xCE43, SMSG_SPELL_UPDATE_CHAIN_TARGETS = 0x98EE, - SMSG_SPELLBREAKLOG = 0x00, + SMSG_SPELLBREAKLOG = 0x9E5F, SMSG_SPELLDAMAGESHIELD = 0x8AFE, - SMSG_SPELLDISPELLOG = 0x00, + SMSG_SPELLDISPELLOG = 0x08EA, SMSG_SPELLENERGIZELOG = 0xD8FB, SMSG_SPELLHEALLOG = 0xDE4A, SMSG_SPELLINSTAKILLLOG = 0x8ED2, @@ -1017,7 +1017,7 @@ enum Opcodes SMSG_SPELLLOGMISS = 0x1CFF, SMSG_SPELLNONMELEEDAMAGELOG = 0x5CCF, SMSG_SPELLORDAMAGE_IMMUNE = 0x48FA, - SMSG_SPELLSTEALLOG = 0x00, + SMSG_SPELLSTEALLOG = 0x08E3, SMSG_SPIRIT_HEALER_CONFIRM = 0x0A4A, SMSG_STABLE_RESULT = 0x0A5B, SMSG_STANDSTATE_UPDATE = 0x4E52,