mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-25 01:22:13 +00:00
- When a blood sample is taken, it retains some information on what kind of chemicals were the subject's body at the time the sample was taken. - Two new R&D Items: Mass-Spectrometer (EM Spectrum Research 2, Biotech 2) and Advanced Mass-Spectrometer (EM Spectrum Research 4, Biotech 2). Allows for the identification of chemicals in a blood sample. To use the devices, you simply use a container (or syringe) full of blood on the device and then click the device in your hand (like how you use the gas analyzer). At low reliability, they might miss some chemicals in their report or potentially even break. The Advanced version not only lists what chemicals were present in the body, but also much much. - The deconstructive analyzer now gives 1 or 2 points to a device design's reliability (rather then just 1) when analyzing a device. Also fixed some bugs in the deconstructive analyzer. - Not all devices have a 100% reliability now (most current ones did, but not all). - Few tweaks in R&D lab. Derp derp. - Mint tweaked slightly. Miners can now access the mint foyer and the mint materials loading area but not the vault (only the captain can access the vault, by default). - Research sub-paths Robotics and generators removed. Now all techs just use the primary paths. Sub-paths might be re-added later but not these ones. - Power Storage Technology renamed "Power Manipulation Technology". - More stuff can be analyzed in the destructive analyzer. Intellicards can now be produced from the protolathe (Programming 4. Requires 1000 glass and 200 gold) - Updated the R&D readme file. Now it has a list of all the holes in the tech paths (ie. Where we need to add new stuff). It's not intended as a complete list of everything that can be made or researched, just a check list to make sure all the research levels are covered. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1073 316c924e-a436-60f5-8080-3fe189b3f50e
2836 lines
86 KiB
Plaintext
2836 lines
86 KiB
Plaintext
|
|
//BUG!!!: reactions on splashing etc cause errors because stuff gets deleted before it executes.
|
|
// Bandaid fix using spawn - very ugly, need to fix this.
|
|
|
|
///////////////////////////////Grenades
|
|
/obj/item/weapon/chem_grenade
|
|
name = "metal casing"
|
|
icon_state = "chemg1"
|
|
icon = 'chemical.dmi'
|
|
item_state = "flashbang"
|
|
w_class = 2.0
|
|
force = 2.0
|
|
var/stage = 0
|
|
var/state = 0
|
|
var/list/beakers = new/list()
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT | USEDELAY
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(1000)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(istype(W,/obj/item/assembly/time_ignite) && !stage)
|
|
user << "\blue You add [W] to the metal casing."
|
|
playsound(src.loc, 'Screwdriver2.ogg', 25, -3)
|
|
del(W) //Okay so we're not really adding anything here. cheating.
|
|
icon_state = "chemg2"
|
|
name = "unsecured grenade"
|
|
stage = 1
|
|
else if(istype(W,/obj/item/weapon/screwdriver) && stage == 1)
|
|
if(beakers.len)
|
|
user << "\blue You lock the assembly."
|
|
playsound(src.loc, 'Screwdriver.ogg', 25, -3)
|
|
name = "grenade"
|
|
icon_state = "chemg3"
|
|
stage = 2
|
|
else
|
|
user << "\red You need to add at least one beaker before locking the assembly."
|
|
else if ((istype(W,/obj/item/weapon/reagent_containers/glass/beaker) || istype(W, /obj/item/weapon/reagent_containers/glass/dispenser)) && stage == 1)
|
|
if(beakers.len == 2)
|
|
user << "\red The grenade can not hold more containers."
|
|
return
|
|
else
|
|
if(W.reagents.total_volume)
|
|
user << "\blue You add \the [W] to the assembly."
|
|
user.drop_item()
|
|
W.loc = src
|
|
beakers += W
|
|
else
|
|
user << "\red \the [W] is empty."
|
|
|
|
afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
|
|
if (istype(target, /obj/item/weapon/storage)) return ..()
|
|
if (!src.state && stage == 2)
|
|
user << "\red You prime the grenade! 3 seconds!"
|
|
message_admins("[key_name_admin(user)] used a chemistry grenade ([src.name]).")
|
|
src.state = 1
|
|
src.icon_state = "chemg4"
|
|
playsound(src.loc, 'armbomb.ogg', 75, 1, -3)
|
|
spawn(30)
|
|
explode()
|
|
user.drop_item()
|
|
var/t = (isturf(target) ? target : target.loc)
|
|
walk_towards(src, t, 3)
|
|
|
|
attack_self(mob/user as mob)
|
|
if (!src.state && stage == 2)
|
|
user << "\red You prime the grenade! 3 seconds!"
|
|
message_admins("[key_name_admin(user)] used a chemistry grenade ([src.name]).")
|
|
src.state = 1
|
|
src.icon_state = "chemg4"
|
|
playsound(src.loc, 'armbomb.ogg', 75, 1, -3)
|
|
spawn(30)
|
|
explode()
|
|
|
|
attack_hand()
|
|
walk(src,0)
|
|
return ..()
|
|
attack_paw()
|
|
return attack_hand()
|
|
|
|
proc
|
|
explode()
|
|
var/has_reagents = 0
|
|
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
|
if(G.reagents.total_volume) has_reagents = 1
|
|
|
|
if(!has_reagents)
|
|
playsound(src.loc, 'Screwdriver2.ogg', 50, 1)
|
|
state = 0
|
|
return
|
|
|
|
playsound(src.loc, 'bamf.ogg', 50, 1)
|
|
|
|
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
|
G.reagents.trans_to(src, G.reagents.total_volume)
|
|
|
|
if(src.reagents.total_volume) //The possible reactions didnt use up all reagents.
|
|
var/datum/effects/system/steam_spread/steam = new /datum/effects/system/steam_spread()
|
|
steam.set_up(10, 0, get_turf(src))
|
|
steam.attach(src)
|
|
steam.start()
|
|
|
|
for(var/atom/A in view(3, src.loc))
|
|
if( A == src ) continue
|
|
src.reagents.reaction(A, 1, 10)
|
|
|
|
|
|
invisibility = 100 //Why am i doing this?
|
|
spawn(50) //To make sure all reagents can work
|
|
del(src) //correctly before deleting the grenade.
|
|
|
|
|
|
/obj/item/weapon/chem_grenade/metalfoam
|
|
name = "Metal-Foam Grenade"
|
|
desc = "Used for emergency sealing of air breaches."
|
|
icon_state = "chemg3"
|
|
stage = 2
|
|
|
|
New()
|
|
..()
|
|
var/obj/item/weapon/reagent_containers/glass/B1 = new(src)
|
|
var/obj/item/weapon/reagent_containers/glass/B2 = new(src)
|
|
|
|
B1.reagents.add_reagent("aluminium", 30)
|
|
B2.reagents.add_reagent("foaming_agent", 10)
|
|
B2.reagents.add_reagent("pacid", 10)
|
|
|
|
beakers += B1
|
|
beakers += B2
|
|
|
|
/obj/item/weapon/chem_grenade/incendiary
|
|
name = "Incendiary Grenade"
|
|
desc = "Used for clearing rooms of living things."
|
|
icon_state = "chemg3"
|
|
stage = 2
|
|
|
|
New()
|
|
..()
|
|
var/obj/item/weapon/reagent_containers/glass/B1 = new(src)
|
|
var/obj/item/weapon/reagent_containers/glass/B2 = new(src)
|
|
|
|
B1.reagents.add_reagent("aluminium", 25)
|
|
B2.reagents.add_reagent("plasma", 25)
|
|
B2.reagents.add_reagent("acid", 25)
|
|
|
|
beakers += B1
|
|
beakers += B2
|
|
|
|
/obj/item/weapon/chem_grenade/cleaner
|
|
name = "Cleaner Grenade"
|
|
desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
|
|
icon_state = "chemg3"
|
|
stage = 2
|
|
|
|
New()
|
|
..()
|
|
var/obj/item/weapon/reagent_containers/glass/B1 = new(src)
|
|
var/obj/item/weapon/reagent_containers/glass/B2 = new(src)
|
|
|
|
B1.reagents.add_reagent("fluorosurfactant", 30)
|
|
B2.reagents.add_reagent("water", 10)
|
|
B2.reagents.add_reagent("cleaner", 10)
|
|
|
|
beakers += B1
|
|
beakers += B2
|
|
/*
|
|
/obj/item/weapon/chem_grenade/poo
|
|
name = "poo grenade"
|
|
desc = "A ShiTastic! brand biological warfare charge. Not very effective unless the target is squeamish."
|
|
icon_state = "chemg3"
|
|
stage = 2
|
|
|
|
New()
|
|
..()
|
|
var/obj/item/weapon/reagent_containers/glass/B1 = new(src)
|
|
var/obj/item/weapon/reagent_containers/glass/B2 = new(src)
|
|
|
|
B1.reagents.add_reagent("poo", 30)
|
|
B2.reagents.add_reagent("poo", 30)
|
|
|
|
beakers += B1
|
|
beakers += B2
|
|
*/
|
|
///////////////////////////////Grenades
|
|
|
|
/obj/syringe_gun_dummy
|
|
name = ""
|
|
desc = ""
|
|
icon = 'chemical.dmi'
|
|
icon_state = "null"
|
|
anchored = 1
|
|
density = 0
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(15)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
/obj/item/weapon/gun/syringe
|
|
name = "syringe gun"
|
|
icon = '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
|
|
m_amt = 2000
|
|
|
|
examine()
|
|
set src in view(2)
|
|
..()
|
|
usr << "\icon [src] Syringe gun:"
|
|
usr << "\blue [syringes] / [max_syringes] Syringes."
|
|
|
|
attackby(obj/item/I as obj, mob/user as mob)
|
|
if(istype(I, /obj/item/weapon/reagent_containers/syringe))
|
|
if(syringes.len < max_syringes)
|
|
user.drop_item()
|
|
I.loc = src
|
|
syringes += I
|
|
user << "\blue You put the syringe in the syringe gun."
|
|
user << "\blue [syringes.len] / [max_syringes] Syringes."
|
|
else
|
|
usr << "\red The syringe gun cannot hold more syringes."
|
|
|
|
afterattack(obj/target, mob/user , flag)
|
|
if(!isturf(target.loc) || target == user) return
|
|
|
|
if(syringes.len)
|
|
spawn(0) fire_syringe(target,user)
|
|
else
|
|
usr << "\red The syringe gun is empty."
|
|
|
|
proc
|
|
fire_syringe(atom/target, mob/user)
|
|
if (locate (/obj/table, src.loc))
|
|
return
|
|
else
|
|
var/turf/trg = get_turf(target)
|
|
var/obj/syringe_gun_dummy/D = new/obj/syringe_gun_dummy(get_turf(src))
|
|
var/obj/item/weapon/reagent_containers/syringe/S = syringes[1]
|
|
S.reagents.trans_to(D, S.reagents.total_volume)
|
|
syringes -= S
|
|
del(S)
|
|
D.icon_state = "syringeproj"
|
|
D.name = "syringe"
|
|
playsound(user.loc, 'syringeproj.ogg', 50, 1)
|
|
|
|
for(var/i=0, i<6, i++)
|
|
if(!D) break
|
|
if(D.loc == trg) break
|
|
step_towards(D,trg)
|
|
|
|
for(var/mob/living/carbon/M in D.loc)
|
|
if(!istype(M,/mob/living/carbon)) continue
|
|
if(M == user) continue
|
|
D.reagents.trans_to(M, 15)
|
|
M.bruteloss += 5
|
|
for(var/mob/O in viewers(world.view, D))
|
|
O.show_message(text("\red [] was hit by the syringe!", M), 1)
|
|
|
|
del(D)
|
|
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/reagent_dispensers
|
|
name = "Dispenser"
|
|
desc = "..."
|
|
icon = 'objects.dmi'
|
|
icon_state = "watertank"
|
|
density = 1
|
|
anchored = 0
|
|
flags = FPRINT
|
|
pressure_resistance = 2*ONE_ATMOSPHERE
|
|
|
|
var/amount_per_transfer_from_this = 10
|
|
var/possible_transfer_amounts = list(10,25,50,100)
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
return
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(1000)
|
|
reagents = R
|
|
R.my_atom = src
|
|
if (!possible_transfer_amounts)
|
|
src.verbs -= /obj/reagent_dispensers/verb/set_APTFT
|
|
..()
|
|
|
|
examine()
|
|
set src in view(2)
|
|
..()
|
|
usr << "\blue It contains:"
|
|
if(!reagents) return
|
|
if(reagents.reagent_list.len)
|
|
for(var/datum/reagent/R in reagents.reagent_list)
|
|
usr << "\blue [R.volume] units of [R.name]"
|
|
else
|
|
usr << "\blue Nothing."
|
|
|
|
verb/set_APTFT() //set amount_per_transfer_from_this
|
|
set name = "Set transfer amount"
|
|
set src in range(1)
|
|
var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts
|
|
if (N)
|
|
amount_per_transfer_from_this = N
|
|
|
|
ex_act(severity)
|
|
switch(severity)
|
|
if(1.0)
|
|
del(src)
|
|
return
|
|
if(2.0)
|
|
if (prob(50))
|
|
new /obj/effects/water(src.loc)
|
|
del(src)
|
|
return
|
|
if(3.0)
|
|
if (prob(5))
|
|
new /obj/effects/water(src.loc)
|
|
del(src)
|
|
return
|
|
else
|
|
return
|
|
|
|
blob_act()
|
|
if(prob(50))
|
|
new /obj/effects/water(src.loc)
|
|
del(src)
|
|
|
|
|
|
|
|
/obj/item/weapon/reagent_containers
|
|
name = "Container"
|
|
desc = "..."
|
|
icon = 'chemical.dmi'
|
|
icon_state = null
|
|
w_class = 1
|
|
var/amount_per_transfer_from_this = 5
|
|
var/possible_transfer_amounts = list(5,10,25)
|
|
|
|
verb/set_APTFT() //set amount_per_transfer_from_this
|
|
set name = "Set transfer amount"
|
|
set src in range(0)
|
|
var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts
|
|
if (N)
|
|
amount_per_transfer_from_this = N
|
|
|
|
New()
|
|
if (!possible_transfer_amounts)
|
|
src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT
|
|
..()
|
|
/* var/datum/reagents/R = new/datum/reagents(50)
|
|
reagents = R
|
|
R.my_atom = src */
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
return
|
|
attack_self(mob/user as mob)
|
|
return
|
|
attack(mob/M as mob, mob/user as mob, def_zone)
|
|
return
|
|
attackby(obj/item/I as obj, mob/user as mob)
|
|
return
|
|
afterattack(obj/target, mob/user , flag)
|
|
return
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// (Mixing)Glass.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/obj/item/weapon/reagent_containers/glass/
|
|
name = " "
|
|
desc = " "
|
|
icon = 'chemical.dmi'
|
|
icon_state = "null"
|
|
item_state = "null"
|
|
amount_per_transfer_from_this = 10
|
|
possible_transfer_amounts = list(5,10,25)
|
|
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
|
|
|
var/list/can_be_placed_into = list(
|
|
/obj/machinery/chem_master/,
|
|
/obj/table,
|
|
/obj/secure_closet,
|
|
/obj/closet,
|
|
/obj/item/weapon/storage,
|
|
/obj/machinery/atmospherics/unary/cryo_cell,
|
|
/obj/item/weapon/chem_grenade,
|
|
/obj/machinery/bot/medbot,
|
|
/obj/machinery/computer/pandemic,
|
|
/obj/item/weapon/secstorage/ssafe
|
|
)
|
|
|
|
examine()
|
|
set src in view(2)
|
|
..()
|
|
usr << "\blue It contains:"
|
|
if(!reagents) return
|
|
if(reagents.reagent_list.len)
|
|
for(var/datum/reagent/R in reagents.reagent_list)
|
|
usr << "\blue [R.volume] units of [R.name]"
|
|
else
|
|
usr << "\blue Nothing."
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(50)
|
|
reagents = R
|
|
R.my_atom = src
|
|
..()
|
|
|
|
|
|
afterattack(obj/target, mob/user , flag)
|
|
for(var/type in src.can_be_placed_into)
|
|
if(istype(target, type))
|
|
return
|
|
|
|
if(ismob(target) && target.reagents && reagents.total_volume)
|
|
user << "\blue You splash the solution onto [target]."
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message(text("\red [] has been splashed with something by []!", target, user), 1)
|
|
src.reagents.reaction(target, TOUCH)
|
|
spawn(5) src.reagents.clear_reagents()
|
|
return
|
|
else if(istype(target, /obj/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
|
|
|
if(!target.reagents.total_volume && target.reagents)
|
|
user << "\red [target] is empty."
|
|
return
|
|
|
|
if(reagents.total_volume >= reagents.maximum_volume)
|
|
user << "\red [src] is full."
|
|
return
|
|
|
|
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
|
user << "\blue You fill [src] with [trans] units of the contents of [target]."
|
|
|
|
else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
|
|
if(!reagents.total_volume)
|
|
user << "\red [src] is empty."
|
|
return
|
|
|
|
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
|
user << "\red [target] is full."
|
|
return
|
|
|
|
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
|
user << "\blue You transfer [trans] units of the solution to [target]."
|
|
|
|
else if(reagents.total_volume)
|
|
user << "\blue You splash the solution onto [target]."
|
|
src.reagents.reaction(target, TOUCH)
|
|
spawn(5) src.reagents.clear_reagents()
|
|
return
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// (Mixing)Glass. END
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Droppers.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/obj/item/weapon/reagent_containers/dropper
|
|
name = "Dropper"
|
|
desc = "A dropper. Transfers 5 units."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "dropper0"
|
|
amount_per_transfer_from_this = 5
|
|
possible_transfer_amounts = list(1,2,3,4,5)
|
|
var/filled = 0
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(5)
|
|
reagents = R
|
|
R.my_atom = src
|
|
..()
|
|
|
|
afterattack(obj/target, mob/user , flag)
|
|
if(!target.reagents) return
|
|
|
|
if(filled)
|
|
|
|
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
|
user << "\red [target] is full."
|
|
return
|
|
|
|
if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food)) //You can inject humans and food but you cant remove the shit.
|
|
user << "\red You cannot directly fill this object."
|
|
return
|
|
|
|
if(ismob(target))
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message(text("\red <B>[] drips something onto []!</B>", user, target), 1)
|
|
src.reagents.reaction(target, TOUCH)
|
|
|
|
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
|
user << "\blue You transfer [trans] units of the solution."
|
|
if (src.reagents.total_volume<=0)
|
|
filled = 0
|
|
icon_state = "dropper[filled]"
|
|
|
|
else
|
|
|
|
if(!target.is_open_container() && !istype(target,/obj/reagent_dispensers))
|
|
user << "\red You cannot directly remove reagents from [target]."
|
|
return
|
|
|
|
if(!target.reagents.total_volume)
|
|
user << "\red [target] is empty."
|
|
return
|
|
|
|
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
|
|
|
user << "\blue You fill the dropper with [trans] units of the solution."
|
|
|
|
filled = 1
|
|
icon_state = "dropper[filled]"
|
|
|
|
return
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Droppers. END
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Syringes.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/obj/item/weapon/reagent_containers/syringe
|
|
name = "Syringe"
|
|
desc = "A syringe."
|
|
icon = 'syringe.dmi'
|
|
item_state = "syringe_0"
|
|
icon_state = "0"
|
|
amount_per_transfer_from_this = 5
|
|
possible_transfer_amounts = null //list(5,10,15)
|
|
var/mode = "d"
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(15)
|
|
reagents = R
|
|
R.maximum_volume = 15
|
|
R.my_atom = src
|
|
..()
|
|
|
|
on_reagent_change()
|
|
update_icon()
|
|
|
|
pickup(mob/user)
|
|
..()
|
|
update_icon()
|
|
|
|
dropped(mob/user)
|
|
..()
|
|
update_icon()
|
|
|
|
attack_self(mob/user as mob)
|
|
switch(mode)
|
|
if("d")
|
|
mode = "i"
|
|
if("i")
|
|
mode = "d"
|
|
update_icon()
|
|
|
|
attack_hand()
|
|
..()
|
|
update_icon()
|
|
|
|
attack_paw()
|
|
return attack_hand()
|
|
|
|
attackby(obj/item/I as obj, mob/user as mob)
|
|
return
|
|
|
|
afterattack(obj/target, mob/user , flag)
|
|
if(!target.reagents) return
|
|
|
|
switch(mode)
|
|
if("d")
|
|
|
|
if(reagents.total_volume >= reagents.maximum_volume)
|
|
user << "\red The syringe is full."
|
|
return
|
|
|
|
if(ismob(target))//Blood!
|
|
if(src.reagents.has_reagent("blood"))
|
|
user << "\red There is already a blood sample in this syringe"
|
|
return
|
|
if(istype(target, /mob/living/carbon))//maybe just add a blood reagent to all mobs. Then you can suck them dry...With hundreds of syringes. Jolly good idea.
|
|
var/amount = src.reagents.maximum_volume - src.reagents.total_volume
|
|
var/mob/living/carbon/T = target
|
|
var/datum/reagent/B = new /datum/reagent/blood
|
|
B.holder = src
|
|
B.volume = amount
|
|
//set reagent data
|
|
B.data["donor"] = T
|
|
if(T.virus && T.virus.spread_type != SPECIAL)
|
|
B.data["virus"] = new T.virus.type(0)
|
|
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
|
|
if(T.resistances&&T.resistances.len)
|
|
B.data["resistances"] = T.resistances.Copy()
|
|
if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation...
|
|
var/mob/living/carbon/human/HT = target
|
|
B.data["blood_type"] = copytext(HT.b_type,1,0)
|
|
var/list/temp_chem = list()
|
|
for(var/datum/reagent/R in target.reagents.reagent_list)
|
|
temp_chem += R.name
|
|
temp_chem[R.name] = R.volume
|
|
B.data["trace_chem"] = list2params(temp_chem)
|
|
//debug
|
|
//for(var/D in B.data)
|
|
// world << "Data [D] = [B.data[D]]"
|
|
//debug
|
|
src.reagents.reagent_list += B
|
|
src.reagents.update_total()
|
|
src.on_reagent_change()
|
|
src.reagents.handle_reactions()
|
|
user << "\blue You take a blood sample from [target]"
|
|
for(var/mob/O in viewers(4, user))
|
|
O.show_message("\red [user] takes a blood sample from [target].", 1)
|
|
return
|
|
|
|
|
|
if(!target.reagents.total_volume)
|
|
user << "\red [target] is empty."
|
|
return
|
|
|
|
|
|
if(!target.is_open_container() && !istype(target,/obj/reagent_dispensers))
|
|
user << "\red You cannot directly remove reagents from this object."
|
|
return
|
|
|
|
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
|
|
|
user << "\blue You fill the syringe with [trans] units of the solution."
|
|
|
|
if("i")
|
|
if(!reagents.total_volume)
|
|
user << "\red The Syringe is empty."
|
|
return
|
|
if(istype(target, /obj/item/weapon/implantcase/chem))
|
|
return
|
|
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
|
user << "\red [target] is full."
|
|
return
|
|
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food))
|
|
user << "\red You cannot directly fill this object."
|
|
return
|
|
|
|
if(ismob(target) && target != user)
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message(text("\red <B>[] is trying to inject []!</B>", user, target), 1)
|
|
if(!do_mob(user, target)) return
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message(text("\red [] injects [] with the syringe!", user, target), 1)
|
|
src.reagents.reaction(target, INGEST)
|
|
if(ismob(target) && target == user)
|
|
src.reagents.reaction(target, INGEST)
|
|
spawn(5)
|
|
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
|
user << "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units."
|
|
return
|
|
|
|
update_icon()
|
|
var/rounded_vol = round(reagents.total_volume,5)
|
|
if(ismob(loc))
|
|
icon_state = "[mode][rounded_vol]"
|
|
else
|
|
icon_state = "[rounded_vol]"
|
|
item_state = "syringe_[rounded_vol]"
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Syringes. END
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// HYPOSPRAY
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
/obj/item/weapon/reagent_containers/hypospray
|
|
name = "hypospray"
|
|
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
|
|
icon = 'syringe.dmi'
|
|
item_state = "hypo"
|
|
icon_state = "hypo"
|
|
amount_per_transfer_from_this = 10
|
|
possible_transfer_amounts = null
|
|
flags = FPRINT | ONBELT | TABLEPASS | OPENCONTAINER
|
|
|
|
/obj/item/weapon/reagent_containers/hypospray/attack_paw(mob/user as mob)
|
|
return src.attack_hand(user)
|
|
|
|
/obj/item/weapon/reagent_containers/hypospray/New()
|
|
var/datum/reagents/R = new/datum/reagents(30)
|
|
reagents = R
|
|
R.my_atom = src
|
|
//R.add_reagent("tricordrazine", 30) //uncomment this to make it start with stuff in
|
|
..()
|
|
return
|
|
|
|
/obj/item/weapon/reagent_containers/hypospray/attack(mob/M as mob, mob/user as mob)
|
|
if (!( istype(M, /mob) ))
|
|
return
|
|
if (reagents.total_volume)
|
|
user << "\blue You inject [M] with the hypospray."
|
|
M << "\red You feel a tiny prick!"
|
|
src.reagents.reaction(M, INGEST)
|
|
if(M.reagents)
|
|
var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
|
|
user << "\blue [trans] units injected. [reagents.total_volume] units remaining in the hypospray."
|
|
return
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Food.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/obj/item/weapon/reagent_containers/food
|
|
possible_transfer_amounts = null
|
|
|
|
New() //Sets the default container amount for all food items.
|
|
var/datum/reagents/R = new/datum/reagents(50) // if you want a food item with a different capacity
|
|
reagents = R // then just redefine it in the code for the specific food item.
|
|
R.my_atom = src
|
|
src.pixel_x = rand(-5.0, 5) //Randomizes postion slightly.
|
|
src.pixel_y = rand(-5.0, 5)
|
|
..()
|
|
|
|
/obj/item/weapon/reagent_containers/food/condiment //Food items that aren't eaten normally and leave an empty container behind.
|
|
name = "Condiment Container"
|
|
desc = "Just your average condiment container."
|
|
icon = 'food.dmi'
|
|
icon_state = "emptycondiment"
|
|
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
|
possible_transfer_amounts = list(1,5,10)
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
return
|
|
attack_self(mob/user as mob)
|
|
return
|
|
attack(mob/M as mob, mob/user as mob, def_zone)
|
|
var/datum/reagents/R = src.reagents
|
|
|
|
if(!R || !R.total_volume)
|
|
user << "\red None of [src] left, oh no!"
|
|
return 0
|
|
|
|
if(M == user)
|
|
M << "\blue You swallow some of contents of the [src]."
|
|
if(reagents.total_volume)
|
|
reagents.reaction(M, INGEST)
|
|
spawn(5)
|
|
reagents.trans_to(M, 10)
|
|
|
|
playsound(M.loc,'drink.ogg', rand(10,50), 1)
|
|
return 1
|
|
else if( istype(M, /mob/living/carbon/human) )
|
|
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message("\red [user] attempts to feed [M] [src].", 1)
|
|
if(!do_mob(user, M)) return
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message("\red [user] feeds [M] [src].", 1)
|
|
|
|
if(reagents.total_volume)
|
|
reagents.reaction(M, INGEST)
|
|
spawn(5)
|
|
reagents.trans_to(M, 10)
|
|
|
|
playsound(M.loc,'drink.ogg', rand(10,50), 1)
|
|
return 1
|
|
return 0
|
|
|
|
attackby(obj/item/I as obj, mob/user as mob)
|
|
return
|
|
|
|
afterattack(obj/target, mob/user , flag)
|
|
if(istype(target, /obj/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
|
|
|
if(!target.reagents.total_volume)
|
|
user << "\red [target] is empty."
|
|
return
|
|
|
|
if(reagents.total_volume >= reagents.maximum_volume)
|
|
user << "\red [src] is full."
|
|
return
|
|
|
|
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
|
user << "\blue You fill [src] with [trans] units of the contents of [target]."
|
|
|
|
//Something like a glass or a food item. Player probably wants to transfer TO it.
|
|
else if(target.is_open_container() || istype(target, /obj/item/weapon/reagent_containers/food/snacks))
|
|
if(!reagents.total_volume)
|
|
user << "\red [src] is empty."
|
|
return
|
|
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
|
user << "\red you can't add anymore to [target]."
|
|
return
|
|
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
|
user << "\blue You transfer [trans] units of the condiment to [target]."
|
|
|
|
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks //Food items that are eaten normally and don't leave anything behind.
|
|
name = "snack"
|
|
desc = "yummy"
|
|
icon = 'food.dmi'
|
|
icon_state = null
|
|
var/bitesize = 1
|
|
|
|
proc/On_Consume()
|
|
return
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
return
|
|
attack_self(mob/user as mob)
|
|
return
|
|
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!"
|
|
del(src)
|
|
return 0
|
|
if(istype(M, /mob/living/carbon/human))
|
|
if(M == user) //If you're eating it yourself.
|
|
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
|
|
if (fullness <= 50)
|
|
M << "\red You hungrily chew out a piece of [src] and gobble it!"
|
|
if (fullness > 50 && fullness <= 150)
|
|
M << "\blue You hungrily begin to eat [src]."
|
|
if (fullness > 150 && fullness <= 350)
|
|
M << "\blue You take a bite of [src]."
|
|
if (fullness > 350 && fullness <= 550)
|
|
M << "\blue You unwillingly chew a bit of [src]."
|
|
if (fullness > (550 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
|
|
M << "\red You cannot force any more of [src] to go down your throat."
|
|
return 0
|
|
else //If you're feeding it to someone else.
|
|
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
|
|
if (fullness <= (550 * (1 + M.overeatduration / 1000)))
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message("\red [user] attempts to feed [M] [src].", 1)
|
|
else
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message("\red [user] cannot force anymore of [src] down [M]'s throat.", 1)
|
|
return 0
|
|
|
|
if(!do_mob(user, M)) return
|
|
|
|
M.attack_log += text("[] <b>[]/[]</b> feeds <b>[]/[]</b> with <b>[]</b>", world.time, user, user.client, M, M.client, src)
|
|
user.attack_log += text("[] <b>[]/[]</b> feeds <b>[]/[]</b> with <b>[]</b>", world.time, user, user.client, M, M.client, src)
|
|
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message("\red [user] feeds [M] [src].", 1)
|
|
if(reagents) //Handle ingestion of the reagent.
|
|
if(reagents.total_volume)
|
|
reagents.reaction(M, INGEST)
|
|
spawn(5)
|
|
if(reagents.total_volume > bitesize)
|
|
var/temp_bitesize = max(reagents.total_volume /2, bitesize)
|
|
reagents.trans_to(M, temp_bitesize)
|
|
else
|
|
reagents.trans_to(M, reagents.total_volume)
|
|
if(!reagents.total_volume)
|
|
if(M == user) user << "\red You finish eating [src]."
|
|
else user << "\red [M] finishes eating [src]."
|
|
On_Consume()
|
|
del(src)
|
|
playsound(M.loc,'eatfood.ogg', rand(10,50), 1)
|
|
return 1
|
|
|
|
return 0
|
|
|
|
attackby(obj/item/I as obj, mob/user as mob)
|
|
return
|
|
afterattack(obj/target, mob/user , flag)
|
|
return
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// FOOD END
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Drinks.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/obj/item/weapon/reagent_containers/food/drinks
|
|
name = "drink"
|
|
desc = "yummy"
|
|
icon = 'drinks.dmi'
|
|
icon_state = null
|
|
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
|
var/gulp_size = 5 //This is now officially broken ... need to think of a nice way to fix it.
|
|
possible_transfer_amounts = list(5,10,25)
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(50)
|
|
reagents = R
|
|
R.my_atom = src
|
|
..()
|
|
|
|
on_reagent_change()
|
|
if (gulp_size < 5) gulp_size = 5
|
|
else gulp_size = max(round(reagents.total_volume / 5), 5)
|
|
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
return
|
|
attack_self(mob/user as mob)
|
|
return
|
|
attack(mob/M as mob, mob/user as mob, def_zone)
|
|
var/datum/reagents/R = src.reagents
|
|
var/fillevel = gulp_size
|
|
|
|
if(!R.total_volume || !R)
|
|
user << "\red None of [src] left, oh no!"
|
|
return 0
|
|
|
|
if(M == user)
|
|
M << "\blue You swallow a gulp of [src]."
|
|
if(reagents.total_volume)
|
|
reagents.reaction(M, INGEST)
|
|
spawn(5)
|
|
reagents.trans_to(M, gulp_size)
|
|
|
|
playsound(M.loc,'drink.ogg', rand(10,50), 1)
|
|
return 1
|
|
else if( istype(M, /mob/living/carbon/human) )
|
|
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message("\red [user] attempts to feed [M] [src].", 1)
|
|
if(!do_mob(user, M)) return
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message("\red [user] feeds [M] [src].", 1)
|
|
|
|
if(reagents.total_volume)
|
|
reagents.reaction(M, INGEST)
|
|
spawn(5)
|
|
reagents.trans_to(M, gulp_size)
|
|
|
|
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
|
|
var/mob/living/silicon/robot/bro = user
|
|
bro.cell.use(30)
|
|
var/refill = R.get_master_reagent_id()
|
|
spawn(600)
|
|
R.add_reagent(refill, fillevel)
|
|
|
|
|
|
playsound(M.loc,'drink.ogg', rand(10,50), 1)
|
|
return 1
|
|
|
|
return 0
|
|
|
|
attackby(obj/item/I as obj, mob/user as mob)
|
|
return
|
|
|
|
afterattack(obj/target, mob/user , flag)
|
|
|
|
if(istype(target, /obj/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
|
|
|
if(!target.reagents.total_volume)
|
|
user << "\red [target] is empty."
|
|
return
|
|
|
|
if(reagents.total_volume >= reagents.maximum_volume)
|
|
user << "\red [src] is full."
|
|
return
|
|
|
|
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
|
user << "\blue You fill [src] with [trans] units of the contents of [target]."
|
|
|
|
else if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it.
|
|
if(!reagents.total_volume)
|
|
user << "\red [src] is empty."
|
|
return
|
|
|
|
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
|
user << "\red [target] is full."
|
|
return
|
|
|
|
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
|
user << "\blue You transfer [trans] units of the solution to [target]."
|
|
|
|
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
|
|
var/mob/living/silicon/robot/bro = user
|
|
bro.cell.use(30)
|
|
var/refill = reagents.get_master_reagent_id()
|
|
spawn(600)
|
|
reagents.add_reagent(refill, trans)
|
|
|
|
return
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Drinks. END
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Pills.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/obj/item/weapon/reagent_containers/pill
|
|
name = "pill"
|
|
desc = "a pill."
|
|
icon = 'chemical.dmi'
|
|
icon_state = null
|
|
item_state = "pill"
|
|
possible_transfer_amounts = null
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(50)
|
|
reagents = R
|
|
R.my_atom = src
|
|
if(!icon_state)
|
|
icon_state = "pill[rand(1,20)]"
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
return
|
|
attack_self(mob/user as mob)
|
|
return
|
|
attack(mob/M as mob, mob/user as mob, def_zone)
|
|
if(M == user)
|
|
M << "\blue You swallow [src]."
|
|
if(reagents.total_volume)
|
|
reagents.reaction(M, INGEST)
|
|
spawn(5)
|
|
reagents.trans_to(M, reagents.total_volume)
|
|
del(src)
|
|
else
|
|
del(src)
|
|
return 1
|
|
|
|
else if(istype(M, /mob/living/carbon/human) )
|
|
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message("\red [user] attempts to force [M] to swallow [src].", 1)
|
|
|
|
if(!do_mob(user, M)) return
|
|
|
|
for(var/mob/O in viewers(world.view, user))
|
|
O.show_message("\red [user] forces [M] to swallow [src].", 1)
|
|
|
|
if(reagents.total_volume)
|
|
reagents.reaction(M, INGEST)
|
|
spawn(5)
|
|
reagents.trans_to(M, reagents.total_volume)
|
|
del(src)
|
|
else
|
|
del(src)
|
|
|
|
return 1
|
|
|
|
return 0
|
|
|
|
attackby(obj/item/I as obj, mob/user as mob)
|
|
return
|
|
|
|
afterattack(obj/target, mob/user , flag)
|
|
|
|
if(target.is_open_container() == 1 && target.reagents)
|
|
if(!target.reagents.total_volume)
|
|
user << "\red [target] is empty. Cant dissolve pill."
|
|
return
|
|
user << "\blue You dissolve the pill in [target]"
|
|
reagents.trans_to(target, reagents.total_volume)
|
|
for(var/mob/O in viewers(2, user))
|
|
O.show_message("\red [user] puts something in [target].", 1)
|
|
spawn(5)
|
|
del(src)
|
|
|
|
return
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Pills. END
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// Subtypes.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//Glasses
|
|
/obj/item/weapon/reagent_containers/glass/bucket
|
|
desc = "It's a bucket."
|
|
name = "bucket"
|
|
icon = 'janitor.dmi'
|
|
icon_state = "bucket"
|
|
item_state = "bucket"
|
|
m_amt = 200
|
|
g_amt = 0
|
|
w_class = 3.0
|
|
amount_per_transfer_from_this = 20
|
|
possible_transfer_amounts = list(10,20,30,50,70)
|
|
flags = FPRINT | OPENCONTAINER
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(70)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
attackby(var/obj/D, mob/user as mob)
|
|
if(istype(D, /obj/item/device/prox_sensor))
|
|
var/obj/item/weapon/bucket_sensor/B = new /obj/item/weapon/bucket_sensor
|
|
B.loc = user
|
|
if (user.r_hand == D)
|
|
user.u_equip(D)
|
|
user.r_hand = B
|
|
else
|
|
user.u_equip(D)
|
|
user.l_hand = B
|
|
B.layer = 20
|
|
user << "You add the sensor to the bucket"
|
|
del(D)
|
|
del(src)
|
|
|
|
/obj/item/weapon/reagent_containers/glass/cantister
|
|
desc = "It's a canister. Mainly used for transporting fuel."
|
|
name = "canister"
|
|
icon = 'tank.dmi'
|
|
icon_state = "canister"
|
|
item_state = "canister"
|
|
m_amt = 300
|
|
g_amt = 0
|
|
w_class = 4.0
|
|
|
|
amount_per_transfer_from_this = 20
|
|
possible_transfer_amounts = list(10,20,30,60)
|
|
flags = FPRINT
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(120)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
/obj/item/weapon/reagent_containers/glass/dispenser
|
|
name = "reagent glass"
|
|
desc = "A reagent glass."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "beaker"
|
|
amount_per_transfer_from_this = 10
|
|
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
|
|
|
/obj/item/weapon/reagent_containers/glass/dispenser/surfactant
|
|
name = "reagent glass (surfactant)"
|
|
icon_state = "liquid"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("fluorosurfactant", 20)
|
|
|
|
/obj/item/weapon/reagent_containers/glass/beaker
|
|
name = "beaker"
|
|
desc = "A beaker. Can hold up to 50 units."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "beaker0"
|
|
item_state = "beaker"
|
|
|
|
on_reagent_change()
|
|
if(reagents.total_volume)
|
|
icon_state = "beaker1"
|
|
else
|
|
icon_state = "beaker0"
|
|
|
|
/obj/item/weapon/reagent_containers/glass/blender_jug
|
|
name = "Blender Jug"
|
|
desc = "A blender jug, part of a blender."
|
|
icon = 'kitchen.dmi'
|
|
icon_state = "blender_jug_e"
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(100)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
on_reagent_change()
|
|
switch(src.reagents.total_volume)
|
|
if(0)
|
|
icon_state = "blender_jug_e"
|
|
if(1 to 75)
|
|
icon_state = "blender_jug_h"
|
|
if(76 to 100)
|
|
icon_state = "blender_jug_f"
|
|
|
|
/obj/item/weapon/reagent_containers/glass/large
|
|
name = "large reagent glass"
|
|
desc = "A large reagent glass."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "beakerlarge"
|
|
item_state = "beaker"
|
|
amount_per_transfer_from_this = 10
|
|
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/
|
|
name = "bottle"
|
|
desc = "A small bottle."
|
|
icon = 'chemical.dmi'
|
|
icon_state = null
|
|
item_state = "atoxinbottle"
|
|
amount_per_transfer_from_this = 10
|
|
possible_transfer_amounts = list(5,10,15)
|
|
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(30)
|
|
reagents = R
|
|
R.my_atom = src
|
|
if(!icon_state)
|
|
icon_state = "bottle[rand(1,20)]"
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline
|
|
name = "inaprovaline bottle"
|
|
desc = "A small bottle. Contains inaprovaline - used to stabilize patients."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "bottle16"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("inaprovaline", 30)
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/toxin
|
|
name = "toxin bottle"
|
|
desc = "A small bottle."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "bottle12"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("toxin", 30)
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/stoxin
|
|
name = "sleep-toxin bottle"
|
|
desc = "A small bottle."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "bottle20"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("stoxin", 30)
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate
|
|
name = "Chloral Hydrate Bottle"
|
|
desc = "A small bottle."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "bottle20"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("chloralhydrate", 15) //Intentionally low since it is so strong. Still enough to knock someone out.
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin
|
|
name = "anti-toxin bottle"
|
|
desc = "A small bottle."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "bottle17"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("anti_toxin", 30)
|
|
|
|
|
|
/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 = 'chemical.dmi'
|
|
icon_state = "bottle3"
|
|
New()
|
|
..()
|
|
var/datum/disease/F = new /datum/disease/flu(0)
|
|
var/list/data = list("virus"= F)
|
|
reagents.add_reagent("blood", 20, data)
|
|
|
|
/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 = 'chemical.dmi'
|
|
icon_state = "bottle3"
|
|
New()
|
|
..()
|
|
var/datum/disease/F = new /datum/disease/pierrot_throat(0)
|
|
var/list/data = list("virus"= F)
|
|
reagents.add_reagent("blood", 20, data)
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/cold
|
|
name = "Rhinovirus culture bottle"
|
|
desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "bottle3"
|
|
New()
|
|
..()
|
|
var/datum/disease/F = new /datum/disease/cold(0)
|
|
var/list/data = list("virus"= F)
|
|
reagents.add_reagent("blood", 20, data)
|
|
|
|
/*
|
|
/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 = 'chemical.dmi'
|
|
icon_state = "bottle3"
|
|
amount_per_transfer_from_this = 5
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(20)
|
|
reagents = R
|
|
R.my_atom = src
|
|
var/datum/disease/F = new /datum/disease/gbs
|
|
var/list/data = list("virus"= F)
|
|
R.add_reagent("blood", 20, data) -- No.
|
|
*/
|
|
/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 = 'chemical.dmi'
|
|
icon_state = "bottle3"
|
|
New()
|
|
..()
|
|
var/datum/disease/F = new /datum/disease/fake_gbs(0)
|
|
var/list/data = list("virus"= F)
|
|
reagents.add_reagent("blood", 20, data)
|
|
/*
|
|
/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 = 'chemical.dmi'
|
|
icon_state = "bottle3"
|
|
amount_per_transfer_from_this = 5
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(20)
|
|
reagents = R
|
|
R.my_atom = src
|
|
var/datum/disease/F = new /datum/disease/rhumba_beat
|
|
var/list/data = list("virus"= F)
|
|
R.add_reagent("blood", 20, data)
|
|
*/
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/brainrot
|
|
name = "Brainrot culture bottle"
|
|
desc = "A small bottle. Contains Cryptococcus Cosmosis culture in synthblood medium."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "bottle3"
|
|
New()
|
|
..()
|
|
var/datum/disease/F = new /datum/disease/brainrot(0)
|
|
var/list/data = list("virus"= F)
|
|
reagents.add_reagent("blood", 20, data)
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/magnitis
|
|
name = "Magnitis culture bottle"
|
|
desc = "A small bottle. Contains a small dosage of Fukkos Miracos."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "bottle3"
|
|
New()
|
|
..()
|
|
var/datum/disease/F = new /datum/disease/magnitis(0)
|
|
var/list/data = list("virus"= F)
|
|
reagents.add_reagent("blood", 20, data)
|
|
|
|
|
|
/obj/item/weapon/reagent_containers/glass/bottle/wizarditis
|
|
name = "Wizarditis culture bottle"
|
|
desc = "A small bottle. Contains a sample of Rincewindus Vulgaris."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "bottle3"
|
|
New()
|
|
..()
|
|
var/datum/disease/F = new /datum/disease/wizarditis(0)
|
|
var/list/data = list("virus"= F)
|
|
reagents.add_reagent("blood", 20, data)
|
|
|
|
|
|
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
|
|
name = "beaker"
|
|
desc = "A beaker. Can hold up to 30 units."
|
|
icon = 'chemical.dmi'
|
|
icon_state = "beaker0"
|
|
item_state = "beaker"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("cryoxadone", 30)
|
|
|
|
|
|
//Syringes
|
|
/obj/item/weapon/reagent_containers/syringe/robot
|
|
name = "Syringe (mixed)"
|
|
desc = "Contains inaprovaline & anti-toxins."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("inaprovaline", 7)
|
|
reagents.add_reagent("anti_toxin", 8)
|
|
mode = "i"
|
|
update_icon()
|
|
|
|
/obj/item/weapon/reagent_containers/syringe/inaprovaline
|
|
name = "Syringe (inaprovaline)"
|
|
desc = "Contains inaprovaline - used to stabilize patients."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("inaprovaline", 15)
|
|
update_icon()
|
|
|
|
/obj/item/weapon/reagent_containers/syringe/antitoxin
|
|
name = "Syringe (anti-toxin)"
|
|
desc = "Contains anti-toxins."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("anti_toxin", 15)
|
|
update_icon()
|
|
|
|
/obj/item/weapon/reagent_containers/syringe/antiviral
|
|
name = "Syringe (spaceacillin)"
|
|
desc = "Contains antiviral agents."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("spaceacillin", 15)
|
|
update_icon()
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
////////////////////////////////////////////Snacks
|
|
//////////////////////////////////////////////////
|
|
//Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created
|
|
// already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten.
|
|
|
|
//Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units Generally speaking, you don't want to go over 40
|
|
// total for the item because you want to leave space for extra condiments. If you want effects besides healing, add a reagent for
|
|
// it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use Tricordrazine). On use
|
|
// effects (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way).
|
|
|
|
//The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to
|
|
// 2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a
|
|
// bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all
|
|
// the bites. No more contained reagents = no more bites.
|
|
|
|
//Here is an example of the new formatting for anyone who wants to add more food items.
|
|
///obj/item/weapon/reagent_containers/food/snacks/xenoburger //Identification path for the object.
|
|
// name = "Xenoburger" //Name that displays in the UI.
|
|
// desc = "Smells caustic. Tastes like heresy." //Duh
|
|
// icon_state = "xburger" //Refers to an icon in food.dmi
|
|
// New() //Don't mess with this.
|
|
// ..() //Same here.
|
|
// reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste
|
|
// reagents.add_reagent("nutriment", 2) // this line of code for all the contents.
|
|
// bitesize = 3 //This is the amount each bite consumes.
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/candy
|
|
name = "candy"
|
|
desc = "Man, that shit looks good. I bet it's got nougat. Fuck."
|
|
icon_state = "candy"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
|
|
name = "candy corn"
|
|
desc = "It's a handful of candy corn. Can be stored in a detective's hat."
|
|
icon_state = "candy_corn"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 4)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/chips
|
|
name = "chips"
|
|
desc = "Commander Riker's What-The-Crisps"
|
|
icon_state = "chips"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/donut
|
|
name = "donut"
|
|
desc = "Goes great with Robust Coffee."
|
|
icon_state = "donut1"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
reagents.add_reagent("sprinkles", 1)
|
|
if(prob(30))
|
|
src.icon_state = "donut2"
|
|
src.name = "frosted donut"
|
|
src.bitesize = 2
|
|
reagents.add_reagent("nutriment", 2)
|
|
reagents.add_reagent("sprinkles", 1)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/egg
|
|
name = "egg"
|
|
desc = "An egg!"
|
|
icon_state = "egg"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 1)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/flour
|
|
name = "flour"
|
|
desc = "Some flour"
|
|
icon_state = "flour"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 1)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/humanmeat
|
|
name = "-meat"
|
|
desc = "A slab of meat"
|
|
icon_state = "meat"
|
|
var/subjectname = ""
|
|
var/subjectjob = null
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/brainburger
|
|
name = "brainburger"
|
|
desc = "A strange looking burger. It looks almost sentient."
|
|
icon_state = "brainburger"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/faggot
|
|
name = "Faggot"
|
|
desc = "A great meal all round. Not a cord of wood."
|
|
icon_state = "faggot"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 2)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/donkpocket
|
|
name = "Donk-pocket"
|
|
desc = "The food of choice for the seasoned traitor."
|
|
icon_state = "donkpocket"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 1)
|
|
var/warm = 0
|
|
proc/cooltime() //Not working, derp?
|
|
if (src.warm)
|
|
spawn( 4200 )
|
|
src.warm = 0
|
|
src.reagents.del_reagent("tricordrazine")
|
|
src.name = "donk-pocket"
|
|
return
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/humanburger
|
|
name = "-burger"
|
|
var/hname = ""
|
|
var/job = null
|
|
desc = "A bloody burger."
|
|
icon_state = "hburger"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger
|
|
name = "burger"
|
|
desc = "The cornerstone of every nutritious breakfast."
|
|
icon_state = "hburger"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/omelette
|
|
name = "Omelette Du Fromage"
|
|
desc = "That's all you can say!"
|
|
icon_state = "omelette"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 10)
|
|
bitesize = 1
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(istype(W,/obj/item/weapon/kitchen/utensil/fork))
|
|
W.icon = 'kitchen.dmi'
|
|
W.icon_state = "forkloaded"
|
|
viewers(3,user) << "[user] takes a piece of omelette with his fork!"
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/omeletteforkload
|
|
name = "Omelette Du Fromage"
|
|
desc = "That's all you can say!"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 1)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/muffin
|
|
name = "Muffin"
|
|
desc = "A delicious and spongy little cake"
|
|
icon_state = "muffin"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/roburger
|
|
name = "roburger"
|
|
desc = "The lettuce is the only organic component. Beep."
|
|
icon_state = "roburger"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 2)
|
|
reagents.add_reagent("nanites", 10)
|
|
bitesize = 3
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/xenoburger
|
|
name = "xenoburger"
|
|
desc = "Smells caustic. Tastes like heresy."
|
|
icon_state = "xburger"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("xenomicrobes", 10)
|
|
reagents.add_reagent("nutriment", 2)
|
|
bitesize = 3
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/monkeymeat
|
|
name = "meat"
|
|
desc = "A slab of meat"
|
|
icon_state = "meat"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/carpmeat
|
|
name = "carp fillet"
|
|
desc = "A fillet of spess carp meat"
|
|
icon_state = "fishfillet"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
reagents.add_reagent("carpotoxin", 3)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/xenomeat
|
|
name = "meat"
|
|
desc = "A slab of meat"
|
|
icon_state = "xenomeat"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/pie
|
|
name = "custard pie"
|
|
desc = "It smells delicious. You just want to plant your face in it."
|
|
icon_state = "pie"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/waffles
|
|
name = "waffles"
|
|
desc = "Mmm, waffles"
|
|
icon_state = "waffles"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/eggplantparm
|
|
name = "Eggplant Parmigiana"
|
|
desc = "The only good recipe for eggplant."
|
|
icon_state = "eggplantparm"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/jellydonut
|
|
name = "Jelly Donut"
|
|
desc = "Oh so gooey on the inside."
|
|
icon_state = "donut1" //Placeholder until I stop being lazy. ie. Never. -- Darem
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
reagents.add_reagent("sprinkles", 3)
|
|
bitesize = 2
|
|
if(prob(30))
|
|
src.icon_state = "donut2"
|
|
src.name = "Frosted Jelly Donut"
|
|
reagents.add_reagent("nutriment", 3)
|
|
reagents.add_reagent("sprinkles", 3)
|
|
bitesize = 4
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/soylentgreen
|
|
name = "Soylent Green"
|
|
desc = "Not made of people. Honest." //Totally people.
|
|
icon_state = "soylent"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 5)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/soylenviridians
|
|
name = "Soylen Virdians"
|
|
desc = "Not made of people. Honest." //Actually honest for once.
|
|
icon_state = "soylent"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 5)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/carrotcake
|
|
name = "Carrot Cake"
|
|
desc = "A favorite desert of a certain wascally wabbit. Also not a lie."
|
|
icon_state = "carrotcake"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/cheesecake
|
|
name = "Cheese Cake"
|
|
desc = "DANGEROUSLY cheesy."
|
|
icon_state = "cheesecake"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/plaincake
|
|
name = "Vanilla Cake"
|
|
desc = "A plain cake, not a lie."
|
|
icon_state = "plaincake"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 4)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/humeatpie
|
|
name = "-pie"
|
|
var/hname = ""
|
|
var/job = null
|
|
icon_state = "pie" //placeholder
|
|
desc = "A delicious meatpie."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 6)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/momeatpie
|
|
name = "Meat-pie"
|
|
icon_state = "pie"
|
|
desc = "A delicious meatpie."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 6)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/xemeatpie
|
|
name = "Xeno-pie"
|
|
icon_state = "pie" //placeholder
|
|
desc = "A delicious meatpie. Probably heretical."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 2)
|
|
bitesize = 4
|
|
reagents.add_reagent("xenomicrobes", 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/wingfangchu
|
|
name = "Wing Fang Chu"
|
|
desc = "A savory dish of alien wing wang in soy."
|
|
icon_state = "wingfangchu"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 1)
|
|
reagents.add_reagent("xenomicrobes", 5)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/chaosdonut
|
|
name = "Chaos Donut"
|
|
desc = "Like life, it never quite tastes the same."
|
|
icon_state = "donut1"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
bitesize = 2
|
|
if(prob(30))
|
|
src.icon_state = "donut2"
|
|
src.name = "Frosted Chaos Donut"
|
|
var/temp_chaos = pick(1, 2, 3)
|
|
if(temp_chaos == 1)
|
|
reagents.add_reagent("capsaicin", 3)
|
|
else if(temp_chaos == 2)
|
|
reagents.add_reagent("frostoil", 3)
|
|
else if(temp_chaos == 3)
|
|
reagents.add_reagent("nutriment", 3)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/humankabob
|
|
name = "-kabob"
|
|
var/hname = ""
|
|
var/job = null
|
|
icon_state = "kabob"
|
|
desc = "A delicious kabob"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 6)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/monkeykabob
|
|
name = "Meat-kabob"
|
|
icon_state = "kabob"
|
|
desc = "A delicious kabob"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 6)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/sosjerky
|
|
name = "Scaredy's Private Reserve Beef Jerky"
|
|
icon_state = "sosjerky"
|
|
desc = "Beef jerky made from the finest space cows."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 4)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/no_raisin
|
|
name = "4no Raisins"
|
|
icon_state = "4no_raisins"
|
|
desc = "Best raisins in the universe. Not sure why."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 6)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie
|
|
name = "Space Twinkie"
|
|
icon_state = "space_twinkie"
|
|
desc = "Guaranteed to survive longer then you will."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("sugar", 4)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/tofu
|
|
name = "Tofu"
|
|
icon_state = "tofu"
|
|
desc = "We all love tofu."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 6)
|
|
bitesize = 3
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers
|
|
name = "Cheesie Honkers"
|
|
icon_state = "cheesie_honkers"
|
|
desc = "Bite sized cheesie snacks that will honk all over your mouth"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 4)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/syndicake
|
|
name = "Syndi-Cakes"
|
|
icon_state = "syndi_cakes"
|
|
desc = "An extremely moist snack cake that tastes just as good after being nuked."
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 4)
|
|
reagents.add_reagent("syndicream", 2)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato
|
|
name = "Loaded Baked Potato"
|
|
desc = "Totally baked."
|
|
icon_state = "loadedbakedpotato"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 6)
|
|
bitesize = 3
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/fries
|
|
name = "Space Fries"
|
|
desc = "AKA: French Fries, Freedom Fries, etc"
|
|
icon_state = "fries"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 4)
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/cheesyfries
|
|
name = "Cheesy Fries"
|
|
desc = "Fries. Covered in cheese. Duh."
|
|
icon_state = "cheesyfries"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 6)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/clownburger
|
|
name = "Clown Burger"
|
|
desc = "This tastes funny..."
|
|
icon_state = "clownburger"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 4)
|
|
var/datum/disease/F = new /datum/disease/pierrot_throat(0)
|
|
var/list/data = list("virus"= F)
|
|
reagents.add_reagent("blood", 4, data)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/mimeburger
|
|
name = "Mime Burger"
|
|
desc = "It's taste defies language."
|
|
icon_state = "mimeburger"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/cubancarp
|
|
name = "Cuban Carp"
|
|
desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!"
|
|
icon_state = "cubancarp"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 3)
|
|
reagents.add_reagent("carpotoxin", 3)
|
|
reagents.add_reagent("capsaicin", 3)
|
|
bitesize = 2
|
|
|
|
/////////////////////////////////////////////////Sliceable////////////////////////////////////////
|
|
// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/meatbread
|
|
name = "meatbread loaf"
|
|
desc = "The culinary base of every self-respecting eloquen/tg/entleman."
|
|
icon_state = "meatbread"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 40)
|
|
bitesize = 2
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
|
|
W.visible_message(" \red <B>You slice the meatbread! </B>", 1)
|
|
for(var/i=0,i<5,i++)
|
|
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
|
|
del(src)
|
|
return
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
|
|
name = "meatbread slice"
|
|
desc = "A slice of delicious meatbread."
|
|
icon_state = "meatbreadslice"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/xenomeatbread
|
|
name = "xenomeatbread loaf"
|
|
desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical."
|
|
icon_state = "xenomeatbread"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 5)
|
|
reagents.add_reagent("xenomicrobes", 35)
|
|
bitesize = 2
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
|
|
W.visible_message(" \red <B>You slice the xenomeatbread! </B>", 1)
|
|
for(var/i=0,i<5,i++)
|
|
new /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice (src.loc)
|
|
del(src)
|
|
return
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
|
|
name = "xenomeatbread slice"
|
|
desc = "A slice of delicious meatbread. Extra Heretical."
|
|
icon_state = "xenobreadslice"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 2)
|
|
reagents.add_reagent("xenomicrobes", 6)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/tofubread
|
|
name = "Tofubread"
|
|
icon_state = "Like meatbread but for vegans. Not guaranteed to give superpowers."
|
|
icon_state = "tofubread"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 40)
|
|
bitesize = 2
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
|
|
W.visible_message(" \red <B>You slice the tofubread! </B>", 1)
|
|
for(var/i=0,i<5,i++)
|
|
new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc)
|
|
del(src)
|
|
return
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
|
|
name = "Tofubread slice"
|
|
desc = "A slice of delicious tofubread."
|
|
icon_state = "tofubreadslice"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 8)
|
|
bitesize = 2
|
|
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/cheesewheel
|
|
name = "Cheese wheel"
|
|
desc = "A big wheel of delcious Cheddar."
|
|
icon_state = "cheesewheel"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 20)
|
|
bitesize = 2
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(istype(W, /obj/item/weapon/kitchenknife /* || /obj/item/weapon/scalpel*/))
|
|
W.visible_message(" \red <B> You slice the cheese! </B>", 1)
|
|
for(var/i=0,i<5,i++)
|
|
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
|
|
del(src)
|
|
return
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge
|
|
name = "Cheese wedge"
|
|
desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far."
|
|
icon_state = "cheesewedge"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("nutriment", 4)
|
|
bitesize = 2
|
|
|
|
/obj/item/weapon/reagent_containers/food/snacks/banana
|
|
name = "Banana"
|
|
desc = "A banana."
|
|
icon = 'items.dmi'
|
|
icon_state = "banana"
|
|
item_state = "banana"
|
|
On_Consume()
|
|
var/mob/M = usr
|
|
var/obj/item/weapon/bananapeel/W = new /obj/item/weapon/bananapeel( M )
|
|
M << "\blue You peel the banana."
|
|
M.put_in_hand(W)
|
|
W.add_fingerprint(M)
|
|
New()
|
|
..()
|
|
reagents.add_reagent("banana", 5)
|
|
bitesize = 5
|
|
src.pixel_x = rand(-5.0, 5)
|
|
src.pixel_y = rand(-5.0, 5)
|
|
|
|
///////////////////////////////////////////////Condiments
|
|
//Notes by Darem: The condiments food-subtype is for stuff you don't actually eat but you use to modify existing food. They all
|
|
// leave empty containers when used up and can be filled/re-filled with other items. Formatting for first section is identical
|
|
// to mixed-drinks code. If you want an object that starts pre-loaded, you need to make it in addition to the other code.
|
|
|
|
/obj/item/weapon/reagent_containers/food/condiment
|
|
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(50)
|
|
reagents = R
|
|
R.my_atom = src
|
|
..()
|
|
|
|
on_reagent_change()
|
|
if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall")
|
|
return
|
|
if(reagents.reagent_list.len > 0)
|
|
switch(reagents.get_master_reagent_id())
|
|
if("ketchup")
|
|
name = "Ketchup"
|
|
desc = "You feel more American already."
|
|
icon_state = "ketchup"
|
|
if("capsaicin")
|
|
name = "Hotsauce"
|
|
desc = "You can almost TASTE the stomach ulcers now!"
|
|
icon_state = "hotsauce"
|
|
if("enzyme")
|
|
name = "Universal Enzyme"
|
|
desc = "Used in cooking various dishes."
|
|
icon_state = "enzyme"
|
|
if("soysauce")
|
|
name = "Soy Sauce"
|
|
desc = "A salty soy-based flavoring."
|
|
icon_state = "soysauce"
|
|
if("frostoil")
|
|
name = "Coldsauce"
|
|
desc = "Leaves the tongue numb in it's passage."
|
|
icon_state = "coldsauce"
|
|
if("sodiumchloride")
|
|
name = "Salt Shaker"
|
|
desc = "Salt. From space oceans, presumably."
|
|
icon_state = "saltshaker"
|
|
if("blackpepper")
|
|
name = "Pepper Mill"
|
|
desc = "Often used to flavor food or make people sneeze."
|
|
icon_state = "peppermillsmall"
|
|
if("cornoil")
|
|
name = "Corn Oil"
|
|
desc = "A delicious oil used in cooking. Made from corn."
|
|
icon_state = "oliveoil"
|
|
else
|
|
name = "Misc Condiment Bottle"
|
|
if (reagents.reagent_list.len==1)
|
|
desc = "Looks like it is [reagents.get_master_reagent_name()], but you are not sure."
|
|
else
|
|
desc = "A mixture of various condiments. [reagents.get_master_reagent_name()] is one of them."
|
|
icon_state = "mixedcondiments"
|
|
else
|
|
icon_state = "emptycondiment"
|
|
name = "Condiment Bottle"
|
|
desc = "An empty condiment bottle."
|
|
return
|
|
|
|
/obj/item/weapon/reagent_containers/food/condiment/enzyme
|
|
name = "Universal Enzyme"
|
|
desc = "Used in cooking various dishes."
|
|
icon_state = "enzyme"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("enzyme", 50)
|
|
|
|
/obj/item/weapon/reagent_containers/food/condiment/saltshaker //Seperate from above since it's a small shaker rather then
|
|
name = "Salt Shaker" // a large one.
|
|
desc = "Salt. From space oceans, presumably."
|
|
icon_state = "saltshakersmall"
|
|
New()
|
|
..()
|
|
del(reagents)
|
|
var/datum/reagents/R = new/datum/reagents(20)
|
|
reagents = R
|
|
R.my_atom = src
|
|
reagents.add_reagent("sodiumchloride", 20)
|
|
|
|
/obj/item/weapon/reagent_containers/food/condiment/peppermill
|
|
name = "Pepper Mill"
|
|
desc = "Often used to flavor food or make people sneeze."
|
|
icon_state = "peppermillsmall"
|
|
New()
|
|
..()
|
|
del(reagents)
|
|
var/datum/reagents/R = new/datum/reagents(20)
|
|
reagents = R
|
|
R.my_atom = src
|
|
reagents.add_reagent("blackpepper", 20)
|
|
|
|
|
|
///////////////////////////////////////////////Drinks
|
|
//Notes by Darem: Drinks are simply containers that start preloaded. Unlike condiments, the contents can be ingested directly
|
|
// rather then having to add it to something else first. They should only contain liquids. They have a default container size of 50.
|
|
// Formatting is the same as food.
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/milk
|
|
name = "Space Milk"
|
|
desc = "It's milk. White and nutritious goodness!"
|
|
icon_state = "milk"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("milk", 50)
|
|
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!"
|
|
icon_state = "soymilk"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("soymilk", 50)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/coffee
|
|
name = "Robust Coffee"
|
|
desc = "Careful, the beverage you're about to enjoy is extremely hot."
|
|
icon_state = "coffee"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("coffee", 30)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/cola
|
|
name = "Space Cola"
|
|
desc = "Cola. in space."
|
|
icon_state = "cola"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("cola", 30)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/beer
|
|
name = "Space Beer"
|
|
desc = "Beer. In space."
|
|
icon_state = "beer"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("beer", 30)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/ale
|
|
name = "Magm-Ale"
|
|
desc = "A true dorf's drink of choice."
|
|
icon_state = "alebottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("ale", 30)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/space_mountain_wind
|
|
name = "Space Mountain Wind"
|
|
desc = "Blows right through you like a space wind."
|
|
icon_state = "space_mountain_wind"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("spacemountainwind", 30)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/thirteenloko
|
|
name = "Thirteen Loko"
|
|
desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkeness, or even death. Please Drink Responsably."
|
|
icon_state = "thirteen_loko"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("thirteenloko", 30)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/dr_gibb
|
|
name = "Dr. Gibb"
|
|
desc = "A delicious mixture of 42 different flavors."
|
|
icon_state = "dr_gibb"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("dr_gibb", 30)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/starkist
|
|
name = "Star-kist"
|
|
desc = "The taste of a star in liquid form."
|
|
icon_state = "starkist"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("cola", 15)
|
|
reagents.add_reagent("orangejuice", 15)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/space_up
|
|
name = "Space-Up"
|
|
desc = "Tastes like a hull breach in your mouth."
|
|
icon_state = "space-up"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("space_up", 30)
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/sillycup
|
|
name = "Paper Cup"
|
|
desc = "A paper water cup."
|
|
icon_state = "water_cup_e"
|
|
New()
|
|
src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT
|
|
var/datum/reagents/R = new/datum/reagents(10)
|
|
reagents = R
|
|
R.my_atom = src
|
|
src.pixel_x = rand(-10.0, 10)
|
|
src.pixel_y = rand(-10.0, 10)
|
|
on_reagent_change()
|
|
if(reagents.total_volume)
|
|
icon_state = "water_cup"
|
|
else
|
|
icon_state = "water_cup_e"
|
|
|
|
///////////////////////////////////////////////Alchohol bottles! -Agouri //////////////////////////
|
|
//Notes by Darem: Functionally identical to regular drinks. The only difference is that the default bottle size is 100.
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle
|
|
amount_per_transfer_from_this = 10
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(100)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/gin
|
|
name = "Griffeater Gin"
|
|
desc = "A bottle of high quality gin, produced in the New London Space Station."
|
|
icon_state = "ginbottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("gin", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey
|
|
name = "Uncle Git's Special Reserve"
|
|
desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES."
|
|
icon_state = "whiskeybottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("whiskey", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka
|
|
name = "Tunguska Triple Distilled"
|
|
desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide."
|
|
icon_state = "vodkabottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("vodka", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla
|
|
name = "Caccavo Guaranteed Quality Tequilla"
|
|
desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!"
|
|
icon_state = "tequillabottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("tequilla", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/rum
|
|
name = "Captain Pete's Cuban Spiced Rum"
|
|
desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle."
|
|
icon_state = "rumbottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("rum", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth
|
|
name = "Goldeneye Vermouth"
|
|
desc = "Sweet, sweet dryness~"
|
|
icon_state = "vermouthbottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("vermouth", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua
|
|
name = "Robert Robust's Coffee Liqueur"
|
|
desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK"
|
|
icon_state = "kahluabottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("kahlua", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac
|
|
name = "Chateau De Baton Premium Cognac"
|
|
desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time."
|
|
icon_state = "cognacbottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("cognac", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/wine
|
|
name = "Doublebeard Bearded Special Wine"
|
|
desc = "A faint aura of unease and asspainery surrounds the bottle."
|
|
icon_state = "winebottle"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("wine", 100)
|
|
|
|
//////////////////////////JUICES AND STUFF ///////////////////////
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice
|
|
name = "Orange Juice"
|
|
desc = "Full of vitamins and deliciousness!"
|
|
icon_state = "orangejuice"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("orangejuice", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/cream
|
|
name = "Milk Cream"
|
|
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
|
|
icon_state = "cream"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("cream", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice
|
|
name = "Tomato Juice"
|
|
desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness."
|
|
icon_state = "tomatojuice"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("tomatojuice", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice
|
|
name = "Lime Juice"
|
|
desc = "Sweet-sour goodness."
|
|
icon_state = "limejuice"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("limejuice", 100)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/tonic
|
|
name = "T-Borg's Tonic Water"
|
|
desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away."
|
|
icon_state = "tonic"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("tonic", 50)
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/sodawater
|
|
name = "Soda Water"
|
|
desc = "A can of soda water. Why not make a scotch and soda?"
|
|
icon_state = "sodawater"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("sodawater", 50)
|
|
|
|
|
|
//Pills
|
|
/obj/item/weapon/reagent_containers/pill/antitox
|
|
name = "Anti-toxins pill"
|
|
desc = "Neutralizes many common toxins."
|
|
icon_state = "pill17"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("anti_toxin", 50)
|
|
|
|
/obj/item/weapon/reagent_containers/pill/tox
|
|
name = "Toxins pill"
|
|
desc = "Highly toxic."
|
|
icon_state = "pill5"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("toxin", 50)
|
|
|
|
/obj/item/weapon/reagent_containers/pill/stox
|
|
name = "Sleeping pill"
|
|
desc = "Commonly used to treat insomnia."
|
|
icon_state = "pill8"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("stoxin", 30)
|
|
|
|
/obj/item/weapon/reagent_containers/pill/kelotane
|
|
name = "Kelotane pill"
|
|
desc = "Used to treat burns."
|
|
icon_state = "pill11"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("kelotane", 30)
|
|
|
|
/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/dexalin
|
|
name = "Dexalin pill"
|
|
desc = "Used to treat oxygen deprivation."
|
|
icon_state = "pill16"
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("dexalin", 30)
|
|
|
|
//Dispensers
|
|
/obj/reagent_dispensers/watertank
|
|
name = "watertank"
|
|
desc = "A watertank"
|
|
icon = 'objects.dmi'
|
|
icon_state = "watertank"
|
|
amount_per_transfer_from_this = 10
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("water",1000)
|
|
|
|
/obj/reagent_dispensers/fueltank
|
|
name = "fueltank"
|
|
desc = "A fueltank"
|
|
icon = 'objects.dmi'
|
|
icon_state = "weldtank"
|
|
amount_per_transfer_from_this = 10
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("fuel",1000)
|
|
|
|
/obj/reagent_dispensers/fueltank/blob_act()
|
|
explosion(src.loc,0,1,5,7,10)
|
|
if(src)
|
|
del(src)
|
|
|
|
/obj/reagent_dispensers/fueltank/ex_act()
|
|
explosion(src.loc,-1,0,2)
|
|
if(src)
|
|
del(src)
|
|
|
|
/obj/reagent_dispensers/water_cooler
|
|
name = "Water-Cooler"
|
|
desc = "A machine that dispenses water to drink"
|
|
amount_per_transfer_from_this = 5
|
|
icon = 'vending.dmi'
|
|
icon_state = "water_cooler"
|
|
possible_transfer_amounts = null
|
|
New()
|
|
..()
|
|
anchored = 1
|
|
reagents.add_reagent("water",500)
|
|
|
|
|
|
/obj/reagent_dispensers/beerkeg
|
|
name = "beer keg"
|
|
desc = "A beer keg"
|
|
icon = 'objects.dmi'
|
|
icon_state = "beertankTEMP"
|
|
amount_per_transfer_from_this = 10
|
|
|
|
New()
|
|
..()
|
|
reagents.add_reagent("beer",1000)
|
|
|
|
/obj/reagent_dispensers/beerkeg/blob_act()
|
|
explosion(src.loc,0,3,5,7,10)
|
|
del(src)
|
|
|
|
|
|
//////////////////////////drinkingglass and shaker//
|
|
//Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink
|
|
// itself), in Chemistry-Recipes.dm (for the reaction that changes the components into the drink), and here (for the drinking glass
|
|
// icon states.
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/shaker
|
|
name = "Shaker"
|
|
desc = "A metal shaker to mix drinks in."
|
|
icon_state = "shaker"
|
|
amount_per_transfer_from_this = 10
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(100)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/flask
|
|
name = "Captain's Flask"
|
|
desc = "A metal flask belonging to the captain"
|
|
icon_state = "flask"
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(30)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass
|
|
name = "glass"
|
|
desc = "Your standard drinking glass."
|
|
icon_state = "glass_empty"
|
|
amount_per_transfer_from_this = 10
|
|
New()
|
|
var/datum/reagents/R = new/datum/reagents(50)
|
|
reagents = R
|
|
R.my_atom = src
|
|
|
|
on_reagent_change()
|
|
/* if(reagents.reagent_list.len > 1 )
|
|
icon_state = "glass_brown"
|
|
name = "Glass of Hooch"
|
|
desc = "Two or more drinks, mixed together."
|
|
else if(reagents.reagent_list.len == 1)
|
|
for(var/datum/reagent/R in reagents.reagent_list)
|
|
switch(R.id)*/
|
|
if (reagents.reagent_list.len > 0)
|
|
//mrid = R.get_master_reagent_id()
|
|
switch(reagents.get_master_reagent_id())
|
|
if("beer")
|
|
icon_state = "beerglass"
|
|
name = "Beer glass"
|
|
desc = "A freezing pint of beer"
|
|
if("beer2")
|
|
icon_state = "beerglass"
|
|
name = "Beer glass"
|
|
desc = "A freezing pint of beer"
|
|
if("ale")
|
|
icon_state = "aleglass"
|
|
name = "Ale glass"
|
|
desc = "A freezing pint of delicious Ale"
|
|
if("milk")
|
|
icon_state = "glass_white"
|
|
name = "Glass of milk"
|
|
desc = "White and nutritious goodness!"
|
|
if("cream")
|
|
icon_state = "glass_white"
|
|
name = "Glass of cream"
|
|
desc = "Ewwww..."
|
|
if("cola")
|
|
icon_state = "glass_brown"
|
|
name = "Glass of Space Cola"
|
|
desc = "A glass of refreshing Space Cola"
|
|
if("orangejuice")
|
|
icon_state = "glass_orange"
|
|
name = "Glass of Orange juice"
|
|
desc = "Vitamins! Yay!"
|
|
if("tomatojuice")
|
|
icon_state = "glass_red"
|
|
name = "Glass of Tomato juice"
|
|
desc = "Are you sure this is tomato juice?"
|
|
if("limejuice")
|
|
icon_state = "glass_green"
|
|
name = "Glass of Lime juice"
|
|
desc = "A glass of sweet-sour lime juice."
|
|
if("whiskey")
|
|
icon_state = "whiskeyglass"
|
|
name = "Glass of whiskey"
|
|
desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy."
|
|
if("gin")
|
|
icon_state = "ginvodkaglass"
|
|
name = "Glass of gin"
|
|
desc = "A crystal clear glass of Griffeater gin."
|
|
if("vodka")
|
|
icon_state = "ginvodkaglass"
|
|
name = "Glass of vodka"
|
|
desc = "The glass contain wodka. Xynta."
|
|
if("wine")
|
|
icon_state = "wineglass"
|
|
name = "Glass of wine"
|
|
desc = "A very classy looking drink."
|
|
if("cognac")
|
|
icon_state = "cognacglass"
|
|
name = "Glass of cognac"
|
|
desc = "Damn, you feel like some kind of French aristocrat just by holding this."
|
|
if ("kahlua")
|
|
icon_state = "kahluaglass"
|
|
name = "Glass of RR coffee Liquor"
|
|
desc = "DAMN, THIS THING LOOKS ROBUST"
|
|
if("vermouth")
|
|
icon_state = "vermouthglass"
|
|
name = "Glass of Vermouth"
|
|
desc = "You wonder why you're even drinking this straight."
|
|
if("tequilla")
|
|
icon_state = "tequillaglass"
|
|
name = "Glass of Tequilla"
|
|
desc = "Now all that's missing is the weird colored shades!"
|
|
if("rum")
|
|
icon_state = "rumglass"
|
|
name = "Glass of Rum"
|
|
desc = "Now you want to Pray for a pirate suit, don't you?"
|
|
if("gintonic")
|
|
icon_state = "gintonicglass"
|
|
name = "Gin and Tonic"
|
|
desc = "A mild but still great cocktail. Drink up, like a true Englishman."
|
|
if("whiskeycola")
|
|
icon_state = "whiskeycolaglass"
|
|
name = "Whiskey Cola"
|
|
desc = "An innocent-looking mixture of cola and Whiskey. Delicious."
|
|
if("whiterussian")
|
|
icon_state = "whiterussianglass"
|
|
name = "White Russian"
|
|
desc = "A very nice looking drink. But that's just, like, your opinion, man."
|
|
if("screwdrivercocktail")
|
|
icon_state = "screwdriverglass"
|
|
name = "Screwdriver"
|
|
desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer."
|
|
if("bloodymary")
|
|
icon_state = "bloodymaryglass"
|
|
name = "Bloody Mary"
|
|
desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder."
|
|
if("martini")
|
|
icon_state = "martiniglass"
|
|
name = "Classic Martini"
|
|
desc = "Damn, the barman even stirred it, not shook it."
|
|
if("vodkamartini")
|
|
icon_state = "martiniglass"
|
|
name = "Vodka martini"
|
|
desc ="A bastardisation of the classic martini. Still great."
|
|
if("gargleblaster")
|
|
icon_state = "gargleblasterglass"
|
|
name = "Pan-Galactic Gargle Blaster"
|
|
desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy."
|
|
if("bravebull")
|
|
icon_state = "bravebullglass"
|
|
name = "Brave Bull"
|
|
desc = "Tequilla and Coffee liquor, brought together in a mouthwatering mixture. Drink up."
|
|
if("tequillasunrise")
|
|
icon_state = "tequillasunriseglass"
|
|
name = "Tequilla Sunrise"
|
|
desc = "Oh great, now you feel nostalgic about sunrises back on Terra..."
|
|
if("toxinsspecial")
|
|
icon_state = "toxinsspecialglass"
|
|
name = "Toxins Special"
|
|
desc = "Whoah, this thing is on FIRE"
|
|
if("beepskysmash")
|
|
icon_state = "beepskysmashglass"
|
|
name = "Beepsky Smash"
|
|
desc = "Heavy, hot and strong. Just like the Iron fist of the LAW."
|
|
if("doctorsdelight")
|
|
icon_state = "doctorsdelightglass"
|
|
name = "Doctor's Delight"
|
|
desc = "A healthy mixture of juices, guaranteed to keep you healthy until the next toolboxing takes place."
|
|
if("manlydorf")
|
|
icon_state = "manlydorfglass"
|
|
name = "The Manly Dorf"
|
|
desc = "A manly concotion made from Ale and Beer. Intended for true men only."
|
|
if("irishcream")
|
|
icon_state = "irishcreamglass"
|
|
name = "Irish Cream"
|
|
desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?"
|
|
if("cubalibre")
|
|
icon_state = "cubalibreglass"
|
|
name = "Cuba Libre"
|
|
desc = "A classic mix of rum and cola."
|
|
if("irishcream")
|
|
icon_state = "irishcreamglass"
|
|
name = "Irish Cream"
|
|
desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?"
|
|
if("cubalibre")
|
|
icon_state = "cubalibreglass"
|
|
name = "Cuba Libre"
|
|
desc = "A classic mix of rum and cola."
|
|
if("b52")
|
|
icon_state = "b52glass"
|
|
name = "B-52"
|
|
desc = "Kahlua, Irish Cream, and congac. You will get bombed."
|
|
if("longislandicedtea")
|
|
icon_state = "longislandicedteaglass"
|
|
name = "Long Island Iced Tea"
|
|
desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
|
|
if("margarita")
|
|
icon_state = "margaritaglass"
|
|
name = "Margarita"
|
|
desc = "On the rocks with salt on the rim. Arriba~!"
|
|
if("blackrussian")
|
|
icon_state = "blackrussianglass"
|
|
name = "Black Russian"
|
|
desc = "For the lactose-intolerant. Still as classy as a White Russian."
|
|
if("vodkatonic")
|
|
icon_state = "vodkatonicglass"
|
|
name = "Vodka and Tonic"
|
|
desc = "For when a gin and tonic isn't russian enough."
|
|
if("manhattan")
|
|
icon_state = "manhattanglass"
|
|
name = "Manhattan"
|
|
desc = "The Detective's undercover drink of choice. He never could stomach gin..."
|
|
if("ginfizz")
|
|
icon_state = "ginfizzglass"
|
|
name = "Gin Fizz"
|
|
desc = "Refreshingly lemony, deliciously dry."
|
|
if("irishcoffee")
|
|
icon_state = "irishcoffeeglass"
|
|
name = "Irish Coffee"
|
|
desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning."
|
|
if("hooch")
|
|
icon_state = "glass_brown2"
|
|
name = "Hooch"
|
|
desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
|
|
if("whiskeysoda")
|
|
icon_state = "whiskeysodaglass2"
|
|
name = "Whiskey Soda"
|
|
desc = "Ultimate refreshment."
|
|
if("tonic")
|
|
icon_state = "glass_clear"
|
|
name = "Glass of Tonic Water"
|
|
desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away."
|
|
if("sodawater")
|
|
icon_state = "glass_clear"
|
|
name = "Glass of Soda Water"
|
|
desc = "Soda water. Why not make a scotch and soda?"
|
|
if("water")
|
|
icon_state = "glass_clear"
|
|
name = "Glass of Water"
|
|
desc = "Are you really that boring?"
|
|
if("spacemountainwind")
|
|
icon_state = "Space_mountain_wind_glass"
|
|
name = "Glass of Space Mountain Wind"
|
|
desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind."
|
|
if("thirteenloko")
|
|
icon_state = "thirteen_loko_glass"
|
|
name = "Glass of Thirteen Loko"
|
|
desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass"
|
|
if("dr_gibb")
|
|
icon_state = "dr_gibb_glass"
|
|
name = "Glass of Dr. Gibb"
|
|
desc = "Dr. Gibb. Not as dangerous as the name might imply."
|
|
if("space_up")
|
|
icon_state = "space-up_glass"
|
|
name = "Glass of Space-up"
|
|
desc = "Space-up. It helps keep your cool."
|
|
if("moonshine")
|
|
icon_state = "glass_clear"
|
|
name = "Moonshine"
|
|
desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
|
|
if("soymilk")
|
|
icon_state = "glass_white"
|
|
name = "Glass of soy milk"
|
|
desc = "White and nutritious soy goodness!"
|
|
if("berryjuice")
|
|
icon_state = "berryjuice"
|
|
name = "Glass berry joice"
|
|
desc = "Berry juice. Or maybe its jam. Who cares?"
|
|
else
|
|
icon_state ="glass_brown"
|
|
name = "Glass of ..what?"
|
|
desc = "You can't really tell what this is."
|
|
else
|
|
icon_state = "glass_empty"
|
|
name = "Drinking glass"
|
|
desc = "Your standard drinking glass"
|
|
return
|
|
|
|
///jar
|
|
|
|
/obj/item/weapon/reagent_containers/food/drinks/jar
|
|
name = "empty jar"
|
|
desc = "A jar. You're not sure what it's supposed to hold."
|
|
icon_state = "jar"
|
|
item_state = "beaker"
|
|
New()
|
|
..()
|
|
reagents.add_reagent("metroid", 50)
|
|
|
|
on_reagent_change()
|
|
if (reagents.reagent_list.len > 0)
|
|
switch(reagents.get_master_reagent_id())
|
|
if("metroid")
|
|
icon_state = "jar_metroid"
|
|
name = "metroid jam"
|
|
desc = "A jar of metroid jam. Delicious!"
|
|
else
|
|
icon_state ="jar_what"
|
|
name = "jar of something"
|
|
desc = "You can't really tell what this is."
|
|
else
|
|
icon_state = "jar"
|
|
name = "empty jar"
|
|
desc = "A jar. You're not sure what it's supposed to hold."
|
|
return
|