diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index ae3adf9c3bd..b6c78c72d24 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -647,4 +647,4 @@ icon = 'icons/obj/stock_parts.dmi' icon_state = "capacitor" desc = "A debug item for research." - origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8" + origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8;phorontech=8;engineering=8" diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm index 3dc57db6549..03776c78ded 100644 --- a/code/game/objects/items/weapons/implants/implantcase.dm +++ b/code/game/objects/items/weapons/implants/implantcase.dm @@ -3,128 +3,159 @@ /obj/item/weapon/implantcase name = "Glass Case" desc = "A case containing an implant." + icon = 'icons/obj/items.dmi' icon_state = "implantcase-0" item_state = "implantcase" throw_speed = 1 throw_range = 5 w_class = 1.0 var/obj/item/weapon/implant/imp = null - proc - update() +/obj/item/weapon/implantcase/proc/update() + if (src.imp) + src.icon_state = text("implantcase-[]", src.imp.item_color) + else + src.icon_state = "implantcase-0" + return - update() - if (src.imp) - src.icon_state = text("implantcase-[]", src.imp.item_color) +/obj/item/weapon/implantcase/attackby(obj/item/weapon/I as obj, mob/user as mob) + ..() + if (istype(I, /obj/item/weapon/pen)) + var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text + if (user.get_active_hand() != I) + return + if((!in_range(src, usr) && src.loc != user)) + return + t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + if(t) + src.name = text("Glass Case - '[]'", t) else - src.icon_state = "implantcase-0" - return - - - attackby(obj/item/weapon/I as obj, mob/user as mob) - ..() - if (istype(I, /obj/item/weapon/pen)) - var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text - if (user.get_active_hand() != I) + src.name = "Glass Case" + else if(istype(I, /obj/item/weapon/reagent_containers/syringe)) + if(!src.imp) return + if(!src.imp.allow_reagents) return + if(src.imp.reagents.total_volume >= src.imp.reagents.maximum_volume) + user << "\red [src] is full." + else + spawn(5) + I.reagents.trans_to(src.imp, 5) + user << "\blue You inject 5 units of the solution. The syringe now contains [I.reagents.total_volume] units." + else if (istype(I, /obj/item/weapon/implanter)) + var/obj/item/weapon/implanter/M = I + if (M.imp) + if ((src.imp || M.imp.implanted)) return - if((!in_range(src, usr) && src.loc != user)) - return - t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) - if(t) - src.name = text("Glass Case- '[]'", t) - else - src.name = "Glass Case" - else if(istype(I, /obj/item/weapon/reagent_containers/syringe)) - if(!src.imp) return - if(!src.imp.allow_reagents) return - if(src.imp.reagents.total_volume >= src.imp.reagents.maximum_volume) - user << "\red [src] is full." - else - spawn(5) - I.reagents.trans_to(src.imp, 5) - user << "\blue You inject 5 units of the solution. The syringe now contains [I.reagents.total_volume] units." - else if (istype(I, /obj/item/weapon/implanter)) - if (I:imp) - if ((src.imp || I:imp.implanted)) + M.imp.loc = src + src.imp = M.imp + M.imp = null + src.update() + M.update() + else + if (src.imp) + if (M.imp) return - I:imp.loc = src - src.imp = I:imp - I:imp = null - src.update() - I:update() - else - if (src.imp) - if (I:imp) - return - src.imp.loc = I - I:imp = src.imp - src.imp = null - update() - I:update() - return - + src.imp.loc = M + M.imp = src.imp + src.imp = null + update() + M.update() + return /obj/item/weapon/implantcase/tracking - name = "Glass Case- 'Tracking'" + name = "Glass Case - 'Tracking'" desc = "A case containing a tracking implant." - icon = 'icons/obj/items.dmi' icon_state = "implantcase-b" - - New() - src.imp = new /obj/item/weapon/implant/tracking( src ) - ..() - return - +/obj/item/weapon/implantcase/tracking/New() + src.imp = new /obj/item/weapon/implant/tracking( src ) + ..() + return /obj/item/weapon/implantcase/explosive - name = "Glass Case- 'Explosive'" + name = "Glass Case - 'Explosive'" desc = "A case containing an explosive implant." - icon = 'icons/obj/items.dmi' icon_state = "implantcase-r" - - New() - src.imp = new /obj/item/weapon/implant/explosive( src ) - ..() - return - +/obj/item/weapon/implantcase/explosive/New() + src.imp = new /obj/item/weapon/implant/explosive( src ) + ..() + return /obj/item/weapon/implantcase/chem - name = "Glass Case- 'Chem'" + name = "Glass Case - 'Chem'" desc = "A case containing a chemical implant." - icon = 'icons/obj/items.dmi' icon_state = "implantcase-b" -/obj/item/weapon/implantcase/chem/New() +/obj/item/weapon/implantcase/chem/New() src.imp = new /obj/item/weapon/implant/chem( src ) ..() return /obj/item/weapon/implantcase/loyalty - name = "Glass Case- 'Loyalty'" + name = "Glass Case - 'Loyalty'" desc = "A case containing a loyalty implant." - icon = 'icons/obj/items.dmi' icon_state = "implantcase-r" - - New() - src.imp = new /obj/item/weapon/implant/loyalty( src ) - ..() - return +/obj/item/weapon/implantcase/loyalty/New() + src.imp = new /obj/item/weapon/implant/loyalty( src ) + ..() + return /obj/item/weapon/implantcase/death_alarm - name = "Glass Case- 'Death Alarm'" + name = "Glass Case - 'Death Alarm'" desc = "A case containing a death alarm implant." - icon = 'icons/obj/items.dmi' icon_state = "implantcase-b" - New() - src.imp = new /obj/item/weapon/implant/death_alarm( src ) - ..() - return +/obj/item/weapon/implantcase/death_alarm/New() + src.imp = new /obj/item/weapon/implant/death_alarm( src ) + ..() + return + + +/obj/item/weapon/implantcase/freedom + name = "Glass Case - 'Freedom'" + desc = "A case containing a freedom implant." + icon_state = "implantcase-r" + +/obj/item/weapon/implantcase/freedom/New() + src.imp = new /obj/item/weapon/implant/freedom( src ) + ..() + return + + +/obj/item/weapon/implantcase/adrenalin + name = "Glass Case - 'Adrenalin'" + desc = "A case containing an adrenalin implant." + icon_state = "implantcase-b" + +/obj/item/weapon/implantcase/adrenalin/New() + src.imp = new /obj/item/weapon/implant/adrenalin( src ) + ..() + return + + +/obj/item/weapon/implantcase/dexplosive + name = "Glass Case - 'Explosive'" + desc = "A case containing an explosive." + icon_state = "implantcase-r" + +/obj/item/weapon/implantcase/dexplosive/New() + src.imp = new /obj/item/weapon/implant/dexplosive( src ) + ..() + return + + +/obj/item/weapon/implantcase/health + name = "Glass Case - 'Health'" + desc = "A case containing a health tracking implant." + icon_state = "implantcase-b" + +/obj/item/weapon/implantcase/health/New() + src.imp = new /obj/item/weapon/implant/health( src ) + ..() + return \ No newline at end of file diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 0100f71bd68..6dc5f2c40b0 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1421,7 +1421,7 @@ datum/design/implant_chem req_tech = list("materials" = 2, "biotech" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/implant/chem" + build_path = "/obj/item/weapon/implantcase/chem" datum/design/implant_free name = "freedom implant" @@ -1430,7 +1430,7 @@ datum/design/implant_free req_tech = list("syndicate" = 2, "biotech" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/implant/freedom" + build_path = "/obj/item/weapon/implantcase/freedom" datum/design/chameleon name = "Chameleon Kit"