diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e1e689c516..1664acee8e 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1525,10 +1525,23 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati } else { - if (getClass() == CLASS_DEATH_KNIGHT && GetMapId() == 609 && !IsGameMaster() && !HasSpell(50977)) + if (!IsGameMaster()) { - SendTransferAborted(mapid, TRANSFER_ABORT_UNIQUE_MESSAGE, 1); - return false; + if (getClass() == CLASS_DEATH_KNIGHT && GetMapId() == 609 && !HasSpell(50977)) + { + SendTransferAborted(mapid, TRANSFER_ABORT_UNIQUE_MESSAGE, AsUnderlyingType(TransferAbortedUniqueMessageArgs::StillWithinTheLichKingsGrasp)); + return false; + } + else if (getRace() == RACE_GOBLIN && GetMapId() == 648 && GetQuestStatus(25265) != QUEST_STATUS_REWARDED) + { + SendTransferAborted(mapid, TRANSFER_ABORT_UNIQUE_MESSAGE, AsUnderlyingType(TransferAbortedUniqueMessageArgs::DestinyOfTheBilgewaterCartelStillUndecided)); + return false; + } + else if (getRace() == RACE_WORGEN && GetMapId() == 654 && GetQuestStatus(26706) != QUEST_STATUS_REWARDED) + { + SendTransferAborted(mapid, TRANSFER_ABORT_UNIQUE_MESSAGE, AsUnderlyingType(TransferAbortedUniqueMessageArgs::FateOfGilneasHasNotBeenDecidedYet)); + return false; + } } // far teleport to another map diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 0800d7dbc4..f1d3f01834 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -675,6 +675,14 @@ enum TransferAbortReason TRANSFER_ABORT_ALREADY_COMPLETED_ENCOUNTER = 0x13 // 4.2.2 }; +enum class TransferAbortedUniqueMessageArgs : uint8 +{ + None = 0, + StillWithinTheLichKingsGrasp = 1, + DestinyOfTheBilgewaterCartelStillUndecided = 2, + FateOfGilneasHasNotBeenDecidedYet = 3 +}; + enum InstanceResetWarningType { RAID_INSTANCE_WARNING_HOURS = 1, // WARNING! %s is scheduled to reset in %d hour(s).