diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index aa60537828c..c6199e44a05 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -815,7 +815,7 @@ var/list/uplink_items = list()
/datum/uplink_item/jobspecific/engineering/powercreeper_packet
name = "Powercreep Packet"
desc = "A packet that creates a dangerous mutated version of kudzu vines. The vines will repeatedly shock people and connect themselves to any cables near them, rapidly growing and spreading out of control if left unchecked."
- item = /obj/item/powercreeper_packet
+ item = /obj/item/deployable_packet/powercreeper
cost = 16
discounted_cost = 10
jobs_with_discount = list("Botanist", "Station Engineer", "Chief Engineer")
@@ -1118,6 +1118,14 @@ var/list/uplink_items = list()
discounted_cost = 4
jobs_with_discount = list("Assistant")
+/datum/uplink_item/jobspecific/assistant/biomasspacket
+ name = "Biomass Packet"
+ desc = "A packet containing cryo-stabilized biomass tissue. Shake and throw for your very own interdimensional space barf."
+ item = /obj/item/deployable_packet/biomass
+ cost = 8
+ discounted_cost = 5
+ jobs_with_discount = list("Assistant", "Janitor") //There originally was a discount for mechanics too due to them being Assistant+, but it felt like a cheap joke
+
/datum/uplink_item/jobspecific/command
category = "Command Specials"
diff --git a/code/game/objects/items/deployable_packet.dm b/code/game/objects/items/deployable_packet.dm
new file mode 100644
index 00000000000..df42dad1a26
--- /dev/null
+++ b/code/game/objects/items/deployable_packet.dm
@@ -0,0 +1,47 @@
+#define POWERCREEP_PACKET_ACTIVATION_TIME_IN_SECONDS 3
+
+/obj/item/deployable_packet
+ desc = ""
+ w_class = W_CLASS_TINY
+ var/activated = 0
+ var/deployeditem = null
+
+/obj/item/deployable_packet/attack_self(mob/user)
+ if(!istype(user))
+ return
+ if(activated)
+ return
+
+ to_chat(user, "You shake \the [src].")
+ to_chat(user, "It starts vibrating weirdly!")
+ activated = 1
+
+ spawn(POWERCREEP_PACKET_ACTIVATION_TIME_IN_SECONDS SECONDS)
+ new deployeditem(get_turf(src), packet_override = 1) //override for powercreep fast spawn
+ qdel(src)
+
+/obj/item/deployable_packet/biomass
+ name = "biomass packet"
+ icon = 'icons/obj/biomass.dmi'
+ icon_state = "packet"
+ deployeditem = /obj/effect/biomass_controller
+
+/obj/item/deployable_packet/biomass/examine(mob/user, size, show_name)
+ . = ..()
+ to_chat(user, "Derek Baum VII's latest innovation. Carries a cryo-stabilized sample of biomass tissue.")
+ to_chat(user, "It reads:\nStep 1: Shake to active.\nStep 2: Throw.\nStep 3: Enjoy.")
+ if(activated)
+ to_chat(user, "It's bubbling weirdly!")
+
+/obj/item/deployable_packet/powercreeper
+ name = "powercreeper packet"
+ icon = 'icons/obj/structures/powercreeper.dmi'
+ icon_state = "packet"
+ deployeditem = /obj/structure/cable/powercreeper
+
+/obj/item/deployable_packet/powercreeper/examine(mob/user, size, show_name)
+ . = ..()
+ to_chat(user, "Derek Baum VII's most popular creation. Carries a self-replicating sample of powercreeper.")
+ to_chat(user, "It reads:\nStep 1: Shake to active.\nStep 2: You have [POWERCREEP_PACKET_ACTIVATION_TIME_IN_SECONDS] seconds to run.")
+ if(activated)
+ to_chat(user, "It's sizzling weirdly!")
diff --git a/code/game/objects/items/powercreeper_packet.dm b/code/game/objects/items/powercreeper_packet.dm
deleted file mode 100644
index cb0754e57b0..00000000000
--- a/code/game/objects/items/powercreeper_packet.dm
+++ /dev/null
@@ -1,28 +0,0 @@
-#define POWERCREEP_PACKET_ACTIVATION_TIME_IN_SECONDS 3
-
-/obj/item/powercreeper_packet
- name = "powercreeper packet"
- desc = ""
- icon = 'icons/obj/structures/powercreeper.dmi'
- icon_state = "packet"
- var/activated = 0
-
-/obj/item/powercreeper_packet/attack_self(mob/user)
- if(!istype(user))
- return
- if(activated)
- return
-
- to_chat(user, "You shake \the [src].")
- to_chat(user, "It starts sizzling weirdly!") //english people help me with these words
- activated = 1
-
- spawn(POWERCREEP_PACKET_ACTIVATION_TIME_IN_SECONDS SECONDS)
- new /obj/structure/cable/powercreeper(get_turf(src), packet_override = 1)
- qdel(src)
-
-/obj/item/powercreeper_packet/examine(mob/user, size, show_name)
- . = ..()
- to_chat(user, "It reads:\nStep 1: Shake to active.\nStep 2: You have [POWERCREEP_PACKET_ACTIVATION_TIME_IN_SECONDS] seconds to run.")
- if(activated)
- to_chat(user, "Its sizzling weirdly!")
\ No newline at end of file
diff --git a/icons/obj/biomass.dmi b/icons/obj/biomass.dmi
index affa7c9a3fd..bf905a43314 100644
Binary files a/icons/obj/biomass.dmi and b/icons/obj/biomass.dmi differ
diff --git a/vgstation13.dme b/vgstation13.dme
index d2c80f01a82..45b0d8a2706 100644
--- a/vgstation13.dme
+++ b/vgstation13.dme
@@ -917,13 +917,13 @@
#include "code\game\objects\items\cookie_synth.dm"
#include "code\game\objects\items\crayons.dm"
#include "code\game\objects\items\debug.dm"
+#include "code\game\objects\items\deployable_packet.dm"
#include "code\game\objects\items\gum.dm"
#include "code\game\objects\items\incense.dm"
#include "code\game\objects\items\misc_items.dm"
#include "code\game\objects\items\ornaments.dm"
#include "code\game\objects\items\policetape.dm"
#include "code\game\objects\items\potions.dm"
-#include "code\game\objects\items\powercreeper_packet.dm"
#include "code\game\objects\items\sec_lawplanner.dm"
#include "code\game\objects\items\shooting_range.dm"
#include "code\game\objects\items\slime_heart.dm"