Tg 1 28 sync testing/confirmation (#5178)

* maps, tgui, tools

* defines and helpers

* onclick and controllers

* datums

fucking caught that hulk reversal too.

* game and shuttle modular

* module/admin

* oh god they fucking moved antag shit again

* haaaaate. Haaaaaaaaaate.

* enables moff wings

* more modules things

* tgstation.dme

before I forget something important

* some mob stuff

* s'more mob/living stuff

* some carbon stuff

* ayy lmaos and kitchen meat

* Human stuff

* species things

moff wings have a 'none' version too

* the rest of the module stuff.

* some strings

* misc

* mob icons

* some other icons.

* It compiles FUCK BORERS

FUCK BORERS
This commit is contained in:
Poojawa
2018-01-29 04:42:29 -06:00
committed by GitHub
parent 89fa4b0f28
commit 03086dfa91
666 changed files with 27177 additions and 35945 deletions
@@ -144,7 +144,7 @@
/obj/machinery/rnd/circuit_imprinter/department/proc/ui_header()
var/list/l = list()
l += "<div class='statusDisplay'><b>[host_research.organization] [department_tag] Department Circuit Imprinter</b>"
l += "Security protocols: [emagged? "<font color='red'>Disabled</font>" : "<font color='green'>Enabled</font>"]"
l += "Security protocols: [(obj_flags & EMAGGED) ? "<font color='red'>Disabled</font>" : "<font color='green'>Enabled</font>"]"
l += "<A href='?src=[REF(src)];switch_screen=[DEPPRINTER_SCREEN_MATERIALS]'><B>Material Amount:</B> [materials.total_amount] / [materials.max_amount]</A>"
l += "<A href='?src=[REF(src)];switch_screen=[DEPPRINTER_SCREEN_CHEMICALS]'><B>Chemical volume:</B> [reagents.total_volume] / [reagents.maximum_volume]</A>"
l += "<a href='?src=[REF(src)];sync_research=1'>Synchronize Research</a>"
+1 -1
View File
@@ -187,7 +187,7 @@
/obj/machinery/rnd/protolathe/department/proc/ui_header()
var/list/l = list()
l += "<div class='statusDisplay'><b>[host_research.organization] [department_tag] Department Lathe</b>"
l += "Security protocols: [emagged? "<font color='red'>Disabled</font>" : "<font color='green'>Enabled</font>"]"
l += "Security protocols: [(obj_flags & EMAGGED) ? "<font color='red'>Disabled</font>" : "<font color='green'>Enabled</font>"]"
l += "<A href='?src=[REF(src)];switch_screen=[DEPLATHE_SCREEN_MATERIALS]'><B>Material Amount:</B> [materials.total_amount] / [materials.max_amount]</A>"
l += "<A href='?src=[REF(src)];switch_screen=[DEPLATHE_SCREEN_CHEMICALS]'><B>Chemical volume:</B> [reagents.total_volume] / [reagents.maximum_volume]</A>"
l += "<a href='?src=[REF(src)];sync_research=1'>Synchronize Research</a>"
@@ -836,15 +836,6 @@
name = "Holodisk"
id = "holodisk"
build_type = AUTOLATHE
materials = list(MAT_METAL = 1000)
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
build_path = /obj/item/disk/holodisk
category = list("initial", "Misc")
//CITADEL
/datum/design/shock_collar
name = "Shock Collar"
id = "shock_collar"
build_type = AUTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 2000)
build_path = /obj/item/device/electropack/shockcollar
category = list("hacked", "Security")
@@ -54,6 +54,16 @@
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
/datum/design/cloning_disk
name = "Cloning Data Disk"
desc = "Produce additional disks for storing genetic data."
id = "cloning_disk"
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
build_path = /obj/item/disk/data
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
/datum/design/noreactsyringe
name = "Cryo Syringe"
desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units."
+3 -3
View File
@@ -191,10 +191,10 @@ doesn't have toxins access.
..()
/obj/machinery/computer/rdconsole/emag_act(mob/user)
if(!emagged)
if(!(obj_flags & EMAGGED))
to_chat(user, "<span class='notice'>You disable the security protocols</span>")
playsound(src, "sparks", 75, 1)
emagged = TRUE
obj_flags |= EMAGGED
return ..()
/obj/machinery/computer/rdconsole/proc/list_categories(list/categories, menu_num as num)
@@ -219,7 +219,7 @@ doesn't have toxins access.
var/list/l = list()
l += "<div class='statusDisplay'><b>[stored_research.organization] Research and Development Network</b>"
l += "Available points: [round(stored_research.research_points)] (+[round(stored_research.last_bitcoins * 60)] / minute)"
l += "Security protocols: [emagged? "<font color='red'>Disabled</font>" : "<font color='green'>Enabled</font>"]"
l += "Security protocols: [obj_flags & EMAGGED ? "<font color='red'>Disabled</font>" : "<font color='green'>Enabled</font>"]"
l += "<a href='?src=[REF(src)];switch_screen=[RDSCREEN_MENU]'>Main Menu</a> | <a href='?src=[REF(src)];switch_screen=[back]'>Back</a></div>[RDSCREEN_NOBREAK]"
l += "[ui_mode == 1? "<span class='linkOn'>Normal View</span>" : "<a href='?src=[REF(src)];ui_mode=1'>Normal View</a>"] | [ui_mode == 2? "<span class='linkOn'>Expert View</span>" : "<a href='?src=[REF(src)];ui_mode=2'>Expert View</a>"] | [ui_mode == 3? "<span class='linkOn'>List View</span>" : "<a href='?src=[REF(src)];ui_mode=3'>List View</a>"]"
return l
+3 -4
View File
@@ -128,7 +128,7 @@
add_fingerprint(usr)
usr.set_machine(src)
if(!src.allowed(usr) && !emagged)
if(!src.allowed(usr) && !(obj_flags & EMAGGED))
to_chat(usr, "<span class='danger'>You do not have the required access level.</span>")
return
@@ -163,9 +163,8 @@
src.updateUsrDialog()
/obj/machinery/computer/rdservercontrol/emag_act(mob/user)
if(emagged)
if(obj_flags & EMAGGED)
return
playsound(src, "sparks", 75, 1)
emagged = TRUE
obj_flags |= EMAGGED
to_chat(user, "<span class='notice'>You you disable the security protocols.</span>")
+1 -1
View File
@@ -359,7 +359,7 @@
display_name = "Genetic Engineering"
description = "We have the technology to make him."
prereq_ids = list("biotech")
design_ids = list("clonecontrol", "clonepod", "clonescanner", "scan_console")
design_ids = list("clonecontrol", "clonepod", "clonescanner", "scan_console", "cloning_disk")
research_cost = 2500
export_price = 5000
@@ -34,94 +34,499 @@
if(Uses)
grind_results["slimejelly"] = 20
//Effect when activated by a Luminescent. Separated into a minor and major effect. Returns cooldown in deciseconds.
/obj/item/slime_extract/proc/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
to_chat(user, "<span class='notice'>Nothing happened... This slime extract cannot be activated this way.</span>")
return 0
/obj/item/slime_extract/grey
name = "grey slime extract"
icon_state = "grey slime extract"
/obj/item/slime_extract/grey/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
var/obj/item/reagent_containers/food/snacks/monkeycube/M = new
if(!user.put_in_active_hand(M))
M.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
to_chat(user, "<span class='notice'>You spit out a monkey cube.</span>")
return 120
if(SLIME_ACTIVATE_MAJOR)
to_chat(user, "<span class='notice'>Your [name] starts pulsing...</span>")
if(do_after(user, 40, target = user))
var/mob/living/simple_animal/slime/S = new(get_turf(user), "grey")
playsound(user, 'sound/effects/splat.ogg', 50, 1)
to_chat(user, "<span class='notice'>You spit out [S].</span>")
return 350
else
return 0
/obj/item/slime_extract/gold
name = "gold slime extract"
icon_state = "gold slime extract"
/obj/item/slime_extract/gold/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
user.visible_message("<span class='warning'>[user] starts shaking!</span>","<span class='notice'>Your [name] starts pulsing gently...</span>")
if(do_after(user, 40, target = user))
var/mob/living/simple_animal/S = create_random_mob(user.drop_location(), FRIENDLY_SPAWN)
S.faction |= "neutral"
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [S]!</span>", "<span class='notice'>You spit out [S]!</span>")
return 300
if(SLIME_ACTIVATE_MAJOR)
user.visible_message("<span class='warning'>[user] starts shaking violently!</span>","<span class='warning'>Your [name] starts pulsing violently...</span>")
if(do_after(user, 50, target = user))
var/mob/living/simple_animal/S = create_random_mob(user.drop_location(), HOSTILE_SPAWN)
if(user.a_intent != INTENT_HARM)
S.faction |= "neutral"
else
S.faction |= "slime"
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [S]!</span>", "<span class='warning'>You spit out [S]!</span>")
return 600
/obj/item/slime_extract/silver
name = "silver slime extract"
icon_state = "silver slime extract"
/obj/item/slime_extract/silver/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
var/food_type = get_random_food()
var/obj/O = new food_type
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 200
if(SLIME_ACTIVATE_MAJOR)
var/drink_type = get_random_drink()
var/obj/O = new drink_type
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 200
/obj/item/slime_extract/metal
name = "metal slime extract"
icon_state = "metal slime extract"
/obj/item/slime_extract/metal/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
var/obj/item/stack/sheet/glass/O = new(null, 5)
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 150
if(SLIME_ACTIVATE_MAJOR)
var/obj/item/stack/sheet/metal/O = new(null, 5)
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 200
/obj/item/slime_extract/purple
name = "purple slime extract"
icon_state = "purple slime extract"
/obj/item/slime_extract/purple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
user.nutrition += 50
user.blood_volume += 50
to_chat(user, "<span class='notice'>You activate [src], and your body is refilled with fresh slime jelly!</span>")
return 150
if(SLIME_ACTIVATE_MAJOR)
to_chat(user, "<span class='notice'>You activate [src], and it releases regenerative chemicals!</span>")
user.reagents.add_reagent("regen_jelly",10)
return 600
/obj/item/slime_extract/darkpurple
name = "dark purple slime extract"
icon_state = "dark purple slime extract"
/obj/item/slime_extract/darkpurple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
var/obj/item/stack/sheet/mineral/plasma/O = new(null, 1)
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 150
if(SLIME_ACTIVATE_MAJOR)
var/turf/open/T = get_turf(user)
if(istype(T))
T.atmos_spawn_air("plasma=20")
to_chat(user, "<span class='warning'>You activate [src], and a cloud of plasma bursts out of your skin!</span>")
return 900
/obj/item/slime_extract/orange
name = "orange slime extract"
icon_state = "orange slime extract"
/obj/item/slime_extract/orange/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "<span class='notice'>You activate [src]. You start feeling hot!</span>")
user.reagents.add_reagent("capsaicin",10)
return 150
if(SLIME_ACTIVATE_MAJOR)
user.reagents.add_reagent("phosphorus",5)//
user.reagents.add_reagent("potassium",5) // = smoke, along with any reagents inside mr. slime
user.reagents.add_reagent("sugar",5) //
to_chat(user, "<span class='warning'>You activate [src], and a cloud of smoke bursts out of your skin!</span>")
return 450
/obj/item/slime_extract/yellow
name = "yellow slime extract"
icon_state = "yellow slime extract"
/obj/item/slime_extract/yellow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
if(species.glow_intensity != LUMINESCENT_DEFAULT_GLOW)
to_chat(user, "<span class='warning'>Your glow is already enhanced!</span>")
return
species.update_glow(user, 5)
addtimer(CALLBACK(species, /datum/species/jelly/luminescent.proc/update_glow, user, LUMINESCENT_DEFAULT_GLOW), 600)
to_chat(user, "<span class='notice'>You start glowing brighter.</span>")
if(SLIME_ACTIVATE_MAJOR)
user.visible_message("<span class='warning'>[user]'s skin starts flashing intermittently...</span>", "<span class='warning'>Your skin starts flashing intermittently...</span>")
if(do_after(user, 25, target = user))
empulse(user, 1, 2)
user.visible_message("<span class='warning'>[user]'s skin flashes!</span>", "<span class='warning'>Your skin flashes as you emit an electromagnetic pulse!</span>")
return 600
/obj/item/slime_extract/red
name = "red slime extract"
icon_state = "red slime extract"
/obj/item/slime_extract/red/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "<span class='notice'>You activate [src]. You start feeling fast!</span>")
user.reagents.add_reagent("ephedrine",5)
return 450
if(SLIME_ACTIVATE_MAJOR)
user.visible_message("<span class='warning'>[user]'s skin flashes red for a moment...</span>", "<span class='warning'>Your skin flashes red as you emit rage-inducing pheromones...</span>")
for(var/mob/living/simple_animal/slime/slime in viewers(get_turf(user), null))
slime.rabid = TRUE
slime.visible_message("<span class='danger'>The [slime] is driven into a frenzy!</span>")
return 600
/obj/item/slime_extract/blue
name = "blue slime extract"
icon_state = "blue slime extract"
/obj/item/slime_extract/blue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "<span class='notice'>You activate [src]. Your genome feels more stable!</span>")
user.adjustCloneLoss(-15)
user.reagents.add_reagent("mutadone", 10)
user.reagents.add_reagent("potass_iodide", 10)
return 250
if(SLIME_ACTIVATE_MAJOR)
var/location = get_turf(user)
var/datum/effect_system/foam_spread/s = new()
s.set_up(20, location, user.reagents)
s.start()
user.reagents.clear_reagents()
user.visible_message("<span class='danger'>Foam spews out from [user]'s skin!</span>", "<span class='warning'>You activate [src], and foam bursts out of your skin!</span>")
return 600
/obj/item/slime_extract/darkblue
name = "dark blue slime extract"
icon_state = "dark blue slime extract"
/obj/item/slime_extract/darkblue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "<span class='notice'>You activate [src]. You start feeling colder!</span>")
user.ExtinguishMob()
user.adjust_fire_stacks(-20)
user.reagents.add_reagent("frostoil",4)
user.reagents.add_reagent("cryoxadone",5)
return 100
if(SLIME_ACTIVATE_MAJOR)
var/turf/open/T = get_turf(user)
if(istype(T))
T.atmos_spawn_air("nitrogen=40;TEMP=2.7")
to_chat(user, "<span class='warning'>You activate [src], and icy air bursts out of your skin!</span>")
return 900
/obj/item/slime_extract/pink
name = "pink slime extract"
icon_state = "pink slime extract"
/obj/item/slime_extract/pink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
if(user.gender != MALE && user.gender != FEMALE)
to_chat(user, "<span class='warning'>You can't swap your gender!</span>")
return
if(user.gender == MALE)
user.gender = FEMALE
user.visible_message("<span class='boldnotice'>[user] suddenly looks more feminine!</span>", "<span class='boldwarning'>You suddenly feel more feminine!</span>")
else
user.gender = MALE
user.visible_message("<span class='boldnotice'>[user] suddenly looks more masculine!</span>", "<span class='boldwarning'>You suddenly feel more masculine!</span>")
return 100
if(SLIME_ACTIVATE_MAJOR)
user.visible_message("<span class='warning'>[user]'s skin starts flashing hypnotically...</span>", "<span class='notice'>Your skin starts forming odd patterns, pacifying creatures around you.</span>")
for(var/mob/living/carbon/C in viewers(user, null))
if(C != user)
C.reagents.add_reagent("pax",2)
return 600
/obj/item/slime_extract/green
name = "green slime extract"
icon_state = "green slime extract"
/obj/item/slime_extract/green/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "<span class='warning'>You feel yourself reverting to human form...</span>")
if(do_after(user, 120, target = user))
to_chat(user, "<span class='warning'>You feel human again!</span>")
user.set_species(/datum/species/human)
return
to_chat(user, "<span class='notice'>You stop the transformation.</span>")
if(SLIME_ACTIVATE_MAJOR)
to_chat(user, "<span class='warning'>You feel yourself radically changing your slime type...</span>")
if(do_after(user, 120, target = user))
to_chat(user, "<span class='warning'>You feel different!</span>")
user.set_species(pick(/datum/species/jelly/slime, /datum/species/jelly/stargazer))
return
to_chat(user, "<span class='notice'>You stop the transformation.</span>")
/obj/item/slime_extract/lightpink
name = "light pink slime extract"
icon_state = "light pink slime extract"
/obj/item/slime_extract/lightpink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
var/obj/item/slimepotion/docility/O = new(null, 1)
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 150
if(SLIME_ACTIVATE_MAJOR)
var/obj/item/slimepotion/sentience/O = new(null, 1)
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 450
/obj/item/slime_extract/black
name = "black slime extract"
icon_state = "black slime extract"
/obj/item/slime_extract/black/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "<span class='userdanger'>You feel something <i>wrong</i> inside you...</span>")
user.ForceContractDisease(new /datum/disease/transformation/slime(0))
return 100
if(SLIME_ACTIVATE_MAJOR)
to_chat(user, "<span class='warning'>You feel your own light turning dark...</span>")
if(do_after(user, 120, target = user))
to_chat(user, "<span class='warning'>You feel a longing for darkness.</span>")
user.set_species(pick(/datum/species/shadow))
return
to_chat(user, "<span class='notice'>You stop feeding [src].</span>")
/obj/item/slime_extract/oil
name = "oil slime extract"
icon_state = "oil slime extract"
/obj/item/slime_extract/oil/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "<span class='warning'>You vomit slippery oil.</span>")
playsound(user, 'sound/effects/splat.ogg', 50, 1)
new /obj/effect/decal/cleanable/oil/slippery(get_turf(user))
return 450
if(SLIME_ACTIVATE_MAJOR)
user.visible_message("<span class='warning'>[user]'s skin starts pulsing and glowing ominously...</span>", "<span class='userdanger'>You feel unstable...</span>")
if(do_after(user, 60, target = user))
to_chat(user, "<span class='userdanger'>You explode!</span>")
explosion(get_turf(user), 1 ,3, 6)
user.gib()
return
to_chat(user, "<span class='notice'>You stop feeding [src], and the feeling passes.</span>")
/obj/item/slime_extract/adamantine
name = "adamantine slime extract"
icon_state = "adamantine slime extract"
/obj/item/slime_extract/adamantine/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
if(species.armor > 0)
to_chat(user, "<span class='warning'>Your skin is already hardened!</span>")
return
to_chat(user, "<span class='notice'>You feel your skin harden and become more resistant.</span>")
species.armor += 25
addtimer(CALLBACK(src, .proc/reset_armor, species), 1200)
return 450
if(SLIME_ACTIVATE_MAJOR)
to_chat(user, "<span class='warning'>You feel your body rapidly crystallizing...</span>")
if(do_after(user, 120, target = user))
to_chat(user, "<span class='warning'>You feel solid.</span>")
user.set_species(pick(/datum/species/golem/adamantine))
return
to_chat(user, "<span class='notice'>You stop feeding [src], and your body returns to its slimelike state.</span>")
/obj/item/slime_extract/adamantine/proc/reset_armor(datum/species/jelly/luminescent/species)
if(istype(species))
species.armor -= 25
/obj/item/slime_extract/bluespace
name = "bluespace slime extract"
icon_state = "bluespace slime extract"
var/teleport_ready = FALSE
var/teleport_x = 0
var/teleport_y = 0
var/teleport_z = 0
/obj/item/slime_extract/bluespace/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "<span class='warning'>You feel your body vibrating...</span>")
if(do_after(user, 25, target = user))
to_chat(user, "<span class='warning'>You teleport!</span>")
do_teleport(user, get_turf(user), 6, asoundin = 'sound/weapons/emitter2.ogg')
return 300
if(SLIME_ACTIVATE_MAJOR)
if(!teleport_ready)
to_chat(user, "<span class='notice'>You feel yourself anchoring to this spot...</span>")
var/turf/T = get_turf(user)
teleport_x = T.x
teleport_y = T.y
teleport_z = T.z
teleport_ready = TRUE
else
teleport_ready = FALSE
if(teleport_x && teleport_y && teleport_z)
var/turf/T = locate(teleport_x, teleport_y, teleport_z)
to_chat(user, "<span class='notice'>You snap back to your anchor point!</span>")
do_teleport(user, T, asoundin = 'sound/weapons/emitter2.ogg')
return 450
/obj/item/slime_extract/pyrite
name = "pyrite slime extract"
icon_state = "pyrite slime extract"
/obj/item/slime_extract/pyrite/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
var/chosen = pick(difflist(subtypesof(/obj/item/toy/crayon),typesof(/obj/item/toy/crayon/spraycan)))
var/obj/item/O = new chosen(null)
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 150
if(SLIME_ACTIVATE_MAJOR)
var/chosen = pick(subtypesof(/obj/item/toy/crayon/spraycan))
var/obj/item/O = new chosen(null)
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 250
/obj/item/slime_extract/cerulean
name = "cerulean slime extract"
icon_state = "cerulean slime extract"
/obj/item/slime_extract/cerulean/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
user.reagents.add_reagent("salbutamol",15)
to_chat(user, "<span class='notice'>You feel like you don't need to breathe!</span>")
return 150
if(SLIME_ACTIVATE_MAJOR)
var/turf/open/T = get_turf(user)
if(istype(T))
T.atmos_spawn_air("o2=11;n2=41;TEMP=293.15")
to_chat(user, "<span class='warning'>You activate [src], and fresh air bursts out of your skin!</span>")
return 600
/obj/item/slime_extract/sepia
name = "sepia slime extract"
icon_state = "sepia slime extract"
/obj/item/slime_extract/sepia/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
var/obj/item/device/camera/O = new(null, 1)
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 150
if(SLIME_ACTIVATE_MAJOR)
to_chat(user, "<span class='warning'>You feel time slow down...</span>")
if(do_after(user, 30, target = user))
new /obj/effect/timestop(get_turf(user), 2, 50, list(user))
return 900
/obj/item/slime_extract/rainbow
name = "rainbow slime extract"
icon_state = "rainbow slime extract"
/obj/item/slime_extract/rainbow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
user.dna.features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
user.updateappearance(mutcolor_update=1)
species.update_glow(user)
to_chat(user, "<span class='notice'>You feel different...</span>")
return 100
if(SLIME_ACTIVATE_MAJOR)
var/chosen = pick(subtypesof(/obj/item/slime_extract))
var/obj/item/O = new chosen(null)
if(!user.put_in_active_hand(O))
O.forceMove(user.drop_location())
playsound(user, 'sound/effects/splat.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] spits out [O]!</span>", "<span class='notice'>You spit out [O]!</span>")
return 150
////Slime-derived potions///
/obj/item/slimepotion