diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm index ac38f40302..c241a84994 100644 --- a/code/_helpers/game.dm +++ b/code/_helpers/game.dm @@ -262,13 +262,13 @@ var/mobs_radio_range_fired = 1 //CHOMPEdit /mob/living/silicon/robot/can_hear_radio(var/list/hearturfs) var/turf/T = get_turf(src) var/obj/item/device/radio/borg/R = hearturfs[T] // this should be an assoc list of turf-to-radio - + // We heard it on our own radio? We use power for that. if(istype(R) && R.myborg == src) var/datum/robot_component/CO = get_component("radio") if(!CO || !is_component_functioning("radio") || !cell_use_power(CO.active_usage)) return FALSE // Sorry, couldn't hear - + return R // radio, true, false, what's the difference /mob/observer/dead/can_hear_radio(var/list/hearturfs) @@ -285,14 +285,17 @@ var/mobs_radio_range_fired = 1 //CHOMPEdit var/list/hear = dview(range,T,INVISIBILITY_MAXIMUM) var/list/hearturfs = list() - + // Openspace visibility handling // Below turfs we can see for(var/turf/simulated/open/O in hear) var/turf/U = GetBelow(O) while(istype(U)) hearturfs |= U - U = GetBelow(U) + if(isopenspace(U)) + U = GetBelow(U) + else + U = null // Above us var/above_range = range