diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 8b19f95f6d5..dd877c3ad60 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -662,11 +662,11 @@ var/list/uplink_items = list() item = /obj/item/weapon/storage/box/syndie_kit/imp_adrenal cost = 8 -/datum/uplink_item/implants/explosive - name = "Explosive Implant" - desc = "An implant injected into the body, and later activated either manually or automatically upon death. Creates a moderately-sized fiery explosion. For those agents who know there is no going back." - item = /obj/item/weapon/storage/box/syndie_kit/imp_explosive - cost = 4 +/datum/uplink_item/implants/microbomb + name = "Microbomb Implant" + desc = "An implant injected into the body, and later activated either manually or automatically upon death. The more implants inside of you, the higher the explosive power." + item = /obj/item/weapon/storage/box/syndie_kit/imp_macrobomb + cost = 1 //CYBERNETIC IMPLANTS @@ -754,6 +754,12 @@ var/list/uplink_items = list() item = /obj/item/toy/syndicateballoon cost = 20 +/datum/uplink_item/implants/macrobomb + name = "Macrobomb Implant" + desc = "An implant injected into the body, and later activated either manually or automatically upon death. Maximum explosion power." + item = /obj/item/weapon/storage/box/syndie_kit/imp_macrobomb + cost = 20 + /datum/uplink_item/badass/random name = "Random Item" desc = "Picking this choice will send you a random item from the list. Useful for when you cannot think of a strategy to finish your objectives with." diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 7d8a51b32eb..251a562fe3c 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -180,7 +180,11 @@ U.hidden_uplink.uses = 20 synd_mob.equip_to_slot_or_del(U, slot_in_backpack) - var/obj/item/weapon/implant/weapons_auth/E = new/obj/item/weapon/implant/weapons_auth(synd_mob) + var/obj/item/weapon/implant/weapons_auth/W = new/obj/item/weapon/implant/weapons_auth(synd_mob) + W.imp_in = synd_mob + W.implanted = 1 + W.implanted(synd_mob) + var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(synd_mob) E.imp_in = synd_mob E.implanted = 1 E.implanted(synd_mob) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index b22b7439eae..be83f60bf9d 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -79,7 +79,7 @@ return dat /obj/item/weapon/implant/explosive - name = "explosive implant" + name = "microbomb implant" desc = "And boom goes the weasel." icon_state = "explosive" @@ -101,12 +101,36 @@ /obj/item/weapon/implant/explosive/activate(var/cause) if(!cause || !imp_in) return 0 - if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your explosive implant? This will cause you to explode and gib!", "Explosive Implant Confirmation", "Yes", "No") != "Yes") + if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your microbomb implant? This will cause you to explode!", "Microbomb Implant Confirmation", "Yes", "No") != "Yes") return 0 - explosion(src,0,1,5,7,10, flame_range = 5) - if(imp_in) - imp_in.gib() + var/light = 1 + var/medium = 0.5 + var/heavy = 0.25 + for(var/obj/item/weapon/implant/explosive/E in imp_in) + heavy += 0.25 + medium += 0.5 + light += 1 + if(E != src) + qdel(E) + heavy = round(heavy) + medium = round(medium) + light = round(light) + imp_in.gib() + explosion(src,heavy,medium,light,light, flame_range = light) + qdel(src) +/obj/item/weapon/implant/explosive/macro + name = "macrobomb implant" + desc = "And boom goes the weasel. And everything else nearby." + icon_state = "explosive" + +/obj/item/weapon/implant/explosive/macro/activate(var/cause) + if(!cause || !imp_in) return 0 + if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your macrobomb implant? This will cause you to explode and gib!", "Macrobomb Implant Confirmation", "Yes", "No") != "Yes") + return 0 + imp_in.gib() + explosion(src,5,10,20,20, flame_range = 20) + qdel(src) /obj/item/weapon/implant/chem name = "chem implant" diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 7e8b26009e9..06772278c29 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -112,16 +112,26 @@ return */ -/obj/item/weapon/storage/box/syndie_kit/imp_explosive - name = "Explosive Implant (with injector)" +/obj/item/weapon/storage/box/syndie_kit/imp_microbomb + name = "Microbomb Implant (with injector)" -/obj/item/weapon/storage/box/syndie_kit/imp_explosive/New() +/obj/item/weapon/storage/box/syndie_kit/imp_microbomb/New() var/obj/item/weapon/implanter/O = new(src) O.imp = new /obj/item/weapon/implant/explosive(O) O.update_icon() ..() return +/obj/item/weapon/storage/box/syndie_kit/imp_macrobomb + name = "Macrobomb Implant (with injector)" + +/obj/item/weapon/storage/box/syndie_kit/imp_macrobomb/New() + var/obj/item/weapon/implanter/O = new(src) + O.imp = new /obj/item/weapon/implant/explosive/macro(O) + O.update_icon() + ..() + return + /obj/item/weapon/storage/box/syndie_kit/imp_uplink name = "boxed uplink implant (with injector)"