[7715] Provided way for scripts set alternative gameobject state for client show.

Also use enum for gsmeobject states.
This commit is contained in:
VladimirMangos 2009-04-26 07:14:46 +04:00
parent 1ec21cfb71
commit c2e6dd20dd
10 changed files with 80 additions and 53 deletions

View file

@ -2000,18 +2000,18 @@ void World::ScriptsProcess()
CellLock<GridReadGuard> cell_lock(cell, p);
cell_lock->Visit(cell_lock, object_checker, *caster->GetMap());
if ( !door )
if (!door)
{
sLog.outError("SCRIPT_COMMAND_OPEN_DOOR failed for gameobject(guid: %u).", step.script->datalong);
break;
}
if ( door->GetGoType() != GAMEOBJECT_TYPE_DOOR )
if (door->GetGoType() != GAMEOBJECT_TYPE_DOOR)
{
sLog.outError("SCRIPT_COMMAND_OPEN_DOOR failed for non-door(GoType: %u).", door->GetGoType());
break;
}
if( !door->GetGoState() )
if (door->GetGoState() != GO_STATE_READY)
break; //door already open
door->UseDoorOrButton(time_to_close);
@ -2067,7 +2067,7 @@ void World::ScriptsProcess()
break;
}
if( door->GetGoState() )
if( door->GetGoState() == GO_STATE_READY )
break; //door already closed
door->UseDoorOrButton(time_to_open);