Merge-conflict fix + check for null rather than type.

This commit is contained in:
Mars
2018-10-12 18:59:54 +02:00
487 changed files with 3920 additions and 3333 deletions
+2 -2
View File
@@ -18,11 +18,11 @@
var/new_frequency = sanitize_frequency(rand(PUBLIC_LOW_FREQ, PUBLIC_HIGH_FREQ))
aSignal.set_frequency(new_frequency)
poi_list |= src
GLOB.poi_list |= src
/obj/effect/anomaly/Destroy()
QDEL_NULL(aSignal)
poi_list.Remove(src)
GLOB.poi_list.Remove(src)
return ..()
/obj/effect/anomaly/proc/anomalyEffect()
+203 -197
View File
@@ -1,197 +1,203 @@
/obj/effect/decal/cleanable/generic
name = "clutter"
desc = "Someone should clean that up."
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/obj/objects.dmi'
icon_state = "shards"
/obj/effect/decal/cleanable/ash
name = "ashes"
desc = "Ashes to ashes, dust to dust, and into space."
gender = PLURAL
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
anchored = TRUE
/obj/effect/decal/cleanable/ash/Initialize()
. = ..()
reagents.add_reagent("ash", 10)
/obj/effect/decal/cleanable/dirt
name = "dirt"
desc = "Someone should clean that up."
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/effects.dmi'
icon_state = "dirt"
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/effect/decal/cleanable/dirt/blackpowder
name = "black powder"
mouse_opacity = MOUSE_OPACITY_ICON
noscoop = TRUE
/obj/effect/decal/cleanable/dirt/blackpowder/Initialize()
. = ..()
reagents.add_reagent("blackpowder", 40) // size 2 explosion when activated
/obj/effect/decal/cleanable/flour
name = "flour"
desc = "It's still good. Four second rule!"
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/effects.dmi'
icon_state = "flour"
/obj/effect/decal/cleanable/flour/foam
name = "Fire fighting foam"
desc = "It's foam."
color = "#EBEBEB"
/obj/effect/decal/cleanable/flour/foam/Initialize()
. = ..()
QDEL_IN(src, 15 SECONDS)
/obj/effect/decal/cleanable/greenglow
name = "glowing goo"
desc = "Jeez. I hope that's not for lunch."
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
light_range = 1
icon = 'icons/effects/effects.dmi'
icon_state = "greenglow"
/obj/effect/decal/cleanable/greenglow/Initialize(mapload)
. = ..()
QDEL_IN(src, 2 MINUTES)
/obj/effect/decal/cleanable/cobweb
name = "cobweb"
desc = "Somebody should remove that."
density = FALSE
anchored = TRUE
layer = OBJ_LAYER
icon = 'icons/effects/effects.dmi'
icon_state = "cobweb1"
burntime = 1
/obj/effect/decal/cleanable/cobweb/fire_act()
qdel(src)
/obj/effect/decal/cleanable/molten_object
name = "gooey grey mass"
desc = "It looks like a melted... something."
density = FALSE
anchored = TRUE
layer = OBJ_LAYER
gender = NEUTER
icon = 'icons/effects/effects.dmi'
icon_state = "molten"
/obj/effect/decal/cleanable/molten_object/large
name = "big gooey grey mass"
icon_state = "big_molten"
/obj/effect/decal/cleanable/cobweb2
name = "cobweb"
desc = "Somebody should remove that."
density = FALSE
anchored = TRUE
layer = OBJ_LAYER
icon = 'icons/effects/effects.dmi'
icon_state = "cobweb2"
/obj/effect/decal/cleanable/vomit
name = "vomit"
desc = "Gosh, how unpleasant."
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/blood.dmi'
icon_state = "vomit_1"
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
noclear = TRUE
/obj/effect/decal/cleanable/vomit/Initialize()
. = ..()
reagents.add_reagent("vomit", 5)
/obj/effect/decal/cleanable/vomit/green
name = "green vomit"
desc = "It's all gummy. Ew."
icon_state = "gvomit_1"
random_icon_states = list("gvomit_1", "gvomit_2", "gvomit_3", "gvomit_4")
/obj/effect/decal/cleanable/vomit/green/Initialize()
. = ..()
reagents.remove_reagent("vomit", 5)
reagents.add_reagent("green_vomit", 5)
/obj/effect/decal/cleanable/tomato_smudge
name = "tomato smudge"
desc = "It's red."
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
/obj/effect/decal/cleanable/plant_smudge
name = "plant smudge"
density = FALSE
anchored = TRUE
layer = TURF_LAYER
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_plant")
/obj/effect/decal/cleanable/egg_smudge
name = "smashed egg"
desc = "Seems like this one won't hatch."
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
/obj/effect/decal/cleanable/pie_smudge //honk
name = "smashed pie"
desc = "It's pie cream from a cream pie."
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_pie")
/obj/effect/decal/cleanable/fungus
name = "space fungus"
desc = "A fungal growth. Looks pretty nasty."
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/effects.dmi'
icon_state = "flour"
color = "#D5820B"
/obj/effect/decal/cleanable/fungus/Initialize()
. = ..()
reagents.add_reagent("fungus", 10)
/obj/effect/decal/cleanable/confetti //PARTY TIME!
name = "confetti"
desc = "Party time!"
gender = PLURAL
icon = 'icons/obj/objects.dmi'
icon_state = "confetti1"
random_icon_states = list("confetti1", "confetti2", "confetti3")
anchored = TRUE
/obj/effect/decal/cleanable/generic
name = "clutter"
desc = "Someone should clean that up."
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/obj/objects.dmi'
icon_state = "shards"
/obj/effect/decal/cleanable/ash
name = "ashes"
desc = "Ashes to ashes, dust to dust, and into space."
gender = PLURAL
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
anchored = TRUE
/obj/effect/decal/cleanable/ash/Initialize()
. = ..()
reagents.add_reagent("ash", 10)
/obj/effect/decal/cleanable/dirt
name = "dirt"
desc = "Someone should clean that up."
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/dirt.dmi'
icon_state = "dirt"
canSmoothWith = list(/obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /obj/structure/falsewall)
smooth = SMOOTH_MORE
mouse_opacity = FALSE
/obj/effect/decal/cleanable/dirt/Initialize()
..()
icon_state = ""
/obj/effect/decal/cleanable/dirt/blackpowder
name = "black powder"
mouse_opacity = TRUE
noscoop = TRUE
/obj/effect/decal/cleanable/dirt/blackpowder/Initialize()
. = ..()
reagents.add_reagent("blackpowder", 40) // size 2 explosion when activated
/obj/effect/decal/cleanable/flour
name = "flour"
desc = "It's still good. Four second rule!"
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/effects.dmi'
icon_state = "flour"
/obj/effect/decal/cleanable/flour/foam
name = "Fire fighting foam"
desc = "It's foam."
color = "#EBEBEB"
/obj/effect/decal/cleanable/flour/foam/Initialize()
. = ..()
QDEL_IN(src, 15 SECONDS)
/obj/effect/decal/cleanable/greenglow
name = "glowing goo"
desc = "Jeez. I hope that's not for lunch."
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
light_range = 1
icon = 'icons/effects/effects.dmi'
icon_state = "greenglow"
/obj/effect/decal/cleanable/greenglow/Initialize(mapload)
. = ..()
QDEL_IN(src, 2 MINUTES)
/obj/effect/decal/cleanable/cobweb
name = "cobweb"
desc = "Somebody should remove that."
density = FALSE
anchored = TRUE
layer = OBJ_LAYER
icon = 'icons/effects/effects.dmi'
icon_state = "cobweb1"
burntime = 1
/obj/effect/decal/cleanable/cobweb/fire_act()
qdel(src)
/obj/effect/decal/cleanable/molten_object
name = "gooey grey mass"
desc = "It looks like a melted... something."
density = FALSE
anchored = TRUE
layer = OBJ_LAYER
gender = NEUTER
icon = 'icons/effects/effects.dmi'
icon_state = "molten"
/obj/effect/decal/cleanable/molten_object/large
name = "big gooey grey mass"
icon_state = "big_molten"
/obj/effect/decal/cleanable/cobweb2
name = "cobweb"
desc = "Somebody should remove that."
density = FALSE
anchored = TRUE
layer = OBJ_LAYER
icon = 'icons/effects/effects.dmi'
icon_state = "cobweb2"
/obj/effect/decal/cleanable/vomit
name = "vomit"
desc = "Gosh, how unpleasant."
gender = PLURAL
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/blood.dmi'
icon_state = "vomit_1"
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
noclear = TRUE
/obj/effect/decal/cleanable/vomit/Initialize()
. = ..()
reagents.add_reagent("vomit", 5)
/obj/effect/decal/cleanable/vomit/green
name = "green vomit"
desc = "It's all gummy. Ew."
icon_state = "gvomit_1"
random_icon_states = list("gvomit_1", "gvomit_2", "gvomit_3", "gvomit_4")
/obj/effect/decal/cleanable/vomit/green/Initialize()
. = ..()
reagents.remove_reagent("vomit", 5)
reagents.add_reagent("green_vomit", 5)
/obj/effect/decal/cleanable/tomato_smudge
name = "tomato smudge"
desc = "It's red."
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
/obj/effect/decal/cleanable/plant_smudge
name = "plant smudge"
density = FALSE
anchored = TRUE
layer = TURF_LAYER
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_plant")
/obj/effect/decal/cleanable/egg_smudge
name = "smashed egg"
desc = "Seems like this one won't hatch."
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
/obj/effect/decal/cleanable/pie_smudge //honk
name = "smashed pie"
desc = "It's pie cream from a cream pie."
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_pie")
/obj/effect/decal/cleanable/fungus
name = "space fungus"
desc = "A fungal growth. Looks pretty nasty."
density = FALSE
anchored = TRUE
layer = TURF_LAYER
icon = 'icons/effects/effects.dmi'
icon_state = "flour"
color = "#D5820B"
/obj/effect/decal/cleanable/fungus/Initialize()
. = ..()
reagents.add_reagent("fungus", 10)
/obj/effect/decal/cleanable/confetti //PARTY TIME!
name = "confetti"
desc = "Party time!"
gender = PLURAL
icon = 'icons/obj/objects.dmi'
icon_state = "confetti1"
random_icon_states = list("confetti1", "confetti2", "confetti3")
anchored = TRUE
@@ -11,8 +11,16 @@
if(random_icon_states && length(src.random_icon_states) > 0)
src.icon_state = pick(src.random_icon_states)
create_reagents(100)
if(smooth)
smooth_icon(src)
smooth_icon_neighbors(src)
..()
/obj/effect/decal/cleanable/Destroy()
if(smooth)
smooth_icon_neighbors(src)
return ..()
/obj/effect/decal/cleanable/attackby(obj/item/W as obj, mob/user as mob,)
if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks))
if(src.reagents && W.reagents && !noscoop)
+5 -5
View File
@@ -88,11 +88,11 @@
emergencyresponseteamspawn += loc
qdel(src)
landmarks_list += src
GLOB.landmarks_list += src
return 1
/obj/effect/landmark/Destroy()
landmarks_list -= src
GLOB.landmarks_list -= src
..()
return QDEL_HINT_HARDDEL_NOW
@@ -259,13 +259,13 @@
var/datum/map_template/ruin/ruin_template
/obj/effect/landmark/ruin/New(loc, my_ruin_template)
name = "ruin_[ruin_landmarks.len + 1]"
name = "ruin_[GLOB.ruin_landmarks.len + 1]"
..(loc)
ruin_template = my_ruin_template
ruin_landmarks |= src
GLOB.ruin_landmarks |= src
/obj/effect/landmark/ruin/Destroy()
ruin_landmarks -= src
GLOB.ruin_landmarks -= src
ruin_template = null
. = ..()
+1 -1
View File
@@ -11,7 +11,7 @@
/obj/effect/manifest/proc/manifest()
var/dat = "<B>Crew Manifest</B>:<BR>"
for(var/mob/living/carbon/human/M in mob_list)
for(var/mob/living/carbon/human/M in GLOB.mob_list)
dat += text(" <B>[]</B> - []<BR>", M.name, M.get_assignment())
var/obj/item/paper/P = new /obj/item/paper( src.loc )
P.info = dat
+2 -2
View File
@@ -17,7 +17,7 @@
teleport(M)
/obj/effect/portal/New(loc, turf/target, creator=null, lifespan=300)
portals += src
GLOB.portals += src
src.loc = loc
src.target = target
src.creator = creator
@@ -26,7 +26,7 @@
qdel(src)
/obj/effect/portal/Destroy()
portals -= src
GLOB.portals -= src
if(istype(creator, /obj))
var/obj/O = creator
O.portal_destroyed(src)
+1 -1
View File
@@ -43,7 +43,7 @@
var/sound/explosion_sound = sound(get_sfx("explosion"))
var/sound/global_boom = sound('sound/effects/explosionfar.ogg')
for(var/P in player_list)
for(var/P in GLOB.player_list)
var/mob/M = P
// Double check for client
if(M && M.client)
+4
View File
@@ -341,6 +341,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
/obj/item/proc/on_found(mob/finder as mob)
return
// called when the giver gives it to the receiver
/obj/item/proc/on_give(mob/living/carbon/giver, mob/living/carbon/receiver)
return
// called after an item is placed in an equipment slot
// user is mob that equipped it
// slot uses the slot_X defines found in setup.dm
+5 -5
View File
@@ -91,15 +91,15 @@
color = "#FFD7A7"
switch(new_appearance)
if("Assistant")
name = "[pick(first_names_male)] [pick(last_names)]"
name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]"
desc = "A cardboard cutout of an assistant."
icon_state = "cutout_greytide"
if("Clown")
name = pick(clown_names)
name = pick(GLOB.clown_names)
desc = "A cardboard cutout of a clown. You get the feeling that it should be in a corner."
icon_state = "cutout_clown"
if("Mime")
name = pick(mime_names)
name = pick(GLOB.mime_names)
desc = "...(A cardboard cutout of a mime.)"
icon_state = "cutout_mime"
if("Traitor")
@@ -123,7 +123,7 @@
desc = "A cardboard cutout of a revolutionary."
icon_state = "cutout_viva"
if("Wizard")
name = "[pick(wizard_first)], [pick(wizard_second)]"
name = "[pick(GLOB.wizard_first)], [pick(GLOB.wizard_second)]"
desc = "A cardboard cutout of a wizard."
icon_state = "cutout_wizard"
if("Shadowling")
@@ -145,7 +145,7 @@
// desc = "A cardboard cutout of an ash walker."
// icon_state = "cutout_free_antag"
if("Deathsquad Officer")
name = pick(commando_names)
name = pick(GLOB.commando_names)
desc = "A cardboard cutout of a death commando."
icon_state = "cutout_deathsquad"
if("Ian")
+4 -4
View File
@@ -27,7 +27,7 @@
/obj/item/powersink/Destroy()
processing_objects.Remove(src)
processing_power_items.Remove(src)
GLOB.processing_power_items.Remove(src)
PN = null
attached = null
return ..()
@@ -54,7 +54,7 @@
else
if(mode == 2)
processing_objects.Remove(src) // Now the power sink actually stops draining the station's power if you unhook it. --NeoFite
processing_power_items.Remove(src)
GLOB.processing_power_items.Remove(src)
anchored = 0
mode = 0
src.visible_message("<span class='notice'>[user] detaches [src] from the cable!</span>")
@@ -77,14 +77,14 @@
mode = 2
icon_state = "powersink1"
processing_objects.Add(src)
processing_power_items.Add(src)
GLOB.processing_power_items.Add(src)
if(2) //This switch option wasn't originally included. It exists now. --NeoFite
src.visible_message("<span class='notice'>[user] deactivates [src]!</span>")
mode = 1
set_light(0)
icon_state = "powersink0"
processing_objects.Remove(src)
processing_power_items.Remove(src)
GLOB.processing_power_items.Remove(src)
/obj/item/powersink/pwr_drain()
if(!attached)
@@ -11,11 +11,11 @@
/obj/item/radio/beacon/New()
..()
code = "[code] ([beacons.len + 1])"
beacons += src
code = "[code] ([GLOB.beacons.len + 1])"
GLOB.beacons += src
/obj/item/radio/beacon/Destroy()
beacons -= src
GLOB.beacons -= src
return ..()
/obj/item/radio/beacon/emag_act(user as mob)
@@ -49,11 +49,11 @@
/obj/item/radio/headset/handle_message_mode(mob/living/M as mob, message, channel)
if(channel == "special")
if(translate_binary)
var/datum/language/binary = all_languages["Robot Talk"]
var/datum/language/binary = GLOB.all_languages["Robot Talk"]
binary.broadcast(M, message)
return RADIO_CONNECTION_NON_SUBSPACE
if(translate_hive)
var/datum/language/hivemind = all_languages["Hivemind"]
var/datum/language/hivemind = GLOB.all_languages["Hivemind"]
hivemind.broadcast(M, message)
return RADIO_CONNECTION_NON_SUBSPACE
return RADIO_CONNECTION_FAIL
@@ -57,7 +57,7 @@
dir=ndir
b_stat=1
on = 0
global_intercoms.Add(src)
GLOB.global_intercoms.Add(src)
update_icon()
/obj/item/radio/intercom/department/medbay/New()
@@ -106,7 +106,7 @@
/obj/item/radio/intercom/Destroy()
processing_objects.Remove(src)
global_intercoms.Remove(src)
GLOB.global_intercoms.Remove(src)
return ..()
/obj/item/radio/intercom/attack_ai(mob/user as mob)
@@ -69,7 +69,7 @@ var/global/list/default_medbay_channels = list(
wires = new(src)
internal_channels = default_internal_channels.Copy()
global_radios |= src
GLOB.global_radios |= src
/obj/item/radio/Destroy()
QDEL_NULL(wires)
@@ -78,7 +78,7 @@ var/global/list/default_medbay_channels = list(
for(var/ch_name in channels)
radio_controller.remove_object(src, radiochannels[ch_name])
radio_connection = null
global_radios -= src
GLOB.global_radios -= src
follow_target = null
return ..()
@@ -250,7 +250,7 @@ var/global/list/default_medbay_channels = list(
A.role = role
A.message = message
var/jammed = FALSE
for(var/obj/item/jammer/jammer in active_jammers)
for(var/obj/item/jammer/jammer in GLOB.active_jammers)
if(get_dist(get_turf(src), get_turf(jammer)) < jammer.range)
jammed = TRUE
break
@@ -342,7 +342,7 @@ var/global/list/default_medbay_channels = list(
var/turf/position = get_turf(src)
var/jammed = FALSE
for(var/obj/item/jammer/jammer in active_jammers)
for(var/obj/item/jammer/jammer in GLOB.active_jammers)
if(get_dist(position, get_turf(jammer)) < jammer.range)
jammed = TRUE
break
+1 -1
View File
@@ -228,7 +228,7 @@ REAGENT SCANNER
var/blood_percent = round((H.blood_volume / BLOOD_VOLUME_NORMAL)*100)
var/blood_type = H.b_type
if(blood_id != "blood")//special blood substance
var/datum/reagent/R = chemical_reagents_list[blood_id]
var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id]
if(R)
blood_type = R.name
else
@@ -158,13 +158,13 @@ effective or pretty fucking useless.
var/range = 12
/obj/item/jammer/Destroy()
active_jammers -= src
GLOB.active_jammers -= src
return ..()
/obj/item/jammer/attack_self(mob/user)
to_chat(user,"<span class='notice'>You [active ? "deactivate" : "activate"] the [src].</span>")
active = !active
if(active)
active_jammers |= src
GLOB.active_jammers |= src
else
active_jammers -= src
GLOB.active_jammers -= src
+2 -2
View File
@@ -50,7 +50,7 @@
/obj/item/reagent_containers/glass/bottle/random_reagent/New()
..()
var/list/possible_chems = chemical_reagents_list.Copy()
var/list/possible_chems = GLOB.chemical_reagents_list.Copy()
possible_chems -= blocked_chems.Copy()
var/datum/reagent/R = pick(possible_chems)
if(rare_chemicals.Find(R))
@@ -186,7 +186,7 @@
var/obj/item/reagent_containers/glass/bottle/B = new(src)
B.reagents.add_reagent(chem, B.volume)
if(prob(85))
var/datum/reagent/r = chemical_reagents_list[chem]
var/datum/reagent/r = GLOB.chemical_reagents_list[chem]
B.name = "[r.name] bottle"
// B.identify_probability = 100
else
+3 -3
View File
@@ -229,12 +229,12 @@
if(!M.brainmob.key)
var/ghost_can_reenter = 0
if(M.brainmob.mind)
for(var/mob/dead/observer/G in player_list)
for(var/mob/dead/observer/G in GLOB.player_list)
if(G.can_reenter_corpse && G.mind == M.brainmob.mind)
ghost_can_reenter = 1
break
for(var/mob/living/simple_animal/S in player_list)
if(S in respawnable_list)
for(var/mob/living/simple_animal/S in GLOB.player_list)
if(S in GLOB.respawnable_list)
ghost_can_reenter = 1
break
if(!ghost_can_reenter)
@@ -90,13 +90,13 @@
return 0
if(!R.key)
for(var/mob/dead/observer/ghost in player_list)
for(var/mob/dead/observer/ghost in GLOB.player_list)
if(ghost.mind && ghost.mind.current == R)
R.key = ghost.key
R.stat = CONSCIOUS
dead_mob_list -= R //please never forget this ever kthx
living_mob_list += R
GLOB.dead_mob_list -= R //please never forget this ever kthx
GLOB.living_mob_list += R
R.notify_ai(1)
return 1
-1
View File
@@ -47,7 +47,6 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \
if(WT.remove_fuel(0,user))
var/obj/item/stack/sheet/metal/new_item = new(user.loc)
new_item.add_to_stacks(user)
if(new_item.get_amount() <= 0)
// stack was moved into another one on the pile
new_item = locate() in user.loc
@@ -58,7 +58,6 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
var/obj/item/stack/rods/V = W
var/obj/item/stack/sheet/rglass/RG = new (user.loc)
RG.add_fingerprint(user)
RG.add_to_stacks(user)
V.use(1)
var/obj/item/stack/sheet/glass/G = src
src = null
@@ -124,7 +123,6 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
var/obj/item/stack/rods/V = W
var/obj/item/stack/sheet/plasmarglass/RG = new (user.loc)
RG.add_fingerprint(user)
RG.add_to_stacks(user)
V.use(1)
var/obj/item/stack/sheet/glass/G = src
src = null
@@ -19,7 +19,7 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
null, \
new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \
null, \
new/datum/stack_recipe("Breakdown into sand", /obj/item/ore/glass, 1, one_per_turf = 0, on_floor = 1), \
new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = 0, on_floor = 1), \
)
var/global/list/datum/stack_recipe/silver_recipes = list ( \
+94 -62
View File
@@ -14,15 +14,34 @@
var/singular_name
var/amount = 1
var/to_transfer = 0
var/max_amount //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount
var/max_amount = 50 //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount
var/merge_type = null // This path and its children should merge with this stack, defaults to src.type
/obj/item/stack/New(var/loc, var/amt = null)
/obj/item/stack/New(loc, new_amount, merge = TRUE)
..()
if(amt != null) //Allow for stacks with the amount=0
amount = amt
if(new_amount != null)
amount = new_amount
while(amount > max_amount)
amount -= max_amount
new type(loc, max_amount, FALSE)
if(!merge_type)
merge_type = type
if(merge && !(amount >= max_amount))
for(var/obj/item/stack/S in loc)
if(S.merge_type == merge_type)
merge(S)
/obj/item/stack/Crossed(obj/O)
if(amount >= max_amount || ismob(loc)) // Prevents unnecessary call. Also prevents merging stack automatically in a mob's inventory
return
if(istype(O, merge_type) && !O.throwing)
merge(O)
..()
/obj/item/stack/hitby(atom/movable/AM, skipcatch, hitpush)
if(istype(AM, merge_type) && !(amount >= max_amount))
merge(AM)
..()
/obj/item/stack/Destroy()
if(usr && usr.machine == src)
@@ -35,6 +54,11 @@
to_chat(user, "There are [amount] [singular_name]\s in the stack.")
else
to_chat(user, "There are [amount] [name]\s in the stack.")
to_chat(user,"<span class='notice'>Alt-click to take a custom amount.</span>")
/obj/item/stack/proc/add(newamount)
amount += newamount
update_icon()
/obj/item/stack/attack_self(mob/user)
list_recipes(user)
@@ -141,7 +165,6 @@
var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])]
var/multiplier = text2num(href_list["multiplier"])
var/atom/creation_loc = (loc == usr) ? usr.loc : loc
if(!multiplier)
multiplier = 1
@@ -156,11 +179,11 @@
to_chat(usr, "<span class='warning'>The [R.title] won't fit here!</span>")
return FALSE
if(R.one_per_turf && (locate(R.result_type) in creation_loc))
if(R.one_per_turf && (locate(R.result_type) in usr.drop_location()))
to_chat(usr, "<span class='warning'>There is another [R.title] here!</span>")
return 0
if(R.on_floor && !istype(creation_loc, /turf/simulated))
if(R.on_floor && !istype(usr.drop_location(), /turf/simulated))
to_chat(usr, "<span class='warning'>\The [R.title] must be constructed on the floor!</span>")
return 0
@@ -172,16 +195,16 @@
if(amount < R.req_amount * multiplier)
return
var/atom/O = new R.result_type(creation_loc)
var/atom/O
if(R.max_res_amount > 1) //Is it a stack?
O = new R.result_type(usr.drop_location(), R.res_amount * multiplier)
else
O = new R.result_type(usr.drop_location())
O.setDir(usr.dir)
if(R.max_res_amount > 1)
var/obj/item/stack/new_item = O
new_item.amount = R.res_amount * multiplier
//new_item.add_to_stacks(usr)
use(R.req_amount * multiplier)
R.post_build(src, O)
amount -= R.req_amount * multiplier
if(amount < 1) // Just in case a stack's amount ends up fractional somehow
var/oldsrc = src
src = null //dont kill proc after del()
@@ -202,37 +225,23 @@
interact(usr)
return
/obj/item/stack/proc/use(used)
/obj/item/stack/proc/use(used, check = TRUE)
if(check && zero_amount())
return FALSE
if(amount < used)
return 0
return FALSE
amount -= used
if(amount < 1) // Just in case a stack's amount ends up fractional somehow
if(amount < 1)
if(isrobot(loc))
var/mob/living/silicon/robot/R = loc //Horrifying cyborg snowflake code that allows stacks to GC and cyborgs not to horrendously break
var/mob/living/silicon/robot/R = loc
if(locate(src) in R.module.modules)
R.module.modules -= src
if(usr)
usr.unEquip(src, TRUE) // this has to be unEquip() over drop_item() or something similar because of cyborgs
qdel(src)
if(R)
R.unEquip(src, TRUE)
zero_amount()
update_icon()
return 1
/obj/item/stack/proc/add_to_stacks(mob/usr)
var/obj/item/stack/oldsrc = src
src = null
for(var/obj/item/stack/item in usr.loc)
if(item == oldsrc)
continue
if(!istype(item, oldsrc.type))
continue
if(item.amount >= item.max_amount)
continue
oldsrc.attackby(item, usr)
to_chat(usr, "You add new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s.")
if(oldsrc.amount <= 0)
break
oldsrc.update_icon()
/obj/item/stack/proc/get_amount()
return amount
@@ -252,46 +261,69 @@
return F
/obj/item/stack/attack_hand(mob/user)
if(user.is_in_inactive_hand(src))
var/obj/item/stack/F = split(user, 1)
user.put_in_hands(F)
if(user.is_in_inactive_hand(src) && amount > 1)
change_stack(user, 1)
if(src && usr.machine == src)
spawn(0)
interact(usr)
else
..()
/obj/item/stack/AltClick(mob/living/user)
if(!istype(user) || user.incapacitated())
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
return
if(!in_range(src, user) || issilicon(usr))
return
if(amount < 1)
return
//get amount from user
var/min = 0
var/max = get_amount()
var/stackmaterial = round(input(user, "How many sheets do you wish to take out of this stack? (Maximum: [max])") as num)
if(stackmaterial == null || stackmaterial <= min || stackmaterial > get_amount())
return
change_stack(user,stackmaterial)
to_chat(user, "<span class='notice'>You take [stackmaterial] sheets out of the stack.</span>")
/obj/item/stack/proc/change_stack(mob/user,amount)
var/obj/item/stack/F = new type(user, amount, FALSE)
. = F
F.copy_evidences(src)
user.put_in_hands(F)
add_fingerprint(user)
F.add_fingerprint(user)
use(amount)
/obj/item/stack/attackby(obj/item/W, mob/user, params)
..()
if(istype(W, merge_type))
var/obj/item/stack/S = W
if(S.amount >= max_amount)
return 1
if(user.is_in_inactive_hand(src))
var/desired = input("How much would you like to transfer from this stack?", "How much?", 1) as null|num
if(!desired)
return
desired = round(desired)
to_transfer = max(1,min(desired,S.max_amount-S.amount,src.amount))
else
to_transfer = min(src.amount, S.max_amount-S.amount)
S.amount += to_transfer
if(S && usr.machine == S)
spawn(0)
S.interact(usr)
use(to_transfer)
if(src && usr.machine == src)
spawn(0)
interact(usr)
S.update_icon()
merge(S)
to_chat(user, "<span class='notice'>Your [S.name] stack now contains [S.get_amount()] [S.singular_name]\s.</span>")
else
return ..()
/obj/item/stack/proc/zero_amount()
if(amount < 1)
qdel(src)
return TRUE
return FALSE
/obj/item/stack/proc/merge(obj/item/stack/S) //Merge src into S, as much as possible
if(QDELETED(S) || QDELETED(src) || S == src) //amusingly this can cause a stack to consume itself, let's not allow that.
return FALSE
var/transfer = get_amount()
transfer = min(transfer, S.max_amount - S.amount)
if(transfer <= 0)
return
if(pulledby)
pulledby.start_pulling(S)
S.copy_evidences(src)
S.add(transfer)
use(transfer)
/obj/item/stack/proc/copy_evidences(obj/item/stack/from)
blood_DNA = from.blood_DNA
fingerprints = from.fingerprints
fingerprintshidden = from.fingerprintshidden
fingerprintslast = from.fingerprintslast
//TODO bloody overlay
@@ -43,7 +43,7 @@ AI MODULES
src.transmitInstructions(comp.current, usr)
to_chat(comp.current, "These are your laws now:")
comp.current.show_laws()
for(var/mob/living/silicon/robot/R in mob_list)
for(var/mob/living/silicon/robot/R in GLOB.mob_list)
if(R.lawupdate && (R.connected_ai == comp.current))
to_chat(R, "These are your laws now:")
R.show_laws()
+2 -2
View File
@@ -57,7 +57,7 @@ RCD
spark_system = new /datum/effect_system/spark_spread
spark_system.set_up(5, 0, src)
spark_system.attach(src)
rcd_list += src
GLOB.rcd_list += src
door_accesses_list = list()
for(var/access in get_all_accesses())
door_accesses_list[++door_accesses_list.len] = list("name" = get_access_desc(access), "id" = access, "enabled" = (access in door_accesses))
@@ -65,7 +65,7 @@ RCD
/obj/item/rcd/Destroy()
QDEL_NULL(spark_system)
rcd_list -= src
GLOB.rcd_list -= src
return ..()
/obj/item/rcd/attackby(obj/item/W, mob/user, params)
@@ -40,7 +40,7 @@
/obj/item/implant/abductor/proc/get_team_console(var/team)
var/obj/machinery/abductor/console/console
for(var/obj/machinery/abductor/console/c in abductor_equipment)
for(var/obj/machinery/abductor/console/c in GLOB.abductor_equipment)
if(c.team == team)
console = c
break
@@ -24,10 +24,10 @@
/obj/item/implant/chem/New()
..()
create_reagents(50)
tracked_implants += src
GLOB.tracked_implants += src
/obj/item/implant/chem/Destroy()
tracked_implants -= src
GLOB.tracked_implants -= src
return ..()
@@ -8,10 +8,10 @@
/obj/item/implant/tracking/New()
..()
tracked_implants += src
GLOB.tracked_implants += src
/obj/item/implant/tracking/Destroy()
tracked_implants -= src
GLOB.tracked_implants -= src
return ..()
/obj/item/implant/tracking/get_data()
@@ -183,6 +183,7 @@
attack_verb = list("burnt","singed")
processing_objects.Add(src)
update_icon()
return TRUE
/obj/item/match/proc/matchburnout()
if(lit)
@@ -196,6 +197,7 @@
desc = "A match. This one has seen better days."
attack_verb = list("flicked")
processing_objects.Remove(src)
return TRUE
/obj/item/match/dropped(mob/user)
matchburnout()
+2 -2
View File
@@ -18,10 +18,10 @@
/obj/item/mop/New()
..()
create_reagents(mopcap)
janitorial_equipment += src
GLOB.janitorial_equipment += src
/obj/item/mop/Destroy()
janitorial_equipment -= src
GLOB.janitorial_equipment -= src
return ..()
/obj/item/mop/proc/clean(turf/simulated/A)
+6 -6
View File
@@ -35,8 +35,8 @@
var/datum/robolimb/robohead = all_robolimbs[C.model]
if(H.gender == MALE || isvulpkanin(H))
if(C.dna.species)
for(var/i in facial_hair_styles_list)
var/datum/sprite_accessory/facial_hair/tmp_facial = facial_hair_styles_list[i]
for(var/i in GLOB.facial_hair_styles_list)
var/datum/sprite_accessory/facial_hair/tmp_facial = GLOB.facial_hair_styles_list[i]
if(C.dna.species.name in tmp_facial.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human hair styles.
if(C.dna.species.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list.
if(robohead.is_monitor)
@@ -53,13 +53,13 @@
to_chat(user, "<span class='warning'>You are unable to find anything on [H]'s face worth cutting. How disappointing.</span>")
return
else
species_facial_hair = facial_hair_styles_list
species_facial_hair = GLOB.facial_hair_styles_list
var/f_new_style = input(user, "Select a facial hair style", "Grooming") as null|anything in species_facial_hair
//handle normal hair
var/list/species_hair = list()
if(C.dna.species)
for(var/i in hair_styles_public_list)
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_public_list[i]
for(var/i in GLOB.hair_styles_public_list)
var/datum/sprite_accessory/hair/tmp_hair = GLOB.hair_styles_public_list[i]
if(C.dna.species.name in tmp_hair.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human facial hair styles.
if(C.dna.species.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list.
if(robohead.is_monitor)
@@ -76,7 +76,7 @@
to_chat(user, "<span class='warning'>You are unable to find anything on [H]'s head worth cutting. How disappointing.</span>")
return
else
species_hair = hair_styles_public_list
species_hair = GLOB.hair_styles_public_list
var/h_new_style = input(user, "Select a hair style", "Grooming") as null|anything in species_hair
user.visible_message("<span class='notice'>[user] starts cutting [M]'s hair!</span>", "<span class='notice'>You start cutting [M]'s hair!</span>") //arguments for this are: 1. what others see 2. what the user sees. --Fixed grammar, (TGameCo)
playsound(loc, 'sound/goonstation/misc/Scissor.ogg', 100, 1)
@@ -138,7 +138,7 @@
storage_slots = 50
max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class
max_w_class = WEIGHT_CLASS_NORMAL
can_hold = list(/obj/item/ore)
can_hold = list(/obj/item/stack/ore)
/obj/item/storage/bag/ore/cyborg
name = "cyborg mining satchel"
@@ -60,12 +60,12 @@
new /obj/item/wirecutters(src)
new /obj/item/t_scanner(src)
new /obj/item/crowbar(src)
new /obj/item/stack/cable_coil(src, 30, pickedcolor)
new /obj/item/stack/cable_coil(src, 30, pickedcolor)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
if(prob(5))
new /obj/item/clothing/gloves/color/yellow(src)
else
new /obj/item/stack/cable_coil(src, 30, pickedcolor)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
/obj/item/storage/toolbox/syndicate
name = "suspicious looking toolbox"
@@ -108,7 +108,7 @@
new /obj/item/wrench(src)
new /obj/item/weldingtool(src)
new /obj/item/crowbar(src)
new /obj/item/stack/cable_coil(src, 30, pickedcolor)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
new /obj/item/wirecutters(src)
new /obj/item/multitool(src)
+1 -1
View File
@@ -166,7 +166,7 @@
if(ishuman(L))
var/mob/living/carbon/human/H = L
H.forcesay(hit_appends)
H.forcesay(GLOB.hit_appends)
/obj/item/melee/baton/emp_act(severity)
if(bcell)
@@ -59,14 +59,14 @@ Frequency:
if(sr)
temp += "<B>Located Beacons:</B><BR>"
for(var/obj/item/radio/beacon/W in beacons)
for(var/obj/item/radio/beacon/W in GLOB.beacons)
if(W.frequency == frequency && !W.syndicate)
if(W && W.z == z)
var/turf/TB = get_turf(W)
temp += "[W.code]: [TB.x], [TB.y], [TB.z]<BR>"
temp += "<B>Located Implants:</B><BR>"
for(var/obj/item/implant/tracking/T in tracked_implants)
for(var/obj/item/implant/tracking/T in GLOB.tracked_implants)
if(!T.implanted || !T.imp_in)
continue
+19 -1
View File
@@ -147,6 +147,14 @@
wield(user)
..()
/obj/item/twohanded/required/on_give(mob/living/carbon/giver, mob/living/carbon/receiver)
var/obj/item/twohanded/required/H = receiver.get_inactive_hand()
if(H != null) //Check if he can wield it
receiver.drop_item() //Can't wear it so drop it
to_chat(receiver, "<span class='notice'>[src] is too cumbersome to carry in one hand!</span>")
return
equipped(receiver,receiver.hand ? slot_l_hand : slot_r_hand)
/obj/item/twohanded/required/equipped(mob/user, slot)
..()
if(slot == slot_l_hand || slot == slot_r_hand)
@@ -438,7 +446,7 @@
if(on)
playsound(loc, 'sound/weapons/chainsawstart.ogg', 50, 1)
force = on ? force_on : initial(force)
throwforce = on ? force_on : initial(force)
throwforce = on ? force_on : initial(throwforce)
icon_state = "gchainsaw_[on ? "on" : "off"]"
if(hitsound == "swing_hit")
@@ -453,6 +461,16 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/twohanded/required/chainsaw/attack_hand(mob/user)
. = ..()
force = on ? force_on : initial(force)
throwforce = on ? force_on : initial(throwforce)
/obj/item/twohanded/required/chainsaw/on_give(mob/living/carbon/giver, mob/living/carbon/receiver)
. = ..()
force = on ? force_on : initial(force)
throwforce = on ? force_on : initial(throwforce)
/obj/item/twohanded/required/chainsaw/doomslayer
name = "OOOH BABY"
desc = "<span class='warning'>VRRRRRRR!!!</span>"
+4 -4
View File
@@ -65,9 +65,9 @@
// Nada
/obj/Destroy()
machines -= src
GLOB.machines -= src
processing_objects -= src
fast_processing -= src
GLOB.fast_processing -= src
SSnanoui.close_uis(src)
return ..()
@@ -287,14 +287,14 @@ a {
return
speed_process = TRUE
processing_objects.Remove(src)
fast_processing.Add(src)
GLOB.fast_processing.Add(src)
/obj/proc/makeNormalProcess()
if(!speed_process)
return
speed_process = FALSE
processing_objects.Add(src)
fast_processing.Remove(src)
GLOB.fast_processing.Remove(src)
/obj/vv_get_dropdown()
. = ..()
@@ -91,12 +91,11 @@
/obj/structure/closet/secure_closet/emag_act(mob/user)
if(!broken)
broken = 1
locked = 0
desc = "It appears to be broken."
broken = TRUE
locked = FALSE
icon_state = icon_off
flick(icon_broken, src)
to_chat(user, "<span class='notice'>You unlock \the [src].</span>")
to_chat(user, "<span class='notice'>You break the lock on \the [src].</span>")
/obj/structure/closet/secure_closet/attack_hand(mob/user)
add_fingerprint(user)
@@ -69,8 +69,8 @@
break
if(O.density || O.anchored || istype(O,/obj/structure/closet))
continue
if(istype(O, /obj/structure/stool/bed)) //This is only necessary because of rollerbeds and swivel chairs.
var/obj/structure/stool/bed/B = O
if(istype(O, /obj/structure/bed)) //This is only necessary because of rollerbeds and swivel chairs.
var/obj/structure/bed/B = O
if(B.buckled_mob)
continue
O.forceMove(src)
+9 -9
View File
@@ -21,33 +21,33 @@
switch(choice)
if("Underwear")
var/list/valid_underwear = list()
for(var/underwear in underwear_list)
var/datum/sprite_accessory/S = underwear_list[underwear]
for(var/underwear in GLOB.underwear_list)
var/datum/sprite_accessory/S = GLOB.underwear_list[underwear]
if(!(H.dna.species.name in S.species_allowed))
continue
valid_underwear[underwear] = underwear_list[underwear]
valid_underwear[underwear] = GLOB.underwear_list[underwear]
var/new_underwear = input(user, "Choose your underwear:", "Changing") as null|anything in valid_underwear
if(new_underwear)
H.underwear = new_underwear
if("Undershirt")
var/list/valid_undershirts = list()
for(var/undershirt in undershirt_list)
var/datum/sprite_accessory/S = undershirt_list[undershirt]
for(var/undershirt in GLOB.undershirt_list)
var/datum/sprite_accessory/S = GLOB.undershirt_list[undershirt]
if(!(H.dna.species.name in S.species_allowed))
continue
valid_undershirts[undershirt] = undershirt_list[undershirt]
valid_undershirts[undershirt] = GLOB.undershirt_list[undershirt]
var/new_undershirt = input(user, "Choose your undershirt:", "Changing") as null|anything in valid_undershirts
if(new_undershirt)
H.undershirt = new_undershirt
if("Socks")
var/list/valid_sockstyles = list()
for(var/sockstyle in socks_list)
var/datum/sprite_accessory/S = socks_list[sockstyle]
for(var/sockstyle in GLOB.socks_list)
var/datum/sprite_accessory/S = GLOB.socks_list[sockstyle]
if(!(H.dna.species.name in S.species_allowed))
continue
valid_sockstyles[sockstyle] = socks_list[sockstyle]
valid_sockstyles[sockstyle] = GLOB.socks_list[sockstyle]
var/new_socks = input(user, "Choose your socks:", "Changing") as null|anything in valid_sockstyles
if(new_socks)
H.socks = new_socks
+3 -1
View File
@@ -211,6 +211,7 @@
layer = 5
w_class = WEIGHT_CLASS_HUGE
force = 10
force_wielded = 10
throwforce = 13
throw_speed = 2
throw_range = 4
@@ -222,9 +223,10 @@
icon_state = "plant-36"
/obj/item/twohanded/required/kirbyplants/equipped(mob/living/user)
. = ..()
var/image/I = image(icon = 'icons/obj/flora/plants.dmi' , icon_state = src.icon_state, loc = user)
I.override = 1
user.add_alt_appearance("sneaking_mission", I, player_list)
user.add_alt_appearance("sneaking_mission", I, GLOB.player_list)
/obj/item/twohanded/required/kirbyplants/dropped(mob/living/user)
..()
+2 -2
View File
@@ -21,10 +21,10 @@
/obj/structure/janitorialcart/New()
..()
create_reagents(100)
janitorial_equipment += src
GLOB.janitorial_equipment += src
/obj/structure/janitorialcart/Destroy()
janitorial_equipment -= src
GLOB.janitorial_equipment -= src
QDEL_NULL(mybag)
QDEL_NULL(mymop)
QDEL_NULL(myspray)
+2 -2
View File
@@ -10,14 +10,14 @@
/obj/structure/mopbucket/New()
..()
create_reagents(100)
janitorial_equipment += src
GLOB.janitorial_equipment += src
/obj/structure/mopbucket/full/New()
..()
reagents.add_reagent("water", 100)
/obj/structure/mopbucket/Destroy()
janitorial_equipment -= src
GLOB.janitorial_equipment -= src
return ..()
/obj/structure/mopbucket/examine(mob/user)
+3 -3
View File
@@ -65,8 +65,8 @@
if(istype(A) && A.checkpass(PASSGLASS))
return prob(60)
var/obj/structure/stool/bed/B = A
if(istype(A, /obj/structure/stool/bed) && B.buckled_mob)//if it's a bed/chair and someone is buckled, it will not pass
var/obj/structure/bed/B = A
if(istype(A, /obj/structure/bed) && B.buckled_mob)//if it's a bed/chair and someone is buckled, it will not pass
return 0
if(istype(A, /obj/structure/closet/cardboard))
@@ -133,4 +133,4 @@
return ..()
/obj/structure/plasticflaps/mining/CanAtmosPass(turf/T)
return 0
return 0