diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 87332c776f..f023f3e395 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -7,7 +7,7 @@
var/climb_delay = 3.5 SECONDS
var/breakable
var/parts
- var/list/climbers = list()
+ var/list/climbers
var/block_turf_edges = FALSE // If true, turf edge icons will not be made on the turf this occupies.
var/list/connections = list("0", "0", "0", "0")
@@ -35,7 +35,7 @@
if(H.species.can_shred(user))
attack_generic(user,1,"slices")
- if(climbers.len && !(user in climbers))
+ if(LAZYLEN(climbers) && !(user in climbers))
user.visible_message("[user.name] shakes \the [src].", \
"You shake \the [src].")
structure_shaken()
@@ -103,21 +103,21 @@
return
usr.visible_message("[user] starts climbing onto \the [src]!")
- climbers |= user
+ LAZYDISTINCTADD(climbers, user)
if(!do_after(user,(issmall(user) ? climb_delay * 0.6 : climb_delay)))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if (!can_climb(user, post_climb_check=1))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
usr.forceMove(get_turf(src))
if (get_turf(user) == get_turf(src))
usr.visible_message("[user] climbs onto \the [src]!")
- climbers -= user
+ LAZYREMOVE(climbers, user)
/obj/structure/proc/structure_shaken()
for(var/mob/living/M in climbers)
@@ -204,7 +204,7 @@
if(can_visually_connect_to(S))
if(S.can_visually_connect())
if(propagate)
- //S.update_connections() //Not here
+ S.update_connections()
S.update_icon()
dirs += get_dir(src, S)
diff --git a/code/game/objects/structures/fitness_vr.dm b/code/game/objects/structures/fitness_vr.dm
index 6459cd469b..99978fe27c 100644
--- a/code/game/objects/structures/fitness_vr.dm
+++ b/code/game/objects/structures/fitness_vr.dm
@@ -26,14 +26,14 @@
return
usr.visible_message("[user] starts climbing onto \the [src]!")
- climbers |= user
+ LAZYDISTINCTADD(climbers, user)
if(!do_after(user,(issmall(user) ? 20 : 34)))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(!can_climb(user, post_climb_check=1))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(get_turf(user) == get_turf(src))
@@ -42,7 +42,7 @@
usr.forceMove(get_turf(src))
usr.visible_message("[user] climbed over \the [src]!")
- climbers -= user
+ LAZYREMOVE(climbers, user)
/obj/structure/fitness/boxing_ropes/can_climb(var/mob/living/user, post_climb_check=0) //Sets it to keep people from climbing over into the next turf if it is occupied.
if(!..())
@@ -84,14 +84,14 @@
return
usr.visible_message("[user] starts climbing onto \the [src]!")
- climbers |= user
+ LAZYDISTINCTADD(climbers, user)
if(!do_after(user,(issmall(user) ? 20 : 34)))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(!can_climb(user, post_climb_check=1))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(get_turf(user) == get_turf(src))
@@ -100,7 +100,7 @@
usr.forceMove(get_turf(src))
usr.visible_message("[user] climbed over \the [src]!")
- climbers -= user
+ LAZYREMOVE(climbers, user)
/obj/structure/fitness/boxing_ropes_bottom/can_climb(var/mob/living/user, post_climb_check=0)
if(!..())
@@ -143,14 +143,14 @@
return
usr.visible_message("[user] starts climbing onto \the [src]!")
- climbers |= user
+ LAZYDISTINCTADD(climbers, user)
if(!do_after(user,(issmall(user) ? 20 : 34)))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(!can_climb(user, post_climb_check=1))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(get_turf(user) == get_turf(src))
@@ -159,7 +159,7 @@
usr.forceMove(get_turf(src))
usr.visible_message("[user] climbed over \the [src]!")
- climbers -= user
+ LAZYREMOVE(climbers, user)
/obj/structure/fitness/boxing_turnbuckle/can_climb(var/mob/living/user, post_climb_check=0)
if(!..())
diff --git a/code/game/objects/structures/ledges.dm b/code/game/objects/structures/ledges.dm
index 1afa2efb01..cf7c88fc48 100644
--- a/code/game/objects/structures/ledges.dm
+++ b/code/game/objects/structures/ledges.dm
@@ -55,14 +55,14 @@
return
usr.visible_message("[user] starts climbing onto \the [src]!")
- climbers |= user
+ LAZYDISTINCTADD(climbers, user)
if(!do_after(user,(issmall(user) ? 20 : 34)))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(!can_climb(user, post_climb_check=1))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(get_turf(user) == get_turf(src))
@@ -71,7 +71,7 @@
usr.forceMove(get_turf(src))
usr.visible_message("[user] climbed over \the [src]!")
- climbers -= user
+ LAZYREMOVE(climbers, user)
/obj/structure/ledge/can_climb(var/mob/living/user, post_climb_check=0)
if(!..())
diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm
index e039f7806f..c6c1e1aea5 100644
--- a/code/game/objects/structures/railing.dm
+++ b/code/game/objects/structures/railing.dm
@@ -286,14 +286,14 @@
return
usr.visible_message("[user] starts climbing onto \the [src]!")
- climbers |= user
+ LAZYDISTINCTADD(climbers, user)
if(!do_after(user,(issmall(user) ? 20 : 34)))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(!can_climb(user, post_climb_check=1))
- climbers -= user
+ LAZYREMOVE(climbers, user)
return
if(get_turf(user) == get_turf(src))
@@ -303,7 +303,7 @@
usr.visible_message("[user] climbed over \the [src]!")
if(!anchored) take_damage(maxhealth) // Fatboy
- climbers -= user
+ LAZYREMOVE(climbers, user)
/obj/structure/railing/can_climb(var/mob/living/user, post_climb_check=0)
if(!..())
diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm
index e37b684d3d..47cba8bf46 100644
--- a/code/modules/tables/tables.dm
+++ b/code/modules/tables/tables.dm
@@ -333,6 +333,8 @@ var/list/table_icon_cache = list()
return FALSE
if(istype(src,/obj/structure/table/bench) && !istype(S,/obj/structure/table/bench))
return FALSE
+ if(istype(src,/obj/structure/table/rack) && !istype(S,/obj/structure/table/rack))
+ return FALSE
if(istype(S,/obj/structure/table))
return TRUE
..()