I know of
tile(tx, ty, 'property') == 14but that doesn't work properly when using dynamic floors.
This only checks for the tile below the dynamic floor.
So how do I check if it's water by either a tile or a dynamic floor?
Scripts
Check if tile is water
Check if tile is water
1

tile(tx, ty, 'property') == 14but that doesn't work properly when using dynamic floors.
local tiles = {
	[14] = true
}
function isWater(x, y)
	if entity(x, y, "exists") and entity(x, y, "type") == 71 then
		if tiles[entity(x, y, "int0")] then
			return true
		end
	end
	return false
end
tile(tx, ty, 'property')for normal tiles with water property.
Yunu5 wrote looked quite right. Are you sure that it isn't working?
tileproperty which allows you to get the property value of a tile frame (instead of a tile position). 
-- List of tiles that are... Wet...?
hc.water_tiles = {
	[42] = true,
	[52] = true,
	[53] = true
}
function hc.util.is_water(tx, ty)
if entity(tx, ty, 'exists') and entity(tx, ty, 'type') == 71 then
if (not entity(tx, ty, 'state') and hc.water_tiles[entity(tx, ty, 'int0')]) then
				
return true
end
end
	
return false
end
Yunu5 said you STILL also have to do your tile(tx, ty, 'property') == 14-check! In fact you should do your check first and only if that returns false you should try the entity/dynamic object checks.
function hc.util.is_water(tx, ty) if entity(tx, ty, 'exists') and entity(tx, ty, 'type') == 71 then if (tile(tx, ty, 'property') == 14) or (not entity(tx, ty, 'state') and hc.water_tiles[entity(tx, ty, 'int0')]) then 				 return true end end 	 return false end
function hc.util.is_water(tx, ty) if (tile(tx, ty, 'property') == 14) or entity(tx, ty, 'exists') and entity(tx, ty, 'type') == 71 then if (not entity(tx, ty, 'state') and hc.water_tiles[entity(tx, ty, 'int0')]) then 				 return true end end 	 return false end
function hc.util.is_water(tx, ty) 	-- water! no need to check entities! 	if (tile(tx, ty, 'property') == 14) then 		return true 	end 	-- dynamic object check 	if entity(tx, ty, 'exists') and entity(tx, ty, 'type') == 71 then 		if (not entity(tx, ty, 'state') and hc.water_tiles[entity(tx, ty, 'int0')]) then 			return true 		end 	end 	return false end
function hc.util.is_water(tx, ty)
	-- water! no need to check entities!
	if (tile(tx, ty, 'property') == 14) then
		return true
	end
	-- dynamic object check
	if entity(tx, ty, 'exists') and entity(tx, ty, 'type') == 71 then
		msg("tile is dynamic object")
		if (not entity(tx, ty, 'state') then
			msg("dyn obj state is false")
		end
		if hc.water_tiles[entity(tx, ty, 'int0')]) then
			msg("dyn obj tile is water")
			return true
		end
	end
	return false
end
function hc.util.is_water(tx, ty) 	-- Dynamic Tile 	if entity(tx, ty, 'exists') and entity(tx, ty, 'type') == 71 and (not entity(tx, ty, 'state')) then 		if hc.water_tiles[entity(tx, ty, 'int0')] then 			return true 		else 			return false 		end 	end 	 	-- Actual Tile 	if tile(tx, ty, 'property') == 14 then 		return true 	end 	 	return false end
1
