/// Slime Extracts /// /obj/item/slime_extract name = "slime extract" desc = "Goo extracted from a slime. Legends claim these to have \"magical powers\"." icon = 'icons/mob/slimes.dmi' icon_state = "grey slime extract" force = 1 w_class = WEIGHT_CLASS_TINY throwforce = 0 throw_speed = 3 throw_range = 6 origin_tech = "biotech=3" container_type = INJECTABLE_1 var/Uses = 1 // uses before it goes inert var/qdel_timer = null // deletion timer, for delayed reactions /obj/item/slime_extract/attackby(obj/item/O, mob/user) if(istype(O, /obj/item/slimepotion/enhancer)) if(Uses >= 5) to_chat(user, "You cannot enhance this extract further!") return ..() to_chat(user, "You apply the enhancer to the slime extract. It may now be reused one more time.") Uses++ qdel(O) ..() /obj/item/slime_extract/Initialize() . = ..() create_reagents(100) /obj/item/slime_extract/grey name = "grey slime extract" icon_state = "grey slime extract" /obj/item/slime_extract/gold name = "gold slime extract" icon_state = "gold slime extract" /obj/item/slime_extract/silver name = "silver slime extract" icon_state = "silver slime extract" /obj/item/slime_extract/metal name = "metal slime extract" icon_state = "metal slime extract" /obj/item/slime_extract/purple name = "purple slime extract" icon_state = "purple slime extract" /obj/item/slime_extract/darkpurple name = "dark purple slime extract" icon_state = "dark purple slime extract" /obj/item/slime_extract/orange name = "orange slime extract" icon_state = "orange slime extract" /obj/item/slime_extract/yellow name = "yellow slime extract" icon_state = "yellow slime extract" /obj/item/slime_extract/red name = "red slime extract" icon_state = "red slime extract" /obj/item/slime_extract/blue name = "blue slime extract" icon_state = "blue slime extract" /obj/item/slime_extract/darkblue name = "dark blue slime extract" icon_state = "dark blue slime extract" /obj/item/slime_extract/pink name = "pink slime extract" icon_state = "pink slime extract" /obj/item/slime_extract/green name = "green slime extract" icon_state = "green slime extract" /obj/item/slime_extract/lightpink name = "light pink slime extract" icon_state = "light pink slime extract" /obj/item/slime_extract/black name = "black slime extract" icon_state = "black slime extract" /obj/item/slime_extract/oil name = "oil slime extract" icon_state = "oil slime extract" /obj/item/slime_extract/adamantine name = "adamantine slime extract" icon_state = "adamantine slime extract" /obj/item/slime_extract/bluespace name = "bluespace slime extract" icon_state = "bluespace slime extract" /obj/item/slime_extract/pyrite name = "pyrite slime extract" icon_state = "pyrite slime extract" /obj/item/slime_extract/cerulean name = "cerulean slime extract" icon_state = "cerulean slime extract" /obj/item/slime_extract/sepia name = "sepia slime extract" icon_state = "sepia slime extract" /obj/item/slime_extract/rainbow name = "rainbow slime extract" icon_state = "rainbow slime extract" ////Slime-derived potions/// /obj/item/slimepotion name = "slime potion" desc = "A hard yet gelatinous capsule excreted by a slime, containing mysterious substances." w_class = WEIGHT_CLASS_TINY origin_tech = "biotech=4" /obj/item/slimepotion/afterattack(obj/item/reagent_containers/target, mob/user , proximity) if (istype(target)) to_chat(user, "You cannot transfer [src] to [target]! It appears the potion must be given directly to a slime to absorb." ) return /obj/item/slimepotion/docility name = "docility potion" desc = "A potent chemical mix that nullifies a slime's hunger, causing it to become docile and tame." icon = 'icons/obj/chemical.dmi' icon_state = "potsilver" /obj/item/slimepotion/docility/attack(mob/living/simple_animal/slime/M, mob/user) if(!isslime(M)) to_chat(user, "The potion only works on slimes!") return ..() if(M.stat) to_chat(user, "The slime is dead!") return ..() M.docile = 1 M.nutrition = 700 to_chat(M, "You absorb the potion and feel your intense desire to feed melt away.") to_chat(user, "You feed the slime the potion, removing its hunger and calming it.") var/newname = copytext(sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text),1,MAX_NAME_LEN) if (!newname) newname = "pet slime" M.name = newname M.real_name = newname qdel(src) /obj/item/slimepotion/sentience name = "intelligence potion" desc = "A miraculous chemical mix that grants human like intelligence to living beings." icon = 'icons/obj/chemical.dmi' icon_state = "potpink" origin_tech = "biotech=6" var/list/not_interested = list() var/being_used = 0 var/sentience_type = SENTIENCE_ORGANIC /obj/item/slimepotion/sentience/afterattack(mob/living/M, mob/user) if(being_used || !ismob(M) || !user.Adjacent(M)) return if(!isanimal(M) || M.ckey) //only works on animals that aren't player controlled to_chat(user, "[M] is already too intelligent for this to work!") return ..() if(M.stat) to_chat(user, "[M] is dead!") return ..() var/mob/living/simple_animal/SM = M if(SM.sentience_type != sentience_type) to_chat(user, "[src] won't work on [SM].") return ..() to_chat(user, "You offer [src] to [SM]...") being_used = 1 var/list/candidates = pollCandidatesForMob("Do you want to play as [SM.name]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, SM, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm var/mob/dead/observer/theghost = null if(candidates.len) theghost = pick(candidates) SM.key = theghost.key SM.mind.enslave_mind_to_creator(user) SM.sentience_act() to_chat(SM, "All at once it makes sense: you know what you are and who you are! Self awareness is yours!") to_chat(SM, "You are grateful to be self aware and owe [user.real_name] a great debt. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") to_chat(user, "[SM] accepts [src] and suddenly becomes attentive and aware. It worked!") SM.copy_known_languages_from(user, TRUE) qdel(src) else to_chat(user, "[SM] looks interested for a moment, but then looks back down. Maybe you should try again later.") being_used = 0 ..() /obj/item/slimepotion/transference name = "consciousness transference potion" desc = "A strange slime-based chemical that, when used, allows the user to transfer their consciousness to a lesser being." icon = 'icons/obj/chemical.dmi' icon_state = "potorange" origin_tech = "biotech=6" var/prompted = 0 var/animal_type = SENTIENCE_ORGANIC /obj/item/slimepotion/transference/afterattack(mob/living/M, mob/user) if(prompted || !ismob(M)) return if(!isanimal(M) || M.ckey) //much like sentience, these will not work on something that is already player controlled to_chat(user, "[M] already has a higher consciousness!") return ..() if(M.stat) to_chat(user, "[M] is dead!") return ..() var/mob/living/simple_animal/SM = M if(SM.sentience_type != animal_type) to_chat(user, "You cannot transfer your consciousness to [SM]." ) return ..() if(jobban_isbanned(user, ROLE_ALIEN)) //ideally sentience and trasnference potions should be their own unique role. to_chat(user, "Your mind goes blank as you attempt to use the potion.") return prompted = 1 if(alert("This will permanently transfer your consciousness to [SM]. Are you sure you want to do this?",,"Yes","No")=="No") prompted = 0 return to_chat(user, "You drink the potion then place your hands on [SM]...") user.mind.transfer_to(SM) SM.faction = user.faction.Copy() SM.sentience_act() //Same deal here as with sentience user.death() to_chat(SM, "In a quick flash, you feel your consciousness flow into [SM]!") to_chat(SM, "You are now [SM]. Your allegiances, alliances, and role is still the same as it was prior to consciousness transfer!") SM.name = "[SM.name] as [user.real_name]" qdel(src) /obj/item/slimepotion/steroid name = "slime steroid" desc = "A potent chemical mix that will cause a baby slime to generate more extract." icon = 'icons/obj/chemical.dmi' icon_state = "potred" /obj/item/slimepotion/steroid/attack(mob/living/simple_animal/slime/M, mob/user) if(!isslime(M))//If target is not a slime. to_chat(user, "The steroid only works on baby slimes!") return ..() if(M.is_adult) //Can't steroidify adults to_chat(user, "Only baby slimes can use the steroid!") return ..() if(M.stat) to_chat(user, "The slime is dead!") return ..() if(M.cores >= 5) to_chat(user, "The slime already has the maximum amount of extract!") return ..() to_chat(user, "You feed the slime the steroid. It will now produce one more extract.") M.cores++ qdel(src) /obj/item/slimepotion/enhancer name = "extract enhancer" desc = "A potent chemical mix that will give a slime extract an additional use." icon = 'icons/obj/chemical.dmi' icon_state = "potpurple" /obj/item/slimepotion/stabilizer name = "slime stabilizer" desc = "A potent chemical mix that will reduce the chance of a slime mutating." icon = 'icons/obj/chemical.dmi' icon_state = "potcyan" /obj/item/slimepotion/stabilizer/attack(mob/living/simple_animal/slime/M, mob/user) if(!isslime(M)) to_chat(user, "The stabilizer only works on slimes!") return ..() if(M.stat) to_chat(user, "The slime is dead!") return ..() if(M.mutation_chance == 0) to_chat(user, "The slime already has no chance of mutating!") return ..() to_chat(user, "You feed the slime the stabilizer. It is now less likely to mutate.") M.mutation_chance = Clamp(M.mutation_chance-15,0,100) qdel(src) /obj/item/slimepotion/mutator name = "slime mutator" desc = "A potent chemical mix that will increase the chance of a slime mutating." icon = 'icons/obj/chemical.dmi' icon_state = "potgreen" /obj/item/slimepotion/mutator/attack(mob/living/simple_animal/slime/M, mob/user) if(!isslime(M)) to_chat(user, "The mutator only works on slimes!") return ..() if(M.stat) to_chat(user, "The slime is dead!") return ..() if(M.mutator_used) to_chat(user, "This slime has already consumed a mutator, any more would be far too unstable!") return ..() if(M.mutation_chance == 100) to_chat(user, "The slime is already guaranteed to mutate!") return ..() to_chat(user, "You feed the slime the mutator. It is now more likely to mutate.") M.mutation_chance = Clamp(M.mutation_chance+12,0,100) M.mutator_used = TRUE qdel(src) /obj/item/slimepotion/speed name = "slime speed potion" desc = "A potent chemical mix that will remove the slowdown from any item." icon = 'icons/obj/chemical.dmi' icon_state = "potyellow" origin_tech = "biotech=5" /obj/item/slimepotion/speed/afterattack(obj/C, mob/user) ..() if(!istype(C)) to_chat(user, "The potion can only be used on items or vehicles!") return if(isitem(C)) var/obj/item/I = C if(I.slowdown <= 0) to_chat(user, "The [C] can't be made any faster!") return ..() I.slowdown = 0 if(istype(C, /obj/vehicle)) var/obj/vehicle/V = C var/datum/component/riding/R = V.GetComponent(/datum/component/riding) if(R) if(R.vehicle_move_delay <= 0 ) to_chat(user, "The [C] can't be made any faster!") return ..() R.vehicle_move_delay = 0 to_chat(user, "You slather the red gunk over the [C], making it faster.") C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) C.add_atom_colour("#FF0000", FIXED_COLOUR_PRIORITY) qdel(src) /obj/item/slimepotion/fireproof name = "slime chill potion" desc = "A potent chemical mix that will fireproof any article of clothing. Has three uses." icon = 'icons/obj/chemical.dmi' icon_state = "potblue" origin_tech = "biotech=5" var/uses = 3 /obj/item/slimepotion/fireproof/afterattack(obj/item/clothing/C, mob/user) ..() if(!uses) qdel(src) return if(!istype(C)) to_chat(user, "The potion can only be used on clothing!") return if(C.max_heat_protection_temperature == FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT) to_chat(user, "The [C] is already fireproof!") return ..() to_chat(user, "You slather the blue gunk over the [C], fireproofing it.") C.name = "fireproofed [C.name]" C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) C.add_atom_colour("#000080", FIXED_COLOUR_PRIORITY) C.max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT C.heat_protection = C.body_parts_covered C.resistance_flags |= FIRE_PROOF uses -- if(!uses) qdel(src) /obj/item/slimepotion/genderchange name = "gender change potion" desc = "An interesting chemical mix that changes the biological gender of what its applied to. Cannot be used on things that lack gender entirely." icon = 'icons/obj/chemical.dmi' icon_state = "potlightpink" /obj/item/slimepotion/genderchange/attack(mob/living/L, mob/user) if(!istype(L) || L.stat == DEAD) to_chat(user, "The potion can only be used on living things!") return if(L.gender != MALE && L.gender != FEMALE) to_chat(user, "The potion can only be used on gendered things!") return if(L.gender == MALE) L.gender = FEMALE L.visible_message("[L] suddenly looks more feminine!", "You suddenly feel more feminine!") else L.gender = MALE L.visible_message("[L] suddenly looks more masculine!", "You suddenly feel more masculine!") L.regenerate_icons() qdel(src) ////////Adamantine Golem stuff I dunno where else to put it // This will eventually be removed. /obj/item/clothing/under/golem name = "adamantine skin" desc = "A golem's skin." icon_state = "golem" item_state = "golem" item_color = "golem" flags_1 = ABSTRACT_1 | NODROP_1 resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF has_sensor = NO_SENSORS /obj/item/clothing/suit/golem name = "adamantine shell" desc = "A golem's thick outer shell." icon_state = "golem" item_state = "golem" w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.9 permeability_coefficient = 0.5 body_parts_covered = FULL_BODY flags_inv = HIDEGLOVES | HIDESHOES | HIDEJUMPSUIT resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF flags_1 = ABSTRACT_1 | NODROP_1 /obj/item/clothing/shoes/golem name = "golem's feet" desc = "Sturdy adamantine feet." icon_state = "golem" item_state = null resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF flags_1 = NOSLIP_1 | ABSTRACT_1 | NODROP_1 /obj/item/clothing/mask/breath/golem name = "golem's face" desc = "The imposing face of an adamantine golem." icon_state = "golem" item_state = "golem" siemens_coefficient = 0 resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF flags_1 = ABSTRACT_1 | NODROP_1 /obj/item/clothing/gloves/golem name = "golem's hands" desc = "Strong adamantine hands." icon_state = "golem" item_state = null siemens_coefficient = 0 flags_1 = ABSTRACT_1 | NODROP_1 resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF /obj/item/clothing/head/space/golem icon_state = "golem" item_state = "dermal" item_color = "dermal" name = "golem's head" desc = "A golem's head." resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF flags_1 = ABSTRACT_1 | NODROP_1 /obj/item/stack/tile/bluespace name = "bluespace floor tile" singular_name = "floor tile" desc = "Through a series of micro-teleports these tiles let people move at incredible speeds." icon_state = "tile-bluespace" w_class = WEIGHT_CLASS_NORMAL force = 6 materials = list(MAT_METAL=500) throwforce = 10 throw_speed = 3 throw_range = 7 flags_1 = CONDUCT_1 max_amount = 60 turf_type = /turf/open/floor/bluespace /obj/item/stack/tile/sepia name = "sepia floor tile" singular_name = "floor tile" desc = "Time seems to flow very slowly around these tiles." icon_state = "tile-sepia" w_class = WEIGHT_CLASS_NORMAL force = 6 materials = list(MAT_METAL=500) throwforce = 10 throw_speed = 3 throw_range = 7 flags_1 = CONDUCT_1 max_amount = 60 turf_type = /turf/open/floor/sepia /obj/item/areaeditor/blueprints/slime name = "cerulean prints" desc = "A one use yet of blueprints made of jelly like organic material. Extends the reach of the management console." color = "#2956B2" /obj/item/areaeditor/blueprints/slime/edit_area() ..() var/area/A = get_area(src) for(var/turf/T in A) T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) T.add_atom_colour("#2956B2", FIXED_COLOUR_PRIORITY) A.xenobiology_compatible = TRUE qdel(src)