mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[7636] Move lock id checks at GO templates loading to function and add check for all GO types with similar fields.
This commit is contained in:
parent
412a8029ea
commit
def4351671
2 changed files with 55 additions and 16 deletions
|
|
@ -5373,6 +5373,15 @@ struct SQLGameObjectLoader : public SQLStorageLoaderBase<SQLGameObjectLoader>
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline void CheckGOLockId(GameObjectInfo const* goInfo,uint32 dataN,uint32 N)
|
||||||
|
{
|
||||||
|
if(sLockStore.LookupEntry(dataN))
|
||||||
|
return;
|
||||||
|
|
||||||
|
sLog.outErrorDb("Gameobject (Entry: %u GoType: %u) have data%d=%u but lock (Id: %u) not found.",
|
||||||
|
goInfo->id,goInfo->type,N,goInfo->door.lockId,goInfo->door.lockId);
|
||||||
|
}
|
||||||
|
|
||||||
void ObjectMgr::LoadGameobjectInfo()
|
void ObjectMgr::LoadGameobjectInfo()
|
||||||
{
|
{
|
||||||
SQLGameObjectLoader loader;
|
SQLGameObjectLoader loader;
|
||||||
|
|
@ -5390,31 +5399,26 @@ void ObjectMgr::LoadGameobjectInfo()
|
||||||
case GAMEOBJECT_TYPE_DOOR: //0
|
case GAMEOBJECT_TYPE_DOOR: //0
|
||||||
{
|
{
|
||||||
if(goInfo->door.lockId)
|
if(goInfo->door.lockId)
|
||||||
{
|
CheckGOLockId(goInfo,goInfo->door.lockId,1);
|
||||||
if(!sLockStore.LookupEntry(goInfo->door.lockId))
|
|
||||||
sLog.outErrorDb("Gameobject (Entry: %u GoType: %u) have data1=%u but lock (Id: %u) not found.",
|
|
||||||
id,goInfo->type,goInfo->door.lockId,goInfo->door.lockId);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GAMEOBJECT_TYPE_BUTTON: //1
|
case GAMEOBJECT_TYPE_BUTTON: //1
|
||||||
{
|
{
|
||||||
if(goInfo->button.lockId)
|
if(goInfo->button.lockId)
|
||||||
{
|
CheckGOLockId(goInfo,goInfo->button.lockId,1);
|
||||||
if(!sLockStore.LookupEntry(goInfo->button.lockId))
|
break;
|
||||||
sLog.outErrorDb("Gameobject (Entry: %u GoType: %u) have data1=%u but lock (Id: %u) not found.",
|
}
|
||||||
id,goInfo->type,goInfo->button.lockId,goInfo->button.lockId);
|
case GAMEOBJECT_TYPE_QUESTGIVER: //2
|
||||||
}
|
{
|
||||||
|
if(goInfo->questgiver.lockId)
|
||||||
|
CheckGOLockId(goInfo,goInfo->questgiver.lockId,0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GAMEOBJECT_TYPE_CHEST: //3
|
case GAMEOBJECT_TYPE_CHEST: //3
|
||||||
{
|
{
|
||||||
if(goInfo->chest.lockId)
|
if(goInfo->chest.lockId)
|
||||||
{
|
CheckGOLockId(goInfo,goInfo->chest.lockId,0);
|
||||||
if(!sLockStore.LookupEntry(goInfo->chest.lockId))
|
|
||||||
sLog.outErrorDb("Gameobject (Entry: %u GoType: %u) have data0=%u but lock (Id: %u) not found.",
|
|
||||||
id,goInfo->type,goInfo->chest.lockId,goInfo->chest.lockId);
|
|
||||||
}
|
|
||||||
if(goInfo->chest.linkedTrapId) // linked trap
|
if(goInfo->chest.linkedTrapId) // linked trap
|
||||||
{
|
{
|
||||||
if(GameObjectInfo const* trapInfo = sGOStorage.LookupEntry<GameObjectInfo>(goInfo->chest.linkedTrapId))
|
if(GameObjectInfo const* trapInfo = sGOStorage.LookupEntry<GameObjectInfo>(goInfo->chest.linkedTrapId))
|
||||||
|
|
@ -5433,6 +5437,8 @@ void ObjectMgr::LoadGameobjectInfo()
|
||||||
}
|
}
|
||||||
case GAMEOBJECT_TYPE_TRAP: //6
|
case GAMEOBJECT_TYPE_TRAP: //6
|
||||||
{
|
{
|
||||||
|
if(goInfo->trap.lockId)
|
||||||
|
CheckGOLockId(goInfo,goInfo->trap.lockId,0);
|
||||||
/* disable check for while
|
/* disable check for while
|
||||||
if(goInfo->trap.spellId) // spell
|
if(goInfo->trap.spellId) // spell
|
||||||
{
|
{
|
||||||
|
|
@ -5480,6 +5486,9 @@ void ObjectMgr::LoadGameobjectInfo()
|
||||||
}
|
}
|
||||||
case GAMEOBJECT_TYPE_GOOBER: //10
|
case GAMEOBJECT_TYPE_GOOBER: //10
|
||||||
{
|
{
|
||||||
|
if(goInfo->goober.lockId)
|
||||||
|
CheckGOLockId(goInfo,goInfo->goober.lockId,0);
|
||||||
|
|
||||||
if(goInfo->goober.pageId) // pageId
|
if(goInfo->goober.pageId) // pageId
|
||||||
{
|
{
|
||||||
if(!sPageTextStore.LookupEntry<PageText>(goInfo->goober.pageId))
|
if(!sPageTextStore.LookupEntry<PageText>(goInfo->goober.pageId))
|
||||||
|
|
@ -5510,6 +5519,18 @@ void ObjectMgr::LoadGameobjectInfo()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case GAMEOBJECT_TYPE_AREADAMAGE: //12
|
||||||
|
{
|
||||||
|
if(goInfo->areadamage.lockId)
|
||||||
|
CheckGOLockId(goInfo,goInfo->areadamage.lockId,0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case GAMEOBJECT_TYPE_CAMERA: //13
|
||||||
|
{
|
||||||
|
if(goInfo->camera.lockId)
|
||||||
|
CheckGOLockId(goInfo,goInfo->camera.lockId,0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case GAMEOBJECT_TYPE_MO_TRANSPORT: //15
|
case GAMEOBJECT_TYPE_MO_TRANSPORT: //15
|
||||||
{
|
{
|
||||||
if(goInfo->moTransport.taxiPathId)
|
if(goInfo->moTransport.taxiPathId)
|
||||||
|
|
@ -5542,6 +5563,24 @@ void ObjectMgr::LoadGameobjectInfo()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case GAMEOBJECT_TYPE_FLAGSTAND: //24
|
||||||
|
{
|
||||||
|
if(goInfo->flagstand.lockId)
|
||||||
|
CheckGOLockId(goInfo,goInfo->flagstand.lockId,0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case GAMEOBJECT_TYPE_FISHINGHOLE: //25
|
||||||
|
{
|
||||||
|
if(goInfo->fishinghole.lockId)
|
||||||
|
CheckGOLockId(goInfo,goInfo->fishinghole.lockId,4);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case GAMEOBJECT_TYPE_FLAGDROP: //26
|
||||||
|
{
|
||||||
|
if(goInfo->flagdrop.lockId)
|
||||||
|
CheckGOLockId(goInfo,goInfo->flagdrop.lockId,0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case GAMEOBJECT_TYPE_BARBER_CHAIR: //32
|
case GAMEOBJECT_TYPE_BARBER_CHAIR: //32
|
||||||
if(goInfo->barberChair.chairheight > (UNIT_STAND_STATE_SIT_HIGH_CHAIR-UNIT_STAND_STATE_SIT_LOW_CHAIR) )
|
if(goInfo->barberChair.chairheight > (UNIT_STAND_STATE_SIT_HIGH_CHAIR-UNIT_STAND_STATE_SIT_LOW_CHAIR) )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7635"
|
#define REVISION_NR "7636"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue