mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 03:57:48 +01:00
Merge remote-tracking branch 'upstream/dev' into inventoryfix
Conflicts: code/game/gamemodes/revolution/rp-revolution.dm code/game/machinery/kitchen/juicer.dm code/game/objects/items/stacks/stack.dm code/game/objects/items/weapons/cigs_lighters.dm code/game/objects/structures/stool_bed_chair_nest/stools.dm code/modules/destilery/main.dm code/modules/hydroponics/biogenerator.dm code/modules/mob/living/carbon/human/inventory.dm code/modules/mob/living/carbon/monkey/inventory.dm code/modules/projectiles/guns/launcher/pneumatic.dm
This commit is contained in:
@@ -79,9 +79,9 @@ datum
|
||||
if(A.volume > the_volume)
|
||||
the_volume = A.volume
|
||||
the_reagent = A
|
||||
|
||||
|
||||
return the_reagent
|
||||
|
||||
|
||||
get_master_reagent_name()
|
||||
var/the_name = null
|
||||
var/the_volume = 0
|
||||
@@ -353,8 +353,11 @@ datum
|
||||
if(C.result)
|
||||
feedback_add_details("chemical_reaction","[C.result]|[C.result_amount*multiplier]")
|
||||
multiplier = max(multiplier, 1) //this shouldnt happen ...
|
||||
add_reagent(C.result, C.result_amount*multiplier)
|
||||
set_data(C.result, preserved_data)
|
||||
if(!isnull(C.resultcolor)) //paints
|
||||
add_reagent(C.result, C.result_amount*multiplier, C.resultcolor)
|
||||
else
|
||||
add_reagent(C.result, C.result_amount*multiplier)
|
||||
set_data(C.result, preserved_data)
|
||||
|
||||
//add secondary products
|
||||
for(var/S in C.secondary_results)
|
||||
@@ -458,7 +461,7 @@ datum
|
||||
else R.reaction_obj(A, R.volume+volume_modifier)
|
||||
return
|
||||
|
||||
add_reagent(var/reagent, var/amount, var/list/data=null, var/safety = 0)
|
||||
add_reagent(var/reagent, var/amount, var/data=null, var/safety = 0)
|
||||
if(!isnum(amount)) return 1
|
||||
update_total()
|
||||
if(total_volume + amount > maximum_volume) amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen.
|
||||
@@ -469,7 +472,6 @@ datum
|
||||
if (R.id == reagent)
|
||||
R.volume += amount
|
||||
update_total()
|
||||
my_atom.on_reagent_change()
|
||||
|
||||
// mix dem viruses
|
||||
if(R.id == "blood" && reagent == "blood")
|
||||
@@ -495,9 +497,23 @@ datum
|
||||
if(!istype(D, /datum/disease/advance))
|
||||
preserve += D
|
||||
R.data["viruses"] = preserve
|
||||
|
||||
if(R.id == "paint" && reagent == "paint")
|
||||
if(R.color && data)
|
||||
var/list/mix = new /list(2)
|
||||
//fill the list
|
||||
var/datum/reagent/paint/P = chemical_reagents_list["paint"]
|
||||
var/datum/reagent/paint/P1 = new P.type()
|
||||
P1.color = R.color
|
||||
P1.volume = R.volume - amount //since we just increased that
|
||||
var/datum/reagent/paint/P2 = new P.type()
|
||||
P2.color = data
|
||||
P2.volume = amount
|
||||
mix[1] = P1
|
||||
mix[2] = P2
|
||||
R.color = mix_color_from_reagents(mix)
|
||||
if(!safety)
|
||||
handle_reactions()
|
||||
my_atom.on_reagent_change()
|
||||
return 0
|
||||
|
||||
var/datum/reagent/D = chemical_reagents_list[reagent]
|
||||
@@ -507,7 +523,10 @@ datum
|
||||
reagent_list += R
|
||||
R.holder = src
|
||||
R.volume = amount
|
||||
SetViruses(R, data) // Includes setting data
|
||||
if(reagent == "paint")
|
||||
R.color = data
|
||||
else
|
||||
SetViruses(R, data) // Includes setting data for blood
|
||||
|
||||
//debug
|
||||
//world << "Adding data"
|
||||
@@ -611,6 +630,7 @@ datum
|
||||
my_atom.reagents = null
|
||||
|
||||
copy_data(var/datum/reagent/current_reagent)
|
||||
if (current_reagent.id == "paint") return current_reagent.color
|
||||
if (!current_reagent || !current_reagent.data) return null
|
||||
if (!istype(current_reagent.data, /list)) return current_reagent.data
|
||||
|
||||
|
||||
@@ -2,249 +2,10 @@
|
||||
#define LIQUID 2
|
||||
#define GAS 3
|
||||
|
||||
#define CHEM_DISPENSER_ENERGY_COST 0.1 //How many energy points do we use per unit of chemical?
|
||||
|
||||
/obj/machinery/chem_dispenser
|
||||
name = "chem dispenser"
|
||||
density = 1
|
||||
anchored = 1
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "dispenser"
|
||||
use_power = 0
|
||||
idle_power_usage = 40
|
||||
var/ui_title = "Chem Dispenser 5000"
|
||||
var/energy = 100
|
||||
var/max_energy = 100
|
||||
var/amount = 30
|
||||
var/accept_glass = 0 //At 0 ONLY accepts glass containers. Kinda misleading varname.
|
||||
var/atom/beaker = null
|
||||
var/recharged = 0
|
||||
var/hackedcheck = 0
|
||||
var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine",
|
||||
"sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron",
|
||||
"copper","mercury","radium","water","ethanol","sugar","sacid","tungsten")
|
||||
|
||||
/obj/machinery/chem_dispenser/proc/recharge()
|
||||
if(stat & (BROKEN|NOPOWER)) return
|
||||
var/addenergy = 1
|
||||
var/oldenergy = energy
|
||||
energy = min(energy + addenergy, max_energy)
|
||||
if(energy != oldenergy)
|
||||
use_power(CHEM_SYNTH_ENERGY / CHEM_DISPENSER_ENERGY_COST) // This thing uses up "alot" of power (this is still low as shit for creating reagents from thin air)
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
|
||||
/obj/machinery/chem_dispenser/power_change()
|
||||
..()
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
|
||||
/obj/machinery/chem_dispenser/process()
|
||||
if(recharged <= 0)
|
||||
recharge()
|
||||
recharged = 15
|
||||
else
|
||||
recharged -= 1
|
||||
|
||||
/obj/machinery/chem_dispenser/New()
|
||||
..()
|
||||
recharge()
|
||||
dispensable_reagents = sortList(dispensable_reagents)
|
||||
#define BOTTLE_SPRITES list("bottle-1", "bottle-2", "bottle-3", "bottle-4") //list of available bottle sprites
|
||||
#define REAGENTS_PER_SHEET 20
|
||||
|
||||
|
||||
/obj/machinery/chem_dispenser/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/machinery/chem_dispenser/blob_act()
|
||||
if (prob(50))
|
||||
del(src)
|
||||
|
||||
/obj/machinery/chem_dispenser/meteorhit()
|
||||
del(src)
|
||||
return
|
||||
|
||||
/**
|
||||
* The ui_interact proc is used to open and update Nano UIs
|
||||
* If ui_interact is not used then the UI will not update correctly
|
||||
* ui_interact is currently defined for /atom/movable
|
||||
*
|
||||
* @param user /mob The mob who is interacting with this ui
|
||||
* @param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main")
|
||||
*
|
||||
* @return nothing
|
||||
*/
|
||||
/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main",var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
if(stat & (BROKEN|NOPOWER)) return
|
||||
if(user.stat || user.restrained()) return
|
||||
|
||||
// this is the data which will be sent to the ui
|
||||
var/data[0]
|
||||
data["amount"] = amount
|
||||
data["energy"] = round(energy)
|
||||
data["maxEnergy"] = round(max_energy)
|
||||
data["isBeakerLoaded"] = beaker ? 1 : 0
|
||||
data["glass"] = accept_glass
|
||||
var beakerContents[0]
|
||||
var beakerCurrentVolume = 0
|
||||
if(beaker && beaker:reagents && beaker:reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in beaker:reagents.reagent_list)
|
||||
beakerContents.Add(list(list("name" = R.name, "volume" = R.volume))) // list in a list because Byond merges the first list...
|
||||
beakerCurrentVolume += R.volume
|
||||
data["beakerContents"] = beakerContents
|
||||
|
||||
if (beaker)
|
||||
data["beakerCurrentVolume"] = beakerCurrentVolume
|
||||
data["beakerMaxVolume"] = beaker:volume
|
||||
else
|
||||
data["beakerCurrentVolume"] = null
|
||||
data["beakerMaxVolume"] = null
|
||||
|
||||
var chemicals[0]
|
||||
for (var/re in dispensable_reagents)
|
||||
var/datum/reagent/temp = chemical_reagents_list[re]
|
||||
if(temp)
|
||||
chemicals.Add(list(list("title" = temp.name, "id" = temp.id, "commands" = list("dispense" = temp.id)))) // list in a list because Byond merges the first list...
|
||||
data["chemicals"] = chemicals
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
ui = new(user, src, ui_key, "chem_dispenser.tmpl", ui_title, 390, 655)
|
||||
// when the ui is first opened this is the data it will use
|
||||
ui.set_initial_data(data)
|
||||
// open the new ui window
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/chem_dispenser/Topic(href, href_list)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return 0 // don't update UIs attached to this object
|
||||
|
||||
if(href_list["amount"])
|
||||
amount = round(text2num(href_list["amount"]), 5) // round to nearest 5
|
||||
if (amount < 0) // Since the user can actually type the commands himself, some sanity checking
|
||||
amount = 0
|
||||
if (amount > 120)
|
||||
amount = 120
|
||||
|
||||
if(href_list["dispense"])
|
||||
if (dispensable_reagents.Find(href_list["dispense"]) && beaker != null && beaker.is_open_container())
|
||||
var/obj/item/weapon/reagent_containers/B = src.beaker
|
||||
var/datum/reagents/R = B.reagents
|
||||
var/space = R.maximum_volume - R.total_volume
|
||||
|
||||
//uses 1 energy per 10 units.
|
||||
var/added_amount = min(amount, energy / CHEM_DISPENSER_ENERGY_COST, space)
|
||||
R.add_reagent(href_list["dispense"], added_amount)
|
||||
energy = max(energy - added_amount * CHEM_DISPENSER_ENERGY_COST, 0)
|
||||
|
||||
if(href_list["ejectBeaker"])
|
||||
if(beaker)
|
||||
var/obj/item/weapon/reagent_containers/B = beaker
|
||||
B.loc = loc
|
||||
beaker = null
|
||||
|
||||
add_fingerprint(usr)
|
||||
return 1 // update UIs attached to this object
|
||||
|
||||
/obj/machinery/chem_dispenser/attackby(var/obj/item/weapon/reagent_containers/B as obj, var/mob/user as mob)
|
||||
if(isrobot(user))
|
||||
return
|
||||
if(src.beaker)
|
||||
user << "Something is already loaded into the machine."
|
||||
return
|
||||
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food))
|
||||
if(!accept_glass && istype(B,/obj/item/weapon/reagent_containers/food))
|
||||
user << "<span class='notice'>This machine only accepts beakers</span>"
|
||||
src.beaker = B
|
||||
user.drop_item()
|
||||
B.loc = src
|
||||
user << "You set [B] on the machine."
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
return
|
||||
|
||||
/obj/machinery/chem_dispenser/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/chem_dispenser/attack_hand(mob/user as mob)
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/chem_dispenser/soda
|
||||
icon_state = "soda_dispenser"
|
||||
name = "soda fountain"
|
||||
desc = "A drink fabricating machine, capable of producing many sugary drinks with just one touch."
|
||||
ui_title = "Soda Dispens-o-matic"
|
||||
energy = 100
|
||||
accept_glass = 1
|
||||
max_energy = 100
|
||||
dispensable_reagents = list("water","ice","coffee","cream","tea","icetea","cola","spacemountainwind","dr_gibb","space_up","tonic","sodawater","lemon_lime","sugar","orangejuice","limejuice","watermelonjuice")
|
||||
|
||||
/obj/machinery/chem_dispenser/soda/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob)
|
||||
..()
|
||||
if(istype(B, /obj/item/device/multitool))
|
||||
if(hackedcheck == 0)
|
||||
user << "You change the mode from 'McNano' to 'Pizza King'."
|
||||
dispensable_reagents += list("thirteenloko","grapesoda")
|
||||
hackedcheck = 1
|
||||
return
|
||||
|
||||
else
|
||||
user << "You change the mode from 'Pizza King' to 'McNano'."
|
||||
dispensable_reagents -= list("thirteenloko","grapesoda")
|
||||
hackedcheck = 0
|
||||
return
|
||||
|
||||
/obj/machinery/chem_dispenser/beer
|
||||
icon_state = "booze_dispenser"
|
||||
name = "booze dispenser"
|
||||
ui_title = "Booze Portal 9001"
|
||||
energy = 100
|
||||
accept_glass = 1
|
||||
max_energy = 100
|
||||
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one."
|
||||
dispensable_reagents = list("lemon_lime","sugar","orangejuice","limejuice","sodawater","tonic","beer","kahlua","whiskey","wine","vodka","gin","rum","tequilla","vermouth","cognac","ale","mead")
|
||||
|
||||
/obj/machinery/chem_dispenser/beer/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob)
|
||||
..()
|
||||
|
||||
if(istype(B, /obj/item/device/multitool))
|
||||
if(hackedcheck == 0)
|
||||
user << "You disable the 'nanotrasen-are-cheap-bastards' lock, enabling hidden and very expensive boozes."
|
||||
dispensable_reagents += list("goldschlager","patron","watermelonjuice","berryjuice")
|
||||
hackedcheck = 1
|
||||
return
|
||||
|
||||
else
|
||||
user << "You re-enable the 'nanotrasen-are-cheap-bastards' lock, disabling hidden and very expensive boozes."
|
||||
dispensable_reagents -= list("goldschlager","patron","watermelonjuice","berryjuice")
|
||||
hackedcheck = 0
|
||||
return
|
||||
|
||||
/obj/machinery/chem_dispenser/meds
|
||||
name = "chem dispenser magic"
|
||||
density = 1
|
||||
anchored = 1
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "dispenser"
|
||||
use_power = 0
|
||||
idle_power_usage = 40
|
||||
ui_title = "Chem Dispenser 9000"
|
||||
energy = 100
|
||||
max_energy = 100
|
||||
amount = 30
|
||||
accept_glass = 0 //At 0 ONLY accepts glass containers. Kinda misleading varname.
|
||||
beaker = null
|
||||
recharged = 0
|
||||
hackedcheck = 0
|
||||
dispensable_reagents = list("inaprovaline","ryetalyn","paracetamol","tramadol","oxycodone","sterilizine","leporazine","kelotane","dermaline","dexalin","dexalinp","tricordrazine","anti_toxin","synaptizine","hyronalin","arithrazine","alkysine","imidazoline","peridaxon","bicaridine","hyperzine","rezadone","spaceacillin","ethylredoxrazine","stoxin","chloralhydrate","cryoxadone","clonexadone")
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -262,7 +23,7 @@
|
||||
var/condi = 0
|
||||
var/useramount = 30 // Last used amount
|
||||
var/pillamount = 10
|
||||
var/bottlesprite = "1" //yes, strings
|
||||
var/bottlesprite = "bottle-1" //yes, strings
|
||||
var/pillsprite = "1"
|
||||
var/client/has_sprites = list()
|
||||
var/max_pill_count = 20
|
||||
@@ -417,7 +178,7 @@
|
||||
var/amount_per_pill = reagents.total_volume/count
|
||||
if (amount_per_pill > 60) amount_per_pill = 60
|
||||
|
||||
var/name = reject_bad_text(input(usr,"Name:","Name your pill!","[reagents.get_master_reagent_name()] ([amount_per_pill] units)"))
|
||||
var/name = sanitizeSafe(input(usr,"Name:","Name your pill!","[reagents.get_master_reagent_name()] ([amount_per_pill] units)"), MAX_NAME_LEN)
|
||||
|
||||
if(reagents.total_volume/count < 1) //Sanity checking.
|
||||
return
|
||||
@@ -436,13 +197,13 @@
|
||||
|
||||
else if (href_list["createbottle"])
|
||||
if(!condi)
|
||||
var/name = reject_bad_text(input(usr,"Name:","Name your bottle!",reagents.get_master_reagent_name()))
|
||||
var/name = sanitizeSafe(input(usr,"Name:","Name your bottle!",reagents.get_master_reagent_name()), MAX_NAME_LEN)
|
||||
var/obj/item/weapon/reagent_containers/glass/bottle/P = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc)
|
||||
if(!name) name = reagents.get_master_reagent_name()
|
||||
P.name = "[name] bottle"
|
||||
P.pixel_x = rand(-7, 7) //random position
|
||||
P.pixel_y = rand(-7, 7)
|
||||
P.icon_state = "bottle-"+bottlesprite
|
||||
P.icon_state = bottlesprite
|
||||
reagents.trans_to(P,60)
|
||||
P.update_icon()
|
||||
else
|
||||
@@ -457,10 +218,9 @@
|
||||
usr << browse(dat, "window=chem_master")
|
||||
return
|
||||
else if(href_list["change_bottle"])
|
||||
#define MAX_BOTTLE_SPRITE 4 //max icon state of the bottle sprites
|
||||
var/dat = "<table>"
|
||||
for(var/i = 1 to MAX_BOTTLE_SPRITE)
|
||||
dat += "<tr><td><a href=\"?src=\ref[src]&bottle_sprite=[i]\"><img src=\"bottle-[i].png\" /></a></td></tr>"
|
||||
for(var/sprite in BOTTLE_SPRITES)
|
||||
dat += "<tr><td><a href=\"?src=\ref[src]&bottle_sprite=[sprite]\"><img src=\"[sprite].png\" /></a></td></tr>"
|
||||
dat += "</table>"
|
||||
usr << browse(dat, "window=chem_master")
|
||||
return
|
||||
@@ -484,8 +244,8 @@
|
||||
has_sprites += user.client
|
||||
for(var/i = 1 to MAX_PILL_SPRITE)
|
||||
usr << browse_rsc(icon('icons/obj/chemical.dmi', "pill" + num2text(i)), "pill[i].png")
|
||||
for(var/i = 1 to MAX_BOTTLE_SPRITE)
|
||||
usr << browse_rsc(icon('icons/obj/chemical.dmi', "bottle-" + num2text(i)), "bottle-[i].png")
|
||||
for(var/sprite in BOTTLE_SPRITES)
|
||||
usr << browse_rsc(icon('icons/obj/chemical.dmi', sprite), "[sprite].png")
|
||||
var/dat = ""
|
||||
if(!beaker)
|
||||
dat = "Please insert beaker.<BR>"
|
||||
@@ -529,7 +289,7 @@
|
||||
if(!condi)
|
||||
dat += "<HR><BR><A href='?src=\ref[src];createpill=1'>Create pill (60 units max)</A><a href=\"?src=\ref[src]&change_pill=1\"><img src=\"pill[pillsprite].png\" /></a><BR>"
|
||||
dat += "<A href='?src=\ref[src];createpill_multiple=1'>Create multiple pills</A><BR>"
|
||||
dat += "<A href='?src=\ref[src];createbottle=1'>Create bottle (60 units max)<a href=\"?src=\ref[src]&change_bottle=1\"><img src=\"bottle-[bottlesprite].png\" /></A>"
|
||||
dat += "<A href='?src=\ref[src];createbottle=1'>Create bottle (60 units max)<a href=\"?src=\ref[src]&change_bottle=1\"><img src=\"[bottlesprite].png\" /></A>"
|
||||
else
|
||||
dat += "<A href='?src=\ref[src];createbottle=1'>Create bottle (50 units max)</A>"
|
||||
if(!condi)
|
||||
@@ -635,7 +395,7 @@
|
||||
else if (href_list["create_virus_culture"])
|
||||
if(!wait)
|
||||
var/obj/item/weapon/reagent_containers/glass/bottle/B = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc)
|
||||
B.icon_state = "bottle3"
|
||||
B.icon_state = "bottle-1"
|
||||
var/type = text2path(href_list["create_virus_culture"])//the path is received as string - converting
|
||||
var/datum/disease/D = null
|
||||
if(!type)
|
||||
@@ -646,11 +406,12 @@
|
||||
if(type in diseases) // Make sure this is a disease
|
||||
D = new type(0, null)
|
||||
var/list/data = list("viruses"=list(D))
|
||||
var/name = sanitize(copytext(input(usr,"Name:","Name the culture",D.name), 1, MAX_NAME_LEN))
|
||||
var/name = sanitizeSafe(input(usr,"Name:","Name the culture",D.name))
|
||||
if(!name || name == " ") name = D.name
|
||||
B.name = "[name] culture bottle"
|
||||
B.desc = "A small bottle. Contains [D.agent] culture in synthblood medium."
|
||||
B.reagents.add_reagent("blood",20,data)
|
||||
B.update_icon()
|
||||
src.updateUsrDialog()
|
||||
wait = 1
|
||||
spawn(1000)
|
||||
@@ -674,7 +435,7 @@
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
else if(href_list["name_disease"])
|
||||
var/new_name = stripped_input(usr, "Name the Disease", "New Name", "", MAX_NAME_LEN)
|
||||
var/new_name = sanitizeSafe(input(usr, "Name the Disease", "New Name", ""), MAX_NAME_LEN)
|
||||
if(stat & (NOPOWER|BROKEN)) return
|
||||
if(usr.stat || usr.restrained()) return
|
||||
if(!in_range(src, usr)) return
|
||||
@@ -824,54 +585,15 @@
|
||||
var/inuse = 0
|
||||
var/obj/item/weapon/reagent_containers/beaker = null
|
||||
var/limit = 10
|
||||
var/list/blend_items = list (
|
||||
|
||||
//Sheets
|
||||
/obj/item/stack/sheet/mineral/phoron = list("phoron" = 20),
|
||||
/obj/item/stack/sheet/mineral/uranium = list("uranium" = 20),
|
||||
/obj/item/stack/sheet/mineral/silver = list("silver" = 20),
|
||||
/obj/item/stack/sheet/mineral/gold = list("gold" = 20),
|
||||
/obj/item/weapon/grown/nettle/death = list("pacid" = 0),
|
||||
/obj/item/weapon/grown/nettle = list("sacid" = 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/corn = list("cornoil" = 0),
|
||||
///obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk = list("rice" = -5),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/plastellium = list("plasticide" = 5),
|
||||
|
||||
|
||||
//archaeology!
|
||||
/obj/item/weapon/rocksliver = list("ground_rock" = 50),
|
||||
|
||||
|
||||
|
||||
//All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.!
|
||||
/obj/item/weapon/reagent_containers/pill = list(),
|
||||
/obj/item/weapon/reagent_containers/food = list()
|
||||
)
|
||||
|
||||
var/list/juice_items = list (
|
||||
|
||||
//Juicer Stuff
|
||||
/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/lemon = list("lemonjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/orange = list("orangejuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/lime = list("limejuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice = list("watermelonjuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes = list("grapejuice" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries = list("poisonberryjuice" = 0),
|
||||
)
|
||||
|
||||
|
||||
var/list/holdingitems = list()
|
||||
var/list/sheet_reagents = list(
|
||||
/obj/item/stack/sheet/mineral/iron = "iron",
|
||||
/obj/item/stack/sheet/mineral/uranium = "uranium",
|
||||
/obj/item/stack/sheet/mineral/phoron = "phoron",
|
||||
/obj/item/stack/sheet/mineral/gold = "gold",
|
||||
/obj/item/stack/sheet/mineral/silver = "silver",
|
||||
/obj/item/stack/sheet/mineral/mhydrogen = "hydrogen"
|
||||
)
|
||||
|
||||
/obj/machinery/reagentgrinder/New()
|
||||
..()
|
||||
@@ -882,10 +604,8 @@
|
||||
icon_state = "juicer"+num2text(!isnull(beaker))
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/reagentgrinder/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
|
||||
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/glass) || \
|
||||
istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass) || \
|
||||
istype(O,/obj/item/weapon/reagent_containers/food/drinks/shaker))
|
||||
@@ -904,25 +624,35 @@
|
||||
usr << "The machine cannot hold anymore items."
|
||||
return 1
|
||||
|
||||
//Fill machine with the plantbag!
|
||||
if(istype(O, /obj/item/weapon/storage/bag/plants))
|
||||
if(!istype(O))
|
||||
return
|
||||
|
||||
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
|
||||
if(istype(O,/obj/item/weapon/storage/bag/plants))
|
||||
var/failed = 1
|
||||
for(var/obj/item/G in O.contents)
|
||||
if(!G.reagents || !G.reagents.total_volume)
|
||||
continue
|
||||
failed = 0
|
||||
O.contents -= G
|
||||
G.loc = src
|
||||
holdingitems += G
|
||||
if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
|
||||
user << "You fill the All-In-One grinder to the brim."
|
||||
if(holdingitems && holdingitems.len >= limit)
|
||||
break
|
||||
|
||||
if(failed)
|
||||
user << "Nothing in the plant bag is usable."
|
||||
return 1
|
||||
|
||||
if(!O.contents.len)
|
||||
user << "You empty the plant bag into the All-In-One grinder."
|
||||
user << "You empty \the [O] into \the [src]."
|
||||
else
|
||||
user << "You fill \the [src] from \the [O]."
|
||||
|
||||
src.updateUsrDialog()
|
||||
return 0
|
||||
|
||||
if (!is_type_in_list(O, blend_items) && !is_type_in_list(O, juice_items))
|
||||
user << "Cannot refine into a reagent."
|
||||
if(!sheet_reagents[O.type] && (!O.reagents || !O.reagents.total_volume))
|
||||
user << "\The [O] is not suitable for blending."
|
||||
return 1
|
||||
|
||||
user.remove_from_mob(O)
|
||||
@@ -971,8 +701,7 @@
|
||||
[beaker_contents]<hr>
|
||||
"}
|
||||
if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN)))
|
||||
dat += "<A href='?src=\ref[src];action=grind'>Grind the reagents</a><BR>"
|
||||
dat += "<A href='?src=\ref[src];action=juice'>Juice the reagents</a><BR><BR>"
|
||||
dat += "<A href='?src=\ref[src];action=grind'>Process the reagents</a><BR>"
|
||||
if(holdingitems && holdingitems.len > 0)
|
||||
dat += "<A href='?src=\ref[src];action=eject'>Eject the reagents</a><BR>"
|
||||
if (beaker)
|
||||
@@ -991,8 +720,6 @@
|
||||
switch(href_list["action"])
|
||||
if ("grind")
|
||||
grind()
|
||||
if("juice")
|
||||
juice()
|
||||
if("eject")
|
||||
eject()
|
||||
if ("detach")
|
||||
@@ -1022,175 +749,49 @@
|
||||
holdingitems -= O
|
||||
holdingitems = list()
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/is_allowed(var/obj/item/weapon/reagent_containers/O)
|
||||
for (var/i in blend_items)
|
||||
if(istype(O, i))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_by_id(var/obj/item/weapon/grown/O)
|
||||
for (var/i in blend_items)
|
||||
if (istype(O, i))
|
||||
return blend_items[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(var/obj/item/weapon/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(var/obj/item/weapon/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(var/obj/item/weapon/grown/O)
|
||||
if (!istype(O))
|
||||
return 5
|
||||
else if (O.potency == -1)
|
||||
return 5
|
||||
else
|
||||
return round(O.potency)
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
if (!istype(O))
|
||||
return 5
|
||||
else if (O.potency == -1)
|
||||
return 5
|
||||
else
|
||||
return round(5*sqrt(O.potency))
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/remove_object(var/obj/item/O)
|
||||
holdingitems -= O
|
||||
del(O)
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/juice()
|
||||
power_change()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if (!beaker || (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume))
|
||||
return
|
||||
playsound(src.loc, 'sound/machines/juicer.ogg', 20, 1)
|
||||
inuse = 1
|
||||
spawn(50)
|
||||
inuse = 0
|
||||
interact(usr)
|
||||
//Snacks
|
||||
for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
|
||||
var/allowed = get_allowed_juice_by_id(O)
|
||||
if(isnull(allowed))
|
||||
break
|
||||
|
||||
for (var/r_id in allowed)
|
||||
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = get_juice_amount(O)
|
||||
|
||||
beaker.reagents.add_reagent(r_id, min(amount, space))
|
||||
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
|
||||
remove_object(O)
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/grind()
|
||||
|
||||
power_change()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
// Sanity check.
|
||||
if (!beaker || (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume))
|
||||
return
|
||||
|
||||
playsound(src.loc, 'sound/machines/blender.ogg', 50, 1)
|
||||
inuse = 1
|
||||
|
||||
// Reset the machine.
|
||||
spawn(60)
|
||||
inuse = 0
|
||||
interact(usr)
|
||||
//Snacks and Plants
|
||||
for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
|
||||
var/allowed = get_allowed_snack_by_id(O)
|
||||
if(isnull(allowed))
|
||||
break
|
||||
// Process.
|
||||
for (var/obj/item/O in holdingitems)
|
||||
|
||||
for (var/r_id in allowed)
|
||||
if(!O || !istype(O))
|
||||
holdingitems -= null
|
||||
continue
|
||||
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = allowed[r_id]
|
||||
if(amount <= 0)
|
||||
if(amount == 0)
|
||||
if (O.reagents != null && O.reagents.has_reagent("nutriment"))
|
||||
beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||
O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||
else
|
||||
if (O.reagents != null && O.reagents.has_reagent("nutriment"))
|
||||
beaker.reagents.add_reagent(r_id, min(round(O.reagents.get_reagent_amount("nutriment")*abs(amount)), space))
|
||||
O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||
var/remaining_volume = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
if(sheet_reagents[O.type])
|
||||
var/obj/item/stack/stack = O
|
||||
if(istype(stack))
|
||||
var/amount_to_take = max(0,min(stack.amount,round(remaining_volume/REAGENTS_PER_SHEET)))
|
||||
if(amount_to_take)
|
||||
stack.use(amount_to_take)
|
||||
beaker.reagents.add_reagent(sheet_reagents[stack.type], (amount_to_take*REAGENTS_PER_SHEET))
|
||||
continue
|
||||
|
||||
else
|
||||
O.reagents.trans_id_to(beaker, r_id, min(amount, space))
|
||||
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
|
||||
if(O.reagents.reagent_list.len == 0)
|
||||
O.reagents.trans_to(beaker, min(O.reagents.total_volume, remaining_volume))
|
||||
if(O.reagents.total_volume == 0)
|
||||
remove_object(O)
|
||||
|
||||
//Sheets
|
||||
for (var/obj/item/stack/sheet/O in holdingitems)
|
||||
var/allowed = get_allowed_by_id(O)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
for(var/i = 1; i <= round(O.amount, 1); i++)
|
||||
for (var/r_id in allowed)
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = allowed[r_id]
|
||||
beaker.reagents.add_reagent(r_id,min(amount, space))
|
||||
if (space < amount)
|
||||
break
|
||||
if (i == round(O.amount, 1))
|
||||
remove_object(O)
|
||||
break
|
||||
//Plants
|
||||
for (var/obj/item/weapon/grown/O in holdingitems)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
var/allowed = get_allowed_by_id(O)
|
||||
for (var/r_id in allowed)
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = allowed[r_id]
|
||||
if (amount == 0)
|
||||
if (O.reagents != null && O.reagents.has_reagent(r_id))
|
||||
beaker.reagents.add_reagent(r_id,min(O.reagents.get_reagent_amount(r_id), space))
|
||||
else
|
||||
beaker.reagents.add_reagent(r_id,min(amount, space))
|
||||
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
remove_object(O)
|
||||
|
||||
//xenoarch
|
||||
for(var/obj/item/weapon/rocksliver/O in holdingitems)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
var/allowed = get_allowed_by_id(O)
|
||||
for (var/r_id in allowed)
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = allowed[r_id]
|
||||
beaker.reagents.add_reagent(r_id,min(amount, space), O.geological_data)
|
||||
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
remove_object(O)
|
||||
|
||||
//Everything else - Transfers reagents from it into beaker
|
||||
for (var/obj/item/weapon/reagent_containers/O in holdingitems)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
var/amount = O.reagents.total_volume
|
||||
O.reagents.trans_to(beaker, amount)
|
||||
if(!O.reagents.total_volume)
|
||||
remove_object(O)
|
||||
#undef REAGENTS_PER_SHEET
|
||||
|
||||
@@ -88,7 +88,7 @@ datum
|
||||
on_new(var/data)
|
||||
return
|
||||
|
||||
// Called when two reagents of the same are mixing.
|
||||
// Called when two reagents of the same are mixing. <-- Blatant lies
|
||||
on_merge(var/data)
|
||||
return
|
||||
|
||||
@@ -98,7 +98,7 @@ datum
|
||||
|
||||
|
||||
blood
|
||||
data = new/list("donor"=null,"viruses"=null,"species"="Human","blood_DNA"=null,"blood_type"=null,"blood_colour"= "#A10808","resistances"=null,"trace_chem"=null, "antibodies" = null)
|
||||
data = new/list("donor"=null,"viruses"=null,"species"="Human","blood_DNA"=null,"blood_type"=null,"blood_colour"= "#A10808","resistances"=null,"trace_chem"=null, "antibodies" = list())
|
||||
name = "Blood"
|
||||
id = "blood"
|
||||
reagent_state = LIQUID
|
||||
@@ -153,9 +153,6 @@ datum
|
||||
|
||||
if(!self.data["donor"] || istype(self.data["donor"], /mob/living/carbon/human))
|
||||
blood_splatter(T,self,1)
|
||||
else if(istype(self.data["donor"], /mob/living/carbon/monkey))
|
||||
var/obj/effect/decal/cleanable/blood/B = blood_splatter(T,self,1)
|
||||
if(B) B.blood_DNA["Non-Human DNA"] = "A+"
|
||||
else if(istype(self.data["donor"], /mob/living/carbon/alien))
|
||||
var/obj/effect/decal/cleanable/blood/B = blood_splatter(T,self,1)
|
||||
if(B) B.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*"
|
||||
@@ -192,6 +189,13 @@ datum
|
||||
M.resistances += self.data
|
||||
return
|
||||
|
||||
woodpulp
|
||||
name = "Wood Pulp"
|
||||
id = "woodpulp"
|
||||
description = "A mass of wood fibers."
|
||||
reagent_state = LIQUID
|
||||
color = "#B97A57"
|
||||
|
||||
#define WATER_LATENT_HEAT 19000 // How much heat is removed when applied to a hot turf, in J/unit (19000 makes 120 u of water roughly equivalent to 4L)
|
||||
water
|
||||
name = "Water"
|
||||
@@ -258,10 +262,15 @@ datum
|
||||
if(!cube.wrapped)
|
||||
cube.Expand()
|
||||
|
||||
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
if (istype(M, /mob/living/carbon/slime))
|
||||
var/mob/living/carbon/slime/S = M
|
||||
S.apply_water()
|
||||
S.apply_water(volume)
|
||||
if(method == TOUCH && isliving(M))
|
||||
M.adjust_fire_stacks(-(volume / 10))
|
||||
if(M.fire_stacks <= 0)
|
||||
M.ExtinguishMob()
|
||||
return
|
||||
|
||||
water/holywater
|
||||
name = "Holy Water"
|
||||
@@ -275,11 +284,8 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(ishuman(M))
|
||||
if((M.mind in ticker.mode.cult) && prob(10))
|
||||
M << "\blue A cooling sensation from inside you brings you an untold calmness."
|
||||
ticker.mode.remove_cultist(M.mind)
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\blue []'s eyes blink and become clearer.", M), 1) // So observers know it worked.
|
||||
if(M.mind && cult.is_antagonist(M.mind) && prob(10))
|
||||
cult.remove_antagonist(M.mind)
|
||||
holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls.
|
||||
return
|
||||
|
||||
@@ -364,7 +370,7 @@ datum
|
||||
W.loc = M.loc
|
||||
W.dropped(M)
|
||||
var/mob/living/carbon/slime/new_mob = new /mob/living/carbon/slime(M.loc)
|
||||
new_mob.a_intent = "hurt"
|
||||
new_mob.a_intent = I_HURT
|
||||
new_mob.universal_speak = 1
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(new_mob)
|
||||
@@ -427,7 +433,7 @@ datum
|
||||
holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
/* silicate
|
||||
silicate
|
||||
name = "Silicate"
|
||||
id = "silicate"
|
||||
description = "A compound that can be used to reinforce glass."
|
||||
@@ -437,31 +443,9 @@ datum
|
||||
reaction_obj(var/obj/O, var/volume)
|
||||
src = null
|
||||
if(istype(O,/obj/structure/window))
|
||||
if(O:silicate <= 200)
|
||||
|
||||
O:silicate += volume
|
||||
O:health += volume * 3
|
||||
|
||||
if(!O:silicateIcon)
|
||||
var/icon/I = icon(O.icon,O.icon_state,O.dir)
|
||||
|
||||
var/r = (volume / 100) + 1
|
||||
var/g = (volume / 70) + 1
|
||||
var/b = (volume / 50) + 1
|
||||
I.SetIntensity(r,g,b)
|
||||
O.icon = I
|
||||
O:silicateIcon = I
|
||||
else
|
||||
var/icon/I = O:silicateIcon
|
||||
|
||||
var/r = (volume / 100) + 1
|
||||
var/g = (volume / 70) + 1
|
||||
var/b = (volume / 50) + 1
|
||||
I.SetIntensity(r,g,b)
|
||||
O.icon = I
|
||||
O:silicateIcon = I
|
||||
|
||||
return*/
|
||||
var/obj/structure/window/W = O
|
||||
W.apply_silicate(volume)
|
||||
return
|
||||
|
||||
oxygen
|
||||
name = "Oxygen"
|
||||
@@ -682,15 +666,13 @@ datum
|
||||
for (var/ID in C.virus2)
|
||||
var/datum/disease2/disease/V = C.virus2[ID]
|
||||
if(prob(5))
|
||||
M:antibodies |= V.antigen
|
||||
C.antibodies |= V.antigen
|
||||
if(prob(50))
|
||||
M.radiation += 50 // curing it that way may kill you instead
|
||||
var/absorbed
|
||||
if(istype(C,/mob/living/carbon))
|
||||
var/mob/living/carbon/H = C
|
||||
var/datum/organ/internal/diona/nutrients/rad_organ = locate() in H.internal_organs
|
||||
if(rad_organ && !rad_organ.is_broken())
|
||||
absorbed = 1
|
||||
var/datum/organ/internal/diona/nutrients/rad_organ = locate() in C.internal_organs
|
||||
if(rad_organ && !rad_organ.is_broken())
|
||||
absorbed = 1
|
||||
if(!absorbed)
|
||||
M.adjustToxLoss(100)
|
||||
..()
|
||||
@@ -933,6 +915,12 @@ datum
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite!
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 10)
|
||||
return
|
||||
|
||||
space_cleaner
|
||||
name = "Space cleaner"
|
||||
@@ -1537,6 +1525,84 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
//////////////////////////Ground crayons/////////////////////
|
||||
|
||||
|
||||
crayon_dust
|
||||
name = "Crayon dust"
|
||||
id = "crayon_dust"
|
||||
description = "Intensely coloured powder obtained by grinding crayons."
|
||||
reagent_state = LIQUID
|
||||
color = "#888888"
|
||||
overdose = 5
|
||||
|
||||
red
|
||||
name = "Red crayon dust"
|
||||
id = "crayon_dust_red"
|
||||
color = "#FE191A"
|
||||
|
||||
orange
|
||||
name = "Orange crayon dust"
|
||||
id = "crayon_dust_orange"
|
||||
color = "#FFBE4F"
|
||||
|
||||
yellow
|
||||
name = "Yellow crayon dust"
|
||||
id = "crayon_dust_yellow"
|
||||
color = "#FDFE7D"
|
||||
|
||||
green
|
||||
name = "Green crayon dust"
|
||||
id = "crayon_dust_green"
|
||||
color = "#18A31A"
|
||||
|
||||
blue
|
||||
name = "Blue crayon dust"
|
||||
id = "crayon_dust_blue"
|
||||
color = "#247CFF"
|
||||
|
||||
purple
|
||||
name = "Purple crayon dust"
|
||||
id = "crayon_dust_purple"
|
||||
color = "#CC0099"
|
||||
|
||||
grey //Mime
|
||||
name = "Grey crayon dust"
|
||||
id = "crayon_dust_grey"
|
||||
color = "#808080"
|
||||
|
||||
brown //Rainbow
|
||||
name = "Brown crayon dust"
|
||||
id = "crayon_dust_brown"
|
||||
color = "#846F35"
|
||||
|
||||
//////////////////////////Paint//////////////////////////////
|
||||
|
||||
paint
|
||||
name = "Paint"
|
||||
id = "paint"
|
||||
description = "This paint will stick to almost any object."
|
||||
reagent_state = LIQUID
|
||||
color = "#808080"
|
||||
overdose = 15
|
||||
|
||||
reaction_turf(var/turf/T, var/volume)
|
||||
..()
|
||||
if(istype(T) && !istype(T, /turf/space))
|
||||
T.color = color
|
||||
|
||||
reaction_obj(var/obj/O, var/volume)
|
||||
..()
|
||||
if(istype(O,/obj))
|
||||
O.color = color
|
||||
|
||||
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
..()
|
||||
if(istype(M,/mob) && !istype(M,/mob/dead))
|
||||
//painting ghosts: not allowed
|
||||
M.color = color
|
||||
|
||||
|
||||
//////////////////////////Poison stuff///////////////////////
|
||||
|
||||
toxin
|
||||
@@ -1615,6 +1681,12 @@ datum
|
||||
src = null
|
||||
T.assume_gas("volatile_fuel", volume, T20C)
|
||||
return
|
||||
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with plasma is stronger than fuel!
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 5)
|
||||
return
|
||||
|
||||
toxin/lexorin
|
||||
name = "Lexorin"
|
||||
@@ -1631,8 +1703,8 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(33))
|
||||
M.take_organ_damage(1*REM, 0)
|
||||
M.adjustOxyLoss(3)
|
||||
if(prob(20)) M.emote("gasp")
|
||||
if(M.losebreath < 15)
|
||||
M.losebreath++
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1777,10 +1849,12 @@ datum
|
||||
var/obj/effect/alien/weeds/alien_weeds = O
|
||||
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
|
||||
alien_weeds.healthcheck()
|
||||
else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it
|
||||
else if(istype(O,/obj/effect/plant)) //even a small amount is enough to kill it
|
||||
del(O)
|
||||
else if(istype(O,/obj/effect/plantsegment))
|
||||
if(prob(50)) del(O) //Kills kudzu too.
|
||||
else if(istype(O,/obj/effect/plant))
|
||||
if(prob(50))
|
||||
var/obj/effect/plant/plant = O
|
||||
plant.die_off()
|
||||
else if(istype(O,/obj/machinery/portable_atmospherics/hydroponics))
|
||||
var/obj/machinery/portable_atmospherics/hydroponics/tray = O
|
||||
|
||||
@@ -1980,17 +2054,6 @@ datum
|
||||
del (H.glasses)
|
||||
H.update_inv_glasses(0)
|
||||
|
||||
else if(ismonkey(M))
|
||||
var/mob/living/carbon/monkey/MK = M
|
||||
if(MK.wear_mask)
|
||||
if(!MK.wear_mask.unacidable)
|
||||
MK << "<span class='danger'>Your mask melts away but protects you from the acid!</span>"
|
||||
del (MK.wear_mask)
|
||||
MK.update_inv_wear_mask(0)
|
||||
else
|
||||
MK << "<span class='warning'>Your mask protects you from the acid.</span>"
|
||||
return
|
||||
|
||||
if(!M.unacidable)
|
||||
if(istype(M, /mob/living/carbon/human) && volume >= 10)
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -2009,7 +2072,7 @@ datum
|
||||
M.take_organ_damage(min(6*toxpwr, volume * toxpwr))
|
||||
|
||||
reaction_obj(var/obj/O, var/volume)
|
||||
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(meltprob * 3))
|
||||
if((istype(O,/obj/item) || istype(O,/obj/effect/plant)) && prob(meltprob * 3))
|
||||
if(!O.unacidable)
|
||||
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
|
||||
I.desc = "Looks like this was \an [O] some time ago."
|
||||
@@ -2041,22 +2104,31 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(50)) M.heal_organ_damage(1,0)
|
||||
M.nutrition += nutriment_factor // For hunger and fatness
|
||||
/*
|
||||
// If overeaten - vomit and fall down
|
||||
// Makes you feel bad but removes reagents and some effect
|
||||
// from your body
|
||||
if (M.nutrition > 650)
|
||||
M.nutrition = rand (250, 400)
|
||||
M.weakened += rand(2, 10)
|
||||
M.jitteriness += rand(0, 5)
|
||||
M.dizziness = max (0, (M.dizziness - rand(0, 15)))
|
||||
M.druggy = max (0, (M.druggy - rand(0, 15)))
|
||||
M.adjustToxLoss(rand(-15, -5)))
|
||||
M.updatehealth()
|
||||
*/
|
||||
..()
|
||||
return
|
||||
|
||||
nutriment/protein // Bad for Skrell!
|
||||
name = "animal protein"
|
||||
id = "protein"
|
||||
color = "#440000"
|
||||
|
||||
on_mob_life(var/mob/living/M, var/alien)
|
||||
if(alien && alien == IS_SKRELL)
|
||||
M.adjustToxLoss(0.5)
|
||||
M.nutrition -= nutriment_factor
|
||||
..()
|
||||
|
||||
nutriment/egg // Also bad for skrell. Not a child of protein because it might mess up, not sure.
|
||||
name = "egg yolk"
|
||||
id = "egg"
|
||||
color = "#FFFFAA"
|
||||
|
||||
on_mob_life(var/mob/living/M, var/alien)
|
||||
if(alien && alien == IS_SKRELL)
|
||||
M.adjustToxLoss(0.5)
|
||||
M.nutrition -= nutriment_factor
|
||||
..()
|
||||
|
||||
lipozine
|
||||
name = "Lipozine" // The anti-nutriment.
|
||||
id = "lipozine"
|
||||
@@ -2442,7 +2514,6 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
/* We're back to flour bags
|
||||
flour
|
||||
name = "flour"
|
||||
id = "flour"
|
||||
@@ -2460,7 +2531,6 @@ datum
|
||||
src = null
|
||||
if(!istype(T, /turf/space))
|
||||
new /obj/effect/decal/cleanable/flour(T)
|
||||
*/
|
||||
|
||||
rice
|
||||
name = "Rice"
|
||||
@@ -2569,7 +2639,7 @@ datum
|
||||
name = "Carrot juice"
|
||||
id = "carrotjuice"
|
||||
description = "It is just like a carrot but without crunching."
|
||||
color = "#973800" // rgb: 151, 56, 0
|
||||
color = "#FF8C00" // rgb: 255, 140, 0
|
||||
|
||||
glass_icon_state = "carrotjuice"
|
||||
glass_name = "glass of carrot juice"
|
||||
@@ -2639,7 +2709,7 @@ datum
|
||||
name = "Watermelon Juice"
|
||||
id = "watermelonjuice"
|
||||
description = "Delicious juice made from watermelon."
|
||||
color = "#863333" // rgb: 134, 51, 51
|
||||
color = "#B83333" // rgb: 184, 51, 51
|
||||
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of watermelon juice"
|
||||
@@ -2649,7 +2719,7 @@ datum
|
||||
name = "Lemon Juice"
|
||||
id = "lemonjuice"
|
||||
description = "This juice is VERY sour."
|
||||
color = "#863333" // rgb: 175, 175, 0
|
||||
color = "#AFAF00" // rgb: 175, 175, 0
|
||||
|
||||
glass_icon_state = "lemonjuice"
|
||||
glass_name = "glass of lemon juice"
|
||||
@@ -2659,7 +2729,7 @@ datum
|
||||
name = "Banana Juice"
|
||||
id = "banana"
|
||||
description = "The raw essence of a banana."
|
||||
color = "#863333" // rgb: 175, 175, 0
|
||||
color = "#C3AF00" // rgb: 195, 175, 0
|
||||
|
||||
glass_icon_state = "banana"
|
||||
glass_name = "glass of banana juice"
|
||||
@@ -3288,6 +3358,12 @@ datum
|
||||
usr << "It wasn't enough..."
|
||||
return
|
||||
|
||||
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with ethanol isn't quite as good as fuel.
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 15)
|
||||
return
|
||||
ethanol/beer
|
||||
name = "Beer"
|
||||
id = "beer"
|
||||
|
||||
@@ -4,6 +4,7 @@ datum
|
||||
var/name = null
|
||||
var/id = null
|
||||
var/result = null
|
||||
var/resultcolor = null //for paint
|
||||
var/list/required_reagents = new/list()
|
||||
var/list/required_catalysts = new/list()
|
||||
|
||||
@@ -55,14 +56,14 @@ datum
|
||||
empulse(location, round(created_volume / 24), round(created_volume / 14), 1)
|
||||
holder.clear_reagents()
|
||||
return
|
||||
/*
|
||||
|
||||
silicate
|
||||
name = "Silicate"
|
||||
id = "silicate"
|
||||
result = "silicate"
|
||||
required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1)
|
||||
result_amount = 3
|
||||
*/
|
||||
|
||||
stoxin
|
||||
name = "Soporific"
|
||||
id = "stoxin"
|
||||
@@ -131,7 +132,7 @@ datum
|
||||
name = "Water"
|
||||
id = "water"
|
||||
result = "water"
|
||||
required_reagents = list("oxygen" = 2, "hydrogen" = 1)
|
||||
required_reagents = list("oxygen" = 1, "hydrogen" = 2)
|
||||
result_amount = 1
|
||||
|
||||
thermite
|
||||
@@ -585,6 +586,14 @@ datum
|
||||
required_reagents = list("capsaicin" = 2)
|
||||
required_catalysts = list("phoron" = 5)
|
||||
result_amount = 1
|
||||
|
||||
ketchup
|
||||
name = "Ketchup"
|
||||
id = "ketchup"
|
||||
result = "ketchup"
|
||||
required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1)
|
||||
result_amount = 4
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// foam and foam precursor
|
||||
@@ -1344,6 +1353,200 @@ datum
|
||||
var/obj/effect/golemrune/Z = new /obj/effect/golemrune
|
||||
Z.loc = get_turf(holder.my_atom)
|
||||
Z.announce_to_ghosts()
|
||||
|
||||
//////////////////////////////////////////PAINT///////////////////////////////////////////
|
||||
//Crayon dust -> paint
|
||||
red_paint
|
||||
name = "Red paint"
|
||||
id = "red_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#FE191A"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_red" = 1)
|
||||
result_amount = 5
|
||||
|
||||
orange_paint
|
||||
name = "Orange paint"
|
||||
id = "orange_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#FFBE4F"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_orange" = 1)
|
||||
result_amount = 5
|
||||
|
||||
yellow_paint
|
||||
name = "Yellow paint"
|
||||
id = "yellow_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#FDFE7D"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_yellow" = 1)
|
||||
result_amount = 5
|
||||
|
||||
green_paint
|
||||
name = "Green paint"
|
||||
id = "green_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#18A31A"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_green" = 1)
|
||||
result_amount = 5
|
||||
|
||||
blue_paint
|
||||
name = "Blue paint"
|
||||
id = "blue_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#247CFF"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_blue" = 1)
|
||||
result_amount = 5
|
||||
|
||||
purple_paint
|
||||
name = "Purple paint"
|
||||
id = "purple_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#CC0099"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_purple" = 1)
|
||||
result_amount = 5
|
||||
|
||||
grey_paint //mime
|
||||
name = "Grey paint"
|
||||
id = "grey_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#808080"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_grey" = 1)
|
||||
result_amount = 5
|
||||
|
||||
brown_paint
|
||||
name = "Brown paint"
|
||||
id = "brown_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#846F35"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_brown" = 1)
|
||||
result_amount = 5
|
||||
|
||||
//Ghetto reactions
|
||||
|
||||
/* Ideally the paint should take on the blood's colour (for each of the species)
|
||||
but I could not think of a way. - RKF
|
||||
|
||||
blood_paint
|
||||
name = "Blood paint"
|
||||
id = "blood_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#C80000"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "blood" = 2)
|
||||
result_amount = 5
|
||||
*/
|
||||
milk_paint
|
||||
name = "Milk paint"
|
||||
id = "milk_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#F0F8FF"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "milk" = 5)
|
||||
result_amount = 5
|
||||
|
||||
orange_juice_paint
|
||||
name = "Orange juice paint"
|
||||
id = "orange_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#E78108"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "orangejuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
tomato_juice_paint
|
||||
name = "Tomato juice paint"
|
||||
id = "tomato_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#731008"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "tomatojuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
lime_juice_paint
|
||||
name = "Lime juice paint"
|
||||
id = "lime_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#365E30"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "limejuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
carrot_juice_paint
|
||||
name = "Carrot juice paint"
|
||||
id = "carrot_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#973800"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "carrotjuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
berry_juice_paint
|
||||
name = "Berry juice paint"
|
||||
id = "berry_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#990066"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "berryjuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
grape_juice_paint
|
||||
name = "Grape juice paint"
|
||||
id = "grape_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#863333"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "grapejuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
poisonberry_juice_paint
|
||||
name = "Poison berry juice paint"
|
||||
id = "poisonberry_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#863353"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "poisonberryjuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
watermelon_juice_paint
|
||||
name = "Watermelon juice paint"
|
||||
id = "watermelon_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#B83333"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "watermelonjuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
lemon_juice_paint
|
||||
name = "Lemon juice paint"
|
||||
id = "lemon_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#AFAF00"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "lemonjuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
banana_juice_paint
|
||||
name = "Banana juice paint"
|
||||
id = "banana_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#C3AF00"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "banana" = 5)
|
||||
result_amount = 5
|
||||
|
||||
potato_juice_paint
|
||||
name = "Potato juice paint"
|
||||
id = "potato_juice_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#302000"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "potatojuice" = 5)
|
||||
result_amount = 5
|
||||
|
||||
//Other paint
|
||||
|
||||
carbon_paint
|
||||
name = "Carbon paint"
|
||||
id = "carbon_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#333333"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "carbon" = 1)
|
||||
result_amount = 5
|
||||
|
||||
aluminum_paint
|
||||
name = "Aluminum paint"
|
||||
id = "aluminum_paint"
|
||||
result = "paint"
|
||||
resultcolor = "#F0F8FF"
|
||||
required_reagents = list("plasticide" = 1, "water" = 3, "aluminum" = 1)
|
||||
result_amount = 5
|
||||
|
||||
//////////////////////////////////////////FOOD MIXTURES////////////////////////////////////
|
||||
|
||||
tofu
|
||||
@@ -1409,6 +1612,26 @@ datum
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
|
||||
return
|
||||
|
||||
meatball
|
||||
name = "Meatball"
|
||||
id = "meatball"
|
||||
result = null
|
||||
required_reagents = list("protein" = 3, "flour" = 5)
|
||||
result_amount = 3
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meatball(get_turf(holder.my_atom))
|
||||
return
|
||||
|
||||
dough
|
||||
name = "Dough"
|
||||
id = "dough"
|
||||
result = null
|
||||
required_reagents = list("egg" = 3, "flour" = 10)
|
||||
result_amount = 1
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/dough(get_turf(holder.my_atom))
|
||||
return
|
||||
|
||||
syntiflesh
|
||||
name = "Syntiflesh"
|
||||
id = "syntiflesh"
|
||||
|
||||
@@ -1,293 +0,0 @@
|
||||
/obj/item/weapon/dart_cartridge
|
||||
name = "dart cartridge"
|
||||
desc = "A rack of hollow darts."
|
||||
icon = 'icons/obj/ammo.dmi'
|
||||
icon_state = "darts-5"
|
||||
item_state = "rcdammo"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
origin_tech = "materials=2"
|
||||
var/darts = 5
|
||||
|
||||
/obj/item/weapon/dart_cartridge/update_icon()
|
||||
if(!darts)
|
||||
icon_state = "darts-0"
|
||||
else if(darts > 5)
|
||||
icon_state = "darts-5"
|
||||
else
|
||||
icon_state = "darts-[darts]"
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/dartgun
|
||||
name = "dart gun"
|
||||
desc = "A small gas-powered dartgun, capable of delivering chemical cocktails swiftly across short distances."
|
||||
icon_state = "dartgun-empty"
|
||||
|
||||
var/list/beakers = list() //All containers inside the gun.
|
||||
var/list/mixing = list() //Containers being used for mixing.
|
||||
var/obj/item/weapon/dart_cartridge/cartridge = null //Container of darts.
|
||||
var/max_beakers = 3
|
||||
var/dart_reagent_amount = 15
|
||||
var/container_type = /obj/item/weapon/reagent_containers/glass/beaker
|
||||
var/list/starting_chems = null
|
||||
|
||||
/obj/item/weapon/gun/dartgun/update_icon()
|
||||
|
||||
if(!cartridge)
|
||||
icon_state = "dartgun-empty"
|
||||
return 1
|
||||
|
||||
if(!cartridge.darts)
|
||||
icon_state = "dartgun-0"
|
||||
else if(cartridge.darts > 5)
|
||||
icon_state = "dartgun-5"
|
||||
else
|
||||
icon_state = "dartgun-[cartridge.darts]"
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/dartgun/New()
|
||||
|
||||
..()
|
||||
if(starting_chems)
|
||||
for(var/chem in starting_chems)
|
||||
var/obj/B = new container_type(src)
|
||||
B.reagents.add_reagent(chem, 50)
|
||||
beakers += B
|
||||
cartridge = new /obj/item/weapon/dart_cartridge(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/dartgun/examine(mob/user)
|
||||
update_icon()
|
||||
if (!..(user, 2))
|
||||
return
|
||||
if (beakers.len)
|
||||
user << "\blue [src] contains:"
|
||||
for(var/obj/item/weapon/reagent_containers/glass/beaker/B in beakers)
|
||||
if(B.reagents && B.reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in B.reagents.reagent_list)
|
||||
user << "\blue [R.volume] units of [R.name]"
|
||||
|
||||
/obj/item/weapon/gun/dartgun/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(istype(I, /obj/item/weapon/dart_cartridge))
|
||||
|
||||
var/obj/item/weapon/dart_cartridge/D = I
|
||||
|
||||
if(!D.darts)
|
||||
user << "\blue [D] is empty."
|
||||
return 0
|
||||
|
||||
if(cartridge)
|
||||
if(cartridge.darts <= 0)
|
||||
src.remove_cartridge()
|
||||
else
|
||||
user << "\blue There's already a cartridge in [src]."
|
||||
return 0
|
||||
|
||||
user.drop_item()
|
||||
cartridge = D
|
||||
D.loc = src
|
||||
user << "\blue You slot [D] into [src]."
|
||||
update_icon()
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/glass))
|
||||
if(!istype(I, container_type))
|
||||
user << "\blue [I] doesn't seem to fit into [src]."
|
||||
return
|
||||
if(beakers.len >= max_beakers)
|
||||
user << "\blue [src] already has [max_beakers] beakers in it - another one isn't going to fit!"
|
||||
return
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B = I
|
||||
user.drop_item()
|
||||
B.loc = src
|
||||
beakers += B
|
||||
user << "\blue You slot [B] into [src]."
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/item/weapon/gun/dartgun/can_fire()
|
||||
if(!cartridge)
|
||||
return 0
|
||||
else
|
||||
return cartridge.darts
|
||||
|
||||
/obj/item/weapon/gun/dartgun/proc/has_selected_beaker_reagents()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/gun/dartgun/proc/remove_cartridge()
|
||||
if(cartridge)
|
||||
usr << "\blue You pop the cartridge out of [src]."
|
||||
var/obj/item/weapon/dart_cartridge/C = cartridge
|
||||
C.loc = get_turf(src)
|
||||
C.update_icon()
|
||||
cartridge = null
|
||||
src.update_icon()
|
||||
|
||||
/obj/item/weapon/gun/dartgun/proc/get_mixed_syringe()
|
||||
if (!cartridge)
|
||||
return 0
|
||||
if(!cartridge.darts)
|
||||
return 0
|
||||
|
||||
var/obj/item/weapon/reagent_containers/syringe/dart = new(src)
|
||||
|
||||
if(mixing.len)
|
||||
var/mix_amount = dart_reagent_amount/mixing.len
|
||||
for(var/obj/item/weapon/reagent_containers/glass/beaker/B in mixing)
|
||||
B.reagents.trans_to(dart,mix_amount)
|
||||
|
||||
return dart
|
||||
|
||||
/obj/item/weapon/gun/dartgun/proc/fire_dart(atom/target, mob/user)
|
||||
if (locate (/obj/structure/table, src.loc))
|
||||
return
|
||||
else
|
||||
var/turf/trg = get_turf(target)
|
||||
var/obj/effect/syringe_gun_dummy/D = new/obj/effect/syringe_gun_dummy(get_turf(src))
|
||||
var/obj/item/weapon/reagent_containers/syringe/S = get_mixed_syringe()
|
||||
if(!S)
|
||||
user << "\red There are no darts in [src]!"
|
||||
return
|
||||
if(!S.reagents)
|
||||
user << "\red There are no reagents available!"
|
||||
return
|
||||
cartridge.darts--
|
||||
src.update_icon()
|
||||
S.reagents.trans_to(D, S.reagents.total_volume)
|
||||
del(S)
|
||||
D.icon_state = "syringeproj"
|
||||
D.name = "syringe"
|
||||
D.flags |= NOREACT
|
||||
playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1)
|
||||
|
||||
for(var/i=0, i<6, i++)
|
||||
if(!D) break
|
||||
if(D.loc == trg) break
|
||||
step_towards(D,trg)
|
||||
|
||||
if(D)
|
||||
for(var/mob/living/carbon/M in D.loc)
|
||||
if(!istype(M,/mob/living/carbon)) continue
|
||||
if(M == user) continue
|
||||
//Syringe gun attack logging by Yvarov
|
||||
var/R
|
||||
if(D.reagents)
|
||||
for(var/datum/reagent/A in D.reagents.reagent_list)
|
||||
R += A.id + " ("
|
||||
R += num2text(A.volume) + "),"
|
||||
if (istype(M, /mob))
|
||||
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>dartgun</b> ([R])"
|
||||
user.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>dartgun</b> ([R])"
|
||||
msg_admin_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a dartgun ([R]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
|
||||
else
|
||||
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[M]/[M.ckey]</b> with a <b>dartgun</b> ([R])"
|
||||
msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a <b>dartgun</b> ([R]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
|
||||
if(D.reagents)
|
||||
D.reagents.trans_to(M, 15)
|
||||
M << "<span class='danger'>You feel a slight prick.</span>"
|
||||
|
||||
del(D)
|
||||
break
|
||||
if(D)
|
||||
for(var/atom/A in D.loc)
|
||||
if(A == user) continue
|
||||
if(A.density) del(D)
|
||||
|
||||
sleep(1)
|
||||
|
||||
if (D) spawn(10) del(D)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/dartgun/afterattack(obj/target, mob/user , flag)
|
||||
if(!isturf(target.loc) || target == user) return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/dartgun/can_hit(var/mob/living/target as mob, var/mob/living/user as mob)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/dartgun/attack_self(mob/user)
|
||||
|
||||
user.set_machine(src)
|
||||
var/dat = "<b>[src] mixing control:</b><br><br>"
|
||||
|
||||
if (beakers.len)
|
||||
var/i = 1
|
||||
for(var/obj/item/weapon/reagent_containers/glass/beaker/B in beakers)
|
||||
dat += "Beaker [i] contains: "
|
||||
if(B.reagents && B.reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in B.reagents.reagent_list)
|
||||
dat += "<br> [R.volume] units of [R.name], "
|
||||
if (check_beaker_mixing(B))
|
||||
dat += text("<A href='?src=\ref[src];stop_mix=[i]'><font color='green'>Mixing</font></A> ")
|
||||
else
|
||||
dat += text("<A href='?src=\ref[src];mix=[i]'><font color='red'>Not mixing</font></A> ")
|
||||
else
|
||||
dat += "nothing."
|
||||
dat += " \[<A href='?src=\ref[src];eject=[i]'>Eject</A>\]<br>"
|
||||
i++
|
||||
else
|
||||
dat += "There are no beakers inserted!<br><br>"
|
||||
|
||||
if(cartridge)
|
||||
if(cartridge.darts)
|
||||
dat += "The dart cartridge has [cartridge.darts] shots remaining."
|
||||
else
|
||||
dat += "<font color='red'>The dart cartridge is empty!</font>"
|
||||
dat += " \[<A href='?src=\ref[src];eject_cart=1'>Eject</A>\]"
|
||||
|
||||
user << browse(dat, "window=dartgun")
|
||||
onclose(user, "dartgun", src)
|
||||
|
||||
/obj/item/weapon/gun/dartgun/proc/check_beaker_mixing(var/obj/item/B)
|
||||
if(!mixing || !beakers)
|
||||
return 0
|
||||
for(var/obj/item/M in mixing)
|
||||
if(M == B)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/gun/dartgun/Topic(href, href_list)
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["stop_mix"])
|
||||
var/index = text2num(href_list["stop_mix"])
|
||||
if(index <= beakers.len)
|
||||
for(var/obj/item/M in mixing)
|
||||
if(M == beakers[index])
|
||||
mixing -= M
|
||||
break
|
||||
else if (href_list["mix"])
|
||||
var/index = text2num(href_list["mix"])
|
||||
if(index <= beakers.len)
|
||||
mixing += beakers[index]
|
||||
else if (href_list["eject"])
|
||||
var/index = text2num(href_list["eject"])
|
||||
if(index <= beakers.len)
|
||||
if(beakers[index])
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B = beakers[index]
|
||||
usr << "You remove [B] from [src]."
|
||||
mixing -= B
|
||||
beakers -= B
|
||||
B.loc = get_turf(src)
|
||||
else if (href_list["eject_cart"])
|
||||
remove_cartridge()
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/dartgun/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)
|
||||
if(cartridge)
|
||||
spawn(0) fire_dart(target,user)
|
||||
else
|
||||
usr << "\red [src] is empty."
|
||||
|
||||
|
||||
/obj/item/weapon/gun/dartgun/vox
|
||||
name = "alien dart gun"
|
||||
desc = "A small gas-powered dartgun, fitted for nonhuman hands."
|
||||
|
||||
/obj/item/weapon/gun/dartgun/vox/medical
|
||||
starting_chems = list("kelotane","bicaridine","anti_toxin")
|
||||
|
||||
/obj/item/weapon/gun/dartgun/vox/raider
|
||||
starting_chems = list("space_drugs","stoxin","impedrezene")
|
||||
@@ -0,0 +1,8 @@
|
||||
#define CARTRIDGE_VOLUME_LARGE 500
|
||||
#define CARTRIDGE_VOLUME_MEDIUM 250
|
||||
#define CARTRIDGE_VOLUME_SMALL 100
|
||||
|
||||
// Chemistry dispenser starts with 21
|
||||
// ERT dispenser starts with 28
|
||||
#define DISPENSER_MAX_CARTRIDGES 30
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge
|
||||
name = "chemical dispenser cartridge"
|
||||
desc = "This goes in a chemical dispenser."
|
||||
icon_state = "cartridge"
|
||||
|
||||
w_class = 3
|
||||
|
||||
volume = CARTRIDGE_VOLUME_LARGE
|
||||
amount_per_transfer_from_this = 50
|
||||
// Large, but inaccurate. Use a chem dispenser or beaker for accuracy.
|
||||
possible_transfer_amounts = list(50, 100)
|
||||
|
||||
var/spawn_reagent = null
|
||||
var/label = ""
|
||||
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/New()
|
||||
..()
|
||||
if(spawn_reagent)
|
||||
reagents.add_reagent(spawn_reagent, volume)
|
||||
var/datum/reagent/R = chemical_reagents_list[spawn_reagent]
|
||||
setLabel(R.name)
|
||||
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/examine(mob/user)
|
||||
..()
|
||||
user << "It has a capacity of [volume] units."
|
||||
if(reagents.total_volume <= 0)
|
||||
user << "It is empty."
|
||||
else
|
||||
user << "It contains [reagents.total_volume] units of liquid."
|
||||
if(!is_open_container())
|
||||
user << "The cap is sealed."
|
||||
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/verb/setLabel(L as text)
|
||||
set name = "Set Cartridge Label"
|
||||
set category = "Object"
|
||||
set src in view(usr, 1)
|
||||
if(L)
|
||||
if(usr)
|
||||
usr << "<span class='notice'>You set the label on \the [src] to '[L]'.</span>"
|
||||
|
||||
label = L
|
||||
name = "[initial(name)] - '[L]'"
|
||||
else
|
||||
if(usr)
|
||||
usr << "<span class='notice'>You clear the label on \the [src].</span>"
|
||||
label = ""
|
||||
name = initial(name)
|
||||
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/attack_self()
|
||||
..()
|
||||
if (is_open_container())
|
||||
usr << "<span class = 'notice'>You put the cap on \the [src].</span>"
|
||||
flags ^= OPENCONTAINER
|
||||
else
|
||||
usr << "<span class = 'notice'>You take the cap off \the [src].</span>"
|
||||
flags |= OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/afterattack(obj/target, mob/user , flag)
|
||||
if (!is_open_container() || !flag)
|
||||
return
|
||||
|
||||
else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
||||
target.add_fingerprint(user)
|
||||
|
||||
if(!target.reagents.total_volume && target.reagents)
|
||||
user << "<span class='warning'>\The [target] is empty.</span>"
|
||||
return
|
||||
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
user << "<span class='warning'>\The [src] is full.</span>"
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>You fill \the [src] with [trans] units of the contents of \the [target].</span>"
|
||||
|
||||
else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
|
||||
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='warning'>\The [src] is empty.</span>"
|
||||
return
|
||||
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
user << "<span class='warning'>\The [target] is full.</span>"
|
||||
return
|
||||
|
||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>You transfer [trans] units of the solution to \the [target].</span>"
|
||||
|
||||
else
|
||||
return ..()
|
||||
@@ -0,0 +1,94 @@
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge
|
||||
small
|
||||
volume = CARTRIDGE_VOLUME_SMALL
|
||||
|
||||
medium
|
||||
volume = CARTRIDGE_VOLUME_MEDIUM
|
||||
|
||||
// Multiple
|
||||
water spawn_reagent = "water"
|
||||
sugar spawn_reagent = "sugar"
|
||||
|
||||
// Chemistry
|
||||
hydrogen spawn_reagent = "hydrogen"
|
||||
lithium spawn_reagent = "lithium"
|
||||
carbon spawn_reagent = "carbon"
|
||||
nitrogen spawn_reagent = "nitrogen"
|
||||
oxygen spawn_reagent = "oxygen"
|
||||
fluorine spawn_reagent = "fluorine"
|
||||
sodium spawn_reagent = "sodium"
|
||||
aluminum spawn_reagent = "aluminum"
|
||||
silicon spawn_reagent = "silicon"
|
||||
phosphorus spawn_reagent = "phosphorus"
|
||||
sulfur spawn_reagent = "sulfur"
|
||||
chlorine spawn_reagent = "chlorine"
|
||||
potassium spawn_reagent = "potassium"
|
||||
iron spawn_reagent = "iron"
|
||||
copper spawn_reagent = "copper"
|
||||
mercury spawn_reagent = "mercury"
|
||||
radium spawn_reagent = "radium"
|
||||
ethanol spawn_reagent = "ethanol"
|
||||
sacid spawn_reagent = "sacid"
|
||||
tungsten spawn_reagent = "tungsten"
|
||||
|
||||
// Bar, alcoholic
|
||||
beer spawn_reagent = "beer"
|
||||
kahlua spawn_reagent = "kahlua"
|
||||
whiskey spawn_reagent = "whiskey"
|
||||
wine spawn_reagent = "wine"
|
||||
vodka spawn_reagent = "vodka"
|
||||
gin spawn_reagent = "gin"
|
||||
rum spawn_reagent = "rum"
|
||||
tequila spawn_reagent = "tequilla"
|
||||
vermouth spawn_reagent = "vermouth"
|
||||
cognac spawn_reagent = "cognac"
|
||||
ale spawn_reagent = "ale"
|
||||
mead spawn_reagent = "mead"
|
||||
|
||||
// Bar, soft
|
||||
ice spawn_reagent = "ice"
|
||||
coffee spawn_reagent = "coffee"
|
||||
cream spawn_reagent = "cream"
|
||||
tea spawn_reagent = "tea"
|
||||
icetea spawn_reagent = "icetea"
|
||||
cola spawn_reagent = "cola"
|
||||
smw spawn_reagent = "spacemountainwind"
|
||||
dr_gibb spawn_reagent = "dr_gibb"
|
||||
spaceup spawn_reagent = "space_up"
|
||||
tonic spawn_reagent = "tonic"
|
||||
sodawater spawn_reagent = "sodawater"
|
||||
lemon_lime spawn_reagent = "lemon_lime"
|
||||
orange spawn_reagent = "orangejuice"
|
||||
lime spawn_reagent = "limejuice"
|
||||
watermelon spawn_reagent = "watermelonjuice"
|
||||
|
||||
// ERT
|
||||
inaprov spawn_reagent = "inaprovaline"
|
||||
ryetalyn spawn_reagent = "ryetalyn"
|
||||
paracetamol spawn_reagent = "paracetamol"
|
||||
tramadol spawn_reagent = "tramadol"
|
||||
oxycodone spawn_reagent = "oxycodone"
|
||||
sterilizine spawn_reagent = "sterilizine"
|
||||
leporazine spawn_reagent = "leporazine"
|
||||
kelotane spawn_reagent = "kelotane"
|
||||
dermaline spawn_reagent = "dermaline"
|
||||
dexalin spawn_reagent = "dexalin"
|
||||
dexalin/small volume = CARTRIDGE_VOLUME_SMALL // For the medicine cartridge crate, so it's not too easy to get large amounts of dexalin
|
||||
dexalin_p spawn_reagent = "dexalinp"
|
||||
tricord spawn_reagent = "tricordrazine"
|
||||
dylovene spawn_reagent = "anti_toxin"
|
||||
synaptizine spawn_reagent = "synaptizine"
|
||||
hyronalin spawn_reagent = "hyronalin"
|
||||
arithrazine spawn_reagent = "arithrazine"
|
||||
alkysine spawn_reagent = "alkysine"
|
||||
imidazoline spawn_reagent = "imidazoline"
|
||||
peridaxon spawn_reagent = "peridaxon"
|
||||
bicaridine spawn_reagent = "bicaridine"
|
||||
hyperzine spawn_reagent = "hyperzine"
|
||||
rezadone spawn_reagent = "rezadone"
|
||||
spaceacillin spawn_reagent = "spaceacillin"
|
||||
ethylredox spawn_reagent = "ethylredoxrazine"
|
||||
sleeptox spawn_reagent = "stoxin"
|
||||
chloral spawn_reagent = "chloralhydrate"
|
||||
cryoxadone spawn_reagent = "cryoxadone"
|
||||
clonexadone spawn_reagent = "clonexadone"
|
||||
@@ -0,0 +1,175 @@
|
||||
/obj/machinery/chemical_dispenser
|
||||
name = "chemical dispenser"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "dispenser"
|
||||
|
||||
var/list/spawn_cartridges = null // Set to a list of types to spawn one of each on New()
|
||||
|
||||
var/list/cartridges = list() // Associative, label -> cartridge
|
||||
var/obj/item/weapon/reagent_containers/container = null
|
||||
|
||||
var/ui_title = "Chemical Dispenser"
|
||||
|
||||
var/accept_drinking = 0
|
||||
var/amount = 30
|
||||
|
||||
use_power = 1
|
||||
idle_power_usage = 100
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
/obj/machinery/chemical_dispenser/New()
|
||||
..()
|
||||
|
||||
if(spawn_cartridges)
|
||||
for(var/type in spawn_cartridges)
|
||||
add_cartridge(new type(src))
|
||||
|
||||
/obj/machinery/chemical_dispenser/examine(mob/user)
|
||||
..()
|
||||
user << "It has [cartridges.len] cartridges installed, and has space for [DISPENSER_MAX_CARTRIDGES - cartridges.len] more."
|
||||
|
||||
/obj/machinery/chemical_dispenser/proc/add_cartridge(obj/item/weapon/reagent_containers/chem_disp_cartridge/C, mob/user)
|
||||
if(!istype(C))
|
||||
if(user)
|
||||
user << "<span class='warning'>\The [C] will not fit in \the [src]!</span>"
|
||||
return
|
||||
|
||||
if(cartridges.len >= DISPENSER_MAX_CARTRIDGES)
|
||||
if(user)
|
||||
user << "<span class='warning'>\The [src] does not have any slots open for \the [C] to fit into!</span>"
|
||||
return
|
||||
|
||||
if(!C.label)
|
||||
if(user)
|
||||
user << "<span class='warning'>\The [C] does not have a label!</span>"
|
||||
return
|
||||
|
||||
if(cartridges[C.label])
|
||||
if(user)
|
||||
user << "<span class='warning'>\The [src] already contains a cartridge with that label!</span>"
|
||||
return
|
||||
|
||||
if(user)
|
||||
user.drop_from_inventory(C)
|
||||
user << "<span class='notice'>You add \the [C] to \the [src].</span>"
|
||||
|
||||
C.loc = src
|
||||
cartridges[C.label] = C
|
||||
cartridges = sortAssoc(cartridges)
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
/obj/machinery/chemical_dispenser/proc/remove_cartridge(label)
|
||||
. = cartridges[label]
|
||||
cartridges -= label
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
/obj/machinery/chemical_dispenser/attackby(obj/item/weapon/W, mob/user)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
user << "<span class='notice'>You begin to [anchored ? "un" : ""]fasten \the [src].</span>"
|
||||
if (do_after(user, 20))
|
||||
user.visible_message(
|
||||
"<span class='notice'>\The [user] [anchored ? "un" : ""]fastens \the [src].</span>",
|
||||
"<span class='notice'>You have [anchored ? "un" : ""]fastened \the [src].</span>",
|
||||
"You hear a ratchet.")
|
||||
anchored = !anchored
|
||||
else
|
||||
user << "<span class='notice'>You decide not to [anchored ? "un" : ""]fasten \the [src].</span>"
|
||||
|
||||
else if(istype(W, /obj/item/weapon/reagent_containers/chem_disp_cartridge))
|
||||
add_cartridge(W, user)
|
||||
|
||||
else if(istype(W, /obj/item/weapon/screwdriver))
|
||||
var/label = input(user, "Which cartridge would you like to remove?", "Chemical Dispenser") as null|anything in cartridges
|
||||
if(!label) return
|
||||
var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = remove_cartridge(label)
|
||||
if(C)
|
||||
user << "<span class='notice'>You remove \the [C] from \the [src].</span>"
|
||||
C.loc = loc
|
||||
|
||||
else if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food))
|
||||
var/obj/item/weapon/reagent_containers/RC = W
|
||||
|
||||
if(!accept_drinking && istype(RC,/obj/item/weapon/reagent_containers/food))
|
||||
user << "<span class='warning'>This machine only accepts beakers!</span>"
|
||||
return
|
||||
|
||||
if(!RC.is_open_container())
|
||||
user << "<span class='warning'>You don't see how \the [src] could dispense reagents into \the [RC].</span>"
|
||||
return
|
||||
|
||||
container = RC
|
||||
user.drop_from_inventory(RC)
|
||||
RC.loc = src
|
||||
user << "<span class='notice'>You set \the [RC] on \the [src].</span>"
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/chemical_dispenser/ui_interact(mob/user, ui_key = "main",var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
if(stat & (BROKEN|NOPOWER)) return
|
||||
if(user.stat || user.restrained()) return
|
||||
|
||||
// this is the data which will be sent to the ui
|
||||
var/data[0]
|
||||
data["amount"] = amount
|
||||
data["isBeakerLoaded"] = container ? 1 : 0
|
||||
data["glass"] = accept_drinking
|
||||
var beakerD[0]
|
||||
if(container && container.reagents && container.reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in container.reagents.reagent_list)
|
||||
beakerD[++beakerD.len] = list("name" = R.name, "volume" = R.volume)
|
||||
data["beakerContents"] = beakerD
|
||||
|
||||
if(container)
|
||||
data["beakerCurrentVolume"] = container.reagents.total_volume
|
||||
data["beakerMaxVolume"] = container.reagents.maximum_volume
|
||||
else
|
||||
data["beakerCurrentVolume"] = null
|
||||
data["beakerMaxVolume"] = null
|
||||
|
||||
var chemicals[0]
|
||||
for(var/label in cartridges)
|
||||
var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label]
|
||||
chemicals[++chemicals.len] = list("label" = label, "amount" = C.reagents.total_volume)
|
||||
data["chemicals"] = chemicals
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "chem_disp.tmpl", ui_title, 390, 680)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/chemical_dispenser/Topic(href, href_list)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return 0 // don't update UIs attached to this object
|
||||
|
||||
if(href_list["amount"])
|
||||
amount = round(text2num(href_list["amount"]), 1) // round to nearest 1
|
||||
amount = max(0, min(120, amount)) // Since the user can actually type the commands himself, some sanity checking
|
||||
|
||||
else if(href_list["dispense"])
|
||||
var/label = href_list["dispense"]
|
||||
if(cartridges[label] && container && container.is_open_container())
|
||||
var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label]
|
||||
C.reagents.trans_to(container, amount)
|
||||
|
||||
else if(href_list["ejectBeaker"])
|
||||
if(container)
|
||||
var/obj/item/weapon/reagent_containers/B = container
|
||||
B.loc = loc
|
||||
container = null
|
||||
|
||||
add_fingerprint(usr)
|
||||
return 1 // update UIs attached to this object
|
||||
|
||||
/obj/machinery/chemical_dispenser/attack_ai(mob/user as mob)
|
||||
src.attack_hand(user)
|
||||
|
||||
/obj/machinery/chemical_dispenser/attack_hand(mob/user as mob)
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
ui_interact(user)
|
||||
@@ -0,0 +1,115 @@
|
||||
/obj/machinery/chemical_dispenser/full
|
||||
spawn_cartridges = list(
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/iron,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/copper,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/radium,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/water,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten
|
||||
)
|
||||
|
||||
/obj/machinery/chemical_dispenser/ert
|
||||
name = "medicine dispenser"
|
||||
spawn_cartridges = list(
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/inaprov,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ryetalyn,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/paracetamol,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tramadol,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/oxycodone,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sterilizine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/leporazine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/kelotane,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/dermaline,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin_p,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tricord,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/dylovene,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/synaptizine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/hyronalin,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/arithrazine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/alkysine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/imidazoline,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/peridaxon,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/bicaridine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/hyperzine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/rezadone,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceacillin,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ethylredox,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sleeptox,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/chloral,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cryoxadone,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/clonexadone
|
||||
)
|
||||
|
||||
/obj/machinery/chemical_dispenser/bar_soft
|
||||
name = "soft drink dispenser"
|
||||
desc = "A soda machine."
|
||||
icon_state = "soda_dispenser"
|
||||
ui_title = "Soda Dispenser"
|
||||
accept_drinking = 1
|
||||
|
||||
/obj/machinery/chemical_dispenser/bar_soft/full
|
||||
spawn_cartridges = list(
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/water,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ice,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cream,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tea,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cola,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/smw,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/orange,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lime,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon
|
||||
)
|
||||
|
||||
/obj/machinery/chemical_dispenser/bar_alc
|
||||
name = "booze dispenser"
|
||||
desc = "A beer machine. Like a soda machine, but more fun!"
|
||||
icon_state = "booze_dispenser"
|
||||
ui_title = "Booze Dispenser"
|
||||
accept_drinking = 1
|
||||
|
||||
/obj/machinery/chemical_dispenser/bar_alc/full
|
||||
spawn_cartridges = list(
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/orange,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lime,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/beer,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/wine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/gin,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/rum,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ale,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/mead
|
||||
)
|
||||
@@ -0,0 +1,211 @@
|
||||
/datum/supply_packs/chemistry_dispenser
|
||||
name = "Reagent dispenser"
|
||||
contains = list(
|
||||
/obj/machinery/chemical_dispenser{anchored = 0}
|
||||
)
|
||||
cost = 25
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "reagent dispenser crate"
|
||||
group = "Reagents"
|
||||
|
||||
/datum/supply_packs/beer_dispenser
|
||||
name = "Booze dispenser"
|
||||
contains = list(
|
||||
/obj/machinery/chemical_dispenser/bar_alc{anchored = 0}
|
||||
)
|
||||
cost = 25
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "booze dispenser crate"
|
||||
group = "Reagents"
|
||||
|
||||
/datum/supply_packs/soda_dispenser
|
||||
name = "Soda dispenser"
|
||||
contains = list(
|
||||
/obj/machinery/chemical_dispenser/bar_soft{anchored = 0}
|
||||
)
|
||||
cost = 25
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "soda dispenser crate"
|
||||
group = "Reagents"
|
||||
|
||||
/datum/supply_packs/reagents
|
||||
name = "Chemistry dispenser refill"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/iron,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/copper,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/radium,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/water,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten
|
||||
)
|
||||
cost = 150
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "chemical crate"
|
||||
access = list(access_chemistry)
|
||||
group = "Reagents"
|
||||
|
||||
/datum/supply_packs/alcohol_reagents
|
||||
name = "Bar alcoholic dispenser refill"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/beer,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/wine,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/gin,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/rum,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ale,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/mead
|
||||
)
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "alcoholic drinks crate"
|
||||
access = list(access_bar)
|
||||
group = "Reagents"
|
||||
|
||||
/datum/supply_packs/softdrink_reagents
|
||||
name = "Bar soft drink dispenser refill"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/water,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ice,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cream,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tea,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cola,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/smw,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/orange,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lime,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon
|
||||
)
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "soft drinks crate"
|
||||
group = "Reagents"
|
||||
|
||||
/datum/supply_packs/dispenser_cartridges
|
||||
name = "Empty dispenser cartridges"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge
|
||||
)
|
||||
cost = 15
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "dispenser cartridge crate"
|
||||
group = "Reagents"
|
||||
|
||||
#define SEC_PACK(_tname, _type, _name, _cname, _cost, _access)\
|
||||
/datum/supply_packs/dispenser_cartridges{\
|
||||
_tname {\
|
||||
name = _name ;\
|
||||
containername = _cname ;\
|
||||
containertype = /obj/structure/closet/crate/secure;\
|
||||
access = list( _access );\
|
||||
cost = _cost ;\
|
||||
contains = list( _type , _type );\
|
||||
group = "Reagent Cartridges"\
|
||||
}\
|
||||
}
|
||||
#define PACK(_tname, _type, _name, _cname, _cost)\
|
||||
/datum/supply_packs/dispenser_cartridges{\
|
||||
_tname {\
|
||||
name = _name ;\
|
||||
containername = _cname ;\
|
||||
containertype = /obj/structure/closet/crate/secure;\
|
||||
cost = _cost ;\
|
||||
contains = list( _type , _type );\
|
||||
group = "Reagent Cartridges"\
|
||||
}\
|
||||
}
|
||||
|
||||
// Chemistry-restricted (raw reagents excluding sugar/water)
|
||||
// Datum path Contents type Supply pack name Container name Cost Container access
|
||||
SEC_PACK(hydrogen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, "Reagent refill - Hydrogen", "hydrogen reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(lithium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, "Reagent refill - Lithium", "lithium reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(carbon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, "Reagent refill - Carbon", "carbon reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(nitrogen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, "Reagent refill - Nitrogen", "nitrogen reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(oxygen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, "Reagent refill - Oxygen", "oxygen reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(fluorine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, "Reagent refill - Fluorine", "fluorine reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(sodium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, "Reagent refill - Sodium", "sodium reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(aluminium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, "Reagent refill - Aluminum", "aluminum reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(silicon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, "Reagent refill - Silicon", "silicon reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(phosphorus,/obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, "Reagent refill - Phosphorus", "phosphorus reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(sulfur, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, "Reagent refill - Sulfur", "sulfur reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(chlorine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, "Reagent refill - Chlorine", "chlorine reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(potassium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, "Reagent refill - Potassium", "potassium reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(iron, /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, "Reagent refill - Iron", "iron reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(copper, /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, "Reagent refill - Copper", "copper reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(mercury, /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, "Reagent refill - Mercury", "mercury reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(radium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, "Reagent refill - Radium", "radium reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(ethanol, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, "Reagent refill - Ethanol", "ethanol reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(sacid, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, "Reagent refill - Sulfuric Acid", "sulfuric acid reagent cartridge crate", 15, access_chemistry)
|
||||
SEC_PACK(tungsten, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten, "Reagent refill - Tungsten", "tungsten reagent cartridge crate", 15, access_chemistry)
|
||||
|
||||
// Bar-restricted (alcoholic drinks)
|
||||
// Datum path Contents type Supply pack name Container name Cost Container access
|
||||
SEC_PACK(beer, /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, "Reagent refill - Beer", "beer reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(kahlua, /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, "Reagent refill - Kahlua", "kahlua reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(whiskey, /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, "Reagent refill - Whiskey", "whiskey reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(wine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, "Reagent refill - Wine", "wine reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(vodka, /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, "Reagent refill - Vodka", "vodka reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(gin, /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, "Reagent refill - Gin", "gin reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(rum, /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, "Reagent refill - Rum", "rum reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(tequila, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, "Reagent refill - Tequila", "tequila reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(vermouth, /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, "Reagent refill - Vermouth", "vermouth reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(cognac, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, "Reagent refill - Cognac", "cognac reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(ale, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, "Reagent refill - Ale", "ale reagent cartridge crate", 15, access_bar)
|
||||
SEC_PACK(mead, /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead, "Reagent refill - Mead", "mead reagent cartridge crate", 15, access_bar)
|
||||
|
||||
// Unrestricted (water, sugar, non-alcoholic drinks)
|
||||
// Datum path Contents type Supply pack name Container name Cost
|
||||
PACK(water, /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, "Reagent refill - Water", "water reagent cartridge crate", 15)
|
||||
PACK(sugar, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, "Reagent refill - Sugar", "sugar reagent cartridge crate", 15)
|
||||
PACK(ice, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, "Reagent refill - Ice", "ice reagent cartridge crate", 15)
|
||||
PACK(tea, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, "Reagent refill - Tea", "tea reagent cartridge crate", 15)
|
||||
PACK(icetea, /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, "Reagent refill - Iced Tea", "iced tea reagent cartridge crate", 15)
|
||||
PACK(cola, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, "Reagent refill - Space Cola", "\improper Space Cola reagent cartridge crate", 15)
|
||||
PACK(smw, /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, "Reagent refill - Space Mountain Wind", "\improper Space Mountain Wind reagent cartridge crate", 15)
|
||||
PACK(dr_gibb, /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, "Reagent refill - Dr. Gibb", "\improper Dr. Gibb reagent cartridge crate", 15)
|
||||
PACK(spaceup, /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, "Reagent refill - Space-Up", "\improper Space-Up reagent cartridge crate", 15)
|
||||
PACK(tonic, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, "Reagent refill - Tonic Water", "tonic water reagent cartridge crate", 15)
|
||||
PACK(sodawater, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, "Reagent refill - Soda Water", "soda water reagent cartridge crate", 15)
|
||||
PACK(lemon_lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, "Reagent refill - Lemon-Lime Juice", "lemon-lime juice reagent cartridge crate", 15)
|
||||
PACK(orange, /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, "Reagent refill - Orange Juice", "orange juice reagent cartridge crate", 15)
|
||||
PACK(lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, "Reagent refill - Lime Juice", "lime juice reagent cartridge crate", 15)
|
||||
PACK(watermelon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon, "Reagent refill - Watermelon Juice", "watermelon juice reagent cartridge crate", 15)
|
||||
|
||||
#undef SEC_PACK
|
||||
#undef PACK
|
||||
@@ -1,63 +0,0 @@
|
||||
|
||||
|
||||
/obj/item/weapon/gun/grenadelauncher
|
||||
name = "grenade launcher"
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "riotgun"
|
||||
item_state = "riotgun"
|
||||
w_class = 4.0
|
||||
throw_speed = 2
|
||||
throw_range = 10
|
||||
force = 5.0
|
||||
var/list/grenades = new/list()
|
||||
var/max_grenades = 3
|
||||
matter = list("metal" = 2000)
|
||||
|
||||
examine(mob/user)
|
||||
if(..(user, 2))
|
||||
user << "\blue [grenades] / [max_grenades] Grenades."
|
||||
|
||||
attackby(obj/item/I as obj, mob/user as mob)
|
||||
|
||||
if((istype(I, /obj/item/weapon/grenade)))
|
||||
if(grenades.len < max_grenades)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
grenades += I
|
||||
user << "\blue You put the grenade in the grenade launcher."
|
||||
user << "\blue [grenades.len] / [max_grenades] Grenades."
|
||||
else
|
||||
usr << "\red The grenade launcher cannot hold more grenades."
|
||||
|
||||
afterattack(obj/target, mob/user , flag)
|
||||
|
||||
if (istype(target, /obj/item/weapon/storage/backpack ))
|
||||
return
|
||||
|
||||
else if (locate (/obj/structure/table, src.loc))
|
||||
return
|
||||
|
||||
else if(target == user)
|
||||
return
|
||||
|
||||
if(grenades.len)
|
||||
spawn(0) fire_grenade(target,user)
|
||||
else
|
||||
usr << "\red The grenade launcher is empty."
|
||||
|
||||
proc
|
||||
fire_grenade(atom/target, mob/user)
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red [] fired a grenade!", user), 1)
|
||||
user << "\red You fire the grenade launcher!"
|
||||
var/obj/item/weapon/grenade/chem_grenade/F = grenades[1] //Now with less copypasta!
|
||||
grenades -= F
|
||||
F.loc = user.loc
|
||||
F.throw_at(target, 30, 2, user)
|
||||
message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
|
||||
log_game("[key_name_admin(user)] used a grenade ([src.name]).")
|
||||
F.active = 1
|
||||
F.icon_state = initial(icon_state) + "_active"
|
||||
playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
|
||||
spawn(15)
|
||||
F.prime()
|
||||
@@ -28,8 +28,8 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/attack(mob/M as mob, mob/user as mob, def_zone)
|
||||
if (can_operate(M)) //Checks if mob is lying down on table for surgery
|
||||
if (do_surgery(M,user,src))
|
||||
if(can_operate(M)) //Checks if mob is lying down on table for surgery
|
||||
if(do_surgery(M,user,src))
|
||||
return
|
||||
|
||||
// this prevented pills, food, and other things from being picked up by bags.
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
user << "\red [target] is full."
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/cigarette)) //You can inject humans and food but you cant remove the shit.
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/smokable/cigarette)) //You can inject humans and food but you cant remove the shit.
|
||||
user << "\red You cannot directly fill this object."
|
||||
return
|
||||
|
||||
|
||||
@@ -173,20 +173,6 @@
|
||||
..()
|
||||
reagents.add_reagent("milk", 50)
|
||||
|
||||
/* Flour is no longer a reagent
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flour
|
||||
name = "flour sack"
|
||||
desc = "A big bag of flour. Good for baking!"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "flour"
|
||||
item_state = "flour"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("flour", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soymilk
|
||||
name = "SoyMilk"
|
||||
desc = "It's soy milk. White and nutritious goodness!"
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(user.a_intent != "hurt" || !isGlass)
|
||||
if(user.a_intent != I_HURT || !isGlass)
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
var/trash = null
|
||||
var/slice_path
|
||||
var/slices_num
|
||||
var/dried_type = null
|
||||
var/dry = 0
|
||||
center_of_mass = list("x"=15, "y"=15)
|
||||
w_class = 2
|
||||
|
||||
@@ -32,9 +34,10 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone)
|
||||
if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it.
|
||||
user << "\red None of [src] left, oh no!"
|
||||
M.drop_from_inventory(src) //so icons update :[
|
||||
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='danger'>None of [src] left!</span>"
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
return 0
|
||||
|
||||
@@ -106,9 +109,6 @@
|
||||
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/afterattack(obj/target, mob/user, proximity)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/examine(mob/user)
|
||||
if(!..(user, 1))
|
||||
return
|
||||
@@ -205,7 +205,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/attack_generic(var/mob/living/user)
|
||||
if(!isanimal(user) && !isalien(user))
|
||||
return
|
||||
user.visible_message("<b>[user]</b> nibbles away at the [src].","You nibble away at the [src].")
|
||||
user.visible_message("<b>[user]</b> nibbles away at \the [src].","You nibble away at \the [src].")
|
||||
bitecount++
|
||||
if(reagents && user.reagents)
|
||||
reagents.trans_to_ingest(user, bitesize)
|
||||
@@ -465,31 +465,41 @@
|
||||
icon_state = "egg"
|
||||
filling_color = "#FDFFD1"
|
||||
|
||||
New()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/New()
|
||||
..()
|
||||
reagents.add_reagent("egg", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/afterattack(obj/O as obj, mob/user as mob, proximity)
|
||||
if(istype(O,/obj/machinery/microwave))
|
||||
return ..()
|
||||
if(!(proximity && O.is_open_container()))
|
||||
return
|
||||
user << "You crack \the [src] into \the [O]."
|
||||
reagents.trans_to(O, reagents.total_volume)
|
||||
user.drop_from_inventory(src)
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
new/obj/effect/decal/cleanable/egg_smudge(src.loc)
|
||||
src.reagents.reaction(hit_atom, TOUCH)
|
||||
src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.")
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype( W, /obj/item/toy/crayon ))
|
||||
var/obj/item/toy/crayon/C = W
|
||||
var/clr = C.colourName
|
||||
|
||||
if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow")))
|
||||
usr << "\blue The egg refuses to take on this color!"
|
||||
return
|
||||
|
||||
usr << "\blue You color \the [src] [clr]"
|
||||
icon_state = "egg-[clr]"
|
||||
item_color = clr
|
||||
else
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
|
||||
throw_impact(atom/hit_atom)
|
||||
..()
|
||||
new/obj/effect/decal/cleanable/egg_smudge(src.loc)
|
||||
src.reagents.reaction(hit_atom, TOUCH)
|
||||
src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.")
|
||||
del(src)
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype( W, /obj/item/toy/crayon ))
|
||||
var/obj/item/toy/crayon/C = W
|
||||
var/clr = C.colourName
|
||||
|
||||
if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow")))
|
||||
usr << "\blue The egg refuses to take on this color!"
|
||||
return
|
||||
|
||||
usr << "\blue You color \the [src] [clr]"
|
||||
icon_state = "egg-[clr]"
|
||||
item_color = clr
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/blue
|
||||
icon_state = "egg-blue"
|
||||
@@ -531,7 +541,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("sodiumchloride", 1)
|
||||
reagents.add_reagent("blackpepper", 1)
|
||||
bitesize = 1
|
||||
@@ -544,18 +554,21 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour
|
||||
name = "flour"
|
||||
desc = "A small bag filled with some flour."
|
||||
name = "flour sack"
|
||||
desc = "A big bag of flour. Good for baking!"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "flour"
|
||||
item_state = "flour"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("flour", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/organ
|
||||
|
||||
name = "organ"
|
||||
desc = "It's good for you."
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
@@ -564,7 +577,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", rand(3,5))
|
||||
reagents.add_reagent("protein", rand(3,5))
|
||||
reagents.add_reagent("toxin", rand(1,3))
|
||||
src.bitesize = 3
|
||||
|
||||
@@ -610,7 +623,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
src.bitesize = 6
|
||||
|
||||
@@ -622,7 +635,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("protein", 4)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
bitesize = 3
|
||||
|
||||
@@ -657,7 +670,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 12)
|
||||
reagents.add_reagent("protein", 12)
|
||||
reagents.add_reagent("hyperzine", 5)
|
||||
src.bitesize = 3
|
||||
|
||||
@@ -669,7 +682,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("protein", 6)
|
||||
reagents.add_reagent("pacid",6)
|
||||
src.bitesize = 6
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatball
|
||||
@@ -680,7 +694,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("protein", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sausage
|
||||
@@ -691,9 +705,26 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 6)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket
|
||||
name = "\improper Sin-pocket"
|
||||
desc = "The food of choice for the veteran. Do <B>NOT</B> overconsume."
|
||||
filling_color = "#6D6D00"
|
||||
heated_reagents = list("doctorsdelight" = 5, "hyperzine" = 0.75, "synaptizine" = 0.25)
|
||||
var/has_been_heated = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket/attack_self(mob/user)
|
||||
if(has_been_heated)
|
||||
user << "<span class='notice'>The heating chemicals have already been spent.</span>"
|
||||
return
|
||||
has_been_heated = 1
|
||||
user.visible_message("<span class='notice'>[user] crushes \the [src] package.</span>", "You crush \the [src] package and feel a comfortable heat build up.")
|
||||
spawn(200)
|
||||
user << "You think \the [src] is ready to eat about now."
|
||||
heat()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donkpocket
|
||||
name = "Donk-pocket"
|
||||
desc = "The food of choice for the seasoned traitor."
|
||||
@@ -702,15 +733,26 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 2)
|
||||
|
||||
var/warm = 0
|
||||
proc/cooltime() //Not working, derp?
|
||||
var/list/heated_reagents = list("tricordrazine" = 5)
|
||||
proc/heat()
|
||||
warm = 1
|
||||
for(var/reagent in heated_reagents)
|
||||
reagents.add_reagent(reagent, heated_reagents[reagent])
|
||||
bitesize = 6
|
||||
name = "Warm " + name
|
||||
cooltime()
|
||||
|
||||
proc/cooltime()
|
||||
if (src.warm)
|
||||
spawn( 4200 )
|
||||
spawn(4200)
|
||||
src.warm = 0
|
||||
src.reagents.del_reagent("tricordrazine")
|
||||
src.name = "donk-pocket"
|
||||
for(var/reagent in heated_reagents)
|
||||
src.reagents.del_reagent(reagent)
|
||||
src.name = initial(name)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/brainburger
|
||||
@@ -721,7 +763,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 6)
|
||||
reagents.add_reagent("alkysine", 6)
|
||||
bitesize = 2
|
||||
|
||||
@@ -748,7 +790,7 @@
|
||||
icon_state = "hburger"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 6)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheeseburger
|
||||
@@ -757,6 +799,7 @@
|
||||
icon_state = "cheeseburger"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("protein", 2)
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger
|
||||
@@ -767,7 +810,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishburger
|
||||
@@ -778,7 +822,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 6)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
bitesize = 3
|
||||
|
||||
@@ -826,7 +870,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("protein", 8)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/clownburger
|
||||
@@ -837,11 +881,6 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
/*
|
||||
var/datum/disease/F = new /datum/disease/pierrot_throat(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 4, data)
|
||||
*/
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
bitesize = 2
|
||||
|
||||
@@ -866,7 +905,7 @@
|
||||
//var/herp = 0
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("protein", 8)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/muffin
|
||||
@@ -943,7 +982,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("protein", 10)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soylenviridians
|
||||
@@ -968,7 +1007,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("protein", 10)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofupie
|
||||
@@ -1023,7 +1062,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("protein", 10)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/wingfangchu
|
||||
@@ -1035,7 +1074,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 6)
|
||||
bitesize = 2
|
||||
|
||||
|
||||
@@ -1048,7 +1087,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("protein", 8)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeykabob
|
||||
@@ -1060,7 +1099,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("protein", 8)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofukabob
|
||||
@@ -1077,14 +1116,15 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cubancarp
|
||||
name = "Cuban Carp"
|
||||
desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!"
|
||||
desc = "A sandwich that burns your tongue and then leaves it numb!"
|
||||
icon_state = "cubancarp"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#E9ADFF"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
reagents.add_reagent("capsaicin", 3)
|
||||
bitesize = 3
|
||||
@@ -1118,7 +1158,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("protein", 4)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/no_raisin
|
||||
@@ -1176,7 +1216,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("protein", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fries
|
||||
@@ -1223,7 +1264,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 2)
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fortunecookie
|
||||
@@ -1258,7 +1300,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("protein", 4)
|
||||
reagents.add_reagent("sodiumchloride", 1)
|
||||
reagents.add_reagent("blackpepper", 1)
|
||||
bitesize = 3
|
||||
@@ -1312,7 +1354,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("protein", 8)
|
||||
reagents.add_reagent("water", 5)
|
||||
bitesize = 5
|
||||
|
||||
@@ -1330,13 +1372,13 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bloodsoup
|
||||
name = "Tomato soup"
|
||||
desc = "Smells like copper"
|
||||
desc = "Smells like copper."
|
||||
icon_state = "tomatosoup"
|
||||
filling_color = "#FF0000"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 2)
|
||||
reagents.add_reagent("blood", 10)
|
||||
reagents.add_reagent("water", 5)
|
||||
bitesize = 5
|
||||
@@ -1452,7 +1494,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("capsaicin", 3)
|
||||
reagents.add_reagent("tomatojuice", 2)
|
||||
bitesize = 5
|
||||
@@ -1467,7 +1510,8 @@
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("frostoil", 3)
|
||||
reagents.add_reagent("tomatojuice", 2)
|
||||
bitesize = 5
|
||||
@@ -1497,11 +1541,11 @@
|
||||
filling_color = "#ADAC7F"
|
||||
|
||||
var/wrapped = 0
|
||||
var/monkey_type = /mob/living/carbon/monkey
|
||||
var/monkey_type = "Monkey"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment",10)
|
||||
reagents.add_reagent("protein", 10)
|
||||
|
||||
afterattack(obj/O as obj, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
@@ -1515,6 +1559,7 @@
|
||||
if(wrapped)
|
||||
Unwrap(user)
|
||||
|
||||
/*
|
||||
On_Consume(var/mob/M)
|
||||
M << "<span class = 'warning'>Something inside of you suddently expands!</span>"
|
||||
|
||||
@@ -1540,7 +1585,7 @@
|
||||
else //someone is having a bad day
|
||||
E.createwound(CUT, 30)
|
||||
E.embed(surprise)
|
||||
else if (ismonkey(M))
|
||||
else if (issmall(M))
|
||||
M.visible_message("<span class='danger'>[M] suddenly tears in half!</span>")
|
||||
var/mob/living/carbon/monkey/ook = new monkey_type(M.loc)
|
||||
ook.name = "malformed [ook.name]"
|
||||
@@ -1548,11 +1593,13 @@
|
||||
ook.add_blood(M)
|
||||
M.gib()
|
||||
..()
|
||||
*/
|
||||
|
||||
proc/Expand()
|
||||
for(var/mob/M in viewers(src,7))
|
||||
M << "\red \The [src] expands!"
|
||||
new monkey_type(src)
|
||||
var/mob/living/carbon/human/H = new (src)
|
||||
H.set_species(monkey_type)
|
||||
del(src)
|
||||
|
||||
proc/Unwrap(mob/user as mob)
|
||||
@@ -1567,29 +1614,29 @@
|
||||
icon_state = "monkeycubewrap"
|
||||
wrapped = 1
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube
|
||||
name = "farwa cube"
|
||||
monkey_type = /mob/living/carbon/monkey/tajara
|
||||
monkey_type = "Farwa"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube
|
||||
name = "farwa cube"
|
||||
monkey_type =/mob/living/carbon/monkey/tajara
|
||||
|
||||
monkey_type = "Farwa"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube
|
||||
name = "stok cube"
|
||||
monkey_type = /mob/living/carbon/monkey/unathi
|
||||
monkey_type = "Stok"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube
|
||||
name = "stok cube"
|
||||
monkey_type =/mob/living/carbon/monkey/unathi
|
||||
|
||||
monkey_type = "Stok"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube
|
||||
name = "neaera cube"
|
||||
monkey_type = /mob/living/carbon/monkey/skrell
|
||||
monkey_type = "Neara"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube
|
||||
name = "neaera cube"
|
||||
monkey_type =/mob/living/carbon/monkey/skrell
|
||||
monkey_type = "Neara"
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spellburger
|
||||
@@ -1611,7 +1658,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 14)
|
||||
reagents.add_reagent("protein", 10)
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/enchiladas
|
||||
@@ -1623,7 +1671,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment",8)
|
||||
reagents.add_reagent("protein", 6)
|
||||
reagents.add_reagent("nutriment",2)
|
||||
reagents.add_reagent("capsaicin", 6)
|
||||
bitesize = 4
|
||||
|
||||
@@ -1636,7 +1685,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("protein", 10)
|
||||
reagents.add_reagent("banana", 5)
|
||||
reagents.add_reagent("blackpepper", 1)
|
||||
reagents.add_reagent("sodiumchloride", 1)
|
||||
@@ -1663,7 +1712,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
bitesize = 3
|
||||
|
||||
@@ -1676,7 +1726,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich
|
||||
@@ -1688,7 +1739,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("carbon", 2)
|
||||
bitesize = 2
|
||||
|
||||
@@ -1701,7 +1753,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 7)
|
||||
reagents.add_reagent("protein", 4)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tomatosoup
|
||||
@@ -1738,7 +1791,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("protein", 4)
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("tomatojuice", 5)
|
||||
reagents.add_reagent("imidazoline", 5)
|
||||
reagents.add_reagent("water", 5)
|
||||
@@ -1834,7 +1888,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ricepudding
|
||||
name = "Rice Pudding"
|
||||
desc = "Where's the Jam!"
|
||||
desc = "Where's the jam?"
|
||||
icon_state = "rpudding"
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
filling_color = "#FFFBDB"
|
||||
@@ -1866,7 +1920,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("protein", 4)
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spesslaw
|
||||
@@ -1877,7 +1932,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("protein", 4)
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/poppypretzel
|
||||
@@ -1912,7 +1968,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 50)
|
||||
reagents.add_reagent("protein", 25)
|
||||
reagents.add_reagent("nutriment", 25)
|
||||
bitesize = 10
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candiedapple
|
||||
@@ -2041,7 +2098,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("protein", 5)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/beetsoup
|
||||
@@ -2053,19 +2110,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
switch(rand(1,6))
|
||||
if(1)
|
||||
name = "borsch"
|
||||
if(2)
|
||||
name = "bortsch"
|
||||
if(3)
|
||||
name = "borstch"
|
||||
if(4)
|
||||
name = "borsh"
|
||||
if(5)
|
||||
name = "borshch"
|
||||
if(6)
|
||||
name = "borscht"
|
||||
name = pick(list("borsch","bortsch","borstch","borsh","borshch","borscht"))
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
bitesize = 2
|
||||
|
||||
@@ -2090,7 +2135,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("protein", 2)
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/appletart
|
||||
@@ -2123,7 +2169,8 @@
|
||||
filling_color = "#FF7575"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("protein", 20)
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
|
||||
@@ -2143,7 +2190,8 @@
|
||||
filling_color = "#8AFF75"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("protein", 20)
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
|
||||
@@ -2226,7 +2274,8 @@
|
||||
filling_color = "#E6AEDB"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 25)
|
||||
reagents.add_reagent("protein", 25)
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("alkysine", 10)
|
||||
bitesize = 2
|
||||
|
||||
@@ -2247,7 +2296,8 @@
|
||||
filling_color = "#FAF7AF"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 25)
|
||||
reagents.add_reagent("protein", 15)
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
|
||||
@@ -2362,7 +2412,7 @@
|
||||
filling_color = "#FFF700"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("protein", 20)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge
|
||||
@@ -2387,7 +2437,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice
|
||||
name = "Birthday Cake slice"
|
||||
desc = "A slice of your birthday"
|
||||
desc = "A slice of your birthday."
|
||||
icon_state = "birthdaycakeslice"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FFD6D6"
|
||||
@@ -2424,7 +2474,8 @@
|
||||
filling_color = "#FFF896"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("protein", 15)
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice
|
||||
@@ -2509,7 +2560,8 @@
|
||||
slices_num = 6
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 40)
|
||||
reagents.add_reagent("nutriment", 35)
|
||||
reagents.add_reagent("protein", 5)
|
||||
reagents.add_reagent("tomatojuice", 6)
|
||||
bitesize = 2
|
||||
|
||||
@@ -2528,7 +2580,7 @@
|
||||
slices_num = 6
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 50)
|
||||
reagents.add_reagent("protein", 50)
|
||||
reagents.add_reagent("tomatojuice", 6)
|
||||
bitesize = 2
|
||||
|
||||
@@ -2548,6 +2600,7 @@
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 35)
|
||||
reagents.add_reagent("protein", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice
|
||||
@@ -2566,6 +2619,7 @@
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("protein", 5)
|
||||
reagents.add_reagent("tomatojuice", 6)
|
||||
reagents.add_reagent("imidazoline", 12)
|
||||
bitesize = 2
|
||||
@@ -2725,7 +2779,7 @@
|
||||
if( src.open )
|
||||
return
|
||||
|
||||
var/t = input("Enter what you want to add to the tag:", "Write", null, null) as text
|
||||
var/t = sanitize(input("Enter what you want to add to the tag:", "Write", null, null) as text, 30)
|
||||
|
||||
var/obj/item/pizzabox/boxtotagto = src
|
||||
if( boxes.len > 0 )
|
||||
@@ -2772,23 +2826,6 @@
|
||||
///////////////////////////////////////////
|
||||
// new old food stuff from bs12
|
||||
///////////////////////////////////////////
|
||||
|
||||
// Flour + egg = dough
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/egg))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/dough(src)
|
||||
user << "You make some dough."
|
||||
del(W)
|
||||
del(src)
|
||||
|
||||
// Egg + flour = dough
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/flour))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/dough(src)
|
||||
user << "You make some dough."
|
||||
del(W)
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
name = "dough"
|
||||
desc = "A piece of dough."
|
||||
@@ -2797,6 +2834,7 @@
|
||||
bitesize = 2
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("protein", 1)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
|
||||
// Dough + rolling pin = flat dough
|
||||
@@ -2816,6 +2854,7 @@
|
||||
slices_num = 3
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("protein", 1)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/doughslice
|
||||
@@ -2823,6 +2862,8 @@
|
||||
desc = "A building block of an impressive dish."
|
||||
icon = 'icons/obj/food_ingredients.dmi'
|
||||
icon_state = "doughslice"
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/spagetti
|
||||
slices_num = 1
|
||||
bitesize = 2
|
||||
New()
|
||||
..()
|
||||
@@ -2889,7 +2930,8 @@
|
||||
bitesize = 3
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 7)
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rawcutlet
|
||||
name = "raw cutlet"
|
||||
@@ -2899,7 +2941,7 @@
|
||||
bitesize = 1
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("protein", 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cutlet
|
||||
name = "cutlet"
|
||||
@@ -2909,7 +2951,7 @@
|
||||
bitesize = 2
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rawmeatball
|
||||
name = "raw meatball"
|
||||
@@ -2919,7 +2961,7 @@
|
||||
bitesize = 2
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("protein", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hotdog
|
||||
name = "hotdog"
|
||||
@@ -2928,7 +2970,7 @@
|
||||
bitesize = 2
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("protein", 6)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flatbread
|
||||
name = "flatbread"
|
||||
@@ -2959,3 +3001,39 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood
|
||||
name = "\improper LiquidFood Ration"
|
||||
desc = "A prepackaged grey slurry of all the essential nutrients for a spacefarer on the go. Should this be crunchy?"
|
||||
icon_state = "liquidfood"
|
||||
trash = /obj/item/trash/liquidfood
|
||||
filling_color = "#A8A8A8"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("iron", 3)
|
||||
bitesize = 4
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread
|
||||
name = "bread tube"
|
||||
desc = "Bread in a tube. Chewy...and surprisingly tasty."
|
||||
icon_state = "tastybread"
|
||||
trash = /obj/item/trash/tastybread
|
||||
filling_color = "#A66829"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks
|
||||
name = "\improper SkrellSnax"
|
||||
desc = "Cured fungus shipped all the way from Jargon 4, almost like jerky! Almost."
|
||||
icon_state = "skrellsnacks"
|
||||
filling_color = "#A66829"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
bitesize = 3
|
||||
|
||||
@@ -1,632 +0,0 @@
|
||||
|
||||
|
||||
// ***********************************************************
|
||||
// Foods that are produced from hydroponics ~~~~~~~~~~
|
||||
// Data from the seeds carry over to these grown foods
|
||||
// ***********************************************************
|
||||
|
||||
//Grown foods
|
||||
//Subclass so we can pass on values
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/
|
||||
var/plantname
|
||||
var/potency = -1
|
||||
icon = 'icons/obj/harvest.dmi'
|
||||
New(newloc,newpotency)
|
||||
if (!isnull(newpotency))
|
||||
potency = newpotency
|
||||
..()
|
||||
src.pixel_x = rand(-5.0, 5)
|
||||
src.pixel_y = rand(-5.0, 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/New()
|
||||
..()
|
||||
|
||||
//Handle some post-spawn var stuff.
|
||||
spawn(1)
|
||||
// Fill the object up with the appropriate reagents.
|
||||
if(!isnull(plantname))
|
||||
var/datum/seed/S = seed_types[plantname]
|
||||
if(!S || !S.chems)
|
||||
return
|
||||
|
||||
potency = S.potency
|
||||
|
||||
for(var/rid in S.chems)
|
||||
var/list/reagent_data = S.chems[rid]
|
||||
var/rtotal = reagent_data[1]
|
||||
if(reagent_data.len > 1 && potency > 0)
|
||||
rtotal += round(potency/reagent_data[2])
|
||||
reagents.add_reagent(rid,max(1,rtotal))
|
||||
|
||||
if(reagents.total_volume > 0)
|
||||
bitesize = 1+round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/corn
|
||||
name = "ear of corn"
|
||||
desc = "Needs some butter!"
|
||||
plantname = "corn"
|
||||
icon_state = "corn"
|
||||
potency = 40
|
||||
filling_color = "#FFEE00"
|
||||
trash = /obj/item/weapon/corncob
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries
|
||||
name = "cherries"
|
||||
desc = "Great for toppings!"
|
||||
icon_state = "cherry"
|
||||
filling_color = "#FF0000"
|
||||
gender = PLURAL
|
||||
plantname = "cherry"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/poppy
|
||||
name = "poppy"
|
||||
desc = "Long-used as a symbol of rest, peace, and death."
|
||||
icon_state = "poppy"
|
||||
potency = 30
|
||||
filling_color = "#CC6464"
|
||||
plantname = "poppies"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/harebell
|
||||
name = "harebell"
|
||||
desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten’d not thy breath.\""
|
||||
icon_state = "harebell"
|
||||
potency = 1
|
||||
filling_color = "#D4B2C9"
|
||||
plantname = "harebells"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/potato
|
||||
name = "potato"
|
||||
desc = "Boil 'em! Mash 'em! Stick 'em in a stew!"
|
||||
icon_state = "potato"
|
||||
potency = 25
|
||||
filling_color = "#E6E8DA"
|
||||
plantname = "potato"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if(istype(W, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/C = W
|
||||
if(C.use(5))
|
||||
user << "<span class='notice'>You add some cable to the potato and slide it inside the battery encasing.</span>"
|
||||
var/obj/item/weapon/cell/potato/pocell = new /obj/item/weapon/cell/potato(user.loc)
|
||||
pocell.maxcharge = src.potency * 10
|
||||
pocell.charge = pocell.maxcharge
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes
|
||||
name = "bunch of grapes"
|
||||
desc = "Nutritious!"
|
||||
icon_state = "grapes"
|
||||
filling_color = "#A332AD"
|
||||
plantname = "grapes"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes
|
||||
name = "bunch of green grapes"
|
||||
desc = "Nutritious!"
|
||||
icon_state = "greengrapes"
|
||||
potency = 25
|
||||
filling_color = "#A6FFA3"
|
||||
plantname = "greengrapes"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/peanut
|
||||
name = "peanut"
|
||||
desc = "Nuts!"
|
||||
icon_state = "peanut"
|
||||
filling_color = "857e27"
|
||||
potency = 25
|
||||
plantname = "peanut"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage
|
||||
name = "cabbage"
|
||||
desc = "Ewwwwwwwwww. Cabbage."
|
||||
icon_state = "cabbage"
|
||||
potency = 25
|
||||
filling_color = "#A2B5A1"
|
||||
plantname = "cabbage"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries
|
||||
name = "bunch of berries"
|
||||
desc = "Nutritious!"
|
||||
icon_state = "berrypile"
|
||||
filling_color = "#C2C9FF"
|
||||
plantname = "berries"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/plastellium
|
||||
name = "clump of plastellium"
|
||||
desc = "Hmm, needs some processing"
|
||||
icon_state = "plastellium"
|
||||
filling_color = "#C4C4C4"
|
||||
plantname = "plastic"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/shand
|
||||
name = "S'rendarr's Hand leaf"
|
||||
desc = "A leaf sample from a lowland thicket shrub. Smells strongly like wax."
|
||||
icon_state = "shand"
|
||||
filling_color = "#70C470"
|
||||
plantname = "shand"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mtear
|
||||
name = "sprig of Messa's Tear"
|
||||
desc = "A mountain climate herb with a soft, cold blue flower, known to contain an abundance of healing chemicals."
|
||||
icon_state = "mtear"
|
||||
filling_color = "#70C470"
|
||||
plantname = "mtear"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mtear/attack_self(mob/user as mob)
|
||||
if(istype(user.loc,/turf/space))
|
||||
return
|
||||
var/obj/item/stack/medical/ointment/tajaran/poultice = new /obj/item/stack/medical/ointment/tajaran(user.loc)
|
||||
|
||||
poultice.heal_burn = potency
|
||||
del(src)
|
||||
|
||||
user << "<span class='notice'>You mash the petals into a poultice.</span>"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/shand/attack_self(mob/user as mob)
|
||||
if(istype(user.loc,/turf/space))
|
||||
return
|
||||
var/obj/item/stack/medical/bruise_pack/tajaran/poultice = new /obj/item/stack/medical/bruise_pack/tajaran(user.loc)
|
||||
|
||||
poultice.heal_brute = potency
|
||||
del(src)
|
||||
|
||||
user << "<span class='notice'>You mash the leaves into a poultice.</span>"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries
|
||||
name = "bunch of glow-berries"
|
||||
desc = "Nutritious!"
|
||||
var/light_on = 1
|
||||
var/brightness_on = 2 //luminosity when on
|
||||
filling_color = "#D3FF9E"
|
||||
icon_state = "glowberrypile"
|
||||
plantname = "glowberries"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries/Del()
|
||||
if(istype(loc,/mob))
|
||||
loc.SetLuminosity(round(loc.luminosity - potency/5,1))
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries/pickup(mob/user)
|
||||
src.SetLuminosity(0)
|
||||
user.SetLuminosity(round(user.luminosity + (potency/5),1))
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries/dropped(mob/user)
|
||||
user.SetLuminosity(round(user.luminosity - (potency/5),1))
|
||||
src.SetLuminosity(round(potency/5,1))
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod
|
||||
name = "cocoa pod"
|
||||
desc = "Can be ground into cocoa powder."
|
||||
icon_state = "cocoapod"
|
||||
potency = 50
|
||||
filling_color = "#9C8E54"
|
||||
plantname = "cocoa"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane
|
||||
name = "sugarcane"
|
||||
desc = "Sickly sweet."
|
||||
icon_state = "sugarcane"
|
||||
potency = 50
|
||||
filling_color = "#C0C9AD"
|
||||
plantname = "sugarcane"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries
|
||||
name = "bunch of poison-berries"
|
||||
desc = "Taste so good, you could die!"
|
||||
icon_state = "poisonberrypile"
|
||||
gender = PLURAL
|
||||
potency = 15
|
||||
filling_color = "#B422C7"
|
||||
plantname = "poisonberries"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/deathberries
|
||||
name = "bunch of death-berries"
|
||||
desc = "Taste so good, you could die!"
|
||||
icon_state = "deathberrypile"
|
||||
gender = PLURAL
|
||||
potency = 50
|
||||
filling_color = "#4E0957"
|
||||
plantname = "deathberries"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris
|
||||
name = "ambrosia vulgaris branch"
|
||||
desc = "This is a plant containing various healing chemicals."
|
||||
icon_state = "ambrosiavulgaris"
|
||||
potency = 10
|
||||
filling_color = "#125709"
|
||||
plantname = "ambrosia"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus
|
||||
name = "ambrosia deus branch"
|
||||
desc = "Eating this makes you feel immortal!"
|
||||
icon_state = "ambrosiadeus"
|
||||
potency = 10
|
||||
filling_color = "#229E11"
|
||||
plantname = "ambrosiadeus"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/apple
|
||||
name = "apple"
|
||||
desc = "It's a little piece of Eden."
|
||||
icon_state = "apple"
|
||||
potency = 15
|
||||
filling_color = "#DFE88B"
|
||||
plantname = "apple"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned
|
||||
name = "apple"
|
||||
desc = "It's a little piece of Eden."
|
||||
icon_state = "apple"
|
||||
potency = 15
|
||||
filling_color = "#B3BD5E"
|
||||
plantname = "poisonapple"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/goldapple
|
||||
name = "golden apple"
|
||||
desc = "Emblazoned upon the apple is the word 'Kallisti'."
|
||||
icon_state = "goldapple"
|
||||
potency = 15
|
||||
filling_color = "#F5CB42"
|
||||
plantname = "goldapple"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon
|
||||
name = "watermelon"
|
||||
desc = "It's full of watery goodness."
|
||||
icon_state = "watermelon"
|
||||
potency = 10
|
||||
filling_color = "#FA2863"
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/watermelonslice
|
||||
slices_num = 5
|
||||
plantname = "watermelon"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin
|
||||
name = "pumpkin"
|
||||
desc = "It's large and scary."
|
||||
icon_state = "pumpkin"
|
||||
potency = 10
|
||||
filling_color = "#FAB728"
|
||||
plantname = "pumpkin"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/kitchenknife) || istype(W, /obj/item/weapon/melee/energy))
|
||||
user.show_message("<span class='notice'>You carve a face into [src]!</span>", 1)
|
||||
new /obj/item/clothing/head/pumpkinhead (user.loc)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/lime
|
||||
name = "lime"
|
||||
desc = "It's so sour, your face will twist."
|
||||
icon_state = "lime"
|
||||
potency = 20
|
||||
filling_color = "#28FA59"
|
||||
plantname = "lime"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/lemon
|
||||
name = "lemon"
|
||||
desc = "When life gives you lemons, be grateful they aren't limes."
|
||||
icon_state = "lemon"
|
||||
potency = 20
|
||||
filling_color = "#FAF328"
|
||||
plantname = "lemon"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/orange
|
||||
name = "orange"
|
||||
desc = "It's a tangy fruit."
|
||||
icon_state = "orange"
|
||||
potency = 20
|
||||
filling_color = "#FAAD28"
|
||||
plantname = "orange"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet
|
||||
name = "white-beet"
|
||||
desc = "You can't beat white-beet."
|
||||
icon_state = "whitebeet"
|
||||
potency = 15
|
||||
filling_color = "#FFFCCC"
|
||||
plantname = "whitebeet"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana
|
||||
name = "banana"
|
||||
desc = "It's an excellent prop for a comedy."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "banana"
|
||||
item_state = "banana"
|
||||
filling_color = "#FCF695"
|
||||
trash = /obj/item/weapon/bananapeel
|
||||
plantname = "banana"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/chili
|
||||
name = "chili"
|
||||
desc = "It's spicy! Wait... IT'S BURNING ME!!"
|
||||
icon_state = "chilipepper"
|
||||
filling_color = "#FF0000"
|
||||
plantname = "chili"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant
|
||||
name = "eggplant"
|
||||
desc = "Maybe there's a chicken inside?"
|
||||
icon_state = "eggplant"
|
||||
filling_color = "#550F5C"
|
||||
plantname = "eggplant"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
|
||||
name = "soybeans"
|
||||
desc = "It's pretty bland, but oh the possibilities..."
|
||||
gender = PLURAL
|
||||
filling_color = "#E6E8B7"
|
||||
icon_state = "soybeans"
|
||||
plantname = "soybean"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato
|
||||
name = "tomato"
|
||||
desc = "I say to-mah-to, you say tom-mae-to."
|
||||
icon_state = "tomato"
|
||||
filling_color = "#FF0000"
|
||||
potency = 10
|
||||
plantname = "tomato"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
new/obj/effect/decal/cleanable/tomato_smudge(src.loc)
|
||||
src.visible_message("<span class='notice'>The [src.name] has been squashed.</span>","<span class='moderate'>You hear a smack.</span>")
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/killertomato
|
||||
name = "killer-tomato"
|
||||
desc = "I say to-mah-to, you say tom-mae-to... OH GOD IT'S EATING MY LEGS!!"
|
||||
icon_state = "killertomato"
|
||||
potency = 10
|
||||
filling_color = "#FF0000"
|
||||
potency = 30
|
||||
plantname = "killertomato"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/killertomato/attack_self(mob/user as mob)
|
||||
if(istype(user.loc,/turf/space))
|
||||
return
|
||||
new /mob/living/simple_animal/tomato(user.loc)
|
||||
del(src)
|
||||
|
||||
user << "<span class='notice'>You plant the killer-tomato.</span>"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato
|
||||
name = "blood-tomato"
|
||||
desc = "So bloody...so...very...bloody....AHHHH!!!!"
|
||||
icon_state = "bloodtomato"
|
||||
potency = 10
|
||||
filling_color = "#FF0000"
|
||||
plantname = "bloodtomato"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
new/obj/effect/decal/cleanable/blood/splatter(src.loc)
|
||||
src.visible_message("<span class='notice'>The [src.name] has been squashed.</span>","<span class='moderate'>You hear a smack.</span>")
|
||||
src.reagents.reaction(get_turf(hit_atom))
|
||||
for(var/atom/A in get_turf(hit_atom))
|
||||
src.reagents.reaction(A)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato
|
||||
name = "blue-tomato"
|
||||
desc = "I say blue-mah-to, you say blue-mae-to."
|
||||
icon_state = "bluetomato"
|
||||
potency = 10
|
||||
filling_color = "#586CFC"
|
||||
plantname = "bluetomato"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
new/obj/effect/decal/cleanable/blood/oil(src.loc)
|
||||
src.visible_message("<span class='notice'>The [src.name] has been squashed.</span>","<span class='moderate'>You hear a smack.</span>")
|
||||
src.reagents.reaction(get_turf(hit_atom))
|
||||
for(var/atom/A in get_turf(hit_atom))
|
||||
src.reagents.reaction(A)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato/Crossed(AM as mob|obj)
|
||||
if (istype(AM, /mob/living))
|
||||
var/mob/living/M = AM
|
||||
M.slip("the [src]!")
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat
|
||||
name = "wheat"
|
||||
desc = "Sigh... wheat... a-grain?"
|
||||
gender = PLURAL
|
||||
icon_state = "wheat"
|
||||
filling_color = "#F7E186"
|
||||
plantname = "wheat"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk
|
||||
name = "rice stalk"
|
||||
desc = "Rice to see you."
|
||||
gender = PLURAL
|
||||
icon_state = "rice"
|
||||
filling_color = "#FFF8DB"
|
||||
plantname = "rice"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod
|
||||
name = "kudzu pod"
|
||||
desc = "<I>Pueraria Virallis</I>: An invasive species with vines that rapidly creep and wrap around whatever they contact."
|
||||
icon_state = "kudzupod"
|
||||
filling_color = "#59691B"
|
||||
plantname = "kudzu"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper
|
||||
name = "ice-pepper"
|
||||
desc = "It's a mutant strain of chili"
|
||||
icon_state = "icepepper"
|
||||
potency = 20
|
||||
filling_color = "#66CEED"
|
||||
plantname = "icechili"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot
|
||||
name = "carrot"
|
||||
desc = "It's good for the eyes!"
|
||||
icon_state = "carrot"
|
||||
potency = 10
|
||||
filling_color = "#FFC400"
|
||||
plantname = "carrot"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi
|
||||
name = "reishi"
|
||||
desc = "<I>Ganoderma lucidum</I>: A special fungus believed to help relieve stress."
|
||||
icon_state = "reishi"
|
||||
potency = 10
|
||||
filling_color = "#FF4800"
|
||||
plantname = "reishi"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita
|
||||
name = "fly amanita"
|
||||
desc = "<I>Amanita Muscaria</I>: Learn poisonous mushrooms by heart. Only pick mushrooms you know."
|
||||
icon_state = "amanita"
|
||||
potency = 10
|
||||
filling_color = "#FF0000"
|
||||
plantname = "amanita"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel
|
||||
name = "destroying angel"
|
||||
desc = "<I>Amanita Virosa</I>: Deadly poisonous basidiomycete fungus filled with alpha amatoxins."
|
||||
icon_state = "angel"
|
||||
potency = 35
|
||||
filling_color = "#FFDEDE"
|
||||
plantname = "destroyingangel"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap
|
||||
name = "liberty-cap"
|
||||
desc = "<I>Psilocybe Semilanceata</I>: Liberate yourself!"
|
||||
icon_state = "libertycap"
|
||||
potency = 15
|
||||
filling_color = "#F714BE"
|
||||
plantname = "libertycap"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet
|
||||
name = "plump-helmet"
|
||||
desc = "<I>Plumus Hellmus</I>: Plump, soft and s-so inviting~"
|
||||
icon_state = "plumphelmet"
|
||||
filling_color = "#F714BE"
|
||||
plantname = "plumphelmet"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom
|
||||
name = "walking mushroom"
|
||||
desc = "<I>Plumus Locomotus</I>: The beginning of the great walk."
|
||||
icon_state = "walkingmushroom"
|
||||
filling_color = "#FFBFEF"
|
||||
potency = 30
|
||||
plantname = "walkingmushroom"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user as mob)
|
||||
if(istype(user.loc,/turf/space))
|
||||
return
|
||||
new /mob/living/simple_animal/mushroom(user.loc)
|
||||
del(src)
|
||||
|
||||
user << "<span class='notice'>You plant the walking mushroom.</span>"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle
|
||||
name = "chanterelle cluster"
|
||||
desc = "<I>Cantharellus Cibarius</I>: These jolly yellow little shrooms sure look tasty!"
|
||||
icon_state = "chanterelle"
|
||||
filling_color = "#FFE991"
|
||||
plantname = "mushrooms"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom
|
||||
name = "glowshroom cluster"
|
||||
desc = "<I>Mycena Bregprox</I>: This species of mushroom glows in the dark. Or does it?"
|
||||
icon_state = "glowshroom"
|
||||
filling_color = "#DAFF91"
|
||||
potency = 30
|
||||
plantname = "glowshroom"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user as mob)
|
||||
if(istype(user.loc,/turf/space))
|
||||
return
|
||||
var/obj/effect/glowshroom/planted = new /obj/effect/glowshroom(user.loc)
|
||||
|
||||
planted.delay = 50
|
||||
planted.endurance = 100
|
||||
planted.potency = potency
|
||||
del(src)
|
||||
|
||||
user << "<span class='notice'>You plant the glowshroom.</span>"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/Del()
|
||||
if(istype(loc,/mob))
|
||||
loc.SetLuminosity(round(loc.luminosity - potency/10,1))
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/pickup(mob/user)
|
||||
SetLuminosity(0)
|
||||
user.SetLuminosity(round(user.luminosity + (potency/10),1))
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/dropped(mob/user)
|
||||
user.SetLuminosity(round(user.luminosity - (potency/10),1))
|
||||
SetLuminosity(round(potency/10,1))
|
||||
|
||||
|
||||
// *************************************
|
||||
// Complex Grown Object Defines -
|
||||
// Putting these at the bottom so they don't clutter the list up. -Cheridan
|
||||
// *************************************
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bluespacetomato
|
||||
name = "blue-space tomato"
|
||||
desc = "So lubricated, you might slip through space-time."
|
||||
icon_state = "bluespacetomato"
|
||||
potency = 20
|
||||
origin_tech = "bluespace=3"
|
||||
filling_color = "#91F8FF"
|
||||
plantname = "bluespacetomato"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bluespacetomato/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
var/mob/M = usr
|
||||
var/outer_teleport_radius = potency/10 //Plant potency determines radius of teleport.
|
||||
var/inner_teleport_radius = potency/15
|
||||
var/list/turfs = new/list()
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
if(inner_teleport_radius < 1) //Wasn't potent enough, it just splats.
|
||||
new/obj/effect/decal/cleanable/blood/oil(src.loc)
|
||||
src.visible_message("<span class='notice'>The [src.name] has been squashed.</span>","<span class='moderate'>You hear a smack.</span>")
|
||||
del(src)
|
||||
return
|
||||
for(var/turf/T in orange(M,outer_teleport_radius))
|
||||
if(T in orange(M,inner_teleport_radius)) continue
|
||||
if(istype(T,/turf/space)) continue
|
||||
if(T.density) continue
|
||||
if(T.x>world.maxx-outer_teleport_radius || T.x<outer_teleport_radius) continue
|
||||
if(T.y>world.maxy-outer_teleport_radius || T.y<outer_teleport_radius) continue
|
||||
turfs += T
|
||||
if(!turfs.len)
|
||||
var/list/turfs_to_pick_from = list()
|
||||
for(var/turf/T in orange(M,outer_teleport_radius))
|
||||
if(!(T in orange(M,inner_teleport_radius)))
|
||||
turfs_to_pick_from += T
|
||||
turfs += pick(/turf in turfs_to_pick_from)
|
||||
var/turf/picked = pick(turfs)
|
||||
if(!isturf(picked)) return
|
||||
switch(rand(1,2))//Decides randomly to teleport the thrower or the throwee.
|
||||
if(1) // Teleports the person who threw the tomato.
|
||||
s.set_up(3, 1, M)
|
||||
s.start()
|
||||
new/obj/effect/decal/cleanable/molten_item(M.loc) //Leaves a pile of goo behind for dramatic effect.
|
||||
M.loc = picked //
|
||||
sleep(1)
|
||||
s.set_up(3, 1, M)
|
||||
s.start() //Two set of sparks, one before the teleport and one after.
|
||||
if(2) //Teleports mob the tomato hit instead.
|
||||
for(var/mob/A in get_turf(hit_atom))//For the mobs in the tile that was hit...
|
||||
s.set_up(3, 1, A)
|
||||
s.start()
|
||||
new/obj/effect/decal/cleanable/molten_item(A.loc) //Leave a pile of goo behind for dramatic effect...
|
||||
A.loc = picked//And teleport them to the chosen location.
|
||||
sleep(1)
|
||||
s.set_up(3, 1, A)
|
||||
s.start()
|
||||
new/obj/effect/decal/cleanable/blood/oil(src.loc)
|
||||
src.visible_message("<span class='notice'>The [src.name] has been squashed, causing a distortion in space-time.</span>","<span class='moderate'>You hear a splat and a crackle.</span>")
|
||||
del(src)
|
||||
return
|
||||
@@ -6,7 +6,7 @@
|
||||
filling_color = "#FF1C1C"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("protein", 9)
|
||||
src.bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
@@ -12,13 +12,14 @@
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,25,30,60)
|
||||
volume = 60
|
||||
w_class = 2
|
||||
flags = OPENCONTAINER
|
||||
|
||||
var/label_text = ""
|
||||
|
||||
var/list/can_be_placed_into = list(
|
||||
/obj/machinery/chem_master/,
|
||||
/obj/machinery/chem_dispenser/,
|
||||
/obj/machinery/chemical_dispenser,
|
||||
/obj/machinery/reagentgrinder,
|
||||
/obj/structure/table,
|
||||
/obj/structure/closet,
|
||||
@@ -137,7 +138,7 @@
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
|
||||
var/tmp_label = sanitize(copytext(input(user, "Enter a label for [src.name]","Label",src.label_text), 1, MAX_NAME_LEN))
|
||||
var/tmp_label = sanitizeSafe(input(user, "Enter a label for [src.name]","Label",src.label_text), MAX_NAME_LEN)
|
||||
if(length(tmp_label) > 10)
|
||||
user << "\red The label can be at most 10 characters long."
|
||||
else
|
||||
@@ -194,7 +195,7 @@
|
||||
if(80 to 90) filling.icon_state = "[icon_state]80"
|
||||
if(91 to INFINITY) filling.icon_state = "[icon_state]100"
|
||||
|
||||
filling.icon += mix_color_from_reagents(reagents.reagent_list)
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
|
||||
if (!is_open_container())
|
||||
@@ -253,12 +254,6 @@
|
||||
reagents.add_reagent("sacid", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/slime
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("slimejelly", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bucket
|
||||
desc = "It's a bucket."
|
||||
name = "bucket"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
item_state = "atoxinbottle"
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,25,30,60)
|
||||
flags = OPENCONTAINER
|
||||
flags = 0
|
||||
volume = 60
|
||||
|
||||
on_reagent_change()
|
||||
@@ -30,7 +30,7 @@
|
||||
New()
|
||||
..()
|
||||
if(!icon_state)
|
||||
icon_state = "bottle-[rand(1.4)]"
|
||||
icon_state = "bottle-[rand(1,4)]"
|
||||
|
||||
update_icon()
|
||||
overlays.Cut()
|
||||
@@ -48,7 +48,7 @@
|
||||
if(80 to 90) filling.icon_state = "[icon_state]-80"
|
||||
if(91 to INFINITY) filling.icon_state = "[icon_state]-100"
|
||||
|
||||
filling.icon += mix_color_from_reagents(reagents.reagent_list)
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
|
||||
if (!is_open_container())
|
||||
@@ -59,186 +59,203 @@
|
||||
name = "inaprovaline bottle"
|
||||
desc = "A small bottle. Contains inaprovaline - used to stabilize patients."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle16"
|
||||
icon_state = "bottle-4"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("inaprovaline", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/toxin
|
||||
name = "toxin bottle"
|
||||
desc = "A small bottle of toxins. Do not drink, it is poisonous."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle12"
|
||||
icon_state = "bottle-3"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("toxin", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/cyanide
|
||||
name = "cyanide bottle"
|
||||
desc = "A small bottle of cyanide. Bitter almonds?"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle12"
|
||||
icon_state = "bottle-3"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("cyanide", 60)
|
||||
reagents.add_reagent("cyanide", 30) //volume changed to match chloral
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/stoxin
|
||||
name = "soporific bottle"
|
||||
desc = "A small bottle of soporific. Just the fumes make you sleepy."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle20"
|
||||
icon_state = "bottle-3"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("stoxin", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate
|
||||
name = "Chloral Hydrate Bottle"
|
||||
desc = "A small bottle of Choral Hydrate. Mickey's Favorite!"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle20"
|
||||
icon_state = "bottle-3"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("chloralhydrate", 30) //Intentionally low since it is so strong. Still enough to knock someone out.
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin
|
||||
name = "dylovene bottle"
|
||||
desc = "A small bottle of dylovene. Counters poisons, and repairs damage. A wonder drug."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
icon_state = "bottle-4"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("anti_toxin", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/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 = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle20"
|
||||
icon_state = "bottle-1"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("mutagen", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ammonia
|
||||
name = "ammonia bottle"
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle20"
|
||||
icon_state = "bottle-1"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("ammonia", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine
|
||||
name = "diethylamine bottle"
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
icon_state = "bottle-4"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("diethylamine", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/flu_virion
|
||||
name = "Flu virion culture bottle"
|
||||
desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/advance/flu(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion
|
||||
name = "Epiglottis virion culture bottle"
|
||||
desc = "A small bottle. Contains Epiglottis virion culture in synthblood medium."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/advance/voice_change(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion
|
||||
name = "Liver enhancement virion culture bottle"
|
||||
desc = "A small bottle. Contains liver enhancement virion culture in synthblood medium."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/advance/heal(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/hullucigen_virion
|
||||
name = "Hullucigen virion culture bottle"
|
||||
desc = "A small bottle. Contains hullucigen virion culture in synthblood medium."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/advance/hullucigen(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat
|
||||
name = "Pierrot's Throat culture bottle"
|
||||
desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/pierrot_throat(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/cold
|
||||
name = "Rhinovirus culture bottle"
|
||||
desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/advance/F = new /datum/disease/advance/cold(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/random
|
||||
name = "Random culture bottle"
|
||||
desc = "A small bottle. Contains a random disease."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/advance/F = new(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/retrovirus
|
||||
name = "Retrovirus culture bottle"
|
||||
desc = "A small bottle. Contains a retrovirus culture in a synthblood medium."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/dna_retrovirus(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/gbs
|
||||
name = "GBS culture bottle"
|
||||
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS+ culture in synthblood medium."//Or simply - General BullShit
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
amount_per_transfer_from_this = 5
|
||||
|
||||
New()
|
||||
@@ -248,23 +265,25 @@
|
||||
var/datum/disease/F = new /datum/disease/gbs
|
||||
var/list/data = list("virus"= F)
|
||||
R.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/fake_gbs
|
||||
name = "GBS culture bottle"
|
||||
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS- culture in synthblood medium."//Or simply - General BullShit
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/fake_gbs(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
/*
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/rhumba_beat
|
||||
name = "Rhumba Beat culture bottle"
|
||||
desc = "A small bottle. Contains The Rhumba Beat culture in synthblood medium."//Or simply - General BullShit
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
amount_per_transfer_from_this = 5
|
||||
|
||||
New()
|
||||
@@ -280,44 +299,48 @@
|
||||
name = "Brainrot culture bottle"
|
||||
desc = "A small bottle. Contains Cryptococcus Cosmosis culture in synthblood medium."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/brainrot(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/magnitis
|
||||
name = "Magnitis culture bottle"
|
||||
desc = "A small bottle. Contains a small dosage of Fukkos Miracos."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/magnitis(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/wizarditis
|
||||
name = "Wizarditis culture bottle"
|
||||
desc = "A small bottle. Contains a sample of Rincewindus Vulgaris."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
var/datum/disease/F = new /datum/disease/wizarditis(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pacid
|
||||
name = "Polytrinic Acid Bottle"
|
||||
desc = "A small bottle. Contains a small amount of Polytrinic Acid"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("pacid", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine
|
||||
name = "Adminordrazine Bottle"
|
||||
@@ -327,21 +350,24 @@
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("adminordrazine", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/capsaicin
|
||||
name = "Capsaicin Bottle"
|
||||
desc = "A small bottle. Contains hot sauce."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("capsaicin", 60)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/frostoil
|
||||
name = "Frost Oil Bottle"
|
||||
desc = "A small bottle. Contains cold sauce."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
icon_state = "bottle-4"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("frostoil", 60)
|
||||
reagents.add_reagent("frostoil", 60)
|
||||
update_icon()
|
||||
|
||||
@@ -11,23 +11,24 @@
|
||||
name = "internal inaprovaline bottle"
|
||||
desc = "A small bottle. Contains inaprovaline - used to stabilize patients."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle16"
|
||||
icon_state = "bottle-4"
|
||||
reagent = "inaprovaline"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("inaprovaline", 60)
|
||||
return
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/antitoxin
|
||||
name = "internal anti-toxin bottle"
|
||||
desc = "A small bottle of Anti-toxins. Counters poisons, and repairs damage, a wonder drug."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
icon_state = "bottle-4"
|
||||
reagent = "anti_toxin"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("anti_toxin", 60)
|
||||
return
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -190,6 +190,38 @@
|
||||
..()
|
||||
reagents.add_reagent("dexalin", 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/dexalin_plus
|
||||
name = "Dexalin Plus pill"
|
||||
desc = "Used to treat extreme oxygen deprivation."
|
||||
icon_state = "pill8"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("dexalinp", 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/dermaline
|
||||
name = "Dermaline pill"
|
||||
desc = "Used to treat burn wounds."
|
||||
icon_state = "pill12"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("dermaline", 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/dylovene
|
||||
name = "Dylovene pill"
|
||||
desc = "A broad-spectrum anti-toxin."
|
||||
icon_state = "pill13"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("anti_toxin", 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/inaprovaline
|
||||
name = "Inaprovaline pill"
|
||||
desc = "Used to stabilize patients."
|
||||
icon_state = "pill20"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("inaprovaline", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/bicaridine
|
||||
name = "Bicaridine pill"
|
||||
desc = "Used to treat physical injuries."
|
||||
@@ -216,3 +248,11 @@
|
||||
reagents.add_reagent("impedrezene", 10)
|
||||
reagents.add_reagent("synaptizine", 5)
|
||||
reagents.add_reagent("hyperzine", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/spaceacillin
|
||||
name = "Spaceacillin pill"
|
||||
desc = "Contains antiviral agents."
|
||||
icon_state = "pill19"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("spaceacillin", 15)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
..()
|
||||
src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob)
|
||||
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
|
||||
if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/closet) \
|
||||
|| istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart))
|
||||
return
|
||||
@@ -46,7 +46,7 @@
|
||||
user << "<span class='notice'>\The [src] is empty!</span>"
|
||||
return
|
||||
|
||||
Spray_at(A)
|
||||
Spray_at(A, user, proximity)
|
||||
|
||||
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6)
|
||||
|
||||
@@ -61,28 +61,39 @@
|
||||
log_game("[key_name(user)] fired Space lube from \a [src].")
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/proc/Spray_at(atom/A as mob|obj)
|
||||
var/obj/effect/decal/chempuff/D = new/obj/effect/decal/chempuff(get_turf(src))
|
||||
D.create_reagents(amount_per_transfer_from_this)
|
||||
reagents.trans_to(D, amount_per_transfer_from_this, 1/spray_size)
|
||||
D.icon += mix_color_from_reagents(D.reagents.reagent_list)
|
||||
/obj/item/weapon/reagent_containers/spray/proc/Spray_at(atom/A as mob|obj, mob/user as mob, proximity)
|
||||
if (A.density && proximity)
|
||||
A.visible_message("[usr] sprays [A] with [src].")
|
||||
var/obj/D = new/obj()
|
||||
D.create_reagents(amount_per_transfer_from_this)
|
||||
reagents.trans_to(D, amount_per_transfer_from_this)
|
||||
D.icon += mix_color_from_reagents(D.reagents.reagent_list)
|
||||
spawn(0)
|
||||
D.reagents.reaction(A)
|
||||
sleep(5)
|
||||
del(D)
|
||||
else
|
||||
var/obj/effect/decal/chempuff/D = new/obj/effect/decal/chempuff(get_turf(src))
|
||||
D.create_reagents(amount_per_transfer_from_this)
|
||||
reagents.trans_to(D, amount_per_transfer_from_this, 1/spray_size)
|
||||
D.icon += mix_color_from_reagents(D.reagents.reagent_list)
|
||||
|
||||
var/turf/A_turf = get_turf(A)//BS12
|
||||
var/turf/A_turf = get_turf(A)//BS12
|
||||
|
||||
spawn(0)
|
||||
for(var/i=0, i<spray_size, i++)
|
||||
step_towards(D,A)
|
||||
D.reagents.reaction(get_turf(D))
|
||||
for(var/atom/T in get_turf(D))
|
||||
D.reagents.reaction(T)
|
||||
spawn(0)
|
||||
for(var/i=0, i<spray_size, i++)
|
||||
step_towards(D,A)
|
||||
D.reagents.reaction(get_turf(D))
|
||||
for(var/atom/T in get_turf(D))
|
||||
D.reagents.reaction(T)
|
||||
|
||||
// When spraying against the wall, also react with the wall, but
|
||||
// not its contents. BS12
|
||||
if(get_dist(D, A_turf) == 1 && A_turf.density)
|
||||
D.reagents.reaction(A_turf)
|
||||
sleep(2)
|
||||
sleep(3)
|
||||
del(D)
|
||||
// When spraying against the wall, also react with the wall, but
|
||||
// not its contents. BS12
|
||||
if(get_dist(D, A_turf) == 1 && A_turf.density)
|
||||
D.reagents.reaction(A_turf)
|
||||
sleep(2)
|
||||
sleep(3)
|
||||
del(D)
|
||||
|
||||
return
|
||||
|
||||
@@ -159,7 +170,7 @@
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower
|
||||
name = "water flower"
|
||||
desc = "A seemingly innocent sunflower...with a twist."
|
||||
icon = 'icons/obj/harvest.dmi'
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "sunflower"
|
||||
item_state = "sunflower"
|
||||
amount_per_transfer_from_this = 1
|
||||
@@ -226,7 +237,7 @@
|
||||
/obj/item/weapon/reagent_containers/spray/plantbgone // -- Skie
|
||||
name = "Plant-B-Gone"
|
||||
desc = "Kills those pesky weeds!"
|
||||
icon = 'icons/obj/hydroponics.dmi'
|
||||
icon = 'icons/obj/hydroponics_machines.dmi'
|
||||
icon_state = "plantbgone"
|
||||
item_state = "plantbgone"
|
||||
volume = 100
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
w_class = 1
|
||||
sharp = 1
|
||||
var/mode = SYRINGE_DRAW
|
||||
var/image/filling //holds a reference to the current filling overlay
|
||||
|
||||
on_reagent_change()
|
||||
update_icon()
|
||||
@@ -57,7 +58,7 @@
|
||||
user << "\red This syringe is broken!"
|
||||
return
|
||||
|
||||
if (user.a_intent == "hurt" && ismob(target))
|
||||
if (user.a_intent == I_HURT && ismob(target))
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
target = user
|
||||
syringestab(target, user)
|
||||
@@ -130,7 +131,7 @@
|
||||
if(istype(target, /obj/item/weapon/implantcase/chem))
|
||||
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/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/smokable/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes))
|
||||
user << "\red You cannot directly fill this object."
|
||||
return
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
@@ -217,15 +218,15 @@
|
||||
item_state = "syringe_[rounded_vol]"
|
||||
|
||||
if(reagents.total_volume)
|
||||
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "syringe10")
|
||||
filling = image('icons/obj/reagentfillings.dmi', src, "syringe10")
|
||||
|
||||
filling.icon_state = "syringe[rounded_vol]"
|
||||
|
||||
filling.icon += mix_color_from_reagents(reagents.reagent_list)
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob)
|
||||
proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob)
|
||||
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
target.attack_log += "\[[time_stamp()]\]<font color='orange'> Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
@@ -268,13 +269,19 @@
|
||||
src.reagents.reaction(target, INGEST)
|
||||
var/syringestab_amount_transferred = rand(0, (reagents.total_volume - 5)) //nerfed by popular demand
|
||||
src.reagents.trans_to(target, syringestab_amount_transferred)
|
||||
src.break_syringe(target, user)
|
||||
|
||||
proc/break_syringe(mob/living/carbon/target, mob/living/carbon/user)
|
||||
src.desc += " It is broken."
|
||||
src.mode = SYRINGE_BROKEN
|
||||
src.add_blood(target)
|
||||
src.add_fingerprint(usr)
|
||||
if(target)
|
||||
src.add_blood(target)
|
||||
if(user)
|
||||
src.add_fingerprint(user)
|
||||
src.update_icon()
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe
|
||||
name = "Lethal Injection Syringe"
|
||||
desc = "A syringe used for lethal injections."
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
|
||||
if(Proj.damage_type == BRUTE || Proj.damage_type == BURN)
|
||||
if(istype(Proj.firer))
|
||||
message_admins("[key_name_admin(Proj.firer)] shot fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>JMP</a>).")
|
||||
log_game("[key_name(Proj.firer)] shot fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]).")
|
||||
@@ -238,3 +238,15 @@
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("virusfood", 1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/acid
|
||||
name = "Sulphuric Acid Dispenser"
|
||||
desc = "A dispenser of acid for industrial processes."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "acidtank"
|
||||
amount_per_transfer_from_this = 10
|
||||
anchored = 1
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("sacid", 1000)
|
||||
|
||||
@@ -1,137 +0,0 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/gun/syringe
|
||||
name = "syringe gun"
|
||||
desc = "A spring loaded rifle designed to fit syringes, designed to incapacitate unruly patients from a distance."
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "syringegun"
|
||||
item_state = "syringegun"
|
||||
w_class = 3.0
|
||||
throw_speed = 2
|
||||
throw_range = 10
|
||||
force = 4.0
|
||||
var/list/syringes = new/list()
|
||||
var/max_syringes = 1
|
||||
matter = list("metal" = 2000)
|
||||
|
||||
/obj/item/weapon/gun/syringe/examine(mob/user)
|
||||
if(..(user, 2))
|
||||
user << "\blue [syringes.len] / [max_syringes] syringes."
|
||||
|
||||
/obj/item/weapon/gun/syringe/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/syringe))
|
||||
var/obj/item/weapon/reagent_containers/syringe/S = I
|
||||
if(S.mode != 2)//SYRINGE_BROKEN in syringes.dm
|
||||
if(syringes.len < max_syringes)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
syringes += I
|
||||
user << "\blue You put the syringe in [src]."
|
||||
user << "\blue [syringes.len] / [max_syringes] syringes."
|
||||
else
|
||||
usr << "\red [src] cannot hold more syringes."
|
||||
else
|
||||
usr << "\red This syringe is broken!"
|
||||
|
||||
|
||||
/obj/item/weapon/gun/syringe/afterattack(obj/target, mob/user , flag)
|
||||
if(!isturf(target.loc) || target == user) return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/syringe/can_fire()
|
||||
return syringes.len
|
||||
|
||||
/obj/item/weapon/gun/syringe/can_hit(var/mob/living/target as mob, var/mob/living/user as mob)
|
||||
return 1 //SHOOT AND LET THE GOD GUIDE IT (probably will hit a wall anyway)
|
||||
|
||||
/obj/item/weapon/gun/syringe/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)
|
||||
if(syringes.len)
|
||||
spawn(0) fire_syringe(target,user)
|
||||
else
|
||||
usr << "\red [src] is empty."
|
||||
|
||||
/obj/item/weapon/gun/syringe/proc/fire_syringe(atom/target, mob/user)
|
||||
if (locate (/obj/structure/table, src.loc))
|
||||
return
|
||||
else
|
||||
var/turf/trg = get_turf(target)
|
||||
var/obj/effect/syringe_gun_dummy/D = new/obj/effect/syringe_gun_dummy(get_turf(src))
|
||||
var/obj/item/weapon/reagent_containers/syringe/S = syringes[1]
|
||||
if((!S) || (!S.reagents)) //ho boy! wot runtimes!
|
||||
return
|
||||
S.reagents.trans_to(D, S.reagents.total_volume)
|
||||
syringes -= S
|
||||
del(S)
|
||||
D.icon_state = "syringeproj"
|
||||
D.name = "syringe"
|
||||
playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1)
|
||||
|
||||
for(var/i=0, i<6, i++)
|
||||
if(!D) break
|
||||
if(D.loc == trg) break
|
||||
step_towards(D,trg)
|
||||
|
||||
if(D)
|
||||
for(var/mob/living/carbon/M in D.loc)
|
||||
if(!istype(M,/mob/living/carbon)) continue
|
||||
if(M == user) continue
|
||||
//Syringe gun attack logging by Yvarov
|
||||
var/R
|
||||
if(D.reagents)
|
||||
for(var/datum/reagent/A in D.reagents.reagent_list)
|
||||
R += A.id + " ("
|
||||
R += num2text(A.volume) + "),"
|
||||
if (istype(M, /mob))
|
||||
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||
user.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||
msg_admin_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
|
||||
else
|
||||
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||
msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a <b>syringegun</b> ([R]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
|
||||
var/mob/living/T
|
||||
if(istype(M,/mob/living))
|
||||
T = M
|
||||
|
||||
M.visible_message("<span class='danger'>[M] is hit by the syringe!</span>")
|
||||
|
||||
if(T && istype(T) && T.can_inject())
|
||||
if(D.reagents)
|
||||
D.reagents.trans_to(M, 15)
|
||||
else
|
||||
M.visible_message("<span class='danger'>The syringe bounces off [M]!</span>")
|
||||
|
||||
del(D)
|
||||
break
|
||||
if(D)
|
||||
for(var/atom/A in D.loc)
|
||||
if(A == user) continue
|
||||
if(A.density) del(D)
|
||||
|
||||
sleep(1)
|
||||
|
||||
if (D) spawn(10) del(D)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/syringe/rapidsyringe
|
||||
name = "rapid syringe gun"
|
||||
desc = "A modification of the syringe gun design, using a rotating cylinder to store up to four syringes."
|
||||
icon_state = "rapidsyringegun"
|
||||
max_syringes = 4
|
||||
|
||||
|
||||
/obj/effect/syringe_gun_dummy
|
||||
name = ""
|
||||
desc = ""
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "null"
|
||||
anchored = 1
|
||||
density = 0
|
||||
|
||||
New()
|
||||
var/datum/reagents/R = new/datum/reagents(15)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
Reference in New Issue
Block a user