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
-24
View File
@@ -442,32 +442,8 @@
update_total()
if(my_atom)
my_atom.on_reagent_change(DEL_REAGENT)
check_ignoreslow(my_atom)
check_gofast(my_atom)
check_goreallyfast(my_atom)
return 1
/datum/reagents/proc/check_ignoreslow(mob/M)
if(ismob(M))
if(M.reagents.has_reagent("morphine"))
return 1
else
M.status_flags &= ~IGNORESLOWDOWN
/datum/reagents/proc/check_gofast(mob/M)
if(ismob(M))
if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola")||M.reagents.has_reagent("stimulants")||M.reagents.has_reagent("ephedrine"))
return 1
else
M.status_flags &= ~GOTTAGOFAST
/datum/reagents/proc/check_goreallyfast(mob/M)
if(ismob(M))
if(M.reagents.has_reagent("methamphetamine"))
return 1
else
M.status_flags &= ~GOTTAGOREALLYFAST
/datum/reagents/proc/update_total()
var/list/cached_reagents = reagent_list
total_volume = 0
@@ -82,12 +82,12 @@
use_power(2500)
/obj/machinery/chem_dispenser/emag_act(mob/user)
if(emagged)
if(obj_flags & EMAGGED)
to_chat(user, "<span class='warning'>[src] has no functional safeties to emag.</span>")
return
to_chat(user, "<span class='notice'>You short out [src]'s safeties.</span>")
dispensable_reagents |= emagged_reagents//add the emagged reagents to the dispensable ones
emagged = TRUE
obj_flags |= EMAGGED
/obj/machinery/chem_dispenser/ex_act(severity, target)
if(severity < 3)
@@ -1282,6 +1282,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "eggnog"
glass_desc = "For enjoying the most wonderful time of the year."
/datum/reagent/consumable/ethanol/narsour
name = "Nar'Sour"
id = "narsour"
@@ -396,13 +396,24 @@
glass_name = "glass of Nuka Cola"
glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland."
/datum/reagent/consumable/nuka_cola/on_mob_add(mob/M)
..()
if(isliving(M))
var/mob/living/L = M
L.add_trait(TRAIT_GOTTAGOFAST, id)
/datum/reagent/consumable/nuka_cola/on_mob_delete(mob/M)
if(isliving(M))
var/mob/living/L = M
L.remove_trait(TRAIT_GOTTAGOFAST, id)
..()
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/M)
M.Jitter(20)
M.set_drugginess(30)
M.dizziness +=5
M.drowsyness = 0
M.AdjustSleeping(-40, FALSE)
M.status_flags |= GOTTAGOFAST
if (M.bodytemperature > BODYTEMP_NORMAL)//310.15 is the normal bodytemp.
M.bodytemperature = max(BODYTEMP_NORMAL, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
..()
@@ -166,6 +166,18 @@
addiction_threshold = 10
metabolization_rate = 0.75 * REAGENTS_METABOLISM
/datum/reagent/drug/methamphetamine/on_mob_add(mob/M)
..()
if(isliving(M))
var/mob/living/L = M
L.add_trait(TRAIT_GOTTAGOREALLYFAST, id)
/datum/reagent/drug/methamphetamine/on_mob_delete(mob/M)
if(isliving(M))
var/mob/living/L = M
L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id)
..()
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/M)
var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.")
if(prob(5))
@@ -174,7 +186,6 @@
M.AdjustKnockdown(-40, 0)
M.AdjustUnconscious(-40, 0)
M.adjustStaminaLoss(-2, 0)
M.status_flags |= GOTTAGOREALLYFAST
M.Jitter(2)
M.adjustBrainLoss(0.25)
if(prob(5))
@@ -41,10 +41,10 @@
M.setOxyLoss(0, 0)
M.radiation = 0
M.heal_bodypart_damage(5,5, 0)
M.adjustToxLoss(-5, 0)
M.adjustToxLoss(-5, 0, TRUE)
M.hallucination = 0
M.setBrainLoss(0)
M.remove_all_disabilities()
M.remove_all_traits()
M.set_blurriness(0)
M.set_blindness(0)
M.SetKnockdown(0, 0)
@@ -134,9 +134,9 @@
M.adjustOxyLoss(-3 * power, 0)
M.adjustBruteLoss(-power, 0)
M.adjustFireLoss(-power, 0)
M.adjustToxLoss(-power, 0)
M.adjustToxLoss(-power, 0, TRUE) //heals TOXINLOVERs
M.adjustCloneLoss(-power, 0)
M.status_flags &= ~DISFIGURED
M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) //fixes common causes for disfiguration
. = 1
metabolization_rate = REAGENTS_METABOLISM * (0.00001 * (M.bodytemperature ** 2) + 0.5)
..()
@@ -152,11 +152,40 @@
/datum/reagent/medicine/clonexadone/on_mob_life(mob/living/M)
if(M.bodytemperature < T0C)
M.adjustCloneLoss(0.00006 * (M.bodytemperature ** 2) - 6, 0)
M.status_flags &= ~DISFIGURED
M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC)
. = 1
metabolization_rate = REAGENTS_METABOLISM * (0.000015 * (M.bodytemperature ** 2) + 0.75)
..()
/datum/reagent/medicine/pyroxadone
name = "Pyroxadone"
id = "pyroxadone"
description = "A mixture of cryoxadone and slime jelly, that apparently inverses the requirement for its activation."
color = "#f7832a"
taste_description = "spicy jelly"
/datum/reagent/medicine/pyroxadone/on_mob_life(mob/living/M)
if(M.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT)
var/power = 0
switch(M.bodytemperature)
if(BODYTEMP_HEAT_DAMAGE_LIMIT to 400)
power = 2
if(400 to 460)
power = 3
else
power = 5
if(M.on_fire)
power *= 2
M.adjustOxyLoss(-2 * power, 0)
M.adjustBruteLoss(-power, 0)
M.adjustFireLoss(-1.5 * power, 0)
M.adjustToxLoss(-power, 0, TRUE)
M.adjustCloneLoss(-power, 0)
M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC)
. = 1
..()
/datum/reagent/medicine/rezadone
name = "Rezadone"
id = "rezadone"
@@ -169,7 +198,7 @@
/datum/reagent/medicine/rezadone/on_mob_life(mob/living/M)
M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that.
M.heal_bodypart_damage(1,1, 0)
M.status_flags &= ~DISFIGURED
M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC)
..()
. = 1
@@ -518,8 +547,19 @@
overdose_threshold = 45
addiction_threshold = 30
/datum/reagent/medicine/ephedrine/on_mob_add(mob/M)
..()
if(isliving(M))
var/mob/living/L = M
L.add_trait(TRAIT_GOTTAGOFAST, id)
/datum/reagent/medicine/ephedrine/on_mob_delete(mob/M)
if(isliving(M))
var/mob/living/L = M
L.remove_trait(TRAIT_GOTTAGOFAST, id)
..()
/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M)
M.status_flags |= GOTTAGOFAST
M.AdjustStun(-20, 0)
M.AdjustKnockdown(-20, 0)
M.AdjustUnconscious(-20, 0)
@@ -587,8 +627,19 @@
overdose_threshold = 30
addiction_threshold = 25
/datum/reagent/medicine/morphine/on_mob_add(mob/M)
..()
if(isliving(M))
var/mob/living/L = M
L.add_trait(TRAIT_IGNORESLOWDOWN, id)
/datum/reagent/medicine/morphine/on_mob_delete(mob/M)
if(isliving(M))
var/mob/living/L = M
L.remove_trait(TRAIT_IGNORESLOWDOWN, id)
..()
/datum/reagent/medicine/morphine/on_mob_life(mob/living/M)
M.status_flags |= IGNORESLOWDOWN
switch(current_cycle)
if(11)
to_chat(M, "<span class='warning'>You start to feel tired...</span>" )
@@ -652,14 +703,14 @@
var/obj/item/organ/eyes/eyes = M.getorganslot(ORGAN_SLOT_EYES)
if (!eyes)
return
if(M.has_disability(DISABILITY_BLIND, EYE_DAMAGE))
if(M.has_trait(TRAIT_BLIND, EYE_DAMAGE))
if(prob(20))
to_chat(M, "<span class='warning'>Your vision slowly returns...</span>")
M.cure_blind(EYE_DAMAGE)
M.cure_nearsighted(EYE_DAMAGE)
M.blur_eyes(35)
else if(M.has_disability(DISABILITY_NEARSIGHT, EYE_DAMAGE))
else if(M.has_trait(TRAIT_NEARSIGHT, EYE_DAMAGE))
to_chat(M, "<span class='warning'>The blackness in your peripheral vision fades.</span>")
M.cure_nearsighted(EYE_DAMAGE)
M.blur_eyes(10)
@@ -750,7 +801,7 @@
M.visible_message("<span class='warning'>[M]'s body convulses a bit, and then falls still once more.</span>")
return
M.visible_message("<span class='warning'>[M]'s body convulses a bit.</span>")
if(!M.suiciding && !(M.has_disability(DISABILITY_NOCLONE)) && !M.hellbound)
if(!M.suiciding && !(M.has_trait(TRAIT_NOCLONE)) && !M.hellbound)
if(!M)
return
if(M.notify_ghost_cloning(source = M))
@@ -829,8 +880,19 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
overdose_threshold = 60
/datum/reagent/medicine/stimulants/on_mob_add(mob/M)
..()
if(isliving(M))
var/mob/living/L = M
L.add_trait(TRAIT_GOTTAGOFAST, id)
/datum/reagent/medicine/stimulants/on_mob_delete(mob/M)
if(isliving(M))
var/mob/living/L = M
L.remove_trait(TRAIT_GOTTAGOFAST, id)
..()
/datum/reagent/medicine/stimulants/on_mob_life(mob/living/M)
M.status_flags |= GOTTAGOFAST
if(M.health < 50 && M.health > 0)
M.adjustOxyLoss(-1*REM, 0)
M.adjustToxLoss(-1*REM, 0)
@@ -979,6 +1041,22 @@
..()
. = 1
/datum/reagent/medicine/regen_jelly
name = "Regenerative Jelly"
id = "regen_jelly"
description = "Gradually regenerates all types of damage, without harming slime anatomy."
reagent_state = LIQUID
color = "#91D865"
taste_description = "jelly"
/datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/M)
M.adjustBruteLoss(-1.5*REM, 0)
M.adjustFireLoss(-1.5*REM, 0)
M.adjustOxyLoss(-1.5*REM, 0)
M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs
. = 1
..()
/datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
name = "Restorative Nanites"
id = "syndicate_nanites"
@@ -1092,8 +1170,19 @@
color = "#C8A5DC"
metabolization_rate = 1
/datum/reagent/medicine/changelingAdrenaline2/on_mob_add(mob/M)
..()
if(isliving(M))
var/mob/living/L = M
L.add_trait(TRAIT_GOTTAGOREALLYFAST, id)
/datum/reagent/medicine/changelingAdrenaline2/on_mob_delete(mob/M)
if(isliving(M))
var/mob/living/L = M
L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id)
..()
/datum/reagent/medicine/changelingAdrenaline2/on_mob_life(mob/living/M as mob)
M.status_flags |= GOTTAGOREALLYFAST
M.adjustToxLoss(2, 0)
. = 1
..()
@@ -1117,8 +1206,6 @@
addiction_threshold = 5
/datum/reagent/medicine/ketrazine/on_mob_life(mob/living/M)
M.status_flags |= IGNORESLOWDOWN
M.status_flags |= GOTTAGOFAST
M.adjustToxLoss(-3*REM, 0)
M.adjustBruteLoss(-5*REM, 0)
M.adjustFireLoss(-5*REM, 0)
@@ -1167,6 +1254,14 @@
..()
/datum/reagent/medicine/ketrazine/on_mob_add(mob/living/M)
M.add_trait(TRAIT_IGNORESLOWDOWN, id)
M.add_trait(TRAIT_GOTTAGOFAST, id)
/datum/reagent/medicine/ketrazine/on_mob_delete(mob/living/M)
M.remove_trait(TRAIT_IGNORESLOWDOWN, id)
M.remove_trait(TRAIT_GOTTAGOFAST, id)
/datum/reagent/medicine/ketrazine/overdose_process(mob/living/M)
if(prob(66))
to_chat(M, "<span class='warning'> You feel a sense of impending doom. </span>")
@@ -219,7 +219,7 @@
if(data >= 75) // 30 units, 135 seconds
if(iscultist(M) || is_servant_of_ratvar(M))
if(iscultist(M))
SSticker.mode.remove_cultist(M.mind, 1, 1)
SSticker.mode.remove_cultist(M.mind, FALSE, TRUE)
else if(is_servant_of_ratvar(M))
remove_servant_of_ratvar(M)
M.jitteriness = 0
@@ -397,17 +397,17 @@
..()
return
/datum/reagent/stableslimetoxin
/datum/reagent/mutationtoxin
name = "Stable Mutation Toxin"
id = "stablemutationtoxin"
description = "A humanizing toxin produced by slimes."
description = "A humanizing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
metabolization_rate = INFINITY //So it instantly removes all of itself
taste_description = "slime"
var/datum/species/race = /datum/species/human
var/mutationtext = "<span class='danger'>The pain subsides. You feel... human.</span>"
/datum/reagent/stableslimetoxin/on_mob_life(mob/living/carbon/human/H)
/datum/reagent/mutationtoxin/on_mob_life(mob/living/carbon/human/H)
..()
if(!istype(H))
return
@@ -417,7 +417,7 @@
addtimer(CALLBACK(src, .proc/mutate, H), 30)
return
/datum/reagent/stableslimetoxin/proc/mutate(mob/living/carbon/human/H)
/datum/reagent/mutationtoxin/proc/mutate(mob/living/carbon/human/H)
if(QDELETED(H))
return
var/current_species = H.dna.species.type
@@ -428,130 +428,158 @@
else
to_chat(H, "<span class='danger'>The pain vanishes suddenly. You feel no different.</span>")
/datum/reagent/stableslimetoxin/classic //The one from plasma on green slimes
/datum/reagent/mutationtoxin/classic //The one from plasma on green slimes
name = "Mutation Toxin"
id = "mutationtoxin"
description = "A corruptive toxin produced by slimes."
description = "A corruptive toxin."
color = "#13BC5E" // rgb: 19, 188, 94
race = /datum/species/jelly/slime
mutationtext = "<span class='danger'>The pain subsides. Your whole body feels like slime.</span>"
/datum/reagent/stableslimetoxin/lizard
/datum/reagent/mutationtoxin/lizard
name = "Lizard Mutation Toxin"
id = "lizardmutationtoxin"
description = "A lizarding toxin produced by slimes."
description = "A lizarding toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/lizard
mutationtext = "<span class='danger'>The pain subsides. You feel... scaly.</span>"
/datum/reagent/stableslimetoxin/fly
/datum/reagent/mutationtoxin/fly
name = "Fly Mutation Toxin"
id = "flymutationtoxin"
description = "An insectifying toxin produced by slimes."
description = "An insectifying toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/fly
mutationtext = "<span class='danger'>The pain subsides. You feel... buzzy.</span>"
/datum/reagent/stableslimetoxin/pod
/datum/reagent/mutationtoxin/moth
name = "Moth Mutation Toxin"
id = "mothmutationtoxin"
description = "A glowing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/moth
mutationtext = "<span class='danger'>The pain subsides. You feel... attracted to light.</span>"
/datum/reagent/mutationtoxin/pod
name = "Podperson Mutation Toxin"
id = "podmutationtoxin"
description = "A vegetalizing toxin produced by slimes."
description = "A vegetalizing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/pod
mutationtext = "<span class='danger'>The pain subsides. You feel... plantlike.</span>"
/datum/reagent/stableslimetoxin/jelly
/datum/reagent/mutationtoxin/jelly
name = "Imperfect Mutation Toxin"
id = "jellymutationtoxin"
description = "An jellyfying toxin produced by slimes."
description = "An jellyfying toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/jelly
mutationtext = "<span class='danger'>The pain subsides. You feel... wobbly.</span>"
/datum/reagent/stableslimetoxin/golem
/datum/reagent/mutationtoxin/golem
name = "Golem Mutation Toxin"
id = "golemmutationtoxin"
description = "A crystal toxin produced by slimes."
description = "A crystal toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/golem/random
mutationtext = "<span class='danger'>The pain subsides. You feel... rocky.</span>"
/datum/reagent/stableslimetoxin/abductor
/datum/reagent/mutationtoxin/abductor
name = "Abductor Mutation Toxin"
id = "abductormutationtoxin"
description = "An alien toxin produced by slimes."
description = "An alien toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/abductor
mutationtext = "<span class='danger'>The pain subsides. You feel... alien.</span>"
/datum/reagent/stableslimetoxin/android
/datum/reagent/mutationtoxin/android
name = "Android Mutation Toxin"
id = "androidmutationtoxin"
description = "A robotic toxin produced by slimes."
description = "A robotic toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/android
mutationtext = "<span class='danger'>The pain subsides. You feel... artificial.</span>"
//BLACKLISTED RACES
/datum/reagent/stableslimetoxin/skeleton
/datum/reagent/mutationtoxin/skeleton
name = "Skeleton Mutation Toxin"
id = "skeletonmutationtoxin"
description = "A scary toxin produced by slimes."
description = "A scary toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/skeleton
mutationtext = "<span class='danger'>The pain subsides. You feel... spooky.</span>"
/datum/reagent/stableslimetoxin/zombie
/datum/reagent/mutationtoxin/zombie
name = "Zombie Mutation Toxin"
id = "zombiemutationtoxin"
description = "An undead toxin produced by slimes."
description = "An undead toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/zombie //Not the infectious kind. The days of xenobio zombie outbreaks are long past.
mutationtext = "<span class='danger'>The pain subsides. You feel... undead.</span>"
/datum/reagent/stableslimetoxin/ash
/datum/reagent/mutationtoxin/ash
name = "Ash Mutation Toxin"
id = "ashmutationtoxin"
description = "An ashen toxin produced by slimes."
description = "An ashen toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/lizard/ashwalker
mutationtext = "<span class='danger'>The pain subsides. You feel... savage.</span>"
//DANGEROUS RACES
/datum/reagent/stableslimetoxin/shadow
/datum/reagent/mutationtoxin/shadow
name = "Shadow Mutation Toxin"
id = "shadowmutationtoxin"
description = "A dark toxin produced by slimes."
description = "A dark toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/shadow
mutationtext = "<span class='danger'>The pain subsides. You feel... darker.</span>"
/datum/reagent/stableslimetoxin/plasma
/datum/reagent/mutationtoxin/plasma
name = "Plasma Mutation Toxin"
id = "plasmamutationtoxin"
description = "A plasma-based toxin produced by slimes."
description = "A plasma-based toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/plasmaman
mutationtext = "<span class='danger'>The pain subsides. You feel... flammable.</span>"
/datum/reagent/stableslimetoxin/unstable //PSYCH
name = "Unstable Mutation Toxin"
id = "unstablemutationtoxin"
description = "An unstable and unpredictable corruptive toxin produced by slimes."
/datum/reagent/slime_toxin
name = "Slime Mutation Toxin"
id = "slime_toxin"
description = "A toxin that turns organic material into slime."
color = "#5EFF3B" //RGB: 94, 255, 59
mutationtext = "<span class='danger'>The pain subsides. You feel... different.</span>"
taste_description = "slime"
metabolization_rate = 0.2
/datum/reagent/stableslimetoxin/unstable/on_mob_life(mob/living/carbon/human/H)
var/list/possible_morphs = list()
for(var/type in subtypesof(/datum/species))
var/datum/species/S = type
if(initial(S.blacklisted))
continue
possible_morphs += S
race = pick(possible_morphs)
/datum/reagent/slime_toxin/on_mob_life(mob/living/carbon/human/H)
..()
if(!istype(H))
return
if(!H.dna || !H.dna.species || !(H.dna.species.species_traits & SPECIES_ORGANIC))
return
if(isjellyperson(H))
to_chat(H, "<span class='warning'>Your jelly shifts and morphs, turning you into another subspecies!</span>")
var/species_type = pick(subtypesof(/datum/species/jelly))
H.set_species(species_type)
H.reagents.del_reagent(id)
switch(current_cycle)
if(1 to 6)
if(prob(10))
to_chat(H, "<span class='warning'>[pick("You don't feel very well.", "Your skin feels a little slimy.")]</span>")
if(7 to 12)
if(prob(10))
to_chat(H, "<span class='warning'>[pick("Your appendages are melting away.", "Your limbs begin to lose their shape.")]</span>")
if(13 to 19)
if(prob(10))
to_chat(H, "<span class='warning'>[pick("You feel your internal organs turning into slime.", "You feel very slimelike.")]</span>")
if(20 to INFINITY)
var/species_type = pick(subtypesof(/datum/species/jelly))
H.set_species(species_type)
H.reagents.del_reagent(id)
to_chat(H, "<span class='warning'>You've become \a jellyperson!</span>")
/datum/reagent/mulligan
name = "Mulligan Toxin"
@@ -1175,8 +1203,19 @@
color = "E1A116"
taste_description = "sourness"
/datum/reagent/stimulum/on_mob_add(mob/M)
..()
if(isliving(M))
var/mob/living/L = M
L.add_trait(TRAIT_GOTTAGOFAST, id)
/datum/reagent/stimulum/on_mob_delete(mob/M)
if(isliving(M))
var/mob/living/L = M
L.remove_trait(TRAIT_GOTTAGOFAST, id)
..()
/datum/reagent/stimulum/on_mob_life(mob/living/M) // Has a speedup, and the anti-stun effects of nicotine.
M.status_flags |= GOTTAGOFAST
M.AdjustStun(-20, 0)
M.AdjustKnockdown(-20, 0)
M.AdjustUnconscious(-20, 0)
@@ -1194,8 +1233,16 @@
color = "90560B"
taste_description = "burning"
/datum/reagent/nitryl/on_mob_life(mob/living/M) //Has just a speedup
M.status_flags |= GOTTAGOFAST
/datum/reagent/nitryl/on_mob_add(mob/M)
..()
if(isliving(M))
var/mob/living/L = M
L.add_trait(TRAIT_GOTTAGOFAST, id)
/datum/reagent/nitryl/on_mob_delete(mob/M)
if(isliving(M))
var/mob/living/L = M
L.remove_trait(TRAIT_GOTTAGOFAST, id)
..()
/////////////////////////Coloured Crayon Powder////////////////////////////
@@ -1709,10 +1756,10 @@
..()
if(isliving(M))
var/mob/living/L = M
L.add_disability(DISABILITY_PACIFISM, CHEMICAL_DISABILITY)
L.add_trait(TRAIT_PACIFISM, id)
/datum/reagent/pax/on_mob_delete(mob/M)
if(isliving(M))
var/mob/living/L = M
L.remove_disability(DISABILITY_PACIFISM, CHEMICAL_DISABILITY)
..()
L.remove_trait(TRAIT_PACIFISM, id)
..()
@@ -226,3 +226,63 @@
M.electrocute_act(rand(5,20), "Teslium in their body", 1, 1) //Override because it's caused from INSIDE of you
playsound(M, "sparks", 50, 1)
..()
/datum/reagent/teslium/energized_jelly
name = "Energized Jelly"
id = "energized_jelly"
description = "Electrically-charged jelly. Boosts jellypeople's nervous system, but only shocks other lifeforms."
reagent_state = LIQUID
color = "#CAFF43"
taste_description = "jelly"
/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/M)
if(isjellyperson(M))
shock_timer = 0 //immune to shocks
M.AdjustStun(-40, 0)
M.AdjustKnockdown(-40, 0)
M.AdjustUnconscious(-40, 0)
M.adjustStaminaLoss(-2, 0)
if(isluminescent(M))
var/mob/living/carbon/human/H = M
var/datum/species/jelly/luminescent/L = H.dna.species
L.extract_cooldown = max(0, L.extract_cooldown - 20)
..()
/datum/reagent/firefighting_foam
name = "Firefighting Foam"
id = "firefighting_foam"
description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on NT vessels."
reagent_state = LIQUID
color = "#A6FAFF55"
taste_description = "the inside of a fire extinguisher"
/datum/reagent/firefighting_foam/reaction_turf(turf/open/T, reac_volume)
if (!istype(T))
return
if(reac_volume >= 1)
var/obj/effect/particle_effect/foam/firefighting/F = (locate(/obj/effect/particle_effect/foam) in T)
if(!F)
F = new(T)
else if(istype(F))
F.lifetime = initial(F.lifetime) //reduce object churn a little bit when using smoke by keeping existing foam alive a bit longer
var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in T)
if(hotspot && !isspaceturf(T))
if(T.air)
var/datum/gas_mixture/G = T.air
if(G.temperature > T20C)
G.temperature = max(G.temperature/2,T20C)
G.react()
qdel(hotspot)
/datum/reagent/firefighting_foam/reaction_obj(obj/O, reac_volume)
O.extinguish()
/datum/reagent/firefighting_foam/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(!istype(M))
return
if(method in list(VAPOR, TOUCH))
M.adjust_fire_stacks(-reac_volume)
M.ExtinguishMob()
..()
@@ -143,7 +143,7 @@
taste_description = "mint"
/datum/reagent/toxin/minttoxin/on_mob_life(mob/living/M)
if(M.has_disability(DISABILITY_FAT))
if(M.has_trait(TRAIT_FAT))
M.gib()
return ..()
@@ -164,19 +164,23 @@
toxpwr = 0.5
taste_description = "death"
/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M)
M.status_flags |= FAKEDEATH
M.adjustOxyLoss(0.5*REM, 0)
M.Knockdown(100, 0)
M.silent = max(M.silent, 5)
M.tod = worldtime2text()
/datum/reagent/toxin/zombiepowder/on_mob_add(mob/M)
..()
. = 1
if(isliving(M))
var/mob/living/L = M
L.fakedeath(id)
/datum/reagent/toxin/zombiepowder/on_mob_delete(mob/M)
M.status_flags &= ~FAKEDEATH
if(isliving(M))
var/mob/living/L = M
L.cure_fakedeath(id)
..()
/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M)
M.adjustOxyLoss(0.5*REM, 0)
..()
. = 1
/datum/reagent/toxin/mindbreaker
name = "Mindbreaker Toxin"
id = "mindbreaker"
+6 -21
View File
@@ -21,18 +21,8 @@
return
//I recommend you set the result amount to the total volume of all components.
/datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_faction = "chemicalsummon")
var/static/list/chemical_mob_spawn_meancritters = list() // list of possible hostile mobs
var/static/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs
/datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_class = HOSTILE_SPAWN, mob_faction = "chemicalsummon")
if(holder && holder.my_atom)
if (chemical_mob_spawn_meancritters.len <= 0 || chemical_mob_spawn_nicecritters.len <= 0)
for (var/T in typesof(/mob/living/simple_animal))
var/mob/living/simple_animal/SA = T
switch(initial(SA.gold_core_spawnable))
if(HOSTILE_SPAWN)
chemical_mob_spawn_meancritters += T
if(FRIENDLY_SPAWN)
chemical_mob_spawn_nicecritters += T
var/atom/A = holder.my_atom
var/turf/T = get_turf(A)
var/message = "A [reaction_name] reaction has occurred in [get_area_name(T)] [ADMIN_COORDJMP(T)]"
@@ -50,18 +40,13 @@
for(var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null))
C.flash_act()
for(var/i = 1, i <= amount_to_spawn, i++)
var/chosen
if (reaction_name == "Friendly Gold Slime")
chosen = pick(chemical_mob_spawn_nicecritters)
else
chosen = pick(chemical_mob_spawn_meancritters)
var/spawnloc = get_turf(holder.my_atom)
var/mob/living/simple_animal/C = new chosen(spawnloc)
C.faction |= mob_faction
for(var/i in 1 to amount_to_spawn)
var/mob/living/simple_animal/S = create_random_mob(get_turf(holder.my_atom), mob_class)
S.faction |= mob_faction
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))
step(S, pick(NORTH,SOUTH,EAST,WEST))
/datum/chemical_reaction/proc/goonchem_vortex(turf/T, setting_type, range)
for(var/atom/movable/X in orange(range, T))
@@ -184,6 +184,12 @@
results = list("cryoxadone" = 3)
required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1)
/datum/chemical_reaction/pyroxadone
name = "Pyroxadone"
id = "pyroxadone"
results = list("pyroxadone" = 2)
required_reagents = list("cryoxadone" = 1, "slimejelly" = 1)
/datum/chemical_reaction/clonexadone
name = "Clonexadone"
id = "clonexadone"
@@ -221,6 +227,12 @@
results = list("tricordrazine" = 3)
required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1)
/datum/chemical_reaction/regen_jelly
name = "Regenerative Jelly"
id = "regen_jelly"
results = list("regen_jelly" = 2)
required_reagents = list("tricordrazine" = 1, "slimejelly" = 1)
/datum/chemical_reaction/corazone
name = "Corazone"
id = "corazone"
@@ -125,96 +125,12 @@
required_reagents = list("ammonia" = 2, "nitrogen" = 1, "oxygen" = 2)
required_temp = 525
////////////////////////////////// Mutation Toxins ///////////////////////////////////
/datum/chemical_reaction/stable_mutation_toxin
name = "Stable Mutation Toxin"
id = "stablemutationtoxin"
results = list("stablemutationtoxin" = 1)
required_reagents = list("unstablemutationtoxin" = 1, "blood" = 1) //classic
/datum/chemical_reaction/lizard_mutation_toxin
name = "Lizard Mutation Toxin"
id = "lizardmutationtoxin"
results = list("lizardmutationtoxin" = 1)
required_reagents = list("unstablemutationtoxin" = 1, "radium" = 1) //mutant
/datum/chemical_reaction/fly_mutation_toxin
name = "Fly Mutation Toxin"
id = "flymutationtoxin"
results = list("flymutationtoxin" = 1)
required_reagents = list("unstablemutationtoxin" = 1, "mutagen" = 1) //VERY mutant
/datum/chemical_reaction/jelly_mutation_toxin
name = "Imperfect Mutation Toxin"
id = "jellymutationtoxin"
results = list("jellymutationtoxin" = 1)
required_reagents = list("unstablemutationtoxin" = 1, "slimejelly" = 1) //why would you even make this
/datum/chemical_reaction/abductor_mutation_toxin
name = "Abductor Mutation Toxin"
id = "abductormutationtoxin"
results = list("abductormutationtoxin" = 1)
required_reagents = list("unstablemutationtoxin" = 1, "morphine" = 1)
/datum/chemical_reaction/android_mutation_toxin
name = "Android Mutation Toxin"
id = "androidmutationtoxin"
results = list("androidmutationtoxin" = 1)
required_reagents = list("unstablemutationtoxin" = 1, "teslium" = 1) //beep boop
/datum/chemical_reaction/pod_mutation_toxin
name = "Podperson Mutation Toxin"
id = "podmutationtoxin"
results = list("podmutationtoxin" = 1)
required_reagents = list("unstablemutationtoxin" = 1, "eznutriment" = 1) //plant food
/datum/chemical_reaction/golem_mutation_toxin
name = "Golem Mutation Toxin"
id = "golemmutationtoxin"
results = list("golemmutationtoxin" = 1)
required_reagents = list("unstablemutationtoxin" = 1, "silver" = 1) //not too hard to get but also not just there in xenobio
//BLACKLISTED RACES
/datum/chemical_reaction/skeleton_mutation_toxin
name = "Skeleton Mutation Toxin"
id = "skeletonmutationtoxin"
results = list("skeletonmutationtoxin" = 1)
required_reagents = list("amutationtoxin" = 1, "milk" = 1) //good for yer bones
/datum/chemical_reaction/zombie_mutation_toxin
name = "Zombie Mutation Toxin"
id = "zombiemutationtoxin"
results = list("zombiemutationtoxin" = 1)
required_reagents = list("amutationtoxin" = 1, "toxin" = 1)
/datum/chemical_reaction/ash_mutation_toxin //ash lizard
name = "Ash Mutation Toxin"
id = "ashmutationtoxin"
results = list("ashmutationtoxin" = 1)
required_reagents = list("amutationtoxin" = 1, "lizardmutationtoxin" = 1, "ash" = 1)
//DANGEROUS RACES
/datum/chemical_reaction/plasma_mutation_toxin
name = "Plasma Mutation Toxin"
id = "plasmamutationtoxin"
results = list("plasmamutationtoxin" = 1)
required_reagents = list("skeletonmutationtoxin" = 1, "plasma" = 1, "uranium" = 1) //this is very fucking powerful, so it's hard to make
/datum/chemical_reaction/shadow_mutation_toxin
name = "Shadow Mutation Toxin"
id = "shadowmutationtoxin"
results = list("shadowmutationtoxin" = 1)
required_reagents = list("amutationtoxin" = 1, "liquid_dark_matter" = 1, "holywater" = 1)
//Technically a mutation toxin
/datum/chemical_reaction/mulligan
name = "Mulligan"
id = "mulligan"
results = list("mulligan" = 1)
required_reagents = list("stablemutationtoxin" = 1, "mutagen" = 1)
required_reagents = list("slime_toxin" = 1, "mutagen" = 1)
////////////////////////////////// VIROLOGY //////////////////////////////////////////
@@ -379,6 +379,13 @@
mix_message = "<span class='danger'>A jet of sparks flies from the mixture as it merges into a flickering slurry.</span>"
required_temp = 400
/datum/chemical_reaction/energized_jelly
name = "Energized Jelly"
id = "energized_jelly"
results = list("energized_jelly" = 2)
required_reagents = list("slimejelly" = 1, "teslium" = 1)
mix_message = "<span class='danger'>The slime jelly starts glowing intermittently.</span>"
/datum/chemical_reaction/reagent_explosion/teslium_lightning
name = "Teslium Destabilization"
id = "teslium_lightning"
@@ -418,3 +425,11 @@
strengthdiv = 7
required_temp = 575
modifier = 1
/datum/chemical_reaction/firefighting_foam
name = "Firefighting Foam"
id = "firefighting_foam"
results = list("firefighting_foam" = 3)
required_reagents = list("stabilizing_agent" = 1,"fluorosurfactant" = 1,"carbon" = 1)
required_temp = 200
is_cold_recipe = 1
@@ -48,21 +48,27 @@
//Green
/datum/chemical_reaction/slime/slimemutate
name = "Mutation Toxin"
id = "mutationtoxin"
results = list("mutationtoxin" = 1)
id = "slimetoxin"
results = list("slime_toxin" = 1)
required_reagents = list("plasma" = 1)
required_other = 1
required_container = /obj/item/slime_extract/green
//Mutated Green
/datum/chemical_reaction/slime/slimemutate_unstable
name = "Unstable Mutation Toxin"
id = "unstablemutationtoxin"
results = list("unstablemutationtoxin" = 1)
/datum/chemical_reaction/slime/slimehuman
name = "Human Mutation Toxin"
id = "humanmuttoxin"
results = list("stablemutationtoxin" = 1)
required_reagents = list("blood" = 1)
required_other = 1
required_container = /obj/item/slime_extract/green
/datum/chemical_reaction/slime/slimelizard
name = "Lizard Mutation Toxin"
id = "lizardmuttoxin"
results = list("lizardmutationtoxin" = 1)
required_reagents = list("radium" = 1)
required_other = 1
required_container = /obj/item/slime_extract/green
mix_message = "<span class='info'>The mixture rapidly expands and contracts, its appearance shifting into a sickening green.</span>"
//Metal
/datum/chemical_reaction/slime/slimemetal
@@ -110,7 +116,7 @@
/datum/chemical_reaction/slime/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently!</span>")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime"), 50)
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime", HOSTILE_SPAWN), 50)
/datum/chemical_reaction/slime/slimemobspawn/lesser
name = "Slime Crit Lesser"
@@ -119,7 +125,7 @@
/datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently!</span>")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", "neutral"), 50)
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50)
/datum/chemical_reaction/slime/slimemobspawn/friendly
name = "Slime Crit Friendly"
@@ -128,7 +134,7 @@
/datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("<span class='danger'>The slime extract begins to vibrate adorably!</span>")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", "neutral"), 50)
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50)
//Silver
/datum/chemical_reaction/slime/slimebork
@@ -140,7 +146,6 @@
/datum/chemical_reaction/slime/slimebork/on_reaction(datum/reagents/holder)
//BORK BORK BORK
var/list/borks = getborks()
var/turf/T = get_turf(holder.my_atom)
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
@@ -149,7 +154,7 @@
C.flash_act()
for(var/i in 1 to 4 + rand(1,2))
var/chosen = pick(borks)
var/chosen = getbork()
var/obj/B = new chosen(T)
if(prob(5))//Fry it!
var/obj/item/reagent_containers/food/snacks/deepfryholder/fried
@@ -161,36 +166,16 @@
step(B, pick(NORTH,SOUTH,EAST,WEST))
..()
/datum/chemical_reaction/slime/slimebork/proc/getborks()
var/list/blocked = list(/obj/item/reagent_containers/food/snacks,
/obj/item/reagent_containers/food/snacks/store/bread,
/obj/item/reagent_containers/food/snacks/breadslice,
/obj/item/reagent_containers/food/snacks/store/cake,
/obj/item/reagent_containers/food/snacks/cakeslice,
/obj/item/reagent_containers/food/snacks/store,
/obj/item/reagent_containers/food/snacks/pie,
/obj/item/reagent_containers/food/snacks/kebab,
/obj/item/reagent_containers/food/snacks/pizza,
/obj/item/reagent_containers/food/snacks/pizzaslice,
/obj/item/reagent_containers/food/snacks/salad,
/obj/item/reagent_containers/food/snacks/meat,
/obj/item/reagent_containers/food/snacks/meat/slab,
/obj/item/reagent_containers/food/snacks/soup,
/obj/item/reagent_containers/food/snacks/grown,
/obj/item/reagent_containers/food/snacks/grown/mushroom,
/obj/item/reagent_containers/food/snacks/deepfryholder
)
blocked |= typesof(/obj/item/reagent_containers/food/snacks/customizable)
return typesof(/obj/item/reagent_containers/food/snacks) - blocked
/datum/chemical_reaction/slime/slimebork/proc/getbork()
return get_random_food()
/datum/chemical_reaction/slime/slimebork/drinks
name = "Slime Bork 2"
id = "m_tele4"
required_reagents = list("water" = 1)
/datum/chemical_reaction/slime/slimebork/drinks/getborks()
return subtypesof(/obj/item/reagent_containers/food/drinks)
/datum/chemical_reaction/slime/slimebork/drinks/getbork()
return get_random_drink()
//Blue
/datum/chemical_reaction/slime/slimefrost
@@ -344,11 +329,11 @@
new /obj/item/slimepotion/steroid(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/slimejam
name = "Slime Jam"
id = "m_jam"
results = list("slimejelly" = 10)
required_reagents = list("sugar" = 1)
/datum/chemical_reaction/slime/slimeregen
name = "Slime Regen"
id = "m_regen"
results = list("regen_jelly" = 5)
required_reagents = list("blood" = 1)
required_container = /obj/item/slime_extract/purple
required_other = 1