From 8c0f1756a101db3dc12100eea39411684320f088 Mon Sep 17 00:00:00 2001 From: Chemlight Date: Mon, 9 Nov 2020 23:03:12 -0800 Subject: [PATCH] Funny-character-bus-code This little pull is litterally a pull for a single character I'd like to bus, basicly a walking chem dispenser, so lets go! --- .../projectiles/ammunition/special/syringe.dm | 23 +++ .../modules/projectiles/guns/misc/chem_gun.dm | 61 ++++++- .../projectile/bullets/dart_syringe.dm | 7 + .../reagent_containers/Chemical_tongue.dm | 131 ++++++++++++++ .../reagents/reagent_containers/hypospray.dm | 74 ++++++++ .../modules/spells/spell_types/adminbussed.dm | 171 ++++++++++++++++++ code/modules/surgery/organs/augments_arms.dm | 7 + tgstation.dme | 3 +- 8 files changed, 475 insertions(+), 2 deletions(-) create mode 100644 code/modules/reagents/reagent_containers/Chemical_tongue.dm create mode 100644 code/modules/spells/spell_types/adminbussed.dm 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 9a5d6c13..3f1bee4f 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"