aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWalter van Niftrik2009-05-08 14:29:20 +0000
committerWalter van Niftrik2009-05-08 14:29:20 +0000
commit418d80c8a84175bdefb5e8310816d489abf0e1c6 (patch)
treebf81dbc35ba3e16d1aec4fb156d4bb13bfe26619
parentafa254721d786397d579230463ccdb96dcb9bae5 (diff)
downloadscummvm-rg350-418d80c8a84175bdefb5e8310816d489abf0e1c6.tar.gz
scummvm-rg350-418d80c8a84175bdefb5e8310816d489abf0e1c6.tar.bz2
scummvm-rg350-418d80c8a84175bdefb5e8310816d489abf0e1c6.zip
SCI: AvoidPath: another workaround for ECO
svn-id: r40384
-rw-r--r--engines/sci/engine/kpathing.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/engines/sci/engine/kpathing.cpp b/engines/sci/engine/kpathing.cpp
index 351bdb89f6..a93cc8d44d 100644
--- a/engines/sci/engine/kpathing.cpp
+++ b/engines/sci/engine/kpathing.cpp
@@ -1239,7 +1239,7 @@ static Polygon *convert_polygon(EngineState *s, reg_t polygon) {
}
}
- // WORKAROUND: self-intersecting polygon in ECO, room 300, remove last point
+ // WORKAROUND: self-intersecting polygons in ECO, rooms 280 and 300
if ((size == 11) && (s->_gameName == "eco")) {
if ((KP_UINT(s->script_000->locals_block->locals[13]) == 300)
&& (read_point(list, is_reg_t, 10) == Common::Point(221, 0))) {
@@ -1247,6 +1247,13 @@ static Polygon *convert_polygon(EngineState *s, reg_t polygon) {
size = 10;
}
}
+ if ((size == 12) && (s->_gameName == "eco")) {
+ if ((KP_UINT(s->script_000->locals_block->locals[13]) == 280)
+ && (read_point(list, is_reg_t, 11) == Common::Point(238, 189))) {
+ debug(1, "Applying fix for self-intersecting polygon in ECO, room 280");
+ size = 10;
+ }
+ }
for (i = 0; i < size; i++) {
Vertex *vertex = new Vertex(read_point(list, is_reg_t, i));