diff options
| author | Florian Kagerer | 2009-06-05 21:34:18 +0000 | 
|---|---|---|
| committer | Florian Kagerer | 2009-06-05 21:34:18 +0000 | 
| commit | 90ee879d89ad974df64a5119ae92d40141309496 (patch) | |
| tree | 91010c0ddca5db726fcb9431aad5b56be89e49c4 | |
| parent | 7c84cca81d4fd7eeadd3d6903d80e1e856c2d5a0 (diff) | |
| download | scummvm-rg350-90ee879d89ad974df64a5119ae92d40141309496.tar.gz scummvm-rg350-90ee879d89ad974df64a5119ae92d40141309496.tar.bz2 scummvm-rg350-90ee879d89ad974df64a5119ae92d40141309496.zip  | |
LOL: implemented another opcode
svn-id: r41199
| -rw-r--r-- | engines/kyra/lol.h | 1 | ||||
| -rw-r--r-- | engines/kyra/script_lol.cpp | 27 | 
2 files changed, 27 insertions, 1 deletions
diff --git a/engines/kyra/lol.h b/engines/kyra/lol.h index 87df7de47c..3b5c862141 100644 --- a/engines/kyra/lol.h +++ b/engines/kyra/lol.h @@ -771,6 +771,7 @@ private:  	int olol_getNextActiveCharacter(EMCState *script);  	int olol_paralyzePoisonCharacter(EMCState *script);  	int olol_drawCharPortrait(EMCState *script); +	int olol_removeInventoryItem(EMCState *script);	  	int olol_getAnimationLastPart(EMCState *script);  	int olol_assignSpecialGuiShape(EMCState *script);  	int olol_findInventoryItem(EMCState *script); diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp index 75651a2a9a..33edfa0e24 100644 --- a/engines/kyra/script_lol.cpp +++ b/engines/kyra/script_lol.cpp @@ -1896,6 +1896,31 @@ int LoLEngine::olol_drawCharPortrait(EMCState *script) {  	return 1;  } +int LoLEngine::olol_removeInventoryItem(EMCState *script) { +	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_removeInventoryItem(%p) (%d)", (const void *)script, stackPos(0)); +	int itemType = stackPos(0); +	for (int i = 0; i < 48; i++) { +		if (!_inventory[i] || _itemsInPlay[_inventory[i]].itemPropertyIndex != itemType) +			continue; +		_inventory[i] = 0; +		gui_drawInventory(); +		return 1; +	} + +	for (int i = 0; i < 4; i++) { +		if (!(_characters[i].flags & 1)) +			continue; + +		for (int ii = 0; ii < 11; ii++) { +			if (!_characters[i].items[ii] || _itemsInPlay[_characters[i].items[ii]].itemPropertyIndex != itemType) +				continue; +			_characters[i].items[ii] = 0; +			return 1; +		} +	} +	return 0; +} +  int LoLEngine::olol_getAnimationLastPart(EMCState *script) {  	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_getAnimationLastPart(%p) (%d)", (const void *)script, stackPos(0));  	return _tim->resetAnimationLastPart(stackPos(0)); @@ -2730,7 +2755,7 @@ void LoLEngine::setupOpcodeTable() {  	Opcode(olol_drawCharPortrait);  	// 0xA0 -	OpcodeUnImpl(); +	Opcode(olol_removeInventoryItem);  	OpcodeUnImpl();  	OpcodeUnImpl();  	Opcode(olol_getAnimationLastPart);  | 
