Merge branch 'master' into buttbots2

Conflicts:
	code/defines/procs/AStar.dm
	code/modules/mob/living/simple_animal/bot/cleanbot.dm
	code/modules/mob/living/simple_animal/bot/medbot.dm
	paradise.dme
This commit is contained in:
Tastyfish
2016-03-31 13:28:05 -04:00
245 changed files with 6723 additions and 4456 deletions
+1 -1
View File
@@ -12,7 +12,7 @@
var/vol_temp
// see libs/IconProcs/IconProcs.dm
for(var/datum/reagent/reagent in reagent_list)
if(reagent.id == "blood" && reagent.data["blood_colour"])
if(reagent.id == "blood" && reagent.data && reagent.data["blood_colour"])
reagent_color = reagent.data["blood_colour"]
else
reagent_color = reagent.color
+13 -44
View File
@@ -304,13 +304,6 @@ var/const/INGEST = 2
if(!C.no_message)
M << "\blue \icon[my_atom] [C.mix_message]"
/* if(istype(my_atom, /obj/item/slime_core))
var/obj/item/slime_core/ME = my_atom
ME.Uses--
if(ME.Uses <= 0) // give the notification that the slime core is dead
for(var/mob/M in viewers(4, get_turf(my_atom)) )
M << "\blue \icon[my_atom] The innards begin to boil!"
*/
if(istype(my_atom, /obj/item/slime_extract))
var/obj/item/slime_extract/ME2 = my_atom
ME2.Uses--
@@ -435,6 +428,11 @@ var/const/INGEST = 2
else R.reaction_obj(A, R.volume+volume_modifier)
return
/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15)
for(var/r_id in list_reagents)
var/amt = list_reagents[r_id]
add_reagent(r_id, amt, data)
/datum/reagents/proc/add_reagent(var/reagent, var/amount, var/list/data=null, var/reagtemp = 300)
if(!isnum(amount)) return 1
update_total()
@@ -449,33 +447,7 @@ var/const/INGEST = 2
R.volume += amount
update_total()
my_atom.on_reagent_change()
/*
// mix dem viruses
if(R.id == "blood" && reagent == "blood")
if(R.data && data)
if(R.data["viruses"] || data["viruses"])
var/list/mix1 = R.data["viruses"]
var/list/mix2 = data["viruses"]
// Stop issues with the list changing during mixing.
var/list/to_mix = list()
for(var/datum/disease/advance/AD in mix1)
to_mix += AD
for(var/datum/disease/advance/AD in mix2)
to_mix += AD
var/datum/disease/advance/AD = Advance_Mix(to_mix)
if(AD)
var/list/preserve = list(AD)
for(var/D in R.data["viruses"])
if(!istype(D, /datum/disease/advance))
preserve += D
R.data["viruses"] = preserve
*/
R.on_merge(data)
handle_reactions()
return 0
@@ -486,13 +458,10 @@ var/const/INGEST = 2
reagent_list += R
R.holder = src
R.volume = amount
// SetViruses(R, data) // Includes setting data
if(data) R.data = data
//debug
//world << "Adding data"
//for(var/D in R.data)
// world << "Container data: [D] = [R.data[D]]"
//debug
if(data)
R.data = data
R.on_new(data)
update_total()
my_atom.on_reagent_change()
handle_reactions()
@@ -605,9 +574,9 @@ var/const/INGEST = 2
// Technically we should probably copy all data lists, but
// that could possibly eat up a lot of memory needlessly
// if most data lists are read-only.
if (trans_data["virus2"])
var/list/v = trans_data["virus2"]
trans_data["virus2"] = v.Copy()
if(trans_data["viruses"])
var/list/v = trans_data["viruses"]
trans_data["viruses"] = v.Copy()
return trans_data
+181 -3
View File
@@ -5,10 +5,188 @@
reagent_state = SOLID
color = "#FFFFFF"
/datum/reagent/spider_eggs/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
/datum/reagent/spider_eggs/on_mob_life(mob/living/M)
if(volume > 2.5)
if(iscarbon(M))
if(!M.get_int_organ(/obj/item/organ/internal/body_egg))
new/obj/item/organ/internal/body_egg/spider_eggs(M) //Yes, even Xenos can fall victim to the plague that is spider infestation.
..()
..()
//virus food
/datum/reagent/virus_food
name = "Virus Food"
id = "virusfood"
description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce."
reagent_state = LIQUID
nutriment_factor = 2 * REAGENTS_METABOLISM
color = "#899613" // rgb: 137, 150, 19
/datum/reagent/virus_food/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor * REAGENTS_EFFECT_MULTIPLIER
..()
/datum/reagent/mutagen/mutagenvirusfood
name = "mutagenic agar"
id = "mutagenvirusfood"
description = "mutates blood"
color = "#A3C00F" // rgb: 163,192,15
/datum/reagent/mutagen/mutagenvirusfood/sugar
name = "sucrose agar"
id = "sugarvirusfood"
color = "#41B0C0" // rgb: 65,176,192
/datum/reagent/diphenhydramine/diphenhydraminevirusfood
name = "virus rations"
id = "diphenhydraminevirusfood"
description = "mutates blood"
color = "#D18AA5" // rgb: 209,138,165
/datum/reagent/plasma/plasmavirusfood
name = "virus plasma"
id = "plasmavirusfood"
description = "mutates blood"
color = "#A69DA9" // rgb: 166,157,169
/datum/reagent/plasma/plasmavirusfood/weak
name = "weakened virus plasma"
id = "weakplasmavirusfood"
color = "#CEC3C6" // rgb: 206,195,198
//reactions
/datum/chemical_reaction/virus_food
name = "Virus Food"
id = "virusfood"
result = "virusfood"
required_reagents = list("water" = 1, "milk" = 1, "oxygen" = 1)
result_amount = 3
/datum/chemical_reaction/virus_food_mutagen
name = "mutagenic agar"
id = "mutagenvirusfood"
result = "mutagenvirusfood"
required_reagents = list("mutagen" = 1, "virusfood" = 1)
result_amount = 1
/datum/chemical_reaction/virus_food_diphenhydramine
name = "virus rations"
id = "diphenhydraminevirusfood"
result = "diphenhydraminevirusfood"
required_reagents = list("diphenhydramine" = 1, "virusfood" = 1)
result_amount = 1
/datum/chemical_reaction/virus_food_plasma
name = "virus plasma"
id = "plasmavirusfood"
result = "plasmavirusfood"
required_reagents = list("plasma" = 1, "virusfood" = 1)
result_amount = 1
/datum/chemical_reaction/virus_food_plasma_diphenhydramine
name = "weakened virus plasma"
id = "weakplasmavirusfood"
result = "weakplasmavirusfood"
required_reagents = list("diphenhydramine" = 1, "plasmavirusfood" = 1)
result_amount = 2
/datum/chemical_reaction/virus_food_mutagen_sugar
name = "sucrose agar"
id = "sugarvirusfood"
result = "sugarvirusfood"
required_reagents = list("sugar" = 1, "mutagenvirusfood" = 1)
result_amount = 2
/datum/chemical_reaction/virus_food_mutagen_salineglucose
name = "sucrose agar"
id = "salineglucosevirusfood"
result = "sugarvirusfood"
required_reagents = list("salglu_solution" = 1, "mutagenvirusfood" = 1)
result_amount = 2
//mix virus
/datum/chemical_reaction/mix_virus
name = "Mix Virus"
id = "mixvirus"
required_reagents = list("virusfood" = 1)
required_catalysts = list("blood" = 1)
var/level_min = 0
var/level_max = 2
/datum/chemical_reaction/mix_virus/on_reaction(datum/reagents/holder, created_volume)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
if(B && B.data)
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
if(D)
D.Evolve(level_min, level_max)
/datum/chemical_reaction/mix_virus/mix_virus_2
name = "Mix Virus 2"
id = "mixvirus2"
required_reagents = list("mutagen" = 1)
level_min = 2
level_max = 4
/datum/chemical_reaction/mix_virus/mix_virus_3
name = "Mix Virus 3"
id = "mixvirus3"
required_reagents = list("plasma" = 1)
level_min = 4
level_max = 6
/datum/chemical_reaction/mix_virus/mix_virus_4
name = "Mix Virus 4"
id = "mixvirus4"
required_reagents = list("uranium" = 1)
level_min = 5
level_max = 6
/datum/chemical_reaction/mix_virus/mix_virus_5
name = "Mix Virus 5"
id = "mixvirus5"
required_reagents = list("mutagenvirusfood" = 1)
level_min = 3
level_max = 3
/datum/chemical_reaction/mix_virus/mix_virus_6
name = "Mix Virus 6"
id = "mixvirus6"
required_reagents = list("sugarvirusfood" = 1)
level_min = 4
level_max = 4
/datum/chemical_reaction/mix_virus/mix_virus_7
name = "Mix Virus 7"
id = "mixvirus7"
required_reagents = list("weakplasmavirusfood" = 1)
level_min = 5
level_max = 5
/datum/chemical_reaction/mix_virus/mix_virus_8
name = "Mix Virus 8"
id = "mixvirus8"
required_reagents = list("plasmavirusfood" = 1)
level_min = 6
level_max = 6
/datum/chemical_reaction/mix_virus/mix_virus_9
name = "Mix Virus 9"
id = "mixvirus9"
required_reagents = list("diphenhydraminevirusfood" = 1)
level_min = 1
level_max = 1
/datum/chemical_reaction/mix_virus/rem_virus
name = "Devolve Virus"
id = "remvirus"
required_reagents = list("diphenhydramine" = 1)
required_catalysts = list("blood" = 1)
/datum/chemical_reaction/mix_virus/rem_virus/on_reaction(datum/reagents/holder, created_volume)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
if(B && B.data)
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
if(D)
D.Devolve()
+17 -4
View File
@@ -39,6 +39,7 @@
slur_start = 30
brawl_start = 40
confused_start = 100
alcohol_perc = 0.4
/datum/chemical_reaction/applejack
name = "applejack"
@@ -55,6 +56,7 @@
id = "jackrose"
description = "A classic cocktail that had fallen out of fashion, but never out of taste,"
color = "#664300"
alcohol_perc = 0.4
/datum/chemical_reaction/jackrose
name = "jackrose"
@@ -79,12 +81,13 @@
metabolization_rate = 0.4
vomit_start = INFINITY //
blur_start = INFINITY //
pass_out = INFINITY //INFINITY, so that IPCs don't puke and stuff
pass_out = INFINITY //INFINITY, so that IPCs don't puke and stuff
var/spark_start = 50 //amount absorbed after which mob starts sparking
var/collapse_start = 150 //amount absorbed after wich mob starts sparking and collapsing (DOUBLE THE SPARKS, DOUBLE THE FUN)
var/collapse_start = 80 //amount absorbed after wich mob starts sparking and collapsing (DOUBLE THE SPARKS, DOUBLE THE FUN)
var/braindamage_start = 250 //amount absorbed after which mob starts taking a small amount of brain damage
/datum/chemical_reaction/synthanol
name = "Synthanol"
id = "synthanol"
@@ -96,7 +99,11 @@
/datum/reagent/ethanol/synthanol/on_mob_life(var/mob/living/M as mob, var/alien)
var/d = data
var/d = 0
// make all the beverages work together
for(var/datum/reagent/ethanol/synthanol/A in holder.reagent_list)
if(isnum(A.current_cycle)) d += A.current_cycle * A.alcohol_perc
if(M.isSynthetic()) //works normally on synthetics
if(d >= spark_start && prob(25))
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
@@ -107,7 +114,7 @@
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(3, 1, M)
s.start()
if(d >= braindamage_start && prob(33))
if(d >= braindamage_start && prob(10))
M.adjustBrainLoss(1)
else
@@ -131,6 +138,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "An oily substance that an IPC could technically consider a 'drink'."
reagent_state = LIQUID
color = "#363636"
alcohol_perc = 0.5
/datum/chemical_reaction/synthanol/robottears
name = "Robot Tears"
@@ -146,6 +154,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "A fruit drink meant only for synthetics, however that works."
reagent_state = LIQUID
color = "#adb21f"
alcohol_perc = 0.3
/datum/chemical_reaction/synthanol/trinary
name = "Trinary"
@@ -161,6 +170,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "A drink containing some organic ingredients, but meant only for synthetics."
reagent_state = LIQUID
color = "#5b3210"
alcohol_perc = 0.5
/datum/chemical_reaction/synthanol/servo
name = "Servo"
@@ -176,6 +186,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "A potent mix of alcohol and synthanol. Will only work on synthetics."
reagent_state = LIQUID
color = "#e7ae04"
alcohol_perc = 0.2
/datum/chemical_reaction/synthanol/uplink
name = "Uplink"
@@ -190,6 +201,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "The classic drink adjusted for a robot's tastes."
reagent_state = LIQUID
color = "#7204e7"
alcohol_perc = 0.5
/datum/chemical_reaction/synthanol/synthnsoda
name = "Synth 'n Soda"
@@ -204,6 +216,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "Someone mixed wine and alcohol for robots. Hope you're proud of yourself."
reagent_state = LIQUID
color = "#d004e7"
alcohol_perc = 0.5
/datum/chemical_reaction/synthanol/synthignon
name = "Synthignon"
@@ -1,20 +1,18 @@
/datum/chemical_reaction/
hydrocodone
/datum/chemical_reaction/hydrocodone
name = "Hydrocodone"
id = "hydrocodone"
result = "hydrocodone"
required_reagents = list("morphine" = 1, "sacid" = 1, "water" = 1, "oil" = 1)
result_amount = 2
mitocholide
/datum/chemical_reaction/mitocholide
name = "mitocholide"
id = "mitocholide"
result = "mitocholide"
required_reagents = list("synthflesh" = 1, "cryoxadone" = 1, "plasma" = 1)
result_amount = 3
cryoxadone
/datum/chemical_reaction/cryoxadone
name = "Cryoxadone"
id = "cryoxadone"
result = "cryoxadone"
@@ -23,7 +21,7 @@
mix_message = "The solution bubbles softly."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
spaceacillin
/datum/chemical_reaction/spaceacillin
name = "Spaceacillin"
id = "spaceacillin"
result = "spaceacillin"
@@ -31,62 +29,16 @@
result_amount = 2
mix_message = "The solvent extracts an antibiotic compound from the fungus."
rezadone
/datum/chemical_reaction/rezadone
name = "Rezadone"
id = "rezadone"
result = "rezadone"
required_reagents = list("carpotoxin" = 1, "spaceacillin" = 1, "copper" = 1)
result_amount = 3
virus_food
name = "Virus Food"
id = "virusfood"
result = "virusfood"
required_reagents = list("water" = 1, "milk" = 1, "oxygen" = 1)
result_amount = 3
/*
mix_virus
name = "Mix Virus"
id = "mixvirus"
result = "blood"
required_reagents = list("virusfood" = 5)
required_catalysts = list("blood")
var/level = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
if(B && B.data)
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
if(D)
D.Evolve(level - rand(0, 1))
mix_virus_2
name = "Mix Virus 2"
id = "mixvirus2"
required_reagents = list("mutagen" = 5)
level = 4
rem_virus
name = "Devolve Virus"
id = "remvirus"
required_reagents = list("synaptizine" = 5)
on_reaction(var/datum/reagents/holder, var/created_volume)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
if(B && B.data)
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
if(D)
D.Devolve()
*/
sterilizine
/datum/chemical_reaction/sterilizine
name = "Sterilizine"
id = "sterilizine"
result = "sterilizine"
required_reagents = list("antihol" = 2, "chlorine" = 1)
result_amount = 3
result_amount = 3
@@ -1,207 +1,147 @@
/datum/chemical_reaction/
// foam and foam precursor
surfactant
name = "Foam surfactant"
id = "foam surfactant"
result = "fluorosurfactant"
required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1)
result_amount = 5
mix_message = "A head of foam results from the mixture's constant fizzing."
/datum/chemical_reaction/surfactant
name = "Foam surfactant"
id = "foam surfactant"
result = "fluorosurfactant"
required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1)
result_amount = 5
mix_message = "A head of foam results from the mixture's constant fizzing."
/datum/chemical_reaction/foam
name = "Foam"
id = "foam"
result = null
required_reagents = list("fluorosurfactant" = 1, "water" = 1)
result_amount = 2
/datum/chemical_reaction/foam/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
holder.my_atom.visible_message("<span class='warning'>The solution spews out foam!</span>")
var/datum/effect/system/foam_spread/s = new()
s.set_up(created_volume, location, holder, 0)
s.start()
holder.clear_reagents()
foam
name = "Foam"
id = "foam"
result = null
required_reagents = list("fluorosurfactant" = 1, "water" = 1)
result_amount = 2
/datum/chemical_reaction/metalfoam
name = "Metal Foam"
id = "metalfoam"
result = null
required_reagents = list("aluminum" = 3, "fluorosurfactant" = 1, "sacid" = 1)
result_amount = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
/datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
holder.my_atom.visible_message("<span class='warning'>The solution spews out a metalic foam!</span>")
var/datum/effect/system/foam_spread/s = new()
s.set_up(created_volume, location, holder, MFOAM_ALUMINUM)
s.start()
var/location = get_turf(holder.my_atom)
for(var/mob/M in viewers(5, location))
M << "\red The solution violently bubbles!"
/datum/chemical_reaction/ironfoam
name = "Iron Foam"
id = "ironlfoam"
result = null
required_reagents = list("iron" = 3, "fluorosurfactant" = 1, "sacid" = 1)
result_amount = 5
location = get_turf(holder.my_atom)
/datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/mob/M in viewers(5, location))
M << "\red The solution spews out foam!"
holder.my_atom.visible_message("<span class='warning>The solution spews out a metalic foam!</span>")
//world << "Holder volume is [holder.total_volume]"
//for(var/datum/reagent/R in holder.reagent_list)
// world << "[R.name] = [R.volume]"
var/datum/effect/system/foam_spread/s = new()
s.set_up(created_volume, location, holder, MFOAM_IRON)
s.start()
var/datum/effect/system/foam_spread/s = new()
s.set_up(created_volume, location, holder, 0)
s.start()
holder.clear_reagents()
return
metalfoam
name = "Metal Foam"
id = "metalfoam"
result = null
required_reagents = list("aluminum" = 3, "fluorosurfactant" = 1, "sacid" = 1)
result_amount = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/mob/M in viewers(5, location))
M << "\red The solution spews out a metalic foam!"
var/datum/effect/system/foam_spread/s = new()
s.set_up(created_volume, location, holder, 1)
s.start()
return
ironfoam
name = "Iron Foam"
id = "ironlfoam"
result = null
required_reagents = list("iron" = 3, "fluorosurfactant" = 1, "sacid" = 1)
result_amount = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/mob/M in viewers(5, location))
M << "\red The solution spews out a metalic foam!"
var/datum/effect/system/foam_spread/s = new()
s.set_up(created_volume, location, holder, 2)
s.start()
return
// Synthesizing these three chemicals is pretty complex in real life, but fuck it, it's just a game!
ammonia
name = "Ammonia"
id = "ammonia"
result = "ammonia"
required_reagents = list("hydrogen" = 3, "nitrogen" = 1)
result_amount = 3
mix_message = "The mixture bubbles, emitting an acrid reek."
/datum/chemical_reaction/ammonia
name = "Ammonia"
id = "ammonia"
result = "ammonia"
required_reagents = list("hydrogen" = 3, "nitrogen" = 1)
result_amount = 3
mix_message = "The mixture bubbles, emitting an acrid reek."
diethylamine
name = "Diethylamine"
id = "diethylamine"
result = "diethylamine"
required_reagents = list ("ammonia" = 1, "ethanol" = 1)
result_amount = 2
min_temp = 374
mix_message = "A horrible smell pours forth from the mixture."
/datum/chemical_reaction/diethylamine
name = "Diethylamine"
id = "diethylamine"
result = "diethylamine"
required_reagents = list ("ammonia" = 1, "ethanol" = 1)
result_amount = 2
min_temp = 374
mix_message = "A horrible smell pours forth from the mixture."
space_cleaner
name = "Space cleaner"
id = "cleaner"
result = "cleaner"
required_reagents = list("ammonia" = 1, "water" = 1, "ethanol" = 1)
result_amount = 3
mix_message = "Ick, this stuff really stinks. Sure does make the container sparkle though!"
/datum/chemical_reaction/space_cleaner
name = "Space cleaner"
id = "cleaner"
result = "cleaner"
required_reagents = list("ammonia" = 1, "water" = 1, "ethanol" = 1)
result_amount = 3
mix_message = "Ick, this stuff really stinks. Sure does make the container sparkle though!"
sulfuric_acid
name = "Sulfuric Acid"
id = "sacid"
result = "sacid"
required_reagents = list("sulfur" = 1, "oxygen" = 1, "hydrogen" = 1)
result_amount = 2
mix_message = "The mixture gives off a sharp acidic tang."
/datum/chemical_reaction/sulfuric_acid
name = "Sulfuric Acid"
id = "sacid"
result = "sacid"
required_reagents = list("sulfur" = 1, "oxygen" = 1, "hydrogen" = 1)
result_amount = 2
mix_message = "The mixture gives off a sharp acidic tang."
///////Changeling Blood Test/////////////
/*
changeling_test
name = "Changeling blood test"
id = "changelingblood"
result = "blood"
required_reagents = list("blood" = 5)
required_catalysts = list("fuel")
result_amount = 1 //Needs this in order to check the donor, as the data var in the reacted blood gets transferred.
on_reaction(var/datum/reagents/holder, var/created_volume)
if(!holder.reagent_list) //reagent_list is not null
return
var/datum/reagent/blood/B = locate() in holder.reagent_list
if(!B) //B is not null
return
var/mob/living/carbon/human/H = B.data["donor"]
if(!H) //H is not null.
return
if(H.mind && H.mind.changeling) //Checks if H, the blood donor is a ling.
for(var/mob/M in viewers(get_turf(holder.my_atom), null))
M.show_message( "<span class='danger'>The blood writhes and wriggles and sizzles away from the container!</span>", 1, "<span class='warning'>You hear bubbling and sizzling.</span>", 2)
else
for(var/mob/M in viewers(get_turf(holder.my_atom), null))
M.show_message( "<span class ='notice'>The blood seems to break apart in the fuel.</span>", 1)
holder.del_reagent("blood")
return
*/
/datum/chemical_reaction/plastication
name = "Plastic"
id = "solidplastic"
result = null
required_reagents = list("facid" = 10, "plasticide" = 20)
result_amount = 1
plastication
name = "Plastic"
id = "solidplastic"
result = null
required_reagents = list("facid" = 10, "plasticide" = 20)
result_amount = 1
on_reaction(var/datum/reagents/holder)
var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/mineral/plastic
M.amount = 10
M.loc = get_turf(holder.my_atom)
return
/datum/chemical_reaction/plastication/on_reaction(var/datum/reagents/holder)
var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/mineral/plastic
M.amount = 10
M.forceMove(get_turf(holder.my_atom))
/datum/chemical_reaction/space_drugs
name = "Space Drugs"
id = "space_drugs"
result = "space_drugs"
required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1)
result_amount = 3
mix_message = "Slightly dizzying fumes drift from the solution."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
//Not really misc chems, but not enough to deserve their own file
/*
silicate
name = "Silicate"
id = "silicate"
result = "silicate"
required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1)
result_amount = 3
*/
/datum/chemical_reaction/lube
name = "Space Lube"
id = "lube"
result = "lube"
required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1)
result_amount = 3
mix_message = "The substance turns a striking cyan and becomes oily."
space_drugs
name = "Space Drugs"
id = "space_drugs"
result = "space_drugs"
required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1)
result_amount = 3
mix_message = "Slightly dizzying fumes drift from the solution."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/holy_water
name = "Holy Water"
id = "holywater"
result = "holywater"
required_reagents = list("water" = 1, "mercury" = 1, "wine" = 1)
result_amount = 3
mix_message = "The water somehow seems purified. Or maybe defiled."
lube
name = "Space Lube"
id = "lube"
result = "lube"
required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1)
result_amount = 3
mix_message = "The substance turns a striking cyan and becomes oily."
/datum/chemical_reaction/lsd
name = "Lysergic acid diethylamide"
id = "lsd"
result = "lsd"
required_reagents = list("diethylamine" = 1, "fungus" = 1)
result_amount = 3
mix_message = "The mixture turns a rather unassuming color and settles."
holy_water
name = "Holy Water"
id = "holywater"
result = "holywater"
required_reagents = list("water" = 1, "mercury" = 1, "wine" = 1)
result_amount = 3
mix_message = "The water somehow seems purified. Or maybe defiled."
lsd
name = "Lysergic acid diethylamide"
id = "lsd"
result = "lsd"
required_reagents = list("diethylamine" = 1, "fungus" = 1)
result_amount = 3
mix_message = "The mixture turns a rather unassuming color and settles."
drying_agent
name = "Drying agent"
id = "drying_agent"
result = "drying_agent"
required_reagents = list("plasma" = 2, "ethanol" = 1, "sodium" = 1)
result_amount = 3
/datum/chemical_reaction/drying_agent
name = "Drying agent"
id = "drying_agent"
result = "drying_agent"
required_reagents = list("plasma" = 2, "ethanol" = 1, "sodium" = 1)
result_amount = 3
@@ -492,6 +492,20 @@
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
var/obj/item/weapon/slimesteroid2/P = new /obj/item/weapon/slimesteroid2
P.loc = get_turf(holder.my_atom)
slime_territory
name = "Slime Territory"
id = "s_territory"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/cerulean
required_other = 1
on_reaction(datum/reagents/holder)
feedback_add_details("slime_cores_used","[type]")
var/obj/item/areaeditor/blueprints/slime/P = new /obj/item/areaeditor/blueprints/slime
P.forceMove(get_turf(holder.my_atom))
//Sepia
slimestop
name = "Slime Stop"
@@ -81,6 +81,10 @@
/datum/reagent/proc/on_update(var/atom/A)
return
// Called after add_reagents creates a new reagent.
/datum/reagent/proc/on_new(data)
return
/datum/reagent/Destroy()
. = ..()
holder = null
@@ -11,31 +11,29 @@
var/dizzy_adj = 3
var/slurr_adj = 3
var/confused_adj = 2
var/slur_start = 65 //amount absorbed after which mob starts slurring
var/brawl_start = 75 //amount absorbed after which mob switches to drunken brawling as a fighting style
var/confused_start = 130 //amount absorbed after which mob starts confusing directions
var/vomit_start = 180 //amount absorbed after which mob starts vomitting
var/blur_start = 260 //amount absorbed after which mob starts getting blurred vision
var/pass_out = 325 //amount absorbed after which mob starts passing out
var/slur_start = 20 //amount absorbed after which mob starts slurring
var/brawl_start = 25 //amount absorbed after which mob switches to drunken brawling as a fighting style
var/confused_start = 30 //amount absorbed after which mob starts confusing directions
var/vomit_start = 45 //amount absorbed after which mob starts vomitting
var/blur_start = 70 //amount absorbed after which mob starts getting blurred vision
var/pass_out = 90 //amount absorbed after which mob starts passing out
var/alcohol_perc = 1 //percentage of ethanol in a beverage 0.0 - 1.0
/datum/reagent/ethanol/on_mob_life(var/mob/living/M as mob, var/alien)
// Sobering multiplier.
// Sober block makes it more difficult to get drunk
var/sober_str=!(SOBER in M.mutations)?1:2
M.nutrition += nutriment_factor
if(!src.data) data = 1
src.data++
var/d = data
var/d = 0
// make all the beverages work together
for(var/datum/reagent/ethanol/A in holder.reagent_list)
if(isnum(A.data)) d += A.data
if(isnum(A.current_cycle)) d += A.current_cycle * A.alcohol_perc
d/=sober_str
var/obj/item/organ/internal/liver/L
if(ishuman(M))
if(ishuman(M) && !M.isSynthetic())
var/mob/living/carbon/human/H = M
L = H.get_int_organ(/obj/item/organ/internal/liver)
if(!L || (istype(L) && L.dna.species in list("Skrell", "Neara")))
@@ -71,6 +69,7 @@
..()
return
/datum/reagent/ethanol/reaction_obj(var/obj/O, var/volume)
if(istype(O,/obj/item/weapon/paper))
var/obj/item/weapon/paper/paperaffected = O
@@ -93,12 +92,13 @@
return
/datum/reagent/ethanol/beer //It's really much more stronger than other drinks.
/datum/reagent/ethanol/beer
name = "Beer"
id = "beer"
description = "An alcoholic beverage made from malted grains, hops, yeast, and water."
nutriment_factor = 2 * FOOD_METABOLISM
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/beer/on_mob_life(var/mob/living/M as mob)
..()
@@ -110,6 +110,7 @@
id = "cider"
description = "An alcoholic beverage derived from apples."
color = "#174116"
alcohol_perc = 0.1
/datum/reagent/ethanol/whiskey
name = "Whiskey"
@@ -117,14 +118,14 @@
description = "A superb and well-aged single-malt whiskey. Damn."
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 4
alcohol_perc = 0.4
/datum/reagent/ethanol/specialwhiskey
name = "Special Blend Whiskey"
id = "specialwhiskey"
description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything."
color = "#664300" // rgb: 102, 67, 0
slur_start = 30 //amount absorbed after which mob starts slurring
brawl_start = 40
alcohol_perc = 0.5
/datum/reagent/ethanol/gin
name = "Gin"
@@ -132,6 +133,7 @@
description = "It's gin. In space. I say, good sir."
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 3
alcohol_perc = 0.5
/datum/reagent/ethanol/absinthe
name = "Absinthe"
@@ -140,15 +142,11 @@
color = "#33EE00" // rgb: lots, ??, ??
overdose_threshold = 30
dizzy_adj = 5
slur_start = 25
brawl_start = 40
confused_start = 100
alcohol_perc = 0.7
//copy paste from LSD... shoot me
/datum/reagent/ethanol/absinthe/on_mob_life(var/mob/living/M)
if(!M) M = holder.my_atom
if(!data) data = 1
data++
M.hallucination += 5
..()
return
@@ -164,6 +162,7 @@
description = "Popular with the sailors. Not very popular with everyone else."
color = "#664300" // rgb: 102, 67, 0
overdose_threshold = 30
alcohol_perc = 0.4
/datum/reagent/ethanol/rum/on_mob_life(var/mob/living/M as mob)
..()
@@ -180,30 +179,35 @@
id = "mojito"
description = "If it's good enough for Spesscuba, it's good enough for you."
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/vodka
name = "Vodka"
id = "vodka"
description = "Number one drink AND fueling choice for Russians worldwide."
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.4
/datum/reagent/ethanol/sake
name = "Sake"
id = "sake"
description = "Anime's favorite drink."
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/tequilla
name = "Tequila"
id = "tequilla"
description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?"
color = "#A8B0B7" // rgb: 168, 176, 183
alcohol_perc = 0.4
/datum/reagent/ethanol/vermouth
name = "Vermouth"
id = "vermouth"
description = "You suddenly feel a craving for a martini..."
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/wine
name = "Wine"
@@ -211,8 +215,7 @@
description = "An premium alchoholic beverage made from distilled grape juice."
color = "#7E4043" // rgb: 126, 64, 67
dizzy_adj = 2
slur_start = 65 //amount absorbed after which mob starts slurring
confused_start = 145 //amount absorbed after which mob starts confusing directions
alcohol_perc = 0.2
/datum/reagent/ethanol/cognac
name = "Cognac"
@@ -220,7 +223,7 @@
description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication."
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 4
confused_start = 115 //amount absorbed after which mob starts confusing directions
alcohol_perc = 0.4
/datum/reagent/ethanol/suicider //otherwise known as "I want to get so smashed my liver gives out and I die from alcohol poisoning".
name = "Suicider"
@@ -230,17 +233,14 @@
dizzy_adj = 20
slurr_adj = 20
confused_adj = 3
slur_start = 15
brawl_start = 25
confused_start = 40
blur_start = 60
pass_out = 80
alcohol_perc = 1 //because that's a thing it's supposed to do, I guess
/datum/reagent/ethanol/ale
name = "Ale"
id = "ale"
description = "A dark alchoholic beverage made by malted barley and yeast."
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/thirteenloko
name = "Thirteen Loko"
@@ -248,6 +248,7 @@
description = "A potent mixture of caffeine and alcohol."
reagent_state = LIQUID
color = "#102000" // rgb: 16, 32, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/thirteenloko/on_mob_life(var/mob/living/M as mob)
..()
@@ -269,6 +270,7 @@
description = "This appears to be beer mixed with milk. Disgusting."
reagent_state = LIQUID
color = "#895C4C" // rgb: 137, 92, 76
alcohol_perc = 0.1
/datum/reagent/ethanol/atomicbomb
name = "Atomic Bomb"
@@ -276,6 +278,7 @@
description = "Nuclear proliferation never tasted so good."
reagent_state = LIQUID
color = "#666300" // rgb: 102, 99, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/threemileisland
name = "THree Mile Island Iced Tea"
@@ -283,6 +286,7 @@
description = "Made for a woman, strong enough for a man."
reagent_state = LIQUID
color = "#666340" // rgb: 102, 99, 64
alcohol_perc = 0.2
/datum/reagent/ethanol/goldschlager
name = "Goldschlager"
@@ -290,6 +294,7 @@
description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.4
/datum/reagent/ethanol/patron
name = "Patron"
@@ -297,6 +302,7 @@
description = "Tequila with silver in it, a favorite of alcoholic women in the club scene."
reagent_state = LIQUID
color = "#585840" // rgb: 88, 88, 64
alcohol_perc = 0.4
/datum/reagent/ethanol/gintonic
name = "Gin and Tonic"
@@ -304,6 +310,7 @@
description = "An all time classic, mild cocktail."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.4
/datum/reagent/ethanol/cuba_libre
name = "Cuba Libre"
@@ -311,6 +318,7 @@
description = "Rum, mixed with cola. Viva la revolution."
reagent_state = LIQUID
color = "#3E1B00" // rgb: 62, 27, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/whiskey_cola
name = "Whiskey Cola"
@@ -318,6 +326,7 @@
description = "Whiskey, mixed with cola. Surprisingly refreshing."
reagent_state = LIQUID
color = "#3E1B00" // rgb: 62, 27, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/martini
name = "Classic Martini"
@@ -325,6 +334,7 @@
description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.5
/datum/reagent/ethanol/vodkamartini
name = "Vodka Martini"
@@ -332,6 +342,7 @@
description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.4
/datum/reagent/ethanol/white_russian
name = "White Russian"
@@ -339,6 +350,7 @@
description = "That's just, like, your opinion, man..."
reagent_state = LIQUID
color = "#A68340" // rgb: 166, 131, 64
alcohol_perc = 0.3
/datum/reagent/ethanol/screwdrivercocktail
name = "Screwdriver"
@@ -346,6 +358,7 @@
description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious."
reagent_state = LIQUID
color = "#A68310" // rgb: 166, 131, 16
alcohol_perc = 0.3
/datum/reagent/ethanol/booger
name = "Booger"
@@ -353,6 +366,7 @@
description = "Ewww..."
reagent_state = LIQUID
color = "#A68310" // rgb: 166, 131, 16
alcohol_perc = 0.2
/datum/reagent/ethanol/bloody_mary
name = "Bloody Mary"
@@ -360,6 +374,7 @@
description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/gargle_blaster
name = "Pan-Galactic Gargle Blaster"
@@ -367,6 +382,7 @@
description = "Whoah, this stuff looks volatile!"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.7 //ouch
/datum/reagent/ethanol/brave_bull
name = "Brave Bull"
@@ -374,6 +390,7 @@
description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/tequilla_sunrise
name = "Tequila Sunrise"
@@ -381,6 +398,7 @@
description = "Tequila and orange juice. Much like a Screwdriver, only Mexican~"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/toxins_special
name = "Toxins Special"
@@ -388,6 +406,7 @@
description = "This thing is FLAMING!. CALL THE DAMN SHUTTLE!"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.5
/datum/reagent/ethanol/beepsky_smash
name = "Beepsky Smash"
@@ -395,24 +414,19 @@
description = "Deny drinking this and prepare for THE LAW."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.5
/datum/reagent/ethanol/beepsky_smash/on_mob_life(mob/living/M)
M.Stun(1)
..()
/datum/reagent/ethanol/changelingsting
name = "Changeling Sting"
id = "changelingsting"
description = "You take a tiny sip and feel a burning sensation..."
reagent_state = LIQUID
color = "#2E6671" // rgb: 46, 102, 113
/datum/reagent/ethanol/irish_cream
name = "Irish Cream"
id = "irishcream"
description = "Whiskey-imbued cream, what else would you expect from the Irish."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/manly_dorf
name = "The Manly Dorf"
@@ -420,6 +434,7 @@
description = "Beer and Ale, brought together in a delicious mix. Intended for true men only."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/longislandicedtea
name = "Long Island Iced Tea"
@@ -427,6 +442,7 @@
description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.5
/datum/reagent/ethanol/moonshine
name = "Moonshine"
@@ -434,6 +450,7 @@
description = "You've really hit rock bottom now... your liver packed its bags and left last night."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.8 //yeeehaw
/datum/reagent/ethanol/b52
name = "B-52"
@@ -441,6 +458,7 @@
description = "Coffee, Irish Cream, and congac. You will get bombed."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/irishcoffee
name = "Irish Coffee"
@@ -448,6 +466,7 @@
description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/margarita
name = "Margarita"
@@ -455,6 +474,7 @@
description = "On the rocks with salt on the rim. Arriba~!"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/black_russian
name = "Black Russian"
@@ -462,6 +482,7 @@
description = "For the lactose-intolerant. Still as classy as a White Russian."
reagent_state = LIQUID
color = "#360000" // rgb: 54, 0, 0
alcohol_perc = 0.4
/datum/reagent/ethanol/manhattan
name = "Manhattan"
@@ -469,6 +490,7 @@
description = "The Detective's undercover drink of choice. He never could stomach gin..."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.4
/datum/reagent/ethanol/manhattan_proj
name = "Manhattan Project"
@@ -476,6 +498,7 @@
description = "A scienitst's drink of choice, for pondering ways to blow up the station."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.4
/datum/reagent/ethanol/whiskeysoda
name = "Whiskey Soda"
@@ -483,6 +506,7 @@
description = "Ultimate refreshment."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/antifreeze
name = "Anti-freeze"
@@ -490,6 +514,7 @@
description = "Ultimate refreshment."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/barefoot
name = "Barefoot"
@@ -497,6 +522,7 @@
description = "Barefoot and pregnant"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/snowwhite
name = "Snow White"
@@ -504,6 +530,7 @@
description = "A cold refreshment"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/demonsblood
name = "Demons Blood"
@@ -513,6 +540,7 @@
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 10
slurr_adj = 10
alcohol_perc = 0.4
/datum/reagent/ethanol/vodkatonic
name = "Vodka and Tonic"
@@ -522,6 +550,7 @@
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 4
slurr_adj = 3
alcohol_perc = 0.3
/datum/reagent/ethanol/ginfizz
name = "Gin Fizz"
@@ -531,6 +560,7 @@
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 4
slurr_adj = 3
alcohol_perc = 0.4
/datum/reagent/ethanol/bahama_mama
name = "Bahama mama"
@@ -538,6 +568,7 @@
description = "Tropic cocktail."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/singulo
name = "Singulo"
@@ -547,6 +578,7 @@
color = "#2E6671" // rgb: 46, 102, 113
dizzy_adj = 15
slurr_adj = 15
alcohol_perc = 0.7
/datum/reagent/ethanol/sbiten
name = "Sbiten"
@@ -554,6 +586,7 @@
description = "A spicy Vodka! Might be a little hot for the little guys!"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.4
/datum/reagent/ethanol/sbiten/on_mob_life(var/mob/living/M as mob)
..()
@@ -567,6 +600,7 @@
description = "Creepy time!"
reagent_state = LIQUID
color = "#A68310" // rgb: 166, 131, 16
alcohol_perc = 0.3
/datum/reagent/ethanol/red_mead
name = "Red Mead"
@@ -574,6 +608,7 @@
description = "The true Viking drink! Even though it has a strange red color."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/mead
name = "Mead"
@@ -581,6 +616,7 @@
description = "A Vikings drink, though a cheap one."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/iced_beer
name = "Iced Beer"
@@ -588,6 +624,7 @@
description = "A beer which is so cold the air around it freezes."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
/datum/reagent/ethanol/iced_beer/on_mob_life(var/mob/living/M as mob)
..()
@@ -601,6 +638,7 @@
description = "Watered down rum, Nanotrasen approves!"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/aloe
name = "Aloe"
@@ -608,6 +646,7 @@
description = "So very, very, very good."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/andalusia
name = "Andalusia"
@@ -615,6 +654,7 @@
description = "A nice, strange named drink."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.4
/datum/reagent/ethanol/alliescocktail
name = "Allies Cocktail"
@@ -622,6 +662,7 @@
description = "A drink made from your allies."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.5
/datum/reagent/ethanol/acid_spit
name = "Acid Spit"
@@ -629,6 +670,7 @@
description = "A drink by Nanotrasen. Made from live aliens."
reagent_state = LIQUID
color = "#365000" // rgb: 54, 80, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/amasec
name = "Amasec"
@@ -636,7 +678,7 @@
description = "Official drink of the Imperium."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.3
/datum/reagent/ethanol/neurotoxin
name = "Neuro-toxin"
@@ -644,22 +686,20 @@
description = "A strong neurotoxin that puts the subject into a death-like state."
reagent_state = LIQUID
color = "#2E2E61" // rgb: 46, 46, 97
alcohol_perc = 0.7
/datum/reagent/ethanol/neurotoxin/on_mob_life(var/mob/living/M as mob)
M.weakened = max(M.weakened, 3)
if(!data)
data = 1
data++
M.dizziness +=6
if(data >= 15 && data <45)
if(current_cycle >= 15 && current_cycle <45)
if (!M.slurring)
M.slurring = 1
M.slurring += 3
else if(data >= 45 && prob(50) && data <55)
else if(current_cycle >= 45 && prob(50) && current_cycle <55)
M.confused = max(M.confused+3,0)
else if(data >=55)
else if(current_cycle >=55)
M.druggy = max(M.druggy, 55)
else if(data >=200)
else if(current_cycle >=200)
M.adjustToxLoss(2)
..()
return
@@ -670,6 +710,7 @@
description = "A stingy drink."
reagent_state = LIQUID
color = "#2E6671" // rgb: 46, 102, 113
alcohol_perc = 0.7
/datum/reagent/ethanol/changelingsting/on_mob_life(var/mob/living/M as mob)
..()
@@ -682,6 +723,7 @@
description = "Mmm, tastes like chocolate cake..."
reagent_state = LIQUID
color = "#2E6671" // rgb: 46, 102, 113
alcohol_perc = 0.3
/datum/reagent/ethanol/irishcarbomb/on_mob_life(var/mob/living/M as mob)
..()
@@ -694,6 +736,7 @@
description = "A Syndicate bomb"
reagent_state = LIQUID
color = "#2E6671" // rgb: 46, 102, 113
alcohol_perc = 0.2
/datum/reagent/ethanol/erikasurprise
name = "Erika Surprise"
@@ -701,6 +744,7 @@
description = "The surprise is, it's green!"
reagent_state = LIQUID
color = "#2E6671" // rgb: 46, 102, 113
alcohol_perc = 0.1
/datum/reagent/ethanol/driestmartini
name = "Driest Martini"
@@ -708,15 +752,14 @@
description = "Only for the experienced. You think you see sand floating in the glass."
nutriment_factor = 1 * FOOD_METABOLISM
color = "#2E6671" // rgb: 46, 102, 113
alcohol_perc = 0.5
/datum/reagent/ethanol/driestmartini/on_mob_life(var/mob/living/M as mob)
if(!data) data = 1
data++
M.dizziness +=10
if(data >= 55 && data <115)
if(current_cycle >= 55 && current_cycle <115)
if (!M.stuttering) M.stuttering = 1
M.stuttering += 10
else if(data >= 115 && prob(33))
else if(current_cycle >= 115 && prob(33))
M.confused = max(M.confused+15,15)
..()
@@ -727,6 +770,7 @@
id = "kahlua"
description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!"
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
/datum/reagent/ethanol/kahlua/on_mob_life(var/mob/living/M as mob)
M.dizziness = max(0,M.dizziness-5)
@@ -42,13 +42,9 @@
M.jitteriness = 0
if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs
var/mob/living/carbon/C = M
if(C.virus2.len)
for (var/ID in C.virus2)
var/datum/disease2/disease/V = C.virus2[ID]
C.antibodies |= V.antigen
for(var/datum/disease/D in C.viruses)
D.cure(0)
..()
return
/datum/reagent/adminordrazine/nanites
name = "Nanites"
@@ -16,20 +16,6 @@
..()
return
/datum/reagent/virus_food
name = "Virus Food"
id = "virusfood"
description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce."
reagent_state = LIQUID
nutriment_factor = 2 * REAGENTS_METABOLISM
color = "#899613" // rgb: 137, 150, 19
/datum/reagent/virus_food/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.nutrition += nutriment_factor*REM
..()
return
/datum/reagent/sterilizine
name = "Sterilizine"
id = "sterilizine"
@@ -98,33 +98,9 @@
reagent_state = LIQUID
color = "#13BC5E" // rgb: 19, 188, 94
/datum/reagent/aslimetoxin/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(istype(M, /mob/living/carbon) && M.stat != DEAD)
M << "\red Your flesh rapidly mutates!"
if(M.notransform) return
M.notransform = 1
M.canmove = 0
M.icon = null
M.overlays.Cut()
M.invisibility = 101
for(var/obj/item/W in M)
if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something
qdel(W)
continue
W.layer = initial(W.layer)
W.loc = M.loc
W.dropped(M)
var/mob/living/carbon/slime/new_mob = new /mob/living/carbon/slime(M.loc)
new_mob.a_intent = I_HARM
new_mob.universal_speak = 1
if(M.mind)
M.mind.transfer_to(new_mob)
else
new_mob.key = M.key
qdel(M)
..()
return
/datum/reagent/aslimetoxin/reaction_mob(mob/M, method=TOUCH, reac_volume)
if(method != TOUCH)
M.ForceContractDisease(new /datum/disease/transformation/slime(0))
/datum/reagent/mercury
@@ -189,19 +165,7 @@
if(!M) M = holder.my_atom
if(M.radiation < 80)
M.apply_effect(4, IRRADIATE, negate_armor = 1)
// radium may increase your chances to cure a disease
if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs
var/mob/living/carbon/C = M
if(C.virus2.len)
for (var/ID in C.virus2)
var/datum/disease2/disease/V = C.virus2[ID]
if(prob(5))
if(prob(50))
M.apply_effect(50, IRRADIATE, negate_armor = 1) // curing it that way may kill you instead
M.adjustToxLoss(100)
C.antibodies |= V.antigen
..()
return
/datum/reagent/radium/reaction_turf(var/turf/T, var/volume)
src = null
@@ -145,65 +145,103 @@
/datum/reagent/blood
data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"blood_colour"= "#A10808","resistances"=null,"trace_chem"=null, "antibodies" = null)
data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"blood_colour"="#A10808","resistances"=null,"trace_chem"=null, "antibodies" = null)
name = "Blood"
id = "blood"
reagent_state = LIQUID
color = "#C80000" // rgb: 200, 0, 0
/datum/reagent/blood/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
var/datum/reagent/blood/self = src
src = null
if(self.data && self.data["virus2"] && istype(M, /mob/living/carbon))//infecting...
var/list/vlist = self.data["virus2"]
if (vlist.len)
for (var/ID in vlist)
var/datum/disease2/disease/V = vlist[ID]
/datum/reagent/blood/reaction_mob(mob/M, method=TOUCH, reac_volume)
if(data && data["viruses"])
for(var/datum/disease/D in data["viruses"])
if(method == TOUCH)
infect_virus2(M,V.getcopy())
else
infect_virus2(M,V.getcopy(),1) //injected, force infection!
if(self.data && self.data["antibodies"] && istype(M, /mob/living/carbon))//... and curing
var/mob/living/carbon/C = M
C.antibodies |= self.data["antibodies"]
if(D.spread_flags & SPECIAL || D.spread_flags & NON_CONTAGIOUS)
continue
/datum/reagent/blood/on_merge(var/data)
if(data["blood_colour"])
color = data["blood_colour"]
return ..()
if(method == TOUCH)
M.ContractDisease(D)
else //ingest, patch or inject
M.ForceContractDisease(D)
/datum/reagent/blood/on_new(list/data)
if(istype(data))
SetViruses(src, data)
/datum/reagent/blood/on_merge(list/mix_data)
if(data && mix_data)
if(data["viruses"] || mix_data["viruses"])
var/list/mix1 = data["viruses"]
var/list/mix2 = mix_data["viruses"]
// Stop issues with the list changing during mixing.
var/list/to_mix = list()
for(var/datum/disease/advance/AD in mix1)
to_mix += AD
for(var/datum/disease/advance/AD in mix2)
to_mix += AD
var/datum/disease/advance/AD = Advance_Mix(to_mix)
if(AD)
var/list/preserve = list(AD)
for(var/D in data["viruses"])
if(!istype(D, /datum/disease/advance))
preserve += D
data["viruses"] = preserve
if(mix_data["blood_colour"])
color = mix_data["blood_colour"]
return 1
/datum/reagent/blood/on_update(var/atom/A)
if(data["blood_colour"])
color = data["blood_colour"]
return ..()
/datum/reagent/blood/reaction_turf(var/turf/simulated/T, var/volume)//splash the blood all over the place
if(!istype(T)) return
var/datum/reagent/blood/self = src
src = null
var/big_splash = 1
if(volume < 3)
big_splash = 0
//var/datum/disease/D = self.data["virus"]
if(!self.data["donor"] || istype(self.data["donor"], /mob/living/carbon/human))
blood_splatter(T, src, big_splash)
/datum/reagent/blood/reaction_turf(turf/simulated/T, reac_volume)//splash the blood all over the place
if(!istype(T))
return
if(reac_volume < 3)
return
if(!data["donor"] || istype(data["donor"], /mob/living/carbon/human))
var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T //find some blood here
if(!blood_prop) //first blood!
blood_prop = new(T)
blood_prop.blood_DNA[data["blood_DNA"]] = data["blood_type"]
if(blood_prop)
blood_prop.blood_DNA[self.data["blood_DNA"]] = self.data["blood_type"]
if(self.data["virus2"])
blood_prop.virus2 = virus_copylist(self.data["virus2"])
for(var/datum/disease/D in data["viruses"])
var/datum/disease/newVirus = D.Copy(1)
blood_prop.viruses += newVirus
newVirus.holder = blood_prop
else if(istype(self.data["donor"], /mob/living/carbon/alien))
else if(istype(data["donor"], /mob/living/carbon/alien))
var/obj/effect/decal/cleanable/blood/xeno/blood_prop = locate() in T
if(!blood_prop)
blood_prop = new(T)
blood_prop.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*"
return
for(var/datum/disease/D in data["viruses"])
var/datum/disease/newVirus = D.Copy(1)
blood_prop.viruses += newVirus
newVirus.holder = blood_prop
/datum/reagent/vaccine
//data must contain virus type
name = "Vaccine"
id = "vaccine"
color = "#C81040" // rgb: 200, 16, 64
/datum/reagent/vaccine/reaction_mob(mob/M, method=TOUCH, reac_volume)
if(islist(data) && (method == INGEST))
for(var/datum/disease/D in M.viruses)
if(D.GetDiseaseID() in data)
D.cure()
M.resistances |= data
/datum/reagent/vaccine/on_merge(list/data)
if(istype(data))
src.data |= data.Copy()
/datum/reagent/fishwater
name = "Fish Water"
@@ -350,28 +388,3 @@
var/t_loc = get_turf(O)
qdel(O)
new /obj/item/clothing/shoes/galoshes/dry(t_loc)
/*
/datum/reagent/vaccine
//data must contain virus type
name = "Vaccine"
id = "vaccine"
reagent_state = LIQUID
color = "#C81040" // rgb: 200, 16, 64
/datum/reagent/vaccine/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
var/datum/reagent/vaccine/self = src
src = null
if(self.data&&method == INGEST)
for(var/datum/disease/D in M.viruses)
if(istype(D, /datum/disease/advance))
var/datum/disease/advance/A = D
if(A.GetDiseaseID() == self.data)
D.cure()
else
if(D.type == self.data)
D.cure()
M.resistances += self.data
return
*/
+295
View File
@@ -0,0 +1,295 @@
/obj/machinery/computer/pandemic
name = "PanD.E.M.I.C 2200"
desc = "Used to work with viruses."
density = 1
anchored = 1
icon = 'icons/obj/chemical.dmi'
icon_state = "mixer0"
circuit = /obj/item/weapon/circuitboard/pandemic
use_power = 1
idle_power_usage = 20
var/temp_html = ""
var/wait = null
var/obj/item/weapon/reagent_containers/beaker = null
/obj/machinery/computer/pandemic/New()
..()
update_icon()
/obj/machinery/computer/pandemic/set_broken()
icon_state = (beaker ? "mixer1_b" : "mixer0_b")
overlays.Cut()
stat |= BROKEN
/obj/machinery/computer/pandemic/proc/GetVirusByIndex(index)
if(beaker && beaker.reagents)
if(beaker.reagents.reagent_list.len)
var/datum/reagent/blood/BL = locate() in beaker.reagents.reagent_list
if(BL)
if(BL.data && BL.data["viruses"])
var/list/viruses = BL.data["viruses"]
return viruses[index]
return null
/obj/machinery/computer/pandemic/proc/GetResistancesByIndex(index)
if(beaker && beaker.reagents)
if(beaker.reagents.reagent_list.len)
var/datum/reagent/blood/BL = locate() in beaker.reagents.reagent_list
if(BL)
if(BL.data && BL.data["resistances"])
var/list/resistances = BL.data["resistances"]
return resistances[index]
return null
/obj/machinery/computer/pandemic/proc/GetVirusTypeByIndex(index)
var/datum/disease/D = GetVirusByIndex(index)
if(D)
return D.GetDiseaseID()
return null
/obj/machinery/computer/pandemic/proc/replicator_cooldown(waittime)
wait = 1
update_icon()
spawn(waittime)
src.wait = null
update_icon()
playsound(src.loc, 'sound/machines/ping.ogg', 30, 1)
/obj/machinery/computer/pandemic/update_icon()
if(stat & BROKEN)
icon_state = (beaker ? "mixer1_b" : "mixer0_b")
return
icon_state = "mixer[(beaker)?"1":"0"][(powered()) ? "" : "_nopower"]"
if(wait)
overlays.Cut()
else
overlays += "waitlight"
/obj/machinery/computer/pandemic/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
if(!beaker) return
if (href_list["create_vaccine"])
if(!src.wait)
var/obj/item/weapon/reagent_containers/glass/bottle/B = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc)
if(B)
B.pixel_x = rand(-3, 3)
B.pixel_y = rand(-3, 3)
var/path = GetResistancesByIndex(text2num(href_list["create_vaccine"]))
var/vaccine_type = path
var/vaccine_name = "Unknown"
if(!ispath(vaccine_type))
if(archive_diseases[path])
var/datum/disease/D = archive_diseases[path]
if(D)
vaccine_name = D.name
vaccine_type = path
else if(vaccine_type)
var/datum/disease/D = new vaccine_type(0, null)
if(D)
vaccine_name = D.name
if(vaccine_type)
B.name = "[vaccine_name] vaccine bottle"
B.reagents.add_reagent("vaccine", 15, list(vaccine_type))
replicator_cooldown(200)
else
src.temp_html = "The replicator is not ready yet."
src.updateUsrDialog()
return
else if (href_list["create_virus_culture"])
if(!wait)
var/type = GetVirusTypeByIndex(text2num(href_list["create_virus_culture"]))//the path is received as string - converting
var/datum/disease/D = null
if(!ispath(type))
D = GetVirusByIndex(text2num(href_list["create_virus_culture"]))
var/datum/disease/advance/A = archive_diseases[D.GetDiseaseID()]
if(A)
D = new A.type(0, A)
else if(type)
if(type in diseases) // Make sure this is a disease
D = new type(0, null)
if(!D)
return
var/name = stripped_input(usr,"Name:","Name the culture",D.name,MAX_NAME_LEN)
if(name == null || wait)
return
var/obj/item/weapon/reagent_containers/glass/bottle/B = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc)
B.icon_state = "bottle3"
B.pixel_x = rand(-3, 3)
B.pixel_y = rand(-3, 3)
replicator_cooldown(50)
var/list/data = list("viruses"=list(D))
B.name = "[name] culture bottle"
B.desc = "A small bottle. Contains [D.agent] culture in synthblood medium."
B.reagents.add_reagent("blood",20,data)
src.updateUsrDialog()
else
src.temp_html = "The replicator is not ready yet."
src.updateUsrDialog()
return
else if (href_list["empty_beaker"])
beaker.reagents.clear_reagents()
src.updateUsrDialog()
return
else if (href_list["eject"])
beaker:loc = src.loc
beaker = null
icon_state = "mixer0"
src.updateUsrDialog()
return
else if(href_list["clear"])
src.temp_html = ""
src.updateUsrDialog()
return
else if(href_list["name_disease"])
var/new_name = stripped_input(usr, "Name the Disease", "New Name", "", MAX_NAME_LEN)
if(!new_name)
return
if(..())
return
var/id = GetVirusTypeByIndex(text2num(href_list["name_disease"]))
if(archive_diseases[id])
var/datum/disease/advance/A = archive_diseases[id]
A.AssignName(new_name)
for(var/datum/disease/advance/AD in disease_master.processing)
AD.Refresh()
src.updateUsrDialog()
else
usr << browse(null, "window=pandemic")
src.updateUsrDialog()
return
src.add_fingerprint(usr)
return
/obj/machinery/computer/pandemic/attack_hand(mob/user)
if(..())
return
user.set_machine(src)
var/dat = ""
if(src.temp_html)
dat = "[src.temp_html]<BR><BR><A href='?src=\ref[src];clear=1'>Main Menu</A>"
else if(!beaker)
dat += "Please insert beaker.<BR>"
dat += "<A href='?src=\ref[user];mach_close=pandemic'>Close</A>"
else
var/datum/reagents/R = beaker.reagents
var/datum/reagent/blood/Blood = null
for(var/datum/reagent/blood/B in R.reagent_list)
if(B)
Blood = B
break
if(!R.total_volume||!R.reagent_list.len)
dat += "The beaker is empty<BR>"
else if(!Blood)
dat += "No blood sample found in beaker."
else if(!Blood.data)
dat += "No blood data found in beaker."
else
dat += "<h3>Blood sample data:</h3>"
dat += "<b>Blood DNA:</b> [(Blood.data["blood_DNA"]||"none")]<BR>"
dat += "<b>Blood Type:</b> [(Blood.data["blood_type"]||"none")]<BR>"
if(Blood.data["viruses"])
var/list/vir = Blood.data["viruses"]
if(vir.len)
var/i = 0
for(var/datum/disease/D in Blood.data["viruses"])
i++
if(!(D.visibility_flags & HIDDEN_PANDEMIC))
if(istype(D, /datum/disease/advance))
var/datum/disease/advance/A = D
D = archive_diseases[A.GetDiseaseID()]
if(D && D.name == "Unknown")
dat += "<b><a href='?src=\ref[src];name_disease=[i]'>Name Disease</a></b><BR>"
if(!D)
CRASH("We weren't able to get the advance disease from the archive.")
dat += "<b>Disease Agent:</b> [D?"[D.agent] - <A href='?src=\ref[src];create_virus_culture=[i]'>Create virus culture bottle</A>":"none"]<BR>"
dat += "<b>Common name:</b> [(D.name||"none")]<BR>"
dat += "<b>Description: </b> [(D.desc||"none")]<BR>"
dat += "<b>Spread:</b> [(D.spread_text||"none")]<BR>"
dat += "<b>Possible cure:</b> [(D.cure_text||"none")]<BR><BR>"
if(istype(D, /datum/disease/advance))
var/datum/disease/advance/A = D
dat += "<b>Symptoms:</b> "
var/english_symptoms = list()
for(var/datum/symptom/S in A.symptoms)
english_symptoms += S.name
dat += english_list(english_symptoms)
else
dat += "No detectable virus in the sample."
else
dat += "No detectable virus in the sample."
dat += "<BR><b>Contains antibodies to:</b> "
if(Blood.data["resistances"])
var/list/res = Blood.data["resistances"]
if(res.len)
dat += "<ul>"
var/i = 0
for(var/type in Blood.data["resistances"])
i++
var/disease_name = "Unknown"
if(!ispath(type))
var/datum/disease/advance/A = archive_diseases[type]
if(A)
disease_name = A.name
else
var/datum/disease/D = new type(0, null)
disease_name = D.name
dat += "<li>[disease_name] - <A href='?src=\ref[src];create_vaccine=[i]'>Create vaccine bottle</A></li>"
dat += "</ul><BR>"
else
dat += "nothing<BR>"
else
dat += "nothing<BR>"
dat += "<BR><A href='?src=\ref[src];eject=1'>Eject beaker</A>[((R.total_volume&&R.reagent_list.len) ? "-- <A href='?src=\ref[src];empty_beaker=1'>Empty beaker</A>":"")]<BR>"
dat += "<A href='?src=\ref[user];mach_close=pandemic'>Close</A>"
user << browse("<TITLE>[src.name]</TITLE><BR>[dat]", "window=pandemic;size=575x400")
onclose(user, "pandemic")
return
/obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER))
if(stat & (NOPOWER|BROKEN)) return
if(beaker)
user << "<span class='warning'>A beaker is already loaded into the machine!</span>"
return
if(!user.drop_item())
return
beaker = I
beaker.loc = src
user << "<span class='notice'>You add the beaker to the machine.</span>"
src.updateUsrDialog()
icon_state = "mixer1"
else if(istype(I, /obj/item/weapon/screwdriver))
if(src.beaker)
beaker.loc = get_turf(src)
..()
return
else
..()
return
@@ -7,6 +7,9 @@
var/amount_per_transfer_from_this = 5
var/possible_transfer_amounts = list(5,10,15,25,30)
var/volume = 30
var/list/list_reagents = null
var/spawned_disease = null
var/disease_amount = 20
/obj/item/weapon/reagent_containers/verb/set_APTFT() //set amount_per_transfer_from_this
set name = "Set transfer amount"
@@ -30,6 +33,12 @@
reagents = R
R.my_atom = src
processing_objects.Add(src)
if(spawned_disease)
var/datum/disease/F = new spawned_disease(0)
var/list/data = list("viruses" = list(F), "blood_colour" = "#A10808")
reagents.add_reagent("blood", disease_amount, data)
if(list_reagents)
reagents.add_reagent_list(list_reagents)
/obj/item/weapon/reagent_containers/process()
if(reagents)
@@ -1597,6 +1597,12 @@
user.drop_item()
forceMove(get_turf(O))
return Expand()
if(istype(O, /obj/machinery/computer/camera_advanced/xenobio))
var/obj/machinery/computer/camera_advanced/xenobio/X = O
X.monkeys++
user << "<span class='notice'>You feed [src] to the [X]. It now has [X.monkeys] monkey cubes stored.</span>"
qdel(src)
return
..()
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user)
@@ -299,4 +299,120 @@
New()
..()
reagents.add_reagent(pick("polonium","initropidril","concentrated_initro","pancuronium","sodium_thiopental","ketamine","sulfonal","amanitin","coniine","curare","sarin","histamine","venom","cyanide","spidereggs"), 40)
reagents.add_reagent(pick("polonium","initropidril","concentrated_initro","pancuronium","sodium_thiopental","ketamine","sulfonal","amanitin","coniine","curare","sarin","histamine","venom","cyanide","spidereggs"), 40)
/obj/item/weapon/reagent_containers/glass/bottle/plasma
name = "liquid plasma bottle"
desc = "A small bottle of liquid plasma. Extremely toxic and reacts with micro-organisms inside blood."
icon_state = "bottle8"
list_reagents = list("plasma" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/diphenhydramine
name = "diphenhydramine bottle"
desc = "A small bottle of diphenhydramine."
icon_state = "bottle20"
list_reagents = list("diphenhydramine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/flu_virion
name = "Flu virion culture bottle"
desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/flu
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion
name = "Epiglottis virion culture bottle"
desc = "A small bottle. Contains Epiglottis virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/voice_change
/obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion
name = "Liver enhancement virion culture bottle"
desc = "A small bottle. Contains liver enhancement virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/heal
/obj/item/weapon/reagent_containers/glass/bottle/hullucigen_virion
name = "Hullucigen virion culture bottle"
desc = "A small bottle. Contains hullucigen virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/hullucigen
/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat
name = "Pierrot's Throat culture bottle"
desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/pierrot_throat
/obj/item/weapon/reagent_containers/glass/bottle/cold
name = "Rhinovirus culture bottle"
desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/cold
/obj/item/weapon/reagent_containers/glass/bottle/retrovirus
name = "Retrovirus culture bottle"
desc = "A small bottle. Contains a retrovirus culture in a synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/dna_retrovirus
/obj/item/weapon/reagent_containers/glass/bottle/gbs
name = "GBS culture bottle"
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS+ culture in synthblood medium."//Or simply - General BullShit
icon_state = "bottle3"
amount_per_transfer_from_this = 5
spawned_disease = /datum/disease/gbs
/obj/item/weapon/reagent_containers/glass/bottle/fake_gbs
name = "GBS culture bottle"
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS- culture in synthblood medium."//Or simply - General BullShit
icon_state = "bottle3"
spawned_disease = /datum/disease/fake_gbs
/obj/item/weapon/reagent_containers/glass/bottle/brainrot
name = "Brainrot culture bottle"
desc = "A small bottle. Contains Cryptococcus Cosmosis culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/brainrot
/obj/item/weapon/reagent_containers/glass/bottle/magnitis
name = "Magnitis culture bottle"
desc = "A small bottle. Contains a small dosage of Fukkos Miracos."
icon_state = "bottle3"
spawned_disease = /datum/disease/magnitis
/obj/item/weapon/reagent_containers/glass/bottle/wizarditis
name = "Wizarditis culture bottle"
desc = "A small bottle. Contains a sample of Rincewindus Vulgaris."
icon_state = "bottle3"
spawned_disease = /datum/disease/wizarditis
/obj/item/weapon/reagent_containers/glass/bottle/anxiety
name = "Severe Anxiety culture bottle"
desc = "A small bottle. Contains a sample of Lepidopticides."
icon_state = "bottle3"
spawned_disease = /datum/disease/anxiety
/obj/item/weapon/reagent_containers/glass/bottle/beesease
name = "Beesease culture bottle"
desc = "A small bottle. Contains a sample of invasive Apidae."
icon_state = "bottle3"
spawned_disease = /datum/disease/beesease
/obj/item/weapon/reagent_containers/glass/bottle/fluspanish
name = "Spanish flu culture bottle"
desc = "A small bottle. Contains a sample of Inquisitius."
icon_state = "bottle3"
spawned_disease = /datum/disease/fluspanish
/obj/item/weapon/reagent_containers/glass/bottle/tuberculosis
name = "Fungal Tuberculosis culture bottle"
desc = "A small bottle. Contains a sample of Fungal Tubercle bacillus."
icon_state = "bottle3"
spawned_disease = /datum/disease/tuberculosis
/obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure
name = "BVAK bottle"
desc = "A small bottle containing Bio Virus Antidote Kit."
icon_state = "bottle5"
list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10)
@@ -31,12 +31,11 @@
/mob/living/simple_animal/bot/medbot,
/obj/item/weapon/storage/secure/safe,
/obj/machinery/iv_drip,
/obj/machinery/disease2/incubator,
/obj/machinery/computer/pandemic,
/obj/machinery/disposal,
/obj/machinery/apiary,
/mob/living/simple_animal/cow,
/mob/living/simple_animal/hostile/retaliate/goat,
/obj/machinery/computer/centrifuge,
/obj/machinery/sleeper,
/obj/machinery/smartfridge/,
/obj/machinery/biogenerator,