diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index 7021deb3613..49cfe687eb1 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -19,6 +19,10 @@ var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc if (tank) tank.explode() + if (istype(src.loc.loc, /obj/item/weapon/reagent_containers/glass/beaker/)) + var/obj/item/weapon/reagent_containers/glass/beaker/beakerbomb = src.loc.loc + if(beakerbomb) + beakerbomb.ignite() var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index e88c22556f5..ec6f115b6d2 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -1,4 +1,4 @@ -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// /// (Mixing)Glass. //////////////////////////////////////////////////////////////////////////////// /obj/item/weapon/reagent_containers/glass @@ -190,6 +190,7 @@ item_state = "beaker" m_amt = 0 g_amt = 500 + var/obj/item/device/assembly_holder/assembly = null on_reagent_change() update_icon() @@ -228,6 +229,51 @@ if (!is_open_container()) var/image/lid = image(icon, src, "lid_[initial(icon_state)]") overlays += lid + if(assembly) + overlays += "assembly" + +/obj/item/weapon/reagent_containers/glass/beaker/verb/remove_assembly() + set name = "Remove Assembly" + set category = "Object" + set src in usr + if(usr.stat || !usr.canmove || usr.restrained()) + return + if (assembly) + usr << "You detach [assembly] from \the [src]" + usr.put_in_hands(assembly) + assembly = null + update_icon() + else + usr << "There is no assembly to remove." + +/obj/item/weapon/reagent_containers/glass/beaker/ignite() + if(reagents) + reagents.chem_temp += 30 + reagents.handle_reactions() + +/obj/item/weapon/reagent_containers/glass/beaker/attackby(obj/item/weapon/W as obj, mob/user as mob, params) + if (istype(W,/obj/item/device/assembly_holder)) + if (assembly) + usr << "The [src] already has an assembly." + return ..() + assembly = W + user.drop_item() + W.loc = src + overlays += "assembly" + else + ..() + +/obj/item/weapon/reagent_containers/glass/beaker/HasProximity(atom/movable/AM) + if(assembly) + assembly.HasProximity(AM) + +/obj/item/weapon/reagent_containers/glass/beaker/Crossed(atom/movable/AM) + if(assembly) + assembly.Crossed(AM) + +/obj/item/weapon/reagent_containers/glass/beaker/hear_talk(mob/living/M, msg) + if(assembly) + assembly.hear_talk(M, msg) /obj/item/weapon/reagent_containers/glass/beaker/large name = "large beaker" diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index db617d819bf..b67e0602781 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ