diff options
| -rw-r--r-- | scumm/script_v7he.cpp | 23 | ||||
| -rw-r--r-- | scumm/script_v8.cpp | 4 | 
2 files changed, 18 insertions, 9 deletions
diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp index f3127a5314..ec5561edcc 100644 --- a/scumm/script_v7he.cpp +++ b/scumm/script_v7he.cpp @@ -510,10 +510,11 @@ void ScummEngine_v70he::o70_getActorRoom() {  }  void ScummEngine_v70he::o70_resourceRoutines() { -	int resid, op; -	op = fetchScriptByte(); +	int objidx, resid, subOp; -	switch (op) { +	subOp = fetchScriptByte(); + +	switch (subOp) {  	case 100:		// SO_LOAD_SCRIPT  		resid = pop();  		ensureResourceLoaded(rtScript, resid); @@ -607,7 +608,7 @@ void ScummEngine_v70he::o70_resourceRoutines() {  	case 122:  	case 123:  	case 203: -		debug(5,"stub queueload (%d) resource %d", op, pop()); +		debug(5,"stub queueload (%d) resource %d", subOp, pop());  		break;  	case 159:  		resid = pop(); @@ -627,17 +628,25 @@ void ScummEngine_v70he::o70_resourceRoutines() {  		break;  	case 233:  		resid = pop(); -		debug(5,"stub o70_resourceRoutines lock object %d", resid); +		objidx = getObjectIndex(resid); +		if (objidx == -1) +			break; +		res.lock(rtFlObject, _objs[objidx].fl_object_index); +		debug(0,"stub o70_resourceRoutines lock object %d", resid);  		break;  	case 235:  		resid = pop(); -		debug(5,"stub o70_resourceRoutines unlock object %d", resid); +		objidx = getObjectIndex(resid); +		if (objidx == -1) +			break; +		res.unlock(rtFlObject, _objs[objidx].fl_object_index); +		debug(0,"stub o70_resourceRoutines unlock object %d", resid);  		break;  	case 239:  		// Used in airport  		break;  	default: -		debug(1,"o70_resourceRoutines: default case %d", op); +		debug(1,"o70_resourceRoutines: default case %d", subOp);  	}  } diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp index cd3e6d7f7e..6e29b88fff 100644 --- a/scumm/script_v8.cpp +++ b/scumm/script_v8.cpp @@ -1214,13 +1214,13 @@ void ScummEngine_v8::o8_kernelSetFunctions() {  	case 11: {	// lockObject  		int objidx = getObjectIndex(args[1]);  		assert(objidx != -1); -		res.lock(rtFlObject, objidx); +		res.lock(rtFlObject, _objs[objidx].fl_object_index);  		break;  	}  	case 12: {	// unlockObject  		int objidx = getObjectIndex(args[1]);  		assert(objidx != -1); -		res.unlock(rtFlObject, objidx); +		res.unlock(rtFlObject, _objs[objidx].fl_object_index);  		break;  	}  	case 13:	// remapCostume  | 
