diff options
| author | Paul Gilbert | 2016-08-01 21:18:07 -0400 | 
|---|---|---|
| committer | Paul Gilbert | 2016-08-01 21:18:07 -0400 | 
| commit | 81c15b11ca95451bf8b3f0ca8188223f66955fc9 (patch) | |
| tree | 644d528fb789a24fe6e1e01b420a9c34c0ebbe20 | |
| parent | 67695213a65098248776f58f2a67b10bf3427204 (diff) | |
| download | scummvm-rg350-81c15b11ca95451bf8b3f0ca8188223f66955fc9.tar.gz scummvm-rg350-81c15b11ca95451bf8b3f0ca8188223f66955fc9.tar.bz2 scummvm-rg350-81c15b11ca95451bf8b3f0ca8188223f66955fc9.zip  | |
TITANIC: Added SuccUBusScript updateState
| -rw-r--r-- | engines/titanic/true_talk/maitred_script.cpp | 211 | ||||
| -rw-r--r-- | engines/titanic/true_talk/succubus_script.cpp | 26 | 
2 files changed, 134 insertions, 103 deletions
diff --git a/engines/titanic/true_talk/maitred_script.cpp b/engines/titanic/true_talk/maitred_script.cpp index 26d0b99d3c..e0636d045f 100644 --- a/engines/titanic/true_talk/maitred_script.cpp +++ b/engines/titanic/true_talk/maitred_script.cpp @@ -676,20 +676,20 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  	if (!roomScript || !sentence || getValue(8))  		return 1; -	bool ebx = true, edi = false; +	bool stateFlag = true, applyFlag = false;  	switch (getValue(10)) {  	case 1:  		if (!getValue(11) && !getValue(8)) {  			addResponse(getDialogueId(260052)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break;  	case 2:  		if (sentence->localWord("change") || sentence->localWord("music")) {  			addResponse(getDialogueId(200684)); -			edi = true; +			applyFlag = true;  		}  		break; @@ -700,7 +700,7 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  		} else {  			addResponse(getDialogueId(260107));  		} -		edi = true; +		applyFlag = true;  		break;  	case 4: @@ -708,31 +708,31 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  			addResponse(getDialogueId(260099));  		} else {  			addResponse(getDialogueId(260131)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break;  	case 5:  		addResponse(getDialogueId(260096)); -		edi = true; -		ebx = false; +		applyFlag = true; +		stateFlag = false;  		break;  	case 6:  		addResponse(getDialogueId(260097)); -		edi = true; -		ebx = false; +		applyFlag = true; +		stateFlag = false;  		break;  	case 7:  		if (sentence->_field2C == 12) {  			addResponse(getDialogueId(260089)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else {  			addResponse(getDialogueId(260094)); -			edi = true; +			applyFlag = true;  			CTrueTalkManager::setFlags(11, 1);  		}  		break; @@ -746,7 +746,7 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  			setFlags12();  			addResponse(getDialogueId(260131));  		} -		edi = true; +		applyFlag = true;  		break;  	case 9: @@ -757,28 +757,28 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  		if ((sentence->localWord("say") || sentence->localWord("talk")) ||  				sentence->localWord("you")) {  			addResponse(getDialogueId(260216)); -			edi = true; +			applyFlag = true;  		}  		break;  	case 12:  		if (sentence->localWord("why") && sentence->localWord("naughty")) {  			addResponse(getDialogueId(260196)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("what") && sentence->localWord("his")  				&& sentence->localWord("name")) {  			addResponse(getDialogueId(260197)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("i") && sentence->localWord("meet")) {  			addResponse(getDialogueId(260198)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("i") && sentence->localWord("speak")) {  			addResponse(getDialogueId(260206)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -787,8 +787,8 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  				|| sentence->contains("go on") || sentence->localWord("need")  				|| sentence->contains("got to") || sentence->localWord("must")) {  			addResponse(getDialogueId(260199)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -796,16 +796,16 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  		if (sentence->localWord("what") || sentence->localWord("why")  				|| sentence->localWord("kill")) {  			addResponse(getDialogueId(260200)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("you") && sentence->localWord("kill")) {  			addResponse(getDialogueId(260574)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("how") && sentence->localWord("kill")) {  			addResponse(getDialogueId(260557)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -813,61 +813,61 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  		if ((sentence->localWord("what") && sentence->localWord("way"))  				|| sentence->localWord("how")) {  			addResponse(getDialogueId(260201)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break;  	case 16:  		addResponse(getDialogueId(sentence->_field2C == 11 ? 260209 : 260210)); -		edi = true; -		ebx = false; +		applyFlag = true; +		stateFlag = false;  		break;  	case 17:  		if (sentence->localWord("what") && sentence->localWord("mean")) {  			addResponse(getDialogueId(260222)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("laugh") && sentence->localWord("with")  				&& sentence->localWord("you")) {  			addResponse(getDialogueId(260221)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else {  			setFlags12();  			addResponse(getDialogueId(260221)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break;  	case 18:  		if (sentence->_field2C == 11) {  			addResponse(getDialogueId(260232)); -			edi = true; +			applyFlag = true;  		} else if (sentence->_field2C == 12) {  			addResponse(getDialogueId(260231)); -			edi = true; +			applyFlag = true;  		} else if (sentence->_field2C == 13) {  			addResponse(getDialogueId(260444));  			addResponse(getDialogueId(260233)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("what") && sentence->localWord("happen")) {  			addResponse(getDialogueId(260233)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("why") && sentence->localWord("stressed")) {  			addResponse(getDialogueId(260245));  			addResponse(getDialogueId(260233)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("why")) {  			addResponse(getDialogueId(260453));  			addResponse(getDialogueId(260233)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -876,19 +876,19 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  				|| (sentence->localWord("what") && sentence->localWord("happen"))  				|| sentence->contains("go on") || sentence->contains("and then")) {  			addResponse(getDialogueId(260234)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("why") && sentence->localWord("stressed")) {  			addResponse(getDialogueId(260245));  			addResponse(getDialogueId(260234)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("why")) {  			addResponse(getDialogueId(260276));  			addResponse(getDialogueId(260237));  			addResponse(getDialogueId(260234)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -896,21 +896,21 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  		if ((sentence->localWord("what") && sentence->localWord("leovinus"))  				|| (sentence->localWord("what") && sentence->localWord("happen"))) {  			addResponse(getDialogueId(260235)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("where") && sentence->localWord("leovinus")) {  			addResponse(getDialogueId(260236)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("why") && sentence->localWord("stressed")) {  			addResponse(getDialogueId(260245));  			addResponse(getDialogueId(260235)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else {  			addResponse(getDialogueId(260237)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -919,28 +919,28 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  		if (sentence->contains("cooking")  				|| (sentence->localWord("what") && sentence->localWord("mean"))) {  			addResponse(getDialogueId(260238)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("where") && sentence->localWord("now")) {  			addResponse(getDialogueId(260236)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("why") && sentence->localWord("stressed")) {  			addResponse(getDialogueId(260245)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("why")) {  			addResponse(getDialogueId(260239)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break;  	case 23:  		if (sentence->_field2C == 11) {  			addResponse(getDialogueId(260237)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -952,7 +952,7 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  				|| (sentence->localWord("i") && sentence->localWord("need"))  			) {  			addResponse(getDialogueId(260251)); -			edi = true; +			applyFlag = true;  		}  	case 25: @@ -962,22 +962,22 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  				|| (sentence->localWord("how") && sentence->localWord("change") && sentence->localWord("music"))  			) {  			addResponse(getDialogueId(260253)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("where") && (sentence->localWord("it")  				|| sentence->localWord("that"))) {  			addResponse(getDialogueId(260252)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("where") && sentence->localWord("key")) {  			addResponse(getDialogueId(260254)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if ((sentence->localWord("how") && sentence->localWord("work"))  				|| (sentence->localWord("what") && sentence->localWord("i") && sentence->localWord("do"))) {  			addResponse(getDialogueId(260259)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -985,21 +985,21 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  		if (sentence->localWord("where") && (sentence->localWord("key")  				|| sentence->localWord("it"))) {  			addResponse(getDialogueId(260254)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("where") && (sentence->localWord("hand")  			|| sentence->localWord("that"))) {  			addResponse(getDialogueId(260256)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->_field2C == 12) {  			addResponse(getDialogueId(260255)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("why") && sentence->localWord("need")) {  			addResponse(getDialogueId(260685)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -1007,19 +1007,19 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  		if (sentence->localWord("where") && (sentence->localWord("that")  				|| sentence->localWord("it"))) {  			addResponse(getDialogueId(260262)); -			edi = true; +			applyFlag = true;  		}  		break;  	case 28:  		if (sentence->localWord("why")) {  			addResponse(getDialogueId(260386)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		} else if (sentence->localWord("insist")) {  			addResponse(getDialogueId(260387)); -			edi = true; -			ebx = false; +			applyFlag = true; +			stateFlag = false;  		}  		break; @@ -1030,19 +1030,28 @@ int MaitreDScript::preprocess(const TTroomScript *roomScript, const TTsentence *  		} else {  			addResponse(getDialogueId(260966));  		} -		edi = true; +		applyFlag = true;  		break;  	case 30:  		if (sentence->_field2C == 11 || sentence->_field2C == 13) {  			addResponse(getDialogueId(260695)); -			edi = true; +			applyFlag = true;  		} else if (sentence->_field2C == 12) {  			addResponse(getDialogueId(260696)); -			edi = true; +			applyFlag = true;  		}  		break;  	} + +	if (applyFlag) +		applyResponse(); +	if (stateFlag) { +		setState(0); +		CTrueTalkManager::setFlags(10, 0); +	} + +	return applyFlag ? 2 : 1;  }  } // End of namespace Titanic diff --git a/engines/titanic/true_talk/succubus_script.cpp b/engines/titanic/true_talk/succubus_script.cpp index 2cbef1e365..c0c9c98af1 100644 --- a/engines/titanic/true_talk/succubus_script.cpp +++ b/engines/titanic/true_talk/succubus_script.cpp @@ -188,8 +188,30 @@ ScriptChangedResult SuccUBusScript::scriptChanged(const TTroomScript *roomScript  }  int SuccUBusScript::updateState(uint oldId, uint newId, int index) { -	warning("TODO"); -	return 0; +	if (newId == 230199) { +		return _isRoom101 ? 230148 : newId; +	} else if (newId >= 230208 && newId <= 230235) { +		addResponse(70158 - getRandomBit()); +		return newId; +	} else if (newId >= 230061 && newId <= 230063) { +		if (getValue(2)) +			return 230125; +	} + +	static const int UPDATE_STATES[][2] = { +		{ 230078, 1 }, { 230106, 2 }, { 230112, 3 }, { 230115, 4 }, +		{ 230127, 5 }, { 230140, 6 }, { 230156, 7 }, { 230157, 8 }, +		{ 230159, 9 }, { 230160, 10 }, { 230161, 11 }, { 230072, 12 } +	}; + +	for (int idx = 0; idx < 12; ++idx) { +		if (UPDATE_STATES[idx][0] == newId) { +			setState(UPDATE_STATES[idx][1]); +			break; +		} +	} + +	return newId;  }  int SuccUBusScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) {  | 
