mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-29 03:21:30 +00:00
Merge resolution.
This commit is contained in:
@@ -1,66 +1,23 @@
|
||||
/proc/mix_color_from_reagents(var/list/reagent_list)
|
||||
if(!reagent_list || !length(reagent_list))
|
||||
return 0
|
||||
/datum/reagents/proc/get_color()
|
||||
if(!reagent_list || !reagent_list.len)
|
||||
return "#ffffffff"
|
||||
if(reagent_list.len == 1) // It's pretty common and saves a lot of work
|
||||
var/datum/reagent/R = reagent_list[1]
|
||||
return R.color
|
||||
|
||||
var/contents = length(reagent_list)
|
||||
var/list/weight = new /list(contents)
|
||||
var/list/redcolor = new /list(contents)
|
||||
var/list/greencolor = new /list(contents)
|
||||
var/list/bluecolor = new /list(contents)
|
||||
var/i
|
||||
var/list/colors = list(0, 0, 0, 0)
|
||||
var/tot_w = 0
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
var/hex = uppertext(R.color)
|
||||
if(length(hex) == 7)
|
||||
hex += "FF"
|
||||
if(length(hex) != 9) // PANIC PANIC PANIC
|
||||
warning("Reagent [R.id] has an incorrect color set ([R.color])")
|
||||
hex = "#FFFFFFFF"
|
||||
colors[1] += hex2num(copytext(hex, 2, 4)) * R.volume * R.color_weight
|
||||
colors[2] += hex2num(copytext(hex, 4, 6)) * R.volume * R.color_weight
|
||||
colors[3] += hex2num(copytext(hex, 6, 8)) * R.volume * R.color_weight
|
||||
colors[4] += hex2num(copytext(hex, 8, 10)) * R.volume * R.color_weight
|
||||
tot_w += R.volume * R.color_weight
|
||||
|
||||
//fill the list of weights
|
||||
for(i=1; i<=contents; i++)
|
||||
var/datum/reagent/re = reagent_list[i]
|
||||
var/reagentweight = re.volume
|
||||
if(istype(re, /datum/reagent/paint))
|
||||
reagentweight *= 20 //Paint colours a mixture twenty times as much
|
||||
weight[i] = reagentweight
|
||||
|
||||
|
||||
//fill the lists of colours
|
||||
for(i=1; i<=contents; i++)
|
||||
var/datum/reagent/re = reagent_list[i]
|
||||
var/hue = re.color
|
||||
if(length(hue) != 7)
|
||||
return 0
|
||||
redcolor[i]=hex2num(copytext(hue,2,4))
|
||||
greencolor[i]=hex2num(copytext(hue,4,6))
|
||||
bluecolor[i]=hex2num(copytext(hue,6,8))
|
||||
|
||||
//mix all the colors
|
||||
var/red = mixOneColor(weight,redcolor)
|
||||
var/green = mixOneColor(weight,greencolor)
|
||||
var/blue = mixOneColor(weight,bluecolor)
|
||||
|
||||
//assemble all the pieces
|
||||
var/finalcolor = rgb(red, green, blue)
|
||||
return finalcolor
|
||||
|
||||
/proc/mixOneColor(var/list/weight, var/list/color)
|
||||
if (!weight || !color || length(weight)!=length(color))
|
||||
return 0
|
||||
|
||||
var/contents = length(weight)
|
||||
var/i
|
||||
|
||||
//normalize weights
|
||||
var/listsum = 0
|
||||
for(i=1; i<=contents; i++)
|
||||
listsum += weight[i]
|
||||
for(i=1; i<=contents; i++)
|
||||
weight[i] /= listsum
|
||||
|
||||
//mix them
|
||||
var/mixedcolor = 0
|
||||
for(i=1; i<=contents; i++)
|
||||
mixedcolor += weight[i]*color[i]
|
||||
mixedcolor = round(mixedcolor)
|
||||
|
||||
//until someone writes a formal proof for this algorithm, let's keep this in
|
||||
// if(mixedcolor<0x00 || mixedcolor>0xFF)
|
||||
// return 0
|
||||
//that's not the kind of operation we are running here, nerd
|
||||
mixedcolor=min(max(mixedcolor,0),255)
|
||||
|
||||
return mixedcolor
|
||||
return rgb(colors[1] / tot_w, colors[2] / tot_w, colors[3] / tot_w, colors[4] / tot_w)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -37,19 +37,19 @@
|
||||
/obj/machinery/chem_master/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/machinery/chem_master/blob_act()
|
||||
if (prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/chem_master/meteorhit()
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob)
|
||||
@@ -751,7 +751,7 @@
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/remove_object(var/obj/item/O)
|
||||
holdingitems -= O
|
||||
del(O)
|
||||
qdel(O)
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/grind()
|
||||
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
#define ANTIDEPRESSANT_MESSAGE_DELAY 5*60*10
|
||||
|
||||
/datum/reagent/antidepressant/methylphenidate
|
||||
name = "Methylphenidate"
|
||||
id = "methylphenidate"
|
||||
description = "Improves the ability to concentrate."
|
||||
reagent_state = LIQUID
|
||||
color = "#BF80BF"
|
||||
custom_metabolism = 0.01
|
||||
data = 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(src.volume <= 0.1) if(data != -1)
|
||||
data = -1
|
||||
M << "\red You lose focus.."
|
||||
else
|
||||
if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
|
||||
data = world.time
|
||||
M << "\blue Your mind feels focused and undivided."
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/methylphenidate
|
||||
name = "Methylphenidate"
|
||||
id = "methylphenidate"
|
||||
result = "methylphenidate"
|
||||
required_reagents = list("mindbreaker" = 1, "hydrogen" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/reagent/antidepressant/citalopram
|
||||
name = "Citalopram"
|
||||
id = "citalopram"
|
||||
description = "Stabilizes the mind a little."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF80FF"
|
||||
custom_metabolism = 0.01
|
||||
data = 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(src.volume <= 0.1) if(data != -1)
|
||||
data = -1
|
||||
M << "\red Your mind feels a little less stable.."
|
||||
else
|
||||
if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
|
||||
data = world.time
|
||||
M << "\blue Your mind feels stable.. a little stable."
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/citalopram
|
||||
name = "Citalopram"
|
||||
id = "citalopram"
|
||||
result = "citalopram"
|
||||
required_reagents = list("mindbreaker" = 1, "carbon" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
/datum/reagent/antidepressant/paroxetine
|
||||
name = "Paroxetine"
|
||||
id = "paroxetine"
|
||||
description = "Stabilizes the mind greatly, but has a chance of adverse effects."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF80BF"
|
||||
custom_metabolism = 0.01
|
||||
data = 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(src.volume <= 0.1) if(data != -1)
|
||||
data = -1
|
||||
M << "\red Your mind feels much less stable.."
|
||||
else
|
||||
if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
|
||||
data = world.time
|
||||
if(prob(90))
|
||||
M << "\blue Your mind feels much more stable."
|
||||
else
|
||||
M << "\red Your mind breaks apart.."
|
||||
M.hallucination += 200
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/paroxetine
|
||||
name = "Paroxetine"
|
||||
id = "paroxetine"
|
||||
result = "paroxetine"
|
||||
required_reagents = list("mindbreaker" = 1, "oxygen" = 1, "inaprovaline" = 1)
|
||||
result_amount = 3
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,225 @@
|
||||
/datum/reagent/blood
|
||||
data = new/list("donor"=null,"viruses"=null,"species"="Human","blood_DNA"=null,"blood_type"=null,"blood_colour"= "#A10808","resistances"=null,"trace_chem"=null, "antibodies" = list())
|
||||
name = "Blood"
|
||||
id = "blood"
|
||||
reagent_state = LIQUID
|
||||
color = "#C80000" // rgb: 200, 0, 0
|
||||
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of tomato juice"
|
||||
glass_desc = "Are you sure this is tomato juice?"
|
||||
|
||||
/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["viruses"])
|
||||
for(var/datum/disease/D in self.data["viruses"])
|
||||
//var/datum/disease/virus = new D.type(0, D, 1)
|
||||
// We don't spread.
|
||||
if(D.spread_type == SPECIAL || D.spread_type == NON_CONTAGIOUS) continue
|
||||
|
||||
if(method == TOUCH)
|
||||
M.contract_disease(D)
|
||||
else //injected
|
||||
M.contract_disease(D, 1, 0)
|
||||
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]
|
||||
|
||||
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"]
|
||||
|
||||
/datum/reagent/blood/on_merge(var/newdata, var/newamount)
|
||||
if(!data || !newdata)
|
||||
return
|
||||
if(newdata["blood_colour"])
|
||||
color = newdata["blood_colour"]
|
||||
if(data && newdata)
|
||||
if(data["viruses"] || newdata["viruses"])
|
||||
|
||||
var/list/mix1 = data["viruses"]
|
||||
var/list/mix2 = newdata["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
|
||||
return ..()
|
||||
|
||||
/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
|
||||
if(!(volume >= 3)) return
|
||||
|
||||
if(!self.data["donor"] || istype(self.data["donor"], /mob/living/carbon/human))
|
||||
blood_splatter(T,self,1)
|
||||
else if(istype(self.data["donor"], /mob/living/carbon/alien))
|
||||
var/obj/effect/decal/cleanable/blood/B = blood_splatter(T,self,1)
|
||||
if(B) B.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*"
|
||||
if(volume >= 5 && !istype(T.loc, /area/chapel)) //blood desanctifies non-chapel tiles
|
||||
T.holy = 0
|
||||
return
|
||||
|
||||
/* Must check the transfering of reagents and their data first. They all can point to one disease datum.
|
||||
|
||||
/datum/reagent/blood/Destroy()
|
||||
if(src.data["virus"])
|
||||
var/datum/disease/D = src.data["virus"]
|
||||
D.cure(0)
|
||||
..()
|
||||
*/
|
||||
|
||||
/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
|
||||
|
||||
#define WATER_LATENT_HEAT 19000 // How much heat is removed when applied to a hot turf, in J/unit (19000 makes 120 u of water roughly equivalent to 4L)
|
||||
/datum/reagent/water
|
||||
name = "Water"
|
||||
id = "water"
|
||||
description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen."
|
||||
reagent_state = LIQUID
|
||||
color = "#0064C877" // rgb: 0, 100, 200
|
||||
custom_metabolism = 0.01
|
||||
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of water"
|
||||
glass_desc = "The father of all refreshments."
|
||||
|
||||
/datum/reagent/water/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
if (!istype(T)) return
|
||||
|
||||
//If the turf is hot enough, remove some heat
|
||||
var/datum/gas_mixture/environment = T.return_air()
|
||||
var/min_temperature = T0C + 100 //100C, the boiling point of water
|
||||
|
||||
if (environment && environment.temperature > min_temperature) //abstracted as steam or something
|
||||
var/removed_heat = between(0, volume*WATER_LATENT_HEAT, -environment.get_thermal_energy_change(min_temperature))
|
||||
environment.add_thermal_energy(-removed_heat)
|
||||
if (prob(5))
|
||||
T.visible_message("\red The water sizzles as it lands on \the [T]!")
|
||||
|
||||
else //otherwise, the turf gets wet
|
||||
if(volume >= 3)
|
||||
if(T.wet >= 1) return
|
||||
T.wet = 1
|
||||
if(T.wet_overlay)
|
||||
T.overlays -= T.wet_overlay
|
||||
T.wet_overlay = null
|
||||
T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor")
|
||||
T.overlays += T.wet_overlay
|
||||
|
||||
src = null
|
||||
spawn(800)
|
||||
if (!istype(T)) return
|
||||
if(T.wet >= 2) return
|
||||
T.wet = 0
|
||||
if(T.wet_overlay)
|
||||
T.overlays -= T.wet_overlay
|
||||
T.wet_overlay = null
|
||||
|
||||
//Put out fires.
|
||||
var/hotspot = (locate(/obj/fire) in T)
|
||||
if(hotspot)
|
||||
qdel(hotspot)
|
||||
if(environment)
|
||||
environment.react() //react at the new temperature
|
||||
|
||||
/datum/reagent/water/reaction_obj(var/obj/O, var/volume)
|
||||
var/turf/T = get_turf(O)
|
||||
var/hotspot = (locate(/obj/fire) in T)
|
||||
if(hotspot && !istype(T, /turf/space))
|
||||
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles )
|
||||
lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
|
||||
lowertemp.react()
|
||||
T.assume_air(lowertemp)
|
||||
qdel(hotspot)
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
|
||||
if(!cube.wrapped)
|
||||
cube.Expand()
|
||||
|
||||
/datum/reagent/water/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
if (istype(M, /mob/living/carbon/slime))
|
||||
var/mob/living/carbon/slime/S = M
|
||||
S.apply_water(volume)
|
||||
if(method == TOUCH && isliving(M))
|
||||
M.adjust_fire_stacks(-(volume / 10))
|
||||
if(M.fire_stacks <= 0)
|
||||
M.ExtinguishMob()
|
||||
return
|
||||
|
||||
/datum/reagent/fuel
|
||||
name = "Welding fuel"
|
||||
id = "fuel"
|
||||
description = "Required for welders. Flamable."
|
||||
reagent_state = LIQUID
|
||||
color = "#660000" // rgb: 102, 0, 0
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
glass_icon_state = "dr_gibb_glass"
|
||||
glass_name = "glass of welder fuel"
|
||||
glass_desc = "Unless you are an industrial tool, this is probably not safe for consumption."
|
||||
|
||||
/datum/reagent/fuel/reaction_obj(var/obj/O, var/volume)
|
||||
var/turf/the_turf = get_turf(O)
|
||||
if(!the_turf)
|
||||
return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO
|
||||
new /obj/effect/decal/cleanable/liquid_fuel(the_turf, volume)
|
||||
/datum/reagent/fuel/reaction_turf(var/turf/T, var/volume)
|
||||
new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
|
||||
return
|
||||
/datum/reagent/fuel/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
/datum/reagent/fuel/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite!
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 10)
|
||||
return
|
||||
@@ -0,0 +1,405 @@
|
||||
/datum/reagent/aluminum
|
||||
name = "Aluminum"
|
||||
id = "aluminum"
|
||||
description = "A silvery white and ductile member of the boron group of chemical elements."
|
||||
reagent_state = SOLID
|
||||
color = "#A8A8A8" // rgb: 168, 168, 168
|
||||
|
||||
/datum/reagent/carbon
|
||||
name = "Carbon"
|
||||
id = "carbon"
|
||||
description = "A chemical element, the builing block of life."
|
||||
reagent_state = SOLID
|
||||
color = "#1C1300" // rgb: 30, 20, 0
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/carbon/reaction_turf(var/turf/T, var/volume)
|
||||
src = null
|
||||
if(!istype(T, /turf/space))
|
||||
var/obj/effect/decal/cleanable/dirt/dirtoverlay = locate(/obj/effect/decal/cleanable/dirt, T)
|
||||
if (!dirtoverlay)
|
||||
dirtoverlay = new/obj/effect/decal/cleanable/dirt(T)
|
||||
dirtoverlay.alpha = volume*30
|
||||
else
|
||||
dirtoverlay.alpha = min(dirtoverlay.alpha+volume*30, 255)
|
||||
|
||||
/datum/reagent/chlorine
|
||||
name = "Chlorine"
|
||||
id = "chlorine"
|
||||
description = "A chemical element with a characteristic odour."
|
||||
reagent_state = GAS
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/chlorine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.take_organ_damage(1*REM, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/copper
|
||||
name = "Copper"
|
||||
id = "copper"
|
||||
description = "A highly ductile metal."
|
||||
color = "#6E3B08" // rgb: 110, 59, 8
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/ethanol
|
||||
name = "Ethanol" //Parent class for all alcoholic reagents.
|
||||
id = "ethanol"
|
||||
description = "A well-known alcohol with a variety of applications."
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 0 //So alcohol can fill you up! If they want to.
|
||||
color = "#404030" // rgb: 64, 64, 48
|
||||
var/boozepwr = 5 //higher numbers mean the booze will have an effect faster.
|
||||
var/dizzy_adj = 3
|
||||
var/adj_drowsy = 0
|
||||
var/adj_sleepy = 0
|
||||
var/slurr_adj = 3
|
||||
var/confused_adj = 2
|
||||
var/slur_start = 90 //amount absorbed after which mob starts slurring
|
||||
var/confused_start = 150 //amount absorbed after which mob starts confusing directions
|
||||
var/blur_start = 300 //amount absorbed after which mob starts getting blurred vision
|
||||
var/pass_out = 400 //amount absorbed after which mob starts passing out
|
||||
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of ethanol"
|
||||
glass_desc = "A well-known alcohol with a variety of applications."
|
||||
|
||||
/datum/reagent/ethanol/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
M:nutrition += nutriment_factor
|
||||
holder.remove_reagent(src.id, (alien ? FOOD_METABOLISM : ALCOHOL_METABOLISM)) // Catch-all for creatures without livers.
|
||||
|
||||
if (adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy)
|
||||
if (adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy)
|
||||
|
||||
if(!src.data || (!isnum(src.data) && src.data.len)) data = 1 //if it doesn't exist we set it. if it's a list we're going to set it to 1 as well. This is to
|
||||
src.data += boozepwr //avoid a runtime error associated with drinking blood mixed in drinks (demon's blood).
|
||||
|
||||
var/d = data
|
||||
|
||||
// make all the beverages work together
|
||||
for(var/datum/reagent/ethanol/A in holder.reagent_list)
|
||||
if(A != src && isnum(A.data)) d += A.data
|
||||
|
||||
if(alien && alien == IS_SKRELL) //Skrell get very drunk very quickly.
|
||||
d*=5
|
||||
|
||||
M.dizziness += dizzy_adj.
|
||||
if(d >= slur_start && d < pass_out)
|
||||
if (!M:slurring) M:slurring = 1
|
||||
M:slurring += slurr_adj
|
||||
if(d >= confused_start && prob(33))
|
||||
if (!M:confused) M:confused = 1
|
||||
M.confused = max(M:confused+confused_adj,0)
|
||||
if(d >= blur_start)
|
||||
M.eye_blurry = max(M.eye_blurry, 10)
|
||||
M:drowsyness = max(M:drowsyness, 0)
|
||||
if(d >= pass_out)
|
||||
M:paralysis = max(M:paralysis, 20)
|
||||
M:drowsyness = max(M:drowsyness, 30)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/liver/L = H.internal_organs_by_name["liver"]
|
||||
if (!L)
|
||||
H.adjustToxLoss(5)
|
||||
else if(istype(L))
|
||||
L.take_damage(0.1, 1)
|
||||
H.adjustToxLoss(0.1)
|
||||
..()
|
||||
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
|
||||
paperaffected.clearpaper()
|
||||
usr << "The solution dissolves the ink on the paper."
|
||||
if(istype(O,/obj/item/weapon/book))
|
||||
if(istype(O,/obj/item/weapon/book/tome))
|
||||
usr << "The solution does nothing. Whatever this is, it isn't normal ink."
|
||||
return
|
||||
if(volume >= 5)
|
||||
var/obj/item/weapon/book/affectedbook = O
|
||||
affectedbook.dat = null
|
||||
usr << "The solution dissolves the ink on the book."
|
||||
else
|
||||
usr << "It wasn't enough..."
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with ethanol isn't quite as good as fuel.
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 15)
|
||||
return
|
||||
|
||||
/datum/reagent/fluorine
|
||||
name = "Fluorine"
|
||||
id = "fluorine"
|
||||
description = "A highly-reactive chemical element."
|
||||
reagent_state = GAS
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/fluorine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/hydrogen
|
||||
name = "Hydrogen"
|
||||
id = "hydrogen"
|
||||
description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas."
|
||||
reagent_state = GAS
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/iron
|
||||
name = "Iron"
|
||||
id = "iron"
|
||||
description = "Pure iron is a metal."
|
||||
reagent_state = SOLID
|
||||
color = "#353535"
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/lithium
|
||||
name = "Lithium"
|
||||
id = "lithium"
|
||||
description = "A chemical element, used as antidepressant."
|
||||
reagent_state = SOLID
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/lithium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.canmove && !M.restrained() && istype(M.loc, /turf/space))
|
||||
step(M, pick(cardinal))
|
||||
if(prob(5)) M.emote(pick("twitch","drool","moan"))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/mercury
|
||||
name = "Mercury"
|
||||
id = "mercury"
|
||||
description = "A chemical element."
|
||||
reagent_state = LIQUID
|
||||
color = "#484848" // rgb: 72, 72, 72
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/mercury/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.canmove && !M.restrained() && istype(M.loc, /turf/space))
|
||||
step(M, pick(cardinal))
|
||||
if(prob(5)) M.emote(pick("twitch","drool","moan"))
|
||||
M.adjustBrainLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/nitrogen
|
||||
name = "Nitrogen"
|
||||
id = "nitrogen"
|
||||
description = "A colorless, odorless, tasteless gas."
|
||||
reagent_state = GAS
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/nitrogen/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(M.stat == 2) return
|
||||
if(alien && alien == IS_VOX)
|
||||
M.adjustOxyLoss(-2*REM)
|
||||
holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears.
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/oxygen
|
||||
name = "Oxygen"
|
||||
id = "oxygen"
|
||||
description = "A colorless, odorless gas."
|
||||
reagent_state = GAS
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/oxygen/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(M.stat == 2) return
|
||||
if(alien && alien == IS_VOX)
|
||||
M.adjustToxLoss(REAGENTS_METABOLISM)
|
||||
holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears.
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/phosphorus
|
||||
name = "Phosphorus"
|
||||
id = "phosphorus"
|
||||
description = "A chemical element, the backbone of biological energy carriers."
|
||||
reagent_state = SOLID
|
||||
color = "#832828" // rgb: 131, 40, 40
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/potassium
|
||||
name = "Potassium"
|
||||
id = "potassium"
|
||||
description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water."
|
||||
reagent_state = SOLID
|
||||
color = "#A0A0A0" // rgb: 160, 160, 160
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/radium
|
||||
name = "Radium"
|
||||
id = "radium"
|
||||
description = "Radium is an alkaline earth metal. It is extremely radioactive."
|
||||
reagent_state = SOLID
|
||||
color = "#C7C7C7" // rgb: 199,199,199
|
||||
|
||||
/datum/reagent/radium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(2*REM,IRRADIATE,0)
|
||||
// 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))
|
||||
C.antibodies |= V.antigen
|
||||
if(prob(50))
|
||||
M.radiation += 50 // curing it that way may kill you instead
|
||||
var/absorbed
|
||||
var/obj/item/organ/diona/nutrients/rad_organ = locate() in C.internal_organs
|
||||
if(rad_organ && !rad_organ.is_broken())
|
||||
absorbed = 1
|
||||
if(!absorbed)
|
||||
M.adjustToxLoss(100)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/radium/reaction_turf(var/turf/T, var/volume)
|
||||
src = null
|
||||
if(volume >= 3)
|
||||
if(!istype(T, /turf/space))
|
||||
var/obj/effect/decal/cleanable/greenglow/glow = locate(/obj/effect/decal/cleanable/greenglow, T)
|
||||
if(!glow)
|
||||
new /obj/effect/decal/cleanable/greenglow(T)
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/acid
|
||||
name = "Sulphuric acid"
|
||||
id = "sacid"
|
||||
description = "A very corrosive mineral acid with the molecular formula H2SO4."
|
||||
reagent_state = LIQUID
|
||||
color = "#DB5008" // rgb: 219, 80, 8
|
||||
toxpwr = 1
|
||||
var/meltprob = 10
|
||||
|
||||
/datum/reagent/toxin/acid/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.take_organ_damage(0, 1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/acid/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//magic numbers everywhere
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(H.head)
|
||||
if(prob(meltprob) && !H.head.unacidable)
|
||||
H << "<span class='danger'>Your headgear melts away but protects you from the acid!</span>"
|
||||
qdel(H.head)
|
||||
H.update_inv_head(0)
|
||||
H.update_hair(0)
|
||||
else
|
||||
H << "<span class='warning'>Your headgear protects you from the acid.</span>"
|
||||
return
|
||||
|
||||
if(H.wear_mask)
|
||||
if(prob(meltprob) && !H.wear_mask.unacidable)
|
||||
H << "<span class='danger'>Your mask melts away but protects you from the acid!</span>"
|
||||
qdel (H.wear_mask)
|
||||
H.update_inv_wear_mask(0)
|
||||
H.update_hair(0)
|
||||
else
|
||||
H << "<span class='warning'>Your mask protects you from the acid.</span>"
|
||||
return
|
||||
|
||||
if(H.glasses) //Doesn't protect you from the acid but can melt anyways!
|
||||
if(prob(meltprob) && !H.glasses.unacidable)
|
||||
H << "<span class='danger'>Your glasses melts away!</span>"
|
||||
qdel (H.glasses)
|
||||
H.update_inv_glasses(0)
|
||||
|
||||
if(!M.unacidable)
|
||||
if(istype(M, /mob/living/carbon/human) && volume >= 10)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/affecting = H.get_organ("head")
|
||||
if(affecting)
|
||||
if(affecting.take_damage(4*toxpwr, 2*toxpwr))
|
||||
H.UpdateDamageIcon()
|
||||
if(prob(meltprob)) //Applies disfigurement
|
||||
if (!(H.species && (H.species.flags & NO_PAIN)))
|
||||
H.emote("scream")
|
||||
H.status_flags |= DISFIGURED
|
||||
else
|
||||
M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl
|
||||
else
|
||||
if(!M.unacidable)
|
||||
M.take_organ_damage(min(6*toxpwr, volume * toxpwr))
|
||||
|
||||
/datum/reagent/toxin/acid/reaction_obj(var/obj/O, var/volume)
|
||||
if((istype(O,/obj/item) || istype(O,/obj/effect/plant)) && prob(meltprob * 3))
|
||||
if(!O.unacidable)
|
||||
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
|
||||
I.desc = "Looks like this was \an [O] some time ago."
|
||||
for(var/mob/M in viewers(5, O))
|
||||
M << "\red \the [O] melts."
|
||||
qdel(O)
|
||||
|
||||
/datum/reagent/silicon
|
||||
name = "Silicon"
|
||||
id = "silicon"
|
||||
description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon."
|
||||
reagent_state = SOLID
|
||||
color = "#A8A8A8" // rgb: 168, 168, 168
|
||||
|
||||
/datum/reagent/sodium
|
||||
name = "Sodium"
|
||||
id = "sodium"
|
||||
description = "A chemical element, readily reacts with water."
|
||||
reagent_state = SOLID
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/sugar
|
||||
name = "Sugar"
|
||||
id = "sugar"
|
||||
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
|
||||
reagent_state = SOLID
|
||||
color = "#FFFFFF" // rgb: 255, 255, 255
|
||||
|
||||
glass_icon_state = "iceglass"
|
||||
glass_name = "glass of sugar"
|
||||
glass_desc = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
|
||||
|
||||
/datum/reagent/sugar/on_mob_life(var/mob/living/M as mob)
|
||||
M.nutrition += 1*REM
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sulfur
|
||||
name = "Sulfur"
|
||||
id = "sulfur"
|
||||
description = "A chemical element with a pungent smell."
|
||||
reagent_state = SOLID
|
||||
color = "#BF8C00" // rgb: 191, 140, 0
|
||||
|
||||
custom_metabolism = 0.01
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,603 @@
|
||||
/datum/reagent/inaprovaline
|
||||
name = "Inaprovaline"
|
||||
id = "inaprovaline"
|
||||
description = "Inaprovaline is a synaptic stimulant and cardiostimulant. Commonly used to stabilize patients."
|
||||
reagent_state = LIQUID
|
||||
color = "#00BFFF" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE*2
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/inaprovaline/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(!M) M = holder.my_atom
|
||||
|
||||
if(alien && alien == IS_VOX)
|
||||
M.adjustToxLoss(REAGENTS_METABOLISM)
|
||||
else
|
||||
if(M.losebreath >= 10)
|
||||
M.losebreath = max(10, M.losebreath-5)
|
||||
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
/datum/reagent/bicaridine
|
||||
name = "Bicaridine"
|
||||
id = "bicaridine"
|
||||
description = "Bicaridine is an analgesic medication and can be used to treat blunt trauma."
|
||||
reagent_state = LIQUID
|
||||
color = "#BF0000" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/bicaridine/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(alien != IS_DIONA)
|
||||
M.heal_organ_damage(2*REM,0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/kelotane
|
||||
name = "Kelotane"
|
||||
id = "kelotane"
|
||||
description = "Kelotane is a drug used to treat burns."
|
||||
reagent_state = LIQUID
|
||||
color = "#FFA800" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/kelotane/on_mob_life(var/mob/living/M as mob)
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
//This needs a diona check but if one is added they won't be able to heal burn damage at all.
|
||||
M.heal_organ_damage(0,2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/dermaline
|
||||
name = "Dermaline"
|
||||
id = "dermaline"
|
||||
description = "Dermaline is the next step in burn medication. Works twice as good as kelotane and enables the body to restore even the direst heat-damaged tissue."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF8000" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE/2
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/dermaline/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(M.stat == 2.0) //THE GUY IS **DEAD**! BEREFT OF ALL LIFE HE RESTS IN PEACE etc etc. He does NOT metabolise shit anymore, god DAMN
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(!alien || alien != IS_DIONA)
|
||||
M.heal_organ_damage(0,3*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/anti_toxin
|
||||
name = "Dylovene"
|
||||
id = "anti_toxin"
|
||||
description = "Dylovene is a broad-spectrum antitoxin."
|
||||
reagent_state = LIQUID
|
||||
color = "#00A000" // rgb: 200, 165, 220
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/anti_toxin/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!alien || alien != IS_DIONA)
|
||||
M.reagents.remove_all_type(/datum/reagent/toxin, 1*REM, 0, 1)
|
||||
M.drowsyness = max(M.drowsyness-2*REM, 0)
|
||||
M.hallucination = max(0, M.hallucination - 5*REM)
|
||||
M.adjustToxLoss(-2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/dexalin
|
||||
name = "Dexalin"
|
||||
id = "dexalin"
|
||||
description = "Dexalin is used in the treatment of oxygen deprivation."
|
||||
reagent_state = LIQUID
|
||||
color = "#0080FF" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/dexalin/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(M.stat == 2.0)
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
|
||||
if(alien && alien == IS_VOX)
|
||||
M.adjustToxLoss(2*REM)
|
||||
else if(!alien || alien != IS_DIONA)
|
||||
M.adjustOxyLoss(-2*REM)
|
||||
|
||||
holder.remove_reagent("lexorin", 2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/dexalinp
|
||||
name = "Dexalin Plus"
|
||||
id = "dexalinp"
|
||||
description = "Dexalin Plus is used in the treatment of oxygen deprivation. It is highly effective."
|
||||
reagent_state = LIQUID
|
||||
color = "#0040FF" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE/2
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/dexalinp/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
|
||||
if(alien && alien == IS_VOX)
|
||||
M.adjustOxyLoss()
|
||||
else if(!alien || alien != IS_DIONA)
|
||||
M.adjustOxyLoss(-M.getOxyLoss())
|
||||
|
||||
holder.remove_reagent("lexorin", 2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/tricordrazine
|
||||
name = "Tricordrazine"
|
||||
id = "tricordrazine"
|
||||
description = "Tricordrazine is a highly potent stimulant, originally derived from cordrazine. Can be used to treat a wide range of injuries."
|
||||
reagent_state = LIQUID
|
||||
color = "#8040FF" // rgb: 200, 165, 220
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/tricordrazine/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(!alien || alien != IS_DIONA)
|
||||
if(M.getOxyLoss()) M.adjustOxyLoss(-1*REM)
|
||||
if(M.getBruteLoss() && prob(80)) M.heal_organ_damage(1*REM,0)
|
||||
if(M.getFireLoss() && prob(80)) M.heal_organ_damage(0,1*REM)
|
||||
if(M.getToxLoss() && prob(80)) M.adjustToxLoss(-1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/cryoxadone
|
||||
name = "Cryoxadone"
|
||||
id = "cryoxadone"
|
||||
description = "A chemical mixture with almost magical healing powers. Its main limitation is that the targets body temperature must be under 170K for it to metabolise correctly."
|
||||
reagent_state = LIQUID
|
||||
color = "#8080FF" // rgb: 200, 165, 220
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/cryoxadone/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.bodytemperature < 170)
|
||||
M.adjustCloneLoss(-1)
|
||||
M.adjustOxyLoss(-1)
|
||||
M.heal_organ_damage(1,1)
|
||||
M.adjustToxLoss(-1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/clonexadone
|
||||
name = "Clonexadone"
|
||||
id = "clonexadone"
|
||||
description = "A liquid compound similar to that used in the cloning process. Can be used to 'finish' the cloning process when used in conjunction with a cryo tube."
|
||||
reagent_state = LIQUID
|
||||
color = "#80BFFF" // rgb: 200, 165, 220
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/clonexadone/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.bodytemperature < 170)
|
||||
M.adjustCloneLoss(-3)
|
||||
M.adjustOxyLoss(-3)
|
||||
M.heal_organ_damage(3,3)
|
||||
M.adjustToxLoss(-3)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/paracetamol
|
||||
name = "Paracetamol"
|
||||
id = "paracetamol"
|
||||
description = "Most probably know this as Tylenol, but this chemical is a mild, simple painkiller."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
overdose = 60
|
||||
scannable = 1
|
||||
custom_metabolism = 0.025 // Lasts 10 minutes for 15 units
|
||||
|
||||
/datum/reagent/paracetamol/on_mob_life(var/mob/living/M as mob)
|
||||
if (volume > overdose)
|
||||
M.hallucination = max(M.hallucination, 2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/tramadol
|
||||
name = "Tramadol"
|
||||
id = "tramadol"
|
||||
description = "A simple, yet effective painkiller."
|
||||
reagent_state = LIQUID
|
||||
color = "#CB68FC"
|
||||
overdose = 30
|
||||
scannable = 1
|
||||
custom_metabolism = 0.025 // Lasts 10 minutes for 15 units
|
||||
|
||||
/datum/reagent/tramadol/on_mob_life(var/mob/living/M as mob)
|
||||
if (volume > overdose)
|
||||
M.hallucination = max(M.hallucination, 2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/oxycodone
|
||||
name = "Oxycodone"
|
||||
id = "oxycodone"
|
||||
description = "An effective and very addictive painkiller."
|
||||
reagent_state = LIQUID
|
||||
color = "#800080"
|
||||
overdose = 20
|
||||
custom_metabolism = 0.25 // Lasts 10 minutes for 15 units
|
||||
|
||||
/datum/reagent/oxycodone/on_mob_life(var/mob/living/M as mob)
|
||||
if (volume > overdose)
|
||||
M.druggy = max(M.druggy, 10)
|
||||
M.hallucination = max(M.hallucination, 3)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/synaptizine
|
||||
name = "Synaptizine"
|
||||
id = "synaptizine"
|
||||
description = "Synaptizine is used to treat various diseases."
|
||||
reagent_state = LIQUID
|
||||
color = "#99CCFF" // rgb: 200, 165, 220
|
||||
custom_metabolism = 0.01
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/synaptizine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.drowsyness = max(M.drowsyness-5, 0)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
holder.remove_reagent("mindbreaker", 5)
|
||||
M.hallucination = max(0, M.hallucination - 10)
|
||||
if(prob(60)) M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/alkysine
|
||||
name = "Alkysine"
|
||||
id = "alkysine"
|
||||
description = "Alkysine is a drug used to lessen the damage to neurological tissue after a catastrophic injury. Can heal brain tissue."
|
||||
reagent_state = LIQUID
|
||||
color = "#FFFF66" // rgb: 200, 165, 220
|
||||
custom_metabolism = 0.05
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
/datum/reagent/alkysine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustBrainLoss(-3*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/imidazoline
|
||||
name = "Imidazoline"
|
||||
id = "imidazoline"
|
||||
description = "Heals eye damage"
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/imidazoline/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.eye_blurry = max(M.eye_blurry-5 , 0)
|
||||
M.eye_blind = max(M.eye_blind-5 , 0)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/eyes/E = H.internal_organs_by_name["eyes"]
|
||||
if(E && istype(E))
|
||||
if(E.damage > 0)
|
||||
E.damage = max(E.damage - 1, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/peridaxon
|
||||
name = "Peridaxon"
|
||||
id = "peridaxon"
|
||||
description = "Used to encourage recovery of internal organs and nervous systems. Medicate cautiously."
|
||||
reagent_state = LIQUID
|
||||
color = "#561EC3" // rgb: 200, 165, 220
|
||||
overdose = 10
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/peridaxon/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
//Peridaxon heals only non-robotic organs
|
||||
for(var/obj/item/organ/I in H.internal_organs)
|
||||
if((I.damage > 0) && (I.robotic != 2))
|
||||
I.damage = max(I.damage - 0.20, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ryetalyn
|
||||
name = "Ryetalyn"
|
||||
id = "ryetalyn"
|
||||
description = "Ryetalyn can cure all genetic abnomalities via a catalytic process."
|
||||
reagent_state = SOLID
|
||||
color = "#004000" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/ryetalyn/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
|
||||
var/needs_update = M.mutations.len > 0
|
||||
|
||||
M.mutations = list()
|
||||
M.disabilities = 0
|
||||
M.sdisabilities = 0
|
||||
|
||||
// Might need to update appearance for hulk etc.
|
||||
if(needs_update && ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.update_mutations()
|
||||
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/hyperzine
|
||||
name = "Hyperzine"
|
||||
id = "hyperzine"
|
||||
description = "Hyperzine is a highly effective, long lasting, muscle stimulant."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF3300" // rgb: 200, 165, 220
|
||||
custom_metabolism = 0.03
|
||||
overdose = REAGENTS_OVERDOSE/2
|
||||
|
||||
/datum/reagent/hyperzine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(5)) M.emote(pick("twitch","blink_r","shiver"))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ethylredoxrazine // FUCK YOU, ALCOHOL
|
||||
name = "Ethylredoxrazine"
|
||||
id = "ethylredoxrazine"
|
||||
description = "A powerful oxidizer that reacts with ethanol."
|
||||
reagent_state = SOLID
|
||||
color = "#605048" // rgb: 96, 80, 72
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/ethylredoxrazine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.dizziness = 0
|
||||
M.drowsyness = 0
|
||||
M.stuttering = 0
|
||||
M.confused = 0
|
||||
M.reagents.remove_all_type(/datum/reagent/ethanol, 1*REM, 0, 1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/hyronalin
|
||||
name = "Hyronalin"
|
||||
id = "hyronalin"
|
||||
description = "Hyronalin is a medicinal drug used to counter the effect of radiation poisoning."
|
||||
reagent_state = LIQUID
|
||||
color = "#408000" // rgb: 200, 165, 220
|
||||
custom_metabolism = 0.05
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/hyronalin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.radiation = max(M.radiation-3*REM,0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/arithrazine
|
||||
name = "Arithrazine"
|
||||
id = "arithrazine"
|
||||
description = "Arithrazine is an unstable medication used for the most extreme cases of radiation poisoning."
|
||||
reagent_state = LIQUID
|
||||
color = "#008000" // rgb: 200, 165, 220
|
||||
custom_metabolism = 0.05
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/arithrazine/on_mob_life(var/mob/living/M as mob)
|
||||
if(M.stat == 2.0)
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
M.radiation = max(M.radiation-7*REM,0)
|
||||
M.adjustToxLoss(-1*REM)
|
||||
if(prob(15))
|
||||
M.take_organ_damage(1, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/spaceacillin
|
||||
name = "Spaceacillin"
|
||||
id = "spaceacillin"
|
||||
description = "An all-purpose antiviral agent."
|
||||
reagent_state = LIQUID
|
||||
color = "#C1C1C1" // rgb: 200, 165, 220
|
||||
custom_metabolism = 0.01
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/spaceacillin/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sterilizine
|
||||
name = "Sterilizine"
|
||||
id = "sterilizine"
|
||||
description = "Sterilizes wounds in preparation for surgery."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
|
||||
//makes you squeaky clean
|
||||
/datum/reagent/sterilizine/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
if (method == TOUCH)
|
||||
M.germ_level -= min(volume*20, M.germ_level)
|
||||
|
||||
/datum/reagent/sterilizine/reaction_obj(var/obj/O, var/volume)
|
||||
O.germ_level -= min(volume*20, O.germ_level)
|
||||
|
||||
/datum/reagent/sterilizine/reaction_turf(var/turf/T, var/volume)
|
||||
T.germ_level -= min(volume*20, T.germ_level)
|
||||
|
||||
/* reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
src = null
|
||||
if (method==TOUCH)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
if(M.health >= -100 && M.health <= 0)
|
||||
M.crit_op_stage = 0.0
|
||||
if (method==INGEST)
|
||||
usr << "Well, that was stupid."
|
||||
M.adjustToxLoss(3)
|
||||
return
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.radiation += 3
|
||||
..()
|
||||
return
|
||||
*/
|
||||
|
||||
/datum/reagent/leporazine
|
||||
name = "Leporazine"
|
||||
id = "leporazine"
|
||||
description = "Leporazine can be use to stabilize an individuals body temperature."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/leporazine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
else if(M.bodytemperature < 311)
|
||||
M.bodytemperature = min(310, M.bodytemperature + (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
..()
|
||||
return
|
||||
|
||||
#define ANTIDEPRESSANT_MESSAGE_DELAY 5*60*10
|
||||
|
||||
/datum/reagent/antidepressant/methylphenidate
|
||||
name = "Methylphenidate"
|
||||
id = "methylphenidate"
|
||||
description = "Improves the ability to concentrate."
|
||||
reagent_state = LIQUID
|
||||
color = "#BF80BF"
|
||||
custom_metabolism = 0.01
|
||||
data = 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(src.volume <= 0.1) if(data != -1)
|
||||
data = -1
|
||||
M << "\red You lose focus.."
|
||||
else
|
||||
if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
|
||||
data = world.time
|
||||
M << "\blue Your mind feels focused and undivided."
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/methylphenidate
|
||||
name = "Methylphenidate"
|
||||
id = "methylphenidate"
|
||||
result = "methylphenidate"
|
||||
required_reagents = list("mindbreaker" = 1, "hydrogen" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/reagent/antidepressant/citalopram
|
||||
name = "Citalopram"
|
||||
id = "citalopram"
|
||||
description = "Stabilizes the mind a little."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF80FF"
|
||||
custom_metabolism = 0.01
|
||||
data = 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(src.volume <= 0.1) if(data != -1)
|
||||
data = -1
|
||||
M << "\red Your mind feels a little less stable.."
|
||||
else
|
||||
if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
|
||||
data = world.time
|
||||
M << "\blue Your mind feels stable.. a little stable."
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/citalopram
|
||||
name = "Citalopram"
|
||||
id = "citalopram"
|
||||
result = "citalopram"
|
||||
required_reagents = list("mindbreaker" = 1, "carbon" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
/datum/reagent/antidepressant/paroxetine
|
||||
name = "Paroxetine"
|
||||
id = "paroxetine"
|
||||
description = "Stabilizes the mind greatly, but has a chance of adverse effects."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF80BF"
|
||||
custom_metabolism = 0.01
|
||||
data = 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(src.volume <= 0.1) if(data != -1)
|
||||
data = -1
|
||||
M << "\red Your mind feels much less stable.."
|
||||
else
|
||||
if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
|
||||
data = world.time
|
||||
if(prob(90))
|
||||
M << "\blue Your mind feels much more stable."
|
||||
else
|
||||
M << "\red Your mind breaks apart.."
|
||||
M.hallucination += 200
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/paroxetine
|
||||
name = "Paroxetine"
|
||||
id = "paroxetine"
|
||||
result = "paroxetine"
|
||||
required_reagents = list("mindbreaker" = 1, "oxygen" = 1, "inaprovaline" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/reagent/rezadone
|
||||
name = "Rezadone"
|
||||
id = "rezadone"
|
||||
description = "A powder derived from fish toxin, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects."
|
||||
reagent_state = SOLID
|
||||
color = "#669900" // rgb: 102, 153, 0
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/rezadone/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
data++
|
||||
switch(data)
|
||||
if(1 to 15)
|
||||
M.adjustCloneLoss(-1)
|
||||
M.heal_organ_damage(1,1)
|
||||
if(15 to 35)
|
||||
M.adjustCloneLoss(-2)
|
||||
M.heal_organ_damage(2,1)
|
||||
M.status_flags &= ~DISFIGURED
|
||||
if(35 to INFINITY)
|
||||
M.adjustToxLoss(1)
|
||||
M.make_dizzy(5)
|
||||
M.make_jittery(5)
|
||||
|
||||
..()
|
||||
return
|
||||
@@ -0,0 +1,389 @@
|
||||
/datum/reagent/crayon_dust
|
||||
name = "Crayon dust"
|
||||
id = "crayon_dust"
|
||||
description = "Intensely coloured powder obtained by grinding crayons."
|
||||
reagent_state = LIQUID
|
||||
color = "#888888"
|
||||
overdose = 5
|
||||
|
||||
/datum/reagent/crayon_dust/red
|
||||
name = "Red crayon dust"
|
||||
id = "crayon_dust_red"
|
||||
color = "#FE191A"
|
||||
|
||||
/datum/reagent/crayon_dust/orange
|
||||
name = "Orange crayon dust"
|
||||
id = "crayon_dust_orange"
|
||||
color = "#FFBE4F"
|
||||
|
||||
/datum/reagent/crayon_dust/yellow
|
||||
name = "Yellow crayon dust"
|
||||
id = "crayon_dust_yellow"
|
||||
color = "#FDFE7D"
|
||||
|
||||
/datum/reagent/crayon_dust/green
|
||||
name = "Green crayon dust"
|
||||
id = "crayon_dust_green"
|
||||
color = "#18A31A"
|
||||
|
||||
/datum/reagent/crayon_dust/blue
|
||||
name = "Blue crayon dust"
|
||||
id = "crayon_dust_blue"
|
||||
color = "#247CFF"
|
||||
|
||||
/datum/reagent/crayon_dust/purple
|
||||
name = "Purple crayon dust"
|
||||
id = "crayon_dust_purple"
|
||||
color = "#CC0099"
|
||||
|
||||
/datum/reagent/crayon_dust/grey //Mime
|
||||
name = "Grey crayon dust"
|
||||
id = "crayon_dust_grey"
|
||||
color = "#808080"
|
||||
|
||||
/datum/reagent/crayon_dust/brown //Rainbow
|
||||
name = "Brown crayon dust"
|
||||
id = "crayon_dust_brown"
|
||||
color = "#846F35"
|
||||
|
||||
/datum/reagent/paint
|
||||
name = "Paint"
|
||||
id = "paint"
|
||||
description = "This paint will stick to almost any object."
|
||||
reagent_state = LIQUID
|
||||
color = "#808080"
|
||||
overdose = 15
|
||||
color_weight = 20
|
||||
|
||||
/datum/reagent/paint/New()
|
||||
..()
|
||||
data = color
|
||||
|
||||
/datum/reagent/paint/reaction_turf(var/turf/T, var/volume)
|
||||
..()
|
||||
if(istype(T) && !istype(T, /turf/space))
|
||||
T.color = color
|
||||
|
||||
/datum/reagent/paint/reaction_obj(var/obj/O, var/volume)
|
||||
..()
|
||||
if(istype(O,/obj))
|
||||
O.color = color
|
||||
|
||||
/datum/reagent/paint/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
..()
|
||||
if(istype(M,/mob) && !istype(M,/mob/dead))
|
||||
//painting ghosts: not allowed
|
||||
M.color = color
|
||||
|
||||
/datum/reagent/paint/on_merge(var/newdata, var/newamount)
|
||||
if(!data || !newdata)
|
||||
return
|
||||
var/list/colors = list(0, 0, 0, 0)
|
||||
var/tot_w = 0
|
||||
|
||||
var/hex1 = uppertext(color)
|
||||
var/hex2 = uppertext(newdata)
|
||||
if(length(hex1) == 7)
|
||||
hex1 += "FF"
|
||||
if(length(hex2) == 7)
|
||||
hex2 += "FF"
|
||||
if(length(hex1) != 9 || length(hex2) != 9)
|
||||
return
|
||||
colors[1] += hex2num(copytext(hex1, 2, 4)) * volume
|
||||
colors[2] += hex2num(copytext(hex1, 4, 6)) * volume
|
||||
colors[3] += hex2num(copytext(hex1, 6, 8)) * volume
|
||||
colors[4] += hex2num(copytext(hex1, 8, 10)) * volume
|
||||
tot_w += volume
|
||||
colors[1] += hex2num(copytext(hex2, 2, 4)) * newamount
|
||||
colors[2] += hex2num(copytext(hex2, 4, 6)) * newamount
|
||||
colors[3] += hex2num(copytext(hex2, 6, 8)) * newamount
|
||||
colors[4] += hex2num(copytext(hex2, 8, 10)) * newamount
|
||||
tot_w += newamount
|
||||
|
||||
color = rgb(colors[1] / tot_w, colors[2] / tot_w, colors[3] / tot_w, colors[4] / tot_w)
|
||||
data = color
|
||||
return
|
||||
|
||||
/datum/reagent/adminordrazine //An OP chemical for admins
|
||||
name = "Adminordrazine"
|
||||
id = "adminordrazine"
|
||||
description = "It's magic. We don't have to explain it."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
|
||||
glass_icon_state = "golden_cup"
|
||||
glass_name = "golden cup"
|
||||
glass_desc = "It's magic. We don't have to explain it."
|
||||
|
||||
/datum/reagent/adminordrazine/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom ///This can even heal dead people.
|
||||
M.reagents.remove_all_type(/datum/reagent/toxin, 5*REM, 0, 1)
|
||||
M.setCloneLoss(0)
|
||||
M.setOxyLoss(0)
|
||||
M.radiation = 0
|
||||
M.heal_organ_damage(5,5)
|
||||
M.adjustToxLoss(-5)
|
||||
M.hallucination = 0
|
||||
M.setBrainLoss(0)
|
||||
M.disabilities = 0
|
||||
M.sdisabilities = 0
|
||||
M.eye_blurry = 0
|
||||
M.eye_blind = 0
|
||||
M.SetWeakened(0)
|
||||
M.SetStunned(0)
|
||||
M.SetParalysis(0)
|
||||
M.silent = 0
|
||||
M.dizziness = 0
|
||||
M.drowsyness = 0
|
||||
M.stuttering = 0
|
||||
M.confused = 0
|
||||
M.sleeping = 0
|
||||
M.jitteriness = 0
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
D.spread = "Remissive"
|
||||
D.stage--
|
||||
if(D.stage < 1)
|
||||
D.cure()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/gold
|
||||
name = "Gold"
|
||||
id = "gold"
|
||||
description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known."
|
||||
reagent_state = SOLID
|
||||
color = "#F7C430" // rgb: 247, 196, 48
|
||||
|
||||
/datum/reagent/silver
|
||||
name = "Silver"
|
||||
id = "silver"
|
||||
description = "A soft, white, lustrous transition metal, it has the highest electrical conductivity of any element and the highest thermal conductivity of any metal."
|
||||
reagent_state = SOLID
|
||||
color = "#D0D0D0" // rgb: 208, 208, 208
|
||||
|
||||
/datum/reagent/uranium
|
||||
name ="Uranium"
|
||||
id = "uranium"
|
||||
description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive."
|
||||
reagent_state = SOLID
|
||||
color = "#B8B8C0" // rgb: 184, 184, 192
|
||||
|
||||
/datum/reagent/uranium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(1,IRRADIATE,0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/uranium/reaction_turf(var/turf/T, var/volume)
|
||||
src = null
|
||||
if(volume >= 3)
|
||||
if(!istype(T, /turf/space))
|
||||
var/obj/effect/decal/cleanable/greenglow/glow = locate(/obj/effect/decal/cleanable/greenglow, T)
|
||||
if(!glow)
|
||||
new /obj/effect/decal/cleanable/greenglow(T)
|
||||
return
|
||||
|
||||
/datum/reagent/adrenaline
|
||||
name = "Adrenaline"
|
||||
id = "adrenaline"
|
||||
description = "Adrenaline is a hormone used as a drug to treat cardiac arrest and other cardiac dysrhythmias resulting in diminished or absent cardiac output."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
|
||||
/datum/reagent/adrenaline/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.SetParalysis(0)
|
||||
M.SetWeakened(0)
|
||||
M.adjustToxLoss(rand(3))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/water/holywater
|
||||
name = "Holy Water"
|
||||
id = "holywater"
|
||||
description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
|
||||
color = "#E0E8EF" // rgb: 224, 232, 239
|
||||
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of holy water"
|
||||
glass_desc = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
|
||||
|
||||
/datum/reagent/water/holywater/on_mob_life(var/mob/living/M as mob)
|
||||
if(ishuman(M))
|
||||
if(M.mind && cult.is_antagonist(M.mind) && prob(10))
|
||||
cult.remove_antagonist(M.mind)
|
||||
holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls.
|
||||
return
|
||||
|
||||
/datum/reagent/water/holywater/reaction_turf(var/turf/T, var/volume)
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
T.holy = 1
|
||||
return
|
||||
|
||||
/datum/reagent/ammonia
|
||||
name = "Ammonia"
|
||||
id = "ammonia"
|
||||
description = "A caustic substance commonly used in fertilizer or household cleaners."
|
||||
reagent_state = GAS
|
||||
color = "#404030" // rgb: 64, 64, 48
|
||||
|
||||
/datum/reagent/diethylamine
|
||||
name = "Diethylamine"
|
||||
id = "diethylamine"
|
||||
description = "A secondary amine, mildly corrosive."
|
||||
reagent_state = LIQUID
|
||||
color = "#604030" // rgb: 96, 64, 48
|
||||
|
||||
/datum/reagent/fluorosurfactant//foam precursor
|
||||
name = "Fluorosurfactant"
|
||||
id = "fluorosurfactant"
|
||||
description = "A perfluoronated sulfonic acid that forms a foam when mixed with water."
|
||||
reagent_state = LIQUID
|
||||
color = "#9E6B38" // rgb: 158, 107, 56
|
||||
|
||||
/datum/reagent/foaming_agent// Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually.
|
||||
name = "Foaming agent"
|
||||
id = "foaming_agent"
|
||||
description = "A agent that yields metallic foam when mixed with light metal and a strong acid."
|
||||
reagent_state = SOLID
|
||||
color = "#664B63" // rgb: 102, 75, 99
|
||||
|
||||
/datum/reagent/thermite
|
||||
name = "Thermite"
|
||||
id = "thermite"
|
||||
description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls."
|
||||
reagent_state = SOLID
|
||||
color = "#673910" // rgb: 103, 57, 16
|
||||
|
||||
/datum/reagent/thermite/reaction_turf(var/turf/T, var/volume)
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
if(istype(T, /turf/simulated/wall))
|
||||
var/turf/simulated/wall/W = T
|
||||
W.thermite = 1
|
||||
W.overlays += image('icons/effects/effects.dmi',icon_state = "#673910")
|
||||
return
|
||||
|
||||
/datum/reagent/thermite/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/space_cleaner
|
||||
name = "Space cleaner"
|
||||
id = "cleaner"
|
||||
description = "A compound used to clean things. Now with 50% more sodium hypochlorite!"
|
||||
reagent_state = LIQUID
|
||||
color = "#A5F0EE" // rgb: 165, 240, 238
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/space_cleaner/reaction_obj(var/obj/O, var/volume)
|
||||
if(istype(O,/obj/effect/decal/cleanable))
|
||||
qdel(O)
|
||||
else
|
||||
if(O)
|
||||
O.clean_blood()
|
||||
|
||||
/datum/reagent/space_cleaner/reaction_turf(var/turf/T, var/volume)
|
||||
if(volume >= 1)
|
||||
if(istype(T, /turf/simulated))
|
||||
var/turf/simulated/S = T
|
||||
S.dirt = 0
|
||||
T.clean_blood()
|
||||
for(var/obj/effect/decal/cleanable/C in T.contents)
|
||||
src.reaction_obj(C, volume)
|
||||
qdel(C)
|
||||
|
||||
for(var/mob/living/carbon/slime/M in T)
|
||||
M.adjustToxLoss(rand(5,10))
|
||||
|
||||
/datum/reagent/space_cleaner/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(C.r_hand)
|
||||
C.r_hand.clean_blood()
|
||||
if(C.l_hand)
|
||||
C.l_hand.clean_blood()
|
||||
if(C.wear_mask)
|
||||
if(C.wear_mask.clean_blood())
|
||||
C.update_inv_wear_mask(0)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = C
|
||||
if(H.head)
|
||||
if(H.head.clean_blood())
|
||||
H.update_inv_head(0)
|
||||
if(H.wear_suit)
|
||||
if(H.wear_suit.clean_blood())
|
||||
H.update_inv_wear_suit(0)
|
||||
else if(H.w_uniform)
|
||||
if(H.w_uniform.clean_blood())
|
||||
H.update_inv_w_uniform(0)
|
||||
if(H.shoes)
|
||||
if(H.shoes.clean_blood())
|
||||
H.update_inv_shoes(0)
|
||||
else
|
||||
H.clean_blood(1)
|
||||
return
|
||||
M.clean_blood()
|
||||
|
||||
/datum/reagent/lube
|
||||
name = "Space Lube"
|
||||
id = "lube"
|
||||
description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity."
|
||||
reagent_state = LIQUID
|
||||
color = "#009CA8" // rgb: 0, 156, 168
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/lube/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
if (!istype(T)) return
|
||||
src = null
|
||||
if(volume >= 1)
|
||||
if(T.wet >= 2) return
|
||||
T.wet = 2
|
||||
spawn(800)
|
||||
if (!istype(T)) return
|
||||
T.wet = 0
|
||||
if(T.wet_overlay)
|
||||
T.overlays -= T.wet_overlay
|
||||
T.wet_overlay = null
|
||||
return
|
||||
|
||||
/datum/reagent/silicate
|
||||
name = "Silicate"
|
||||
id = "silicate"
|
||||
description = "A compound that can be used to reinforce glass."
|
||||
reagent_state = LIQUID
|
||||
color = "#C7FFFF" // rgb: 199, 255, 255
|
||||
|
||||
/datum/reagent/silicate/reaction_obj(var/obj/O, var/volume)
|
||||
src = null
|
||||
if(istype(O,/obj/structure/window))
|
||||
var/obj/structure/window/W = O
|
||||
W.apply_silicate(volume)
|
||||
return
|
||||
|
||||
/datum/reagent/glycerol
|
||||
name = "Glycerol"
|
||||
id = "glycerol"
|
||||
description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity."
|
||||
reagent_state = LIQUID
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/nitroglycerin
|
||||
name = "Nitroglycerin"
|
||||
id = "nitroglycerin"
|
||||
description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol."
|
||||
reagent_state = LIQUID
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/ultraglue
|
||||
name = "Ultra Glue"
|
||||
id = "glue"
|
||||
description = "An extremely powerful bonding agent."
|
||||
color = "#FFFFCC" // rgb: 255, 255, 204
|
||||
@@ -0,0 +1,592 @@
|
||||
/datum/reagent/toxin
|
||||
name = "Toxin"
|
||||
id = "toxin"
|
||||
description = "A toxic chemical."
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
var/toxpwr = 0.7 // Toxins are really weak, but without being treated, last very long.
|
||||
custom_metabolism = 0.1
|
||||
|
||||
/datum/reagent/toxin/on_mob_life(var/mob/living/M as mob,var/alien)
|
||||
if(!M) M = holder.my_atom
|
||||
if(toxpwr)
|
||||
M.adjustToxLoss(toxpwr*REM)
|
||||
if(alien) ..() // Kind of a catch-all for aliens without the liver. Because this does not metabolize 'naturally', only removed by the liver.
|
||||
return
|
||||
|
||||
/datum/reagent/plasticide
|
||||
name = "Plasticide"
|
||||
id = "plasticide"
|
||||
description = "Liquid plastic, do not eat."
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
custom_metabolism = 0.01
|
||||
|
||||
/datum/reagent/plasticide/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
// Toxins are really weak, but without being treated, last very long.
|
||||
M.adjustToxLoss(0.2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/amatoxin
|
||||
name = "Amatoxin"
|
||||
id = "amatoxin"
|
||||
description = "A powerful poison derived from certain species of mushroom."
|
||||
reagent_state = LIQUID
|
||||
color = "#792300" // rgb: 121, 35, 0
|
||||
toxpwr = 1
|
||||
|
||||
/datum/reagent/toxin/carpotoxin
|
||||
name = "Carpotoxin"
|
||||
id = "carpotoxin"
|
||||
description = "A deadly neurotoxin produced by the dreaded space carp."
|
||||
reagent_state = LIQUID
|
||||
color = "#003333" // rgb: 0, 51, 51
|
||||
toxpwr = 2
|
||||
|
||||
/datum/reagent/toxin/phoron
|
||||
name = "Phoron"
|
||||
id = "phoron"
|
||||
description = "Phoron in its liquid form."
|
||||
reagent_state = LIQUID
|
||||
color = "#9D14DB"
|
||||
toxpwr = 3
|
||||
|
||||
/datum/reagent/toxin/phoron/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
holder.remove_reagent("inaprovaline", 2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/phoron/reaction_obj(var/obj/O, var/volume)
|
||||
src = null
|
||||
/*if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg/slime))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/egg/slime/egg = O
|
||||
if (egg.grown)
|
||||
egg.Hatch()*/
|
||||
if((!O) || (!volume)) return 0
|
||||
var/turf/the_turf = get_turf(O)
|
||||
the_turf.assume_gas("volatile_fuel", volume, T20C)
|
||||
|
||||
/datum/reagent/toxin/phoron/reaction_turf(var/turf/T, var/volume)
|
||||
src = null
|
||||
T.assume_gas("volatile_fuel", volume, T20C)
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/phoron/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with plasma is stronger than fuel!
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 5)
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/cyanide //Fast and Lethal
|
||||
name = "Cyanide"
|
||||
id = "cyanide"
|
||||
description = "A highly toxic chemical."
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
toxpwr = 4
|
||||
custom_metabolism = 0.4
|
||||
|
||||
/datum/reagent/toxin/cyanide/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustOxyLoss(4*REM)
|
||||
M.sleeping += 1
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/potassium_chloride
|
||||
name = "Potassium Chloride"
|
||||
id = "potassium_chloride"
|
||||
description = "A delicious salt that stops the heart when injected into cardiac muscle."
|
||||
reagent_state = SOLID
|
||||
color = "#FFFFFF" // rgb: 255,255,255
|
||||
toxpwr = 0
|
||||
overdose = 30
|
||||
|
||||
/datum/reagent/toxin/potassium_chloride/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.stat != 1)
|
||||
if (volume >= overdose)
|
||||
if(H.losebreath >= 10)
|
||||
H.losebreath = max(10, H.losebreath-10)
|
||||
H.adjustOxyLoss(2)
|
||||
H.Weaken(10)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/potassium_chlorophoride
|
||||
name = "Potassium Chlorophoride"
|
||||
id = "potassium_chlorophoride"
|
||||
description = "A specific chemical based on Potassium Chloride to stop the heart for surgery. Not safe to eat!"
|
||||
reagent_state = SOLID
|
||||
color = "#FFFFFF" // rgb: 255,255,255
|
||||
toxpwr = 2
|
||||
overdose = 20
|
||||
|
||||
/datum/reagent/toxin/potassium_chlorophoride/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.stat != 1)
|
||||
if(H.losebreath >= 10)
|
||||
H.losebreath = max(10, M.losebreath-10)
|
||||
H.adjustOxyLoss(2)
|
||||
H.Weaken(10)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/zombiepowder
|
||||
name = "Zombie Powder"
|
||||
id = "zombiepowder"
|
||||
description = "A strong neurotoxin that puts the subject into a death-like state."
|
||||
reagent_state = SOLID
|
||||
color = "#669900" // rgb: 102, 153, 0
|
||||
toxpwr = 0.5
|
||||
|
||||
/datum/reagent/toxin/zombiepowder/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.status_flags |= FAKEDEATH
|
||||
M.adjustOxyLoss(0.5*REM)
|
||||
M.Weaken(10)
|
||||
M.silent = max(M.silent, 10)
|
||||
M.tod = worldtime2text()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/zombiepowder/Destroy()
|
||||
if(holder && ismob(holder.my_atom))
|
||||
var/mob/M = holder.my_atom
|
||||
M.status_flags &= ~FAKEDEATH
|
||||
..()
|
||||
|
||||
//Reagents used for plant fertilizers.
|
||||
/datum/reagent/toxin/fertilizer
|
||||
name = "fertilizer"
|
||||
id = "fertilizer"
|
||||
description = "A chemical mix good for growing plants with."
|
||||
reagent_state = LIQUID
|
||||
toxpwr = 0.2 //It's not THAT poisonous.
|
||||
color = "#664330" // rgb: 102, 67, 48
|
||||
|
||||
/datum/reagent/toxin/fertilizer/eznutrient
|
||||
name = "EZ Nutrient"
|
||||
id = "eznutrient"
|
||||
|
||||
/datum/reagent/toxin/fertilizer/left4zed
|
||||
name = "Left-4-Zed"
|
||||
id = "left4zed"
|
||||
|
||||
/datum/reagent/toxin/fertilizer/robustharvest
|
||||
name = "Robust Harvest"
|
||||
id = "robustharvest"
|
||||
|
||||
/datum/reagent/toxin/plantbgone
|
||||
name = "Plant-B-Gone"
|
||||
id = "plantbgone"
|
||||
description = "A harmful toxic mixture to kill plantlife. Do not ingest!"
|
||||
reagent_state = LIQUID
|
||||
color = "#49002E" // rgb: 73, 0, 46
|
||||
toxpwr = 1
|
||||
|
||||
// Clear off wallrot fungi
|
||||
/datum/reagent/toxin/plantbgone/reaction_turf(var/turf/T, var/volume)
|
||||
if(istype(T, /turf/simulated/wall))
|
||||
var/turf/simulated/wall/W = T
|
||||
if(locate(/obj/effect/overlay/wallrot) in W)
|
||||
for(var/obj/effect/overlay/wallrot/E in W)
|
||||
qdel(E)
|
||||
W.visible_message("<span class='notice'>The fungi are completely dissolved by the solution!")
|
||||
|
||||
/datum/reagent/toxin/plantbgone/reaction_obj(var/obj/O, var/volume)
|
||||
if(istype(O,/obj/effect/alien/weeds/))
|
||||
var/obj/effect/alien/weeds/alien_weeds = O
|
||||
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
|
||||
alien_weeds.healthcheck()
|
||||
else if(istype(O,/obj/effect/plant))
|
||||
var/obj/effect/plant/plant = O
|
||||
plant.die_off()
|
||||
else if(istype(O,/obj/machinery/portable_atmospherics/hydroponics))
|
||||
var/obj/machinery/portable_atmospherics/hydroponics/tray = O
|
||||
|
||||
if(tray.seed)
|
||||
tray.health -= rand(30,50)
|
||||
if(tray.pestlevel > 0)
|
||||
tray.pestlevel -= 2
|
||||
if(tray.weedlevel > 0)
|
||||
tray.weedlevel -= 3
|
||||
tray.toxins += 4
|
||||
tray.check_level_sanity()
|
||||
tray.update_icon()
|
||||
|
||||
/datum/reagent/toxin/plantbgone/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
src = null
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(!C.wear_mask) // If not wearing a mask
|
||||
C.adjustToxLoss(2) // 4 toxic damage per application, doubled for some reason
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.dna)
|
||||
if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage
|
||||
H.adjustToxLoss(50)
|
||||
|
||||
/datum/reagent/toxin/acid/polyacid
|
||||
name = "Polytrinic acid"
|
||||
id = "pacid"
|
||||
description = "Polytrinic acid is a an extremely corrosive chemical substance."
|
||||
reagent_state = LIQUID
|
||||
color = "#8E18A9" // rgb: 142, 24, 169
|
||||
toxpwr = 2
|
||||
meltprob = 30
|
||||
|
||||
/datum/reagent/toxin/lexorin
|
||||
name = "Lexorin"
|
||||
id = "lexorin"
|
||||
description = "Lexorin temporarily stops respiration. Causes tissue damage."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
toxpwr = 0
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/toxin/lexorin/on_mob_life(var/mob/living/M as mob)
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(33))
|
||||
M.take_organ_damage(1*REM, 0)
|
||||
if(M.losebreath < 15)
|
||||
M.losebreath++
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/mutagen
|
||||
name = "Unstable mutagen"
|
||||
id = "mutagen"
|
||||
description = "Might cause unpredictable mutations. Keep away from children."
|
||||
reagent_state = LIQUID
|
||||
color = "#13BC5E" // rgb: 19, 188, 94
|
||||
toxpwr = 0
|
||||
|
||||
/datum/reagent/toxin/mutagen/reaction_mob(var/mob/living/carbon/M, var/method=TOUCH, var/volume)
|
||||
if(!..()) return
|
||||
if(!istype(M) || !M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
|
||||
src = null
|
||||
if((method==TOUCH && prob(33)) || method==INGEST)
|
||||
randmuti(M)
|
||||
if(prob(98)) randmutb(M)
|
||||
else randmutg(M)
|
||||
domutcheck(M, null)
|
||||
M.UpdateAppearance()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/mutagen/on_mob_life(var/mob/living/carbon/M)
|
||||
if(!istype(M)) return
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(10,IRRADIATE,0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/slimejelly
|
||||
name = "Slime Jelly"
|
||||
id = "slimejelly"
|
||||
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
|
||||
reagent_state = LIQUID
|
||||
color = "#801E28" // rgb: 128, 30, 40
|
||||
toxpwr = 0
|
||||
|
||||
/datum/reagent/toxin/slimejelly/on_mob_life(var/mob/living/M as mob)
|
||||
if(prob(10))
|
||||
M << "\red Your insides are burning!"
|
||||
M.adjustToxLoss(rand(20,60)*REM)
|
||||
else if(prob(40))
|
||||
M.heal_organ_damage(5*REM,0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/stoxin
|
||||
name = "Soporific"
|
||||
id = "stoxin"
|
||||
description = "An effective hypnotic used to treat insomnia."
|
||||
reagent_state = LIQUID
|
||||
color = "#009CA8" // rgb: 232, 149, 204
|
||||
toxpwr = 0
|
||||
custom_metabolism = 0.1
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/toxin/stoxin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
switch(data)
|
||||
if(1 to 12)
|
||||
if(prob(5)) M.emote("yawn")
|
||||
if(12 to 15)
|
||||
M.eye_blurry = max(M.eye_blurry, 10)
|
||||
if(15 to 49)
|
||||
if(prob(50))
|
||||
M.Weaken(2)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
if(50 to INFINITY)
|
||||
M.sleeping = max(M.sleeping, 20)
|
||||
M.drowsyness = max(M.drowsyness, 60)
|
||||
data++
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/chloralhydrate
|
||||
name = "Chloral Hydrate"
|
||||
id = "chloralhydrate"
|
||||
description = "A powerful sedative."
|
||||
reagent_state = SOLID
|
||||
color = "#000067" // rgb: 0, 0, 103
|
||||
toxpwr = 1
|
||||
custom_metabolism = 0.1 //Default 0.2
|
||||
overdose = 15
|
||||
overdose_dam = 5
|
||||
|
||||
/datum/reagent/toxin/chloralhydrate/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
data++
|
||||
switch(data)
|
||||
if(1)
|
||||
M.confused += 2
|
||||
M.drowsyness += 2
|
||||
if(2 to 20)
|
||||
M.Weaken(30)
|
||||
M.eye_blurry = max(M.eye_blurry, 10)
|
||||
if(20 to INFINITY)
|
||||
M.sleeping = max(M.sleeping, 30)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/beer2 //disguised as normal beer for use by emagged brobots
|
||||
name = "Beer"
|
||||
id = "beer2"
|
||||
description = "An alcoholic beverage made from malted grains, hops, yeast, and water. The fermentation appears to be incomplete." //If the players manage to analyze this, they deserve to know something is wrong.
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
custom_metabolism = 0.15 // Sleep toxins should always be consumed pretty fast
|
||||
overdose = REAGENTS_OVERDOSE/2
|
||||
|
||||
glass_icon_state = "beerglass"
|
||||
glass_name = "glass of beer"
|
||||
glass_desc = "A freezing pint of beer"
|
||||
glass_center_of_mass = list("x"=16, "y"=8)
|
||||
|
||||
/datum/reagent/toxin/beer2/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
switch(data)
|
||||
if(1)
|
||||
M.confused += 2
|
||||
M.drowsyness += 2
|
||||
if(2 to 50)
|
||||
M.sleeping += 1
|
||||
if(51 to INFINITY)
|
||||
M.sleeping += 1
|
||||
M.adjustToxLoss((data - 50)*REM)
|
||||
data++
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/space_drugs
|
||||
name = "Space drugs"
|
||||
id = "space_drugs"
|
||||
description = "An illegal chemical compound used as drug."
|
||||
reagent_state = LIQUID
|
||||
color = "#60A584" // rgb: 96, 165, 132
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/space_drugs/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(isturf(M.loc) && !istype(M.loc, /turf/space))
|
||||
if(M.canmove && !M.restrained())
|
||||
if(prob(10)) step(M, pick(cardinal))
|
||||
if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
/datum/reagent/serotrotium
|
||||
name = "Serotrotium"
|
||||
id = "serotrotium"
|
||||
description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans."
|
||||
reagent_state = LIQUID
|
||||
color = "#202040" // rgb: 20, 20, 40
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/serotrotium/on_mob_life(var/mob/living/M as mob)
|
||||
if(ishuman(M))
|
||||
if(prob(7)) M.emote(pick("twitch","drool","moan","gasp"))
|
||||
holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
/datum/reagent/cryptobiolin
|
||||
name = "Cryptobiolin"
|
||||
id = "cryptobiolin"
|
||||
description = "Cryptobiolin causes confusion and dizzyness."
|
||||
reagent_state = LIQUID
|
||||
color = "#000055" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/cryptobiolin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.make_dizzy(1)
|
||||
if(!M.confused) M.confused = 1
|
||||
M.confused = max(M.confused, 20)
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/impedrezene
|
||||
name = "Impedrezene"
|
||||
id = "impedrezene"
|
||||
description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/impedrezene/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.jitteriness = max(M.jitteriness-5,0)
|
||||
if(prob(80)) M.adjustBrainLoss(1*REM)
|
||||
if(prob(50)) M.drowsyness = max(M.drowsyness, 3)
|
||||
if(prob(10)) M.emote("drool")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/mindbreaker
|
||||
name = "Mindbreaker Toxin"
|
||||
id = "mindbreaker"
|
||||
description = "A powerful hallucinogen, it can cause fatal effects in users."
|
||||
reagent_state = LIQUID
|
||||
color = "#B31008" // rgb: 139, 166, 233
|
||||
toxpwr = 0
|
||||
custom_metabolism = 0.05
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/toxin/mindbreaker/on_mob_life(var/mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.hallucination += 10
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/psilocybin
|
||||
name = "Psilocybin"
|
||||
id = "psilocybin"
|
||||
description = "A strong psycotropic derived from certain species of mushroom."
|
||||
color = "#E700E7" // rgb: 231, 0, 231
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/psilocybin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.druggy = max(M.druggy, 30)
|
||||
if(!data) data = 1
|
||||
switch(data)
|
||||
if(1 to 5)
|
||||
if (!M.stuttering) M.stuttering = 1
|
||||
M.make_dizzy(5)
|
||||
if(prob(10)) M.emote(pick("twitch","giggle"))
|
||||
if(5 to 10)
|
||||
if (!M.stuttering) M.stuttering = 1
|
||||
M.make_jittery(10)
|
||||
M.make_dizzy(10)
|
||||
M.druggy = max(M.druggy, 35)
|
||||
if(prob(20)) M.emote(pick("twitch","giggle"))
|
||||
if (10 to INFINITY)
|
||||
if (!M.stuttering) M.stuttering = 1
|
||||
M.make_jittery(20)
|
||||
M.make_dizzy(20)
|
||||
M.druggy = max(M.druggy, 40)
|
||||
if(prob(30)) M.emote(pick("twitch","giggle"))
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
data++
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/nicotine
|
||||
name = "Nicotine"
|
||||
id = "nicotine"
|
||||
description = "A highly addictive stimulant extracted from the tobacco plant."
|
||||
reagent_state = LIQUID
|
||||
color = "#181818" // rgb: 24, 24, 24
|
||||
|
||||
/datum/reagent/slimetoxin
|
||||
name = "Mutation Toxin"
|
||||
id = "mutationtoxin"
|
||||
description = "A corruptive toxin produced by slimes."
|
||||
reagent_state = LIQUID
|
||||
color = "#13BC5E" // rgb: 19, 188, 94
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/datum/reagent/slimetoxin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/human = M
|
||||
if(human.species.name != "Slime")
|
||||
M << "<span class='danger'>Your flesh rapidly mutates!</span>"
|
||||
human.set_species("Slime")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/aslimetoxin
|
||||
name = "Advanced Mutation Toxin"
|
||||
id = "amutationtoxin"
|
||||
description = "An advanced corruptive toxin produced by slimes."
|
||||
reagent_state = LIQUID
|
||||
color = "#13BC5E" // rgb: 19, 188, 94
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
|
||||
/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.monkeyizing) return
|
||||
M.monkeyizing = 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_HURT
|
||||
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/nanites
|
||||
name = "Nanomachines"
|
||||
id = "nanites"
|
||||
description = "Microscopic construction robots."
|
||||
reagent_state = LIQUID
|
||||
color = "#535E66" // rgb: 83, 94, 102
|
||||
|
||||
/datum/reagent/nanites/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
src = null
|
||||
if( (prob(10) && method==TOUCH) || method==INGEST)
|
||||
M.contract_disease(new /datum/disease/robotic_transformation(0),1)
|
||||
|
||||
/datum/reagent/xenomicrobes
|
||||
name = "Xenomicrobes"
|
||||
id = "xenomicrobes"
|
||||
description = "Microbes with an entirely alien cellular structure."
|
||||
reagent_state = LIQUID
|
||||
color = "#535E66" // rgb: 83, 94, 102
|
||||
|
||||
/datum/reagent/xenomicrobes/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
src = null
|
||||
if( (prob(10) && method==TOUCH) || method==INGEST)
|
||||
M.contract_disease(new /datum/disease/xeno_transformation(0),1)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -31,7 +31,7 @@
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/Del()
|
||||
/obj/item/weapon/reagent_containers/borghypo/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
user.put_in_active_hand(B)
|
||||
src.transfer_fingerprints_to(B)
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/attack(mob/living/target as mob, mob/living/user as mob)
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
O.show_message(text("\blue <B>The contents of the [src] splashes all over [target]!</B>"), 1)
|
||||
src.reagents.reaction(target, TOUCH)
|
||||
|
||||
//Finally, smash the bottle. This kills (del) the bottle.
|
||||
//Finally, smash the bottle. This kills (qdel) the bottle.
|
||||
src.smash(target, user)
|
||||
|
||||
return
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
if(istype(W,/obj/item/weapon/shard) || istype(W,/obj/item/weapon/reagent_containers/food/snacks))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/csandwich/S = new(get_turf(src))
|
||||
S.attackby(W,user)
|
||||
del(src)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/csandwich
|
||||
@@ -73,9 +73,9 @@
|
||||
if(length(name) > 80) name = "[pick(list("absurd","colossal","enormous","ridiculous"))] sandwich"
|
||||
w_class = n_ceil(Clamp((ingredients.len/2),2,4))
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/csandwich/Del()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/csandwich/Destroy()
|
||||
for(var/obj/item/O in ingredients)
|
||||
del(O)
|
||||
qdel(O)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/csandwich/examine(mob/user)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
usr.put_in_hands(TrashItem)
|
||||
else if(istype(trash,/obj/item))
|
||||
usr.put_in_hands(trash)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob)
|
||||
@@ -38,7 +38,7 @@
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='danger'>None of [src] left!</span>"
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return 0
|
||||
|
||||
if(istype(M, /mob/living/carbon))
|
||||
@@ -152,7 +152,7 @@
|
||||
reagents.trans_to(U,min(reagents.total_volume,5))
|
||||
|
||||
if (reagents.total_volume <= 0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if (is_sliceable())
|
||||
@@ -187,13 +187,13 @@
|
||||
for(var/i=1 to (slices_num-slices_lost))
|
||||
var/obj/slice = new slice_path (src.loc)
|
||||
reagents.trans_to(slice,reagents_per_slice)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable()
|
||||
return (slices_num && slice_path && slices_num > 0)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/Del()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/Destroy()
|
||||
if(contents)
|
||||
for(var/atom/movable/something in contents)
|
||||
something.loc = get_turf(src)
|
||||
@@ -212,7 +212,7 @@
|
||||
spawn(5)
|
||||
if(!src && !user.client)
|
||||
user.custom_emote(1,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]")
|
||||
del(src)
|
||||
qdel(src)
|
||||
On_Consume(user)
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
@@ -477,18 +477,18 @@
|
||||
user << "You crack \the [src] into \the [O]."
|
||||
reagents.trans_to(O, reagents.total_volume)
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
new/obj/effect/decal/cleanable/egg_smudge(src.loc)
|
||||
src.reagents.reaction(hit_atom, TOUCH)
|
||||
src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.")
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype( W, /obj/item/toy/crayon ))
|
||||
var/obj/item/toy/crayon/C = W
|
||||
if(istype( W, /obj/item/weapon/pen/crayon ))
|
||||
var/obj/item/weapon/pen/crayon/C = W
|
||||
var/clr = C.colourName
|
||||
|
||||
if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow")))
|
||||
@@ -497,41 +497,32 @@
|
||||
|
||||
usr << "\blue You color \the [src] [clr]"
|
||||
icon_state = "egg-[clr]"
|
||||
item_color = clr
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/blue
|
||||
icon_state = "egg-blue"
|
||||
item_color = "blue"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/green
|
||||
icon_state = "egg-green"
|
||||
item_color = "green"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/mime
|
||||
icon_state = "egg-mime"
|
||||
item_color = "mime"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/orange
|
||||
icon_state = "egg-orange"
|
||||
item_color = "orange"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/purple
|
||||
icon_state = "egg-purple"
|
||||
item_color = "purple"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/rainbow
|
||||
icon_state = "egg-rainbow"
|
||||
item_color = "rainbow"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/red
|
||||
icon_state = "egg-red"
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/yellow
|
||||
icon_state = "egg-yellow"
|
||||
item_color = "yellow"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/friedegg
|
||||
name = "Fried egg"
|
||||
@@ -924,7 +915,7 @@
|
||||
..()
|
||||
new/obj/effect/decal/cleanable/pie_smudge(src.loc)
|
||||
src.visible_message("\red [src.name] splats.","\red You hear a splat.")
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis
|
||||
name = "Berry Clafoutis"
|
||||
@@ -1588,7 +1579,7 @@
|
||||
M << "\red \The [src] expands!"
|
||||
var/mob/living/carbon/human/H = new (src)
|
||||
H.set_species(monkey_type)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
proc/Unwrap(mob/user as mob)
|
||||
icon_state = "monkeycube"
|
||||
@@ -2830,7 +2821,7 @@
|
||||
if(istype(W,/obj/item/weapon/kitchen/rollingpin))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src)
|
||||
user << "You flatten the dough."
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
// slicable into 3xdoughslices
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
|
||||
@@ -2872,30 +2863,30 @@
|
||||
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/meatball))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src)
|
||||
user << "You make a burger."
|
||||
del(W)
|
||||
del(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
|
||||
// Bun + cutlet = hamburger
|
||||
else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/cutlet))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src)
|
||||
user << "You make a burger."
|
||||
del(W)
|
||||
del(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
|
||||
// Bun + sausage = hotdog
|
||||
else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/sausage))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/hotdog(src)
|
||||
user << "You make a hotdog."
|
||||
del(W)
|
||||
del(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
|
||||
// Burger + cheese wedge = cheeseburger
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob)
|
||||
if(istype(W))// && !istype(src,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src)
|
||||
user << "You make a cheeseburger."
|
||||
del(W)
|
||||
del(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -2905,8 +2896,8 @@
|
||||
if(istype(W))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src)
|
||||
user << "You make a cheeseburger."
|
||||
del(W)
|
||||
del(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -2975,7 +2966,7 @@
|
||||
if(istype(W,/obj/item/weapon/kitchen/utensil/knife))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(src)
|
||||
user << "You cut the potato."
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
user << "You cut the meat into thin strips."
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
/obj/machinery/atmospherics/unary/cryo_cell,
|
||||
/obj/machinery/dna_scannernew,
|
||||
/obj/item/weapon/grenade/chem_grenade,
|
||||
/obj/machinery/bot/medbot,
|
||||
/mob/living/bot/medbot,
|
||||
/obj/machinery/computer/pandemic,
|
||||
/obj/item/weapon/storage/secure/safe,
|
||||
/obj/machinery/iv_drip,
|
||||
@@ -195,7 +195,7 @@
|
||||
if(80 to 90) filling.icon_state = "[icon_state]80"
|
||||
if(91 to INFINITY) filling.icon_state = "[icon_state]100"
|
||||
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
filling.color = reagents.get_color()
|
||||
overlays += filling
|
||||
|
||||
if (!is_open_container())
|
||||
@@ -270,10 +270,10 @@
|
||||
attackby(var/obj/D, mob/user as mob)
|
||||
if(isprox(D))
|
||||
user << "You add [D] to [src]."
|
||||
del(D)
|
||||
qdel(D)
|
||||
user.put_in_hands(new /obj/item/weapon/bucket_sensor)
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
update_icon()
|
||||
overlays.Cut()
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
if(80 to 90) filling.icon_state = "[icon_state]-80"
|
||||
if(91 to INFINITY) filling.icon_state = "[icon_state]-100"
|
||||
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
filling.color = reagents.get_color()
|
||||
overlays += filling
|
||||
|
||||
if (!is_open_container())
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
M.drop_from_inventory(src) //icon update
|
||||
if(reagents.total_volume)
|
||||
reagents.trans_to_ingest(M, reagents.total_volume)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
del(src)
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
else if(istype(M, /mob/living/carbon/human) )
|
||||
@@ -58,9 +58,9 @@
|
||||
|
||||
if(reagents.total_volume)
|
||||
reagents.trans_to_ingest(M, reagents.total_volume)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
O.show_message("\red [user] puts something in \the [target].", 1)
|
||||
|
||||
spawn(5)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -67,16 +67,16 @@
|
||||
var/obj/D = new/obj()
|
||||
D.create_reagents(amount_per_transfer_from_this)
|
||||
reagents.trans_to(D, amount_per_transfer_from_this)
|
||||
D.icon += mix_color_from_reagents(D.reagents.reagent_list)
|
||||
D.icon += D.reagents.get_color()
|
||||
spawn(0)
|
||||
D.reagents.reaction(A)
|
||||
sleep(5)
|
||||
del(D)
|
||||
qdel(D)
|
||||
else
|
||||
var/obj/effect/decal/chempuff/D = new/obj/effect/decal/chempuff(get_turf(src))
|
||||
D.create_reagents(amount_per_transfer_from_this)
|
||||
reagents.trans_to(D, amount_per_transfer_from_this, 1/spray_size)
|
||||
D.icon += mix_color_from_reagents(D.reagents.reagent_list)
|
||||
D.icon += D.reagents.get_color()
|
||||
|
||||
var/turf/A_turf = get_turf(A)//BS12
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
D.reagents.reaction(A_turf)
|
||||
sleep(2)
|
||||
sleep(3)
|
||||
del(D)
|
||||
qdel(D)
|
||||
|
||||
return
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
D.create_reagents(amount_per_transfer_from_this)
|
||||
src.reagents.trans_to(D, amount_per_transfer_from_this)
|
||||
|
||||
D.icon += mix_color_from_reagents(D.reagents.reagent_list)
|
||||
D.icon += D.reagents.get_color()
|
||||
|
||||
Sprays[i] = D
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
for(var/atom/t in get_turf(D))
|
||||
D.reagents.reaction(t)
|
||||
sleep(2)
|
||||
del(D)
|
||||
qdel(D)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
|
||||
filling.icon_state = "syringe[rounded_vol]"
|
||||
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
filling.color = reagents.get_color()
|
||||
overlays += filling
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[user] tries to stab [target] in \the [hit_area] with [src.name], but the attack is deflected by armor!</B>"), 1)
|
||||
user.remove_from_mob(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
|
||||
@@ -44,17 +44,17 @@
|
||||
ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
new /obj/effect/effect/water(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
new /obj/effect/effect/water(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
@@ -62,7 +62,7 @@
|
||||
blob_act()
|
||||
if(prob(50))
|
||||
new /obj/effect/effect/water(src.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
else
|
||||
explosion(src.loc,-1,1,2)
|
||||
if(src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/fire_act(datum/gas_mixture/air, temperature, volume)
|
||||
if(temperature > T0C+500)
|
||||
@@ -225,7 +225,7 @@
|
||||
|
||||
/obj/structure/reagent_dispensers/beerkeg/blob_act()
|
||||
explosion(src.loc,0,3,5,7,10)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/virusfood
|
||||
name = "Virus Food Dispenser"
|
||||
|
||||
Reference in New Issue
Block a user