diff --git a/plugins/isoworld b/plugins/isoworld index c53ade8b9..91ce0f4e1 160000 --- a/plugins/isoworld +++ b/plugins/isoworld @@ -1 +1 @@ -Subproject commit c53ade8b997afbe33783aaa4aadfd39c9786fc51 +Subproject commit 91ce0f4e1d3e8c2dd407f5a406057f6e205dc842 diff --git a/plugins/isoworldremote.cpp b/plugins/isoworldremote.cpp index 6c6e8893b..c25d096c7 100644 --- a/plugins/isoworldremote.cpp +++ b/plugins/isoworldremote.cpp @@ -53,7 +53,7 @@ DFhackCExport command_result plugin_init ( color_ostream &out, std::vector DesignationAt(block_coord); DFHack::t_matpair actual_mat; - if(tileShapeBasic(tileShape(upper_tile)) == tiletype_shape_basic::Floor) { //if the upper tile is a floor, use that material instead. + if(tileShapeBasic(tileShape(upper_tile)) == tiletype_shape_basic::Floor && (tileMaterial(tile_type) != tiletype_material::FROZEN_LIQUID) && (tileMaterial(tile_type) != tiletype_material::BROOK)) { //if the upper tile is a floor, use that material instead. Unless it's ice. actual_mat = b_upper->staticMaterialAt(block_coord); } else { actual_mat = b->staticMaterialAt(block_coord); } + if(((tileMaterial(tile_type) == tiletype_material::FROZEN_LIQUID) || (tileMaterial(tile_type) == tiletype_material::BROOK)) && (tileShapeBasic(tileShape(tile_type)) == tiletype_shape_basic::Floor)) { + tile_type = tiletype::OpenSpace; + } unsigned int array_index = coord_to_index_48(xx*16+block_x, yy*16+block_y); //make a new fake material at the given index - if(tileMaterial(tile_type) == tiletype_material::FROZEN_LIQUID && (tileShapeBasic(tileShape(upper_tile)) != tiletype_shape_basic::Floor)) { //Ice. + if(tileMaterial(tile_type) == tiletype_material::FROZEN_LIQUID && !((tileShapeBasic(tileShape(upper_tile)) == tiletype_shape_basic::Floor) && (tileMaterial(upper_tile) != tiletype_material::FROZEN_LIQUID))) { //Ice. tile->set_mat_type_table(array_index, BasicMaterial::LIQUID); //Ice is totally a liquid, shut up. tile->set_mat_subtype_table(array_index, LiquidType::ICE); num_valid_blocks++;