diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Maps/Map.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/InstancePackets.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/InstancePackets.h | 10 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 3 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp | 17 | 
8 files changed, 33 insertions, 24 deletions
| diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 3e89952c2e4..a9b229bf00b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -18569,9 +18569,11 @@ void Player::BindToInstance()      WorldPackets::Instance::InstanceSaveCreated data;      data.Gm = IsGameMaster();      GetSession()->SendPacket(data.Write()); -    BindToInstance(mapSave, true); - -    GetSession()->SendCalendarRaidLockout(mapSave, true); +    if (!IsGameMaster()) +    { +        BindToInstance(mapSave, true); +        GetSession()->SendCalendarRaidLockout(mapSave, true); +    }  }  void Player::SetPendingBind(uint32 instanceId, uint32 bindTimer) diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 7fd5ad542ff..75c582df890 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -46,6 +46,7 @@  #include "MiscPackets.h"  #include "AchievementPackets.h"  #include "WhoPackets.h" +#include "InstancePackets.h"  void WorldSession::HandleRepopRequest(WorldPackets::Misc::RepopRequest& /*packet*/)  { @@ -1110,11 +1111,8 @@ void WorldSession::SendSetPhaseShift(std::set<uint32> const& phaseIds, std::set<      SendPacket(phaseShift.Write());  } -void WorldSession::HandleInstanceLockResponse(WorldPacket& recvPacket) +void WorldSession::HandleInstanceLockResponse(WorldPackets::Instance::InstanceLockResponse& packet)  { -    uint8 accept; -    recvPacket >> accept; -      if (!_player->HasPendingBind())      {          TC_LOG_INFO("network", "InstanceLockResponse: Player %s (%s) tried to bind himself/teleport to graveyard without a pending bind!", @@ -1122,7 +1120,7 @@ void WorldSession::HandleInstanceLockResponse(WorldPacket& recvPacket)          return;      } -    if (accept) +    if (packet.AcceptLock)          _player->BindToInstance();      else          _player->RepopAtGraveyard(); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 07c20ac599e..1fdd92de91c 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3224,8 +3224,8 @@ void InstanceMap::PermBindAllPlayers(Player* source)              WorldPackets::Instance::InstanceSaveCreated data;              data.Gm = player->IsGameMaster();              player->GetSession()->SendPacket(data.Write()); - -            player->GetSession()->SendCalendarRaidLockout(save, true); +            if (!player->IsGameMaster()) +                player->GetSession()->SendCalendarRaidLockout(save, true);          }          // if the leader is not in the instance the group will not get a perm bind diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index 18533ad9edb..5e85e961a21 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -80,3 +80,8 @@ WorldPacket const* WorldPackets::Instance::InstanceSaveCreated::Write()      return &_worldPacket;  } + +void WorldPackets::Instance::InstanceLockResponse::Read() +{ +    AcceptLock = _worldPacket.ReadBit(); +} diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h index ebcf8f5f0cf..b137afd7383 100644 --- a/src/server/game/Server/Packets/InstancePackets.h +++ b/src/server/game/Server/Packets/InstancePackets.h @@ -115,6 +115,16 @@ namespace WorldPackets              bool Gm = false;          }; + +        class InstanceLockResponse final : public ClientPacket +        { +        public: +            InstanceLockResponse(WorldPacket&& packet) : ClientPacket(CMSG_INSTANCE_LOCK_RESPONSE, std::move(packet)) { } + +            void Read() override; + +            bool AcceptLock = false; +        };      }  } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 814a40a037d..661b1cdf9db 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -458,7 +458,7 @@ void OpcodeTable::Initialize()      DEFINE_HANDLER(CMSG_INITIATE_TRADE,                                     STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Trade::InitiateTrade, &WorldSession::HandleInitiateTradeOpcode);      DEFINE_HANDLER(CMSG_INSPECT,                                            STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Inspect::Inspect, &WorldSession::HandleInspectOpcode);      DEFINE_HANDLER(CMSG_INSPECT_PVP,                                        STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Inspect::InspectPVPRequest, &WorldSession::HandleInspectPVP); -    DEFINE_OPCODE_HANDLER_OLD(CMSG_INSTANCE_LOCK_RESPONSE,                  STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleInstanceLockResponse); +    DEFINE_HANDLER(CMSG_INSTANCE_LOCK_RESPONSE,                             STATUS_LOGGEDIN,  PROCESS_THREADUNSAFE, WorldPackets::Instance::InstanceLockResponse, &WorldSession::HandleInstanceLockResponse);      DEFINE_OPCODE_HANDLER_OLD(CMSG_ITEM_PURCHASE_REFUND,                    STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleItemRefund                );      DEFINE_HANDLER(CMSG_ITEM_TEXT_QUERY,                                    STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Query::ItemTextQuery, &WorldSession::HandleItemTextQuery);      DEFINE_HANDLER(CMSG_JOIN_PET_BATTLE_QUEUE,                              STATUS_UNHANDLED, PROCESS_INPLACE,      WorldPackets::Null, &WorldSession::Handle_NULL); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 9b9e8f93f55..e47019357c7 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -297,6 +297,7 @@ namespace WorldPackets      namespace Instance      {          class InstanceInfo; +        class InstanceLockResponse;          class ResetInstances;      } @@ -1415,7 +1416,7 @@ class WorldSession          void HandleTimeSyncResponse(WorldPackets::Misc::TimeSyncResponse& packet);          void HandleWhoIsOpcode(WorldPackets::Who::WhoIsRequest& packet);          void HandleResetInstancesOpcode(WorldPackets::Instance::ResetInstances& packet); -        void HandleInstanceLockResponse(WorldPacket& recvPacket); +        void HandleInstanceLockResponse(WorldPackets::Instance::InstanceLockResponse& packet);          // Looking for Dungeon/Raid          void HandleLfgSetCommentOpcode(WorldPacket& recvData); diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 6e712a16c97..71232530505 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -149,13 +149,7 @@ enum Actions      ACTION_MONITOR_CORPOREALITY = 3,      // Orb Carrier -    ACTION_SHOOT                = 4, - -    // Living Inferno -    ACTION_SUMMON_LIVING_EMBERS = 5, - -    // Meteor Flame -    ACTION_SUMMON_FLAME         = 6 +    ACTION_SHOOT                = 4  };  enum Phases @@ -1005,7 +999,7 @@ class npc_meteor_strike_initial : public CreatureScript                  if (HalionAI* halionAI = CAST_AI(HalionAI, owner->AI()))                  {                      Position const* ownerPos = halionAI->GetMeteorStrikePosition(); -                    float randomAdjustment = frand(0.0f, static_cast<float>(M_PI / 7.0f)); +                    float randomAdjustment = frand(0.0f, static_cast<float>(M_PI / 5.0f));                      float angle[4];                      angle[0] = me->GetAngle(ownerPos);                      angle[1] = angle[0] + randomAdjustment; @@ -1089,7 +1083,7 @@ class npc_meteor_strike : public CreatureScript                  if (_events.ExecuteEvent() == EVENT_SPAWN_METEOR_FLAME)                  { -                    Position pos = me->GetNearPosition(5.0f, frand(0.0f, static_cast<float>(M_PI / 8.0f))); +                    Position pos = me->GetNearPosition(5.0f, frand(-static_cast<float>(M_PI / 6.0f), static_cast<float>(M_PI / 6.0f)));                      if (Creature* flame = me->SummonCreature(NPC_METEOR_STRIKE_FLAME, pos, TEMPSUMMON_TIMED_DESPAWN, 25000))                          flame->AI()->SetGUID(me->GetGUID());                  } @@ -1149,8 +1143,7 @@ class npc_meteor_strike_flame : public CreatureScript                  if (meteorStrike->AI()->GetData(DATA_SPAWNED_FLAMES) > 5)                      return; -                Position pos = me->GetNearPosition(5.0f, frand(0.0f, static_cast<float>(M_PI / 8.0f))); - +                Position pos = me->GetNearPosition(5.0f, frand(-static_cast<float>(M_PI / 6.0f), static_cast<float>(M_PI / 6.0f)));                  if (Creature* flame = me->SummonCreature(NPC_METEOR_STRIKE_FLAME, pos, TEMPSUMMON_TIMED_DESPAWN, 25000))                      flame->AI()->SetGUID(_rootOwnerGuid);              } @@ -1357,7 +1350,7 @@ class go_twilight_portal : public GameObjectScript                          _spellId = gameobject->GetGOInfo()->goober.spell;                          break;                      case GO_HALION_PORTAL_1: -                    case GO_HALION_PORTAL_2: // Not used, not seen in sniffs. Just in case. +                    case GO_HALION_PORTAL_2:                          gameobject->SetPhaseMask(0x1, true);                          /// Because WDB template has non-existent spell ID, not seen in sniffs either, meh                          _spellId = SPELL_TWILIGHT_REALM; | 
