From def4351671eb567f9cad9c936eba794279781f03 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Wed, 8 Apr 2009 17:36:12 +0400 Subject: [PATCH] [7636] Move lock id checks at GO templates loading to function and add check for all GO types with similar fields. --- src/game/ObjectMgr.cpp | 69 +++++++++++++++++++++++++++++++--------- src/shared/revision_nr.h | 2 +- 2 files changed, 55 insertions(+), 16 deletions(-) diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 77f446f93..96b7648ed 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -5373,6 +5373,15 @@ struct SQLGameObjectLoader : public SQLStorageLoaderBase } }; +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() { SQLGameObjectLoader loader; @@ -5390,31 +5399,26 @@ void ObjectMgr::LoadGameobjectInfo() case GAMEOBJECT_TYPE_DOOR: //0 { if(goInfo->door.lockId) - { - 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); - } + CheckGOLockId(goInfo,goInfo->door.lockId,1); break; } case GAMEOBJECT_TYPE_BUTTON: //1 { if(goInfo->button.lockId) - { - if(!sLockStore.LookupEntry(goInfo->button.lockId)) - 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); - } + CheckGOLockId(goInfo,goInfo->button.lockId,1); + break; + } + case GAMEOBJECT_TYPE_QUESTGIVER: //2 + { + if(goInfo->questgiver.lockId) + CheckGOLockId(goInfo,goInfo->questgiver.lockId,0); break; } case GAMEOBJECT_TYPE_CHEST: //3 { if(goInfo->chest.lockId) - { - 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); - } + CheckGOLockId(goInfo,goInfo->chest.lockId,0); + if(goInfo->chest.linkedTrapId) // linked trap { if(GameObjectInfo const* trapInfo = sGOStorage.LookupEntry(goInfo->chest.linkedTrapId)) @@ -5433,6 +5437,8 @@ void ObjectMgr::LoadGameobjectInfo() } case GAMEOBJECT_TYPE_TRAP: //6 { + if(goInfo->trap.lockId) + CheckGOLockId(goInfo,goInfo->trap.lockId,0); /* disable check for while if(goInfo->trap.spellId) // spell { @@ -5480,6 +5486,9 @@ void ObjectMgr::LoadGameobjectInfo() } case GAMEOBJECT_TYPE_GOOBER: //10 { + if(goInfo->goober.lockId) + CheckGOLockId(goInfo,goInfo->goober.lockId,0); + if(goInfo->goober.pageId) // pageId { if(!sPageTextStore.LookupEntry(goInfo->goober.pageId)) @@ -5510,6 +5519,18 @@ void ObjectMgr::LoadGameobjectInfo() } 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 { if(goInfo->moTransport.taxiPathId) @@ -5542,6 +5563,24 @@ void ObjectMgr::LoadGameobjectInfo() } 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 if(goInfo->barberChair.chairheight > (UNIT_STAND_STATE_SIT_HIGH_CHAIR-UNIT_STAND_STATE_SIT_LOW_CHAIR) ) { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 7dc7bf8e8..6a2841108 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 "7635" + #define REVISION_NR "7636" #endif // __REVISION_NR_H__