Hiding transport objects from phase

Hi,

I’ve tried everything but I cannot hide a transport object like the ships in Howling Fjord from other phases like all other objects do. I changed my phaseMask to 2 yet I can see the ships. Infact I don’t know how its spawned either as its not in the gameobject table. Could any one give a few pointers to solve this issue?

Couldn’t find the GameObject using the gobject near command nor through VisitNearbyGridObject pattern. What is the default phase of transport gameobjects :)?

Right now you cannot hide transports

Is it because of a limitation in WOTLK or Trinity?

because of:

bool GameObject::IsAlwaysVisibleFor(WorldObject const* seer) const
{

if (WorldObject::IsAlwaysVisibleFor(seer))
    return true;

if (IsTransport() || IsDestructibleBuilding())
    return true;

I did remove that yet it did could not despawn it for some reason. However if I switch my Player* to an instanced map then it disappears.

[CODE]
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index cc62e30…4178572 100644
— a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -23368,6 +23368,8 @@ inline void UpdateVisibilityOf_helper(std::set& s64, GameObject* target,
// @HACK: This is to prevent objects like deeprun tram from disappearing when player moves far from its spawn point while riding it
if ((target->GetGOInfo()->type != GAMEOBJECT_TYPE_TRANSPORT))
s64.insert(target->GetGUID());

  • if (target->GetGOInfo()->flags & GO_FLAG_TRANSPORT_PHASING)
  •    s64.insert(target->GetGUID());
    

}
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index f2a11e4…86cc801 100644
— a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -1488,15 +1488,16 @@ enum GameobjectTypes

enum GameObjectFlags
{

  • GO_FLAG_IN_USE = 0x00000001, // disables interaction while animated
  • GO_FLAG_LOCKED = 0x00000002, // require key, spell, event, etc to be opened. Makes “Locked” appear in tooltip
  • GO_FLAG_INTERACT_COND = 0x00000004, // cannot interact (condition to interact)
  • GO_FLAG_TRANSPORT = 0x00000008, // any kind of transport? Object can transport (elevator, boat, car)
  • GO_FLAG_NOT_SELECTABLE = 0x00000010, // not selectable even in GM mode
  • GO_FLAG_NODESPAWN = 0x00000020, // never despawn, typically for doors, they just change state
  • GO_FLAG_TRIGGERED = 0x00000040, // typically, summoned objects. Triggered by spell or other events
  • GO_FLAG_DAMAGED = 0x00000200,
  • GO_FLAG_DESTROYED = 0x00000400
  • GO_FLAG_IN_USE = 0x00000001, // disables interaction while animated
  • GO_FLAG_LOCKED = 0x00000002, // require key, spell, event, etc to be opened. Makes “Locked” appear in tooltip
  • GO_FLAG_INTERACT_COND = 0x00000004, // cannot interact (condition to interact)
  • GO_FLAG_TRANSPORT = 0x00000008, // any kind of transport? Object can transport (elevator, boat, car)
  • GO_FLAG_NOT_SELECTABLE = 0x00000010, // not selectable even in GM mode
  • GO_FLAG_NODESPAWN = 0x00000020, // never despawn, typically for doors, they just change state
  • GO_FLAG_TRIGGERED = 0x00000040, // typically, summoned objects. Triggered by spell or other events
  • GO_FLAG_DAMAGED = 0x00000200,
  • GO_FLAG_DESTROYED = 0x00000400,
  • GO_FLAG_TRANSPORT_PHASING = 0x00000800, // Enable Phasing even if the GO is a transport
    };

enum GameObjectDynamicLowFlags
[/CODE]this should work, if you add the flag in the db

Thanks that is very helpful. I’ll test it soon. Is the 0x800 a blizzard’s flag or did u add that to make a server side flag?

This will not do anything. Transports are not managed by grids, they simply don’t obey any phasing at all.