diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 44f9b0ba044..ec733786c1a 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -11,7 +11,7 @@
var/datum/reagents/reagents = null
//This atom's HUD (med/sec, etc) images. Associative list.
- var/list/image/hud_list = list()
+ var/list/image/hud_list = null
//HUD images that this atom can provide.
var/list/hud_possible
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 8d6d5705654..8472929b222 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -74,7 +74,7 @@
if(loc == newloc) //Remove this check and people can accelerate. Not opening that can of worms just yet.
newtonian_move(last_move)
- if(. && buckled_mobs.len && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s)
+ if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s)
. = 0
//Called after a successful Move(). By this point, we've already moved
@@ -137,7 +137,7 @@
stop_pulling()
if(buckled)
buckled.unbuckle_mob(src,force=1)
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
unbuckle_all_mobs(force=1)
. = ..()
if(client)
diff --git a/code/game/gamemodes/clock_cult/clock_structures.dm b/code/game/gamemodes/clock_cult/clock_structures.dm
index e6092eae7a2..2b91c1cbb67 100644
--- a/code/game/gamemodes/clock_cult/clock_structures.dm
+++ b/code/game/gamemodes/clock_cult/clock_structures.dm
@@ -461,7 +461,7 @@
/obj/effect/clockwork/spatial_gateway/attack_hand(mob/living/user)
if(user.pulling && user.a_intent == "grab" && isliving(user.pulling))
var/mob/living/L = user.pulling
- if(L.buckled || L.anchored || L.buckled_mobs.len)
+ if(L.buckled || L.anchored || L.has_buckled_mobs())
return 0
user.visible_message("[user] shoves [L] into [src]!", "You shove [L] into [src]!")
user.stop_pulling()
diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm
index 41f37f98540..430cfb3552d 100644
--- a/code/game/gamemodes/shadowling/shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm
@@ -136,7 +136,7 @@
if(user.pulledby)
user.pulledby.stop_pulling()
user.stop_pulling()
- if(user.buckled_mobs.len)
+ if(user.has_buckled_mobs())
user.unbuckle_all_mobs(force=1)
sleep(40) //4 seconds
if(!qdeleted(user))
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 7207a48eca0..fae51da8c58 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -177,11 +177,11 @@ Class Procs:
density = 1
if(!target)
for(var/mob/living/carbon/C in loc)
- if(C.buckled || C.buckled_mobs.len)
+ if(C.buckled || C.has_buckled_mobs())
continue
else
target = C
- if(target && !target.buckled && !target.buckled_mobs.len)
+ if(target && !target.buckled && !target.has_buckled_mobs())
occupant = target
target.forceMove(src)
updateUsrDialog()
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index f43d5b07698..1acadfa6173 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -226,7 +226,7 @@
if(user.pulling && user.a_intent == "grab" && isliving(user.pulling))
var/mob/living/L = user.pulling
- if(L.buckled || L.buckled_mobs.len)
+ if(L.buckled || L.has_buckled_mobs())
return
if(state_open)
if(iscorgi(L))
diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm
index 732fdc85a09..4da9c5feb8e 100644
--- a/code/game/mecha/equipment/tools/medical_tools.dm
+++ b/code/game/mecha/equipment/tools/medical_tools.dm
@@ -77,7 +77,7 @@
if(target.buckled)
occupant_message("[target] will not fit into the sleeper because they are buckled to [target.buckled]!")
return
- if(target.buckled_mobs.len)
+ if(target.has_buckled_mobs())
occupant_message("[target] will not fit into the sleeper because of the creatures attached to it!")
return
if(patient)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 5ab9bfc6618..5952e4bdca2 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -806,7 +806,7 @@
user << "You are currently buckled and cannot move."
log_append_to_last("Permission denied.")
return
- if(user.buckled_mobs.len) //mob attached to us
+ if(user.has_buckled_mobs()) //mob attached to us
user << "You can't enter the exosuit with other creatures attached to you!"
return
@@ -819,7 +819,7 @@
user << "[occupant] was faster! Try better next time, loser."
else if(user.buckled)
user << "You can't enter the exosuit while buckled."
- else if(user.buckled_mobs.len)
+ else if(user.has_buckled_mobs())
user << "You can't enter the exosuit with other creatures attached to you!"
else
moved_inside(user)
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 5e16e3f3bc7..46e675245a3 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -4,15 +4,13 @@
var/can_buckle = 0
var/buckle_lying = -1 //bed-like behaviour, forces mob.lying = buckle_lying if != -1
var/buckle_requires_restraints = 0 //require people to be handcuffed before being able to buckle. eg: pipes
- var/list/mob/living/buckled_mobs = list()
+ var/list/mob/living/buckled_mobs = null //list()
var/max_buckled_mobs = 1
-
-
//Interaction
/atom/movable/attack_hand(mob/living/user)
. = ..()
- if(can_buckle && buckled_mobs.len)
+ if(can_buckle && has_buckled_mobs())
if(buckled_mobs.len > 1)
var/unbuckled = input(user, "Who do you wish to unbuckle?","Unbuckle Who?") as null|mob in buckled_mobs
if(user_unbuckle_mob(unbuckled,user))
@@ -27,14 +25,23 @@
if(user_buckle_mob(M, user))
return 1
-
//Cleanup
/atom/movable/Destroy()
. = ..()
unbuckle_all_mobs(force=1)
+/atom/movable/proc/has_buckled_mobs()
+ if(!buckled_mobs)
+ return FALSE
+ if(buckled_mobs.len)
+ return TRUE
+
//procs that handle the actual buckling and unbuckling
/atom/movable/proc/buckle_mob(mob/living/M, force = 0)
+ if(!buckled_mobs)
+ buckled_mobs = list()
+ if(!M.buckled_mobs)
+ M.buckled_mobs = list()
if((!can_buckle && !force) || !istype(M) || (M.loc != loc) || M.buckled || (M.buckled_mobs.len >= max_buckled_mobs) || (buckle_requires_restraints && !M.restrained()) || M == src)
return 0
if(!M.can_buckle() && !force)
@@ -72,6 +79,8 @@
post_buckle_mob(.)
/atom/movable/proc/unbuckle_all_mobs(force=0)
+ if(!has_buckled_mobs())
+ return
for(var/m in buckled_mobs)
unbuckle_mob(m, force)
diff --git a/code/game/objects/items/weapons/airlock_painter.dm b/code/game/objects/items/weapons/airlock_painter.dm
index b23e2d8ffaf..5d93623fa06 100644
--- a/code/game/objects/items/weapons/airlock_painter.dm
+++ b/code/game/objects/items/weapons/airlock_painter.dm
@@ -16,6 +16,7 @@
var/obj/item/device/toner/ink = null
/obj/item/weapon/airlock_painter/New()
+ ..()
ink = new /obj/item/device/toner(src)
//This proc doesn't just check if the painter can be used, but also uses it.
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 899709fffa0..8e371776775 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -104,6 +104,7 @@
return(BRUTELOSS)
/obj/item/weapon/screwdriver/New(loc, var/param_color = null)
+ ..()
if(!icon_state)
if(!param_color)
param_color = pick("red","blue","pink","brown","green","cyan","yellow")
diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm
index afa7633b420..397db4429ab 100644
--- a/code/game/objects/structures/beds_chairs/alien_nest.dm
+++ b/code/game/objects/structures/beds_chairs/alien_nest.dm
@@ -18,7 +18,7 @@
return ..()
/obj/structure/bed/nest/user_unbuckle_mob(mob/living/buckled_mob, mob/living/user)
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
for(var/buck in buckled_mobs) //breaking a nest releases all the buckled mobs, because the nest isn't holding them down anymore
var/mob/living/M = buck
@@ -60,7 +60,7 @@
if(!user.getorgan(/obj/item/organ/alien/plasmavessel))
return
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
unbuckle_all_mobs()
if(buckle_mob(M))
diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm
index c9ef9d23e8d..f9e96c10e71 100644
--- a/code/game/objects/structures/beds_chairs/bed.dm
+++ b/code/game/objects/structures/beds_chairs/bed.dm
@@ -134,7 +134,7 @@
return
var/obj/structure/bed/roller/R = target
- if(R.buckled_mobs.len)
+ if(R.has_buckled_mobs())
if(R.buckled_mobs.len > 1)
R.unbuckle_all_mobs()
user.visible_message("[user] unbuckles all creatures from [R].")
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 5e0d0478354..c713a6abfbf 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -71,14 +71,14 @@
return ..()
/obj/structure/chair/attack_tk(mob/user)
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
..()
else
rotate()
return
/obj/structure/chair/proc/handle_rotation(direction)
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
for(var/m in buckled_mobs)
var/mob/living/buckled_mob = m
buckled_mob.buckled = null //Temporary, so Move() succeeds.
@@ -99,7 +99,7 @@
/obj/structure/chair/proc/spin()
dir = turn(dir, 90)
handle_layer()
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
for(var/m in buckled_mobs)
var/mob/living/buckled_mob = m
buckled_mob.dir = dir
@@ -167,7 +167,7 @@
return ..()
/obj/structure/chair/comfy/post_buckle_mob(mob/living/M)
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
overlays += armrest
else
overlays -= armrest
@@ -215,7 +215,7 @@
/obj/structure/chair/MouseDrop(over_object, src_location, over_location)
. = ..()
if(over_object == usr && Adjacent(usr))
- if(!item_chair || !ishuman(usr) || buckled_mobs.len || src.flags & NODECONSTRUCT)
+ if(!item_chair || !ishuman(usr) || has_buckled_mobs() || src.flags & NODECONSTRUCT)
return
if(usr.incapacitated())
usr << "You can't do that right now!"
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index ee5705a79d3..f7bad9cee77 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -141,7 +141,7 @@
if(!isliving(AM)) //let's not put ghosts or camera mobs inside closets...
return
var/mob/living/L = AM
- if(L.anchored || L.buckled || L.incorporeal_move || L.buckled_mobs.len)
+ if(L.anchored || L.buckled || L.incorporeal_move || L.has_buckled_mobs())
return
if(L.mob_size > MOB_SIZE_TINY) // Tiny mobs are treated as items.
if(horizontal && L.density)
@@ -160,7 +160,7 @@
return
if(!allow_dense && AM.density)
return
- if(AM.anchored || AM.buckled_mobs.len || (AM.flags & NODROP))
+ if(AM.anchored || AM.has_buckled_mobs() || (AM.flags & NODROP))
return
else
return
diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm
index fbb7b66b47f..7d9b35adf16 100644
--- a/code/game/objects/structures/electricchair.dm
+++ b/code/game/objects/structures/electricchair.dm
@@ -37,7 +37,7 @@
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(12, 1, src)
s.start()
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
for(var/m in buckled_mobs)
var/mob/living/buckled_mob = m
buckled_mob.electrocute_act(85, src, 1)
diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm
index ddfd102d863..41c23a4748f 100644
--- a/code/game/objects/structures/kitchen_spike.dm
+++ b/code/game/objects/structures/kitchen_spike.dm
@@ -40,7 +40,7 @@
/obj/structure/kitchenspike/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/crowbar))
- if(!buckled_mobs.len)
+ if(!has_buckled_mobs())
playsound(loc, 'sound/items/Crowbar.ogg', 100, 1)
if(do_after(user, 20/I.toolspeed, target = src))
user << "You pry the spikes out of the frame."
@@ -57,7 +57,7 @@
if(user.pulling && isliving(user.pulling) && user.a_intent == "grab" && !buckled_mobs.len)
var/mob/living/L = user.pulling
if(do_mob(user, src, 120))
- if(buckled_mobs.len) //to prevent spam/queing up attacks
+ if(has_buckled_mobs()) //to prevent spam/queing up attacks
return
if(L.buckled)
return
diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm
index 69603d9c9ed..2580ac0a3d1 100644
--- a/code/game/objects/structures/plasticflaps.dm
+++ b/code/game/objects/structures/plasticflaps.dm
@@ -23,7 +23,7 @@
return prob(60)
var/obj/structure/bed/B = A
- if (istype(A, /obj/structure/bed) && (B.buckled_mobs.len || B.density))//if it's a bed/chair and is dense or someone is buckled, it will not pass
+ if (istype(A, /obj/structure/bed) && (B.has_buckled_mobs() || B.density))//if it's a bed/chair and is dense or someone is buckled, it will not pass
return 0
if (istype(A, /obj/structure/closet/cardboard))
diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm
index 0f4e8e3f431..b6f79c129e2 100644
--- a/code/game/objects/structures/transit_tubes/station.dm
+++ b/code/game/objects/structures/transit_tubes/station.dm
@@ -64,13 +64,13 @@
if(icon_state == "open")
var/mob/living/GM = user.pulling
if(user.grab_state >= GRAB_AGGRESSIVE)
- if(GM.buckled || GM.buckled_mobs.len)
+ if(GM.buckled || GM.has_buckled_mobs())
user << "[GM] is attached to something!"
return
for(var/obj/structure/transit_tube_pod/pod in loc)
pod.visible_message("[user] starts putting [GM] into the [pod]!")
if(do_after(user, 15, target = src))
- if(GM && user.grab_state >= GRAB_AGGRESSIVE && user.pulling == GM && !GM.buckled && !GM.buckled_mobs.len)
+ if(GM && user.grab_state >= GRAB_AGGRESSIVE && user.pulling == GM && !GM.buckled && !GM.has_buckled_mobs())
GM.Weaken(5)
src.Bumped(GM)
break
diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm
index 8b3c53864e2..d538c0bad44 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm
@@ -46,7 +46,7 @@
//heatup/cooldown any mobs buckled to ourselves based on our temperature
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
var/hc = pipe_air.heat_capacity()
var/mob/living/heat_source = buckled_mobs[1]
//Best guess-estimate of the total bodytemperature of all the mobs, since they share the same environment it's ~ok~ to guess like this
@@ -82,7 +82,7 @@
animate(src, color = rgb(h_r, h_g, h_b), time = 20, easing = SINE_EASING)
//burn any mobs buckled based on temperature
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
var/heat_limit = 1000
if(pipe_air.temperature > heat_limit + 1)
for(var/m in buckled_mobs)
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index 7ffd3afefd5..8a61348e70a 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -19,6 +19,7 @@
burn_state = FIRE_PROOF
/obj/item/clothing/gloves/color/fyellow/New()
+ ..()
siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5)
/obj/item/clothing/gloves/color/black
@@ -182,6 +183,7 @@
item_color = "mime"
/obj/item/clothing/gloves/color/random/New()
+ ..()
var/list/gloves = list(
/obj/item/clothing/gloves/color/orange = 1,
/obj/item/clothing/gloves/color/red = 1,
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 2b8ae2a3455..3794875dd68 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -363,7 +363,7 @@
KZ.production = (master.spread_cap / initial(master.spread_cap)) * 50
mutations = list()
SetOpacity(0)
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
unbuckle_all_mobs(force=1)
return ..()
@@ -540,7 +540,7 @@
SM.on_grow(src)
/obj/effect/spacevine/proc/entangle_mob()
- if(!buckled_mobs.len && prob(25))
+ if(!has_buckled_mobs() && prob(25))
for(var/mob/living/V in src.loc)
entangle(V)
if(buckled_mobs.len)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index 60ce3eda30f..8fe2aebbbde 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -102,7 +102,7 @@
user << "This item is not suitable for the gibber!"
return
var/mob/living/carbon/C = L
- if(C.buckled ||C.buckled_mobs.len)
+ if(C.buckled ||C.has_buckled_mobs())
user << "[C] is attached to something!"
return
if(C.abiotic(1) && !ignore_clothing)
@@ -112,7 +112,7 @@
user.visible_message("[user] starts to put [C] into the gibber!")
src.add_fingerprint(user)
if(do_after(user, gibtime, target = src))
- if(C && user.pulling == C && !C.buckled && !C.buckled_mobs.len && !occupant)
+ if(C && user.pulling == C && !C.buckled && !C.has_buckled_mobs() && !occupant)
user.visible_message("[user] stuffs [C] into the gibber!")
C.forceMove(src)
occupant = C
diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
index 6b2c96d505d..a0e86524ca9 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
@@ -72,7 +72,7 @@
if(target.stat == 0)
user << "The monkey is struggling far too much to put it in the recycler."
return
- if(target.buckled || target.buckled_mobs.len)
+ if(target.buckled || target.has_buckled_mobs())
user << "The monkey is attached to something."
return
qdel(target)
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index ae534acaf49..72e285a0a13 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -233,6 +233,7 @@
qdel(src)
/obj/item/weapon/ore/New()
+ ..()
pixel_x = rand(0,16)-8
pixel_y = rand(0,8)-8
@@ -259,6 +260,7 @@
var/value = 1
/obj/item/weapon/coin/New()
+ ..()
pixel_x = rand(0,16)-8
pixel_y = rand(0,8)-8
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 2b03918b96d..5efb5c2032e 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -121,7 +121,7 @@ Sorry Giacom. Please don't be mad :(
if(moving_diagonally)//no mob swap during diagonal moves.
return 1
- if(!M.buckled && !M.buckled_mobs.len)
+ if(!M.buckled && !M.has_buckled_mobs())
var/mob_swap
//the puller can always swap with its victim if on grab intent
if(M.pulledby == src && a_intent == "grab")
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 857f93b8a63..26ae1fe74d8 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -357,7 +357,7 @@ var/global/mulebot_count = 0
if(isobj(AM))
var/obj/O = AM
- if(O.buckled_mobs.len || (locate(/mob) in AM)) //can't load non crates objects with mobs buckled to it or inside it.
+ if(O.has_buckled_mobs() || (locate(/mob) in AM)) //can't load non crates objects with mobs buckled to it or inside it.
buzz(SIGH)
return
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index 4cde8ce5c32..dc9793ae3ab 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -811,7 +811,7 @@
if(icon_state == "parrot_fly")
for(var/mob/living/carbon/human/H in view(src,1))
- if(H.buckled_mobs.len >= H.max_buckled_mobs) //Already has a parrot, or is being eaten by a slime
+ if(H.has_buckled_mobs() && H.buckled_mobs.len >= H.max_buckled_mobs) //Already has a parrot, or is being eaten by a slime
continue
perch_on_human(H)
return
diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm
index c32a82c7865..d7daf9e2da3 100644
--- a/code/modules/mob/living/ventcrawling.dm
+++ b/code/modules/mob/living/ventcrawling.dm
@@ -15,7 +15,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/components/unary
if(restrained())
src << "You can't vent crawl while you're restrained!"
return
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
src << "You can't vent crawl with others creatures on you!"
return
if(buckled)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index f9b5b4b161d..626b8b19c78 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -25,6 +25,7 @@ var/next_mob_id = 0
..()
/atom/proc/prepare_huds()
+ hud_list = list()
for(var/hud in hud_possible)
var/image/I = image('icons/mob/hud.dmi', src, "")
I.appearance_flags = RESET_COLOR
diff --git a/code/modules/recycling/disposal-unit.dm b/code/modules/recycling/disposal-unit.dm
index df8325fea57..41402531b7c 100644
--- a/code/modules/recycling/disposal-unit.dm
+++ b/code/modules/recycling/disposal-unit.dm
@@ -120,7 +120,7 @@
return
if(!istype(user.loc, /turf/)) //No magically doing it from inside closets
return
- if(target.buckled || target.buckled_mobs.len)
+ if(target.buckled || target.has_buckled_mobs())
return
if(target.mob_size > MOB_SIZE_HUMAN)
user << "[target] doesn't fit inside [src]!"
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 8422a2c96f1..39ad3fba504 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -588,6 +588,7 @@
var/cooldown
/obj/item/weapon/relic/New()
+ ..()
icon_state = pick("shock_kit","armor-igniter-analyzer","infra-igniter0","infra-igniter1","radio-multitool","prox-radio1","radio-radio","timer-multitool0","radio-igniter-tank")
realName = "[pick("broken","twisted","spun","improved","silly","regular","badly made")] [pick("device","object","toy","illegal tech","weapon")]"
diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm
index 9f8e6a580b5..9d79c5f1ced 100644
--- a/code/modules/research/stock_parts.dm
+++ b/code/modules/research/stock_parts.dm
@@ -71,6 +71,7 @@
var/rating = 1
/obj/item/weapon/stock_parts/New()
+ ..()
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
diff --git a/code/modules/spells/spell_types/demon.dm b/code/modules/spells/spell_types/demon.dm
index 12671cfffba..a4a258a9b40 100644
--- a/code/modules/spells/spell_types/demon.dm
+++ b/code/modules/spells/spell_types/demon.dm
@@ -145,7 +145,7 @@
src.ExtinguishMob()
if(buckled)
buckled.unbuckle_mob(src,force=1)
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
unbuckle_all_mobs(force=1)
if(pulledby)
pulledby.stop_pulling()
diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm
index 9afa9929390..71b58883ddb 100644
--- a/code/modules/spells/spell_types/ethereal_jaunt.dm
+++ b/code/modules/spells/spell_types/ethereal_jaunt.dm
@@ -35,7 +35,7 @@
if(target.pulledby)
target.pulledby.stop_pulling()
target.stop_pulling()
- if(target.buckled_mobs.len)
+ if(target.has_buckled_mobs())
target.unbuckle_all_mobs(force=1)
jaunt_disappear(animation, target)
target.loc = holder
diff --git a/code/modules/spells/spell_types/turf_teleport.dm b/code/modules/spells/spell_types/turf_teleport.dm
index d649c488967..0c473f67297 100644
--- a/code/modules/spells/spell_types/turf_teleport.dm
+++ b/code/modules/spells/spell_types/turf_teleport.dm
@@ -40,7 +40,7 @@
if(!target.Move(picked))
if(target.buckled)
target.buckled.unbuckle_mob(target,force=1)
- if(target.buckled_mobs.len)
+ if(target.has_buckled_mobs())
target.unbuckle_all_mobs(force=1)
target.loc = picked
playsound(get_turf(user), sound2, 50,1)
diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm
index bf77878eae0..fbe44181235 100644
--- a/code/modules/vehicles/atv.dm
+++ b/code/modules/vehicles/atv.dm
@@ -18,7 +18,7 @@
obj/vehicle/atv/post_buckle_mob(mob/living/M)
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
overlays += atvcover
else
overlays -= atvcover
diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm
index e0792514af8..b00bc315680 100644
--- a/code/modules/vehicles/pimpin_ride.dm
+++ b/code/modules/vehicles/pimpin_ride.dm
@@ -10,7 +10,7 @@
/obj/vehicle/janicart/handle_vehicle_offsets()
..()
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
for(var/m in buckled_mobs)
var/mob/living/buckled_mob = m
switch(buckled_mob.dir)
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index e894e3c1c4a..49a36bf69e0 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -21,7 +21,7 @@
/obj/vehicle/scooter/handle_vehicle_offsets()
..()
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
for(var/m in buckled_mobs)
var/mob/living/buckled_mob = m
switch(buckled_mob.dir)
@@ -46,14 +46,14 @@
density = 0
/obj/vehicle/scooter/skateboard/post_buckle_mob(mob/living/M)//allows skateboards to be non-dense but still allows 2 skateboarders to collide with each other
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
density = 1
else
density = 0
/obj/vehicle/scooter/skateboard/Bump(atom/A)
..()
- if(A.density && buckled_mobs.len)
+ if(A.density && has_buckled_mobs())
var/mob/living/carbon/H = buckled_mobs[1]
var/atom/throw_target = get_edge_target_turf(H, pick(cardinal))
unbuckle_mob(H)
diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm
index 7602f9f4356..e9fa351f398 100644
--- a/code/modules/vehicles/speedbike.dm
+++ b/code/modules/vehicles/speedbike.dm
@@ -26,7 +26,7 @@
dir = move_dir
/obj/vehicle/space/speedbike/Move(newloc,move_dir)
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
PoolOrNew(/obj/effect/overlay/temp/speedbike_trail,list(loc,move_dir))
. = ..()
@@ -40,7 +40,7 @@
pixel_y = 0
/obj/vehicle/space/speedbike/handle_vehicle_offsets()
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
for(var/m in buckled_mobs)
var/mob/living/buckled_mob = m
buckled_mob.dir = dir
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 96582344dfc..32f0c0f886b 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -36,7 +36,7 @@
//if they differ between directions, otherwise use the
//generic variables
/obj/vehicle/proc/handle_vehicle_offsets()
- if(buckled_mobs.len)
+ if(has_buckled_mobs())
for(var/m in buckled_mobs)
var/mob/living/buckled_mob = m
buckled_mob.dir = dir
@@ -123,7 +123,7 @@
/obj/vehicle/Bump(atom/movable/M)
. = ..()
if(auto_door_open)
- if(istype(M, /obj/machinery/door) && buckled_mobs.len)
+ if(istype(M, /obj/machinery/door) && has_buckled_mobs())
for(var/m in buckled_mobs)
M.Bumped(m)