[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