diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 32866b771ce..5dbd2be86fa 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -1,5 +1,6 @@ var/global/list/cable_list = list() //Index for all cables, so that powernets don't have to look through the entire world all the time -var/global/list/portals = list() //for use by portals +var/global/list/portals = list() //list of all /obj/effect/portal +var/global/list/airlocks = list() //list of all airlocks var/global/list/mechas_list = list() //list of all mechs. Used by hostile mobs target tracking. var/global/list/shuttle_caller_list = list() //list of all communication consoles and AIs, for automatic shuttle calls when there are none. diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index af91ef10d27..45922040d7f 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -99,7 +99,9 @@ var/turf/curturf = get_turf(teleatom) var/area/destarea = get_area(destination) if(precision) - var/list/posturfs = circlerangeturfs(destination,precision) + var/list/posturfs = list() + for(var/turf/T in range(precision,destination)) + posturfs.Add(T) destturf = safepick(posturfs) else destturf = get_turf(destination) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 38e0c38bdde..a0271f822d1 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -74,7 +74,7 @@ return var/obj/machinery/door/airlock/AL - for(var/obj/machinery/door/D in portals) + for(var/obj/machinery/door/D in airlocks) spawn() if(istype(D, /obj/machinery/door/airlock)) AL = D @@ -109,7 +109,7 @@ return var/obj/machinery/door/airlock/AL - for(var/obj/machinery/door/D in portals) + for(var/obj/machinery/door/D in airlocks) spawn() if(istype(D, /obj/machinery/door/airlock)) AL = D diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index df835cbfda0..e7da6c902e0 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -47,6 +47,9 @@ var/bomb_set /obj/machinery/nuclearbomb/attack_paw(mob/user as mob) return src.attack_hand(user) +/obj/machinery/nuclearbomb/attack_ai(mob/user as mob) + return + /obj/machinery/nuclearbomb/attack_hand(mob/user as mob) user.set_machine(src) var/dat = text("\nAuth. Disk: []
", src, (src.auth ? "++++++++++" : "----------")) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 0c218fc552b..ac6e9ab2720 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -27,7 +27,7 @@ explosion_resistance = 0 update_freelook_sight() air_update_turf(1) - portals += src + airlocks += src return @@ -35,7 +35,7 @@ density = 0 air_update_turf(1) update_freelook_sight() - portals -= src + airlocks -= src ..() return diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index f29ded268b5..e4e7e0f86df 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -78,6 +78,8 @@ spark_system.attach(src) // targets = new ..() + src.cover = new /obj/machinery/turretcover(src.loc) + src.cover.host = src return /obj/machinery/turretcover @@ -168,8 +170,9 @@ if(stat & (NOPOWER|BROKEN)) return if(src.cover==null) - src.cover = new /obj/machinery/turretcover(src.loc) - src.cover.host = src + src.loc = null + qdel(src) + return ..() protected_area = get_protected_area() if(!enabled || !protected_area || protected_area.turretTargets.len<=0) if(!isDown() && !isPopping()) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 6cc3cc33056..d3996e7ca41 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -68,12 +68,22 @@ //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && canmove) // mutual brohugs all around! var/turf/oldloc = loc + var/turf/other_loc = tmob.loc + loc = tmob.loc tmob.loc = oldloc now_pushing = 0 + for(var/mob/living/carbon/slime/slime in view(1,tmob)) if(slime.Victim == tmob) slime.UpdateFeed() + + //cross any movable atoms on either turf + for(var/atom/movable/M in other_loc) + M.Crossed(src) + for(var/atom/movable/M in oldloc) + M.Crossed(tmob) + return if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot)) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 8dbf5fbe600..6b99d503d8d 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -777,6 +777,12 @@ // pipe affected by explosion ex_act(severity) + //pass on ex_act to our contents before calling it on ourself + var/obj/structure/disposalholder/H = locate() in src + if(H) + for(var/atom/movable/AM in H) + AM.ex_act(severity) + switch(severity) if(1.0) broken(0)