From 91a0deb6cc92745c26c2944953f66f42944acfbf Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 11 Jul 2014 22:32:04 +1000 Subject: [PATCH 1/5] fixes exploit where detonating a bomb inside a disposal pipe will not harm the holder Signed-off-by: Cael_Aislinn --- code/modules/recycling/disposal.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 449b8aeacb2..f06a82d4b8e 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -776,6 +776,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) From c9207a918b985511c8eb513c2a34f57ff7ceed70 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 11 Jul 2014 22:32:24 +1000 Subject: [PATCH 2/5] nuclear bombs can no longer be interacted with by AIs Signed-off-by: Cael_Aislinn --- code/game/gamemodes/nuclear/nuclearbomb.dm | 3 +++ 1 file changed, 3 insertions(+) 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 ? "++++++++++" : "----------")) From 3f82b14b983529225f34979b15b4d88d077e6922 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 11 Jul 2014 22:32:42 +1000 Subject: [PATCH 3/5] remove the cover from the turret. this qdels the turret. Signed-off-by: Cael_Aislinn --- code/game/machinery/turrets.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 478785aac7b..45e6452773a 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()) From 1f0e8baade882c0891bf15e1c7271d27ee6a796a Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 11 Jul 2014 23:16:40 +1000 Subject: [PATCH 4/5] humans swapping position via bumping with help intent now calls Crossed() Signed-off-by: Cael_Aislinn --- code/modules/mob/living/carbon/human/human.dm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 55b03767697..fe4bdedf1e2 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -63,12 +63,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)) From 891e5e58a5aed4f62b33790a85a700dd4471d077 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 11 Jul 2014 23:17:39 +1000 Subject: [PATCH 5/5] fixes an issue where wormholes would sometimes teleport to other zlevels, sped up teleporting by using range() instead of circlerangeturfs(), makes teleporting only pick turfs from the same zlevel as the target Signed-off-by: Cael_Aislinn --- code/_globalvars/lists/objects.dm | 3 ++- code/datums/helper_datums/teleport.dm | 4 +++- code/game/gamemodes/malfunction/Malf_Modules.dm | 4 ++-- code/game/machinery/doors/door.dm | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) 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/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index eab30d6f2f5..dd5bb1dae86 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