From fe33cd84d69a1a0c7cf55498895e65f5e4ba6f42 Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Mon, 6 Nov 2006 23:58:15 +0000 Subject: [PATCH] Fix restarting game in Elvira 1 svn-id: r24645 --- engines/agos/saveload.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp index a0f973d8448..1d2ab2690ea 100644 --- a/engines/agos/saveload.cpp +++ b/engines/agos/saveload.cpp @@ -625,11 +625,11 @@ bool AGOSEngine::loadGame_e1(const char *filename) { for (num = _itemArrayInited - 1; num; num--) { Item *item = _itemArrayPtr[item_index++], *parent_item; - uint16 parent = f->readUint32BE(); - if (parent == 0xFFFF) + uint32 parent = f->readUint32BE(); + if (parent == 0xFFFFFFFF) parent_item = 0; else - parent_item = derefItem(parent); + parent_item = derefItem(parent + 1); setItemParent(item, parent_item); @@ -657,11 +657,11 @@ bool AGOSEngine::loadGame_e1(const char *filename) { u->userFlags[i] = f->readUint16BE(); } - uint16 val = f->readUint32BE(); - if (val == 0xFFFF) + uint32 val = f->readUint32BE(); + if (val == 0xFFFFFFFF) u->userItems[0] = 0; else - u->userItems[0] = val; + u->userItems[0] = val + 1; } } @@ -722,7 +722,7 @@ bool AGOSEngine::saveGame_e1(const char *filename) { if (item->parent == 0) f->writeUint32BE(0xFFFFFFFF); else - f->writeUint32BE(item->parent); + f->writeUint32BE(item->parent - 1); f->writeUint16BE(item->state); f->writeUint16BE(item->classFlags); @@ -751,7 +751,7 @@ bool AGOSEngine::saveGame_e1(const char *filename) { if (u->userItems[0] == 0) f->writeUint32BE(0xFFFFFFFF); else - f->writeUint32BE(u->userItems[0]); + f->writeUint32BE(u->userItems[0] - 1); } }