[Scummvm-git-logs] scummvm master -> 235dd6089fe2691c8d1b83a0e82491e9d9483939

sev- sev at scummvm.org
Sat Mar 31 00:10:41 CEST 2018


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
235dd6089f BLADERUNNER: Implemented ActorClues::getModifier().


Commit: 235dd6089fe2691c8d1b83a0e82491e9d9483939
    https://github.com/scummvm/scummvm/commit/235dd6089fe2691c8d1b83a0e82491e9d9483939
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-03-31T00:10:26+02:00

Commit Message:
BLADERUNNER: Implemented ActorClues::getModifier().

This completes implementation of the automatic clue exchange

Changed paths:
    engines/bladerunner/actor_clues.cpp
    engines/bladerunner/script/ai_script.h


diff --git a/engines/bladerunner/actor_clues.cpp b/engines/bladerunner/actor_clues.cpp
index 028832b..b34e67b 100644
--- a/engines/bladerunner/actor_clues.cpp
+++ b/engines/bladerunner/actor_clues.cpp
@@ -22,6 +22,7 @@
 
 #include "bladerunner/actor_clues.h"
 #include "bladerunner/actor.h"
+#include "bladerunner/script/ai_script.h"
 
 #include "bladerunner/bladerunner.h"
 #include "bladerunner/game_info.h"
@@ -98,9 +99,32 @@ int ActorClues::getWeight(int clueId) const {
 }
 
 int ActorClues::getModifier(int actorId, int otherActorId, int clueId) {
-	warning("STUB: getModifier(%d, %d, %d)", actorId, otherActorId, clueId);
+	Actor *actor = _vm->_actors[actorId];
+	int modifier1, modifier2, modifier3, modifier4;
+
+	int friendliness = actor->getFriendlinessToOther(otherActorId);
+	int clueWeight = actor->_clues->getWeight(clueId);
+
+	if (actor->_clues->isFlag2(clueId)) {
+		modifier1 = 100 - actor->getHonesty() - friendliness;
+	} else {
+		modifier1 = 0;
+	}
+	modifier2 = 0;
+	modifier3 = _vm->_aiScripts->callGetFriendlinessModifierIfGetsClue(otherActorId, actorId, clueId);
+
+	for (int i = 0; i < _vm->_gameInfo->getActorCount(); i++) {
+		if (i != actorId && i != otherActorId) {
+			modifier2 += (friendliness - 50) * _vm->_aiScripts->callGetFriendlinessModifierIfGetsClue(i, otherActorId, clueId) / 100;
+		}
+	}
+	modifier4 = _vm->_rnd.getRandomNumberRng(0, (100 - actor->getIntelligence()) / 10);
+
+	if (_vm->_rnd.getRandomNumberRng(0, 1) == 1) {
+		modifier4 = -modifier4;
+	}
 
-	return 0;
+	return modifier1 + modifier2 + modifier3 + modifier4 + clueWeight;
 }
 
 static int cluesCompare(const void *p1, const void *p2) {
diff --git a/engines/bladerunner/script/ai_script.h b/engines/bladerunner/script/ai_script.h
index 03789ae..9cafa28 100644
--- a/engines/bladerunner/script/ai_script.h
+++ b/engines/bladerunner/script/ai_script.h
@@ -573,6 +573,9 @@ public:
 	bool isInsideScript() const { return _inScriptCounter > 0; }
 
 	void callChangeAnimationMode(int actor, int mode) { _AIScripts[actor]->ChangeAnimationMode(mode); }
+	int callGetFriendlinessModifierIfGetsClue(int actor, int otherActorId, int clueId) {
+		return _AIScripts[actor]->GetFriendlinessModifierIfGetsClue(otherActorId, clueId);
+	}
 };
 
 } // End of namespace BladeRunner





More information about the Scummvm-git-logs mailing list