mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-18 16:03:05 +00:00
work around script bug #911508 BS1: Crash when loading certain savegames
svn-id: r13215
This commit is contained in:
parent
ec5f7b87c6
commit
757bc4cec6
@ -81,6 +81,16 @@ void Logic::newScreen(uint32 screen) {
|
||||
Object *compact = (Object*)_objMan->fetchObject(PLAYER);
|
||||
|
||||
if (SwordEngine::_systemVars.justRestoredGame) { // if we've just restored a game - we want George to be exactly as saved
|
||||
// work around script bug #911508
|
||||
if ((_scriptVars[SCREEN] == 25) && (_scriptVars[SAND_FLAG] == 4)) {
|
||||
Object *cpt = _objMan->fetchObject(SAND_25);
|
||||
Object *george = _objMan->fetchObject(PLAYER);
|
||||
if (george->o_place == HOLDING_REPLICA_25) // is george holding the replica in his hands?
|
||||
fnFullSetFrame(cpt, SAND_25, IMPFLRCDT, IMPFLR, 0, 0, 0, 0); // empty impression in floor
|
||||
else
|
||||
fnFullSetFrame(cpt, SAND_25, IMPPLSCDT, IMPPLS, 0, 0, 0, 0); // impression filled with plaster
|
||||
}
|
||||
|
||||
fnAddHuman(NULL, 0, 0, 0, 0, 0, 0, 0);
|
||||
if (_scriptVars[GEORGE_WALKING]) { // except that if George was walking when we saveed the game
|
||||
fnStandAt(compact, PLAYER, _scriptVars[CHANGE_X], _scriptVars[CHANGE_Y], _scriptVars[CHANGE_DIR], _scriptVars[CHANGE_STANCE], 0,0);
|
||||
|
@ -1534,6 +1534,8 @@ enum ScriptVariableNames {
|
||||
POCKET_52
|
||||
};
|
||||
|
||||
#define SAND_25 1638407
|
||||
#define HOLDING_REPLICA_25 1638408
|
||||
#define GMASTER_79 5177345
|
||||
#define SCR_std_off (0*0x10000 + 6)
|
||||
#define SCR_exit0 (0*0x10000 + 7)
|
||||
|
Loading…
x
Reference in New Issue
Block a user