[10607] Handle GAMEOBJECT_TYPE_GENERIC at Use() to trigger despawn of GO

In addition, a check is added to prevent unexpected call to Use() at received opcode. Despawn of this type GO can then only be used with explicit call to Use()

Signed-off-by: NoFantasy <nofantasy@nf.no>
This commit is contained in:
Schmoozerd 2010-10-14 14:43:29 +02:00 committed by NoFantasy
parent df4563e653
commit c44438a517
3 changed files with 14 additions and 1 deletions

View file

@ -974,6 +974,12 @@ void GameObject::Use(Unit* user)
return;
}
case GAMEOBJECT_TYPE_GENERIC: // 5
{
// No known way to exclude some - only different approach is to select despawnable GOs by Entry
SetLootState(GO_JUST_DEACTIVATED);
return;
}
case GAMEOBJECT_TYPE_CHAIR: //7 Sitting: Wooden bench, chairs
{
GameObjectInfo const* info = GetGOInfo();

View file

@ -285,6 +285,13 @@ void WorldSession::HandleGameObjectUseOpcode( WorldPacket & recv_data )
if(!obj)
return;
// Never expect this opcode for some type GO's
if (obj->GetGoType() == GAMEOBJECT_TYPE_GENERIC)
{
sLog.outError("HandleGameObjectUseOpcode: CMSG_GAMEOBJ_USE for not allowed GameObject type %u (Entry %u), didn't expect this to happen.", obj->GetGoType(), obj->GetEntry());
return;
}
obj->Use(_player);
}

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "10606"
#define REVISION_NR "10607"
#endif // __REVISION_NR_H__