diff --git a/code/modules/projectiles/ammunition/special/syringe.dm b/code/modules/projectiles/ammunition/special/syringe.dm
index 10e44028..e97f7d18 100644
--- a/code/modules/projectiles/ammunition/special/syringe.dm
+++ b/code/modules/projectiles/ammunition/special/syringe.dm
@@ -76,3 +76,26 @@
if(S.emptrig == TRUE)
var/obj/item/projectile/bullet/dart/syringe/dart/D = BB
D.emptrig = TRUE
+
+//Chemlight was here, adding dumb bussing things
+
+/obj/item/ammo_casing/chemgun_debug
+ name = "dart synthesiser"
+ desc = "A high-power spring, linked to an energy-based dart synthesiser."
+ projectile_type = /obj/item/projectile/bullet/dart/syringe/debug
+ firing_effect_type = null
+
+/obj/item/ammo_casing/chemgun_debug/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
+ if(!BB)
+ return
+ if(istype(loc, /obj/item/gun/chem/debug))
+ var/obj/item/gun/chem/debug/CGD = loc
+ if(CGD.syringes_left <= 0)
+ return
+ if(!CGD.infinite)
+ CGD.reagents.trans_to(BB, 10)
+ else
+ CGD.reagents.copy_to(BB, 10)
+ BB.name = "chemical dart"
+ CGD.syringes_left--
+ ..()
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/misc/chem_gun.dm b/code/modules/projectiles/guns/misc/chem_gun.dm
index 9f8e92a8..234c8d0c 100644
--- a/code/modules/projectiles/guns/misc/chem_gun.dm
+++ b/code/modules/projectiles/guns/misc/chem_gun.dm
@@ -43,4 +43,63 @@
syringes_left++
if(chambered && !chambered.BB)
chambered.newshot()
- last_synth = world.time
\ No newline at end of file
+ last_synth = world.time
+
+//Chemlight was here, adding dumb busing things
+
+/obj/item/gun/chem/debug
+ name = "experimental reagent gun"
+ desc = "a reagent gun seemingly made to be a part of the user, suggesting the individual generates reagents in their body for it to work."
+ icon_state = "syringe_pistol"
+ item_state = "gun" //Smaller inhand
+ suppressed = TRUE //Softer fire sound
+ can_unsuppress = FALSE //Permanently silenced
+ time_per_syringe = 150
+ syringes_left = 6
+ max_syringes = 6
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ var/infinite = FALSE
+
+/obj/item/gun/chem/debug/Initialize()
+ . = ..()
+ chambered = new /obj/item/ammo_casing/chemgun_debug(src)
+ START_PROCESSING(SSobj, src)
+ create_reagents(100, OPENCONTAINER | NO_REACT)
+
+/obj/item/gun/chem/debug/Destroy()
+ . = ..()
+ STOP_PROCESSING(SSobj, src)
+
+/obj/item/gun/chem/debug/attack_self(mob/user)
+ var/list/reagent_ids = sortList(GLOB.chemical_reagents_list)
+ var/choose_operation = input(user, "Select an option", "Reagent fabricator", "cancel") in list("Select reagent", "Enable production", "Cancel")
+ if (choose_operation == "Select reagent")
+ reagents.clear_reagents()
+ var/chosen_reagent
+ switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID"))
+ if("Enter ID")
+ var/valid_id
+ while(!valid_id)
+ chosen_reagent = stripped_input(usr, "Enter the ID of the reagent you want to add to your syringes.")
+ if(!chosen_reagent) //Get me out of here!
+ break
+ for(var/ID in reagent_ids)
+ if(ID == chosen_reagent)
+ valid_id = 1
+ if(!valid_id)
+ to_chat(usr, "A reagent with that ID doesn't exist!")
+ if("Choose ID")
+ chosen_reagent = input(usr, "Choose a reagent to add to your syringes.", "Choose a reagent.") as null|anything in reagent_ids
+ if(chosen_reagent)
+ reagents.add_reagent(chosen_reagent, 100, null)
+
+ else if (choose_operation == "Enable production")
+ if(!infinite)
+ infinite = TRUE
+ to_chat(user, "Now constantly generating reagents.")
+ else
+ infinite = FALSE
+ to_chat(user, "Reagents generation now off.")
+
+ else
+ return
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm
index 3c599d51..b75131ed 100644
--- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm
+++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm
@@ -79,3 +79,10 @@
target.visible_message("\The [src] fails to land on target!")
return TRUE
+
+//Chemlight was here, adding dumb bussing things
+
+/obj/item/projectile/bullet/dart/syringe/debug
+ name = "syringe"
+ icon_state = "syringeproj"
+ damage = 0
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/Chemical_tongue.dm b/code/modules/reagents/reagent_containers/Chemical_tongue.dm
new file mode 100644
index 00000000..2bed1f92
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/Chemical_tongue.dm
@@ -0,0 +1,131 @@
+// This is more or less my funny tongue being being coded in. - Ken
+
+/obj/item/reagent_containers/chemical_tongue
+ name = "synthetic reagent tongue"
+ desc = "A cybernetic organ with the ability to produce reagents, neat!"
+ icon = 'icons/mob/dogborg.dmi'
+ icon_state = "synthtongue"
+ amount_per_transfer_from_this = 5
+ volume = 200
+ possible_transfer_amounts = list()
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ spillable = FALSE
+ splashable = FALSE
+ reagent_flags = OPENCONTAINER | NO_REACT
+ var/list/fun_ids = list("growthchem", "shrinkchem", "aphro", "aphro+", "penis_enlarger", "breast_enlarger", "space_drugs", "lithium")
+
+/obj/item/reagent_containers/chemical_tongue/attack(mob/M, mob/user, obj/target)
+ if(user.a_intent == INTENT_HARM && user.zone_selected == BODY_ZONE_PRECISE_MOUTH)
+ if(M != user)
+ M.visible_message("[user] locks their lips with [M], attempting to give a deep kiss to [M].", \
+ "[user] locks their lips with yours, you feel what might be a tongue pushing past your lips then towards your throat!")
+ if(!do_mob(user, M, 80))
+ return
+ playsound(M.loc,'sound/effects/attackblob.ogg', rand(10,50), 1)
+ if(isliving(M))
+ var/mob/living/deepkiss = M
+ deepkiss.adjustOxyLoss(10)
+ if(!reagents || !reagents.total_volume)
+ M.visible_message("[user] pulls away from the kiss as their tongue in [M]'s mouth soon follows, slurping back into [user]'s muzzle.", \
+ "[user] thrusts their tongue down your throat! Pulling it back up as it slithers up then out from your mouth.")
+ return // The drink might be empty after the delay, such as by spam-feeding
+ M.visible_message("[user] pulls away from the kiss as their tongue in [M]'s mouth soon follows, slurping back into [user]'s muzzle, leaving a long strand of liquid from their lips to [M]'s own before wiping it away.", \
+ "[user] thrusts their tongue down your throat! Pulling it back up as it slithers up then out from your mouth. You feel a strange liquid in your throat!")
+ log_combat(user, M, "fed", reagents.log_list())
+ var/fraction = min(5/reagents.total_volume, 1)
+ reagents.reaction(M, INGEST, fraction)
+ addtimer(CALLBACK(reagents, /datum/reagents.proc/copy_to, M, 10), 5)
+
+ if(user.a_intent == INTENT_GRAB && user.zone_selected == BODY_ZONE_PRECISE_MOUTH)
+ if(M != user)
+ M.visible_message("[user] lightly places their lips on [M]'s providing a kiss.", \
+ "[user] lightly places their lips against your, you can feel tongue pushing against your lips in the kiss.")
+ if(!do_mob(user, M, 40))
+ return
+ playsound(M.loc,'sound/effects/attackblob.ogg', rand(10,50), 1)
+ if(!reagents || !reagents.total_volume)
+ M.visible_message("[user] breaks away from the kiss with [M]'s.", \
+ "[user] rolls their tongue around the inside of your mouth, before pulling away.")
+ return // The drink might be empty after the delay, such as by spam-feeding
+ M.visible_message("[user] breaks away from the kiss with [M]'s.", \
+ "[user] rolls their tongue around the inside of your mouth, before pulling away. You can almost taste something as [user]'s tongue was laced in something.")
+ log_combat(user, M, "fed", reagents.log_list())
+ var/fraction = min(5/reagents.total_volume, 1)
+ reagents.reaction(M, INGEST, fraction)
+ addtimer(CALLBACK(reagents, /datum/reagents.proc/copy_to, M, 5), 5)
+
+ if(user.a_intent == INTENT_DISARM && user.zone_selected == BODY_ZONE_PRECISE_MOUTH)
+ if(M != user)
+ M.visible_message("[user] attempts nuzzles into [M]'s.", \
+ "[user] attempts to bump his snout against yours.")
+ if(!do_mob(user, M, 10))
+ return
+ playsound(M.loc,'sound/effects/attackblob.ogg', rand(10,50), 1)
+ if(!reagents || !reagents.total_volume)
+ M.visible_message("[user] playfully licks over [M]'s lips.", \
+ "[user] playfully licks over your lips.")
+ return // The drink might be empty after the delay, such as by spam-feeding
+ M.visible_message("[user] playfully licks over [M]'s lips.", \
+ "[user] playfully licks over your lips, leaving some chemicals along it.")
+ log_combat(user, M, "fed", reagents.log_list())
+ var/fraction = min(5/reagents.total_volume, 1)
+ reagents.reaction(M, INGEST, fraction)
+ addtimer(CALLBACK(reagents, /datum/reagents.proc/copy_to, M, 1), 5)
+
+ if(user.a_intent == INTENT_HELP)
+ if(M != user && user.zone_selected == BODY_ZONE_PRECISE_MOUTH)
+ M.visible_message("[user] affectionately licks [M]'s lips.", \
+ "[user] affectionately licks over your lips.")
+ playsound(M.loc,'sound/effects/attackblob.ogg', rand(10,50), 1)
+
+ else
+ if(M != user)
+ M.visible_message("[user] affectionately licks [M].", \
+ "[user] affectionately licks over you.")
+ playsound(M.loc,'sound/effects/attackblob.ogg', rand(10,50), 1)
+ else
+ return
+
+/obj/item/reagent_containers/chemical_tongue/attack_self(mob/user)
+ var/chosen_reagent
+ var/list/reagent_ids = sortList(GLOB.chemical_reagents_list)
+ var/quick_select = input(user, "Select an option", "Press start") in list("Quick Select", "Debug", "Cancel")
+ switch (quick_select)
+ if("Quick Select")
+ reagents.clear_reagents()
+ amount_per_transfer_from_this = 5
+ chosen_reagent = input(user, "What reagent do you want to dispense?") as null|anything in fun_ids
+ if(chosen_reagent)
+ reagents.add_reagent(chosen_reagent, 20, null)
+
+ if("Debug")
+ var/operation_selection = input(user, "Select an option", "Reagent fabricator", "cancel") in list("Select reagent", "Clear reagents", "Select transfer amount", "Cancel")
+ switch (operation_selection)
+ if("Select reagent")
+ switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID"))
+ if("Enter ID")
+ var/valid_id
+ while(!valid_id)
+ chosen_reagent = stripped_input(usr, "Enter the ID of the reagent you want to add.")
+ if(!chosen_reagent) //Get me out of here!
+ break
+ for(var/ID in reagent_ids)
+ if(ID == chosen_reagent)
+ valid_id = 1
+ if(!valid_id)
+ to_chat(usr, "A reagent with that ID doesn't exist!")
+ if("Choose ID")
+ chosen_reagent = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in reagent_ids
+ if(chosen_reagent)
+ reagents.add_reagent(chosen_reagent, 20, null)
+
+ if("Clear reagents")
+ reagents.clear_reagents()
+
+ if("Select transfer amount")
+ var/transfer_select = input(user, "Select the amount of reagents you'd like to transfer.", "Transfer amount") as num|null
+ if(transfer_select)
+ amount_per_transfer_from_this = max(min(round(text2num(transfer_select)),20),1)
+
+ else
+ return
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 4381be1a..daee636c 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -181,3 +181,77 @@
volume = 250
list_reagents = list("holywater" = 150, "tiresolution" = 50, "dizzysolution" = 50)
amount_per_transfer_from_this = 50
+
+//Chemlight was here.
+
+/obj/item/reagent_containers/hypospray/debug
+ name = "retractable hypospray syringe"
+ desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment."
+ icon = 'icons/obj/syringe.dmi'
+ item_state = "hypo"
+ icon_state = "borghypo"
+ amount_per_transfer_from_this = 5
+ volume = 200
+ possible_transfer_amounts = list()
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ reagent_flags = OPENCONTAINER | NO_REACT
+ slot_flags = ITEM_SLOT_BELT
+ infinite = TRUE
+ var/list/fun_ids = list("growthchem", "shrinkchem", "aphro", "aphro+", "penis_enlarger", "breast_enlarger", "space_drugs", "lithium")
+
+/obj/item/reagent_containers/hypospray/debug/attack_self(mob/user)
+ var/chosen_reagent
+ var/list/reagent_ids = sortList(GLOB.chemical_reagents_list)
+ var/quick_select = input(user, "Select an option", "Press start") in list("Quick menu", "Debug", "Cancel")
+ switch (quick_select)
+ if("Quick menu")
+ var/list_selection = input(user, "Choose an catagory", "List Choice") in list("Emergency Meds", "Fun Chemicals", "Self Defense", "Cancel")
+ switch(list_selection)
+ if("Emergency Meds")
+ reagents.clear_reagents()
+ amount_per_transfer_from_this = 10
+ reagents.add_reagent_list(list("atropine" = 10, "oxandrolone" = 20, "sal_acid" = 20, "salbutamol" = 10))
+
+ if("Self Defense")
+ reagents.clear_reagents()
+ amount_per_transfer_from_this = 10
+ reagents.add_reagent_list(list("tirizene" = 14, "tiresolution" = 21, "bonehurtingjuice" = 14,)) // OOF
+
+ if("Fun Chemicals")
+ reagents.clear_reagents()
+ amount_per_transfer_from_this = 5
+ chosen_reagent = input(user, "What reagent do you want to dispense?") as null|anything in fun_ids
+ if(chosen_reagent)
+ reagents.add_reagent(chosen_reagent, 20, null)
+
+ if("Debug")
+ var/operation_selection = input(user, "Select an option", "Reagent fabricator", "cancel") in list("Select reagent", "Clear reagents", "Select transfer amount", "Cancel")
+ switch (operation_selection)
+ if("Select reagent")
+ switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID"))
+ if("Enter ID")
+ var/valid_id
+ while(!valid_id)
+ chosen_reagent = stripped_input(usr, "Enter the ID of the reagent you want to add.")
+ if(!chosen_reagent) //Get me out of here!
+ break
+ for(var/ID in reagent_ids)
+ if(ID == chosen_reagent)
+ valid_id = 1
+ if(!valid_id)
+ to_chat(usr, "A reagent with that ID doesn't exist!")
+ if("Choose ID")
+ chosen_reagent = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in reagent_ids
+ if(chosen_reagent)
+ reagents.add_reagent(chosen_reagent, 20, null)
+
+ if("Clear reagents")
+ reagents.clear_reagents()
+
+ if("Select transfer amount")
+ var/transfer_select = input(user, "Select the amount of reagents you'd like to inject.", "Transfer amount") as num|null
+ if(transfer_select)
+ amount_per_transfer_from_this = max(min(round(text2num(transfer_select)),20),1)
+
+ else
+ return
\ No newline at end of file
diff --git a/code/modules/spells/spell_types/adminbussed.dm b/code/modules/spells/spell_types/adminbussed.dm
new file mode 100644
index 00000000..ca9e05e0
--- /dev/null
+++ b/code/modules/spells/spell_types/adminbussed.dm
@@ -0,0 +1,171 @@
+// Testing things
+/obj/effect/proc_holder/spell/self/Alteration_Mechanical
+ name = "Alter figure"
+ desc = "Change and alter your physical form."
+ human_req = 1
+ clothes_req = 0
+ charge_max = 100
+ cooldown_min = 50
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_transform"
+ action_background_icon_state = "bg_spell"
+ still_recharging_msg = "Your reagents are still recharging."
+ invocation = null //what is uttered when the wizard casts the spell
+ invocation_emote_self = null
+ school = null
+ sound = 'sound/effects/pop.ogg'
+ var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
+ var/pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/rped.ogg'
+
+/obj/effect/proc_holder/spell/self/Alteration_Mechanical/cast(mob/living/carbon/human/user)
+ var/mob/living/carbon/human/H = user
+ var/list/reagent_options = sortList(GLOB.chemical_reagents_list)
+ H.visible_message(" user] gains a look of \
+ concentration while standing perfectly still.\
+ Their body seems to shift and starts reshaping itself.",
+ "You focus intently on altering your body while \
+ standing perfectly still...")
+ var/select_alteration = input(user, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Genitals", "Penis", "Vagina", "Penis Length", "Breast Size", "Penis Production", "Breast Production", "Alter Height", "Cancel")
+ do_sparks(5, FALSE, user.loc)
+ if (select_alteration == "Genitals")
+ var/list/organs = list()
+ var/operation = input("Select organ operation.", "Organ Manipulation", "cancel") in list("add sexual organ", "remove sexual organ", "cancel")
+ switch(operation)
+ if("add sexual organ")
+ var/new_organ = input("Select sexual organ:", "Organ Manipulation") in list("Penis", "Testicles", "Breasts", "Vagina", "Womb", "Cancel")
+ if(new_organ == "Penis")
+ H.give_penis()
+ else if(new_organ == "Testicles")
+ H.give_balls()
+ else if(new_organ == "Breasts")
+ H.give_breasts()
+ else if(new_organ == "Vagina")
+ H.give_vagina()
+ else if(new_organ == "Womb")
+ H.give_womb()
+ else
+ return
+ if("remove sexual organ")
+ for(var/obj/item/organ/genital/X in H.internal_organs)
+ var/obj/item/organ/I = X
+ organs["[I.name] ([I.type])"] = I
+ var/obj/item/organ = input("Select sexual organ:", "Organ Manipulation", null) in organs
+ organ = organs[organ]
+ if(!organ)
+ return
+ var/obj/item/organ/genital/O
+ if(isorgan(organ))
+ O = organ
+ O.Remove(H)
+ organ.forceMove(get_turf(H))
+ qdel(organ)
+ H.update_genitals()
+
+ else if (select_alteration == "Penis")
+ for(var/obj/item/organ/genital/penis/X in H.internal_organs)
+ qdel(X)
+ var/new_shape
+ new_shape = input(user, "Choose your character's dong", "Genital Alteration") as null|anything in GLOB.cock_shapes_list
+ if(new_shape)
+ H.dna.features["cock_shape"] = new_shape
+ H.update_genitals()
+ H.give_balls()
+ H.give_penis()
+ H.apply_overlay()
+
+ else if (select_alteration == "Vagina")
+ for(var/obj/item/organ/genital/vagina/X in H.internal_organs)
+ qdel(X)
+ var/new_shape
+ new_shape = input(user, "Choose your character's pussy", "Genital Alteration") as null|anything in GLOB.vagina_shapes_list
+ if(new_shape)
+ H.dna.features["vag_shape"] = new_shape
+ H.update_genitals()
+ H.give_womb()
+ H.give_vagina()
+ H.apply_overlay()
+
+ else if (select_alteration == "Penis Length")
+ for(var/obj/item/organ/genital/penis/X in H.internal_organs)
+ qdel(X)
+ var/new_length
+ new_length = input(user, "Penis length in inches:\n([COCK_SIZE_MIN]-[COCK_SIZE_MAX])", "Genital Alteration") as num|null
+ if(new_length)
+ H.dna.features["cock_length"] = max(min( round(text2num(new_length)), COCK_SIZE_MAX),COCK_SIZE_MIN)
+ H.update_genitals()
+ H.apply_overlay()
+ H.give_balls()
+ H.give_penis()
+
+ else if (select_alteration == "Breast Size")
+ for(var/obj/item/organ/genital/breasts/X in H.internal_organs)
+ qdel(X)
+ var/new_size
+ new_size = input(user, "Breast Size", "Genital Alteration") as null|anything in GLOB.breasts_size_list
+ if(new_size)
+ H.dna.features["breasts_size"] = new_size
+ H.update_genitals()
+ H.apply_overlay()
+ H.give_breasts()
+
+ else if (select_alteration == "Penis Production")
+ if(H.getorganslot("testicles"))
+ var/obj/item/organ/genital/testicles/T = H.getorganslot("testicles")
+ var/new_fluid_penis
+ switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID"))
+ if("Enter ID")
+ var/valid_id
+ while(!valid_id)
+ new_fluid_penis = stripped_input(usr, "Enter the ID of the reagent you want to add to your testicles.")
+ if(!new_fluid_penis) //Get me out of here!
+ break
+ for(var/ID in reagent_options)
+ if(ID == new_fluid_penis)
+ valid_id = 1
+ if(!valid_id)
+ to_chat(usr, "A reagent with that ID doesn't exist!")
+ if("Choose ID")
+ new_fluid_penis = input(usr, "Choose a reagent to add to your testicles.", "Choose a reagent.") as null|anything in reagent_options
+ if(new_fluid_penis)
+ T.fluid_id = new_fluid_penis
+ H.update_genitals()
+ H.apply_overlay()
+ else
+ to_chat(user, "You need balls for this to work.")
+
+ else if(select_alteration == "Breast Production")
+ if(H.getorganslot("breasts"))
+ var/obj/item/organ/genital/testicles/B = H.getorganslot("breasts")
+ var/new_fluid_breasts
+ switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID"))
+ if("Enter ID")
+ var/valid_id
+ while(!valid_id)
+ new_fluid_breasts = stripped_input(usr, "Enter the ID of the reagent you want to add to your breasts.")
+ if(!new_fluid_breasts) //Get me out of here!
+ break
+ for(var/ID in reagent_options)
+ if(ID == new_fluid_breasts)
+ valid_id = 1
+ if(!valid_id)
+ to_chat(usr, "A reagent with that ID doesn't exist!")
+ if("Choose ID")
+ new_fluid_breasts = input(usr, "Choose a reagent to add to your breasts.", "Choose a reagent.") as null|anything in reagent_options
+ if(new_fluid_breasts)
+ B.fluid_id = new_fluid_breasts
+ H.update_genitals()
+ H.apply_overlay()
+ else
+ to_chat(user, "You need functioning breasts for this to work.")
+
+ else if (select_alteration == "Alter Height")
+ var/altered_height
+ altered_height = input(user, "Choose your desired sprite size:\n([MIN_BODYSIZE]-400%)", "Height Alteration") as num|null
+ if(altered_height)
+ H.size_multiplier = (max(min( round(text2num(altered_height)),400),MIN_BODYSIZE))/100
+ playsound(user.loc, pshoom_or_beepboopblorpzingshadashwoosh, 40, 1)
+ do_sparks(5, FALSE, user.loc)
+ H.visible_message("[pick("[H] shifts in size!", "[H] alters in height!", "[H] reshapes into a new stature!")]")
+
+ else
+ return
\ No newline at end of file
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index 09ba9ca7..700a62dd 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -234,3 +234,10 @@
name = "surgical toolset implant"
desc = "A set of surgical tools hidden behind a concealed panel on the user's arm."
contents = newlist(/obj/item/retractor/augment, /obj/item/hemostat/augment, /obj/item/cautery/augment, /obj/item/surgicaldrill/augment, /obj/item/scalpel/augment, /obj/item/circular_saw/augment, /obj/item/surgical_drapes)
+
+//Ignore this one this is for a bus character.
+
+/obj/item/organ/cyberimp/arm/COMPound
+ name = "chemical cybernetics implant"
+ desc = "A powerful cybernetic implant that contains chemical fabrication modules built into the user's arm."
+ contents = newlist(/obj/item/reagent_containers/hypospray/debug, /obj/item/gun/chem/debug, /obj/item/reagent_containers/chemical_tongue, /obj/item/fermichem/pHmeter)
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 0bb0a3c7..e1ba4a46 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1775,7 +1775,6 @@
#include "code\modules\holiday\easter.dm"
#include "code\modules\holiday\holidays.dm"
#include "code\modules\holiday\halloween\bartholomew.dm"
-//#include "code\modules\holiday\halloween\halloween.dm" //Time to go ahead and disable this. See you next year.
#include "code\modules\holiday\halloween\jacqueen.dm"
#include "code\modules\holodeck\area_copy.dm"
#include "code\modules\holodeck\computer.dm"
@@ -2614,6 +2613,7 @@
#include "code\modules\reagents\reagent_containers\borghydro.dm"
#include "code\modules\reagents\reagent_containers\bottle.dm"
#include "code\modules\reagents\reagent_containers\chem_pack.dm"
+#include "code\modules\reagents\reagent_containers\Chemical_tongue.dm"
#include "code\modules\reagents\reagent_containers\dropper.dm"
#include "code\modules\reagents\reagent_containers\glass.dm"
#include "code\modules\reagents\reagent_containers\hypospray.dm"
@@ -2788,6 +2788,7 @@
#include "code\modules\shuttle\syndicate.dm"
#include "code\modules\shuttle\white_ship.dm"
#include "code\modules\spells\spell.dm"
+#include "code\modules\spells\spell_types\adminbussed.dm"
#include "code\modules\spells\spell_types\aimed.dm"
#include "code\modules\spells\spell_types\area_teleport.dm"
#include "code\modules\spells\spell_types\barnyard.dm"