mirror of
https://github.com/mangosfour/server.git
synced 2025-12-17 07:37:03 +00:00
Add Disables table based on the work of @Olion on Zero
Added `disables` table Mostly backported from TC. Changed table format (mapID in lower 16 bit, areaID in higer 16 bit of data field). Added CREATURE_SPAWN and GAMEOBJECT_SPAWN disable types.
This commit is contained in:
parent
f5bb0529c1
commit
a93afab540
16 changed files with 621 additions and 49 deletions
|
|
@ -73,6 +73,7 @@
|
|||
#include "SQLStorages.h"
|
||||
#include "Vehicle.h"
|
||||
#include "Calendar.h"
|
||||
#include "DisableMgr.h"
|
||||
#ifdef ENABLE_ELUNA
|
||||
#include "LuaEngine.h"
|
||||
#endif /* ENABLE_ELUNA */
|
||||
|
|
@ -1713,6 +1714,13 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
|
|||
|
||||
MapEntry const* mEntry = sMapStore.LookupEntry(mapid); // Validity checked in IsValidMapCoord
|
||||
|
||||
if (!isGameMaster() && DisableMgr::IsDisabledFor(DISABLE_TYPE_MAP, mapid, this))
|
||||
{
|
||||
sLog.outDebug("Player (GUID: %u, name: %s) tried to enter a forbidden map %u", GetGUIDLow(), GetName(), mapid);
|
||||
SendTransferAbortedByLockStatus(mEntry, AREA_LOCKSTATUS_NOT_ALLOWED);
|
||||
return false;
|
||||
}
|
||||
|
||||
// preparing unsummon pet if lost (we must get pet before teleportation or will not find it later)
|
||||
Pet* pet = GetPet();
|
||||
|
||||
|
|
@ -13371,12 +13379,12 @@ Quest const* Player::GetNextQuest(ObjectGuid guid, Quest const* pQuest)
|
|||
*/
|
||||
bool Player::CanSeeStartQuest(Quest const* pQuest) const
|
||||
{
|
||||
if (SatisfyQuestClass(pQuest, false) && SatisfyQuestRace(pQuest, false) && SatisfyQuestSkill(pQuest, false) &&
|
||||
SatisfyQuestExclusiveGroup(pQuest, false) && SatisfyQuestReputation(pQuest, false) &&
|
||||
SatisfyQuestPreviousQuest(pQuest, false) && SatisfyQuestNextChain(pQuest, false) &&
|
||||
SatisfyQuestPrevChain(pQuest, false) && SatisfyQuestDay(pQuest, false) && SatisfyQuestWeek(pQuest, false) &&
|
||||
SatisfyQuestMonth(pQuest, false) &&
|
||||
pQuest->IsActive())
|
||||
if (!DisableMgr::IsDisabledFor(DISABLE_TYPE_QUEST, pQuest->GetQuestId(), this) &&
|
||||
SatisfyQuestClass(pQuest, false) && SatisfyQuestRace(pQuest, false) && SatisfyQuestSkill(pQuest, false) &&
|
||||
SatisfyQuestExclusiveGroup(pQuest, false) && SatisfyQuestReputation(pQuest, false) &&
|
||||
SatisfyQuestPreviousQuest(pQuest, false) && SatisfyQuestNextChain(pQuest, false) &&
|
||||
SatisfyQuestPrevChain(pQuest, false) && SatisfyQuestDay(pQuest, false) &&
|
||||
pQuest->IsActive())
|
||||
{
|
||||
int32 highLevelDiff = sWorld.getConfig(CONFIG_INT32_QUEST_HIGH_LEVEL_HIDE_DIFF);
|
||||
if (highLevelDiff < 0)
|
||||
|
|
@ -13389,7 +13397,8 @@ bool Player::CanSeeStartQuest(Quest const* pQuest) const
|
|||
|
||||
bool Player::CanTakeQuest(Quest const* pQuest, bool msg) const
|
||||
{
|
||||
return SatisfyQuestStatus(pQuest, msg) && SatisfyQuestExclusiveGroup(pQuest, msg) &&
|
||||
return !DisableMgr::IsDisabledFor(DISABLE_TYPE_QUEST, pQuest->GetQuestId(), this) &&
|
||||
SatisfyQuestStatus(pQuest, msg) && SatisfyQuestExclusiveGroup(pQuest, msg) &&
|
||||
SatisfyQuestClass(pQuest, msg) && SatisfyQuestRace(pQuest, msg) && SatisfyQuestLevel(pQuest, msg) &&
|
||||
SatisfyQuestSkill(pQuest, msg) && SatisfyQuestReputation(pQuest, msg) &&
|
||||
SatisfyQuestPreviousQuest(pQuest, msg) && SatisfyQuestTimed(pQuest, msg) &&
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue