diff options
-rw-r--r-- | engines/sci/engine/kpathing.cpp | 9 |
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)); |