From 1148bde3a64eaf0cc48595ea9dbc4938e5b09cdb Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Sat, 5 Mar 2016 08:03:39 +0000 Subject: [PATCH] eating refactor (#3733) + bugfixes Ok, messed up resolving the merge conflicts (first try), so doing a fresh pr. This turned out to be a good thing, as after I put the changes back I tested again, and found 2 bugs (not due to my code) Firstly, the organ refactor had introduced a bug when taking liver damage from being drunk. It wasn't getting the liver correctly, leaving it with null, and was then trying to damage it. The second was related to the amount you took in when drinking --- .../MetaStation/MetaStation.v41A.II.dmm | 2 +- _maps/map_files/cyberiad/cyberiad.dmm | 2 +- code/game/gamemodes/nuclear/nuclear.dm | 2 +- code/game/jobs/job/support.dm | 4 +- code/game/machinery/kitchen/smartfridge.dm | 4 +- code/game/machinery/vending.dm | 10 +- code/game/objects/items/contraband.dm | 46 ++-- code/game/objects/items/random_items.dm | 2 +- code/game/objects/items/weapons/kitchen.dm | 31 +-- .../objects/items/weapons/storage/bags.dm | 2 +- .../objects/items/weapons/storage/belt.dm | 16 +- .../objects/items/weapons/storage/firstaid.dm | 78 +++---- .../crates_lockers/closets/secure/medical.dm | 8 +- code/game/response_team.dm | 4 +- code/modules/clothing/suits/labcoat.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 78 ++++++- code/modules/mob/living/carbon/human/human.dm | 24 ++ code/modules/mob/living/carbon/slime/slime.dm | 8 +- code/modules/reagents/Chemistry-Machinery.dm | 6 +- code/modules/reagents/newchem/patch.dm | 14 +- .../reagents/drink/reagents_alcohol.dm | 2 +- .../reagents/reagent_containers/food.dm | 5 + .../reagent_containers/food/drinks.dm | 208 +++++++----------- .../reagent_containers/food/snacks.dm | 125 +++-------- .../reagents/reagent_containers/pill.dm | 138 ++++-------- 25 files changed, 381 insertions(+), 440 deletions(-) diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index de672ffcf45..473df8efa80 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -2946,7 +2946,7 @@ "beH" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/storage/tech) "beI" = (/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "Engineering"; name = "Engineering Lockdown"; pixel_x = -24; pixel_y = -5; req_access_txt = "10"},/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 5; req_access_txt = "24"},/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "beJ" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/engine/chiefs_office) -"beK" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/obj/item/weapon/reagent_containers/pill/patch/silver_sulf,/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/engine/chiefs_office) +"beK" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf,/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/engine/chiefs_office) "beL" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/clothing/glasses/sunglasses/big,/turf/simulated/floor/wood,/area/lawoffice) "beM" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/engine/chiefs_office) "beN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index a43e0d5aada..dc4e86aacf8 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -4110,7 +4110,7 @@ "bBb" = (/obj/structure/table,/obj/machinery/door/window/northright{name = "Medbay Lobby"; req_access_txt = "5"},/obj/item/device/radio/intercom/department/medbay,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/medical/reception) "bBc" = (/obj/structure/table,/obj/machinery/media/receiver/boombox,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/medical/reception) "bBd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/device/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/reception) -"bBe" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/structure/closet/secure_closet/medical_wall{name = "Pill Cabinet"; pixel_y = -32},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/weapon/reagent_containers/syringe/charcoal,/obj/item/weapon/reagent_containers/syringe/insulin,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine,/obj/item/weapon/reagent_containers/syringe,/obj/item/stack/medical/advanced/bruise_pack,/obj/item/stack/medical/advanced/ointment,/obj/item/weapon/reagent_containers/pill/patch/styptic,/obj/item/weapon/reagent_containers/pill/patch/styptic,/obj/item/weapon/reagent_containers/pill/patch/silver_sulf,/obj/item/weapon/reagent_containers/pill/patch/silver_sulf,/obj/item/weapon/storage/pill_bottle/painkillers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) +"bBe" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/structure/closet/secure_closet/medical_wall{name = "Pill Cabinet"; pixel_y = -32},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/weapon/reagent_containers/syringe/charcoal,/obj/item/weapon/reagent_containers/syringe/insulin,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine,/obj/item/weapon/reagent_containers/syringe,/obj/item/stack/medical/advanced/bruise_pack,/obj/item/stack/medical/advanced/ointment,/obj/item/weapon/reagent_containers/food/pill/patch/styptic,/obj/item/weapon/reagent_containers/food/pill/patch/styptic,/obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf,/obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf,/obj/item/weapon/storage/pill_bottle/painkillers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) "bBf" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/table,/obj/item/weapon/cane,/obj/item/weapon/cane{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cane{pixel_x = -6; pixel_y = 4},/obj/item/weapon/storage/box/rxglasses,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) "bBg" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_y = -10},/obj/item/weapon/clipboard,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) "bBh" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/bodybags,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/medical/morgue) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index af6961bae99..dff34374cb0 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -245,7 +245,7 @@ proc/issyndicate(mob/living/M as mob) if(synd_mob.backbag == 2) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(synd_mob), slot_back) if(synd_mob.backbag == 3) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(synd_mob), slot_back) if(synd_mob.backbag == 4) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(synd_mob), slot_back) - synd_mob.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/initropidril(synd_mob), slot_in_backpack) + synd_mob.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/pill/initropidril(synd_mob), slot_in_backpack) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(synd_mob), slot_belt) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(synd_mob.back), slot_in_backpack) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index ebe252a9c08..1378bdf7f69 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -199,12 +199,12 @@ H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) H.equip_or_collect(new /obj/item/weapon/crowbar(H), slot_l_hand) H.equip_or_collect(new /obj/item/weapon/storage/bag/ore(H), slot_l_store) - H.equip_or_collect(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_r_store) + H.equip_or_collect(new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(H), slot_r_store) else H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack) H.equip_or_collect(new /obj/item/weapon/crowbar(H), slot_in_backpack) H.equip_or_collect(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack) - H.equip_or_collect(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_in_backpack) + H.equip_or_collect(new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(H), slot_in_backpack) return 1 diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index 517b96be864..bca954ac593 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -78,7 +78,7 @@ return 1 if(istype(O,/obj/item/weapon/storage/pill_bottle/)) return 1 - if(istype(O,/obj/item/weapon/reagent_containers/pill/)) + if(istype(O,/obj/item/weapon/reagent_containers/food/pill/)) return 1 return 0 @@ -104,7 +104,7 @@ return 1 if(istype(O,/obj/item/weapon/storage/pill_bottle/)) return 1 - if(istype(O,/obj/item/weapon/reagent_containers/pill/)) + if(istype(O,/obj/item/weapon/reagent_containers/food/pill/)) return 1 return 0 diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index fb0824d18b8..74c864ab574 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -859,10 +859,10 @@ product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs." vend_delay = 34 icon_state = "cigs" - products = list(/obj/item/weapon/storage/fancy/cigarettes = 5,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 2, /obj/item/weapon/reagent_containers/pill/patch/nicotine = 10, /obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4,/obj/item/weapon/rollingpaperpack = 5) + products = list(/obj/item/weapon/storage/fancy/cigarettes = 5,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 2, /obj/item/weapon/reagent_containers/food/pill/patch/nicotine = 10, /obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4,/obj/item/weapon/rollingpaperpack = 5) contraband = list(/obj/item/weapon/lighter/zippo = 4) premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold = 1) - prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 150, /obj/item/weapon/reagent_containers/pill/patch/nicotine = 15, /obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60, /obj/item/weapon/rollingpaperpack = 20) + prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 150, /obj/item/weapon/reagent_containers/food/pill/patch/nicotine = 15, /obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60, /obj/item/weapon/rollingpaperpack = 20) refill_canister = /obj/item/weapon/vending_refill/cigarette /obj/machinery/vending/cigarette/New() @@ -908,7 +908,7 @@ req_access_txt = "5" density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude products = list(/obj/item/stack/medical/bruise_pack = 2,/obj/item/stack/medical/ointment = 2,/obj/item/weapon/reagent_containers/hypospray/autoinjector = 4,/obj/item/device/healthanalyzer = 1) - contraband = list(/obj/item/weapon/reagent_containers/syringe/charcoal = 4,/obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/pill/tox = 1) + contraband = list(/obj/item/weapon/reagent_containers/syringe/charcoal = 4,/obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/food/pill/tox = 1) /obj/machinery/vending/wallmed2 name = "\improper NanoMed" @@ -919,7 +919,7 @@ density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude products = list(/obj/item/weapon/reagent_containers/hypospray/autoinjector = 5,/obj/item/weapon/reagent_containers/syringe/charcoal = 3,/obj/item/stack/medical/bruise_pack = 3, /obj/item/stack/medical/ointment =3,/obj/item/device/healthanalyzer = 3) - contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3) + contraband = list(/obj/item/weapon/reagent_containers/food/pill/tox = 3) /obj/machinery/vending/wallmed1/syndicate name = "\improper SyndiMed Plus" @@ -929,7 +929,7 @@ product_ads = "Go end some lives!;The best stuff for your ship.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" req_access_txt = "150" products = list(/obj/item/stack/medical/bruise_pack = 2,/obj/item/stack/medical/ointment = 2,/obj/item/weapon/reagent_containers/hypospray/autoinjector = 4,/obj/item/device/healthanalyzer = 1) - contraband = list(/obj/item/weapon/reagent_containers/syringe/charcoal = 4,/obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/pill/tox = 1) + contraband = list(/obj/item/weapon/reagent_containers/syringe/charcoal = 4,/obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/food/pill/tox = 1) /obj/machinery/vending/security name = "\improper SecTech" diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index c82e63cebf2..22eb55e150e 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -7,13 +7,13 @@ /obj/item/weapon/storage/pill_bottle/happy/New() ..() - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) - new /obj/item/weapon/reagent_containers/pill/happy( src ) + new /obj/item/weapon/reagent_containers/food/pill/happy( src ) + new /obj/item/weapon/reagent_containers/food/pill/happy( src ) + new /obj/item/weapon/reagent_containers/food/pill/happy( src ) + new /obj/item/weapon/reagent_containers/food/pill/happy( src ) + new /obj/item/weapon/reagent_containers/food/pill/happy( src ) + new /obj/item/weapon/reagent_containers/food/pill/happy( src ) + new /obj/item/weapon/reagent_containers/food/pill/happy( src ) /obj/item/weapon/storage/pill_bottle/zoom name = "Zoom pills" @@ -21,20 +21,20 @@ /obj/item/weapon/storage/pill_bottle/zoom/New() ..() - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) - new /obj/item/weapon/reagent_containers/pill/zoom( src ) + new /obj/item/weapon/reagent_containers/food/pill/zoom( src ) + new /obj/item/weapon/reagent_containers/food/pill/zoom( src ) + new /obj/item/weapon/reagent_containers/food/pill/zoom( src ) + new /obj/item/weapon/reagent_containers/food/pill/zoom( src ) + new /obj/item/weapon/reagent_containers/food/pill/zoom( src ) + new /obj/item/weapon/reagent_containers/food/pill/zoom( src ) + new /obj/item/weapon/reagent_containers/food/pill/zoom( src ) -/obj/item/weapon/reagent_containers/pill/random_drugs +/obj/item/weapon/reagent_containers/food/pill/random_drugs name = "pill" desc = "" -/obj/item/weapon/reagent_containers/pill/random_drugs/New() +/obj/item/weapon/reagent_containers/food/pill/random_drugs/New() ..() icon_state = "pill" + pick("2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20") @@ -52,12 +52,12 @@ /obj/item/weapon/storage/pill_bottle/random_drug_bottle/New() ..() - new /obj/item/weapon/reagent_containers/pill/random_drugs( src ) - new /obj/item/weapon/reagent_containers/pill/random_drugs( src ) - new /obj/item/weapon/reagent_containers/pill/random_drugs( src ) - new /obj/item/weapon/reagent_containers/pill/random_drugs( src ) - new /obj/item/weapon/reagent_containers/pill/random_drugs( src ) - new /obj/item/weapon/reagent_containers/pill/random_drugs( src ) - new /obj/item/weapon/reagent_containers/pill/random_drugs( src ) + new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src ) + new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src ) + new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src ) + new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src ) + new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src ) + new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src ) + new /obj/item/weapon/reagent_containers/food/pill/random_drugs( src ) diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index ea53bf6c534..9fda63a980c 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -128,7 +128,7 @@ R = pick(standard_medicines + rare_medicines) else R = pick(standard_medicines) - var/obj/item/weapon/reagent_containers/pill/P = new(src) + var/obj/item/weapon/reagent_containers/food/pill/P = new(src) if(rare_medicines.Find(R)) P.reagents.add_reagent(R,10) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index e50ea239b44..1cae4d8d5d4 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -27,8 +27,7 @@ attack_verb = list("attacked", "stabbed", "poked") hitsound = 'sound/weapons/bladeslice.ogg' sharp = 0 - - var/loaded //Descriptive string for currently loaded food object. + var/max_contents = 1 /obj/item/weapon/kitchen/utensil/New() if (prob(60)) @@ -49,25 +48,17 @@ else return ..() - if (reagents.total_volume > 0) - // Mouthless people cannot eat - if(!M.can_eat()) - user << "[M] cannot eat with a fork!" - return + if (contents.len) + var/obj/item/weapon/reagent_containers/food/snacks/toEat = contents[1] + if(istype(toEat)) + if(M.eat(toEat, user)) + toEat.On_Consume(M) + spawn(0) + if(toEat) + qdel(toEat) + overlays.Cut() + return - if(M == user) - M.visible_message("\The [user] eats some [loaded] from \the [src].") - reagents.trans_to(M, reagents.total_volume) - else - M.visible_message("\The [user] attempts to feed some [loaded] to \the [M] with \the [src].") - if(!do_mob(user, M)) return - M.visible_message("\The [user] feeds some [loaded] to \the [M] with \the [src].") - reagents.trans_to(M, reagents.total_volume) - M.attack_log += text("\[[time_stamp()]\] Has been utensil fed by [user.name] ([user.ckey]) with [src.name]") - user.attack_log += text("\[[time_stamp()]\] Utensil fed [M.name] ([M.ckey]) with [src.name]") - playsound(M.loc,'sound/items/eatfood.ogg', rand(10,40), 1) - overlays.Cut() - return /obj/item/weapon/kitchen/utensil/fork name = "fork" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 7a1107cce1d..ef0429347f0 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -483,7 +483,7 @@ storage_slots = 50 max_combined_w_class = 200 w_class = 1 - can_hold = list("/obj/item/weapon/reagent_containers/pill","/obj/item/weapon/reagent_containers/glass/beaker","/obj/item/weapon/reagent_containers/glass/bottle") + can_hold = list("/obj/item/weapon/reagent_containers/food/pill","/obj/item/weapon/reagent_containers/glass/beaker","/obj/item/weapon/reagent_containers/glass/bottle") /* * Biowaste bag (mostly for xenobiologists) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 44b1a21f73d..118ca1855f0 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -87,7 +87,7 @@ "/obj/item/weapon/reagent_containers/dropper", "/obj/item/weapon/reagent_containers/glass/beaker", "/obj/item/weapon/reagent_containers/glass/bottle", - "/obj/item/weapon/reagent_containers/pill", + "/obj/item/weapon/reagent_containers/food/pill", "/obj/item/weapon/reagent_containers/syringe", "/obj/item/weapon/reagent_containers/glass/dispenser", "/obj/item/weapon/lighter/zippo", @@ -106,13 +106,13 @@ /obj/item/weapon/storage/belt/medical/response_team/New() ..() - new /obj/item/weapon/reagent_containers/pill/salbutamol(src) - new /obj/item/weapon/reagent_containers/pill/salbutamol(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salbutamol(src) + new /obj/item/weapon/reagent_containers/food/pill/salbutamol(src) + new /obj/item/weapon/reagent_containers/food/pill/charcoal(src) + new /obj/item/weapon/reagent_containers/food/pill/charcoal(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) /obj/item/weapon/storage/belt/botany diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index cbbc22c9b36..6429d83c73b 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -35,13 +35,13 @@ icon_state = pick("ointment","firefirstaid") - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf( src ) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf( src ) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf( src ) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf( src ) + new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src ) + new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src ) + new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src ) + new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src ) new /obj/item/device/healthanalyzer( src ) new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src ) - new /obj/item/weapon/reagent_containers/pill/salicylic( src ) + new /obj/item/weapon/reagent_containers/food/pill/salicylic( src ) return /obj/item/weapon/storage/firstaid/fire/empty @@ -54,11 +54,11 @@ New() ..() if (empty) return - new /obj/item/weapon/reagent_containers/pill/patch/styptic( src ) - new /obj/item/weapon/reagent_containers/pill/patch/styptic( src ) - new /obj/item/weapon/reagent_containers/pill/salicylic( src ) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf( src ) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf( src ) + new /obj/item/weapon/reagent_containers/food/pill/patch/styptic( src ) + new /obj/item/weapon/reagent_containers/food/pill/patch/styptic( src ) + new /obj/item/weapon/reagent_containers/food/pill/salicylic( src ) + new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src ) + new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf( src ) new /obj/item/device/healthanalyzer( src ) new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src ) return @@ -78,9 +78,9 @@ new /obj/item/weapon/reagent_containers/syringe/charcoal( src ) new /obj/item/weapon/reagent_containers/syringe/charcoal( src ) new /obj/item/weapon/reagent_containers/syringe/charcoal( src ) - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) new /obj/item/device/healthanalyzer( src ) return @@ -96,10 +96,10 @@ New() ..() if (empty) return - new /obj/item/weapon/reagent_containers/pill/salbutamol( src ) - new /obj/item/weapon/reagent_containers/pill/salbutamol( src ) - new /obj/item/weapon/reagent_containers/pill/salbutamol( src ) - new /obj/item/weapon/reagent_containers/pill/salbutamol( src ) + new /obj/item/weapon/reagent_containers/food/pill/salbutamol( src ) + new /obj/item/weapon/reagent_containers/food/pill/salbutamol( src ) + new /obj/item/weapon/reagent_containers/food/pill/salbutamol( src ) + new /obj/item/weapon/reagent_containers/food/pill/salbutamol( src ) new /obj/item/device/healthanalyzer( src ) return @@ -118,10 +118,10 @@ icon_state = pick("brute","brute2") - new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) - new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) - new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) - new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) + new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(src) + new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(src) + new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(src) + new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(src) new /obj/item/device/healthanalyzer(src) new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src) new /obj/item/stack/medical/bruise_pack(src) @@ -168,8 +168,8 @@ new /obj/item/clothing/accessory/stethoscope( src ) new /obj/item/weapon/defibrillator/compact/combat/loaded(src) new /obj/item/weapon/reagent_containers/hypospray/combat(src) - new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) + new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(src) + new /obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf(src) new /obj/item/weapon/reagent_containers/ld50_syringe/lethal(src) new /obj/item/clothing/glasses/hud/health/night(src) return @@ -210,7 +210,7 @@ icon = 'icons/obj/chemical.dmi' item_state = "contsolid" w_class = 2.0 - can_hold = list("/obj/item/weapon/reagent_containers/pill","/obj/item/weapon/dice","/obj/item/weapon/paper") + can_hold = list("/obj/item/weapon/reagent_containers/food/pill","/obj/item/weapon/dice","/obj/item/weapon/paper") allow_quick_gather = 1 use_to_pickup = 1 storage_slots = 14 @@ -245,13 +245,13 @@ New() ..() - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) - new /obj/item/weapon/reagent_containers/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) + new /obj/item/weapon/reagent_containers/food/pill/charcoal( src ) /obj/item/weapon/storage/pill_bottle/dice name = "pack of dice" @@ -269,11 +269,11 @@ /obj/item/weapon/storage/pill_bottle/painkillers/New() ..() - new /obj/item/weapon/reagent_containers/pill/salicylic(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) - new /obj/item/weapon/reagent_containers/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) + new /obj/item/weapon/reagent_containers/food/pill/salicylic(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 887c32d1584..11e1b56b7ed 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -121,10 +121,10 @@ /obj/item/weapon/storage/pill_bottle/psychiatrist/New() ..() - new /obj/item/weapon/reagent_containers/pill/haloperidol(src) - new /obj/item/weapon/reagent_containers/pill/haloperidol(src) - new /obj/item/weapon/reagent_containers/pill/methamphetamine(src) - new /obj/item/weapon/reagent_containers/pill/methamphetamine(src) + new /obj/item/weapon/reagent_containers/food/pill/haloperidol(src) + new /obj/item/weapon/reagent_containers/food/pill/haloperidol(src) + new /obj/item/weapon/reagent_containers/food/pill/methamphetamine(src) + new /obj/item/weapon/reagent_containers/food/pill/methamphetamine(src) /obj/structure/closet/secure_closet/psychiatrist name = "psychiatrist's locker" diff --git a/code/game/response_team.dm b/code/game/response_team.dm index fab7bdcbbf1..20ed7e6c1ed 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -607,6 +607,6 @@ var/send_emergency_team new /obj/item/device/flashlight/flare( src ) new /obj/item/weapon/kitchen/knife/combat( src ) new /obj/item/device/radio/centcom( src ) - new /obj/item/weapon/reagent_containers/pill/salicylic( src ) - new /obj/item/weapon/reagent_containers/pill/patch/synthflesh( src ) + new /obj/item/weapon/reagent_containers/food/pill/salicylic( src ) + new /obj/item/weapon/reagent_containers/food/pill/patch/synthflesh( src ) return \ No newline at end of file diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 1591b8fbcc3..9f33b208d63 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -7,7 +7,7 @@ suit_adjusted = 1 blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS - allowed = list(/obj/item/device/analyzer,/obj/item/device/antibody_scanner,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/device/rad_laser) + allowed = list(/obj/item/device/analyzer,/obj/item/device/antibody_scanner,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/device/rad_laser) armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 50, rad = 0) species_fit = list("Vox") sprite_sheets = list( diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5e905c91e9d..b291178ecb4 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -737,4 +737,80 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, return 1 /mob/living/carbon/proc/can_eat(flags = 255) - return 1 \ No newline at end of file + return 1 + +/mob/living/carbon/proc/eat(var/obj/item/weapon/reagent_containers/food/toEat, mob/user) + if(!istype(toEat)) + return 0 + var/fullness = 0 + if(istype(toEat, /obj/item/weapon/reagent_containers/food/snacks)) + fullness = nutrition + (reagents.get_reagent_amount("nutriment") * 20) + (reagents.get_reagent_amount("protein") * 25) + (reagents.get_reagent_amount("plantmatter") * 25) + if(user == src) + if(istype(toEat, /obj/item/weapon/reagent_containers/food/drinks)) + if(!selfDrink(toEat)) + return 0 + else + if(!selfFeed(toEat, fullness)) + return 0 + else + if(!forceFed(toEat, user, fullness)) + return 0 + consume(toEat) + return 1 + +/mob/living/carbon/proc/selfFeed(var/obj/item/weapon/reagent_containers/food/toEat, fullness) + if(istype(toEat, /obj/item/weapon/reagent_containers/food/pill)) + src << "You [toEat.apply_method] [toEat]." + else + if (fullness <= 50) + src << "You hungrily chew out a piece of [toEat] and gobble it!" + else if (fullness > 50 && fullness <= 150) + src << "You hungrily begin to eat [toEat]." + else if (fullness > 150 && fullness <= 350) + src << "You take a bite of [toEat]." + else if (fullness > 350 && fullness <= 550) + src << "You unwillingly chew a bit of [toEat]." + else if (fullness > (550 * (1 + overeatduration / 2000))) // The more you eat - the more you can eat + src << "You cannot force any more of [toEat] to go down your throat." + return 0 + return 1 + +/mob/living/carbon/proc/selfDrink(var/obj/item/weapon/reagent_containers/food/drinks/toDrink, mob/user) + return 1 + +/mob/living/carbon/proc/forceFed(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, fullness) + if (fullness <= (550 * (1 + overeatduration / 1000))) + visible_message("[user] attempts to force [src] to [toEat.apply_method] [toEat].") + else + visible_message("[user] cannot force anymore of [toEat] down [src]'s throat.") + return 0 + if(!do_mob(user, src)) + return 0 + forceFedAttackLog(toEat, user) + visible_message("[user] forces [src] to [toEat.apply_method] [toEat].") + return 1 + +/mob/living/carbon/proc/forceFedAttackLog(var/obj/item/weapon/reagent_containers/food/toEat, mob/user) + attack_log += text("\[[time_stamp()]\] Has been fed [toEat.name] by [user.name] ([user.ckey]) Reagents: [toEat.reagentlist(toEat)]") + user.attack_log += text("\[[time_stamp()]\] Fed [toEat.name] to [name] ([ckey]) Reagents: [toEat.reagentlist(toEat)]") + log_attack("[user.name] ([user.ckey]) fed [name] ([ckey]) with [toEat.name] Reagents: [toEat.reagentlist(toEat)] (INTENT: [uppertext(user.a_intent)])") + if(!iscarbon(user)) + LAssailant = null + else + LAssailant = user + + +/*TO DO - If/when stomach organs are introduced, override this at the human level sending the item to the stomach +so that different stomachs can handle things in different ways VB*/ +/mob/living/carbon/proc/consume(var/obj/item/weapon/reagent_containers/food/toEat) + if(!toEat.reagents) + return + if(toEat.consume_sound) + playsound(loc, toEat.consume_sound, rand(10,50), 1) + if(toEat.reagents.total_volume) + toEat.reagents.reaction(src, toEat.apply_type) + spawn(0) + if(toEat.reagents.total_volume > toEat.bitesize) + toEat.reagents.trans_to(src, toEat.bitesize*toEat.transfer_efficiency) + else + toEat.reagents.trans_to(src, toEat.reagents.total_volume*toEat.transfer_efficiency) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d50aae8a13d..ce6a5ecfb5e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1882,3 +1882,27 @@ /mob/living/carbon/human/can_eat(flags = 255) return species && (species.dietflags & flags) + +/mob/living/carbon/human/selfFeed(var/obj/item/weapon/reagent_containers/food/toEat, fullness) + if(!check_has_mouth()) + src << "Where do you intend to put \the [toEat]? You don't have a mouth!" + return 0 + return ..() + +/mob/living/carbon/human/forceFed(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, fullness) + if(!check_has_mouth()) + if(!((istype(toEat, /obj/item/weapon/reagent_containers/food/drinks) && (get_species() == "Machine")))) + user << "Where do you intend to put \the [toEat]? \The [src] doesn't have a mouth!" + return 0 + return ..() + +/mob/living/carbon/human/selfDrink(var/obj/item/weapon/reagent_containers/food/drinks/toDrink) + if(!check_has_mouth()) + if(!get_species() == "Machine") + src << "Where do you intend to put \the [src]? You don't have a mouth!" + return 0 + else + src << "You pour a bit of liquid from [toDrink] into your connection port." + else + src << "You swallow a gulp of [toDrink]." + return 1 diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 78c8db06a59..37c2e112c24 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -583,4 +583,10 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 /mob/living/carbon/slime/can_use_vents() if(Victim) return "You cannot ventcrawl while feeding." - ..() \ No newline at end of file + ..() + +/mob/living/carbon/slime/forceFed(var/obj/item/weapon/reagent_containers/food/toEat, mob/user, fullness) + if(istype(toEat, /obj/item/weapon/reagent_containers/food/drinks)) + return 1 + user << "This creature does not seem to have a mouth!" + return 0 \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 5fe33d73b03..99b9339cd97 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -583,7 +583,7 @@ return name = reject_bad_text(name) while (count--) - var/obj/item/weapon/reagent_containers/pill/P = new/obj/item/weapon/reagent_containers/pill(src.loc) + var/obj/item/weapon/reagent_containers/food/pill/P = new/obj/item/weapon/reagent_containers/food/pill(src.loc) if(!name) name = reagents.get_master_reagent_name() P.name = "[name] pill" P.pixel_x = rand(-7, 7) //random position @@ -623,7 +623,7 @@ return name = reject_bad_text(name) while (count--) - var/obj/item/weapon/reagent_containers/pill/patch/P = new/obj/item/weapon/reagent_containers/pill/patch(src.loc) + var/obj/item/weapon/reagent_containers/food/pill/patch/P = new/obj/item/weapon/reagent_containers/food/pill/patch(src.loc) if(!name) name = reagents.get_master_reagent_name() P.name = "[name] patch" P.pixel_x = rand(-7, 7) //random position @@ -828,7 +828,7 @@ //All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.! - /obj/item/weapon/reagent_containers/pill = list(), + /obj/item/weapon/reagent_containers/food/pill = list(), /obj/item/weapon/reagent_containers/food = list() ) diff --git a/code/modules/reagents/newchem/patch.dm b/code/modules/reagents/newchem/patch.dm index 7901c97cbc0..a7aae47d8de 100644 --- a/code/modules/reagents/newchem/patch.dm +++ b/code/modules/reagents/newchem/patch.dm @@ -1,4 +1,4 @@ -/obj/item/weapon/reagent_containers/pill/patch +/obj/item/weapon/reagent_containers/food/pill/patch name = "chemical patch" desc = "A chemical patch for touch based applications." icon = 'icons/obj/chemical.dmi' @@ -10,35 +10,35 @@ apply_method = "apply" transfer_efficiency = 0.5 //patches aren't as effective at getting chemicals into the bloodstream. -/obj/item/weapon/reagent_containers/pill/patch/New() +/obj/item/weapon/reagent_containers/food/pill/patch/New() ..() icon_state = "bandaid" -/obj/item/weapon/reagent_containers/pill/patch/afterattack(obj/target, mob/user , proximity) +/obj/item/weapon/reagent_containers/food/pill/patch/afterattack(obj/target, mob/user , proximity) return // thanks inheritance again -/obj/item/weapon/reagent_containers/pill/patch/styptic +/obj/item/weapon/reagent_containers/food/pill/patch/styptic name = "healing patch" desc = "Helps with brute injuries." New() ..() reagents.add_reagent("styptic_powder", 40) -/obj/item/weapon/reagent_containers/pill/patch/silver_sulf +/obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf name = "burn patch" desc = "Helps with burn injuries." New() ..() reagents.add_reagent("silver_sulfadiazine", 40) -/obj/item/weapon/reagent_containers/pill/patch/synthflesh +/obj/item/weapon/reagent_containers/food/pill/patch/synthflesh name = "syntheflesh patch" desc = "Helps with burn injuries." New() ..() reagents.add_reagent("synthflesh", 20) -/obj/item/weapon/reagent_containers/pill/patch/nicotine +/obj/item/weapon/reagent_containers/food/pill/patch/nicotine name = "nicotine patch" desc = "Helps temporarily curb the cravings of nicotine dependency." New() diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm index 6c9e58d483e..6b289d45b9d 100644 --- a/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm @@ -65,7 +65,7 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M if (H.get_int_organ(/obj/item/organ/internal/liver)) - var/obj/item/organ/internal/liver/L = /obj/item/organ/internal/liver + var/obj/item/organ/internal/liver/L = H.get_int_organ(/obj/item/organ/internal/liver) L.take_damage(0.1, 1) H.adjustToxLoss(0.1) ..() diff --git a/code/modules/reagents/reagent_containers/food.dm b/code/modules/reagents/reagent_containers/food.dm index 07f98a014e6..8caaa5ff653 100644 --- a/code/modules/reagents/reagent_containers/food.dm +++ b/code/modules/reagents/reagent_containers/food.dm @@ -5,6 +5,11 @@ possible_transfer_amounts = null volume = 50 //Sets the default container amount for all food items. var/filling_color = "#FFFFFF" //Used by sandwiches. + var/bitesize = 1 + var/consume_sound = 'sound/items/eatfood.ogg' + var/apply_type = INGEST + var/apply_method = "swallow" + var/transfer_efficiency = 1.0 /obj/item/weapon/reagent_containers/food/New() ..() diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 589ae649256..e4860b880d0 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -7,164 +7,116 @@ icon = 'icons/obj/drinks.dmi' icon_state = null flags = OPENCONTAINER - var/gulp_size = 5 //This is now officially broken ... need to think of a nice way to fix it. + consume_sound = 'sound/items/drink.ogg' possible_transfer_amounts = list(5,10,25) volume = 50 - on_reagent_change() - if (gulp_size < 5) gulp_size = 5 - else gulp_size = max(round(reagents.total_volume / 5), 5) +/obj/item/weapon/reagent_containers/food/drinks/New() + ..() + bitesize = amount_per_transfer_from_this + if(bitesize < 5) + bitesize = 5 - attack_self(mob/user as mob) - return +/obj/item/weapon/reagent_containers/food/drinks/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 << " None of [src] left, oh no!" - return 0 - - if(M == user) - - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth()) - if(!H.get_species() == "Machine") - user << "Where do you intend to put \the [src]? You don't have a mouth!" - return - else - M << " You pour a bit of liquid from [src] into your connection port." - else - M << " You swallow a gulp of [src]." - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(0) - reagents.trans_to(M, gulp_size) - - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) - return 1 - else if( istype(M, /mob/living/carbon/human) ) - - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth() && !H.get_species() == "Machine") - user << "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!" - return - - for(var/mob/O in viewers(world.view, user)) - O.show_message(" [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(" [user] feeds [M] [src].", 1) - - M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [key_name(user)] Reagents: [reagentlist(src)]") - user.attack_log += text("\[[time_stamp()]\] Fed [M.name] by [key_name(M)] Reagents: [reagentlist(src)]") - log_attack("[key_name_admin(user)] fed [key_name_admin(M)] with [src.name] Reagents: [reagentlist(src)] (INTENT: [uppertext(user.a_intent)])") - if(!iscarbon(user)) - M.LAssailant = null - else - M.LAssailant = user - - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(0) - reagents.trans_to(M, gulp_size) +/obj/item/weapon/reagent_containers/food/drinks/attack(mob/M as mob, mob/user as mob, def_zone) + if(!reagents || !reagents.total_volume) + user << " None of [src] left, oh no!" + return 0 + if(istype(M, /mob/living/carbon)) + var/mob/living/carbon/C = M + if(C.eat(src, user)) if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell var/mob/living/silicon/robot/borg = user borg.cell.use(30) - var/refill = R.get_master_reagent_id() + var/refill = reagents.get_master_reagent_id() if(refill in drinks) // Only synthesize drinks spawn(600) - R.add_reagent(refill, fillevel) - - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + reagents.add_reagent(refill, bitesize) return 1 + return 0 - return 0 +/obj/item/weapon/reagent_containers/food/drinks/afterattack(obj/target, mob/user, proximity) + if(!proximity) return + // Moved from the can code; not necessary since closed cans aren't open containers now, but, eh. + if (istype(target, /obj/item/weapon/reagent_containers/food/drinks/cans)) + var/obj/item/weapon/reagent_containers/food/drinks/cans/cantarget = target + if(cantarget.canopened == 0) + user << "You need to open the drink you want to pour into!" + return - afterattack(obj/target, mob/user, proximity) - if(!proximity) return + if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. - // Moved from the can code; not necessary since closed cans aren't open containers now, but, eh. - if (istype(target, /obj/item/weapon/reagent_containers/food/drinks/cans)) - var/obj/item/weapon/reagent_containers/food/drinks/cans/cantarget = target - if(cantarget.canopened == 0) - user << "You need to open the drink you want to pour into!" - return + if(!target.reagents.total_volume) + user << " [target] is empty." + return - if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. + if(reagents.total_volume >= reagents.maximum_volume) + user << " [src] is full." + return - if(!target.reagents.total_volume) - user << " [target] is empty." - return + var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) + user << " You fill [src] with [trans] units of the contents of [target]." - if(reagents.total_volume >= reagents.maximum_volume) - user << " [src] is full." - return + else if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it. + if(!reagents.total_volume) + user << " [src] is empty." + return - var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) - user << " 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 << " [src] is empty." - return - - if(target.reagents.total_volume >= target.reagents.maximum_volume) - user << " [target] is full." - return + if(target.reagents.total_volume >= target.reagents.maximum_volume) + user << " [target] is full." + return - var/datum/reagent/refill - var/datum/reagent/refillName - if(isrobot(user)) - refill = reagents.get_master_reagent_id() - refillName = reagents.get_master_reagent_name() + var/datum/reagent/refill + var/datum/reagent/refillName + if(isrobot(user)) + refill = reagents.get_master_reagent_id() + refillName = reagents.get_master_reagent_name() - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) - user << " You transfer [trans] units of the solution to [target]." + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + user << " 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 - if(refill in drinks) // Only synthesize drinks - var/mob/living/silicon/robot/bro = user - var/chargeAmount = max(30,4*trans) - bro.cell.use(chargeAmount) - user << "Now synthesizing [trans] units of [refillName]..." + if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell + if(refill in drinks) // Only synthesize drinks + var/mob/living/silicon/robot/bro = user + var/chargeAmount = max(30,4*trans) + bro.cell.use(chargeAmount) + user << "Now synthesizing [trans] units of [refillName]..." - spawn(300) - reagents.add_reagent(refill, trans) - user << "Cyborg [src] refilled." + spawn(300) + reagents.add_reagent(refill, trans) + user << "Cyborg [src] refilled." + return + +/obj/item/weapon/reagent_containers/food/drinks/attackby(var/obj/item/I, mob/user as mob, params) + if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird return + if(is_hot(I)) + if(src.reagents) + src.reagents.chem_temp += 15 + user << "You heat [src] with [I]." + src.reagents.handle_reactions() - attackby(var/obj/item/I, mob/user as mob, params) - if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird - return - if(is_hot(I)) - if(src.reagents) - src.reagents.chem_temp += 15 - user << "You heat [src] with [I]." - src.reagents.handle_reactions() - - examine(mob/user) - if(!..(user, 1)) - return - if(!reagents || reagents.total_volume==0) - user << " \The [src] is empty!" - else if (reagents.total_volume<=src.volume/4) - user << " \The [src] is almost empty!" - else if (reagents.total_volume<=src.volume*0.66) - user << " \The [src] is half full!" // We're all optimistic, right?! - else if (reagents.total_volume<=src.volume*0.90) - user << " \The [src] is almost full!" - else - user << " \The [src] is full!" - +/obj/item/weapon/reagent_containers/food/drinks/examine(mob/user) + if(!..(user, 1)) + return + if(!reagents || reagents.total_volume==0) + user << " \The [src] is empty!" + else if (reagents.total_volume<=src.volume/4) + user << " \The [src] is almost empty!" + else if (reagents.total_volume<=src.volume*0.66) + user << " \The [src] is half full!" // We're all optimistic, right?! + else if (reagents.total_volume<=src.volume*0.90) + user << " \The [src] is almost full!" + else + user << " \The [src] is full!" //////////////////////////////////////////////////////////////////////////////// /// Drinks. END diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 89d4817328f..eee8c78f9b0 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -4,7 +4,7 @@ desc = "yummy" icon = 'icons/obj/food/food.dmi' icon_state = null - var/bitesize = 1 + bitesize = 1 var/bitecount = 0 var/trash = null var/slice_path @@ -18,19 +18,20 @@ //Placeholder for effect that trigger on eating that aren't tied to reagents. /obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M) if(!usr) return - if(!reagents.total_volume) - if(M == usr) - usr << "You finish eating \the [src]." - usr.visible_message("[usr] finishes eating \the [src].") - usr.unEquip(src) //so icons update :[ + spawn(0) + if(!reagents.total_volume) + if(M == usr) + usr << "You finish eating \the [src]." + usr.visible_message("[usr] finishes eating \the [src].") + usr.unEquip(src) //so icons update :[ - if(trash) - if(ispath(trash,/obj/item)) - var/obj/item/TrashItem = new trash(usr) - usr.put_in_hands(TrashItem) - else if(istype(trash,/obj/item)) - usr.put_in_hands(trash) - qdel(src) + if(trash) + if(ispath(trash,/obj/item)) + var/obj/item/TrashItem = new trash(usr) + usr.put_in_hands(TrashItem) + else if(istype(trash,/obj/item)) + usr.put_in_hands(trash) + qdel(src) return /obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) @@ -38,83 +39,17 @@ /obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone) if(reagents && !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!" + user << "None of [src] left, oh no!" M.unEquip(src) //so icons update :[ qdel(src) return 0 if(istype(M, /mob/living/carbon)) - var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 20) + (M.reagents.get_reagent_amount("protein") * 25) + (M.reagents.get_reagent_amount("plantmatter") * 25) - if(M == user) //If you're eating it yourself - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth()) - user << "Where do you intend to put \the [src]? You don't have a mouth!" - return - 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(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth()) - user << "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!" - return - - if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else. - - 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("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") - user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] Reagents: [reagentlist(src)] (INTENT: [uppertext(user.a_intent)])") - if(!iscarbon(user)) - M.LAssailant = null - else - M.LAssailant = user - - for(var/mob/O in viewers(world.view, user)) - O.show_message("\red [user] feeds [M] [src].", 1) - - else - user << "This creature does not seem to have a mouth!" - return - - if(reagents) //Handle ingestion of the reagent. - playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1) - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(0) - if(reagents.total_volume > bitesize) - /* - * I totally cannot understand what this code supposed to do. - * Right now every snack consumes in 2 bites, my popcorn does not work right, so I simplify it. -- rastaf0 - var/temp_bitesize = max(reagents.total_volume /2, bitesize) - reagents.trans_to(M, temp_bitesize) - */ - reagents.trans_to(M, bitesize) - else - reagents.trans_to(M, reagents.total_volume) - bitecount++ - On_Consume(M) + var/mob/living/carbon/C = M + if(C.eat(src, user)) + bitecount++ + On_Consume(C) return 1 - return 0 /obj/item/weapon/reagent_containers/food/snacks/afterattack(obj/target, mob/user, proximity) @@ -145,30 +80,30 @@ var/obj/item/weapon/kitchen/utensil/U = W - if(!U.reagents) - U.create_reagents(5) - - if (U.reagents.total_volume > 0) - user << "\red You already have something on your [U]." + if(U.contents.len >= U.max_contents) + user << "You cannot fit anything else on your [U]." return user.visible_message( \ "[user] scoops up some [src] with \the [U]!", \ - "\blue You scoop up some [src] with \the [U]!" \ + "You scoop up some [src] with \the [U]!" \ ) src.bitecount++ U.overlays.Cut() - U.loaded = "[src]" var/image/I = new(U.icon, "loadedfood") I.color = src.filling_color U.overlays += I - reagents.trans_to(U,min(reagents.total_volume,5)) - - if (reagents.total_volume <= 0) + var/obj/item/weapon/reagent_containers/food/snacks/collected = new type + collected.loc = U + collected.reagents.remove_any(collected.reagents.total_volume) + if(reagents.total_volume > bitesize) + reagents.trans_to(collected, bitesize) + else + reagents.trans_to(collected, reagents.total_volume) qdel(src) - return + return 1 if((slices_num <= 0 || !slices_num) || !slice_path) return 0 diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 1cb4ff50a39..6dac43db7d1 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -1,7 +1,7 @@ //////////////////////////////////////////////////////////////////////////////// /// Pills. //////////////////////////////////////////////////////////////////////////////// -/obj/item/weapon/reagent_containers/pill +/obj/item/weapon/reagent_containers/food/pill name = "pill" desc = "a pill." icon = 'icons/obj/chemical.dmi' @@ -9,107 +9,59 @@ item_state = "pill" possible_transfer_amounts = null volume = 50 - var/apply_type = INGEST - var/apply_method = "swallow" - var/transfer_efficiency = 1.0 + consume_sound = null New() ..() if(!icon_state) icon_state = "pill[rand(1,20)]" - attack_self(mob/user as mob) +/obj/item/weapon/reagent_containers/food/pill/attack_self(mob/user as mob) return - attack(mob/M as mob, mob/user as mob, def_zone) - if(M == user) - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth()) - user << "Where do you intend to put \the [src]? You don't have a mouth!" - return - - M << "You [apply_method] [src]." - M.unEquip(src) //icon update - if(reagents.total_volume) - reagents.reaction(M, apply_type) - spawn(0) - reagents.trans_to(M, reagents.total_volume*transfer_efficiency) - qdel(src) - else - qdel(src) - return 1 - - else if(istype(M, /mob/living/carbon/human) ) - - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth()) - user << "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!" - return - - for(var/mob/O in viewers(world.view, user)) - O.show_message("[user] attempts to force [M] to [apply_method] [src].", 1) - - if(!do_mob(user, M)) return - - user.unEquip(src) //icon update - for(var/mob/O in viewers(world.view, user)) - O.show_message("[user] forces [M] to [apply_method] [src].", 1) - - M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [key_name(user)] Reagents: [reagentlist(src)]") - user.attack_log += text("\[[time_stamp()]\] Fed [src.name] to [key_name(M)]) Reagents: [reagentlist(src)]") - if(M.ckey) - msg_admin_attack("[key_name_admin(user)] fed [key_name_admin(M)] with [src.name] Reagents: [reagentlist(src)] (INTENT: [uppertext(user.a_intent)])") - if(!iscarbon(user)) - M.LAssailant = null - else - M.LAssailant = user - - if(reagents.total_volume) - reagents.reaction(M, apply_type) - spawn(0) - reagents.trans_to(M, reagents.total_volume*transfer_efficiency) - qdel(src) - else - qdel(src) - - return 1 - +/obj/item/weapon/reagent_containers/food/pill/attack(var/mob/living/carbon/M, mob/user as mob, def_zone) + if(!istype(M)) return 0 + bitesize = reagents.total_volume + if(M.eat(src, user)) + spawn(0) + qdel(src) + return 1 + return 0 - afterattack(obj/target, mob/user, proximity) - if(!proximity) return +/obj/item/weapon/reagent_containers/food/pill/afterattack(obj/target, mob/user, proximity) + if(!proximity) return - if(target.is_open_container() != 0 && target.reagents) - if(!target.reagents.total_volume) - user << "[target] is empty. Cant dissolve [src]." - return + if(target.is_open_container() != 0 && target.reagents) + if(!target.reagents.total_volume) + user << "[target] is empty. Cant dissolve [src]." + return - // /vg/: Logging transfers of bad things - if(target.reagents_to_log.len) - var/list/badshit=list() - for(var/bad_reagent in target.reagents_to_log) - if(reagents.has_reagent(bad_reagent)) - badshit += reagents_to_log[bad_reagent] - if(badshit.len) - var/hl="\red ([english_list(badshit)]) \black" - message_admins("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl] (JMP)") - log_game("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].") + // /vg/: Logging transfers of bad things + if(target.reagents_to_log.len) + var/list/badshit=list() + for(var/bad_reagent in target.reagents_to_log) + if(reagents.has_reagent(bad_reagent)) + badshit += reagents_to_log[bad_reagent] + if(badshit.len) + var/hl="\red ([english_list(badshit)]) \black" + message_admins("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl] (JMP)") + log_game("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].") - user << "You dissolve [src] in [target]." - reagents.trans_to(target, reagents.total_volume) - for(var/mob/O in viewers(2, user)) - O.show_message("[user] puts something in [target].", 1) - spawn(5) - qdel(src) + user << "You dissolve [src] in [target]." + reagents.trans_to(target, reagents.total_volume) + for(var/mob/O in viewers(2, user)) + O.show_message("[user] puts something in [target].", 1) + spawn(5) + qdel(src) - return + return //////////////////////////////////////////////////////////////////////////////// /// Pills. END //////////////////////////////////////////////////////////////////////////////// //Pills -/obj/item/weapon/reagent_containers/pill/tox +/obj/item/weapon/reagent_containers/food/pill/tox name = "Toxins pill" desc = "Highly toxic." icon_state = "pill5" @@ -117,7 +69,7 @@ ..() reagents.add_reagent("toxin", 50) -/obj/item/weapon/reagent_containers/pill/initropidril +/obj/item/weapon/reagent_containers/food/pill/initropidril name = "initropidril pill" desc = "Don't swallow this." icon_state = "pill5" @@ -125,7 +77,7 @@ ..() reagents.add_reagent("initropidril", 50) -/obj/item/weapon/reagent_containers/pill/adminordrazine +/obj/item/weapon/reagent_containers/food/pill/adminordrazine name = "Adminordrazine pill" desc = "It's magic. We don't have to explain it." icon_state = "pill16" @@ -133,7 +85,7 @@ ..() reagents.add_reagent("adminordrazine", 50) -/obj/item/weapon/reagent_containers/pill/methamphetamine +/obj/item/weapon/reagent_containers/food/pill/methamphetamine name = "Methamphetamine pill" desc = "Helps improve the ability to concentrate." icon_state = "pill8" @@ -141,7 +93,7 @@ ..() reagents.add_reagent("methamphetamine", 5) -/obj/item/weapon/reagent_containers/pill/haloperidol +/obj/item/weapon/reagent_containers/food/pill/haloperidol name = "Haloperidol pill" desc = "Haloperidol is an anti-psychotic use to treat psychiatric problems." icon_state = "pill8" @@ -149,7 +101,7 @@ ..() reagents.add_reagent("haloperidol", 15) -/obj/item/weapon/reagent_containers/pill/paroxetine +/obj/item/weapon/reagent_containers/food/pill/paroxetine name = "Paroxetine pill" desc = "Heavy anti-depressant." icon_state = "pill8" @@ -158,7 +110,7 @@ reagents.add_reagent("paroxetine", 15) -/obj/item/weapon/reagent_containers/pill/happy +/obj/item/weapon/reagent_containers/food/pill/happy name = "Happy pill" desc = "Happy happy joy joy!" icon_state = "pill18" @@ -167,7 +119,7 @@ reagents.add_reagent("space_drugs", 15) reagents.add_reagent("sugar", 15) -/obj/item/weapon/reagent_containers/pill/zoom +/obj/item/weapon/reagent_containers/food/pill/zoom name = "Zoom pill" desc = "Zoooom!" icon_state = "pill18" @@ -176,7 +128,7 @@ reagents.add_reagent("synaptizine", 5) reagents.add_reagent("methamphetamine", 5) -/obj/item/weapon/reagent_containers/pill/charcoal +/obj/item/weapon/reagent_containers/food/pill/charcoal name = "Charcoal pill" desc = "Neutralizes many common toxins." icon_state = "pill17" @@ -184,7 +136,7 @@ ..() reagents.add_reagent("charcoal", 25) -/obj/item/weapon/reagent_containers/pill/salicylic +/obj/item/weapon/reagent_containers/food/pill/salicylic name = "Salicylic Acid pill" desc = "Commonly used to treat moderate pain and fevers." icon_state = "pill4" @@ -192,7 +144,7 @@ ..() reagents.add_reagent("sal_acid", 20) -/obj/item/weapon/reagent_containers/pill/salbutamol +/obj/item/weapon/reagent_containers/food/pill/salbutamol name = "Salbutamol pill" desc = "Used to treat respiratory distress." icon_state = "pill8"