diff --git a/openrct2.vcxproj.user b/openrct2.vcxproj.user
index b782b153c4..a4e7b43627 100644
--- a/openrct2.vcxproj.user
+++ b/openrct2.vcxproj.user
@@ -7,15 +7,13 @@
$(TargetDir)\openrct2.exe
WindowsLocalDebugger
$(TargetDir)
-
-
+ "C:\Users\Ted\Documents\OpenRCT2\save\paint_water_rc.sv6"
$(TargetDir)
WindowsLocalDebugger
$(TargetDir)\openrct2.exe
-
-
+ "C:\Users\Ted\Documents\OpenRCT2\save\paint_water_rc.sv6"
$(TargetDir)
diff --git a/src/ride/track_data.c b/src/ride/track_data.c
index 379f53c905..57153981ce 100644
--- a/src/ride/track_data.c
+++ b/src/ride/track_data.c
@@ -6315,7 +6315,7 @@ const TRACK_PAINT_FUNCTION_GETTER RideTypeTrackPaintFunctions[91] = {
get_track_paint_function_crooked_house, // RIDE_TYPE_CROOKED_HOUSE
get_track_paint_function_monorail_cycles, // RIDE_TYPE_MONORAIL_CYCLES
0, // RIDE_TYPE_COMPACT_INVERTED_COASTER
- 0, // RIDE_TYPE_WATER_COASTER
+ get_track_paint_function_water_rc, // RIDE_TYPE_WATER_COASTER
0, // RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER
0, // RIDE_TYPE_INVERTED_HAIRPIN_COASTER
get_track_paint_function_magic_carpet, // RIDE_TYPE_MAGIC_CARPET
diff --git a/src/ride/track_paint.h b/src/ride/track_paint.h
index 7f07b28d41..dbca07e046 100644
--- a/src/ride/track_paint.h
+++ b/src/ride/track_paint.h
@@ -287,6 +287,7 @@ TRACK_PAINT_FUNCTION get_track_paint_function_roto_drop(int trackType, int direc
TRACK_PAINT_FUNCTION get_track_paint_function_flying_saucers(int trackType, int direction);
TRACK_PAINT_FUNCTION get_track_paint_function_crooked_house(int trackType, int direction);
TRACK_PAINT_FUNCTION get_track_paint_function_monorail_cycles(int trackType, int direction);
+TRACK_PAINT_FUNCTION get_track_paint_function_water_rc(int trackType, int direction);
TRACK_PAINT_FUNCTION get_track_paint_function_magic_carpet(int trackType, int direction);
TRACK_PAINT_FUNCTION get_track_paint_function_submarine_ride(int trackType, int direction);
TRACK_PAINT_FUNCTION get_track_paint_function_river_rafts(int trackType, int direction);
diff --git a/src/ride/water/river_rafts.c b/src/ride/water/river_rafts.c
index 462ea677f4..de71fd7d30 100644
--- a/src/ride/water/river_rafts.c
+++ b/src/ride/water/river_rafts.c
@@ -291,7 +291,7 @@ static const sprite_bb RiverRaftsRightQuarterTurn5_Side[4][5] = {
};
/** rct2: 0x0089B170 */
-static void paint_river_rafts_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
+void paint_river_rafts_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
uint32 imageId;
diff --git a/src/ride/water/water_coaster.c b/src/ride/water/water_coaster.c
index 846fd9695d..1a4b13b37a 100644
--- a/src/ride/water/water_coaster.c
+++ b/src/ride/water/water_coaster.c
@@ -13,3 +13,61 @@
* A full copy of the GNU General Public License can be found in licence.txt
*****************************************************************************/
#pragma endregion
+
+#include "../../common.h"
+#include "../../interface/viewport.h"
+#include "../../paint/supports.h"
+#include "../../paint/paint.h"
+#include "../track.h"
+#include "../track_paint.h"
+
+enum {
+ SPR_JUNIOR_RC_FLAT_SW_NE = 27807,
+ SPR_JUNIOR_RC_FLAT_NW_SE = 27808,
+
+ SPR_WATER_RC_FLAT_CHAIN_SW_NE = 27983,
+ SPR_WATER_RC_FLAT_CHAIN_NW_SE = 27984,
+};
+
+static const uint32 water_rc_track_pieces_flat[2][4] = {
+ {
+ SPR_JUNIOR_RC_FLAT_SW_NE,
+ SPR_JUNIOR_RC_FLAT_NW_SE,
+ SPR_JUNIOR_RC_FLAT_SW_NE,
+ SPR_JUNIOR_RC_FLAT_NW_SE
+ },
+ {
+ SPR_WATER_RC_FLAT_CHAIN_SW_NE,
+ SPR_WATER_RC_FLAT_CHAIN_NW_SE,
+ SPR_WATER_RC_FLAT_CHAIN_SW_NE,
+ SPR_WATER_RC_FLAT_CHAIN_NW_SE
+ },
+};
+
+void paint_river_rafts_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement);
+
+static void paint_water_rc_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
+{
+ bool isChained = track_element_is_lift_hill(mapElement);
+ uint32 imageId = water_rc_track_pieces_flat[isChained][direction] | gTrackColours[SCHEME_TRACK];
+ sub_98196C_rotated(direction, imageId, 0, 6, 32, 20, 1, height);
+ paint_util_push_tunnel_rotated(direction, height, TUNNEL_0);
+
+ if (track_paint_util_should_paint_supports(gPaintMapPosition)) {
+ metal_a_supports_paint_setup((direction & 1) ? 2 : 1, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]);
+ }
+
+ paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
+ paint_util_set_general_support_height(height + 32, 0x20);
+}
+
+TRACK_PAINT_FUNCTION get_track_paint_function_water_rc(int trackType, int direction)
+{
+ switch (trackType) {
+ case TRACK_ELEM_FLAT:
+ return paint_water_rc_track_flat;
+ case TRACK_ELEM_FLAT_COVERED:
+ return paint_river_rafts_track_flat;
+ }
+ return NULL;
+}