mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-04 09:18:38 +00:00
NANCY: Do not retain satisfied status for dependencies
Fixed all instances of dependencies that, once satisfied, stay that way forever. This fixes more complex event flag dependency like the one in nancy7 scene 2805.
This commit is contained in:
parent
a3f1695f2d
commit
85b1332ab7
@ -326,11 +326,15 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
|
||||
if (NancySceneState._flags.items[dep.label] == g_nancy->_false &&
|
||||
dep.label != NancySceneState._flags.heldItem) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
} else {
|
||||
if (NancySceneState._flags.items[dep.label] == g_nancy->_true ||
|
||||
dep.label == NancySceneState._flags.heldItem) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -340,6 +344,8 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
|
||||
// nancy1 has code for some timer array that never gets used
|
||||
// and is discarded from nancy2 onward
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
@ -353,7 +359,11 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
|
||||
|
||||
if (elapsed >= dep.timeData) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
} else {
|
||||
dep.satisfied = NancySceneState.getLogicCondition(dep.label, dep.condition);
|
||||
@ -363,12 +373,16 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
|
||||
case DependencyType::kElapsedGameTime:
|
||||
if (NancySceneState._timers.lastTotalTime >= dep.timeData) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
case DependencyType::kElapsedSceneTime:
|
||||
if (NancySceneState._timers.sceneTime >= dep.timeData) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
@ -400,6 +414,8 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
|
||||
if ( (dep.minutes < count && g_nancy->getGameType() <= kGameTypeNancy6) ||
|
||||
(dep.minutes > count && g_nancy->getGameType() >= kGameTypeNancy7)) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
@ -407,12 +423,16 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
|
||||
if ( (dep.minutes > count && g_nancy->getGameType() <= kGameTypeNancy6) ||
|
||||
(dep.minutes < count && g_nancy->getGameType() >= kGameTypeNancy7)) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
if (dep.minutes == count) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
@ -480,24 +500,32 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
|
||||
case DependencyType::kPlayerTOD:
|
||||
if (dep.label == NancySceneState.getPlayerTOD()) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
case DependencyType::kTimerLessThanDependencyTime:
|
||||
if (NancySceneState._timers.timerTime <= dep.timeData) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
case DependencyType::kTimerGreaterThanDependencyTime:
|
||||
if (NancySceneState._timers.timerTime > dep.timeData) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
case DependencyType::kDifficultyLevel:
|
||||
if (dep.condition == NancySceneState._difficulty) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
break;
|
||||
@ -505,10 +533,14 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
|
||||
if (ConfMan.getBool("subtitles")) {
|
||||
if (dep.condition == 2) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
} else {
|
||||
if (dep.condition == 1) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -527,6 +559,8 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
|
||||
if (!dep.stopEvaluating) {
|
||||
if ((int)g_nancy->_randomSource->getRandomNumber(99) < dep.condition) {
|
||||
dep.satisfied = true;
|
||||
} else {
|
||||
dep.satisfied = false;
|
||||
}
|
||||
|
||||
dep.stopEvaluating = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user