diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 1d7f436770d..6f1be49b3b7 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -259,8 +259,7 @@ Pipelines + Other Objects -> Pipe network user.last_played_vent = world.time playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3) else - var/can_connect = check_connect_types(target_move, src) - if((direction & initialize_directions) || (is_type_in_list(src, ventcrawl_machinery) && target_move.can_crawl_through() && can_connect)) //if we move in a way the pipe can connect, but doesn't - or we're in a vent + if((direction & initialize_directions) || is_type_in_list(src, ventcrawl_machinery)) //if we move in a way the pipe can connect, but doesn't - or we're in a vent user.remove_ventcrawl() user.forceMove(src.loc) user.visible_message("You hear something squeezing through the pipes.", "You climb out the ventilation system.") diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index 60654ee4f85..8a0894bfe09 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -134,8 +134,10 @@ var/obj/item/organ/external/head/head_organ = H.get_organ("head") var/obj/item/organ/internal/eyes/eye_organ = H.get_int_organ(/obj/item/organ/internal/eyes) var/datum/species/S = H.species - dna.write_head_attributes(head_organ) - dna.write_eyes_attributes(eye_organ) + if(istype(head_organ)) + dna.write_head_attributes(head_organ) + if(istype(eye_organ)) + dna.write_eyes_attributes(eye_organ) H.update_eyes() H.r_skin = dna.GetUIValueRange(DNA_UI_SKIN_R, 255) diff --git a/code/game/objects/effects/decals/Cleanable/tracks.dm b/code/game/objects/effects/decals/Cleanable/tracks.dm index 20dee798e8d..2e0c30e00af 100644 --- a/code/game/objects/effects/decals/Cleanable/tracks.dm +++ b/code/game/objects/effects/decals/Cleanable/tracks.dm @@ -101,4 +101,25 @@ var/global/list/image/fluidtrack_cache=list() I.color = basecolor overlays += I - alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness \ No newline at end of file + alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness + +/proc/createFootprintsFrom(atom/movable/A, dir, turf/T) + var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) + if(ishuman(A)) + var/mob/living/carbon/human/H = A + FP.blood_state = H.blood_state + FP.bloodiness = H.bloody_feet[H.blood_state] + FP.basecolor = H.feet_blood_color + if(H.blood_DNA) + FP.blood_DNA = H.blood_DNA.Copy() + else if(istype(A, /obj/item/clothing/shoes)) + var/obj/item/clothing/shoes/S = A + FP.blood_state = S.blood_state + FP.bloodiness = S.bloody_shoes[S.blood_state] + FP.basecolor = S.blood_color + if(S.blood_DNA) + FP.blood_DNA = S.blood_DNA.Copy() + FP.entered_dirs |= dir + FP.update_icon() + + return FP diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 5931696b599..f08fc81aaa5 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -568,6 +568,8 @@ for(var/thing in data["content"]) if(islist(thing)) list_to_object(thing, src) + else if(thing == null) + log_runtime(EXCEPTION("Null entry found in storage/deserialize."), src) else log_runtime(EXCEPTION("Non-list thing found in storage/deserialize."), src, list("Thing: [thing]")) ..() diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 54d8a680ae7..037a3f520b3 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -25,12 +25,14 @@ to_chat(user, "You carefully locate the manual activation switch and start the positronic brain's boot process.") icon_state = "posibrain-searching" ghost_volunteers.Cut() - src.searching = 1 - src.request_player() + searching = 1 + request_player() spawn(600) if(ghost_volunteers.len) - var/mob/dead/observer/O = pick(ghost_volunteers) - if(check_observer(O)) + var/mob/dead/observer/O + while(!istype(O) && ghost_volunteers.len) + O = pick_n_take(ghost_volunteers) + if(istype(O) && check_observer(O)) transfer_personality(O) reset_search() else diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 164eb14e7cd..34fe45df29c 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -56,13 +56,7 @@ else //No oldFP or it's a different kind of blood S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) - FP.blood_state = S.blood_state - FP.entered_dirs |= dir - FP.bloodiness = S.bloody_shoes[S.blood_state] - FP.blood_DNA = S.blood_DNA - FP.basecolor = S.blood_color - FP.update_icon() + createFootprintsFrom(shoes, dir, T) update_inv_shoes() else if(hasfeet) if(bloody_feet && bloody_feet[blood_state]) @@ -71,12 +65,7 @@ return else bloody_feet[blood_state] = max(0, bloody_feet[blood_state] - BLOOD_LOSS_PER_STEP) - var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T) - FP.blood_state = blood_state - FP.entered_dirs |= dir - FP.bloodiness = bloody_feet[blood_state] - FP.basecolor = feet_blood_color - FP.update_icon() + createFootprintsFrom(src, dir, T) update_inv_shoes() //End bloody footprints if(S) diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm index 9b0413b94ee..e002049e55f 100755 --- a/code/modules/pda/PDA.dm +++ b/code/modules/pda/PDA.dm @@ -376,7 +376,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use. if(choice == 1) if(id) - remove_id() + remove_id(user) else var/obj/item/I = user.get_active_hand() if(istype(I, /obj/item/weapon/card/id)) diff --git a/code/modules/pda/cart_apps.dm b/code/modules/pda/cart_apps.dm index 30f732f48ae..0ccef76ec7c 100644 --- a/code/modules/pda/cart_apps.dm +++ b/code/modules/pda/cart_apps.dm @@ -103,7 +103,7 @@ "poweravail" = powmonitor.powernet.avail, "powerload" = num2text(powmonitor.powernet.viewload, 10), "powerdemand" = powmonitor.powernet.load, - "apcs" = apc_repository.apc_data(powmonitor)) + "apcs" = apc_repository.apc_data(powmonitor.powernet)) has_back = 1 else data["records"] = list( diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index 52de625fe04..0122fa1d249 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -472,4 +472,4 @@ if(istype(O, /obj/item/clothing/shoes/galoshes)) var/t_loc = get_turf(O) qdel(O) - new /obj/item/clothing/shoes/galoshes/dry(t_loc) \ No newline at end of file + new /obj/item/clothing/shoes/galoshes/dry(t_loc) diff --git a/code/modules/space_management/level_check.dm b/code/modules/space_management/level_check.dm index 391f5968c22..a9abdaa5472 100644 --- a/code/modules/space_management/level_check.dm +++ b/code/modules/space_management/level_check.dm @@ -4,4 +4,4 @@ // For expansion later /proc/atoms_share_level(atom/A, atom/B) - return A.z == B.z + return A && B && A.z == B.z diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index a4fdfa5bc6c..134089d9d41 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -170,6 +170,9 @@ var/list/organ_cache = list() if(antibiotics < 5 && parent.germ_level < germ_level && ( parent.germ_level < INFECTION_LEVEL_ONE*2 || prob(30) )) parent.germ_level++ +/obj/item/organ/internal/handle_germ_effects() + ..() + if(germ_level >= INFECTION_LEVEL_TWO) if(prob(3)) //about once every 30 seconds take_damage(1,silent=prob(30))