mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-19 10:41:55 +00:00
ASYLUM: make actors face each other when interacting
This commit is contained in:
parent
e394bb3086
commit
c33604a765
@ -1716,30 +1716,33 @@ END_OPCODE
|
|||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// Opcode 0x56
|
// Opcode 0x56
|
||||||
IMPLEMENT_OPCODE(Interact)
|
IMPLEMENT_OPCODE(Interact)
|
||||||
Actor *actor = getScene()->getActor(cmd->param2 == 2 ? getSharedData()->getPlayerIndex() : cmd->param1);
|
Actor *player = getScene()->getActor(), *actor = getScene()->getActor((ActorIndex)cmd->param1);
|
||||||
|
|
||||||
if (actor->getStatus() == kActorStatusWalkingTo || actor->getStatus() == kActorStatusWalkingTo2) {
|
|
||||||
if (cmd->param2 == 2)
|
|
||||||
_processNextEntry = true;
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cmd->param2 == 2) {
|
if (cmd->param2 == 2) {
|
||||||
|
if (player->getStatus() == kActorStatusWalkingTo || player->getStatus() == kActorStatusWalkingTo2) {
|
||||||
|
_processNextEntry = true;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
cmd->param2 = 1;
|
cmd->param2 = 1;
|
||||||
_processNextEntry = false;
|
_processNextEntry = false;
|
||||||
|
|
||||||
if ((actor->getPoint1()->x + actor->getPoint2()->x == cmd->param6) && (actor->getPoint1()->y + actor->getPoint2()->y == cmd->param7)) {
|
if ((player->getPoint1()->x + player->getPoint2()->x == cmd->param6)
|
||||||
getScene()->getActor()->faceTarget((uint32)cmd->param1, kDirectionFromActor);
|
&& (player->getPoint1()->y + player->getPoint2()->y == cmd->param7)) {
|
||||||
actor->updateFromDirection((ActorDirection)((actor->getDirection() + 4) & 7));
|
player->faceTarget((uint32)cmd->param1, kDirectionFromActor);
|
||||||
|
actor->updateFromDirection((ActorDirection)((player->getDirection() + 4) & 7));
|
||||||
} else {
|
} else {
|
||||||
_currentQueueEntry->currentLine = cmd->param3;
|
_currentQueueEntry->currentLine = cmd->param3;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Common::Point point;
|
Common::Point point;
|
||||||
|
|
||||||
|
if (actor->getStatus() == kActorStatusWalkingTo || actor->getStatus() == kActorStatusWalkingTo2)
|
||||||
|
return;
|
||||||
|
|
||||||
if (actor->canInteract(&point, &cmd->param4)) {
|
if (actor->canInteract(&point, &cmd->param4)) {
|
||||||
getScene()->getActor()->processStatus(point.x, point.y, (bool)cmd->param4);
|
player->processStatus(point.x, point.y, (bool)cmd->param4);
|
||||||
cmd->param6 = point.x;
|
cmd->param6 = point.x;
|
||||||
cmd->param7 = point.y;
|
cmd->param7 = point.y;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user