diff --git a/code/modules/client/preference_setup/loadout/loadout_implants.dm b/code/modules/client/preference_setup/loadout/loadout_implants.dm new file mode 100644 index 0000000000..d58e3dc762 --- /dev/null +++ b/code/modules/client/preference_setup/loadout/loadout_implants.dm @@ -0,0 +1,29 @@ +//TFF 29/4/19: Add implants category, includes reagent implanters + + +/datum/gear/implant + display_name = "implant, tracking" + path = /obj/item/weapon/implant/tracking/weak + cost = 0 //VOREStation Edit. Changed cost to 0 + slot = "implant" + exploitable = 1 + sort_category = "Implants" + +/* VOREStation Edit - Make languages great again +/datum/gear/utility/implant/eal //This does nothing if you don't actually know EAL. + display_name = "implant, language, EAL" + path = /obj/item/weapon/implant/language/eal + cost = 2 + slot = "implant" + exploitable = 1*/ + +//Reagent implants - cost of 2 to reduce chance of abuse +/datum/gear/implant/reagent_generator + display_name = "implant, milk production" + path = /obj/item/weapon/implanter/reagent_generator/milk + exploitable = 0 + cost = 2 + +/datum/gear/implant/reagent_generator/egg + display_name = "implant, egg production" + path = /obj/item/weapon/implanter/reagent_generator/egg diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index 76178dada2..c381c980dc 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -115,22 +115,7 @@ display_name = "cell, device" path = /obj/item/weapon/cell/device -/datum/gear/utility/implant - exploitable = 1 -/* VOREStation Edit - Make languages great again -/datum/gear/utility/implant/eal //This does nothing if you don't actually know EAL. - display_name = "implant, language, EAL" - path = /obj/item/weapon/implant/language/eal - cost = 2 - slot = "implant" - exploitable = 1*/ - -/datum/gear/utility/implant/tracking - display_name = "implant, tracking" - path = /obj/item/weapon/implant/tracking/weak - cost = 0 //VOREStation Edit. Changed cost to 0 - slot = "implant" - exploitable = 1 +//TFF 29/4/19: remove implants, move to loadout_implants.dm /datum/gear/utility/pen display_name = "Fountain Pen" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e1a120643f..884f016e23 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -167,7 +167,7 @@ update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) if(update) UpdateDamageIcon() -/mob/living/carbon/human/proc/implant_loadout(var/datum/gear/G = new/datum/gear/utility/implant) +/mob/living/carbon/human/proc/implant_loadout(var/datum/gear/G = new/datum/gear/implant) //TFF 29/4/19: filepath change due to loadout change var/obj/item/weapon/implant/I = new G.path(src) I.imp_in = src I.implanted = 1 diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 7221feb2cf..a3d2f6b724 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -615,6 +615,93 @@ taurtype = /datum/sprite_accessory/tail/taur/feline/tempest no_message = "These saddlebags seem to be fitted for someone else, and keep slipping off!" +//TFF 29/4/19: Add standardised reagent generators for loadout +/obj/item/weapon/implant/reagent_generator/milk + name = "milk generation implant" + desc = "It's an implant you can use to make milk from yourself!" + generated_reagents = list("milk" = 2) + reagent_name = "milk" + usable_volume = 1000 + + empty_message = list("Your breasts are almost completely drained!") + full_message = list("Your teats feel heavy and swollen!") + emote_descriptor = list("squeezes milk", "tugs on their breasts, milking them") + self_emote_descriptor = list("squeeze") + random_emote = list("moos quietly") + verb_name = "Milk" + verb_desc = "Grab their nipples and milk them into a container! May cause blushing and groaning." + +/obj/item/weapon/implanter/reagent_generator/milk + implant_type = /obj/item/weapon/implant/reagent_generator/milk + +/obj/item/weapon/implant/reagent_generator/egg + name = "egg laying implant" + desc = "This is an implant that allows the user to lay eggs." + generated_reagents = list("egg" = 2) + usable_volume = 500 + transfer_amount = 50 + + empty_message = list("Your lower belly feels smooth and empty. Sorry, we're out of eggs!", "The reduced pressure in your lower belly tells you there are no more eggs.") + full_message = list("Your lower belly looks swollen with irregular bumps, and it feels heavy.", "Your lower abdomen feels really heavy, making it a bit hard to walk.") + emote_descriptor = list("an egg right out of their belly!", "into their belly firmly, forcing them to lay an egg!", "them really tight, making them lay an egg promptly!") + var/verb_descriptor = list("squeezes", "pushes", "hugs") + var/self_verb_descriptor = list("squeeze", "push", "hug") + var/short_emote_descriptor = list("lays", "forces out", "pushes out") + self_emote_descriptor = list("lay", "force out", "push out") + random_emote = list("moans softly with a blush on their face", "yelps in embarrassment", "grunts a little") + assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_egg + +/obj/item/weapon/implant/reagent_generator/egg/implanted(mob/living/carbon/source) + processing_objects += src + to_chat(source, "You implant [source] with \the [src].") + source.verbs |= assigned_proc + return 1 + +/obj/item/weapon/implanter/reagent_generator/egg + implant_type = /obj/item/weapon/implant/reagent_generator/egg + +/mob/living/carbon/human/proc/use_reagent_implant_egg() + set name = "Lay Egg" + set desc = "Force them to lay an egg by squeezing into their lower body!" + set category = "Object" + set src in view(1) + + //do_reagent_implant(usr) + if(!isliving(usr) || !usr.canClick()) + return + + if(usr.incapacitated() || usr.stat > CONSCIOUS) + return + + var/obj/item/weapon/implant/reagent_generator/egg/rimplant + for(var/obj/item/organ/external/E in organs) + for(var/obj/item/weapon/implant/I in E.implants) + if(istype(I, /obj/item/weapon/implant/reagent_generator)) + rimplant = I + break + if (rimplant) + if(rimplant.reagents.total_volume <= rimplant.transfer_amount) + to_chat(src, "[pick(rimplant.empty_message)]") + return + + new /obj/item/weapon/reagent_containers/food/snacks/egg(get_turf(src)) + + var/index = rand(0,3) + + if (usr != src) + var/emote = rimplant.emote_descriptor[index] + var/verb_desc = rimplant.verb_descriptor[index] + var/self_verb_desc = rimplant.self_verb_descriptor[index] + usr.visible_message("[usr] [verb_desc] [emote]", + "You [self_verb_desc] [emote]") + else + visible_message("[src] [pick(rimplant.short_emote_descriptor)] an egg.", + "You [pick(rimplant.self_emote_descriptor)] an egg.") + if(prob(15)) + visible_message("[src] [pick(rimplant.random_emote)].") // M-mlem. + + rimplant.reagents.remove_any(rimplant.transfer_amount) + //WickedTempest: Chakat Tempest /obj/item/weapon/implant/reagent_generator/tempest generated_reagents = list("milk" = 2) diff --git a/vorestation.dme b/vorestation.dme index 685cc538ca..d514b34a51 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1486,6 +1486,7 @@ #include "code\modules\client\preference_setup\loadout\loadout_gloves_vr.dm" #include "code\modules\client\preference_setup\loadout\loadout_head.dm" #include "code\modules\client\preference_setup\loadout\loadout_head_vr.dm" +#include "code\modules\client\preference_setup\loadout\loadout_implants.dm" #include "code\modules\client\preference_setup\loadout\loadout_mask.dm" #include "code\modules\client\preference_setup\loadout\loadout_shoes.dm" #include "code\modules\client\preference_setup\loadout\loadout_shoes_vr.dm"