Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into tggenetics
This commit is contained in:
@@ -61,8 +61,9 @@
|
||||
var/reactedVol = 0 //how much of the reagent is reacted during a fermireaction
|
||||
var/fermiIsReacting = FALSE //that prevents multiple reactions from occurring (i.e. add_reagent calls to process_reactions(), this stops any extra reactions.)
|
||||
var/fermiReactID //instance of the chem reaction used during a fermireaction, kept here so it's cache isn't lost between loops/procs.
|
||||
var/value_multiplier = DEFAULT_REAGENTS_VALUE //used for cargo reagents selling.
|
||||
|
||||
/datum/reagents/New(maximum=100, new_flags)
|
||||
/datum/reagents/New(maximum=100, new_flags = NONE, new_value = DEFAULT_REAGENTS_VALUE)
|
||||
maximum_volume = maximum
|
||||
|
||||
//I dislike having these here but map-objects are initialised before world/New() is called. >_>
|
||||
@@ -72,9 +73,12 @@
|
||||
build_chemical_reactions_list()
|
||||
|
||||
reagents_holder_flags = new_flags
|
||||
value_multiplier = new_value
|
||||
|
||||
/datum/reagents/Destroy()
|
||||
. = ..()
|
||||
//We're about to delete all reagents, so lets cleanup
|
||||
addiction_list.Cut()
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
@@ -330,9 +334,7 @@
|
||||
if(R.addiction_stage3_end to R.addiction_stage4_end)
|
||||
need_mob_update += R.addiction_act_stage4(C)
|
||||
if(R.addiction_stage4_end to INFINITY)
|
||||
to_chat(C, "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>")
|
||||
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_addiction")
|
||||
cached_addictions.Remove(R)
|
||||
remove_addiction(R)
|
||||
else
|
||||
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose")
|
||||
addiction_tick++
|
||||
@@ -342,6 +344,12 @@
|
||||
C.update_stamina()
|
||||
update_total()
|
||||
|
||||
/datum/reagents/proc/remove_addiction(datum/reagent/R)
|
||||
to_chat(my_atom, "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>")
|
||||
SEND_SIGNAL(my_atom, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose")
|
||||
addiction_list.Remove(R)
|
||||
qdel(R)
|
||||
|
||||
//Signals that metabolization has stopped, triggering the end of trait-based effects
|
||||
/datum/reagents/proc/end_metabolization(mob/living/carbon/C, keep_liverless = TRUE)
|
||||
var/list/cached_reagents = reagent_list
|
||||
@@ -760,6 +768,8 @@
|
||||
R.metabolizing = FALSE
|
||||
R.on_mob_end_metabolize(M)
|
||||
R.on_mob_delete(M)
|
||||
//Clear from relevant lists
|
||||
addiction_list -= R
|
||||
qdel(R)
|
||||
reagent_list -= R
|
||||
update_total()
|
||||
@@ -1147,10 +1157,10 @@
|
||||
|
||||
// Convenience proc to create a reagents holder for an atom
|
||||
// Max vol is maximum volume of holder
|
||||
/atom/proc/create_reagents(max_vol, flags)
|
||||
/atom/proc/create_reagents(max_vol, flags, new_value)
|
||||
if(reagents)
|
||||
qdel(reagents)
|
||||
reagents = new/datum/reagents(max_vol, flags)
|
||||
reagents = new/datum/reagents(max_vol, flags, new_value)
|
||||
reagents.my_atom = src
|
||||
|
||||
/proc/get_random_reagent_id() // Returns a random reagent type minus blacklisted reagents
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
if(!is_operational() || recording_recipe)
|
||||
return
|
||||
var/amount = text2num(params["amount"])
|
||||
if(beaker && amount in beaker.possible_transfer_amounts)
|
||||
if(beaker && (amount in beaker.possible_transfer_amounts))
|
||||
beaker.reagents.remove_all(amount)
|
||||
work_animation()
|
||||
. = TRUE
|
||||
@@ -408,7 +408,7 @@
|
||||
if(beaker)
|
||||
var/obj/item/reagent_containers/B = beaker
|
||||
B.forceMove(drop_location())
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
if(user && Adjacent(user) && user.can_hold_items())
|
||||
user.put_in_hands(B)
|
||||
if(new_beaker)
|
||||
beaker = new_beaker
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/obj/machinery/chem_heater/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker)
|
||||
if(beaker)
|
||||
beaker.forceMove(drop_location())
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
if(user && Adjacent(user) && user.can_hold_items())
|
||||
user.put_in_hands(beaker)
|
||||
if(new_beaker)
|
||||
beaker = new_beaker
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
if(beaker)
|
||||
var/obj/item/reagent_containers/B = beaker
|
||||
B.forceMove(drop_location())
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
if(user && Adjacent(user) && user.can_hold_items())
|
||||
user.put_in_hands(B)
|
||||
if(new_beaker)
|
||||
beaker = new_beaker
|
||||
@@ -139,7 +139,7 @@
|
||||
if(bottle)
|
||||
var/obj/item/storage/pill_bottle/B = bottle
|
||||
B.forceMove(drop_location())
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
if(user && Adjacent(user) && user.can_hold_items())
|
||||
user.put_in_hands(B)
|
||||
else
|
||||
adjust_item_drop_location(B)
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
update_icon()
|
||||
var/turf/source_turf = get_turf(src)
|
||||
log_virus("A culture bottle was printed for the virus [A.admin_details()] at [loc_name(source_turf)] by [key_name(usr)]")
|
||||
|
||||
|
||||
. = TRUE
|
||||
if("create_vaccine_bottle")
|
||||
wait = TRUE
|
||||
@@ -202,9 +202,9 @@
|
||||
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
|
||||
B.name = "[D.name] vaccine bottle"
|
||||
B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id))
|
||||
|
||||
|
||||
update_icon()
|
||||
|
||||
|
||||
. = TRUE
|
||||
|
||||
/obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params)
|
||||
@@ -229,7 +229,7 @@
|
||||
|
||||
/obj/machinery/computer/pandemic/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker)
|
||||
if(beaker)
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
if(user && Adjacent(user) && user.can_hold_items())
|
||||
if(!user.put_in_hands(beaker))
|
||||
beaker.forceMove(drop_location())
|
||||
if(new_beaker)
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
/obj/machinery/reagentgrinder/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker)
|
||||
if(beaker)
|
||||
beaker.forceMove(drop_location())
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
if(user && Adjacent(user) && user.can_hold_items())
|
||||
user.put_in_hands(beaker)
|
||||
if(new_beaker)
|
||||
beaker = new_beaker
|
||||
|
||||
@@ -551,7 +551,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
value = 1
|
||||
|
||||
/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M)
|
||||
if(M.mind && M.mind.assigned_role in list("Station Engineer", "Atmospheric Technician", "Chief Engineer")) //Engineers lose radiation poisoning at a massive rate.
|
||||
if(M.mind && (M.mind.assigned_role in list("Station Engineer", "Atmospheric Technician", "Chief Engineer"))) //Engineers lose radiation poisoning at a massive rate.
|
||||
M.radiation = max(M.radiation - 25, 0)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -1482,14 +1482,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
|
||||
/datum/reagent/medicine/polypyr //This is intended to be an ingredient in advanced chems.
|
||||
name = "Polypyrylium Oligomers"
|
||||
description = "A�purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. It is valued as an intermediate in the synthesis of the cutting edge pharmaceuticals."
|
||||
description = "A purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. It is valued as an intermediate in the synthesis of the cutting edge pharmaceuticals."
|
||||
reagent_state = SOLID
|
||||
color = "#9423FF"
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 50
|
||||
taste_description = "numbing bitterness"
|
||||
|
||||
/datum/reagent/medicine/polypyr/on_mob_life(mob/living/carbon/M) //I w�nted a collection of small positive effects, this is as hard to obtain as coniine after all.
|
||||
/datum/reagent/medicine/polypyr/on_mob_life(mob/living/carbon/M) //I wanted a collection of small positive effects, this is as hard to obtain as coniine after all.
|
||||
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, -0.25)
|
||||
M.adjustBruteLoss(-0.35, 0)
|
||||
if(prob(50))
|
||||
@@ -1511,4 +1511,3 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
|
||||
@@ -93,8 +93,6 @@
|
||||
taste_description = "something spicy"
|
||||
pH = 6.85
|
||||
|
||||
|
||||
|
||||
/datum/reagent/blood/on_merge(list/mix_data)
|
||||
if(data && mix_data)
|
||||
if(data["blood_DNA"] != mix_data["blood_DNA"])
|
||||
@@ -131,16 +129,10 @@
|
||||
/datum/reagent/blood/synthetics
|
||||
data = list("donor"=null,"viruses"=null,"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
||||
name = "Synthetic Blood"
|
||||
description = "A synthetically produced imitation of blood."
|
||||
taste_description = "oily"
|
||||
color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48
|
||||
|
||||
/datum/reagent/blood/lizard
|
||||
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_LIZARD, "blood_type"="L","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
||||
name = "Lizard Blood"
|
||||
taste_description = "spicy"
|
||||
color = BLOOD_COLOR_LIZARD // rgb: 11, 7, 48
|
||||
pH = 6.85
|
||||
|
||||
/datum/reagent/blood/jellyblood
|
||||
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
||||
name = "Slime Jelly Blood"
|
||||
@@ -150,29 +142,6 @@
|
||||
taste_mult = 1.3
|
||||
pH = 4
|
||||
|
||||
/datum/reagent/blood/xenomorph
|
||||
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
||||
name = "Xenomorph Blood"
|
||||
taste_description = "acidic heresy"
|
||||
color = BLOOD_COLOR_XENO // greenish yellow ooze
|
||||
shot_glass_icon_state = "shotglassgreen"
|
||||
pH = 2.5
|
||||
|
||||
/datum/reagent/blood/oil
|
||||
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
||||
name = "Hydraulic Blood"
|
||||
taste_description = "burnt oil"
|
||||
color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors.
|
||||
pH = 9.75
|
||||
|
||||
/datum/reagent/blood/insect
|
||||
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_BUG, "blood_type"="BUG","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
||||
name = "Insectoid Blood"
|
||||
taste_description = "waxy"
|
||||
color = BLOOD_COLOR_BUG // Bug colored, I guess.
|
||||
pH = 7.25
|
||||
|
||||
|
||||
/datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(10))
|
||||
if(M.dna?.species?.exotic_bloodtype != "GEL")
|
||||
@@ -338,8 +307,8 @@
|
||||
|
||||
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M)
|
||||
if(!data)
|
||||
data = 1
|
||||
data++
|
||||
data = list("misc" = 1)
|
||||
data["misc"]++
|
||||
M.jitteriness = min(M.jitteriness+4,10)
|
||||
if(iscultist(M))
|
||||
for(var/datum/action/innate/cult/blood_magic/BM in M.actions)
|
||||
@@ -348,7 +317,7 @@
|
||||
to_chat(M, "<span class='cultlarge'>Your blood rites falter as holy water scours your body!</span>")
|
||||
for(var/datum/action/innate/cult/blood_spell/BS in BM.spells)
|
||||
qdel(BS)
|
||||
if(data >= 25) // 10 units, 45 seconds @ metabolism 0.4 units & tick rate 1.8 sec
|
||||
if(data["misc"] >= 25) // 10 units, 45 seconds @ metabolism 0.4 units & tick rate 1.8 sec
|
||||
if(!M.stuttering)
|
||||
M.stuttering = 1
|
||||
M.stuttering = min(M.stuttering+4, 10)
|
||||
@@ -369,7 +338,7 @@
|
||||
"You can't save him. Nothing can save him now", "It seems that Nar'Sie will triumph after all")].</span>")
|
||||
if("emote")
|
||||
M.visible_message("<span class='warning'>[M] [pick("whimpers quietly", "shivers as though cold", "glances around in paranoia")].</span>")
|
||||
if(data >= 60) // 30 units, 135 seconds
|
||||
if(data["misc"] >= 60) // 30 units, 135 seconds
|
||||
if(iscultist(M) || is_servant_of_ratvar(M))
|
||||
if(iscultist(M))
|
||||
SSticker.mode.remove_cultist(M.mind, FALSE, TRUE)
|
||||
@@ -2139,3 +2108,10 @@
|
||||
to_chat(M, "<span class='userlove'>You feel like playing with your [G.name]!</span>")
|
||||
|
||||
..()
|
||||
|
||||
/datum/reagent/preservahyde
|
||||
name = "Preservahyde"
|
||||
description = "A powerful preservation agent, utilizing the preservative effects of formaldehyde with significantly less of the histamine."
|
||||
reagent_state = LIQUID
|
||||
color = "#f7685e"
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.25
|
||||
|
||||
@@ -504,7 +504,7 @@
|
||||
toxpwr = 0
|
||||
|
||||
/datum/reagent/toxin/itching_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(method == TOUCH || method == VAPOR)
|
||||
if((method == TOUCH || method == VAPOR) && M.reagents)
|
||||
M.reagents.add_reagent(/datum/reagent/toxin/itching_powder, reac_volume)
|
||||
|
||||
/datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M)
|
||||
|
||||
@@ -68,6 +68,10 @@
|
||||
results = list(/datum/reagent/medicine/synthflesh = 3)
|
||||
required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/styptic_powder = 1)
|
||||
|
||||
/datum/chemical_reaction/synthflesh/synthblood
|
||||
id = "synthflesh_2"
|
||||
required_reagents = list(/datum/reagent/blood/synthetics = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/styptic_powder = 1)
|
||||
|
||||
/datum/chemical_reaction/synthtissue
|
||||
name = "Synthtissue"
|
||||
id = /datum/reagent/synthtissue
|
||||
|
||||
@@ -47,6 +47,12 @@
|
||||
results = list(/datum/reagent/consumable/sodiumchloride = 3)
|
||||
required_reagents = list(/datum/reagent/water = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1)
|
||||
|
||||
/datum/chemical_reaction/preservahyde
|
||||
name = "Preservahyde"
|
||||
id = "preservahyde"
|
||||
results = list(/datum/reagent/preservahyde = 3)
|
||||
required_reagents = list(/datum/reagent/water = 1, /datum/reagent/toxin/formaldehyde = 1, /datum/reagent/bromine = 1)
|
||||
|
||||
/datum/chemical_reaction/plasmasolidification
|
||||
name = "Solid Plasma"
|
||||
id = "solidplasma"
|
||||
@@ -228,7 +234,6 @@
|
||||
var/level_max = 2
|
||||
|
||||
/datum/chemical_reaction/mix_virus/on_reaction(datum/reagents/holder, multiplier)
|
||||
|
||||
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"]
|
||||
@@ -236,94 +241,131 @@
|
||||
for(var/i in 1 to min(multiplier, 5))
|
||||
D.Evolve(level_min, level_max)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_2
|
||||
/datum/chemical_reaction/mix_virus/synth
|
||||
id = "mixvirus_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_2
|
||||
name = "Mix Virus 2"
|
||||
id = "mixvirus2"
|
||||
required_reagents = list(/datum/reagent/toxin/mutagen = 1)
|
||||
level_min = 2
|
||||
level_max = 4
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_3
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_2/synth
|
||||
id = "mixvirus2_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_3
|
||||
name = "Mix Virus 3"
|
||||
id = "mixvirus3"
|
||||
required_reagents = list(/datum/reagent/toxin/plasma = 1)
|
||||
level_min = 4
|
||||
level_max = 6
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_4
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_3/synth
|
||||
id = "mixvirus3_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_4
|
||||
name = "Mix Virus 4"
|
||||
id = "mixvirus4"
|
||||
required_reagents = list(/datum/reagent/uranium = 1)
|
||||
level_min = 5
|
||||
level_max = 6
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_5
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_4/synth
|
||||
id = "mixvirus4_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_5
|
||||
name = "Mix Virus 5"
|
||||
id = "mixvirus5"
|
||||
required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood = 1)
|
||||
level_min = 3
|
||||
level_max = 3
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_6
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_5/synth
|
||||
id = "mixvirus5_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_6
|
||||
name = "Mix Virus 6"
|
||||
id = "mixvirus6"
|
||||
required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 1)
|
||||
level_min = 4
|
||||
level_max = 4
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_7
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_6/synth
|
||||
id = "mixvirus6_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_7
|
||||
name = "Mix Virus 7"
|
||||
id = "mixvirus7"
|
||||
required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 1)
|
||||
level_min = 5
|
||||
level_max = 5
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_8
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_7/synth
|
||||
id = "mixvirus7_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_8
|
||||
name = "Mix Virus 8"
|
||||
id = "mixvirus8"
|
||||
required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1)
|
||||
level_min = 6
|
||||
level_max = 6
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_9
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_8/synth
|
||||
id = "mixvirus8_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_9
|
||||
name = "Mix Virus 9"
|
||||
id = "mixvirus9"
|
||||
required_reagents = list(/datum/reagent/medicine/synaptizine/synaptizinevirusfood = 1)
|
||||
level_min = 1
|
||||
level_max = 1
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_10
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_9/synth
|
||||
id = "mixvirus9_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_10
|
||||
name = "Mix Virus 10"
|
||||
id = "mixvirus10"
|
||||
required_reagents = list(/datum/reagent/uranium/uraniumvirusfood = 1)
|
||||
level_min = 6
|
||||
level_max = 7
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_11
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_10/synth
|
||||
id = "mixvirus10_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_11
|
||||
name = "Mix Virus 11"
|
||||
id = "mixvirus11"
|
||||
required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/unstable = 1)
|
||||
level_min = 7
|
||||
level_max = 7
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_12
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_11/synth
|
||||
id = "mixvirus11_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_12
|
||||
name = "Mix Virus 12"
|
||||
id = "mixvirus12"
|
||||
required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1)
|
||||
level_min = 8
|
||||
level_max = 8
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_12/synth
|
||||
id = "mixvirus12_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/rem_virus
|
||||
name = "Devolve Virus"
|
||||
id = "remvirus"
|
||||
@@ -338,6 +380,10 @@
|
||||
for(var/i in 1 to min(multiplier, 5))
|
||||
D.Devolve()
|
||||
|
||||
/datum/chemical_reaction/mix_virus/rem_virus/synth
|
||||
id = "remvirus_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
/datum/chemical_reaction/mix_virus/neuter_virus
|
||||
name = "Neuter Virus"
|
||||
id = "neutervirus"
|
||||
@@ -352,6 +398,10 @@
|
||||
for(var/i in 1 to min(multiplier, 5))
|
||||
D.Neuter()
|
||||
|
||||
/datum/chemical_reaction/mix_virus/neuter_virus/synth
|
||||
id = "neutervirus_synth"
|
||||
required_catalysts = list(/datum/reagent/blood/synthetics = 1)
|
||||
|
||||
////////////////////////////////// foam and foam precursor ///////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -743,3 +793,13 @@
|
||||
id = "blue_glitter_white"
|
||||
results = list(/datum/reagent/glitter/blue = 2)
|
||||
required_reagents = list(/datum/reagent/glitter/white = 1, /datum/reagent/colorful_reagent/crayonpowder/blue = 1)
|
||||
|
||||
//////////////////////////////////// Synthblood ///////////////////////////////////////////
|
||||
|
||||
/datum/chemical_reaction/synth_blood
|
||||
name = "Synthetic Blood"
|
||||
id = /datum/reagent/blood/synthetics
|
||||
results = list(/datum/reagent/blood/synthetics = 3)
|
||||
required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/iron = 1, /datum/reagent/stable_plasma = 1)
|
||||
mix_message = "The mixture congeals and gives off a faint copper scent."
|
||||
required_temp = 350
|
||||
|
||||
@@ -168,7 +168,7 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related
|
||||
|
||||
/obj/item/paper/secretrecipe
|
||||
name = "old recipe"
|
||||
var/recipe_id = "secretsauce"
|
||||
var/recipe_id = /datum/reagent/consumable/secretsauce
|
||||
|
||||
/obj/item/paper/secretrecipe/examine(mob/user) //Extra secret
|
||||
if(isobserver(user))
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
var/amount_per_transfer_from_this = 5
|
||||
var/list/possible_transfer_amounts = list(5,10,15,20,25,30)
|
||||
var/volume = 30
|
||||
var/reagent_flags //used to determine the reagent holder flags on add_initial_reagents()
|
||||
var/reagent_flags = NONE //used to determine the reagent holder flags on add_initial_reagents()
|
||||
var/reagent_value = DEFAULT_REAGENTS_VALUE //same as above but for the holder value multiplier.
|
||||
var/list/list_reagents = null
|
||||
var/spawned_disease = null
|
||||
var/disease_amount = 20
|
||||
@@ -22,7 +23,7 @@
|
||||
volume = vol
|
||||
if(container_flags & APTFT_VERB && length(possible_transfer_amounts))
|
||||
verbs += /obj/item/reagent_containers/proc/set_APTFT
|
||||
create_reagents(volume, reagent_flags)
|
||||
create_reagents(volume, reagent_flags, reagent_value)
|
||||
if(spawned_disease)
|
||||
var/datum/disease/F = new spawned_disease()
|
||||
var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY","viruses"= list(F))
|
||||
|
||||
@@ -19,6 +19,7 @@ Borg Hypospray
|
||||
amount_per_transfer_from_this = 5
|
||||
volume = 30
|
||||
possible_transfer_amounts = list()
|
||||
reagent_value = NO_REAGENTS_VALUE
|
||||
var/mode = 1
|
||||
var/charge_cost = 50
|
||||
var/charge_tick = 0
|
||||
|
||||
@@ -431,4 +431,4 @@
|
||||
/obj/item/reagent_containers/glass/bottle/hexacamphor
|
||||
name = "Hexacamphor bottle"
|
||||
desc = "A bottle of strong anaphrodisiac. Reduces libido."
|
||||
list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30)
|
||||
list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30)
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
if(safe_thing)
|
||||
if(!safe_thing.reagents)
|
||||
safe_thing.create_reagents(100)
|
||||
safe_thing.create_reagents(100, NONE, NO_REAGENTS_VALUE)
|
||||
|
||||
reagents.reaction(safe_thing, TOUCH, fraction)
|
||||
trans = reagents.trans_to(safe_thing, amount_per_transfer_from_this)
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
volume = 60
|
||||
icon_state = "beaker"
|
||||
item_state = "beaker"
|
||||
materials = list(MAT_GLASS=500)
|
||||
custom_materials = list(/datum/material/glass=500)
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,50,60)
|
||||
container_flags = PH_WEAK|APTFT_ALTCLICK|APTFT_VERB
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
/obj/item/reagent_containers/glass/beaker/glass_dish
|
||||
name = "glass dish"
|
||||
desc = "A tiny glass dish. It can hold up to 3 units. Unable to withstand reagents of an extreme pH."
|
||||
materials = list(MAT_GLASS=500)
|
||||
custom_materials = list(/datum/material/glass = 500)
|
||||
icon_state = "glass_disk"
|
||||
possible_transfer_amounts = list(0.1,0.5,0.75,1,2,3)
|
||||
volume = 3
|
||||
@@ -167,21 +167,21 @@
|
||||
/obj/item/reagent_containers/glass/beaker/flask/large
|
||||
name = "large flask"
|
||||
desc = "A large flask. It can hold up to 80 units. Unable to withstand reagents of an extreme pH."
|
||||
materials = list(MAT_GLASS=2500)
|
||||
custom_materials = list(/datum/material/glass = 2500)
|
||||
icon_state = "flasklarge"
|
||||
volume = 80
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/flask
|
||||
name = "small flask"
|
||||
desc = "A small flask. It can hold up to 40 units. Unable to withstand reagents of an extreme pH."
|
||||
materials = list(MAT_GLASS=1000)
|
||||
custom_materials = list(/datum/material/glass = 1000)
|
||||
icon_state = "flasksmall"
|
||||
volume = 40
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/flask/spouty
|
||||
name = "flask with spout"
|
||||
desc = "A flask with a spout! It can hold up to 120 units. Unable to withstand reagents of an extreme pH."
|
||||
materials = list(MAT_GLASS=2500)
|
||||
custom_materials = list(/datum/material/glass = 2500)
|
||||
icon_state = "flaskspouty"
|
||||
possible_transfer_amounts = list(1,2,3,4,5,10,15,20,25,30,50,100,120)
|
||||
volume = 120
|
||||
@@ -190,7 +190,7 @@
|
||||
name = "large beaker"
|
||||
desc = "A large beaker. Can hold up to 120 units. Unable to withstand reagents of an extreme pH."
|
||||
icon_state = "beakerlarge"
|
||||
materials = list(MAT_GLASS=2500)
|
||||
custom_materials = list(/datum/material/glass=2500)
|
||||
volume = 120
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120)
|
||||
@@ -200,7 +200,7 @@
|
||||
name = "x-large beaker"
|
||||
desc = "An extra-large beaker. Can hold up to 180 units. Is able to resist acid and alkaline solutions, but melts at 444 K."
|
||||
icon_state = "beakerwhite"
|
||||
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000)
|
||||
custom_materials = list(/datum/material/glass=2500, /datum/material/plastic=3000)
|
||||
volume = 180
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120,180)
|
||||
@@ -215,7 +215,7 @@
|
||||
name = "metamaterial beaker"
|
||||
desc = "A large beaker. Can hold up to 240 units, and is able to withstand all chemical situations."
|
||||
icon_state = "beakergold"
|
||||
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000)
|
||||
custom_materials = list(/datum/material/glass=2500, /datum/material/plastic=3000, /datum/material/gold=1000, /datum/material/titanium=1000)
|
||||
volume = 240
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120,200,240)
|
||||
@@ -226,7 +226,7 @@
|
||||
desc = "A cryostasis beaker that allows for chemical storage without \
|
||||
reactions. Can hold up to 50 units."
|
||||
icon_state = "beakernoreact"
|
||||
materials = list(MAT_METAL=3000)
|
||||
custom_materials = list(/datum/material/iron=3000)
|
||||
reagent_flags = OPENCONTAINER | NO_REACT
|
||||
volume = 50
|
||||
amount_per_transfer_from_this = 10
|
||||
@@ -239,8 +239,9 @@
|
||||
and Element Cuban combined with the Compound Pete. Can hold up to \
|
||||
300 units. Unable to withstand reagents of an extreme pH."
|
||||
icon_state = "beakerbluespace"
|
||||
materials = list(MAT_GLASS=3000)
|
||||
custom_materials = list(/datum/material/glass = 5000, /datum/material/plasma = 3000, /datum/material/diamond = 1000, /datum/material/bluespace = 1000)
|
||||
volume = 300
|
||||
material_flags = MATERIAL_NO_EFFECTS
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300)
|
||||
container_HP = 5
|
||||
@@ -281,7 +282,7 @@
|
||||
item_state = "bucket"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
|
||||
materials = list(MAT_METAL=200)
|
||||
custom_materials = list(/datum/material/iron=200)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
amount_per_transfer_from_this = 20
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,50,70)
|
||||
@@ -348,7 +349,7 @@
|
||||
icon_state = "smallbottle"
|
||||
item_state = "bottle"
|
||||
list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard
|
||||
materials = list(MAT_GLASS=0)
|
||||
custom_materials = list(/datum/material/glass=0)
|
||||
volume = 50
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,50)
|
||||
@@ -361,7 +362,7 @@
|
||||
/obj/item/reagent_containers/glass/beaker/waterbottle/large
|
||||
desc = "A fresh commercial-sized bottle of water."
|
||||
icon_state = "largebottle"
|
||||
materials = list(MAT_GLASS=0)
|
||||
custom_materials = list(/datum/material/glass=0)
|
||||
list_reagents = list(/datum/reagent/water = 100)
|
||||
volume = 100
|
||||
amount_per_transfer_from_this = 20
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
ignore_flags = 1 //so you can medipen through hardsuits
|
||||
reagent_flags = DRAWABLE
|
||||
flags_1 = null
|
||||
list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/toxin/formaldehyde = 3)
|
||||
list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/preservahyde = 3)
|
||||
|
||||
/obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
container_flags = APTFT_VERB
|
||||
volume = 5
|
||||
spillable = FALSE
|
||||
reagent_value = NO_REAGENTS_VALUE
|
||||
var/wipe_sound
|
||||
var/soak_efficiency = 1
|
||||
var/extinguish_efficiency = 0
|
||||
@@ -26,7 +27,7 @@
|
||||
if(reagents.total_volume)
|
||||
. += "<span class='notice'>It's soaked. Alt-Click to squeeze it dry, and perhaps gather the liquids into another held open container.</span>"
|
||||
|
||||
/obj/item/reagent_containers/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity)
|
||||
/obj/item/reagent_containers/rag/afterattack(atom/A, mob/user,proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
@@ -45,14 +46,14 @@
|
||||
C.visible_message("<span class='notice'>[user] has touched \the [C] with \the [src].</span>")
|
||||
log_combat(user, C, "touched", log_object)
|
||||
|
||||
else if(istype(A) && src in user)
|
||||
else if(istype(A) && (src in user))
|
||||
user.visible_message("[user] starts to wipe down [A] with [src]!", "<span class='notice'>You start to wipe down [A] with [src]...</span>")
|
||||
if(do_after(user, action_speed, target = A))
|
||||
user.visible_message("[user] finishes wiping off [A]!", "<span class='notice'>You finish wiping off [A].</span>")
|
||||
SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM)
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/rag/pre_altattackby(mob/living/M, mob/living/user, params)
|
||||
/obj/item/reagent_containers/rag/alt_pre_attack(mob/living/M, mob/living/user, params)
|
||||
if(istype(M) && user.a_intent == INTENT_HELP)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
if(M.on_fire)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
/obj/item/reagent_containers/spray/proc/spray(atom/A)
|
||||
var/range = CLAMP(get_dist(src, A), 1, current_range)
|
||||
var/obj/effect/decal/chempuff/D = new /obj/effect/decal/chempuff(get_turf(src))
|
||||
D.create_reagents(amount_per_transfer_from_this)
|
||||
D.create_reagents(amount_per_transfer_from_this, NONE, NO_REAGENTS_VALUE)
|
||||
var/puff_reagent_left = range //how many turf, mob or dense objet we can react with before we consider the chem puff consumed
|
||||
if(stream_mode)
|
||||
reagents.trans_to(D, amount_per_transfer_from_this)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/mode = SYRINGE_DRAW
|
||||
var/busy = FALSE // needed for delayed drawing of blood
|
||||
var/proj_piercing = 0 //does it pierce through thick clothes when shot with syringe gun
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
custom_materials = list(/datum/material/iron=10, /datum/material/glass=20)
|
||||
reagent_flags = TRANSPARENT
|
||||
|
||||
/obj/item/reagent_containers/syringe/Initialize()
|
||||
|
||||
Reference in New Issue
Block a user