summaryrefslogtreecommitdiff
path: root/digital
diff options
context:
space:
mode:
authorNicolas Schodet2012-05-18 16:50:38 +0200
committerNicolas Schodet2012-05-18 16:50:38 +0200
commit98fbfb9d546f54760ed7f0d6e7a3f3a354578d35 (patch)
treedff25f1110dba572f6746e7a48186a855c4191f9 /digital
parent61e845923778bdc7698c2544fd4e36d17e167fa9 (diff)
digital/io-hub/src/guybrush: report really bad failure
Diffstat (limited to 'digital')
-rw-r--r--digital/io-hub/src/guybrush/strat.c14
-rw-r--r--digital/io-hub/src/guybrush/strat.h4
-rw-r--r--digital/io-hub/src/guybrush/top.c1
3 files changed, 19 insertions, 0 deletions
diff --git a/digital/io-hub/src/guybrush/strat.c b/digital/io-hub/src/guybrush/strat.c
index b18fb74e..ab3c3f8e 100644
--- a/digital/io-hub/src/guybrush/strat.c
+++ b/digital/io-hub/src/guybrush/strat.c
@@ -277,6 +277,20 @@ strat_failure (void)
}
void
+strat_bad_failure (void)
+{
+ switch (strat.last_decision)
+ {
+ default:
+ if (strat.place[strat.last_place].fail_nb < 256 - 20)
+ strat.place[strat.last_place].fail_nb += 20;
+ break;
+ case STRAT_DECISION_UNLOAD:
+ break;
+ }
+}
+
+void
strat_giveup (void)
{
switch (strat.last_decision)
diff --git a/digital/io-hub/src/guybrush/strat.h b/digital/io-hub/src/guybrush/strat.h
index 96649d7d..4f3465c4 100644
--- a/digital/io-hub/src/guybrush/strat.h
+++ b/digital/io-hub/src/guybrush/strat.h
@@ -57,6 +57,10 @@ strat_success (void);
void
strat_failure (void);
+/** Report a really bad failure. */
+void
+strat_bad_failure (void);
+
/** Report a failure of last decision, never try again. */
void
strat_giveup (void);
diff --git a/digital/io-hub/src/guybrush/top.c b/digital/io-hub/src/guybrush/top.c
index de27f28b..eb1cc0a5 100644
--- a/digital/io-hub/src/guybrush/top.c
+++ b/digital/io-hub/src/guybrush/top.c
@@ -337,6 +337,7 @@ FSM_TRANS (TOP_CLAMP_ERROR_DECISION, clamp_blocked,
else
{
strat_clamp_dead ();
+ strat_bad_failure ();
FSM_HANDLE (AI, clamp_is_dead);
return FSM_NEXT (TOP_CLAMP_ERROR_DECISION, clamp_blocked, dead);
}