diff --git a/code/defines/obj/supplypacks.dm b/code/defines/obj/supplypacks.dm index 46264f6507..3e1a864d54 100644 --- a/code/defines/obj/supplypacks.dm +++ b/code/defines/obj/supplypacks.dm @@ -361,5 +361,15 @@ containername = "Exotic Seeds crate" access = access_hydroponics +/datum/supply_packs/securitybarriers + name = "Security Barriers" + contains = list("/obj/machinery/deployable/barrier", + "/obj/machinery/deployable/barrier", + "/obj/machinery/deployable/barrier", + "/obj/machinery/deployable/barrier") + cost = 20 + containertype = "/obj/crate/secure/gear" + containername = "Secruity Barriers crate" + access = access_security //SUPPLY PACKS \ No newline at end of file diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 169f1903ec..13f22dc7ba 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -66,6 +66,7 @@ for reference: var/health = 100.0 var/maxhealth = 100.0 var/locked = 0.0 + var/emagged = 0.0 // req_access = list(access_maint_tunnels) New() @@ -74,17 +75,57 @@ for reference: src.icon_state = "barrier[src.locked]" attackby(obj/item/weapon/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) + if (istype(W, /obj/item/weapon/card/id/)) if (src.allowed(user)) - src.locked = !src.locked - src.anchored = !src.anchored - src.icon_state = "barrier[src.locked]" - user << "Barrier lock toggled." - return + if (src.emagged < 2.0) + src.locked = !src.locked + src.anchored = !src.anchored + src.icon_state = "barrier[src.locked]" + if ((src.locked == 1.0) && (src.emagged < 2.0)) + user << "Barrier lock toggled on." + return + else if ((src.locked == 0.0) && (src.emagged < 2.0)) + user << "Barrier lock toggled off." + return + else + var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread + s.set_up(2, 1, src) + s.start() + for(var/mob/O in viewers(src, null)) + O << "\red BZZzZZzZZzZT" + return return + else if (istype(W, /obj/item/weapon/card/emag)) + if (src.emagged == 0) + src.emagged = 1 + src.req_access = null + user << "You break the ID authentication lock on the [src]." + var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread + s.set_up(2, 1, src) + s.start() + for(var/mob/O in viewers(src, null)) + O << "\red BZZZZT" + return + else if (src.emagged == 1) + src.emagged = 2 + user << "You short out the anchoring mechanism on the [src]." + var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread + s.set_up(2, 1, src) + s.start() + for(var/mob/O in viewers(src, null)) + O << "\red BZZZZT" + return else if (istype(W, /obj/item/weapon/wrench)) if (src.health < src.maxhealth) src.health = src.maxhealth + src.emagged = 0 + src.req_access = list(access_security) + for(var/mob/O in viewers(src, null)) + O << "\red [user] repairs the [src]!" + return + else if (src.emagged > 0) + src.emagged = 0 + src.req_access = list(access_security) for(var/mob/O in viewers(src, null)) O << "\red [user] repairs the [src]!" return