diff --git a/_maps/map_files/RandomZLevels/beach.dmm b/_maps/map_files/RandomZLevels/beach.dmm
index 2931d7175b7..fe4060ad52d 100644
--- a/_maps/map_files/RandomZLevels/beach.dmm
+++ b/_maps/map_files/RandomZLevels/beach.dmm
@@ -13,7 +13,7 @@
/turf/unsimulated/beach/water/deep/rock_wall,
/area/awaymission/undersea)
"ae" = (
-/obj/structure/ladder/dive_point/anchor{
+/obj/structure/ladder/unbreakable/dive_point/anchor{
id = "pirate"
},
/turf/unsimulated/beach/water/deep/sand_floor,
@@ -217,7 +217,7 @@
/turf/unsimulated/beach/water/deep/wood_floor,
/area/awaymission/undersea)
"aU" = (
-/obj/structure/ladder/dive_point/anchor,
+/obj/structure/ladder/unbreakable/dive_point/anchor,
/turf/unsimulated/beach/water/deep/sand_floor,
/area/awaymission/undersea)
"aV" = (
@@ -1113,7 +1113,7 @@
/turf/unsimulated/beach/water/deep,
/area/awaymission/beach)
"dv" = (
-/obj/structure/ladder/dive_point/buoy,
+/obj/structure/ladder/unbreakable/dive_point/buoy,
/turf/unsimulated/beach/water/deep,
/area/awaymission/beach)
"dw" = (
@@ -1306,7 +1306,7 @@
},
/area/awaymission/beach)
"dW" = (
-/obj/structure/ladder/dive_point/buoy{
+/obj/structure/ladder/unbreakable/dive_point/buoy{
id = "pirate"
},
/turf/unsimulated/beach/water,
diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm
index 2d4baf14121..14ee2765d02 100644
--- a/code/game/objects/structures/ladders.dm
+++ b/code/game/objects/structures/ladders.dm
@@ -7,6 +7,7 @@
anchored = TRUE
var/obj/structure/ladder/down //the ladder below this one
var/obj/structure/ladder/up //the ladder above this one
+ var/use_verb = "climb"
/obj/structure/ladder/Initialize(mapload, obj/structure/ladder/up, obj/structure/ladder/down)
. = ..()
@@ -91,7 +92,7 @@
return
if(up && down)
- var/result = alert("Go up or down [src]?", "Ladder", "Up", "Down", "Cancel")
+ var/result = alert("Go up or down [src]?", "[name]", "Up", "Down", "Cancel")
if (!is_ghost && !in_range(src, user))
return // nice try
switch(result)
@@ -127,9 +128,9 @@
/obj/structure/ladder/proc/show_fluff_message(going_up, mob/user)
if(going_up)
- user.visible_message("[user] climbs up [src].","You climb up [src].")
+ user.visible_message("[user] climbs up [src].","You [use_verb] up [src].")
else
- user.visible_message("[user] climbs down [src].","You climb down [src].")
+ user.visible_message("[user] climbs down [src].","You [use_verb] down [src].")
// Indestructible away mission ladders which link based on a mapped ID and height value rather than X/Y/Z.
@@ -172,4 +173,30 @@
if (down)
break // break if both our connections are filled
- update_icon()
\ No newline at end of file
+ update_icon()
+
+/obj/structure/ladder/unbreakable/dive_point/buoy
+ name = "diving point buoy"
+ desc = "A buoy marking the location of an underwater dive area."
+ icon = 'icons/misc/beach.dmi'
+ icon_state = "buoy"
+ id = "dive"
+ height = 2
+ use_verb = "swim"
+ layer = MOB_LAYER + 0.2 //0.1 higher than the water overlay, this also means people can "swim" behind/under it
+
+/obj/structure/ladder/unbreakable/dive_point/anchor
+ name = "diving point anchor"
+ desc = "An anchor tethered to the buoy at the surface, to keep the dive area marked."
+ icon = 'icons/misc/beach.dmi'
+ icon_state = "anchor"
+ id = "dive"
+ height = 1
+ light_range = 5
+
+/obj/structure/ladder/dive_point/Initialize(mapload)
+ . = ..()
+ set_light(light_range, light_power) //magical glowing anchor
+
+/obj/structure/ladder/dive_point/update_icon()
+ return
\ No newline at end of file