diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp index ac068fef3..e5253fae5 100644 --- a/src/game/GameObject.cpp +++ b/src/game/GameObject.cpp @@ -693,6 +693,10 @@ bool GameObject::isVisibleForInState(Player const* u, WorldObject const* viewPoi if(!IsInWorld() || !u->IsInWorld()) return false; + // invisible at client always + if(!GetGOInfo()->displayId) + return false; + // Transport always visible at this step implementation if(IsTransport() && IsInMap(u)) return true; diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 8c3e089aa..22a46ae1f 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -1228,11 +1228,18 @@ void ObjectMgr::LoadGameobjects() if(!gInfo->displayId) { - sLog.outErrorDb("Gameobject (GUID: %u Entry %u GoType: %u) doesn't have displayId (%u), not loaded.", guid, entry, gInfo->type, gInfo->displayId); - continue; + switch(gInfo->type) + { + // can be invisible always and then not req. display id in like case + case GAMEOBJECT_TYPE_TRAP: + case GAMEOBJECT_TYPE_SPELL_FOCUS: + break; + default: + sLog.outErrorDb("Gameobject (GUID: %u Entry %u GoType: %u) have displayId == 0 and then will always invisible in game.", guid, entry, gInfo->type); + break; + } } - - if (gInfo->displayId && !sGameObjectDisplayInfoStore.LookupEntry(gInfo->displayId)) + else if (!sGameObjectDisplayInfoStore.LookupEntry(gInfo->displayId)) { sLog.outErrorDb("Gameobject (GUID: %u Entry %u GoType: %u) have invalid displayId (%u), not loaded.", guid, entry, gInfo->type, gInfo->displayId); continue; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 0b9a2b860..30f1b2d6f 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8653" + #define REVISION_NR "8654" #endif // __REVISION_NR_H__