Files
GS13NG/code/modules/research/xenobiology/crossbreeding/consuming.dm
T

436 lines
13 KiB
Plaintext

/*
Consuming extracts:
Can eat food items.
After consuming enough, produces special cookies.
*/
/obj/item/slimecross/consuming
name = "consuming extract"
desc = "It hungers... for <i>more</i>." //My slimecross has finally decided to eat... my buffet!
icon_state = "consuming"
effect = "consuming"
var/nutriment_eaten = 0
var/nutriment_required = 10
var/cooldown = 600 //1 minute.
var/last_produced = 0
var/cookies = 5 //Number of cookies to spawn
var/cookietype = /obj/item/slime_cookie
/obj/item/slimecross/consuming/attackby(obj/item/O, mob/user)
if(istype(O,/obj/item/reagent_containers/food/snacks))
if(last_produced + cooldown > world.time)
to_chat(user, "<span class='warning'>[src] is still digesting after its last meal!<span>")
return
var/datum/reagent/N = O.reagents.has_reagent(/datum/reagent/consumable/nutriment)
if(N)
nutriment_eaten += N.volume
to_chat(user, "<span class='notice'>[src] opens up and swallows [O] whole!</span>")
qdel(O)
playsound(src, 'sound/items/eatfood.ogg', 20, 1)
else
to_chat(user, "<span class='warning'>[src] burbles unhappily at the offering.</span>")
if(nutriment_eaten >= nutriment_required)
nutriment_eaten = 0
user.visible_message("<span class='notice'>[src] swells up and produces a small pile of cookies!</span>")
playsound(src, 'sound/effects/splat.ogg', 40, 1)
last_produced = world.time
for(var/i in 1 to cookies)
var/obj/item/S = spawncookie()
S.pixel_x = rand(-5, 5)
S.pixel_y = rand(-5, 5)
return
..()
/obj/item/slimecross/consuming/proc/spawncookie()
return new cookietype(get_turf(src))
/obj/item/slime_cookie //While this technically acts like food, it's so removed from it that I made it its' own type.
name = "error cookie"
desc = "A weird slime cookie. You shouldn't see this."
icon = 'icons/obj/food/slimecookies.dmi'
var/taste = "error"
var/nutrition = 5
icon_state = "base"
force = 0
w_class = WEIGHT_CLASS_TINY
throwforce = 0
throw_speed = 3
throw_range = 6
/obj/item/slime_cookie/proc/do_effect(mob/living/M, mob/user)
return
/obj/item/slime_cookie/attack(mob/living/M, mob/user)
var/fed = FALSE
if(M == user)
M.visible_message("<span class='notice'>[user] eats [src]!</span>", "<span class='notice'>You eat [src].</span>")
fed = TRUE
else
M.visible_message("<span class='danger'>[user] tries to force [M] to eat [src]!</span>", "<span class='userdanger'>[user] tries to force you to eat [src]!</span>")
if(do_after(user, 20, target = M))
fed = TRUE
M.visible_message("<span class='danger'>[user] forces [M] to eat [src]!</span>", "<span class='warning'>[user] forces you to eat [src].</span>")
if(fed)
to_chat(M, "Tastes like [taste].")
playsound(get_turf(M), 'sound/items/eatfood.ogg', 20, 1)
if(nutrition)
M.reagents.add_reagent(/datum/reagent/consumable/nutriment,nutrition)
do_effect(M, user)
qdel(src)
return
..()
/obj/item/slimecross/consuming/grey
colour = "grey"
cookietype = /obj/item/slime_cookie/grey
/obj/item/slime_cookie/grey
name = "slime cookie"
desc = "A grey-ish transparent cookie. Nutritious, probably."
icon_state = "grey"
taste = "goo"
nutrition = 15
/obj/item/slimecross/consuming/orange
colour = "orange"
cookietype = /obj/item/slime_cookie/orange
/obj/item/slime_cookie/orange
name = "fiery cookie"
desc = "A orange cookie with a fiery pattern. Feels warm."
icon_state = "orange"
taste = "cinnamon and burning"
/obj/item/slime_cookie/orange/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/firecookie)
/obj/item/slimecross/consuming/purple
colour = "purple"
cookietype = /obj/item/slime_cookie/purple
/obj/item/slime_cookie/purple
name = "health cookie"
desc = "A purple cookie with a cross pattern. Soothing."
icon_state = "purple"
taste = "fruit jam and cough medicine"
/obj/item/slime_cookie/purple/do_effect(mob/living/M, mob/user)
M.adjustBruteLoss(-5)
M.adjustFireLoss(-5)
M.adjustToxLoss(-5, forced=1) //To heal slimepeople.
M.adjustOxyLoss(-5)
M.adjustCloneLoss(-5)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5)
/obj/item/slimecross/consuming/blue
colour = "blue"
cookietype = /obj/item/slime_cookie/blue
/obj/item/slime_cookie/blue
name = "water cookie"
desc = "A transparent blue cookie. Constantly dripping wet."
icon_state = "blue"
taste = "water"
/obj/item/slime_cookie/blue/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/watercookie)
/obj/item/slimecross/consuming/metal
colour = "metal"
cookietype = /obj/item/slime_cookie/metal
/obj/item/slime_cookie/metal
name = "metallic cookie"
desc = "A shiny grey cookie. Hard to the touch."
icon_state = "metal"
taste = "copper"
/obj/item/slime_cookie/metal/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/metalcookie)
/obj/item/slimecross/consuming/yellow
colour = "yellow"
cookietype = /obj/item/slime_cookie/yellow
/obj/item/slime_cookie/yellow
name = "sparking cookie"
desc = "A yellow cookie with a lightning pattern. Has a rubbery texture."
icon_state = "yellow"
taste = "lemon cake and rubber gloves"
/obj/item/slime_cookie/yellow/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/sparkcookie)
/obj/item/slimecross/consuming/darkpurple
colour = "dark purple"
cookietype = /obj/item/slime_cookie/darkpurple
/obj/item/slime_cookie/darkpurple
name = "toxic cookie"
desc = "A dark purple cookie, stinking of plasma."
icon_state = "darkpurple"
taste = "slime jelly and toxins"
/obj/item/slime_cookie/darkpurple/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/toxincookie)
/obj/item/slimecross/consuming/darkblue
colour = "dark blue"
cookietype = /obj/item/slime_cookie/darkblue
/obj/item/slime_cookie/darkblue
name = "frosty cookie"
desc = "A dark blue cookie with a snowflake pattern. Feels cold."
icon_state = "darkblue"
taste = "mint and bitter cold"
/obj/item/slime_cookie/darkblue/do_effect(mob/living/M, mob/user)
M.adjust_bodytemperature(-110)
M.ExtinguishMob()
/obj/item/slimecross/consuming/silver
colour = "silver"
cookietype = /obj/item/slime_cookie/silver
/obj/item/slime_cookie/silver
name = "waybread cookie"
desc = "A warm, crispy cookie, sparkling silver in the light. Smells wonderful."
icon_state = "silver"
taste = "masterful elven baking"
nutrition = 0 //We don't want normal nutriment
/obj/item/slime_cookie/silver/do_effect(mob/living/M, mob/user)
M.reagents.add_reagent(/datum/reagent/consumable/nutriment/stabilized, 10)
/obj/item/slimecross/consuming/bluespace
colour = "bluespace"
cookietype = /obj/item/slime_cookie/bluespace
/obj/item/slime_cookie/bluespace
name = "space cookie"
desc = "A white cookie with green icing. Surprisingly hard to hold."
icon_state = "bluespace"
taste = "sugar and starlight"
/obj/item/slime_cookie/bluespace/do_effect(mob/living/M, mob/user)
var/list/L = get_sub_areas_turfs(get_area(M))
var/turf/target
while (L.len && !target)
var/I = rand(1, L.len)
var/turf/T = L[I]
if (is_centcom_level(T.z))
L.Cut(I,I+1)
continue
if(!T.density)
var/clear = TRUE
for(var/obj/O in T)
if(O.density)
clear = FALSE
break
if(clear)
target = T
if (!target)
L.Cut(I,I+1)
if(target)
do_teleport(M, target, 0, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE)
new /obj/effect/particle_effect/sparks(get_turf(M))
playsound(get_turf(M), "sparks", 50, 1)
/obj/item/slimecross/consuming/sepia
colour = "sepia"
cookietype = /obj/item/slime_cookie/sepia
/obj/item/slime_cookie/sepia
name = "time cookie"
desc = "A light brown cookie with a clock pattern. Takes some time to chew."
icon_state = "sepia"
taste = "brown sugar and a metronome"
/obj/item/slime_cookie/sepia/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/timecookie)
/obj/item/slimecross/consuming/cerulean
colour = "cerulean"
cookietype = /obj/item/slime_cookie/cerulean
cookies = 3 //You're gonna get more.
/obj/item/slime_cookie/cerulean
name = "duplicookie"
desc = "A cerulean cookie with strange proportions. It feels like it could break apart easily."
icon_state = "cerulean"
taste = "a sugar cookie"
/obj/item/slime_cookie/cerulean/do_effect(mob/living/M, mob/user)
if(prob(50))
to_chat(M, "<span class='notice'>A piece of [src] breaks off while you chew, and falls to the ground.</span>")
var/obj/item/slime_cookie/cerulean/C = new(get_turf(M))
C.taste = taste + " and a sugar cookie"
/obj/item/slimecross/consuming/pyrite
colour = "pyrite"
cookietype = /obj/item/slime_cookie/pyrite
/obj/item/slime_cookie/pyrite
name = "color cookie"
desc = "A yellow cookie with rainbow-colored icing. Reflects the light strangely."
icon_state = "pyrite"
taste = "vanilla and " //Randomly selected color dye.
var/colour = "#FFFFFF"
/obj/item/slime_cookie/pyrite/Initialize()
. = ..()
var/tastemessage = "paint remover"
switch(rand(1,7))
if(1)
tastemessage = "red dye"
colour = "#FF0000"
if(2)
tastemessage = "orange dye"
colour = "#FFA500"
if(3)
tastemessage = "yellow dye"
colour = "#FFFF00"
if(4)
tastemessage = "green dye"
colour = "#00FF00"
if(5)
tastemessage = "blue dye"
colour = "#0000FF"
if(6)
tastemessage = "indigo dye"
colour = "#4B0082"
if(7)
tastemessage = "violet dye"
colour = "#FF00FF"
taste += tastemessage
/obj/item/slime_cookie/pyrite/do_effect(mob/living/M, mob/user)
M.add_atom_colour(colour,WASHABLE_COLOUR_PRIORITY)
/obj/item/slimecross/consuming/red
colour = "red"
cookietype = /obj/item/slime_cookie/red
/obj/item/slime_cookie/red
name = "blood cookie"
desc = "A red cookie, oozing a thick red fluid. Vampires might enjoy it."
icon_state = "red"
taste = "red velvet and iron"
/obj/item/slime_cookie/red/do_effect(mob/living/M, mob/user)
new /obj/effect/decal/cleanable/blood(get_turf(M))
playsound(get_turf(M), 'sound/effects/splat.ogg', 10, 1)
if(iscarbon(M))
var/mob/living/carbon/C = M
C.blood_volume += 25 //Half a vampire drain.
/obj/item/slimecross/consuming/green
colour = "green"
cookietype = /obj/item/slime_cookie/green
/obj/item/slime_cookie/green
name = "gross cookie"
desc = "A disgusting green cookie, seeping with pus. You kind of feel ill just looking at it."
icon_state = "green"
taste = "the contents of your stomach"
/obj/item/slime_cookie/green/do_effect(mob/living/M, mob/user)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.vomit(25)
M.reagents.remove_all()
/obj/item/slimecross/consuming/pink
colour = "pink"
cookietype = /obj/item/slime_cookie/pink
/obj/item/slime_cookie/pink
name = "love cookie"
desc = "A pink cookie with an icing heart. D'aww."
icon_state = "pink"
taste = "love and hugs"
/obj/item/slime_cookie/pink/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/lovecookie)
/obj/item/slimecross/consuming/gold
colour = "gold"
cookietype = /obj/item/slime_cookie/gold
/obj/item/slime_cookie/gold
name = "gilded cookie"
desc = "A buttery golden cookie, closer to a bread than anything. May good fortune find you."
icon_state = "gold"
taste = "sweet cornbread and wealth"
/obj/item/slime_cookie/gold/do_effect(mob/living/M, mob/user)
var/obj/item/held = M.get_active_held_item() //This should be itself, but just in case...
M.dropItemToGround(held)
var/newcoin = /obj/item/coin/gold
var/obj/item/coin/C = new newcoin(get_turf(M))
playsound(get_turf(C), 'sound/items/coinflip.ogg', 50, 1)
M.put_in_hand(C)
/obj/item/slimecross/consuming/oil
colour = "oil"
cookietype = /obj/item/slime_cookie/oil
/obj/item/slime_cookie/oil
name = "tar cookie"
desc = "An oily black cookie, which sticks to your hands. Smells like chocolate."
icon_state = "oil"
taste = "rich molten chocolate and tar"
/obj/item/slime_cookie/oil/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/tarcookie)
/obj/item/slimecross/consuming/black
colour = "black"
cookietype = /obj/item/slime_cookie/black
/obj/item/slime_cookie/black
name = "spooky cookie"
desc = "A pitch black cookie with an icing ghost on the front. Spooky!"
icon_state = "black"
taste = "ghosts and stuff"
/obj/item/slime_cookie/black/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/spookcookie)
/obj/item/slimecross/consuming/lightpink
colour = "light pink"
cookietype = /obj/item/slime_cookie/lightpink
/obj/item/slime_cookie/lightpink
name = "peace cookie"
desc = "A light pink cookie with a peace symbol in the icing. Lovely!"
icon_state = "lightpink"
taste = "strawberry icing and P.L.U.R" //Literal candy raver.
/obj/item/slime_cookie/lightpink/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/peacecookie)
/obj/item/slimecross/consuming/adamantine
colour = "adamantine"
cookietype = /obj/item/slime_cookie/adamantine
/obj/item/slime_cookie/adamantine
name = "crystal cookie"
desc = "A translucent rock candy in the shape of a cookie. Surprisingly chewy."
icon_state = "adamantine"
taste = "crystalline sugar and metal"
/obj/item/slime_cookie/adamantine/do_effect(mob/living/M, mob/user)
M.apply_status_effect(/datum/status_effect/adamantinecookie)
/obj/item/slimecross/consuming/rainbow
colour = "rainbow"
/obj/item/slimecross/consuming/rainbow/spawncookie()
var/cookie_type = pick(subtypesof(/obj/item/slime_cookie))
var/obj/item/slime_cookie/S = new cookie_type(get_turf(src))
S.name = "rainbow cookie"
S.desc = "A beautiful rainbow cookie, constantly shifting colors in the light."
S.icon_state = "rainbow"
return S