diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 9b90e06acce..f4861e0dfdc 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -997,7 +997,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/explosives/syndicate_bomb name = "Syndicate Bomb" - desc = "The Syndicate Bomb has an adjustable timer with a minimum setting of 60 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \ + desc = "The Syndicate Bomb has an adjustable timer with a minimum setting of 90 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \ You can wrench the bomb down to prevent removal. The crew may attempt to defuse the bomb." reference = "SB" item = /obj/item/radio/beacon/syndicate/bomb @@ -1005,6 +1005,16 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 0 cant_discount = TRUE +/datum/uplink_item/explosives/emp_bomb + name = "EMP bomb" + desc = "The EMP has an adjustable timer with a minimum setting of 90 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \ + You can wrench the bomb down to prevent removal. The crew may attempt to defuse the bomb." + reference = "SBEMP" + item = /obj/item/radio/beacon/syndicate/bomb/emp + cost = 10 + surplus = 0 + cant_discount = TRUE + /datum/uplink_item/explosives/syndicate_minibomb name = "Syndicate Minibomb" desc = "The minibomb is a grenade with a five-second fuse." diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 37dd2c6d439..e6f9f617cff 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -273,6 +273,12 @@ desc = "A salvaged syndicate device gutted of its explosives to be used as a training aid for aspiring bomb defusers." payload = /obj/item/bombcore/training +/obj/machinery/syndicatebomb/emp + name = "emp bomb" + icon_state = "emp-bomb" + desc = "A large bomb, seemingly made to make a large electromagnetic pulse." + payload = /obj/item/bombcore/emp + /obj/machinery/syndicatebomb/badmin name = "generic summoning badmin bomb" desc = "Oh god what is in this thing?" @@ -449,6 +455,35 @@ range_light = 4 range_flame = 2 +/obj/item/bombcore/emp + name = "EMP bomb core" + var/light_emp = 36 + var/heavy_emp = 18 + var/pulse_number = 1 //Since one EMP wont destroy anything other then consoles and IPCS, here is an option to have multiple pulses when dentonating. DO NOT USE THIS WITH REALLY LARGE AREAS + var/adminlogged = FALSE //If it exploded once, don't do it again. + +/obj/item/bombcore/emp/ex_act(severity) //It's an EMP bomb, not a chemical explosive + return + +/obj/item/bombcore/emp/burn() + return + +/obj/item/bombcore/emp/detonate() + if(adminlog && !adminlogged) + message_admins(adminlog) + log_game(adminlog) + adminlogged = TRUE + empulse(src, heavy_emp, light_emp, 1) + if(pulse_number <= 1) + src.visible_message("The bomb's core burns out, and the bomb disintegrates into ash.") + new /obj/effect/decal/cleanable/ash(get_turf(src)) + if(loc && istype(loc, /obj/machinery/syndicatebomb)) + qdel(loc) + qdel(src) + else + pulse_number -= 1 + addtimer(CALLBACK(src, .proc/detonate), 20) // every 2 seconds go off again till pulses run out + /obj/item/bombcore/chemical name = "chemical payload" desc = "An explosive payload designed to spread chemicals, dangerous or otherwise, across a large area. It is able to hold up to four chemical containers, and must be loaded before use." diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index aa123930323..487a582a3ab 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -76,15 +76,20 @@ name = "suspicious beacon" desc = "A label on it reads: Warning: Activating this device will send a high-ordinance explosive to your location." origin_tech = "bluespace=5;syndicate=5" + var/bomb = /obj/machinery/syndicatebomb /obj/item/radio/beacon/syndicate/bomb/attack_self(mob/user) if(user) to_chat(user, "Locked In") - new /obj/machinery/syndicatebomb( user.loc ) + new bomb(user.loc) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) user.drop_item() qdel(src) +/obj/item/radio/beacon/syndicate/bomb/emp + desc = "A label on it reads: Warning: Activating this device will send a high-ordinance EMP explosive to your location." + bomb = /obj/machinery/syndicatebomb/emp + /obj/item/radio/beacon/engine desc = "A label on it reads: Warning: This device is used for transportation of high-density objects used for high-yield power generation. Stay away!." anchored = 1 //Let's not move these around. Some folk might get the idea to use these for assassinations diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi index 62a1c314388..b6e458c0e24 100644 Binary files a/icons/obj/assemblies.dmi and b/icons/obj/assemblies.dmi differ