mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Only eggs can sustain me
This commit is contained in:
106
code/game/objects/items/weapons/implants/implantreagent_ch.dm
Normal file
106
code/game/objects/items/weapons/implants/implantreagent_ch.dm
Normal file
@@ -0,0 +1,106 @@
|
||||
/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
|
||||
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("lets out an embarrassed moan", "yelps in embarrassment", "quietly groans in a mixture of discomfort and pleasure")
|
||||
assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_egg
|
||||
var/eggtype = /obj/item/weapon/reagent_containers/food/snacks/egg
|
||||
|
||||
/obj/item/weapon/implant/reagent_generator/egg/post_implant(mob/living/carbon/source)
|
||||
START_PROCESSING(SSobj, src)
|
||||
to_chat(source, "<span class='notice'>You implant [source] with \the [src].</span>")
|
||||
source.verbs |= assigned_proc
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/use_reagent_implant_egg()
|
||||
set name = "Force Someone Adjacent To Lay An Egg, If Applicable!"
|
||||
set desc = "Force someone adjacent to lay an egg by squeezing into their lower body! Whilst their reaction may vary, this is certainly going to overwhelm them for a moment!"
|
||||
set category = "Local"
|
||||
set src in view(1)
|
||||
//do_reagent_implant(usr)
|
||||
if(!isliving(usr) || !usr.checkClickCooldown())
|
||||
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
|
||||
rimplant.empty_message = list("Your lower belly feels smooth and empty, clearly there are no eggs left to be had!", "The reduced pressure in your lower belly tells you there are no eggs left, for now...")
|
||||
rimplant.full_message = list("Your lower belly is a bit bloated, possessing a mildly bumpy texture if pressed agaisnt...", "Your lower abdomen feels really heavy, making it a bit hard to walk.")
|
||||
rimplant.emote_descriptor = list("an egg right out of [src]'s lower belly!", "into [src]'s belly firmly, forcing him to lay an egg!", "[src] really tight, who promptly lays an egg!")
|
||||
if(rimplant.reagents.total_volume >= rimplant.usable_volume*0.75)
|
||||
to_chat(src, "<span class='notice'>[src] is very full on eggs, squeezing them now may result in a cascade!</span>")
|
||||
if (rimplant && do_after(usr,100))
|
||||
if(rimplant.reagents.total_volume <= rimplant.transfer_amount)
|
||||
to_chat(src, "<span class='notice'>[pick(rimplant.empty_message)]</span>")
|
||||
return
|
||||
var/egg = rimplant.eggtype
|
||||
new egg(get_turf(src))
|
||||
src.SetStunned(3)
|
||||
src.adjustHalLoss(5)
|
||||
playsound(src,'sound/vore/insert.ogg',50,1)
|
||||
var/index = rand(1,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("<span class='notice'>[usr] [verb_desc] [emote]</span>",
|
||||
"<span class='notice'>You [self_verb_desc] [emote]</span>")
|
||||
else
|
||||
visible_message("<span class='notice'>[src] [pick(rimplant.short_emote_descriptor)] an egg.</span>",
|
||||
"<span class='notice'>You [pick(rimplant.self_emote_descriptor)] an egg.</span>")
|
||||
if(prob(15))
|
||||
visible_message("<span class='notice'>[src] [pick(rimplant.random_emote)].</span>")
|
||||
rimplant.reagents.remove_any(rimplant.transfer_amount)
|
||||
if(prob(80*rimplant.reagents.total_volume/rimplant.usable_volume))
|
||||
while(rimplant.reagents.total_volume >= rimplant.transfer_amount)
|
||||
if(do_after(src,20))
|
||||
src.SetStunned(1)
|
||||
src.adjustHalLoss(5)
|
||||
playsound(src,'sound/vore/insert.ogg',50,1)
|
||||
new egg(get_turf(src))
|
||||
rimplant.reagents.remove_any(rimplant.transfer_amount)
|
||||
if(prob(25))
|
||||
visible_message("<span class='notice'>[src] [pick(rimplant.random_emote)].</span>")
|
||||
|
||||
/obj/item/weapon/implant/reagent_generator/egg/slow
|
||||
name = "slow egg laying implant"
|
||||
usable_volume = 3000
|
||||
transfer_amount = 300
|
||||
|
||||
/obj/item/weapon/implant/reagent_generator/egg/veryslow
|
||||
name = "very slow egg laying implant"
|
||||
usable_volume = 6000
|
||||
transfer_amount = 600
|
||||
|
||||
/obj/item/weapon/implant/reagent_generator/egg/hicap
|
||||
name = "high capacity egg laying implant" // Note that the capacity does not affect the regeneration rate, rather, the transfer amount does
|
||||
usable_volume = 1000 // Effectively, the transfer_amount is the cost/time of making an egg. Usable volume is simply the max number of eggs.
|
||||
transfer_amount = 50
|
||||
|
||||
/obj/item/weapon/implant/reagent_generator/egg/doublehicap
|
||||
name = "extreme capacity egg laying implant"
|
||||
usable_volume = 2000
|
||||
transfer_amount = 50
|
||||
|
||||
/obj/item/weapon/implant/reagent_generator/egg/slowlowcap
|
||||
name = "slow, low capacity egg laying implant"
|
||||
usable_volume = 3000
|
||||
transfer_amount = 3000
|
||||
|
||||
/obj/item/weapon/implant/reagent_generator/egg/veryslowlowcap
|
||||
name = "very slow, low capacity egg laying implant"
|
||||
usable_volume = 6000
|
||||
transfer_amount = 6000
|
||||
@@ -2,4 +2,17 @@
|
||||
/datum/gear/utility/news_ch
|
||||
display_name = "starcaster"
|
||||
path = /obj/item/device/starcaster_news
|
||||
cost = 0
|
||||
cost = 0
|
||||
|
||||
/datum/gear/utility/implant/egg
|
||||
display_name = "Egg implant"
|
||||
path = /obj/item/weapon/implant/reagent_generator/egg
|
||||
cost = 0
|
||||
|
||||
/datum/gear/utility/implant/egg/New()
|
||||
..()
|
||||
var/list/implants = list()
|
||||
for(var/implant in typesof(/obj/item/weapon/implant/reagent_generator/egg))
|
||||
var/obj/item/weapon/implant/reagent_generator/egg/implant_type = implant
|
||||
implants[initial(implant_type.name)] = implant_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(implants))
|
||||
Reference in New Issue
Block a user