mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 11:34:19 +01:00
Reagents Cleanup
This commit is contained in:
@@ -1450,15 +1450,6 @@ atom/proc/GetTypeInAllContents(typepath)
|
||||
colour += temp_col
|
||||
return colour
|
||||
|
||||
/proc/get_random_chemical(var/is_plant = 0)
|
||||
var/list/blocked = blocked_chems.Copy() //blocked_chems list is found in code/_globalvars/lists/reagents.dm
|
||||
if(is_plant)
|
||||
blocked.Add(plant_blocked_chems.Copy()) //plant_blocked_chems list is found in code/_globalvars/lists/reagents.dm
|
||||
var/picked_chem = pick(chemical_reagents_list)
|
||||
if(blocked.Find(picked_chem))
|
||||
return get_random_chemical(is_plant)
|
||||
return picked_chem
|
||||
|
||||
/proc/get_distant_turf(var/turf/T,var/direction,var/distance)
|
||||
if(!T || !direction || !distance) return
|
||||
|
||||
|
||||
@@ -57,9 +57,6 @@ var/global/list/blocked_chems = list("polonium", "initropidril", "concentrated_i
|
||||
"cryogenic_liquid", "dark_matter", "b_sorium",
|
||||
"reagent", "life","dragonsbreath")
|
||||
|
||||
//List of chems/mixtures that can't grow in plants (in addition to the global random chem blacklist)
|
||||
var/global/list/plant_blocked_chems = list() //filled in /datum/reagents/New() with chems that have can_grow_in_plants = 0
|
||||
|
||||
var/global/list/safe_chem_list = list("antihol", "charcoal", "epinephrine", "insulin", "teporone","silver_sulfadiazine", "salbutamol",
|
||||
"omnizine", "stimulants", "synaptizine", "potass_iodide", "oculine", "mannitol", "styptic_powder",
|
||||
"spaceacillin", "salglu_solution", "sal_acid", "cryoxadone", "blood", "synthflesh", "hydrocodone",
|
||||
|
||||
@@ -97,7 +97,7 @@ REAGENT SCANNER
|
||||
if(H.reagents.reagent_list.len)
|
||||
user.show_message("<span class='notice'>Subject contains the following reagents:</span>")
|
||||
for(var/datum/reagent/R in H.reagents.reagent_list)
|
||||
user.show_message("<span class='notice'>[R.volume]u of [R.name][R.overdosed == 1 ? "</span> - <span class = 'boldannounce'>OVERDOSING</span>" : ".</span>"]")
|
||||
user.show_message("<span class='notice'>[R.volume]u of [R.name][R.overdosed ? "</span> - <span class = 'boldannounce'>OVERDOSING</span>" : ".</span>"]")
|
||||
else
|
||||
user.show_message("<span class = 'notice'>Subject contains no reagents.</span>")
|
||||
if(H.reagents.addiction_list.len)
|
||||
|
||||
@@ -27,8 +27,6 @@ var/const/INGEST = 2
|
||||
for(var/path in paths)
|
||||
var/datum/reagent/D = new path()
|
||||
chemical_reagents_list[D.id] = D
|
||||
if(!D.can_grow_in_plants)
|
||||
plant_blocked_chems.Add(D.id)
|
||||
if(!chemical_reactions_list)
|
||||
//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
|
||||
// It is filtered into multiple lists within a list.
|
||||
@@ -239,10 +237,10 @@ var/const/INGEST = 2
|
||||
if(M && R)
|
||||
R.on_mob_life(M)
|
||||
if(R.volume >= R.overdose_threshold && !R.overdosed && R.overdose_threshold > 0)
|
||||
R.overdosed = 1
|
||||
R.overdosed = TRUE
|
||||
R.overdose_start(M)
|
||||
if(R.volume < R.overdose_threshold && R.overdosed)
|
||||
R.overdosed = 0
|
||||
R.overdosed = FALSE
|
||||
if(R.overdosed)
|
||||
R.overdose_process(M, R.volume >= R.overdose_threshold*2 ? 2 : 1)
|
||||
|
||||
@@ -499,32 +497,27 @@ var/const/INGEST = 2
|
||||
can_process = 1
|
||||
return can_process
|
||||
|
||||
/datum/reagents/proc/reaction(atom/A, method=TOUCH, volume_modifier = 1)
|
||||
switch(method)
|
||||
if(TOUCH)
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
if(isliving(A))
|
||||
var/check = reaction_check(A, R)
|
||||
if(!check)
|
||||
continue
|
||||
else
|
||||
R.reaction_mob(A, TOUCH, R.volume*volume_modifier)
|
||||
if(isturf(A))
|
||||
R.reaction_turf(A, R.volume*volume_modifier)
|
||||
if(isobj(A))
|
||||
R.reaction_obj(A, R.volume*volume_modifier)
|
||||
if(INGEST)
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
if(isliving(A))
|
||||
var/check = reaction_check(A, R)
|
||||
if(!check)
|
||||
continue
|
||||
else
|
||||
R.reaction_mob(A, INGEST, R.volume*volume_modifier)
|
||||
if(isturf(A))
|
||||
R.reaction_turf(A, R.volume*volume_modifier)
|
||||
if(isobj(A))
|
||||
R.reaction_obj(A, R.volume*volume_modifier)
|
||||
/datum/reagents/proc/reaction(atom/A, method = TOUCH, volume_modifier = 1)
|
||||
var/react_type
|
||||
if(isliving(A))
|
||||
react_type = "LIVING"
|
||||
else if(isturf(A))
|
||||
react_type = "TURF"
|
||||
else if(istype(A, /obj))
|
||||
react_type = "OBJ"
|
||||
else
|
||||
return
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
switch(react_type)
|
||||
if("LIVING")
|
||||
var/check = reaction_check(A, R)
|
||||
if(!check)
|
||||
continue
|
||||
R.reaction_mob(A, method, R.volume * volume_modifier)
|
||||
if("TURF")
|
||||
R.reaction_turf(A, R.volume * volume_modifier)
|
||||
if("OBJ")
|
||||
R.reaction_obj(A, R.volume * volume_modifier)
|
||||
|
||||
/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)
|
||||
@@ -692,27 +685,6 @@ var/const/INGEST = 2
|
||||
|
||||
return trans_data
|
||||
|
||||
// For random item spawning. Takes a list of paths, and returns the same list without anything that contains admin only reagents
|
||||
/proc/adminReagentCheck(list/incoming)
|
||||
var/list/outgoing[0]
|
||||
for(var/tocheck in incoming)
|
||||
if(ispath(tocheck))
|
||||
var/check = new tocheck
|
||||
if(istype(check, /atom))
|
||||
var/atom/reagentCheck = check
|
||||
var/datum/reagents/reagents = reagentCheck.reagents
|
||||
var/admin = 0
|
||||
for(var/reag in reagents.reagent_list)
|
||||
var/datum/reagent/reagent = reag
|
||||
if(reagent.admin_only)
|
||||
admin = 1
|
||||
break
|
||||
if(!(admin))
|
||||
outgoing += tocheck
|
||||
else
|
||||
outgoing += tocheck
|
||||
return outgoing
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
@@ -12,18 +12,16 @@
|
||||
var/heart_rate_increase = 0
|
||||
var/heart_rate_decrease = 0
|
||||
var/heart_rate_stop = 0
|
||||
var/penetrates_skin = 0 //Whether or not a reagent penetrates the skin
|
||||
var/can_grow_in_plants = 1 //Determines if the reagent can be grown in plants, 0 means it cannot be grown
|
||||
var/penetrates_skin = FALSE //Whether or not a reagent penetrates the skin
|
||||
//Processing flags, defines the type of mobs the reagent will affect
|
||||
//By default, all reagents will ONLY affect organics, not synthetics. Re-define in the reagent's definition if the reagent is meant to affect synths
|
||||
var/process_flags = ORGANIC
|
||||
var/admin_only = 0
|
||||
var/can_synth = 1 //whether or not a mech syringe gun and synthesize this reagent
|
||||
var/can_synth = TRUE //whether or not a mech syringe gun and synthesize this reagent
|
||||
var/overdose_threshold = 0
|
||||
var/addiction_chance = 0
|
||||
var/addiction_stage = 1
|
||||
var/last_addiction_dose = 0
|
||||
var/overdosed = 0 // You fucked up and this is now triggering it's overdose effects, purge that shit quick.
|
||||
var/overdosed = FALSE // You fucked up and this is now triggering it's overdose effects, purge that shit quick.
|
||||
var/current_cycle = 1
|
||||
var/drink_icon = null
|
||||
var/drink_name = "Glass of ..what?"
|
||||
@@ -33,11 +31,11 @@
|
||||
. = ..()
|
||||
holder = null
|
||||
|
||||
/datum/reagent/proc/reaction_mob(mob/living/M, method=TOUCH, volume) //Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not.
|
||||
/datum/reagent/proc/reaction_mob(mob/living/M, method = TOUCH, volume) //Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not.
|
||||
if(holder) //for catching rare runtimes
|
||||
if(method == TOUCH && penetrates_skin)
|
||||
var/block = M.get_permeability_protection()
|
||||
var/amount = round(volume * (1.0 - block), 0.1)
|
||||
var/amount = round(volume * (1 - block), 0.1)
|
||||
if(M.reagents)
|
||||
if(amount >= 1)
|
||||
M.reagents.add_reagent(id, amount)
|
||||
@@ -58,7 +56,7 @@
|
||||
if(AD && istype(AD, src))
|
||||
AD.last_addiction_dose = world.timeofday
|
||||
AD.addiction_stage = 1
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/reagent/proc/reaction_obj(obj/O, volume)
|
||||
return
|
||||
|
||||
@@ -5,8 +5,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
process_flags = ORGANIC | SYNTHETIC //Adminbuse knows no bounds!
|
||||
admin_only = 1
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/M)
|
||||
M.setCloneLoss(0)
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 0 //So alcohol can fill you up! If they want to.
|
||||
color = "#404030" // rgb: 64, 64, 48
|
||||
can_grow_in_plants = 0 //Alcoholic drinks won't be grown in plants (would "water down" random seed chems too much)
|
||||
var/dizzy_adj = 3
|
||||
var/alcohol_perc = 1 //percentage of ethanol in a beverage 0.0 - 1.0
|
||||
|
||||
@@ -1012,7 +1011,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#DC0000"
|
||||
alcohol_perc = 1
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/consumable/ethanol/dragons_breath/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == INGEST && prob(20))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
description = ""
|
||||
var/message = "The blob strikes you" //message sent to any mob hit by the blob
|
||||
var/message_living = null //extension to first mob sent to only living mobs i.e. silicons have no skin to be burnt
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, volume, show_message, touch_protection)
|
||||
return round(volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
description = "A fine dust containing spider eggs. Oh gosh."
|
||||
reagent_state = SOLID
|
||||
color = "#FFFFFF"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/spider_eggs/on_mob_life(mob/living/M)
|
||||
if(volume > 2.5)
|
||||
@@ -19,7 +19,7 @@
|
||||
id = "nanomachines"
|
||||
description = "Microscopic construction robots."
|
||||
color = "#535E66" // rgb: 83, 94, 102
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/nanomachines/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 1.5)
|
||||
@@ -32,7 +32,7 @@
|
||||
id = "xenomicrobes"
|
||||
description = "Microbes with an entirely alien cellular structure."
|
||||
color = "#535E66" // rgb: 83, 94, 102
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/xenomicrobes/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 1.5)
|
||||
@@ -44,7 +44,7 @@
|
||||
id = "fungalspores"
|
||||
description = "Active fungal spores."
|
||||
color = "#92D17D" // rgb: 146, 209, 125
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/fungalspores/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 2.5)
|
||||
@@ -57,7 +57,7 @@
|
||||
description = "Rapid chemical decomposition has warped these crystals into twisted spikes."
|
||||
reagent_state = SOLID
|
||||
color = "#FA0000" // rgb: 250, 0, 0
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/jagged_crystals/on_mob_life(mob/living/carbon/M)
|
||||
M.ForceContractDisease(new /datum/disease/berserker(0))
|
||||
@@ -69,7 +69,7 @@
|
||||
description = "A nasty bacteria found in spoiled food."
|
||||
reagent_state = LIQUID
|
||||
color = "#1E4600"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/salmonella/on_mob_life(mob/living/carbon/M)
|
||||
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
|
||||
@@ -81,7 +81,7 @@
|
||||
description = "Liquid gibbis."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF0000"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/gibbis/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 2.5)
|
||||
@@ -94,7 +94,7 @@
|
||||
description = "A disease-causing agent that is neither bacterial nor fungal nor viral and contains no genetic material."
|
||||
reagent_state = LIQUID
|
||||
color = "#FFFFFF"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/prions/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 4.5)
|
||||
@@ -107,7 +107,7 @@
|
||||
description = "Moldy old dust taken from a grave site."
|
||||
reagent_state = LIQUID
|
||||
color = "#465046"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/grave_dust/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 4.5)
|
||||
@@ -120,7 +120,7 @@
|
||||
description = "Aww, gross! These things can't be good for your heart. They're gunna eat it!"
|
||||
reagent_state = SOLID
|
||||
color = "#925D6C"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/heartworms/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 4.5)
|
||||
@@ -138,7 +138,7 @@
|
||||
description = "A guaranteed heart-stopper!"
|
||||
reagent_state = LIQUID
|
||||
color = "#AB1CCF"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/concentrated_initro/on_mob_life(mob/living/M)
|
||||
if(volume >= 5)
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
color = "#FFFFFF" // rgb: 0, 0, 0
|
||||
|
||||
/datum/reagent/consumable/flour/reaction_turf(turf/T, volume)
|
||||
if(!istype(T, /turf/space))
|
||||
if(!isspaceturf(T))
|
||||
new /obj/effect/decal/cleanable/flour(T)
|
||||
|
||||
/datum/reagent/consumable/rice
|
||||
@@ -478,7 +478,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/chocolate/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !istype(T, /turf/space))
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/choc_pile(T)
|
||||
|
||||
/datum/reagent/consumable/mugwort
|
||||
@@ -535,7 +535,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/cheese/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !istype(T, /turf/space))
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge(T)
|
||||
|
||||
/datum/reagent/consumable/fake_cheese
|
||||
@@ -565,7 +565,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/weird_cheese/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !istype(T, /turf/space))
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/weirdcheesewedge(T)
|
||||
|
||||
/datum/reagent/consumable/beans
|
||||
@@ -646,7 +646,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/meatslurry/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && prob(10) && !istype(T, /turf/space))
|
||||
if(prob(10) && volume >= 5 && !isspaceturf(T))
|
||||
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
|
||||
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
|
||||
|
||||
@@ -811,13 +811,13 @@
|
||||
to_chat(M, "<span class='warning'>[spooky_eat]</span>")
|
||||
|
||||
/datum/reagent/ectoplasm/reaction_turf(turf/T, volume)
|
||||
if(volume >= 10 && !istype(T, /turf/space))
|
||||
if(volume >= 10 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(T)
|
||||
|
||||
///Vomit///
|
||||
|
||||
/datum/reagent/consumable/bread/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !istype(T, /turf/space))
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/breadslice(T)
|
||||
|
||||
/datum/reagent/vomit
|
||||
@@ -828,7 +828,7 @@
|
||||
color = "#FFFF00"
|
||||
|
||||
/datum/reagent/vomit/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !istype(T, /turf/space))
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/effect/decal/cleanable/vomit(T)
|
||||
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
|
||||
|
||||
@@ -840,7 +840,7 @@
|
||||
color = "#78FF74"
|
||||
|
||||
/datum/reagent/greenvomit/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !istype(T, /turf/space))
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/effect/decal/cleanable/vomit/green(T)
|
||||
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
description = "This saline and glucose solution can help stabilize critically injured patients and cleanse wounds."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
metabolization_rate = 0.15
|
||||
|
||||
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/M)
|
||||
@@ -233,7 +233,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/synthflesh/reaction_turf(turf/T, volume) //let's make a mess!
|
||||
if(volume >= 5 && !istype(T, /turf/space))
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
|
||||
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
id = "stimulants"
|
||||
description = "Increases run speed and eliminates stuns, can heal minor damage. If overdosed it will deal toxin damage and stun."
|
||||
color = "#C8A5DC"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/medicine/stimulants/on_mob_life(mob/living/M)
|
||||
if(volume > 5)
|
||||
@@ -756,7 +756,7 @@
|
||||
color = "#C8A5DC"
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 60
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent/on_mob_life(mob/living/M)
|
||||
M.status_flags |= GOTTAGOFAST
|
||||
@@ -869,7 +869,7 @@
|
||||
description = "Miniature medical robots that swiftly restore bodily damage. May begin to attack their host's cells in high amounts."
|
||||
reagent_state = SOLID
|
||||
color = "#555555"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER) //A ton of healing - this is a 50 telecrystal investment.
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
color = "#1C1300" // rgb: 30, 20, 0
|
||||
|
||||
/datum/reagent/carbon/reaction_turf(turf/T, volume)
|
||||
if(!istype(T, /turf/space) && !(locate(/obj/effect/decal/cleanable/dirt) in T)) // Only add one dirt per turf. Was causing people to crash.
|
||||
if(!(locate(/obj/effect/decal/cleanable/dirt) in T) && !isspaceturf(T)) // Only add one dirt per turf. Was causing people to crash.
|
||||
new /obj/effect/decal/cleanable/dirt(T)
|
||||
|
||||
/datum/reagent/gold
|
||||
@@ -255,14 +255,10 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/colorful_reagent/reaction_obj(obj/O, volume)
|
||||
if(O)
|
||||
O.color = pick(random_color_list)
|
||||
..()
|
||||
O.color = pick(random_color_list)
|
||||
|
||||
/datum/reagent/colorful_reagent/reaction_turf(turf/T, volume)
|
||||
if(T)
|
||||
T.color = pick(random_color_list)
|
||||
..()
|
||||
T.color = pick(random_color_list)
|
||||
|
||||
/datum/reagent/hair_dye
|
||||
name = "Quantum Hair Dye"
|
||||
@@ -291,7 +287,7 @@
|
||||
description = "A mysterious chemical purported to help grow hair. Often found on late-night TV infomercials."
|
||||
reagent_state = LIQUID
|
||||
color = "#5DDA5D"
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/hairgrownium/reaction_mob(mob/living/M, volume)
|
||||
if(ishuman(M))
|
||||
@@ -309,7 +305,7 @@
|
||||
description = "A mysterious and powerful chemical purported to cause rapid hair growth."
|
||||
reagent_state = LIQUID
|
||||
color = "#5DD95D"
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/super_hairgrownium/reaction_mob(mob/living/M, volume)
|
||||
if(ishuman(M))
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
color = "#808080"
|
||||
|
||||
/datum/reagent/paint/reaction_turf(turf/T, volume)
|
||||
if(!istype(T, /turf/space))
|
||||
if(!isspaceturf(T))
|
||||
T.color = color
|
||||
|
||||
/datum/reagent/paint/reaction_obj(obj/O, volume)
|
||||
@@ -56,5 +56,5 @@
|
||||
color = "#808080"
|
||||
|
||||
/datum/reagent/paint_remover/reaction_turf(turf/T, volume)
|
||||
if(!istype(T, /turf/space))
|
||||
if(!isspaceturf(T))
|
||||
T.color = initial(T.color)
|
||||
@@ -48,7 +48,7 @@
|
||||
if(volume >= 5 && istype(W))
|
||||
W.thermite = 1
|
||||
W.overlays.Cut()
|
||||
W.overlays = image('icons/effects/effects.dmi',icon_state = "thermite")
|
||||
W.overlays = image('icons/effects/effects.dmi', icon_state = "thermite")
|
||||
|
||||
/datum/reagent/glycerol
|
||||
name = "Glycerol"
|
||||
@@ -80,21 +80,19 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/clf3/reaction_turf(turf/simulated/T, volume)
|
||||
if(istype(T, /turf/simulated/floor/plating))
|
||||
if(prob(1) && istype(T, /turf/simulated/floor/plating))
|
||||
var/turf/simulated/floor/plating/F = T
|
||||
if(prob(1))
|
||||
F.ChangeTurf(/turf/space)
|
||||
if(istype(T, /turf/simulated/floor/))
|
||||
F.ChangeTurf(/turf/space)
|
||||
if(istype(T, /turf/simulated/floor))
|
||||
var/turf/simulated/floor/F = T
|
||||
if(prob(volume/10))
|
||||
F.make_plating()
|
||||
if(istype(F, /turf/simulated/floor/))
|
||||
if(istype(F, /turf/simulated/floor))
|
||||
new /obj/effect/hotspot(F)
|
||||
if(istype(T, /turf/simulated/wall/))
|
||||
if(prob(volume/10) && istype(T, /turf/simulated/wall))
|
||||
var/turf/simulated/wall/W = T
|
||||
if(prob(volume/10))
|
||||
W.ChangeTurf(/turf/simulated/floor)
|
||||
if(istype(T, /turf/simulated/shuttle/))
|
||||
W.ChangeTurf(/turf/simulated/floor)
|
||||
if(istype(T, /turf/simulated/shuttle))
|
||||
new /obj/effect/hotspot(T)
|
||||
|
||||
/datum/reagent/clf3/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
@@ -124,10 +122,10 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#000000"
|
||||
metabolization_rate = 0.05
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/blackpowder/reaction_turf(turf/T, volume) //oh shit
|
||||
if(volume >= 5 && !istype(T, /turf/space))
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
if(!locate(/obj/effect/decal/cleanable/dirt/blackpowder) in T) //let's not have hundreds of decals of black powder on the same turf
|
||||
new /obj/effect/decal/cleanable/dirt/blackpowder(T)
|
||||
|
||||
@@ -258,8 +256,7 @@
|
||||
M.ExtinguishMob()
|
||||
|
||||
/datum/reagent/firefighting_foam/reaction_obj(obj/O, volume)
|
||||
if(istype(O))
|
||||
O.extinguish()
|
||||
O.extinguish()
|
||||
|
||||
/datum/reagent/firefighting_foam/reaction_turf(turf/simulated/T, volume)
|
||||
if(!istype(T))
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
description = "A corruptive toxin produced by slimes."
|
||||
reagent_state = LIQUID
|
||||
color = "#13BC5E" // rgb: 19, 188, 94
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/slimetoxin/on_mob_life(mob/living/M)
|
||||
if(ishuman(M))
|
||||
@@ -84,7 +84,7 @@
|
||||
description = "An advanced corruptive toxin produced by slimes."
|
||||
reagent_state = LIQUID
|
||||
color = "#13BC5E" // rgb: 19, 188, 94
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/aslimetoxin/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method != TOUCH)
|
||||
@@ -98,7 +98,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#484848" // rgb: 72, 72, 72
|
||||
metabolization_rate = 0.2
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/mercury/on_mob_life(mob/living/M)
|
||||
if(prob(70))
|
||||
@@ -111,7 +111,7 @@
|
||||
description = "A chemical element."
|
||||
reagent_state = GAS
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/chlorine/on_mob_life(mob/living/M)
|
||||
@@ -124,7 +124,7 @@
|
||||
description = "A highly-reactive chemical element."
|
||||
reagent_state = GAS
|
||||
color = "#6A6054"
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/fluorine/on_mob_life(mob/living/M)
|
||||
@@ -138,7 +138,7 @@
|
||||
description = "Radium is an alkaline earth metal. It is extremely radioactive."
|
||||
reagent_state = SOLID
|
||||
color = "#C7C7C7" // rgb: 199,199,199
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/radium/on_mob_life(mob/living/M)
|
||||
if(M.radiation < 80)
|
||||
@@ -146,7 +146,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/radium/reaction_turf(turf/T, volume)
|
||||
if(volume >= 3 && !istype(T, /turf/space))
|
||||
if(volume >= 3 && !isspaceturf(T))
|
||||
new /obj/effect/decal/cleanable/greenglow(T)
|
||||
|
||||
/datum/reagent/mutagen
|
||||
@@ -188,7 +188,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/uranium/reaction_turf(turf/T, volume)
|
||||
if(volume >= 3 && !istype(T, /turf/space))
|
||||
if(volume >= 3 && !isspaceturf(T))
|
||||
new /obj/effect/decal/cleanable/greenglow(T)
|
||||
|
||||
|
||||
@@ -343,8 +343,8 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600"
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
can_synth = 0
|
||||
penetrates_skin = TRUE
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/polonium/on_mob_life(mob/living/M)
|
||||
M.apply_effect(8, IRRADIATE, negate_armor = 1)
|
||||
@@ -429,7 +429,7 @@
|
||||
description = "Formaldehyde is a common industrial chemical and is used to preserve corpses and medical samples. It is highly toxic and irritating."
|
||||
reagent_state = LIQUID
|
||||
color = "#DED6D0"
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/formaldehyde/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
@@ -445,7 +445,7 @@
|
||||
color = "#CF3600"
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 40
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/venom/on_mob_life(mob/living/M)
|
||||
if(prob(25))
|
||||
@@ -513,7 +513,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600"
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/cyanide/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
@@ -536,7 +536,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#B0B0B0"
|
||||
metabolization_rate = 0.3
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/itching_powder/on_mob_life(mob/living/M)
|
||||
if(prob(25))
|
||||
@@ -632,7 +632,7 @@
|
||||
description = "A highly potent cardiac poison - can kill within minutes."
|
||||
reagent_state = LIQUID
|
||||
color = "#7F10C0"
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/initropidril/on_mob_life(mob/living/M)
|
||||
if(prob(33))
|
||||
@@ -695,7 +695,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#5F8BE1"
|
||||
metabolization_rate = 0.7
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/sodium_thiopental/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
@@ -722,8 +722,8 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#646EA0"
|
||||
metabolization_rate = 0.8
|
||||
penetrates_skin = 1
|
||||
can_synth = 0
|
||||
penetrates_skin = TRUE
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/ketamine/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
@@ -808,7 +808,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#C2D8CD"
|
||||
metabolization_rate = 0.05
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/coniine/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(2)
|
||||
@@ -822,7 +822,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#191919"
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/curare/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
@@ -870,7 +870,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#C7C7C7"
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
penetrates_skin = TRUE
|
||||
overdose_threshold = 25
|
||||
|
||||
/datum/reagent/sarin/on_mob_life(mob/living/M)
|
||||
@@ -939,13 +939,13 @@
|
||||
W.visible_message("<span class='warning'>The fungi are completely dissolved by the solution!</span>")
|
||||
|
||||
/datum/reagent/glyphosate/reaction_obj(obj/O, volume)
|
||||
if(istype(O,/obj/structure/alien/weeds/))
|
||||
if(istype(O,/obj/structure/alien/weeds))
|
||||
var/obj/structure/alien/weeds/alien_weeds = O
|
||||
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
|
||||
alien_weeds.healthcheck()
|
||||
else if(istype(O, /obj/structure/glowshroom)) //even a small amount is enough to kill it
|
||||
qdel(O)
|
||||
else if(istype(O,/obj/structure/spacevine))
|
||||
else if(istype(O, /obj/structure/spacevine))
|
||||
var/obj/structure/spacevine/SV = O
|
||||
SV.on_chem_effect(src)
|
||||
|
||||
|
||||
@@ -98,8 +98,7 @@
|
||||
qdel(hotspot)
|
||||
|
||||
/datum/reagent/water/reaction_obj(obj/O, volume)
|
||||
if(istype(O))
|
||||
O.extinguish()
|
||||
O.extinguish()
|
||||
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
|
||||
@@ -130,17 +129,15 @@
|
||||
color = "#61C2C2"
|
||||
|
||||
/datum/reagent/space_cleaner/reaction_obj(obj/O, volume)
|
||||
if(O && !istype(O, /atom/movable/lighting_overlay))
|
||||
O.color = initial(O.color)
|
||||
if(istype(O, /obj/effect/decal/cleanable))
|
||||
qdel(O)
|
||||
else if(O)
|
||||
else
|
||||
O.color = initial(O.color)
|
||||
O.clean_blood()
|
||||
|
||||
/datum/reagent/space_cleaner/reaction_turf(turf/T, volume)
|
||||
if(volume >= 1)
|
||||
if(T)
|
||||
T.color = initial(T.color)
|
||||
T.color = initial(T.color)
|
||||
T.clean_blood()
|
||||
for(var/obj/effect/decal/cleanable/C in src)
|
||||
qdel(C)
|
||||
@@ -428,7 +425,7 @@
|
||||
description = "YOUR FLESH! IT BURNS!"
|
||||
process_flags = ORGANIC | SYNTHETIC //Admin-bus has no brakes! KILL THEM ALL.
|
||||
metabolization_rate = 1
|
||||
can_synth = 0
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/hellwater/on_mob_life(mob/living/M)
|
||||
M.fire_stacks = min(5, M.fire_stacks + 3)
|
||||
@@ -446,7 +443,7 @@
|
||||
reagent_state = LIQUID
|
||||
|
||||
/datum/reagent/liquidgibs/reaction_turf(turf/T, volume) //yes i took it from synthflesh...
|
||||
if(volume >= 5 && !istype(T, /turf/space))
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
|
||||
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user