mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 22:37:03 +00:00
[7634] Fixed: select non-despawnable gameobjects base at appropriate for gameobject type dataN fields.
Many in world gameobject that unexpected daspawned before must now work in more expected way. In tests i not found any damage to bg gameobject work, and at least this restore expected work for non-bg dorrs//buttons broken after half-year ago patch (that has been reverted partly in this commit) Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
parent
863a747251
commit
3226a22e29
3 changed files with 37 additions and 26 deletions
|
|
@ -586,17 +586,15 @@ bool GameObject::LoadFromDB(uint32 guid, Map *map)
|
||||||
if (!Create(guid,entry, map, phaseMask, x, y, z, ang, rotation0, rotation1, rotation2, rotation3, animprogress, go_state) )
|
if (!Create(guid,entry, map, phaseMask, x, y, z, ang, rotation0, rotation1, rotation2, rotation3, animprogress, go_state) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
switch(GetGOInfo()->type)
|
if(!GetDespawnPossibility())
|
||||||
{
|
{
|
||||||
case GAMEOBJECT_TYPE_DOOR:
|
|
||||||
case GAMEOBJECT_TYPE_BUTTON:
|
|
||||||
/* this code (in comment) isn't correct because in battlegrounds we need despawnable doors and buttons, pls remove
|
|
||||||
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN);
|
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN);
|
||||||
m_spawnedByDefault = true;
|
m_spawnedByDefault = true;
|
||||||
m_respawnDelayTime = 0;
|
m_respawnDelayTime = 0;
|
||||||
m_respawnTime = 0;
|
m_respawnTime = 0;
|
||||||
break;*/
|
}
|
||||||
default:
|
else
|
||||||
|
{
|
||||||
if(data->spawntimesecs >= 0)
|
if(data->spawntimesecs >= 0)
|
||||||
{
|
{
|
||||||
m_spawnedByDefault = true;
|
m_spawnedByDefault = true;
|
||||||
|
|
@ -616,7 +614,6 @@ bool GameObject::LoadFromDB(uint32 guid, Map *map)
|
||||||
m_respawnDelayTime = -data->spawntimesecs;
|
m_respawnDelayTime = -data->spawntimesecs;
|
||||||
m_respawnTime = 0;
|
m_respawnTime = 0;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -479,6 +479,20 @@ class MANGOS_DLL_SPEC GameObject : public WorldObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GetDespawnPossibility() const
|
||||||
|
{
|
||||||
|
switch(GetGoType())
|
||||||
|
{
|
||||||
|
case GAMEOBJECT_TYPE_DOOR: return GetGOInfo()->door.noDamageImmune;
|
||||||
|
case GAMEOBJECT_TYPE_BUTTON: return GetGOInfo()->button.noDamageImmune;
|
||||||
|
case GAMEOBJECT_TYPE_QUESTGIVER: return GetGOInfo()->questgiver.noDamageImmune;
|
||||||
|
case GAMEOBJECT_TYPE_GOOBER: return GetGOInfo()->goober.noDamageImmune;
|
||||||
|
case GAMEOBJECT_TYPE_FLAGSTAND: return GetGOInfo()->flagstand.noDamageImmune;
|
||||||
|
case GAMEOBJECT_TYPE_FLAGDROP: return GetGOInfo()->flagdrop.noDamageImmune;
|
||||||
|
default: return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
time_t GetRespawnTime() const { return m_respawnTime; }
|
time_t GetRespawnTime() const { return m_respawnTime; }
|
||||||
time_t GetRespawnTimeEx() const
|
time_t GetRespawnTimeEx() const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7633"
|
#define REVISION_NR "7634"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue