mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into HereWeGoAgain
This commit is contained in:
@@ -1,7 +1,3 @@
|
||||
#define SOLID 1
|
||||
#define LIQUID 2
|
||||
#define GAS 3
|
||||
|
||||
/obj/machinery/chem_dispenser
|
||||
name = "chem dispenser"
|
||||
density = 1
|
||||
@@ -14,7 +10,7 @@
|
||||
var/energy = 100
|
||||
var/max_energy = 100
|
||||
var/amount = 30
|
||||
var/obj/item/weapon/reagent_containers/beaker = null
|
||||
var/obj/item/reagent_containers/beaker = null
|
||||
var/recharged = 0
|
||||
var/hackedcheck = 0
|
||||
var/list/dispensable_reagents = list("hydrogen", "lithium", "carbon", "nitrogen", "oxygen", "fluorine",
|
||||
@@ -63,14 +59,14 @@
|
||||
overlays.Cut()
|
||||
var/amount = pick(3,3,4)
|
||||
var/list/options = list()
|
||||
options[/obj/item/weapon/stock_parts/capacitor/adv] = "Add an advanced capacitor to fix it."
|
||||
options[/obj/item/weapon/stock_parts/console_screen] = "Replace the console screen to fix it."
|
||||
options[/obj/item/weapon/stock_parts/manipulator/pico] = "Upgrade to a pico manipulator to fix it."
|
||||
options[/obj/item/weapon/stock_parts/matter_bin/super] = "Give it a super matter bin to fix it."
|
||||
options[/obj/item/weapon/stock_parts/cell/super] = "Replace the reagent synthesizer with a super capacity cell to fix it."
|
||||
options[/obj/item/device/mass_spectrometer/adv] = "Replace the reagent scanner with an advanced mass spectrometer to fix it"
|
||||
options[/obj/item/weapon/stock_parts/micro_laser/high] = "Repair the reagent synthesizer with an high-power micro-laser to fix it"
|
||||
options[/obj/item/device/reagent_scanner/adv] = "Replace the reagent scanner with an advanced reagent scanner to fix it"
|
||||
options[/obj/item/stock_parts/capacitor/adv] = "Add an advanced capacitor to fix it."
|
||||
options[/obj/item/stock_parts/console_screen] = "Replace the console screen to fix it."
|
||||
options[/obj/item/stock_parts/manipulator/pico] = "Upgrade to a pico manipulator to fix it."
|
||||
options[/obj/item/stock_parts/matter_bin/super] = "Give it a super matter bin to fix it."
|
||||
options[/obj/item/stock_parts/cell/super] = "Replace the reagent synthesizer with a super capacity cell to fix it."
|
||||
options[/obj/item/mass_spectrometer/adv] = "Replace the reagent scanner with an advanced mass spectrometer to fix it"
|
||||
options[/obj/item/stock_parts/micro_laser/high] = "Repair the reagent synthesizer with an high-power micro-laser to fix it"
|
||||
options[/obj/item/reagent_scanner/adv] = "Replace the reagent scanner with an advanced reagent scanner to fix it"
|
||||
options[/obj/item/stack/nanopaste] = "Apply some nanopaste to the broken nozzles to fix it."
|
||||
options[/obj/item/stack/sheet/plasteel] = "Surround the outside with a plasteel cover to fix it."
|
||||
options[/obj/item/stack/sheet/rglass] = "Insert a pane of reinforced glass to fix it."
|
||||
@@ -166,7 +162,7 @@
|
||||
|
||||
if(href_list["dispense"])
|
||||
if(dispensable_reagents.Find(href_list["dispense"]) && beaker != null)
|
||||
var/obj/item/weapon/reagent_containers/glass/B = beaker
|
||||
var/obj/item/reagent_containers/glass/B = beaker
|
||||
var/datum/reagents/R = B.reagents
|
||||
var/space = R.maximum_volume - R.total_volume
|
||||
|
||||
@@ -182,21 +178,21 @@
|
||||
if(href_list["removeamount"])
|
||||
var/amount = text2num(href_list["removeamount"])
|
||||
if(isnum(amount) && (amount > 0))
|
||||
var/obj/item/weapon/reagent_containers/glass/B = beaker
|
||||
var/obj/item/reagent_containers/glass/B = beaker
|
||||
var/datum/reagents/R = B.reagents
|
||||
var/id = href_list["remove"]
|
||||
R.remove_reagent(id, amount)
|
||||
|
||||
if(href_list["ejectBeaker"])
|
||||
if(beaker)
|
||||
var/obj/item/weapon/reagent_containers/glass/B = beaker
|
||||
var/obj/item/reagent_containers/glass/B = beaker
|
||||
B.forceMove(loc)
|
||||
beaker = null
|
||||
overlays.Cut()
|
||||
add_fingerprint(usr)
|
||||
return 1 // update UIs attached to this object
|
||||
|
||||
/obj/machinery/chem_dispenser/attackby(obj/item/weapon/reagent_containers/B, mob/user, params)
|
||||
/obj/machinery/chem_dispenser/attackby(obj/item/reagent_containers/B, mob/user, params)
|
||||
if(isrobot(user))
|
||||
return
|
||||
|
||||
@@ -217,7 +213,7 @@
|
||||
to_chat(user, "<span class='warning'>Something is already loaded into the machine.</span>")
|
||||
return
|
||||
|
||||
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food/drinks))
|
||||
if(istype(B, /obj/item/reagent_containers/glass) || istype(B, /obj/item/reagent_containers/food/drinks))
|
||||
beaker = B
|
||||
if(!user.drop_item())
|
||||
to_chat(user, "<span class='warning'>[B] is stuck to you!</span>")
|
||||
@@ -231,9 +227,9 @@
|
||||
overlays += icon_beaker
|
||||
return
|
||||
|
||||
/obj/machinery/chem_dispenser/attackby(obj/item/weapon/B, mob/user, params)
|
||||
/obj/machinery/chem_dispenser/attackby(obj/item/B, mob/user, params)
|
||||
..()
|
||||
if(istype(B, /obj/item/device/multitool))
|
||||
if(istype(B, /obj/item/multitool))
|
||||
if(hackedcheck == 0)
|
||||
to_chat(user, hack_message)
|
||||
dispensable_reagents += hacked_reagents
|
||||
@@ -304,46 +300,46 @@
|
||||
/obj/machinery/chem_dispenser/constructable/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/circuitboard/chem_dispenser(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/cell/super(null)
|
||||
component_parts += new /obj/item/circuitboard/chem_dispenser(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/stock_parts/capacitor(null)
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/stock_parts/cell/super(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/chem_dispenser/constructable/upgraded/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/circuitboard/chem_dispenser(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/matter_bin/super(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/matter_bin/super(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/manipulator/pico(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/capacitor/super(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/cell/hyper(null)
|
||||
component_parts += new /obj/item/circuitboard/chem_dispenser(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin/super(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin/super(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator/pico(null)
|
||||
component_parts += new /obj/item/stock_parts/capacitor/super(null)
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/stock_parts/cell/hyper(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/chem_dispenser/constructable/RefreshParts()
|
||||
var/time = 0
|
||||
var/temp_energy = 0
|
||||
var/i
|
||||
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
|
||||
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
|
||||
temp_energy += M.rating
|
||||
temp_energy--
|
||||
max_energy = temp_energy * 5 //max energy = (bin1.rating + bin2.rating - 1) * 5, 5 on lowest 25 on highest
|
||||
for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
|
||||
for(var/obj/item/stock_parts/capacitor/C in component_parts)
|
||||
time += C.rating
|
||||
for(var/obj/item/weapon/stock_parts/cell/P in component_parts)
|
||||
for(var/obj/item/stock_parts/cell/P in component_parts)
|
||||
time += round(P.maxcharge, 10000) / 10000
|
||||
recharge_delay = 10 / (time/2) //delay between recharges, double the usual time on lowest 33% less than usual on highest
|
||||
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
|
||||
for(var/obj/item/stock_parts/manipulator/M in component_parts)
|
||||
for(i=1, i<=M.rating, i++)
|
||||
dispensable_reagents = sortList(dispensable_reagents | special_reagents[i])
|
||||
|
||||
/obj/machinery/chem_dispenser/constructable/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/glass))
|
||||
if(istype(I, /obj/item/reagent_containers/glass))
|
||||
if(panel_open)
|
||||
to_chat(user, "<span class='notice'>Close the maintenance panel first.</span>")
|
||||
return
|
||||
@@ -357,7 +353,7 @@
|
||||
if(exchange_parts(user, I))
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/weapon/wrench))
|
||||
if(istype(I, /obj/item/wrench))
|
||||
playsound(src, I.usesound, 50, 1)
|
||||
if(anchored)
|
||||
anchored = 0
|
||||
@@ -367,9 +363,9 @@
|
||||
to_chat(user, "<span class='caution'>[src] is now secured.</span>")
|
||||
|
||||
if(panel_open)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
if(istype(I, /obj/item/crowbar))
|
||||
if(beaker)
|
||||
var/obj/item/weapon/reagent_containers/glass/B = beaker
|
||||
var/obj/item/reagent_containers/glass/B = beaker
|
||||
B.forceMove(loc)
|
||||
beaker = null
|
||||
default_deconstruction_crowbar(I)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_state = "mixer0b"
|
||||
use_power = 1
|
||||
idle_power_usage = 40
|
||||
var/obj/item/weapon/reagent_containers/beaker = null
|
||||
var/obj/item/reagent_containers/beaker = null
|
||||
var/desired_temp = 300
|
||||
var/heater_coefficient = 0.03
|
||||
var/on = FALSE
|
||||
@@ -14,22 +14,22 @@
|
||||
/obj/machinery/chem_heater/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/circuitboard/chem_heater(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/circuitboard/chem_heater(null)
|
||||
component_parts += new /obj/item/stock_parts/micro_laser(null)
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/chem_heater/upgraded/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/circuitboard/chem_heater(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/micro_laser/ultra(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/circuitboard/chem_heater(null)
|
||||
component_parts += new /obj/item/stock_parts/micro_laser/ultra(null)
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/chem_heater/RefreshParts()
|
||||
heater_coefficient = 0.03
|
||||
for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts)
|
||||
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
|
||||
heater_coefficient *= M.rating
|
||||
|
||||
/obj/machinery/chem_heater/process()
|
||||
@@ -72,7 +72,7 @@
|
||||
if(isrobot(user))
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/glass))
|
||||
if(istype(I, /obj/item/reagent_containers/glass))
|
||||
if(beaker)
|
||||
to_chat(user, "<span class='notice'>A beaker is already loaded into the machine.</span>")
|
||||
return
|
||||
@@ -91,7 +91,7 @@
|
||||
return
|
||||
|
||||
if(panel_open)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
if(istype(I, /obj/item/crowbar))
|
||||
eject_beaker()
|
||||
default_deconstruction_crowbar(I)
|
||||
return 1
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
icon_state = "mixer0"
|
||||
use_power = 1
|
||||
idle_power_usage = 20
|
||||
var/obj/item/weapon/reagent_containers/beaker = null
|
||||
var/obj/item/weapon/storage/pill_bottle/loaded_pill_bottle = null
|
||||
var/obj/item/reagent_containers/beaker = null
|
||||
var/obj/item/storage/pill_bottle/loaded_pill_bottle = null
|
||||
var/mode = 0
|
||||
var/condi = 0
|
||||
var/useramount = 30 // Last used amount
|
||||
@@ -43,9 +43,9 @@
|
||||
spawn(rand(0, 15))
|
||||
stat |= NOPOWER
|
||||
|
||||
/obj/machinery/chem_master/attackby(obj/item/weapon/B, mob/user, params)
|
||||
/obj/machinery/chem_master/attackby(obj/item/B, mob/user, params)
|
||||
|
||||
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
|
||||
if(istype(B, /obj/item/reagent_containers/glass) || istype(B, /obj/item/reagent_containers/food/drinks/drinkingglass))
|
||||
|
||||
if(beaker)
|
||||
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine.</span>")
|
||||
@@ -59,7 +59,7 @@
|
||||
SSnanoui.update_uis(src)
|
||||
icon_state = "mixer1"
|
||||
|
||||
else if(istype(B, /obj/item/weapon/storage/pill_bottle))
|
||||
else if(istype(B, /obj/item/storage/pill_bottle))
|
||||
|
||||
if(loaded_pill_bottle)
|
||||
to_chat(user, "<span class='warning'>A pill bottle is already loaded into the machine.</span>")
|
||||
@@ -97,7 +97,7 @@
|
||||
printing = 1
|
||||
visible_message("<span class='notice'>[src] rattles and prints out a sheet of paper.</span>")
|
||||
playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(loc)
|
||||
var/obj/item/paper/P = new /obj/item/paper(loc)
|
||||
P.info = "<CENTER><B>Chemical Analysis</B></CENTER><BR>"
|
||||
P.info += "<b>Time of analysis:</b> [station_time_timestamp()]<br><br>"
|
||||
P.info += "<b>Chemical name:</b> [href_list["name"]]<br>"
|
||||
@@ -202,7 +202,7 @@
|
||||
return
|
||||
name = reject_bad_text(name)
|
||||
while(count--)
|
||||
var/obj/item/weapon/reagent_containers/food/pill/P = new/obj/item/weapon/reagent_containers/food/pill(loc)
|
||||
var/obj/item/reagent_containers/food/pill/P = new/obj/item/reagent_containers/food/pill(loc)
|
||||
if(!name) name = reagents.get_master_reagent_name()
|
||||
P.name = "[name] pill"
|
||||
P.pixel_x = rand(-7, 7) //random position
|
||||
@@ -218,7 +218,7 @@
|
||||
if(!name)
|
||||
return
|
||||
name = reject_bad_text(name)
|
||||
var/obj/item/weapon/reagent_containers/food/condiment/pack/P = new/obj/item/weapon/reagent_containers/food/condiment/pack(loc)
|
||||
var/obj/item/reagent_containers/food/condiment/pack/P = new/obj/item/reagent_containers/food/condiment/pack(loc)
|
||||
if(!name) name = reagents.get_master_reagent_name()
|
||||
P.originalname = name
|
||||
P.name = "[name] pack"
|
||||
@@ -243,7 +243,7 @@
|
||||
name = reject_bad_text(name)
|
||||
var/is_medical_patch = chemical_safety_check(reagents)
|
||||
while(count--)
|
||||
var/obj/item/weapon/reagent_containers/food/pill/patch/P = new/obj/item/weapon/reagent_containers/food/pill/patch(loc)
|
||||
var/obj/item/reagent_containers/food/pill/patch/P = new/obj/item/reagent_containers/food/pill/patch(loc)
|
||||
if(!name) name = reagents.get_master_reagent_name()
|
||||
P.name = "[name] patch"
|
||||
P.pixel_x = rand(-7, 7) //random position
|
||||
@@ -258,7 +258,7 @@
|
||||
if(!name)
|
||||
return
|
||||
name = reject_bad_text(name)
|
||||
var/obj/item/weapon/reagent_containers/glass/bottle/P = new/obj/item/weapon/reagent_containers/glass/bottle(loc)
|
||||
var/obj/item/reagent_containers/glass/bottle/P = new/obj/item/reagent_containers/glass/bottle(loc)
|
||||
if(!name) name = reagents.get_master_reagent_name()
|
||||
P.name = "[name] bottle"
|
||||
P.pixel_x = rand(-7, 7) //random position
|
||||
@@ -266,7 +266,7 @@
|
||||
P.icon_state = bottlesprite
|
||||
reagents.trans_to(P,30)
|
||||
else
|
||||
var/obj/item/weapon/reagent_containers/food/condiment/P = new/obj/item/weapon/reagent_containers/food/condiment(loc)
|
||||
var/obj/item/reagent_containers/food/condiment/P = new/obj/item/reagent_containers/food/condiment(loc)
|
||||
reagents.trans_to(P,50)
|
||||
else if(href_list["change_pill"])
|
||||
#define MAX_PILL_SPRITE 20 //max icon state of the pill sprites
|
||||
@@ -384,11 +384,11 @@
|
||||
/obj/machinery/chem_master/constructable/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/circuitboard/chem_master(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(null)
|
||||
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(null)
|
||||
component_parts += new /obj/item/circuitboard/chem_master(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
component_parts += new /obj/item/reagent_containers/glass/beaker(null)
|
||||
component_parts += new /obj/item/reagent_containers/glass/beaker(null)
|
||||
|
||||
/obj/machinery/chem_master/constructable/attackby(obj/item/B, mob/user, params)
|
||||
|
||||
@@ -406,7 +406,7 @@
|
||||
return
|
||||
|
||||
if(panel_open)
|
||||
if(istype(B, /obj/item/weapon/crowbar))
|
||||
if(istype(B, /obj/item/crowbar))
|
||||
default_deconstruction_crowbar(B)
|
||||
return 1
|
||||
else
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
anchored = 1
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "mixer0"
|
||||
circuit = /obj/item/weapon/circuitboard/pandemic
|
||||
circuit = /obj/item/circuitboard/pandemic
|
||||
use_power = 1
|
||||
idle_power_usage = 20
|
||||
var/temp_html = ""
|
||||
var/wait = null
|
||||
var/obj/item/weapon/reagent_containers/beaker = null
|
||||
var/obj/item/reagent_containers/beaker = null
|
||||
|
||||
/obj/machinery/computer/pandemic/New()
|
||||
..()
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
if(href_list["create_vaccine"])
|
||||
if(!wait)
|
||||
var/obj/item/weapon/reagent_containers/glass/bottle/B = new/obj/item/weapon/reagent_containers/glass/bottle(loc)
|
||||
var/obj/item/reagent_containers/glass/bottle/B = new/obj/item/reagent_containers/glass/bottle(loc)
|
||||
if(B)
|
||||
B.pixel_x = rand(-3, 3)
|
||||
B.pixel_y = rand(-3, 3)
|
||||
@@ -121,7 +121,7 @@
|
||||
var/name = stripped_input(usr,"Name:","Name the culture",D.name,MAX_NAME_LEN)
|
||||
if(name == null || wait)
|
||||
return
|
||||
var/obj/item/weapon/reagent_containers/glass/bottle/B = new/obj/item/weapon/reagent_containers/glass/bottle(loc)
|
||||
var/obj/item/reagent_containers/glass/bottle/B = new/obj/item/reagent_containers/glass/bottle(loc)
|
||||
B.icon_state = "round_bottle"
|
||||
B.pixel_x = rand(-3, 3)
|
||||
B.pixel_y = rand(-3, 3)
|
||||
@@ -274,7 +274,7 @@
|
||||
|
||||
|
||||
/obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER))
|
||||
if(istype(I, /obj/item/reagent_containers) && (I.flags & OPENCONTAINER))
|
||||
if(stat & (NOPOWER|BROKEN)) return
|
||||
if(beaker)
|
||||
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine!</span>")
|
||||
@@ -288,7 +288,7 @@
|
||||
updateUsrDialog()
|
||||
icon_state = "mixer1"
|
||||
|
||||
else if(istype(I, /obj/item/weapon/screwdriver))
|
||||
else if(istype(I, /obj/item/screwdriver))
|
||||
if(beaker)
|
||||
beaker.loc = get_turf(src)
|
||||
..()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
active_power_usage = 100
|
||||
pass_flags = PASSTABLE
|
||||
var/operating = 0
|
||||
var/obj/item/weapon/reagent_containers/beaker = null
|
||||
var/obj/item/reagent_containers/beaker = null
|
||||
var/limit = 10
|
||||
|
||||
//IMPORTANT NOTE! A negative number is a multiplier, a positive number is a flat amount to add. 0 means equal to the amount of the original reagent
|
||||
@@ -28,69 +28,69 @@
|
||||
/obj/item/stack/sheet/mineral/tranquillite = list("nothing" = 20),
|
||||
/obj/item/stack/sheet/mineral/silver = list("silver" = 20),
|
||||
/obj/item/stack/sheet/mineral/gold = list("gold" = 20),
|
||||
/obj/item/weapon/grown/nettle/basic = list("sacid" = 0),
|
||||
/obj/item/weapon/grown/nettle/death = list("facid" = 0, "sacid" = 0),
|
||||
/obj/item/weapon/grown/novaflower = list("capsaicin" = 0, "condensedcapsaicin" = 0),
|
||||
/obj/item/grown/nettle/basic = list("sacid" = 0),
|
||||
/obj/item/grown/nettle/death = list("facid" = 0, "sacid" = 0),
|
||||
/obj/item/grown/novaflower = list("capsaicin" = 0, "condensedcapsaicin" = 0),
|
||||
|
||||
//Blender Stuff
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/oat = list("flour" = -5),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries = list("bluecherryjelly" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg = list("egg" = -5),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/rice = list("rice" = -5),
|
||||
/obj/item/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/wheat = list("flour" = -5),
|
||||
/obj/item/reagent_containers/food/snacks/grown/oat = list("flour" = -5),
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/bluecherries = list("bluecherryjelly" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/egg = list("egg" = -5),
|
||||
/obj/item/reagent_containers/food/snacks/grown/rice = list("rice" = -5),
|
||||
|
||||
//Grinder stuff, but only if dry
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0),
|
||||
|
||||
|
||||
//All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.!
|
||||
/obj/item/slime_extract = list(),
|
||||
/obj/item/weapon/reagent_containers/food = list(),
|
||||
/obj/item/weapon/reagent_containers/honeycomb = list()
|
||||
/obj/item/reagent_containers/food = list(),
|
||||
/obj/item/reagent_containers/honeycomb = list()
|
||||
)
|
||||
|
||||
var/list/juice_items = list (
|
||||
|
||||
//Juicer Stuff
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("corn_starch" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot = list("carrotjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries = list("berryjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana = list("banana" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/potato = list("potato" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon = list("lemonjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = list("orangejuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime = list("limejuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon = list("watermelonjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice = list("watermelonjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison = list("poisonberryjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin = list("pumpkinjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin = list("blumpkinjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/apple = list("applejuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes = list("grapejuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green = list("grapejuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/pineapple = list("pineapplejuice" = 0)
|
||||
/obj/item/reagent_containers/food/snacks/grown/corn = list("corn_starch" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/carrot = list("carrotjuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/berries = list("berryjuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana = list("banana" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/potato = list("potato" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/lemon = list("lemonjuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/orange = list("orangejuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/lime = list("limejuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/watermelon = list("watermelonjuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/watermelonslice = list("watermelonjuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/berries/poison = list("poisonberryjuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/pumpkin = list("pumpkinjuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/blumpkin = list("blumpkinjuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/apple = list("applejuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/grapes = list("grapejuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/grapes/green = list("grapejuice" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/pineapple = list("pineapplejuice" = 0)
|
||||
)
|
||||
|
||||
var/list/dried_items = list(
|
||||
//Grinder stuff, but only if dry,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0)
|
||||
/obj/item/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
|
||||
/obj/item/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0)
|
||||
)
|
||||
|
||||
var/list/holdingitems = list()
|
||||
|
||||
/obj/machinery/reagentgrinder/New()
|
||||
..()
|
||||
beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
|
||||
beaker = new /obj/item/reagent_containers/glass/beaker/large(src)
|
||||
return
|
||||
|
||||
/obj/machinery/reagentgrinder/Destroy()
|
||||
@@ -112,7 +112,7 @@
|
||||
if(default_unfasten_wrench(user, I))
|
||||
return
|
||||
|
||||
if (istype(I, /obj/item/weapon/reagent_containers) && (I.flags & OPENCONTAINER) )
|
||||
if (istype(I, /obj/item/reagent_containers) && (I.flags & OPENCONTAINER) )
|
||||
if (!beaker)
|
||||
if(!user.drop_item())
|
||||
return 1
|
||||
@@ -125,8 +125,8 @@
|
||||
return 1 //no afterattack
|
||||
|
||||
if(is_type_in_list(I, dried_items))
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = I
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/grown))
|
||||
var/obj/item/reagent_containers/food/snacks/grown/G = I
|
||||
if(!G.dry)
|
||||
to_chat(user, "<span class='warning'>You must dry that first!</span>")
|
||||
return 1
|
||||
@@ -136,9 +136,9 @@
|
||||
return 1
|
||||
|
||||
//Fill machine with a bag!
|
||||
if(istype(I, /obj/item/weapon/storage/bag))
|
||||
var/obj/item/weapon/storage/bag/B = I
|
||||
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in B.contents)
|
||||
if(istype(I, /obj/item/storage/bag))
|
||||
var/obj/item/storage/bag/B = I
|
||||
for (var/obj/item/reagent_containers/food/snacks/grown/G in B.contents)
|
||||
B.remove_from_storage(G, src)
|
||||
holdingitems += G
|
||||
if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
|
||||
@@ -260,7 +260,7 @@
|
||||
holdingitems = list()
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/is_allowed(obj/item/weapon/reagent_containers/O)
|
||||
/obj/machinery/reagentgrinder/proc/is_allowed(obj/item/reagent_containers/O)
|
||||
for (var/i in blend_items)
|
||||
if(istype(O, i))
|
||||
return 1
|
||||
@@ -271,17 +271,17 @@
|
||||
if (istype(O, i))
|
||||
return blend_items[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(obj/item/weapon/reagent_containers/food/snacks/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(obj/item/reagent_containers/food/snacks/O)
|
||||
for(var/i in blend_items)
|
||||
if(istype(O, i))
|
||||
return blend_items[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(obj/item/weapon/reagent_containers/food/snacks/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(obj/item/reagent_containers/food/snacks/O)
|
||||
for(var/i in juice_items)
|
||||
if(istype(O, i))
|
||||
return juice_items[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(obj/item/weapon/grown/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(obj/item/grown/O)
|
||||
if (!istype(O) || !O.seed)
|
||||
return 5
|
||||
else if (O.seed.potency == -1)
|
||||
@@ -289,7 +289,7 @@
|
||||
else
|
||||
return round(O.seed.potency)
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_juice_amount(obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_juice_amount(obj/item/reagent_containers/food/snacks/grown/O)
|
||||
if (!istype(O) || !O.seed)
|
||||
return 5
|
||||
else if (O.seed.potency == -1)
|
||||
@@ -318,7 +318,7 @@
|
||||
updateUsrDialog()
|
||||
|
||||
//Snacks
|
||||
for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
|
||||
for (var/obj/item/reagent_containers/food/snacks/O in holdingitems)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
|
||||
@@ -356,7 +356,7 @@
|
||||
updateUsrDialog()
|
||||
|
||||
//Snacks and Plants
|
||||
for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
|
||||
for (var/obj/item/reagent_containers/food/snacks/O in holdingitems)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
|
||||
@@ -410,7 +410,7 @@
|
||||
remove_object(O)
|
||||
break
|
||||
//Plants
|
||||
for (var/obj/item/weapon/grown/O in holdingitems)
|
||||
for (var/obj/item/grown/O in holdingitems)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
var/allowed = get_allowed_by_id(O)
|
||||
@@ -440,7 +440,7 @@
|
||||
remove_object(O)
|
||||
|
||||
//Everything else - Transfers reagents from it into beaker
|
||||
for (var/obj/item/weapon/reagent_containers/O in holdingitems)
|
||||
for (var/obj/item/reagent_containers/O in holdingitems)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
var/amount = O.reagents.total_volume
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/reaction_obj(obj/O, volume)
|
||||
if(istype(O,/obj/item/weapon/paper))
|
||||
var/obj/item/weapon/paper/paperaffected = O
|
||||
if(istype(O,/obj/item/paper))
|
||||
var/obj/item/paper/paperaffected = O
|
||||
paperaffected.clearpaper()
|
||||
to_chat(usr, "The solution melts away the ink on the paper.")
|
||||
if(istype(O,/obj/item/weapon/book))
|
||||
if(istype(O,/obj/item/book))
|
||||
if(volume >= 5)
|
||||
var/obj/item/weapon/book/affectedbook = O
|
||||
var/obj/item/book/affectedbook = O
|
||||
affectedbook.dat = null
|
||||
to_chat(usr, "The solution melts away the ink on the book.")
|
||||
else
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
else if(effect <= 7)
|
||||
M.emote("scream")
|
||||
M.visible_message("<span class='warning'>[M] nervously scratches at their skin!</span>")
|
||||
M.visible_message("<span class='warning'>[M] nervously scratches at [M.p_their()] skin!</span>")
|
||||
M.Jitter(10)
|
||||
M.adjustBruteLoss(5)
|
||||
M.emote("twitch_s")
|
||||
@@ -315,7 +315,7 @@
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] can't seem to control their legs!</span>")
|
||||
M.visible_message("<span class='warning'>[M] can't seem to control [M.p_their()] legs!</span>")
|
||||
M.AdjustConfused(20)
|
||||
M.Weaken(4)
|
||||
else if(effect <= 4)
|
||||
@@ -356,7 +356,7 @@
|
||||
head_organ.f_style = "Very Long Beard"
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
H.visible_message("<span class='warning'>[H] has a wild look in their eyes!</span>")
|
||||
H.visible_message("<span class='warning'>[H] has a wild look in [H.p_their()] eyes!</span>")
|
||||
if(check < 60)
|
||||
M.SetParalysis(0)
|
||||
M.SetStunned(0)
|
||||
@@ -368,7 +368,7 @@
|
||||
M.AdjustConfused(10)
|
||||
if(check < 8)
|
||||
M.reagents.add_reagent(pick("methamphetamine", "crank", "neurotoxin"), rand(1,5))
|
||||
M.visible_message("<span class='warning'>[M] scratches at something under their skin!</span>")
|
||||
M.visible_message("<span class='warning'>[M] scratches at something under [M.p_their()] skin!</span>")
|
||||
M.adjustBruteLoss(5)
|
||||
else if(check < 16)
|
||||
M.AdjustHallucinate(30)
|
||||
@@ -427,7 +427,7 @@
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
else if(effect <= 7)
|
||||
M.emote("scream")
|
||||
M.visible_message("<span class='danger'>[M] tears at their own skin!</span>")
|
||||
M.visible_message("<span class='danger'>[M] tears at [M.p_their()] own skin!</span>")
|
||||
M.adjustBruteLoss(5)
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
M.emote("twitch")
|
||||
@@ -541,7 +541,7 @@
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] can't seem to control their legs!</span>")
|
||||
M.visible_message("<span class='warning'>[M] can't seem to control [M.p_their()] legs!</span>")
|
||||
M.AdjustConfused(33)
|
||||
M.Weaken(2)
|
||||
else if(effect <= 4)
|
||||
|
||||
@@ -528,7 +528,7 @@
|
||||
|
||||
/datum/reagent/consumable/chocolate/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/choc_pile(T)
|
||||
new /obj/item/reagent_containers/food/snacks/choc_pile(T)
|
||||
|
||||
/datum/reagent/consumable/mugwort
|
||||
name = "Mugwort"
|
||||
@@ -589,7 +589,7 @@
|
||||
|
||||
/datum/reagent/consumable/cheese/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge(T)
|
||||
new /obj/item/reagent_containers/food/snacks/cheesewedge(T)
|
||||
|
||||
/datum/reagent/consumable/fake_cheese
|
||||
name = "Cheese substitute"
|
||||
@@ -621,7 +621,7 @@
|
||||
|
||||
/datum/reagent/consumable/weird_cheese/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/weirdcheesewedge(T)
|
||||
new /obj/item/reagent_containers/food/snacks/weirdcheesewedge(T)
|
||||
|
||||
/datum/reagent/consumable/beans
|
||||
name = "Refried beans"
|
||||
@@ -877,13 +877,13 @@
|
||||
|
||||
/datum/reagent/ectoplasm/reaction_turf(turf/T, volume)
|
||||
if(volume >= 10 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(T)
|
||||
new /obj/item/reagent_containers/food/snacks/ectoplasm(T)
|
||||
|
||||
///Vomit///
|
||||
|
||||
/datum/reagent/consumable/bread/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/breadslice(T)
|
||||
new /obj/item/reagent_containers/food/snacks/breadslice(T)
|
||||
|
||||
/datum/reagent/vomit
|
||||
name = "Vomit"
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
M.visible_message("<span class='warning'>[M] suddenly and violently vomits!</span>")
|
||||
M.fakevomit(no_text = 1)
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M] staggers and drools, their eyes bloodshot!</span>")
|
||||
M.visible_message("<span class='warning'>[M] staggers and drools, [M.p_their()] eyes bloodshot!</span>")
|
||||
M.Dizzy(8)
|
||||
M.Weaken(4)
|
||||
if(effect <= 15)
|
||||
@@ -92,13 +92,14 @@
|
||||
|
||||
//Mitocholide is hard enough to get, it's probably fair to make this all internal organs
|
||||
for(var/obj/item/organ/internal/I in H.internal_organs)
|
||||
I.receive_damage(-0.4)
|
||||
I.heal_internal_damage(0.4)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/mitocholide/reaction_obj(obj/O, volume)
|
||||
if(istype(O, /obj/item/organ))
|
||||
var/obj/item/organ/Org = O
|
||||
Org.rejuvenate()
|
||||
if(!Org.is_robotic())
|
||||
Org.rejuvenate()
|
||||
|
||||
/datum/reagent/medicine/cryoxadone
|
||||
name = "Cryoxadone"
|
||||
@@ -115,7 +116,11 @@
|
||||
M.adjustToxLoss(-3)
|
||||
M.adjustBruteLoss(-12)
|
||||
M.adjustFireLoss(-12)
|
||||
M.status_flags &= ~DISFIGURED
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head = H.get_organ("head")
|
||||
if(head)
|
||||
head.disfigured = FALSE
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/rezadone
|
||||
@@ -131,7 +136,11 @@
|
||||
M.adjustCloneLoss(-1) //What? We just set cloneloss to 0. Why? Simple; this is so external organs properly unmutate.
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
M.status_flags &= ~DISFIGURED
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head = H.get_organ("head")
|
||||
if(head)
|
||||
head.disfigured = FALSE
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/rezadone/overdose_process(mob/living/M, severity)
|
||||
@@ -277,7 +286,7 @@
|
||||
if(severity == 1) //lesser
|
||||
M.stuttering += 1
|
||||
if(effect <= 1)
|
||||
M.visible_message("<span class='warning'>[M] suddenly cluches their gut!</span>")
|
||||
M.visible_message("<span class='warning'>[M] suddenly cluches [M.p_their()] gut!</span>")
|
||||
M.emote("scream")
|
||||
M.Stun(4)
|
||||
M.Weaken(4)
|
||||
@@ -293,7 +302,7 @@
|
||||
M.Jitter(30)
|
||||
else if(severity == 2) // greater
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] suddenly cluches their gut!</span>")
|
||||
M.visible_message("<span class='warning'>[M] suddenly cluches [M.p_their()] gut!</span>")
|
||||
M.emote("scream")
|
||||
M.Stun(7)
|
||||
M.Weaken(7)
|
||||
@@ -446,7 +455,7 @@
|
||||
M.visible_message("<span class='warning'>[M] suddenly and violently vomits!</span>")
|
||||
M.fakevomit(no_text = 1)
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M.name] staggers and drools, their eyes bloodshot!</span>")
|
||||
M.visible_message("<span class='warning'>[M.name] staggers and drools, [M.p_their()] eyes bloodshot!</span>")
|
||||
M.Dizzy(2)
|
||||
M.Weaken(3)
|
||||
if(effect <= 15)
|
||||
@@ -512,7 +521,7 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
if(istype(E))
|
||||
E.receive_damage(-1)
|
||||
E.heal_internal_damage(1)
|
||||
M.AdjustEyeBlurry(-1)
|
||||
M.AdjustEarDamage(-1)
|
||||
if(prob(50))
|
||||
@@ -597,7 +606,7 @@
|
||||
M.visible_message("<span class='warning'>[M] suddenly and violently vomits!</span>")
|
||||
M.fakevomit(no_text = 1)
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M] staggers and drools, their eyes bloodshot!</span>")
|
||||
M.visible_message("<span class='warning'>[M] staggers and drools, [M.p_their()] eyes bloodshot!</span>")
|
||||
M.Dizzy(2)
|
||||
M.Weaken(3)
|
||||
if(effect <= 15)
|
||||
@@ -666,7 +675,7 @@
|
||||
|
||||
M.update_revive()
|
||||
M.stat = UNCONSCIOUS
|
||||
add_logs(M, M, "revived", object="strange reagent") //Yes, the logs say you revived yourself.
|
||||
add_attack_logs(M, M, "Revived with strange reagent") //Yes, the logs say you revived yourself.
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/mannitol
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
T.color = color
|
||||
|
||||
/datum/reagent/paint/reaction_obj(obj/O, volume)
|
||||
if(istype(O, /obj/item/weapon/light))
|
||||
if(istype(O, /obj/item/light))
|
||||
O.color = color
|
||||
|
||||
/datum/reagent/paint/red
|
||||
|
||||
@@ -20,18 +20,6 @@
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
|
||||
/datum/reagent/plasticide
|
||||
name = "Plasticide"
|
||||
id = "plasticide"
|
||||
description = "Liquid plastic, do not eat."
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
|
||||
/datum/reagent/plasticide/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
|
||||
|
||||
/datum/reagent/minttoxin
|
||||
name = "Mint Toxin"
|
||||
id = "minttoxin"
|
||||
@@ -569,7 +557,7 @@
|
||||
M.adjustBruteLoss(5)
|
||||
M.Weaken(5)
|
||||
M.AdjustJitter(6)
|
||||
M.visible_message("<span class='danger'>[M] falls to the floor, scratching themselves violently!</span>")
|
||||
M.visible_message("<span class='danger'>[M] falls to the floor, scratching [M.p_them()]self violently!</span>")
|
||||
M.emote("scream")
|
||||
..()
|
||||
|
||||
@@ -623,11 +611,11 @@
|
||||
return
|
||||
|
||||
if(!H.unacidable)
|
||||
var/obj/item/organ/external/affecting = H.get_organ("head")
|
||||
affecting.receive_damage(0, 75)
|
||||
var/obj/item/organ/external/head/affecting = H.get_organ("head")
|
||||
if(affecting)
|
||||
affecting.receive_damage(0, 75)
|
||||
H.UpdateDamageIcon()
|
||||
H.emote("scream")
|
||||
H.status_flags |= DISFIGURED
|
||||
|
||||
/datum/reagent/facid/reaction_obj(obj/O, volume)
|
||||
if((istype(O, /obj/item) || istype(O, /obj/structure/glowshroom)))
|
||||
@@ -959,8 +947,7 @@
|
||||
/datum/reagent/glyphosate/reaction_obj(obj/O, volume)
|
||||
if(istype(O,/obj/structure/alien/weeds))
|
||||
var/obj/structure/alien/weeds/alien_weeds = O
|
||||
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
|
||||
alien_weeds.healthcheck()
|
||||
alien_weeds.take_damage(rand(15, 35), BRUTE, 0) // Kills alien weeds pretty fast
|
||||
else if(istype(O, /obj/structure/glowshroom)) //even a small amount is enough to kill it
|
||||
qdel(O)
|
||||
else if(istype(O, /obj/structure/spacevine))
|
||||
@@ -1028,7 +1015,7 @@
|
||||
M.Drowsy(10)
|
||||
if(11)
|
||||
M.Paralyse(10)
|
||||
M.visible_message("<B>[M]</B> seizes up and falls limp, their eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
|
||||
M.visible_message("<B>[M]</B> seizes up and falls limp, [M.p_their()] eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
|
||||
if(12 to 60)
|
||||
M.Paralyse(10)
|
||||
if(61 to INFINITY)
|
||||
|
||||
@@ -101,8 +101,8 @@
|
||||
/datum/reagent/water/reaction_obj(obj/O, volume)
|
||||
O.extinguish()
|
||||
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
|
||||
if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube))
|
||||
var/obj/item/reagent_containers/food/snacks/monkeycube/cube = O
|
||||
cube.Expand()
|
||||
// Dehydrated carp
|
||||
if(istype(O, /obj/item/toy/carpplushie/dehy_carp))
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/tofu(location)
|
||||
new /obj/item/reagent_containers/food/snacks/tofu(location)
|
||||
|
||||
/datum/chemical_reaction/chocolate_bar
|
||||
name = "Chocolate Bar"
|
||||
@@ -22,7 +22,7 @@
|
||||
/datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
|
||||
new /obj/item/reagent_containers/food/snacks/chocolatebar(location)
|
||||
|
||||
/datum/chemical_reaction/chocolate_bar2
|
||||
name = "Chocolate Bar"
|
||||
@@ -34,7 +34,7 @@
|
||||
/datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
|
||||
new /obj/item/reagent_containers/food/snacks/chocolatebar(location)
|
||||
|
||||
/datum/chemical_reaction/soysauce
|
||||
name = "Soy Sauce"
|
||||
@@ -54,7 +54,7 @@
|
||||
/datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
|
||||
new /obj/item/reagent_containers/food/snacks/sliceable/cheesewheel(location)
|
||||
|
||||
/datum/chemical_reaction/syntiflesh
|
||||
name = "Syntiflesh"
|
||||
@@ -66,7 +66,7 @@
|
||||
/datum/chemical_reaction/syntiflesh/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
|
||||
new /obj/item/reagent_containers/food/snacks/meat/syntiflesh(location)
|
||||
|
||||
/datum/chemical_reaction/hot_ramen
|
||||
name = "Hot Ramen"
|
||||
@@ -100,7 +100,7 @@
|
||||
/datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/dough(location)
|
||||
new /obj/item/reagent_containers/food/snacks/dough(location)
|
||||
|
||||
/datum/chemical_reaction/corn_syrup
|
||||
name = "corn_syrup"
|
||||
|
||||
@@ -93,17 +93,18 @@
|
||||
result_amount = 2
|
||||
mix_message = "The mixture gives off a sharp acidic tang."
|
||||
|
||||
/datum/chemical_reaction/plastication
|
||||
name = "Plastic"
|
||||
id = "solidplastic"
|
||||
/datum/chemical_reaction/plastic_polymers
|
||||
name = "plastic polymers"
|
||||
id = "plastic_polymers"
|
||||
result = null
|
||||
required_reagents = list("facid" = 10, "plasticide" = 20)
|
||||
required_reagents = list("oil" = 5, "sacid" = 2, "ash" = 3)
|
||||
min_temp = 374
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/plastication/on_reaction(datum/reagents/holder)
|
||||
var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/plastic
|
||||
M.amount = 10
|
||||
M.forceMove(get_turf(holder.my_atom))
|
||||
/datum/chemical_reaction/plastic_polymers/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/obj/item/stack/sheet/plastic/P = new /obj/item/stack/sheet/plastic
|
||||
P.amount = 10
|
||||
P.forceMove(get_turf(holder.my_atom))
|
||||
|
||||
/datum/chemical_reaction/lube
|
||||
name = "Space Lube"
|
||||
@@ -257,7 +258,7 @@
|
||||
|
||||
/datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /obj/item/weapon/soap/homemade(location)
|
||||
new /obj/item/soap/homemade(location)
|
||||
|
||||
/datum/chemical_reaction/candlefication
|
||||
name = "Candlefication"
|
||||
@@ -280,7 +281,7 @@
|
||||
|
||||
/datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/meatproduct(location)
|
||||
new /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct(location)
|
||||
|
||||
/datum/chemical_reaction/lye
|
||||
name = "lye"
|
||||
|
||||
@@ -214,19 +214,18 @@ datum/chemical_reaction/flash_powder
|
||||
var/datum/effect_system/smoke_spread/chem/S = new
|
||||
S.attach(location)
|
||||
playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
spawn(0)
|
||||
if(S)
|
||||
S.set_up(holder, 10, 0, location)
|
||||
if(created_volume < 5)
|
||||
S.start(1)
|
||||
if(created_volume >=5 && created_volume < 10)
|
||||
S.start(2)
|
||||
if(created_volume >= 10 && created_volume < 15)
|
||||
S.start(3)
|
||||
if(created_volume >=15)
|
||||
S.start(4)
|
||||
if(holder && holder.my_atom)
|
||||
holder.clear_reagents()
|
||||
if(S)
|
||||
S.set_up(holder, 10, 0, location)
|
||||
if(created_volume < 5)
|
||||
S.start(1)
|
||||
if(created_volume >=5 && created_volume < 10)
|
||||
S.start(2)
|
||||
if(created_volume >= 10 && created_volume < 15)
|
||||
S.start(3)
|
||||
if(created_volume >=15)
|
||||
S.start(4)
|
||||
if(holder && holder.my_atom)
|
||||
holder.clear_reagents()
|
||||
|
||||
/datum/chemical_reaction/smoke/smoke_powder
|
||||
name = "smoke_powder_smoke"
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
/datum/chemical_reaction/slimemonkey/on_reaction(datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
for(var/i = 1, i <= 3, i++)
|
||||
var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube
|
||||
var /obj/item/reagent_containers/food/snacks/monkeycube/M = new /obj/item/reagent_containers/food/snacks/monkeycube
|
||||
M.forceMove(get_turf(holder.my_atom))
|
||||
|
||||
//Green
|
||||
@@ -148,22 +148,22 @@
|
||||
/datum/chemical_reaction/slimebork/on_reaction(datum/reagents/holder)
|
||||
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
var/list/blocked = list(/obj/item/weapon/reagent_containers/food/snacks,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/margheritaslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/deepfryholder
|
||||
var/list/blocked = list(/obj/item/reagent_containers/food/snacks,
|
||||
/obj/item/reagent_containers/food/snacks/breadslice,
|
||||
/obj/item/reagent_containers/food/snacks/sliceable,
|
||||
/obj/item/reagent_containers/food/snacks/margheritaslice,
|
||||
/obj/item/reagent_containers/food/snacks/meatpizzaslice,
|
||||
/obj/item/reagent_containers/food/snacks/mushroompizzaslice,
|
||||
/obj/item/reagent_containers/food/snacks/vegetablepizzaslice,
|
||||
/obj/item/reagent_containers/food/snacks/meat,
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab,
|
||||
/obj/item/reagent_containers/food/snacks/grown,
|
||||
/obj/item/reagent_containers/food/snacks/grown/mushroom,
|
||||
/obj/item/reagent_containers/food/snacks/deepfryholder
|
||||
)
|
||||
blocked |= typesof(/obj/item/weapon/reagent_containers/food/snacks/customizable)
|
||||
blocked |= typesof(/obj/item/reagent_containers/food/snacks/customizable)
|
||||
|
||||
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - blocked
|
||||
var/list/borks = typesof(/obj/item/reagent_containers/food/snacks) - blocked
|
||||
// BORK BORK BORK
|
||||
|
||||
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
|
||||
@@ -193,21 +193,21 @@
|
||||
/datum/chemical_reaction/slimebork2/on_reaction(datum/reagents/holder)
|
||||
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
var/list/borks = subtypesof(/obj/item/weapon/reagent_containers/food/drinks)
|
||||
var/list/blocked = list(/obj/item/weapon/reagent_containers/food/drinks/cans/adminbooze,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/madminmalt,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/shaker,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/britcup,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/sillycup,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/mushroom_bowl
|
||||
var/list/borks = subtypesof(/obj/item/reagent_containers/food/drinks)
|
||||
var/list/blocked = list(/obj/item/reagent_containers/food/drinks/cans/adminbooze,
|
||||
/obj/item/reagent_containers/food/drinks/cans/madminmalt,
|
||||
/obj/item/reagent_containers/food/drinks/shaker,
|
||||
/obj/item/reagent_containers/food/drinks/britcup,
|
||||
/obj/item/reagent_containers/food/drinks/sillycup,
|
||||
/obj/item/reagent_containers/food/drinks/cans,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass,
|
||||
/obj/item/reagent_containers/food/drinks/bottle,
|
||||
/obj/item/reagent_containers/food/drinks/mushroom_bowl
|
||||
)
|
||||
blocked += typesof(/obj/item/weapon/reagent_containers/food/drinks/flask)
|
||||
blocked += typesof(/obj/item/weapon/reagent_containers/food/drinks/trophy)
|
||||
blocked += typesof(/obj/item/weapon/reagent_containers/food/drinks/cans/bottler)
|
||||
blocked += typesof(/obj/item/reagent_containers/food/drinks/flask)
|
||||
blocked += typesof(/obj/item/reagent_containers/food/drinks/trophy)
|
||||
blocked += typesof(/obj/item/reagent_containers/food/drinks/cans/bottler)
|
||||
borks -= blocked
|
||||
// BORK BORK BORK
|
||||
|
||||
@@ -334,7 +334,7 @@
|
||||
|
||||
/datum/chemical_reaction/slimeoverload/on_reaction(datum/reagents/holder, created_volume)
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
empulse(get_turf(holder.my_atom), 3, 7)
|
||||
empulse(get_turf(holder.my_atom), 3, 7, 1)
|
||||
|
||||
|
||||
/datum/chemical_reaction/slimecell
|
||||
@@ -348,7 +348,7 @@
|
||||
|
||||
/datum/chemical_reaction/slimecell/on_reaction(datum/reagents/holder, created_volume)
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
var/obj/item/weapon/stock_parts/cell/high/slime/P = new /obj/item/weapon/stock_parts/cell/high/slime
|
||||
var/obj/item/stock_parts/cell/high/slime/P = new /obj/item/stock_parts/cell/high/slime
|
||||
P.forceMove(get_turf(holder.my_atom))
|
||||
|
||||
/datum/chemical_reaction/slimeglow
|
||||
@@ -364,7 +364,7 @@
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='danger'>The slime begins to emit a soft light. Squeezing it will cause it to grow brightly.</span>")
|
||||
var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime
|
||||
var/obj/item/flashlight/slime/F = new /obj/item/flashlight/slime
|
||||
F.forceMove(get_turf(holder.my_atom))
|
||||
|
||||
//Purple
|
||||
@@ -564,7 +564,7 @@
|
||||
/datum/chemical_reaction/slimecrystal/on_reaction(datum/reagents/holder, created_volume)
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
if(holder.my_atom)
|
||||
var/obj/item/weapon/ore/bluespace_crystal/BC = new(get_turf(holder.my_atom))
|
||||
var/obj/item/ore/bluespace_crystal/BC = new(get_turf(holder.my_atom))
|
||||
BC.visible_message("<span class='notice'>The [BC.name] appears out of thin air!</span>")
|
||||
|
||||
//Cerulean
|
||||
@@ -628,9 +628,9 @@
|
||||
|
||||
/datum/chemical_reaction/slimecamera/on_reaction(datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
var/obj/item/device/camera/P = new /obj/item/device/camera
|
||||
var/obj/item/camera/P = new /obj/item/camera
|
||||
P.forceMove(get_turf(holder.my_atom))
|
||||
var/obj/item/device/camera_film/Z = new /obj/item/device/camera_film
|
||||
var/obj/item/camera_film/Z = new /obj/item/camera_film
|
||||
Z.forceMove(get_turf(holder.my_atom))
|
||||
|
||||
/datum/chemical_reaction/slimefloor
|
||||
@@ -663,7 +663,7 @@
|
||||
|
||||
/datum/chemical_reaction/slimepaint/on_reaction(datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
var/list/paints = subtypesof(/obj/item/weapon/reagent_containers/glass/paint)
|
||||
var/list/paints = subtypesof(/obj/item/reagent_containers/glass/paint)
|
||||
var/chosen = pick(paints)
|
||||
var/obj/P = new chosen
|
||||
if(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/reagent_containers
|
||||
/obj/item/reagent_containers
|
||||
name = "Container"
|
||||
desc = "..."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
@@ -11,7 +11,7 @@
|
||||
var/spawned_disease = null
|
||||
var/disease_amount = 20
|
||||
|
||||
/obj/item/weapon/reagent_containers/verb/set_APTFT() //set amount_per_transfer_from_this
|
||||
/obj/item/reagent_containers/verb/set_APTFT() //set amount_per_transfer_from_this
|
||||
set name = "Set transfer amount"
|
||||
set category = "Object"
|
||||
set src in range(0)
|
||||
@@ -25,10 +25,10 @@
|
||||
if(N)
|
||||
amount_per_transfer_from_this = N
|
||||
|
||||
/obj/item/weapon/reagent_containers/New()
|
||||
/obj/item/reagent_containers/New()
|
||||
..()
|
||||
if(!possible_transfer_amounts)
|
||||
verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT
|
||||
verbs -= /obj/item/reagent_containers/verb/set_APTFT
|
||||
create_reagents(volume)
|
||||
if(spawned_disease)
|
||||
var/datum/disease/F = new spawned_disease(0)
|
||||
@@ -37,39 +37,39 @@
|
||||
if(list_reagents)
|
||||
reagents.add_reagent_list(list_reagents)
|
||||
|
||||
/obj/item/weapon/reagent_containers/ex_act()
|
||||
/obj/item/reagent_containers/ex_act()
|
||||
if(reagents)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
R.on_ex_act()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/fire_act()
|
||||
/obj/item/reagent_containers/fire_act()
|
||||
reagents.chem_temp += 30
|
||||
reagents.handle_reactions()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/attack_self(mob/user)
|
||||
/obj/item/reagent_containers/attack_self(mob/user)
|
||||
return
|
||||
|
||||
// this prevented pills, food, and other things from being picked up by bags.
|
||||
// possibly intentional, but removing it allows us to not duplicate functionality.
|
||||
// -Sayu (storage conslidation)
|
||||
/*
|
||||
/obj/item/weapon/reagent_containers/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
/obj/item/reagent_containers/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
return
|
||||
*/
|
||||
/obj/item/weapon/reagent_containers/afterattack(obj/target, mob/user , flag)
|
||||
/obj/item/reagent_containers/afterattack(obj/target, mob/user , flag)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/proc/reagentlist(obj/item/weapon/reagent_containers/snack) //Attack logs for regents in pills
|
||||
/obj/item/reagent_containers/proc/reagentlist() //Return reagents in a reagent_container, default to source
|
||||
var/data
|
||||
if(snack && snack.reagents && snack.reagents.reagent_list && snack.reagents.reagent_list.len) //find a reagent list if there is and check if it has entries
|
||||
for(var/datum/reagent/R in snack.reagents.reagent_list) //no reagents will be left behind
|
||||
if(reagents && reagents.reagent_list && reagents.reagent_list.len) //find a reagent list if there is and check if it has entries
|
||||
for(var/datum/reagent/R in reagents.reagent_list) //no reagents will be left behind
|
||||
data += "[R.id]([R.volume] units); " //Using IDs because SOME chemicals(I'm looking at you, chlorhydrate-beer) have the same names as other chemicals.
|
||||
return data
|
||||
else return "No reagents"
|
||||
|
||||
/obj/item/weapon/reagent_containers/wash(mob/user, atom/source)
|
||||
/obj/item/reagent_containers/wash(mob/user, atom/source)
|
||||
if(is_open_container())
|
||||
if(reagents.total_volume >= volume)
|
||||
to_chat(user, "<span class='warning'>[src] is full.</span>")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/reagent_containers/blood
|
||||
/obj/item/reagent_containers/blood
|
||||
name = "BloodPack"
|
||||
var/base_name = "BloodPack"
|
||||
desc = "Contains blood used for transfusion."
|
||||
@@ -9,18 +9,18 @@
|
||||
var/blood_type = null
|
||||
var/label_text = ""
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/New()
|
||||
/obj/item/reagent_containers/blood/New()
|
||||
..()
|
||||
if(blood_type != null)
|
||||
name = "BloodPack [blood_type]"
|
||||
reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/on_reagent_change()
|
||||
/obj/item/reagent_containers/blood/on_reagent_change()
|
||||
update_icon()
|
||||
update_name_label()
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/update_icon()
|
||||
/obj/item/reagent_containers/blood/update_icon()
|
||||
var/percent = round((reagents.total_volume / volume) * 100)
|
||||
switch(percent)
|
||||
if(0 to 9)
|
||||
@@ -30,8 +30,8 @@
|
||||
if(51 to INFINITY)
|
||||
icon_state = "full"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/pen) || istype(I, /obj/item/device/flashlight/pen))
|
||||
/obj/item/reagent_containers/blood/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/pen) || istype(I, /obj/item/flashlight/pen))
|
||||
var/tmp_label = sanitize(input(user, "Enter a label for [name]","Label",label_text))
|
||||
if(length(tmp_label) > MAX_NAME_LEN)
|
||||
to_chat(user, "<span class='warning'>The label can be at most [MAX_NAME_LEN] characters long.</span>")
|
||||
@@ -40,7 +40,7 @@
|
||||
label_text = tmp_label
|
||||
update_name_label()
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/proc/update_name_label()
|
||||
/obj/item/reagent_containers/blood/proc/update_name_label()
|
||||
if(reagents.total_volume == 0)
|
||||
base_name = "Empty BloodPack"
|
||||
desc = "Seems pretty useless... Maybe if there were a way to fill it?"
|
||||
@@ -52,35 +52,35 @@
|
||||
else
|
||||
name = "[base_name] ([label_text])"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/random/New()
|
||||
/obj/item/reagent_containers/blood/random/New()
|
||||
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-")
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/APlus
|
||||
/obj/item/reagent_containers/blood/APlus
|
||||
blood_type = "A+"
|
||||
label_text = "A+"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/AMinus
|
||||
/obj/item/reagent_containers/blood/AMinus
|
||||
blood_type = "A-"
|
||||
label_text = "A-"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/BPlus
|
||||
/obj/item/reagent_containers/blood/BPlus
|
||||
blood_type = "B+"
|
||||
label_text = "B+"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/BMinus
|
||||
/obj/item/reagent_containers/blood/BMinus
|
||||
blood_type = "B-"
|
||||
label_text = "B-"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/OPlus
|
||||
/obj/item/reagent_containers/blood/OPlus
|
||||
blood_type = "O+"
|
||||
label_text = "O+"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/OMinus
|
||||
/obj/item/reagent_containers/blood/OMinus
|
||||
blood_type = "O-"
|
||||
label_text = "O-"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/empty
|
||||
/obj/item/reagent_containers/blood/empty
|
||||
name = "Empty BloodPack"
|
||||
desc = "Seems pretty useless... Maybe if there were a way to fill it?"
|
||||
icon_state = "empty"
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo
|
||||
/obj/item/reagent_containers/borghypo
|
||||
name = "Cyborg Hypospray"
|
||||
desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment."
|
||||
icon = 'icons/obj/hypo.dmi'
|
||||
@@ -18,13 +18,13 @@
|
||||
var/list/reagent_ids = list("salglu_solution", "epinephrine", "spaceacillin", "charcoal", "hydrocodone")
|
||||
//var/list/reagent_ids = list("salbutamol", "silver_sulfadiazine", "styptic_powder", "charcoal", "epinephrine", "spaceacillin", "hydrocodone")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/surgeon
|
||||
/obj/item/reagent_containers/borghypo/surgeon
|
||||
reagent_ids = list("styptic_powder", "epinephrine", "salbutamol")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/crisis
|
||||
/obj/item/reagent_containers/borghypo/crisis
|
||||
reagent_ids = list("salglu_solution", "epinephrine", "sal_acid")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/syndicate
|
||||
/obj/item/reagent_containers/borghypo/syndicate
|
||||
name = "syndicate cyborg hypospray"
|
||||
desc = "An experimental piece of Syndicate technology used to produce powerful restorative nanites used to very quickly restore injuries of all types. Also metabolizes potassium iodide, for radiation poisoning, and morphine, for offense."
|
||||
icon_state = "borghypo_s"
|
||||
@@ -33,18 +33,18 @@
|
||||
reagent_ids = list("syndicate_nanites", "potass_iodide", "ether")
|
||||
bypass_protection = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/New()
|
||||
/obj/item/reagent_containers/borghypo/New()
|
||||
..()
|
||||
for(var/R in reagent_ids)
|
||||
add_reagent(R)
|
||||
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/Destroy()
|
||||
/obj/item/reagent_containers/borghypo/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg
|
||||
/obj/item/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg
|
||||
charge_tick++
|
||||
if(charge_tick < recharge_time) return 0
|
||||
charge_tick = 0
|
||||
@@ -60,7 +60,7 @@
|
||||
return 1
|
||||
|
||||
// Use this to add more chemicals for the borghypo to produce.
|
||||
/obj/item/weapon/reagent_containers/borghypo/proc/add_reagent(reagent)
|
||||
/obj/item/reagent_containers/borghypo/proc/add_reagent(reagent)
|
||||
reagent_ids |= reagent
|
||||
var/datum/reagents/RG = new(30)
|
||||
RG.my_atom = src
|
||||
@@ -69,7 +69,7 @@
|
||||
var/datum/reagents/R = reagent_list[reagent_list.len]
|
||||
R.add_reagent(reagent, 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack(mob/living/M, mob/user)
|
||||
/obj/item/reagent_containers/borghypo/attack(mob/living/M, mob/user)
|
||||
var/datum/reagents/R = reagent_list[mode]
|
||||
if(!R.total_volume)
|
||||
to_chat(user, "<span class='warning'>The injector is empty.</span>")
|
||||
@@ -84,17 +84,13 @@
|
||||
if(M.reagents)
|
||||
var/datum/reagent/injected = chemical_reagents_list[reagent_ids[mode]]
|
||||
var/contained = injected.name
|
||||
M.create_attack_log("<font color='orange'>Has been injected with [name] by [key_name(user)]. Reagents: [contained]</font>")
|
||||
user.create_attack_log("<font color='red'>Used the [name] to inject [key_name(M)]. Reagents: [contained]</font>")
|
||||
if(M.ckey)
|
||||
msg_admin_attack("[key_name_admin(user)] injected [key_name_admin(M)] with [name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)])")
|
||||
M.LAssailant = user
|
||||
|
||||
var/trans = R.trans_to(M, amount_per_transfer_from_this)
|
||||
add_attack_logs(M, user, "Injected with [name] containing [contained], transfered [trans] units")
|
||||
M.LAssailant = user
|
||||
to_chat(user, "<span class='notice'>[trans] units injected. [R.total_volume] units remaining.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user)
|
||||
/obj/item/reagent_containers/borghypo/attack_self(mob/user)
|
||||
playsound(loc, 'sound/effects/pop.ogg', 50, 0) //Change the mode
|
||||
mode++
|
||||
if(mode > reagent_list.len)
|
||||
@@ -105,7 +101,7 @@
|
||||
to_chat(user, "<span class='notice'>Synthesizer is now producing '[R.name]'.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/examine(mob/user)
|
||||
/obj/item/reagent_containers/borghypo/examine(mob/user)
|
||||
if(!..(user, 2))
|
||||
return
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//Not to be confused with /obj/item/weapon/reagent_containers/food/drinks/bottle
|
||||
//Not to be confused with /obj/item/reagent_containers/food/drinks/bottle
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle
|
||||
/obj/item/reagent_containers/glass/bottle
|
||||
name = "bottle"
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
@@ -12,10 +12,10 @@
|
||||
flags = OPENCONTAINER
|
||||
volume = 30
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/on_reagent_change()
|
||||
/obj/item/reagent_containers/glass/bottle/on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/update_icon()
|
||||
/obj/item/reagent_containers/glass/bottle/update_icon()
|
||||
overlays.Cut()
|
||||
underlays.Cut()
|
||||
|
||||
@@ -42,92 +42,92 @@
|
||||
var/image/lid = image(icon, src, "lid_bottle")
|
||||
overlays += lid
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/toxin
|
||||
/obj/item/reagent_containers/glass/bottle/toxin
|
||||
name = "toxin bottle"
|
||||
desc = "A small bottle of toxins. Do not drink, it is poisonous."
|
||||
icon_state = "small_bottle"
|
||||
list_reagents = list("toxin" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/cyanide
|
||||
/obj/item/reagent_containers/glass/bottle/cyanide
|
||||
name = "cyanide bottle"
|
||||
desc = "A small bottle of cyanide. Bitter almonds?"
|
||||
icon_state = "small_bottle"
|
||||
list_reagents = list("cyanide" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/mutagen
|
||||
/obj/item/reagent_containers/glass/bottle/mutagen
|
||||
name = "unstable mutagen bottle"
|
||||
desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact."
|
||||
icon_state = "bottle"
|
||||
list_reagents = list("mutagen" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ammonia
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia
|
||||
name = "ammonia bottle"
|
||||
desc = "A small bottle."
|
||||
icon_state = "bottle"
|
||||
list_reagents = list("ammonia" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine
|
||||
/obj/item/reagent_containers/glass/bottle/diethylamine
|
||||
name = "diethylamine bottle"
|
||||
desc = "A small bottle."
|
||||
icon_state = "round_bottle"
|
||||
list_reagents = list("diethylamine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/facid
|
||||
/obj/item/reagent_containers/glass/bottle/facid
|
||||
name = "Fluorosulfuric Acid Bottle"
|
||||
desc = "A small bottle. Contains a small amount of Fluorosulfuric Acid"
|
||||
icon_state = "round_bottle"
|
||||
list_reagents = list("facid" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine
|
||||
/obj/item/reagent_containers/glass/bottle/adminordrazine
|
||||
name = "Adminordrazine Bottle"
|
||||
desc = "A small bottle. Contains the liquid essence of the gods."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon_state = "holyflask"
|
||||
list_reagents = list("adminordrazine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/capsaicin
|
||||
/obj/item/reagent_containers/glass/bottle/capsaicin
|
||||
name = "Capsaicin Bottle"
|
||||
desc = "A small bottle. Contains hot sauce."
|
||||
icon_state = "round_bottle"
|
||||
list_reagents = list("capsaicin" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/frostoil
|
||||
/obj/item/reagent_containers/glass/bottle/frostoil
|
||||
name = "Frost Oil Bottle"
|
||||
desc = "A small bottle. Contains cold sauce."
|
||||
icon_state = "round_bottle"
|
||||
list_reagents = list("frostoil" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/morphine
|
||||
/obj/item/reagent_containers/glass/bottle/morphine
|
||||
name = "Morphine Bottle"
|
||||
desc = "A small bottle. Contains morphine."
|
||||
icon_state = "round_bottle"
|
||||
list_reagents = list("morphine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ether
|
||||
/obj/item/reagent_containers/glass/bottle/ether
|
||||
name = "Ether Bottle"
|
||||
desc = "A small bottle. Contains ether."
|
||||
icon_state = "round_bottle"
|
||||
list_reagents = list("ether" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/charcoal
|
||||
/obj/item/reagent_containers/glass/bottle/charcoal
|
||||
name = "Charcoal Bottle"
|
||||
desc = "A small bottle. Contains charcoal."
|
||||
icon_state = "round_bottle"
|
||||
list_reagents = list("charcoal" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/epinephrine
|
||||
/obj/item/reagent_containers/glass/bottle/epinephrine
|
||||
name = "Epinephrine Bottle"
|
||||
desc = "A small bottle. Contains epinephrine."
|
||||
icon_state = "round_bottle"
|
||||
list_reagents = list("epinephrine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pancuronium
|
||||
/obj/item/reagent_containers/glass/bottle/pancuronium
|
||||
name = "Pancuronium Bottle"
|
||||
desc = "A small bottle of pancuronium."
|
||||
icon_state = "round_bottle"
|
||||
list_reagents = list("pancuronium" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/sulfonal
|
||||
/obj/item/reagent_containers/glass/bottle/sulfonal
|
||||
name = "Sulfonal Bottle"
|
||||
desc = "A small bottle of Sulfonal."
|
||||
icon_state = "round_bottle"
|
||||
@@ -135,198 +135,198 @@
|
||||
|
||||
//Reagent bottles
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent
|
||||
/obj/item/reagent_containers/glass/bottle/reagent
|
||||
name = "Reagent Bottle"
|
||||
desc = "A bottle for storing reagents"
|
||||
icon_state = "reagent_bottle"
|
||||
volume = 50
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/oil
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/oil
|
||||
name = "Oil Bottle"
|
||||
desc = "A reagent bottle. Contains oil."
|
||||
list_reagents = list("oil" = 50)
|
||||
pixel_x = -4
|
||||
pixel_y = 6
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/phenol
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/phenol
|
||||
name = "Phenol Bottle"
|
||||
desc = "A reagent bottle. Contains phenol."
|
||||
list_reagents = list("phenol" = 50)
|
||||
pixel_x = 6
|
||||
pixel_y = 6
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/acetone
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/acetone
|
||||
name = "Acetone Bottle"
|
||||
desc = "A reagent bottle. Contains acetone."
|
||||
list_reagents = list("acetone" = 50)
|
||||
pixel_x = -4
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/ammonia
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/ammonia
|
||||
name = "Ammonia Bottle"
|
||||
desc = "A reagent bottle. Contains ammonia."
|
||||
list_reagents = list("ammonia" = 50)
|
||||
pixel_x = 6
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/diethylamine
|
||||
name = "Diethylamine Bottle"
|
||||
desc = "A reagent bottle. Contains diethylamine."
|
||||
list_reagents = list("diethylamine" = 50)
|
||||
pixel_x = -4
|
||||
pixel_y = -6
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/acid
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/acid
|
||||
name = "Acid Bottle"
|
||||
desc = "A reagent bottle. Contains sulfuric acid."
|
||||
list_reagents = list("sacid" = 50)
|
||||
pixel_x = 6
|
||||
pixel_y = -6
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/formaldehyde
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/formaldehyde
|
||||
name = "Formaldehyde Bottle"
|
||||
desc = "A reagent bottle. Contains formaldehyde."
|
||||
list_reagents = list("formaldehyde" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/morphine
|
||||
name = "Morphine Bottle"
|
||||
desc = "A reagent bottle. Contains morphine."
|
||||
list_reagents = list("morphine" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/insulin
|
||||
name = "Insulin Bottle"
|
||||
desc = "A reagent bottle. Contains insulin."
|
||||
list_reagents = list("insulin" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/hairgrownium
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/hairgrownium
|
||||
name = "Hair Grow Gel"
|
||||
desc = "A bottle full of a stimulative hair growth formula"
|
||||
list_reagents = list("hairgrownium" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/hair_dye
|
||||
/obj/item/reagent_containers/glass/bottle/reagent/hair_dye
|
||||
name = "Quantum Hair Dye Bottle"
|
||||
desc = "A bottle of the ever-changing quantum hair dye."
|
||||
list_reagents = list("hair_dye" = 50)
|
||||
|
||||
////////////////////Traitor Poison Bottle//////////////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/traitor
|
||||
/obj/item/reagent_containers/glass/bottle/traitor
|
||||
desc = "It has a small skull and crossbones on it. Uh-oh!"
|
||||
possible_transfer_amounts = list(5,10,15,25,30,40)
|
||||
volume = 40
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/traitor/New()
|
||||
/obj/item/reagent_containers/glass/bottle/traitor/New()
|
||||
..()
|
||||
reagents.add_reagent(pick_list("chemistry_tools.json", "traitor_poison_bottle"), 40)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/plasma
|
||||
/obj/item/reagent_containers/glass/bottle/plasma
|
||||
name = "plasma dust bottle"
|
||||
desc = "A small bottle of plasma in dust form. Extremely toxic and reacts with micro-organisms inside blood."
|
||||
icon_state = "wide_bottle"
|
||||
list_reagents = list("plasma_dust" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/diphenhydramine
|
||||
/obj/item/reagent_containers/glass/bottle/diphenhydramine
|
||||
name = "diphenhydramine bottle"
|
||||
desc = "A small bottle of diphenhydramine."
|
||||
icon_state = "bottle"
|
||||
list_reagents = list("diphenhydramine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/flu_virion
|
||||
/obj/item/reagent_containers/glass/bottle/flu_virion
|
||||
name = "Flu virion culture bottle"
|
||||
desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/advance/flu
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion
|
||||
/obj/item/reagent_containers/glass/bottle/epiglottis_virion
|
||||
name = "Epiglottis virion culture bottle"
|
||||
desc = "A small bottle. Contains Epiglottis virion culture in synthblood medium."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/advance/voice_change
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion
|
||||
/obj/item/reagent_containers/glass/bottle/liver_enhance_virion
|
||||
name = "Liver enhancement virion culture bottle"
|
||||
desc = "A small bottle. Contains liver enhancement virion culture in synthblood medium."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/advance/heal
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/hullucigen_virion
|
||||
/obj/item/reagent_containers/glass/bottle/hullucigen_virion
|
||||
name = "Hullucigen virion culture bottle"
|
||||
desc = "A small bottle. Contains hullucigen virion culture in synthblood medium."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/advance/hullucigen
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat
|
||||
/obj/item/reagent_containers/glass/bottle/pierrot_throat
|
||||
name = "Pierrot's Throat culture bottle"
|
||||
desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/pierrot_throat
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/cold
|
||||
/obj/item/reagent_containers/glass/bottle/cold
|
||||
name = "Rhinovirus culture bottle"
|
||||
desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/advance/cold
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/retrovirus
|
||||
/obj/item/reagent_containers/glass/bottle/retrovirus
|
||||
name = "Retrovirus culture bottle"
|
||||
desc = "A small bottle. Contains a retrovirus culture in a synthblood medium."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/dna_retrovirus
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/gbs
|
||||
/obj/item/reagent_containers/glass/bottle/gbs
|
||||
name = "GBS culture bottle"
|
||||
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS+ culture in synthblood medium."//Or simply - General BullShit
|
||||
icon_state = "round_bottle"
|
||||
amount_per_transfer_from_this = 5
|
||||
spawned_disease = /datum/disease/gbs
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/fake_gbs
|
||||
/obj/item/reagent_containers/glass/bottle/fake_gbs
|
||||
name = "GBS culture bottle"
|
||||
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS- culture in synthblood medium."//Or simply - General BullShit
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/fake_gbs
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/brainrot
|
||||
/obj/item/reagent_containers/glass/bottle/brainrot
|
||||
name = "Brainrot culture bottle"
|
||||
desc = "A small bottle. Contains Cryptococcus Cosmosis culture in synthblood medium."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/brainrot
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/magnitis
|
||||
/obj/item/reagent_containers/glass/bottle/magnitis
|
||||
name = "Magnitis culture bottle"
|
||||
desc = "A small bottle. Contains a small dosage of Fukkos Miracos."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/magnitis
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/wizarditis
|
||||
/obj/item/reagent_containers/glass/bottle/wizarditis
|
||||
name = "Wizarditis culture bottle"
|
||||
desc = "A small bottle. Contains a sample of Rincewindus Vulgaris."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/wizarditis
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/anxiety
|
||||
/obj/item/reagent_containers/glass/bottle/anxiety
|
||||
name = "Severe Anxiety culture bottle"
|
||||
desc = "A small bottle. Contains a sample of Lepidopticides."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/anxiety
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/beesease
|
||||
/obj/item/reagent_containers/glass/bottle/beesease
|
||||
name = "Beesease culture bottle"
|
||||
desc = "A small bottle. Contains a sample of invasive Apidae."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/beesease
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/fluspanish
|
||||
/obj/item/reagent_containers/glass/bottle/fluspanish
|
||||
name = "Spanish flu culture bottle"
|
||||
desc = "A small bottle. Contains a sample of Inquisitius."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/fluspanish
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/tuberculosis
|
||||
/obj/item/reagent_containers/glass/bottle/tuberculosis
|
||||
name = "Fungal Tuberculosis culture bottle"
|
||||
desc = "A small bottle. Contains a sample of Fungal Tubercle bacillus."
|
||||
icon_state = "round_bottle"
|
||||
spawned_disease = /datum/disease/tuberculosis
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure
|
||||
/obj/item/reagent_containers/glass/bottle/tuberculosiscure
|
||||
name = "BVAK bottle"
|
||||
desc = "A small bottle containing Bio Virus Antidote Kit."
|
||||
icon_state = "wide_bottle"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/// Droppers. ///
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/dropper
|
||||
/obj/item/reagent_containers/dropper
|
||||
name = "dropper"
|
||||
desc = "A dropper. Transfers 5 units."
|
||||
icon_state = "dropper"
|
||||
@@ -11,16 +11,16 @@
|
||||
possible_transfer_amounts = list(1, 2, 3, 4, 5)
|
||||
volume = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/dropper/on_reagent_change()
|
||||
/obj/item/reagent_containers/dropper/on_reagent_change()
|
||||
if(!reagents.total_volume)
|
||||
icon_state = "[initial(icon_state)]"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]1"
|
||||
|
||||
/obj/item/weapon/reagent_containers/dropper/attack(mob/living/M, mob/living/user, def_zone)
|
||||
/obj/item/reagent_containers/dropper/attack(mob/living/M, mob/living/user, def_zone)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/dropper/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/reagent_containers/dropper/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
var/to_transfer = 0
|
||||
@@ -61,7 +61,7 @@
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
injected += R.name
|
||||
var/contained = english_list(injected)
|
||||
add_logs(user, C, "dripped", src, "([contained])")
|
||||
add_attack_logs(user, C, "Dripped with [src] containing ([contained]), transfering [to_transfer]")
|
||||
|
||||
to_transfer = reagents.trans_to(C, amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'>You transfer [to_transfer] units of the solution.</span>")
|
||||
@@ -71,7 +71,7 @@
|
||||
return
|
||||
|
||||
if(reagents.total_volume)
|
||||
if(!target.is_open_container() && !(istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/weapon/reagent_containers/food/pill)) && !istype(target, /obj/item/clothing/mask/cigarette))
|
||||
if(!target.is_open_container() && !(istype(target, /obj/item/reagent_containers/food) && !istype(target, /obj/item/reagent_containers/food/pill)) && !istype(target, /obj/item/clothing/mask/cigarette))
|
||||
to_chat(user, "<span class='warning'>You cannot directly fill this object.</span>")
|
||||
return
|
||||
|
||||
@@ -95,14 +95,14 @@
|
||||
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [to_transfer] units of the solution.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/dropper/cyborg
|
||||
/obj/item/reagent_containers/dropper/cyborg
|
||||
name = "Industrial Dropper"
|
||||
desc = "A larger dropper. Transfers 10 units."
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
|
||||
volume = 10
|
||||
|
||||
/obj/item/weapon/reagent_containers/dropper/precision
|
||||
/obj/item/reagent_containers/dropper/precision
|
||||
name = "pipette"
|
||||
desc = "A high precision pippette. Holds 1 unit."
|
||||
icon_state = "pipette"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// (Mixing)Glass.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/obj/item/weapon/reagent_containers/glass
|
||||
/obj/item/reagent_containers/glass
|
||||
name = " "
|
||||
var/base_name = " "
|
||||
desc = " "
|
||||
@@ -24,12 +24,12 @@
|
||||
/obj/structure/closet,
|
||||
/obj/structure/sink,
|
||||
/obj/structure/toilet,
|
||||
/obj/item/weapon/storage,
|
||||
/obj/item/storage,
|
||||
/obj/machinery/atmospherics/unary/cryo_cell,
|
||||
/obj/machinery/dna_scannernew,
|
||||
/obj/item/weapon/grenade/chem_grenade,
|
||||
/obj/item/grenade/chem_grenade,
|
||||
/mob/living/simple_animal/bot/medbot,
|
||||
/obj/item/weapon/storage/secure/safe,
|
||||
/obj/item/storage/secure/safe,
|
||||
/obj/machinery/iv_drip,
|
||||
/obj/machinery/computer/pandemic,
|
||||
/obj/machinery/disposal,
|
||||
@@ -41,20 +41,21 @@
|
||||
/obj/machinery/hydroponics,
|
||||
/obj/machinery/constructable_frame,
|
||||
/obj/machinery/icemachine,
|
||||
/obj/item/weapon/bombcore/chemical,
|
||||
/obj/machinery/vending)
|
||||
/obj/item/bombcore/chemical,
|
||||
/obj/machinery/vending,
|
||||
/obj/machinery/fishtank)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/New()
|
||||
/obj/item/reagent_containers/glass/New()
|
||||
..()
|
||||
base_name = name
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/examine(mob/user)
|
||||
/obj/item/reagent_containers/glass/examine(mob/user)
|
||||
if(!..(user, 2))
|
||||
return
|
||||
if(!is_open_container())
|
||||
to_chat(user, "<span class='notice'>Airtight lid seals it completely.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/attack_self()
|
||||
/obj/item/reagent_containers/glass/attack_self()
|
||||
..()
|
||||
if(is_open_container())
|
||||
to_chat(usr, "<span class='notice'>You put the lid on [src].</span>")
|
||||
@@ -64,7 +65,7 @@
|
||||
flags |= OPENCONTAINER
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
|
||||
/obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(!is_open_container())
|
||||
@@ -82,10 +83,7 @@
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
injected += R.name
|
||||
var/contained = english_list(injected)
|
||||
M.create_attack_log("<font color='orange'>Has been splashed with [name] by [key_name(user)]. Reagents: [contained]</font>")
|
||||
user.create_attack_log("<font color='red'>Used the [name] to splash [key_name(M)]. Reagents: [contained]</font>")
|
||||
if(M.ckey)
|
||||
msg_admin_attack("[key_name_admin(user)] splashed [key_name_admin(M)] with [name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)])")
|
||||
add_attack_logs(M, user, "Splashed with [name] containing [contained]", !!M.ckey ? null : ATKLOG_ALL)
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
@@ -121,7 +119,7 @@
|
||||
var/trans = reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'>You transfer [trans] units of the solution to [target].</span>")
|
||||
|
||||
else if(istype(target, /obj/item/weapon/reagent_containers/glass) && !target.is_open_container())
|
||||
else if(istype(target, /obj/item/reagent_containers/glass) && !target.is_open_container())
|
||||
to_chat(user, "<span class='warning'>You cannot fill [target] while it is sealed.</span>")
|
||||
return
|
||||
|
||||
@@ -135,7 +133,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/attackby(obj/item/I, mob/user, params)
|
||||
/obj/item/reagent_containers/glass/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird
|
||||
return
|
||||
if(is_hot(I))
|
||||
@@ -143,7 +141,7 @@
|
||||
reagents.chem_temp += 15
|
||||
to_chat(user, "<span class='notice'>You heat [src] with [I].</span>")
|
||||
reagents.handle_reactions()
|
||||
if(istype(I, /obj/item/weapon/pen) || istype(I, /obj/item/device/flashlight/pen))
|
||||
if(istype(I, /obj/item/pen) || istype(I, /obj/item/flashlight/pen))
|
||||
var/tmp_label = sanitize(input(user, "Enter a label for [name]","Label",label_text))
|
||||
if(length(tmp_label) > MAX_NAME_LEN)
|
||||
to_chat(user, "<span class='warning'>The label can be at most [MAX_NAME_LEN] characters long.</span>")
|
||||
@@ -151,29 +149,29 @@
|
||||
to_chat(user, "<span class='notice'>You set the label to \"[tmp_label]\".</span>")
|
||||
label_text = tmp_label
|
||||
update_name_label()
|
||||
if(istype(I,/obj/item/weapon/storage/bag))
|
||||
if(istype(I,/obj/item/storage/bag))
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/proc/update_name_label()
|
||||
/obj/item/reagent_containers/glass/proc/update_name_label()
|
||||
if(label_text == "")
|
||||
name = base_name
|
||||
else
|
||||
name = "[base_name] ([label_text])"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker
|
||||
/obj/item/reagent_containers/glass/beaker
|
||||
name = "beaker"
|
||||
desc = "A beaker. Can hold up to 50 units."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "beaker"
|
||||
item_state = "beaker"
|
||||
materials = list(MAT_GLASS=500)
|
||||
var/obj/item/device/assembly_holder/assembly = null
|
||||
var/obj/item/assembly_holder/assembly = null
|
||||
var/can_assembly = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/on_reagent_change()
|
||||
/obj/item/reagent_containers/glass/beaker/on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/update_icon()
|
||||
/obj/item/reagent_containers/glass/beaker/update_icon()
|
||||
overlays.Cut()
|
||||
|
||||
if(reagents.total_volume)
|
||||
@@ -205,7 +203,7 @@
|
||||
if(assembly)
|
||||
overlays += "assembly"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/verb/remove_assembly()
|
||||
/obj/item/reagent_containers/glass/beaker/verb/remove_assembly()
|
||||
set name = "Remove Assembly"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
@@ -219,13 +217,13 @@
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>There is no assembly to remove.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/proc/heat_beaker()
|
||||
/obj/item/reagent_containers/glass/beaker/proc/heat_beaker()
|
||||
if(reagents)
|
||||
reagents.chem_temp += 30
|
||||
reagents.handle_reactions()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/device/assembly_holder) && can_assembly)
|
||||
/obj/item/reagent_containers/glass/beaker/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/assembly_holder) && can_assembly)
|
||||
if(assembly)
|
||||
to_chat(usr, "<span class='warning'>[src] already has an assembly.</span>")
|
||||
return ..()
|
||||
@@ -236,27 +234,27 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/HasProximity(atom/movable/AM)
|
||||
/obj/item/reagent_containers/glass/beaker/HasProximity(atom/movable/AM)
|
||||
if(assembly)
|
||||
assembly.HasProximity(AM)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/Crossed(atom/movable/AM)
|
||||
/obj/item/reagent_containers/glass/beaker/Crossed(atom/movable/AM)
|
||||
if(assembly)
|
||||
assembly.Crossed(AM)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/on_found(mob/finder) //for mousetraps
|
||||
/obj/item/reagent_containers/glass/beaker/on_found(mob/finder) //for mousetraps
|
||||
if(assembly)
|
||||
assembly.on_found(finder)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/hear_talk(mob/living/M, msg)
|
||||
/obj/item/reagent_containers/glass/beaker/hear_talk(mob/living/M, msg)
|
||||
if(assembly)
|
||||
assembly.hear_talk(M, msg)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/hear_message(mob/living/M, msg)
|
||||
/obj/item/reagent_containers/glass/beaker/hear_message(mob/living/M, msg)
|
||||
if(assembly)
|
||||
assembly.hear_message(M, msg)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/large
|
||||
/obj/item/reagent_containers/glass/beaker/large
|
||||
name = "large beaker"
|
||||
desc = "A large beaker. Can hold up to 100 units."
|
||||
icon_state = "beakerlarge"
|
||||
@@ -266,7 +264,7 @@
|
||||
possible_transfer_amounts = list(5,10,15,25,30,50,100)
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/vial
|
||||
/obj/item/reagent_containers/glass/beaker/vial
|
||||
name = "vial"
|
||||
desc = "A small glass vial. Can hold up to 25 units."
|
||||
icon_state = "vial"
|
||||
@@ -277,7 +275,7 @@
|
||||
flags = OPENCONTAINER
|
||||
can_assembly = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/drugs
|
||||
/obj/item/reagent_containers/glass/beaker/drugs
|
||||
name = "baggie"
|
||||
desc = "A baggie. Can hold up to 10 units."
|
||||
icon_state = "baggie"
|
||||
@@ -287,7 +285,7 @@
|
||||
flags = OPENCONTAINER
|
||||
can_assembly = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/noreact
|
||||
/obj/item/reagent_containers/glass/beaker/noreact
|
||||
name = "cryostasis beaker"
|
||||
desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
|
||||
icon_state = "beakernoreact"
|
||||
@@ -297,11 +295,11 @@
|
||||
origin_tech = "materials=2;engineering=3;plasmatech=3"
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/noreact/New()
|
||||
/obj/item/reagent_containers/glass/beaker/noreact/New()
|
||||
..()
|
||||
reagents.set_reacting(FALSE)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/bluespace
|
||||
/obj/item/reagent_containers/glass/beaker/bluespace
|
||||
name = "bluespace beaker"
|
||||
desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units."
|
||||
icon_state = "beakerbluespace"
|
||||
@@ -312,21 +310,21 @@
|
||||
flags = OPENCONTAINER
|
||||
origin_tech = "bluespace=5;materials=4;plasmatech=4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
|
||||
/obj/item/reagent_containers/glass/beaker/cryoxadone
|
||||
list_reagents = list("cryoxadone" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/sulphuric
|
||||
/obj/item/reagent_containers/glass/beaker/sulphuric
|
||||
list_reagents = list("sacid" = 50)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/slime
|
||||
/obj/item/reagent_containers/glass/beaker/slime
|
||||
list_reagents = list("slimejelly" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/drugs/meth
|
||||
/obj/item/reagent_containers/glass/beaker/drugs/meth
|
||||
list_reagents = list("methamphetamine" = 10)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bucket
|
||||
/obj/item/reagent_containers/glass/bucket
|
||||
desc = "It's a bucket."
|
||||
name = "bucket"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
@@ -341,18 +339,18 @@
|
||||
slot_flags = SLOT_HEAD
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bucket/equipped(mob/user, slot)
|
||||
/obj/item/reagent_containers/glass/bucket/equipped(mob/user, slot)
|
||||
..()
|
||||
if(slot == slot_head && reagents.total_volume)
|
||||
to_chat(user, "<span class='userdanger'>[src]'s contents spill all over you!</span>")
|
||||
reagents.reaction(user, TOUCH)
|
||||
reagents.clear_reagents()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bucket/attackby(obj/D, mob/user, params)
|
||||
/obj/item/reagent_containers/glass/bucket/attackby(obj/D, mob/user, params)
|
||||
if(isprox(D))
|
||||
to_chat(user, "You add [D] to [src].")
|
||||
qdel(D)
|
||||
user.put_in_hands(new /obj/item/weapon/bucket_sensor)
|
||||
user.put_in_hands(new /obj/item/bucket_sensor)
|
||||
user.unEquip(src)
|
||||
qdel(src)
|
||||
else
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/// HYPOSPRAY
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray
|
||||
/obj/item/reagent_containers/hypospray
|
||||
name = "hypospray"
|
||||
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
|
||||
icon = 'icons/obj/hypo.dmi'
|
||||
@@ -15,7 +15,7 @@
|
||||
slot_flags = SLOT_BELT
|
||||
var/ignore_flags = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M, mob/user)
|
||||
/obj/item/reagent_containers/hypospray/attack(mob/living/M, mob/user)
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
return
|
||||
@@ -37,14 +37,14 @@
|
||||
|
||||
var/contained = english_list(injected)
|
||||
|
||||
add_logs(user, M, "injected", src, "([contained])")
|
||||
add_attack_logs(user, M, "Injected with [src] containing ([contained])")
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/CMO
|
||||
/obj/item/reagent_containers/hypospray/CMO
|
||||
list_reagents = list("omnizine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/combat
|
||||
/obj/item/reagent_containers/hypospray/combat
|
||||
name = "combat stimulant injector"
|
||||
desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat."
|
||||
amount_per_transfer_from_this = 10
|
||||
@@ -54,12 +54,12 @@
|
||||
ignore_flags = 1 // So they can heal their comrades.
|
||||
list_reagents = list("epinephrine" = 30, "omnizine" = 30, "teporone" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/combat/nanites
|
||||
/obj/item/reagent_containers/hypospray/combat/nanites
|
||||
desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with expensive medical nanites for rapid healing."
|
||||
volume = 100
|
||||
list_reagents = list("nanites" = 100)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector
|
||||
/obj/item/reagent_containers/hypospray/autoinjector
|
||||
name = "emergency autoinjector"
|
||||
desc = "A rapid and safe way to stabilize patients in critical condition for personnel without advanced medical knowledge."
|
||||
icon_state = "autoinjector"
|
||||
@@ -71,7 +71,7 @@
|
||||
flags = null
|
||||
list_reagents = list("epinephrine" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M, mob/user)
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/attack(mob/M, mob/user)
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
return
|
||||
@@ -79,26 +79,26 @@
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/update_icon()
|
||||
if(reagents.total_volume > 0)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]0"
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine()
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/examine()
|
||||
..()
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
to_chat(usr, "<span class='notice'>It is currently loaded.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>It is spent.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/teporone //basilisks
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/teporone //basilisks
|
||||
name = "teporone autoinjector"
|
||||
desc = "A rapid way to regulate your body's temperature in the event of a hardsuit malfunction."
|
||||
icon_state = "lepopen"
|
||||
list_reagents = list("teporone" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack //goliath kiting
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/stimpack //goliath kiting
|
||||
name = "stimpack autoinjector"
|
||||
desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor."
|
||||
icon_state = "stimpen"
|
||||
@@ -106,7 +106,7 @@
|
||||
amount_per_transfer_from_this = 20
|
||||
list_reagents = list("methamphetamine" = 10, "coffee" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimulants
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/stimulants
|
||||
name = "Stimulants autoinjector"
|
||||
desc = "Rapidly stimulates and regernates the body's organ system."
|
||||
icon_state = "stimpen"
|
||||
@@ -115,7 +115,7 @@
|
||||
volume = 50
|
||||
list_reagents = list("stimulants" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/nanocalcium
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/nanocalcium
|
||||
name = "nanocalcium autoinjector"
|
||||
desc = "After a short period of time the nanites will slow the body's systems and assist with bone repair. Nanomachines son."
|
||||
icon_state = "bonepen"
|
||||
@@ -124,6 +124,6 @@
|
||||
volume = 30
|
||||
list_reagents = list("nanocalcium" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/nanocalcium/attack(mob/living/M, mob/user)
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/nanocalcium/attack(mob/living/M, mob/user)
|
||||
if(..())
|
||||
playsound(loc, 'sound/weapons/smg_empty_alarm.ogg', 20, 1)
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/reagent_containers/food/pill/patch
|
||||
/obj/item/reagent_containers/food/pill/patch
|
||||
name = "chemical patch"
|
||||
desc = "A chemical patch for touch based applications."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
@@ -10,31 +10,31 @@
|
||||
apply_method = "apply"
|
||||
transfer_efficiency = 0.5 //patches aren't as effective at getting chemicals into the bloodstream.
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/patch/afterattack(obj/target, mob/user , proximity)
|
||||
/obj/item/reagent_containers/food/pill/patch/afterattack(obj/target, mob/user , proximity)
|
||||
return // thanks inheritance again
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/patch/styptic
|
||||
/obj/item/reagent_containers/food/pill/patch/styptic
|
||||
name = "healing patch"
|
||||
desc = "Helps with brute injuries."
|
||||
icon_state = "bandaid_brute"
|
||||
instant_application = 1
|
||||
list_reagents = list("styptic_powder" = 40)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf
|
||||
/obj/item/reagent_containers/food/pill/patch/silver_sulf
|
||||
name = "burn patch"
|
||||
desc = "Helps with burn injuries."
|
||||
icon_state = "bandaid_burn"
|
||||
instant_application = 1
|
||||
list_reagents = list("silver_sulfadiazine" = 40)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/patch/synthflesh
|
||||
/obj/item/reagent_containers/food/pill/patch/synthflesh
|
||||
name = "syntheflesh patch"
|
||||
desc = "Helps with burn injuries."
|
||||
icon_state = "bandaid_med"
|
||||
instant_application = 1
|
||||
list_reagents = list("synthflesh" = 20)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/patch/nicotine
|
||||
/obj/item/reagent_containers/food/pill/patch/nicotine
|
||||
name = "nicotine patch"
|
||||
desc = "Helps temporarily curb the cravings of nicotine dependency."
|
||||
list_reagents = list("nicotine" = 20)
|
||||
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Pills.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/obj/item/weapon/reagent_containers/food/pill
|
||||
/obj/item/reagent_containers/food/pill
|
||||
name = "pill"
|
||||
desc = "a pill."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
@@ -12,15 +12,15 @@
|
||||
consume_sound = null
|
||||
taste = FALSE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/New()
|
||||
/obj/item/reagent_containers/food/pill/New()
|
||||
..()
|
||||
if(!icon_state)
|
||||
icon_state = "pill[rand(1,20)]"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/attack_self(mob/user)
|
||||
/obj/item/reagent_containers/food/pill/attack_self(mob/user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/attack(mob/living/carbon/M, mob/user, def_zone)
|
||||
/obj/item/reagent_containers/food/pill/attack(mob/living/carbon/M, mob/user, def_zone)
|
||||
if(!istype(M))
|
||||
return 0
|
||||
bitesize = reagents.total_volume
|
||||
@@ -30,7 +30,7 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/afterattack(obj/target, mob/user, proximity)
|
||||
/obj/item/reagent_containers/food/pill/afterattack(obj/target, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
@@ -51,67 +51,67 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//Pills
|
||||
/obj/item/weapon/reagent_containers/food/pill/tox
|
||||
/obj/item/reagent_containers/food/pill/tox
|
||||
name = "Toxins pill"
|
||||
desc = "Highly toxic."
|
||||
icon_state = "pill21"
|
||||
list_reagents = list("toxin" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/initropidril
|
||||
/obj/item/reagent_containers/food/pill/initropidril
|
||||
name = "initropidril pill"
|
||||
desc = "Don't swallow this."
|
||||
icon_state = "pill21"
|
||||
list_reagents = list("initropidril" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/adminordrazine
|
||||
/obj/item/reagent_containers/food/pill/adminordrazine
|
||||
name = "Adminordrazine pill"
|
||||
desc = "It's magic. We don't have to explain it."
|
||||
icon_state = "pill16"
|
||||
list_reagents = list("adminordrazine" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/methamphetamine
|
||||
/obj/item/reagent_containers/food/pill/methamphetamine
|
||||
name = "Methamphetamine pill"
|
||||
desc = "Helps improve the ability to concentrate."
|
||||
icon_state = "pill8"
|
||||
list_reagents = list("methamphetamine" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/haloperidol
|
||||
/obj/item/reagent_containers/food/pill/haloperidol
|
||||
name = "Haloperidol pill"
|
||||
desc = "Haloperidol is an anti-psychotic use to treat psychiatric problems."
|
||||
icon_state = "pill8"
|
||||
list_reagents = list("haloperidol" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/happy
|
||||
/obj/item/reagent_containers/food/pill/happy
|
||||
name = "Happy pill"
|
||||
desc = "Happy happy joy joy!"
|
||||
icon_state = "pill18"
|
||||
list_reagents = list("space_drugs" = 15, "sugar" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/zoom
|
||||
/obj/item/reagent_containers/food/pill/zoom
|
||||
name = "Zoom pill"
|
||||
desc = "Zoooom!"
|
||||
icon_state = "pill18"
|
||||
list_reagents = list("synaptizine" = 5, "methamphetamine" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/charcoal
|
||||
/obj/item/reagent_containers/food/pill/charcoal
|
||||
name = "Charcoal pill"
|
||||
desc = "Neutralizes many common toxins."
|
||||
icon_state = "pill17"
|
||||
list_reagents = list("charcoal" = 25)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/salicylic
|
||||
/obj/item/reagent_containers/food/pill/salicylic
|
||||
name = "Salicylic Acid pill"
|
||||
desc = "Commonly used to treat moderate pain and fevers."
|
||||
icon_state = "pill4"
|
||||
list_reagents = list("sal_acid" = 20)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/salbutamol
|
||||
/obj/item/reagent_containers/food/pill/salbutamol
|
||||
name = "Salbutamol pill"
|
||||
desc = "Used to treat respiratory distress."
|
||||
icon_state = "pill8"
|
||||
list_reagents = list("salbutamol" = 20)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/hydrocodone
|
||||
/obj/item/reagent_containers/food/pill/hydrocodone
|
||||
name = "Hydrocodone pill"
|
||||
desc = "Used to treat extreme pain."
|
||||
icon_state = "pill6"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/weapon/reagent_containers/spray
|
||||
/obj/item/reagent_containers/spray
|
||||
name = "spray bottle"
|
||||
desc = "A spray bottle, with an unscrewable top."
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
@@ -17,9 +17,9 @@
|
||||
possible_transfer_amounts = null
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A, mob/user)
|
||||
if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \
|
||||
|| istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics))
|
||||
/obj/item/reagent_containers/spray/afterattack(atom/A, mob/user)
|
||||
if(istype(A, /obj/item/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \
|
||||
|| istype(A, /obj/item/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics))
|
||||
return
|
||||
|
||||
if(istype(A, /obj/effect/proc_holder/spell))
|
||||
@@ -49,18 +49,18 @@
|
||||
user.newtonian_move(get_dir(A, user))
|
||||
|
||||
if(reagents.has_reagent("sacid"))
|
||||
msg_admin_attack("[key_name_admin(user)] fired sulphuric acid from \a [src].")
|
||||
log_game("[key_name(user)] fired sulphuric acid from \a [src].")
|
||||
msg_admin_attack("[key_name_admin(user)] fired sulphuric acid from \a [src] at [COORD(user)].", ATKLOG_FEW)
|
||||
log_game("[key_name(user)] fired sulphuric acid from \a [src] at [COORD(user)].")
|
||||
if(reagents.has_reagent("facid"))
|
||||
msg_admin_attack("[key_name_admin(user)] fired fluorosulfuric acid from \a [src].")
|
||||
log_game("[key_name(user)] fired fluorosulfuric Acid from \a [src].")
|
||||
msg_admin_attack("[key_name_admin(user)] fired fluorosulfuric acid from \a [src] at [COORD(user)].", ATKLOG_FEW)
|
||||
log_game("[key_name(user)] fired fluorosulfuric Acid from \a [src] at [COORD(user)].")
|
||||
if(reagents.has_reagent("lube"))
|
||||
msg_admin_attack("[key_name_admin(user)] fired space lube from \a [src].")
|
||||
log_game("[key_name(user)] fired space lube from \a [src].")
|
||||
msg_admin_attack("[key_name_admin(user)] fired space lube from \a [src] at [COORD(user)].")
|
||||
log_game("[key_name(user)] fired space lube from \a [src] at [COORD(user)].")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/proc/spray(var/atom/A)
|
||||
/obj/item/reagent_containers/spray/proc/spray(var/atom/A)
|
||||
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_currentrange)
|
||||
@@ -75,17 +75,17 @@
|
||||
qdel(D)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/attack_self(var/mob/user)
|
||||
/obj/item/reagent_containers/spray/attack_self(var/mob/user)
|
||||
|
||||
amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10)
|
||||
spray_currentrange = (spray_currentrange == 1 ? spray_maxrange : 1)
|
||||
to_chat(user, "<span class='notice'>You [amount_per_transfer_from_this == 10 ? "remove" : "fix"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/examine(mob/user)
|
||||
/obj/item/reagent_containers/spray/examine(mob/user)
|
||||
if(..(user, 0) && user == loc)
|
||||
to_chat(user, "[round(reagents.total_volume)] units left.")
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/verb/empty()
|
||||
/obj/item/reagent_containers/spray/verb/empty()
|
||||
|
||||
set name = "Empty Spray Bottle"
|
||||
set category = "Object"
|
||||
@@ -100,22 +100,22 @@
|
||||
reagents.clear_reagents()
|
||||
|
||||
//space cleaner
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner
|
||||
/obj/item/reagent_containers/spray/cleaner
|
||||
name = "space cleaner"
|
||||
desc = "BLAM!-brand non-foaming space cleaner!"
|
||||
list_reagents = list("cleaner" = 250)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner/drone
|
||||
/obj/item/reagent_containers/spray/cleaner/drone
|
||||
name = "space cleaner"
|
||||
desc = "BLAM!-brand non-foaming space cleaner!"
|
||||
volume = 50
|
||||
list_reagents = list("cleaner" = 50)
|
||||
|
||||
//pepperspray
|
||||
/obj/item/weapon/reagent_containers/spray/pepper
|
||||
/obj/item/reagent_containers/spray/pepper
|
||||
name = "pepperspray"
|
||||
desc = "Manufactured by UhangInc, used to blind and down an opponent quickly."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "pepperspray"
|
||||
item_state = "pepperspray"
|
||||
volume = 40
|
||||
@@ -124,7 +124,7 @@
|
||||
list_reagents = list("condensedcapsaicin" = 40)
|
||||
|
||||
//water flower
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower
|
||||
/obj/item/reagent_containers/spray/waterflower
|
||||
name = "water flower"
|
||||
desc = "A seemingly innocent sunflower...with a twist."
|
||||
icon = 'icons/obj/hydroponics/harvest.dmi'
|
||||
@@ -134,11 +134,11 @@
|
||||
volume = 10
|
||||
list_reagents = list("water" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays
|
||||
/obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays
|
||||
return
|
||||
|
||||
//chemsprayer
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer
|
||||
/obj/item/reagent_containers/spray/chemsprayer
|
||||
name = "chem sprayer"
|
||||
desc = "A utility used to spray large amounts of reagents in a given area."
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
@@ -153,7 +153,7 @@
|
||||
origin_tech = "combat=3;materials=3;engineering=3"
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer/spray(var/atom/A)
|
||||
/obj/item/reagent_containers/spray/chemsprayer/spray(var/atom/A)
|
||||
var/Sprays[3]
|
||||
for(var/i=1, i<=3, i++) // intialize sprays
|
||||
if(reagents.total_volume < 1) break
|
||||
@@ -190,14 +190,14 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/chemsprayer/attack_self(var/mob/user)
|
||||
/obj/item/reagent_containers/spray/chemsprayer/attack_self(var/mob/user)
|
||||
|
||||
amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10)
|
||||
to_chat(user, "<span class='notice'>You adjust the output switch. You'll now use [amount_per_transfer_from_this] units per spray.</span>")
|
||||
|
||||
|
||||
// Plant-B-Gone
|
||||
/obj/item/weapon/reagent_containers/spray/plantbgone // -- Skie
|
||||
/obj/item/reagent_containers/spray/plantbgone // -- Skie
|
||||
name = "Plant-B-Gone"
|
||||
desc = "Kills those pesky weeds!"
|
||||
icon = 'icons/obj/hydroponics/equipment.dmi'
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#define SYRINGE_INJECT 1
|
||||
#define SYRINGE_BROKEN 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe
|
||||
/obj/item/reagent_containers/syringe
|
||||
name = "Syringe"
|
||||
desc = "A syringe."
|
||||
icon = 'icons/goonstation/objects/syringe.dmi'
|
||||
@@ -20,24 +20,24 @@
|
||||
var/mode = SYRINGE_DRAW
|
||||
var/projectile_type = /obj/item/projectile/bullet/dart/syringe
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/New()
|
||||
/obj/item/reagent_containers/syringe/New()
|
||||
..()
|
||||
if(list_reagents) //syringe starts in inject mode if its already got something inside
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/on_reagent_change()
|
||||
/obj/item/reagent_containers/syringe/on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/pickup(mob/user)
|
||||
/obj/item/reagent_containers/syringe/pickup(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/dropped(mob/user)
|
||||
/obj/item/reagent_containers/syringe/dropped(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/attack_self(mob/user)
|
||||
/obj/item/reagent_containers/syringe/attack_self(mob/user)
|
||||
switch(mode)
|
||||
if(SYRINGE_DRAW)
|
||||
mode = SYRINGE_INJECT
|
||||
@@ -47,19 +47,19 @@
|
||||
return
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/attack_hand()
|
||||
/obj/item/reagent_containers/syringe/attack_hand()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/attack(mob/living/M, mob/living/user, def_zone)
|
||||
/obj/item/reagent_containers/syringe/attack(mob/living/M, mob/living/user, def_zone)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I,/obj/item/weapon/storage/bag))
|
||||
/obj/item/reagent_containers/syringe/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I,/obj/item/storage/bag))
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/afterattack(atom/target, mob/user , proximity)
|
||||
/obj/item/reagent_containers/syringe/afterattack(atom/target, mob/user , proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(!target.reagents)
|
||||
@@ -120,7 +120,7 @@
|
||||
to_chat(user, "<span class='notice'>[src] is empty.</span>")
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes))
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/storage/fancy/cigarettes))
|
||||
to_chat(user, "<span class='warning'>You cannot directly fill [target]!</span>")
|
||||
return
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
@@ -145,10 +145,7 @@
|
||||
rinject += R.name
|
||||
var/contained = english_list(rinject)
|
||||
|
||||
if(L != user)
|
||||
add_logs(user, L, "injected", src, addition="which had [contained]")
|
||||
else
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) injected [L.name] ([L.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
add_attack_logs(user, L, "Injected with [name] containing [contained], transfered [amount_per_transfer_from_this] units")
|
||||
|
||||
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
|
||||
reagents.reaction(L, INGEST, fraction)
|
||||
@@ -158,7 +155,7 @@
|
||||
mode = SYRINGE_DRAW
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/update_icon()
|
||||
/obj/item/reagent_containers/syringe/update_icon()
|
||||
if(mode == SYRINGE_BROKEN)
|
||||
icon_state = "broken"
|
||||
overlays.Cut()
|
||||
@@ -184,7 +181,7 @@
|
||||
filling.icon += mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe
|
||||
/obj/item/reagent_containers/ld50_syringe
|
||||
name = "Lethal Injection Syringe"
|
||||
desc = "A syringe used for lethal injections."
|
||||
icon = 'icons/goonstation/objects/syringe.dmi'
|
||||
@@ -195,29 +192,29 @@
|
||||
volume = 50
|
||||
var/mode = SYRINGE_DRAW
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/on_reagent_change()
|
||||
/obj/item/reagent_containers/ld50_syringe/on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/pickup(mob/user)
|
||||
/obj/item/reagent_containers/ld50_syringe/pickup(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/dropped(mob/user)
|
||||
/obj/item/reagent_containers/ld50_syringe/dropped(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/attack_self(mob/user)
|
||||
/obj/item/reagent_containers/ld50_syringe/attack_self(mob/user)
|
||||
mode = !mode
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/attack_hand()
|
||||
/obj/item/reagent_containers/ld50_syringe/attack_hand()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/attackby(obj/item/I, mob/user)
|
||||
/obj/item/reagent_containers/ld50_syringe/attackby(obj/item/I, mob/user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/afterattack(obj/target, mob/user , flag)
|
||||
/obj/item/reagent_containers/ld50_syringe/afterattack(obj/target, mob/user , flag)
|
||||
if(!target.reagents)
|
||||
return
|
||||
|
||||
@@ -252,9 +249,9 @@
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>The Syringe is empty.</span>")
|
||||
return
|
||||
if(istype(target, /obj/item/weapon/implantcase/chem))
|
||||
if(istype(target, /obj/item/implantcase/chem))
|
||||
return
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food))
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/reagent_containers/food))
|
||||
to_chat(user, "<span class='warning'>You cannot directly fill this object.</span>")
|
||||
return
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
@@ -277,7 +274,7 @@
|
||||
mode = SYRINGE_DRAW
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/update_icon()
|
||||
/obj/item/reagent_containers/ld50_syringe/update_icon()
|
||||
var/rounded_vol = round(reagents.total_volume,50)
|
||||
if(ismob(loc))
|
||||
var/mode_t
|
||||
@@ -297,30 +294,30 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/antiviral
|
||||
/obj/item/reagent_containers/syringe/antiviral
|
||||
name = "Syringe (spaceacillin)"
|
||||
desc = "Contains antiviral agents."
|
||||
list_reagents = list("spaceacillin" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/lethal
|
||||
/obj/item/reagent_containers/ld50_syringe/lethal
|
||||
list_reagents = list("cyanide" = 10, "neurotoxin2" = 40)
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/charcoal
|
||||
/obj/item/reagent_containers/syringe/charcoal
|
||||
name = "Syringe (charcoal)"
|
||||
desc = "Contains charcoal - used to treat toxins and damage from toxins."
|
||||
list_reagents = list("charcoal" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/epinephrine
|
||||
/obj/item/reagent_containers/syringe/epinephrine
|
||||
name = "Syringe (Epinephrine)"
|
||||
desc = "Contains epinephrine - used to stabilize patients."
|
||||
list_reagents = list("epinephrine" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/insulin
|
||||
/obj/item/reagent_containers/syringe/insulin
|
||||
name = "Syringe (insulin)"
|
||||
desc = "Contains insulin - used to treat diabetes."
|
||||
list_reagents = list("insulin" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/bioterror
|
||||
/obj/item/reagent_containers/syringe/bioterror
|
||||
name = "bioterror syringe"
|
||||
desc = "Contains several paralyzing reagents."
|
||||
list_reagents = list("neurotoxin" = 5, "capulettium_plus" = 5, "sodium_thiopental" = 5)
|
||||
|
||||
@@ -9,8 +9,9 @@
|
||||
|
||||
var/tank_volume = 1000 //In units, how much the dispenser can hold
|
||||
var/reagent_id = "water" //The ID of the reagent that the dispenser uses
|
||||
var/lastrigger = "" // The last person to rig this fuel tank - Stored with the object. Only the last person matter for investigation
|
||||
|
||||
/obj/structure/reagent_dispensers/attackby(obj/item/weapon/W, mob/user, params)
|
||||
/obj/structure/reagent_dispensers/attackby(obj/item/W, mob/user, params)
|
||||
return
|
||||
|
||||
/obj/structure/reagent_dispensers/New()
|
||||
@@ -66,7 +67,7 @@
|
||||
desc = "A tank full of industrial welding fuel. Do not consume."
|
||||
icon_state = "fuel"
|
||||
reagent_id = "fuel"
|
||||
var/obj/item/device/assembly_holder/rig = null
|
||||
var/obj/item/assembly_holder/rig = null
|
||||
var/accepts_rig = 1
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/Destroy()
|
||||
@@ -77,11 +78,16 @@
|
||||
..()
|
||||
if(!QDELETED(src)) //wasn't deleted by the projectile's effects.
|
||||
if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE)))
|
||||
message_admins("[key_name_admin(P.firer)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(P.firer)] triggered a fueltank explosion.")
|
||||
message_admins("[key_name_admin(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)] ")
|
||||
log_game("[key_name(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)]")
|
||||
investigate_log("[key_name(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)]", INVESTIGATE_BOMB)
|
||||
boom()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/boom()
|
||||
/obj/structure/reagent_dispensers/fueltank/boom(var/rigtrigger = FALSE) // Prevent case where someone who rigged the tank is blamed for the explosion when the rig isn't what triggered the explosion
|
||||
if(rigtrigger == TRUE) // If the explosion is triggered by an assembly holder
|
||||
message_admins("A fueltank, last rigged by [lastrigger], exploded at [COORD(loc)]") // Then admin is informed of the last person who rigged the fuel tank
|
||||
log_game("A fueltank, last rigged by [lastrigger], exploded at [COORD(loc)]")
|
||||
investigate_log("A fueltank, last rigged by [lastrigger], exploded at [COORD(loc)]", INVESTIGATE_BOMB)
|
||||
explosion(loc, 0, 1, 5, 7, 10, flame_range = 5)
|
||||
qdel(src)
|
||||
|
||||
@@ -111,10 +117,11 @@
|
||||
usr.visible_message("<span class='notice'>[usr] detaches [rig] from [src].</span>", "<span class='notice'>You detach [rig] from [src].</span>")
|
||||
rig.forceMove(get_turf(usr))
|
||||
rig = null
|
||||
lastrigger = null
|
||||
overlays.Cut()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/device/assembly_holder) && accepts_rig)
|
||||
if(istype(I, /obj/item/assembly_holder) && accepts_rig)
|
||||
if(rig)
|
||||
to_chat(user, "<span class='warning'>There is another device in the way.</span>")
|
||||
return ..()
|
||||
@@ -122,11 +129,13 @@
|
||||
if(do_after(user, 20, target = src))
|
||||
user.visible_message("<span class='notice'>[user] rigs [I] to [src].</span>", "<span class='notice'>You rig [I] to [src].</span>")
|
||||
|
||||
var/obj/item/device/assembly_holder/H = I
|
||||
if(istype(H.a_left, /obj/item/device/assembly/igniter) || istype(H.a_right, /obj/item/device/assembly/igniter))
|
||||
msg_admin_attack("[key_name_admin(user)] rigged a fueltank for explosion (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
log_game("[key_name(user)] rigged fueltank a fueltank for explosion at [loc.x], [loc.y], [loc.z]")
|
||||
var/obj/item/assembly_holder/H = I
|
||||
if(istype(H.a_left, /obj/item/assembly/igniter) || istype(H.a_right, /obj/item/assembly/igniter))
|
||||
msg_admin_attack("[key_name_admin(user)] rigged [src.name] with [I.name] for explosion (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)", ATKLOG_FEW)
|
||||
log_game("[key_name(user)] rigged [src.name] with [I.name] for explosion at [COORD(loc)]")
|
||||
investigate_log("[key_name(user)] rigged [src.name] with [I.name] for explosion at [COORD(loc)]", INVESTIGATE_BOMB)
|
||||
|
||||
lastrigger = "[key_name(user)]"
|
||||
rig = H
|
||||
user.drop_item()
|
||||
H.forceMove(src)
|
||||
@@ -136,23 +145,24 @@
|
||||
test.Shift(EAST, 6)
|
||||
overlays += test
|
||||
|
||||
if(istype(I, /obj/item/weapon/weldingtool))
|
||||
if(istype(I, /obj/item/weldingtool))
|
||||
if(!reagents.has_reagent("fuel"))
|
||||
to_chat(user, "<span class='warning'>[src] is out of fuel!</span>")
|
||||
return
|
||||
var/obj/item/weapon/weldingtool/W = I
|
||||
var/obj/item/weldingtool/W = I
|
||||
if(!W.welding)
|
||||
if(W.reagents.has_reagent("fuel", W.max_fuel))
|
||||
to_chat(user, "<span class='warning'>Your [W] is already full!</span>")
|
||||
return
|
||||
reagents.trans_to(W, W.max_fuel)
|
||||
user.visible_message("<span class='notice'>[user] refills \his [W].</span>", "<span class='notice'>You refill [W].</span>")
|
||||
user.visible_message("<span class='notice'>[user] refills [user.p_their()] [W].</span>", "<span class='notice'>You refill [W].</span>")
|
||||
playsound(src, 'sound/effects/refill.ogg', 50, 1)
|
||||
W.update_icon()
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] catastrophically fails at refilling \his [W]!</span>", "<span class='userdanger'>That was stupid of you.</span>")
|
||||
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(user)] triggered a fueltank explosion.")
|
||||
user.visible_message("<span class='warning'>[user] catastrophically fails at refilling [user.p_their()] [W]!</span>", "<span class='userdanger'>That was stupid of you.</span>")
|
||||
message_admins("[key_name_admin(user)] triggered a fueltank explosion at [COORD(loc)]")
|
||||
log_game("[key_name(user)] triggered a fueltank explosion at [COORD(loc)]")
|
||||
investigate_log("[key_name(user)] triggered a fueltank explosion at [COORD(loc)]", INVESTIGATE_BOMB)
|
||||
boom()
|
||||
else
|
||||
..()
|
||||
@@ -211,11 +221,11 @@
|
||||
to_chat(user, "<span class='warning'>There aren't any cups left!</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] takes a cup from [src].</span>", "<span class='notice'>You take a paper cup from [src].</span>")
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/sillycup/S = new(get_turf(src))
|
||||
var/obj/item/reagent_containers/food/drinks/sillycup/S = new(get_turf(src))
|
||||
user.put_in_hands(S)
|
||||
paper_cups--
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/attackby(obj/item/weapon/W, mob/living/user, params)
|
||||
/obj/structure/reagent_dispensers/water_cooler/attackby(obj/item/W, mob/living/user, params)
|
||||
add_fingerprint(user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
if(iswrench(W))
|
||||
|
||||
Reference in New Issue
Block a user