diff --git a/industry_cmd.c b/industry_cmd.c index 17fa7bcd2d..48560cfbab 100644 --- a/industry_cmd.c +++ b/industry_cmd.c @@ -725,6 +725,14 @@ static void TileLoop_Industry(uint tile) #define SET_AND_UNANIMATE(tile,a,b) { _map5[tile]=a; _map_owner[tile]=b; DeleteAnimatedTile(tile); } switch(_map5[tile]) { + case 0x18: // coast line at oilrigs + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + TileLoop_Water(tile); + break; + case 0: if (!(_tick_counter & 0x400) && CHANCE16(1,2)) SET_AND_ANIMATE(tile,1,0x80); diff --git a/station_cmd.c b/station_cmd.c index 74a3308c29..d10e9ef3b0 100644 --- a/station_cmd.c +++ b/station_cmd.c @@ -1841,6 +1841,11 @@ static void TileLoop_Station(uint tile) // treat a bouy tile as water. else if (_map5[tile] == 0x52) TileLoop_Water(tile); + + // treat a oilrig (the station part) as water + else if (_map5[tile] == 0x4B) + TileLoop_Water(tile); + } diff --git a/water_cmd.c b/water_cmd.c index 2a1ccc111f..ef98a0a446 100644 --- a/water_cmd.c +++ b/water_cmd.c @@ -528,6 +528,20 @@ void TileLoop_Water(uint tile) for(i=0; i!=4; i++) TileLoopWaterHelper(tile, _tile_loop_offs_array[i]); } + + // edges + if ( GET_TILE_X(tile)==0 && IS_INT_INSIDE(GET_TILE_Y(tile),1,TILES_Y-3+1)) //NE + TileLoopWaterHelper(tile, _tile_loop_offs_array[2]); + + if ( GET_TILE_X(tile)==(TILES_X-2) && IS_INT_INSIDE(GET_TILE_Y(tile),1,TILES_Y-3+1)) //SW + TileLoopWaterHelper(tile, _tile_loop_offs_array[0]); + + if ( GET_TILE_Y(tile)==0 && IS_INT_INSIDE(GET_TILE_X(tile),1,TILES_X-3+1)) //NW + TileLoopWaterHelper(tile, _tile_loop_offs_array[1]); + + if ( GET_TILE_Y(tile)==(TILES_Y-2) && IS_INT_INSIDE(GET_TILE_X(tile),1,TILES_X-3+1)) //SE + TileLoopWaterHelper(tile, _tile_loop_offs_array[3]); + }