From 307120e7d378381e7cd17dac930b4ded9a89338a Mon Sep 17 00:00:00 2001
From: DGamerL <108773801+DGamerL@users.noreply.github.com>
Date: Tue, 21 Nov 2023 16:37:16 +0100
Subject: [PATCH] Patches and pills are now no longer subtypes of food (#23063)
* Part 2 - feeding others doesn't work as intended
* Part 3: fixing force feeding
* Fixes patches being wack
* Makes this less ass
* Adds patches to the chemistry bag
* Update code/modules/mob/living/carbon/carbon.dm
* Update code/modules/mob/living/carbon/carbon.dm
* Some missed patches
* Apply suggestions from code review
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
* Fixes IPC logic
* Henri Review
* Add updatepaths
* Jimkil review
* IPCs now aren't allowed to eat pills and get patch
* Update code/modules/mob/living/carbon/carbon.dm
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
* Update code/modules/reagents/reagent_containers/patch.dm
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
* Update code/modules/mob/living/carbon/carbon.dm
---------
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
---
_maps/map_files/Delta/delta.dmm | 9 +-
_maps/map_files/MetaStation/MetaStation.dmm | 10 +-
code/__DEFINES/is_helpers.dm | 4 +-
code/__HELPERS/unsorted.dm | 4 +-
code/datums/outfits/outfit_admin.dm | 2 +-
.../machinery/vendors/contraband_vendors.dm | 2 +-
.../machinery/vendors/departmental_vendors.dm | 10 +-
.../game/machinery/vendors/generic_vendors.dm | 6 +-
code/game/objects/items/contraband.dm | 12 +-
code/game/objects/items/random_items.dm | 2 +-
.../objects/items/weapons/storage/bags.dm | 5 +-
.../objects/items/weapons/storage/belt.dm | 18 +-
.../objects/items/weapons/storage/boxes.dm | 10 +-
.../objects/items/weapons/storage/firstaid.dm | 88 +++++-----
code/game/objects/mail.dm | 2 +-
.../closets/secure/medical_lockers.dm | 38 ++--
code/modules/awaymissions/mob_spawn.dm | 2 +-
code/modules/clothing/suits/job_suits.dm | 2 +-
code/modules/clothing/suits/labcoat.dm | 2 +-
code/modules/food_and_drinks/food_base.dm | 5 -
.../kitchen_machinery/smartfridge.dm | 8 +-
code/modules/mob/living/carbon/carbon.dm | 164 +++++++++++-------
code/modules/mob/living/carbon/carbon_life.dm | 2 +-
.../chemistry/machinery/chem_master.dm | 4 +-
.../reagents/reagent_containers/patch.dm | 40 ++---
.../reagents/reagent_containers/pill.dm | 62 ++++---
code/modules/surgery/dental_implant.dm | 6 +-
.../UpdatePaths/Scripts/23063_patch_pill.txt | 2 +
28 files changed, 285 insertions(+), 236 deletions(-)
create mode 100644 tools/UpdatePaths/Scripts/23063_patch_pill.txt
diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index 09dcf365b7e..f9b4a3f4656 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -12916,7 +12916,7 @@
/obj/structure/table/reinforced,
/obj/item/clipboard,
/obj/item/folder/yellow,
-/obj/item/reagent_containers/food/pill/patch/silver_sulf,
+/obj/item/reagent_containers/patch/silver_sulf,
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/visible{
dir = 4
@@ -34505,7 +34505,12 @@
/obj/item/cartridge/engineering{
pixel_y = 6
},
-/obj/item/reagent_containers/food/pill/patch/silver_sulf,
+/obj/item/reagent_containers/patch/silver_sulf,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 9ea81bd6326..92e7b0969af 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -15060,7 +15060,7 @@
"beK" = (
/obj/structure/table/reinforced,
/obj/item/folder/yellow,
-/obj/item/reagent_containers/food/pill/patch/silver_sulf,
+/obj/item/reagent_containers/patch/silver_sulf,
/obj/item/stamp/ce,
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
@@ -62378,18 +62378,18 @@
pixel_x = 6;
pixel_y = 8
},
-/obj/item/reagent_containers/food/pill/patch/styptic{
+/obj/item/reagent_containers/patch/styptic{
pixel_y = 6
},
-/obj/item/reagent_containers/food/pill/patch/styptic{
+/obj/item/reagent_containers/patch/styptic{
pixel_x = 2;
pixel_y = 8
},
-/obj/item/reagent_containers/food/pill/patch/silver_sulf{
+/obj/item/reagent_containers/patch/silver_sulf{
pixel_x = -8;
pixel_y = 6
},
-/obj/item/reagent_containers/food/pill/patch/silver_sulf{
+/obj/item/reagent_containers/patch/silver_sulf{
pixel_x = -8;
pixel_y = 8
},
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index 21ed7400cef..fc43a57eb92 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -117,7 +117,9 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
// Misc
#define isclient(A) istype(A, /client)
#define isradio(A) istype(A, /obj/item/radio)
-#define ispill(A) istype(A, /obj/item/reagent_containers/food/pill)
+#define ispill(A) istype(A, /obj/item/reagent_containers/pill)
+#define ispatch(A) istype(A, /obj/item/reagent_containers/patch)
+#define isfood(A) istype(A, /obj/item/reagent_containers/food)
// Modsuits
#define ismodcontrol(A) istype(A, /obj/item/mod/control)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 9198d4e3632..89165b5726d 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1749,8 +1749,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
/obj/item/radio/headset = "HEADSET",
/obj/item/reagent_containers/glass/beaker = "BEAKER",
/obj/item/reagent_containers/glass/bottle = "BOTTLE",
- /obj/item/reagent_containers/food/pill/patch = "PATCH",
- /obj/item/reagent_containers/food/pill = "PILL",
+ /obj/item/reagent_containers/patch = "PATCH",
+ /obj/item/reagent_containers/pill = "PILL",
/obj/item/reagent_containers/food/drinks = "DRINK",
/obj/item/reagent_containers/food = "FOOD",
/obj/item/reagent_containers/syringe = "SYRINGE",
diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm
index 223f3acf047..ff720ea5db1 100644
--- a/code/datums/outfits/outfit_admin.dm
+++ b/code/datums/outfits/outfit_admin.dm
@@ -1315,7 +1315,7 @@
suit = /obj/item/clothing/suit/storage/det_suit
pda = /obj/item/pda/clown
l_ear = /obj/item/radio/headset
- r_pocket = /obj/item/reagent_containers/food/pill/patch/jestosterone
+ r_pocket = /obj/item/reagent_containers/patch/jestosterone
/datum/outfit/admin/honksquad/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
diff --git a/code/game/machinery/vendors/contraband_vendors.dm b/code/game/machinery/vendors/contraband_vendors.dm
index 72b5ebd5637..be658bffa8e 100644
--- a/code/game/machinery/vendors/contraband_vendors.dm
+++ b/code/game/machinery/vendors/contraband_vendors.dm
@@ -21,7 +21,7 @@
/obj/item/healthanalyzer = 1)
contraband = list(/obj/item/reagent_containers/syringe/antiviral = 4,
- /obj/item/reagent_containers/food/pill/tox = 1)
+ /obj/item/reagent_containers/pill/tox = 1)
/obj/machinery/economy/vending/syndicigs
name = "\improper Suspicious Cigarette Machine"
diff --git a/code/game/machinery/vendors/departmental_vendors.dm b/code/game/machinery/vendors/departmental_vendors.dm
index 8dc59113a03..15dc44926ef 100644
--- a/code/game/machinery/vendors/departmental_vendors.dm
+++ b/code/game/machinery/vendors/departmental_vendors.dm
@@ -250,8 +250,8 @@
products = list(/obj/item/reagent_containers/hypospray/autoinjector/epinephrine = 4,
/obj/item/stack/medical/bruise_pack/advanced = 2,
/obj/item/stack/medical/ointment/advanced = 2,
- /obj/item/reagent_containers/food/pill/patch/styptic = 3,
- /obj/item/reagent_containers/food/pill/patch/silver_sulf = 3,
+ /obj/item/reagent_containers/patch/styptic = 3,
+ /obj/item/reagent_containers/patch/silver_sulf = 3,
/obj/item/reagent_containers/applicator/brute = 2,
/obj/item/reagent_containers/applicator/burn = 2,
/obj/item/stack/medical/bruise_pack = 2,
@@ -268,9 +268,9 @@
/obj/item/reagent_containers/syringe/antiviral = 3,
/obj/item/reagent_containers/syringe/calomel = 3,
/obj/item/reagent_containers/syringe/heparin = 3,
- /obj/item/reagent_containers/food/pill/salbutamol = 5,
- /obj/item/reagent_containers/food/pill/mannitol = 5,
- /obj/item/reagent_containers/food/pill/mutadone = 5,
+ /obj/item/reagent_containers/pill/salbutamol = 5,
+ /obj/item/reagent_containers/pill/mannitol = 5,
+ /obj/item/reagent_containers/pill/mutadone = 5,
/obj/item/reagent_containers/glass/beaker = 3,
/obj/item/reagent_containers/dropper = 3,
/obj/item/reagent_containers/hypospray/safety = 2,
diff --git a/code/game/machinery/vendors/generic_vendors.dm b/code/game/machinery/vendors/generic_vendors.dm
index b3789e199ae..22bb68d3b4b 100644
--- a/code/game/machinery/vendors/generic_vendors.dm
+++ b/code/game/machinery/vendors/generic_vendors.dm
@@ -1192,7 +1192,7 @@
/obj/item/storage/fancy/cigarettes/cigpack_random = 6,
/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1,
/obj/item/clothing/mask/cigarette/cigar/havana = 2,
- /obj/item/reagent_containers/food/pill/patch/nicotine = 10,
+ /obj/item/reagent_containers/patch/nicotine = 10,
/obj/item/storage/box/matches = 10,
/obj/item/lighter/random = 4,
/obj/item/lighter/zippo = 2)
@@ -1205,7 +1205,7 @@
/obj/item/storage/fancy/cigarettes/cigpack_midori = 60,
/obj/item/storage/fancy/cigarettes/cigpack_random = 80,
/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 120,
- /obj/item/reagent_containers/food/pill/patch/nicotine = 70,
+ /obj/item/reagent_containers/patch/nicotine = 70,
/obj/item/storage/box/matches = 20,
/obj/item/lighter/random = 40,
/obj/item/lighter/zippo = 80,
@@ -1282,7 +1282,7 @@
/obj/item/healthanalyzer = 1)
contraband = list(/obj/item/reagent_containers/syringe/antiviral = 4,
- /obj/item/reagent_containers/food/pill/tox = 1)
+ /obj/item/reagent_containers/pill/tox = 1)
armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, RAD = 0, FIRE = 100, ACID = 70)
//this shouldn't be priced
diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm
index ad6d886cd37..3af05bb9a1c 100644
--- a/code/game/objects/items/contraband.dm
+++ b/code/game/objects/items/contraband.dm
@@ -8,8 +8,8 @@
/obj/item/storage/pill_bottle/happy/populate_contents()
for(var/i in 1 to 5)
- new /obj/item/reagent_containers/food/pill/happy(src)
- new /obj/item/reagent_containers/food/pill/happy/happiness(src)
+ new /obj/item/reagent_containers/pill/happy(src)
+ new /obj/item/reagent_containers/pill/happy/happiness(src)
/obj/item/storage/pill_bottle/zoom
name = "Zoom pills"
@@ -18,13 +18,13 @@
/obj/item/storage/pill_bottle/zoom/populate_contents()
for(var/i in 1 to 7)
- new /obj/item/reagent_containers/food/pill/zoom(src)
+ new /obj/item/reagent_containers/pill/zoom(src)
-/obj/item/reagent_containers/food/pill/random_drugs
+/obj/item/reagent_containers/pill/random_drugs
name = "pill"
desc = "A cocktail of illicit designer drugs, who knows what might be in here."
-/obj/item/reagent_containers/food/pill/random_drugs/Initialize(mapload)
+/obj/item/reagent_containers/pill/random_drugs/Initialize(mapload)
. = ..()
icon_state = "pill" + pick("2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20")
@@ -48,4 +48,4 @@
/obj/item/storage/pill_bottle/random_drug_bottle/Initialize(mapload)
. = ..()
for(var/i in 1 to 5)
- new /obj/item/reagent_containers/food/pill/random_drugs(src)
+ new /obj/item/reagent_containers/pill/random_drugs(src)
diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm
index 874ab450ce7..bbb75fa65f9 100644
--- a/code/game/objects/items/random_items.dm
+++ b/code/game/objects/items/random_items.dm
@@ -61,7 +61,7 @@
var/possible_meds = is_rare ? possible_meds_rare : possible_meds_standard
var/datum/reagent/R = pick(possible_meds)
- var/obj/item/reagent_containers/food/pill/P = new(src)
+ var/obj/item/reagent_containers/pill/P = new(src)
if(is_rare)
P.reagents.add_reagent(R, 10)
diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index 6fed959f886..fbcd813e504 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -520,7 +520,10 @@
storage_slots = 50
max_combined_w_class = 200
w_class = WEIGHT_CLASS_TINY
- can_hold = list(/obj/item/reagent_containers/food/pill,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle)
+ can_hold = list(/obj/item/reagent_containers/pill,
+ /obj/item/reagent_containers/patch,
+ /obj/item/reagent_containers/glass/beaker,
+ /obj/item/reagent_containers/glass/bottle)
resistance_flags = FLAMMABLE
/*
* 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 1e2dc9bff03..e71d266c3d2 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -175,7 +175,7 @@
/obj/item/reagent_containers/dropper,
/obj/item/reagent_containers/glass/beaker,
/obj/item/reagent_containers/glass/bottle,
- /obj/item/reagent_containers/food/pill,
+ /obj/item/reagent_containers/pill,
/obj/item/reagent_containers/syringe,
/obj/item/lighter/zippo,
/obj/item/storage/fancy/cigarettes,
@@ -227,13 +227,13 @@
update_icon()
/obj/item/storage/belt/medical/response_team/populate_contents()
- new /obj/item/reagent_containers/food/pill/salbutamol(src)
- new /obj/item/reagent_containers/food/pill/salbutamol(src)
- new /obj/item/reagent_containers/food/pill/charcoal(src)
- new /obj/item/reagent_containers/food/pill/charcoal(src)
- new /obj/item/reagent_containers/food/pill/salicylic(src)
- new /obj/item/reagent_containers/food/pill/salicylic(src)
- new /obj/item/reagent_containers/food/pill/salicylic(src)
+ new /obj/item/reagent_containers/pill/salbutamol(src)
+ new /obj/item/reagent_containers/pill/salbutamol(src)
+ new /obj/item/reagent_containers/pill/charcoal(src)
+ new /obj/item/reagent_containers/pill/charcoal(src)
+ new /obj/item/reagent_containers/pill/salicylic(src)
+ new /obj/item/reagent_containers/pill/salicylic(src)
+ new /obj/item/reagent_containers/pill/salicylic(src)
update_icon()
/obj/item/storage/belt/botany
@@ -926,7 +926,7 @@
/obj/item/storage/bag/ore,
/obj/item/survivalcapsule,
/obj/item/t_scanner/adv_mining_scanner,
- /obj/item/reagent_containers/food/pill,
+ /obj/item/reagent_containers/pill,
/obj/item/storage/pill_bottle,
/obj/item/stack/ore,
/obj/item/reagent_containers/food/drinks,
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 4397e08b661..52e11f4a208 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -92,7 +92,7 @@
new /obj/item/tank/internals/emergency_oxygen/engi/syndi(src)
new /obj/item/crowbar/small(src)
new /obj/item/reagent_containers/hypospray/autoinjector/epinephrine(src)
- new /obj/item/reagent_containers/food/pill/initropidril(src)
+ new /obj/item/reagent_containers/pill/initropidril(src)
new /obj/item/flashlight/flare/glowstick/red(src)
/obj/item/storage/box/gloves
@@ -839,7 +839,7 @@
new /obj/item/flashlight/flare(src)
new /obj/item/kitchen/knife/combat(src)
new /obj/item/radio/centcom(src)
- new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
+ new /obj/item/reagent_containers/patch/synthflesh(src)
new /obj/item/reagent_containers/hypospray/autoinjector/epinephrine(src)
/obj/item/storage/box/deathsquad
@@ -850,7 +850,7 @@
new /obj/item/flashlight/flare(src)
new /obj/item/crowbar/small(src)
new /obj/item/kitchen/knife/combat(src)
- new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
+ new /obj/item/reagent_containers/patch/synthflesh(src)
new /obj/item/reagent_containers/hypospray/autoinjector/survival(src)
new /obj/item/ammo_box/a357(src)
new /obj/item/ammo_box/a357(src)
@@ -867,8 +867,8 @@
new /obj/item/flashlight/flare(src)
new /obj/item/crowbar/red(src)
new /obj/item/kitchen/knife/combat(src)
- new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
- new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
+ new /obj/item/reagent_containers/patch/synthflesh(src)
+ new /obj/item/reagent_containers/patch/synthflesh(src)
/obj/item/storage/box/clown
name = "clown box"
diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
index 23cb103c9f6..92d06d52b92 100644
--- a/code/game/objects/items/weapons/storage/firstaid.dm
+++ b/code/game/objects/items/weapons/storage/firstaid.dm
@@ -38,10 +38,10 @@
/obj/item/storage/firstaid/fire/populate_contents()
new /obj/item/reagent_containers/applicator/burn(src)
- new /obj/item/reagent_containers/food/pill/patch/silver_sulf/small(src)
+ new /obj/item/reagent_containers/patch/silver_sulf/small(src)
new /obj/item/healthanalyzer(src)
new /obj/item/reagent_containers/hypospray/autoinjector/epinephrine(src)
- new /obj/item/reagent_containers/food/pill/salicylic(src)
+ new /obj/item/reagent_containers/pill/salicylic(src)
/obj/item/storage/firstaid/fire/empty/populate_contents()
return
@@ -51,11 +51,11 @@
icon_state = "firstaid"
/obj/item/storage/firstaid/regular/populate_contents()
- new /obj/item/reagent_containers/food/pill/patch/styptic(src)
- new /obj/item/reagent_containers/food/pill/patch/styptic(src)
- new /obj/item/reagent_containers/food/pill/salicylic(src)
- new /obj/item/reagent_containers/food/pill/patch/silver_sulf(src)
- new /obj/item/reagent_containers/food/pill/patch/silver_sulf(src)
+ new /obj/item/reagent_containers/patch/styptic(src)
+ new /obj/item/reagent_containers/patch/styptic(src)
+ new /obj/item/reagent_containers/pill/salicylic(src)
+ new /obj/item/reagent_containers/patch/silver_sulf(src)
+ new /obj/item/reagent_containers/patch/silver_sulf(src)
new /obj/item/healthanalyzer(src)
new /obj/item/reagent_containers/hypospray/autoinjector/epinephrine(src)
@@ -69,9 +69,9 @@
/obj/item/storage/firstaid/doctor/populate_contents()
new /obj/item/reagent_containers/applicator/brute(src)
new /obj/item/reagent_containers/applicator/burn(src)
- new /obj/item/reagent_containers/food/pill/patch/styptic(src)
- new /obj/item/reagent_containers/food/pill/patch/silver_sulf(src)
- new /obj/item/reagent_containers/food/pill/salicylic(src)
+ new /obj/item/reagent_containers/patch/styptic(src)
+ new /obj/item/reagent_containers/patch/silver_sulf(src)
+ new /obj/item/reagent_containers/pill/salicylic(src)
new /obj/item/healthanalyzer/advanced(src)
new /obj/item/reagent_containers/hypospray/autoinjector/epinephrine(src)
@@ -89,7 +89,7 @@
/obj/item/storage/firstaid/toxin/populate_contents()
for(var/I in 1 to 3)
new /obj/item/reagent_containers/syringe/charcoal(src)
- new /obj/item/reagent_containers/food/pill/charcoal(src)
+ new /obj/item/reagent_containers/pill/charcoal(src)
new /obj/item/healthanalyzer(src)
/obj/item/storage/firstaid/toxin/empty/populate_contents()
@@ -103,10 +103,10 @@
med_bot_skin = "o2"
/obj/item/storage/firstaid/o2/populate_contents()
- new /obj/item/reagent_containers/food/pill/salbutamol(src)
- new /obj/item/reagent_containers/food/pill/salbutamol(src)
- new /obj/item/reagent_containers/food/pill/salbutamol(src)
- new /obj/item/reagent_containers/food/pill/salbutamol(src)
+ new /obj/item/reagent_containers/pill/salbutamol(src)
+ new /obj/item/reagent_containers/pill/salbutamol(src)
+ new /obj/item/reagent_containers/pill/salbutamol(src)
+ new /obj/item/reagent_containers/pill/salbutamol(src)
new /obj/item/healthanalyzer(src)
/obj/item/storage/firstaid/o2/empty/populate_contents()
@@ -125,7 +125,7 @@
/obj/item/storage/firstaid/brute/populate_contents()
new /obj/item/reagent_containers/applicator/brute(src)
- new /obj/item/reagent_containers/food/pill/patch/styptic/small(src)
+ new /obj/item/reagent_containers/patch/styptic/small(src)
new /obj/item/healthanalyzer(src)
new /obj/item/reagent_containers/hypospray/autoinjector/epinephrine(src)
new /obj/item/stack/medical/bruise_pack(src)
@@ -257,8 +257,8 @@
belt_icon = "pill_bottle"
use_sound = "pillbottle"
w_class = WEIGHT_CLASS_SMALL
- can_hold = list(/obj/item/reagent_containers/food/pill)
- cant_hold = list(/obj/item/reagent_containers/food/pill/patch)
+ can_hold = list(/obj/item/reagent_containers/pill)
+ cant_hold = list(/obj/item/reagent_containers/patch)
allow_quick_gather = TRUE
use_to_pickup = TRUE
storage_slots = 50
@@ -295,7 +295,7 @@
to_chat(user, "You are already applying meds.")
return
applying_meds = TRUE
- for(var/obj/item/reagent_containers/food/pill/P in contents)
+ for(var/obj/item/reagent_containers/pill/P in contents)
if(P.attack(M, user))
applying_meds = FALSE
else
@@ -309,31 +309,31 @@
/obj/item/storage/pill_bottle/ert_red/populate_contents()
for(var/I in 1 to 6)
- new /obj/item/reagent_containers/food/pill/pentetic(src)
- new /obj/item/reagent_containers/food/pill/ironsaline(src)
- new /obj/item/reagent_containers/food/pill/salicylic(src)
- new /obj/item/reagent_containers/food/pill/mannitol(src)
+ new /obj/item/reagent_containers/pill/pentetic(src)
+ new /obj/item/reagent_containers/pill/ironsaline(src)
+ new /obj/item/reagent_containers/pill/salicylic(src)
+ new /obj/item/reagent_containers/pill/mannitol(src)
/obj/item/storage/pill_bottle/ert_amber
wrapper_color = COLOR_ORANGE
/obj/item/storage/pill_bottle/ert_amber/populate_contents()
for(var/I in 1 to 6)
- new /obj/item/reagent_containers/food/pill/salbutamol(src)
- new /obj/item/reagent_containers/food/pill/charcoal(src)
- new /obj/item/reagent_containers/food/pill/salicylic(src)
+ new /obj/item/reagent_containers/pill/salbutamol(src)
+ new /obj/item/reagent_containers/pill/charcoal(src)
+ new /obj/item/reagent_containers/pill/salicylic(src)
/obj/item/storage/pill_bottle/ert_gamma
wrapper_color = COLOR_YELLOW_GRAY
/obj/item/storage/pill_bottle/ert_gamma/populate_contents()
for(var/I in 1 to 6)
- new /obj/item/reagent_containers/food/pill/pentetic(src)
- new /obj/item/reagent_containers/food/pill/ironsaline(src)
- new /obj/item/reagent_containers/food/pill/hydrocodone(src)
- new /obj/item/reagent_containers/food/pill/mannitol(src)
- new /obj/item/reagent_containers/food/pill/lazarus_reagent(src)
- new /obj/item/reagent_containers/food/pill/rezadone(src)
+ new /obj/item/reagent_containers/pill/pentetic(src)
+ new /obj/item/reagent_containers/pill/ironsaline(src)
+ new /obj/item/reagent_containers/pill/hydrocodone(src)
+ new /obj/item/reagent_containers/pill/mannitol(src)
+ new /obj/item/reagent_containers/pill/lazarus_reagent(src)
+ new /obj/item/reagent_containers/pill/rezadone(src)
/obj/item/storage/pill_bottle/MouseDrop(obj/over_object) // Best utilized if you're a cantankerous doctor with a Vicodin habit.
if(iscarbon(over_object))
@@ -344,7 +344,7 @@
return
C.visible_message("[C] [rapid_intake_message]")
if(do_mob(C, C, 100)) // 10 seconds
- for(var/obj/item/reagent_containers/food/pill/P in contents)
+ for(var/obj/item/reagent_containers/pill/P in contents)
P.attack(C, C)
C.visible_message("[C] [rapid_post_instake_message]")
return
@@ -363,7 +363,7 @@
icon_state = "patch_pack"
belt_icon = "patch_pack"
use_sound = "patchpack"
- can_hold = list(/obj/item/reagent_containers/food/pill/patch)
+ can_hold = list(/obj/item/reagent_containers/patch)
cant_hold = list()
rapid_intake_message = "flips the lid of the patch pack open and begins rapidly stamping patches on themselves!"
rapid_post_instake_message = "stamps the entire contents of the patch pack all over their entire body!"
@@ -376,7 +376,7 @@
/obj/item/storage/pill_bottle/charcoal/populate_contents()
for(var/I in 1 to 7)
- new /obj/item/reagent_containers/food/pill/charcoal(src)
+ new /obj/item/reagent_containers/pill/charcoal(src)
/obj/item/storage/pill_bottle/painkillers
name = "Pill Bottle (Salicylic Acid)"
@@ -385,15 +385,15 @@
/obj/item/storage/pill_bottle/painkillers/populate_contents()
for(var/I in 1 to 8)
- new /obj/item/reagent_containers/food/pill/salicylic(src)
+ new /obj/item/reagent_containers/pill/salicylic(src)
/obj/item/storage/pill_bottle/fakedeath
allow_wrap = FALSE
/obj/item/storage/pill_bottle/fakedeath/populate_contents()
- new /obj/item/reagent_containers/food/pill/fakedeath(src)
- new /obj/item/reagent_containers/food/pill/fakedeath(src)
- new /obj/item/reagent_containers/food/pill/fakedeath(src)
+ new /obj/item/reagent_containers/pill/fakedeath(src)
+ new /obj/item/reagent_containers/pill/fakedeath(src)
+ new /obj/item/reagent_containers/pill/fakedeath(src)
/obj/item/storage/pill_bottle/patch_pack/ert
name = "ert red patch pack"
@@ -402,9 +402,9 @@
/obj/item/storage/pill_bottle/patch_pack/ert/populate_contents()
for(var/I in 1 to 5)
- new /obj/item/reagent_containers/food/pill/patch/perfluorodecalin(src)
- new /obj/item/reagent_containers/food/pill/patch/silver_sulf(src)
- new /obj/item/reagent_containers/food/pill/patch/styptic(src)
+ new /obj/item/reagent_containers/patch/perfluorodecalin(src)
+ new /obj/item/reagent_containers/patch/silver_sulf(src)
+ new /obj/item/reagent_containers/patch/styptic(src)
/obj/item/storage/pill_bottle/patch_pack/ert/gamma
name = "ert gamma patch pack"
@@ -418,5 +418,5 @@
/obj/item/storage/pill_bottle/patch_pack/ert_amber/populate_contents()
for(var/I in 1 to 5)
- new /obj/item/reagent_containers/food/pill/patch/silver_sulf/small(src)
- new /obj/item/reagent_containers/food/pill/patch/styptic/small(src)
+ new /obj/item/reagent_containers/patch/silver_sulf/small(src)
+ new /obj/item/reagent_containers/patch/styptic/small(src)
diff --git a/code/game/objects/mail.dm b/code/game/objects/mail.dm
index 3a24bf4c67f..13f6601ecb7 100644
--- a/code/game/objects/mail.dm
+++ b/code/game/objects/mail.dm
@@ -181,7 +181,7 @@
/obj/item/storage/fancy/cigarettes/cigpack_robustgold,
/obj/item/poster/random_official,
/obj/item/book/manual/wiki/sop_command,
- /obj/item/reagent_containers/food/pill/patch/synthflesh,
+ /obj/item/reagent_containers/patch/synthflesh,
/obj/item/paper_bin/nanotrasen,
/obj/item/reagent_containers/food/snacks/spesslaw,
/obj/item/clothing/head/collectable/petehat,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm
index 65b4cb3b908..7ef37f41ed3 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm
@@ -97,25 +97,25 @@
// Why the hell is this in the closets folder?
/obj/item/storage/pill_bottle/psychiatrist/populate_contents()
- new /obj/item/reagent_containers/food/pill/haloperidol(src)
- new /obj/item/reagent_containers/food/pill/haloperidol(src)
- new /obj/item/reagent_containers/food/pill/haloperidol(src)
- new /obj/item/reagent_containers/food/pill/methamphetamine(src)
- new /obj/item/reagent_containers/food/pill/methamphetamine(src)
- new /obj/item/reagent_containers/food/pill/methamphetamine(src)
- new /obj/item/reagent_containers/food/pill/happy_psych(src)
- new /obj/item/reagent_containers/food/pill/happy_psych(src)
- new /obj/item/reagent_containers/food/pill/happy_psych(src)
- new /obj/item/reagent_containers/food/pill/patch/nicotine(src)
- new /obj/item/reagent_containers/food/pill/patch/nicotine(src)
- new /obj/item/reagent_containers/food/pill/patch/nicotine(src)
- new /obj/item/reagent_containers/food/pill/hydrocodone(src)
- new /obj/item/reagent_containers/food/pill/hydrocodone(src)
- new /obj/item/reagent_containers/food/pill/mannitol(src)
- new /obj/item/reagent_containers/food/pill/mannitol(src)
- new /obj/item/reagent_containers/food/pill/mannitol(src)
- new /obj/item/reagent_containers/food/pill/mannitol(src)
- new /obj/item/reagent_containers/food/pill/mannitol(src)
+ new /obj/item/reagent_containers/pill/haloperidol(src)
+ new /obj/item/reagent_containers/pill/haloperidol(src)
+ new /obj/item/reagent_containers/pill/haloperidol(src)
+ new /obj/item/reagent_containers/pill/methamphetamine(src)
+ new /obj/item/reagent_containers/pill/methamphetamine(src)
+ new /obj/item/reagent_containers/pill/methamphetamine(src)
+ new /obj/item/reagent_containers/pill/happy_psych(src)
+ new /obj/item/reagent_containers/pill/happy_psych(src)
+ new /obj/item/reagent_containers/pill/happy_psych(src)
+ new /obj/item/reagent_containers/patch/nicotine(src)
+ new /obj/item/reagent_containers/patch/nicotine(src)
+ new /obj/item/reagent_containers/patch/nicotine(src)
+ new /obj/item/reagent_containers/pill/hydrocodone(src)
+ new /obj/item/reagent_containers/pill/hydrocodone(src)
+ new /obj/item/reagent_containers/pill/mannitol(src)
+ new /obj/item/reagent_containers/pill/mannitol(src)
+ new /obj/item/reagent_containers/pill/mannitol(src)
+ new /obj/item/reagent_containers/pill/mannitol(src)
+ new /obj/item/reagent_containers/pill/mannitol(src)
/obj/structure/closet/secure_closet/psychiatrist
name = "psychiatrist's locker"
diff --git a/code/modules/awaymissions/mob_spawn.dm b/code/modules/awaymissions/mob_spawn.dm
index 83b6294addd..ed30ed2b5ff 100644
--- a/code/modules/awaymissions/mob_spawn.dm
+++ b/code/modules/awaymissions/mob_spawn.dm
@@ -575,7 +575,7 @@
shoes = /obj/item/clothing/shoes/workboots
l_ear = /obj/item/radio/headset/headset_cargo/mining
id = /obj/item/card/id/shaftminer
- l_pocket = /obj/item/reagent_containers/food/pill/patch/styptic
+ l_pocket = /obj/item/reagent_containers/patch/styptic
r_pocket = /obj/item/flashlight/seclite
//Scientist corpse.
diff --git a/code/modules/clothing/suits/job_suits.dm b/code/modules/clothing/suits/job_suits.dm
index 53b42f0e0b7..0984dc2c347 100644
--- a/code/modules/clothing/suits/job_suits.dm
+++ b/code/modules/clothing/suits/job_suits.dm
@@ -348,5 +348,5 @@
desc = "A tweed mantle, worn by the Research Director. Smells like science."
icon_state = "rdmantle"
item_state = "rdmantle"
- allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/applicator, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/food/pill, /obj/item/storage/pill_bottle, /obj/item/paper)
+ allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/applicator, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper)
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 50, ACID = 50)
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index e6c574897b0..4c535d35c15 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/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/applicator, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/food/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/robotanalyzer)
+ allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/applicator, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/robotanalyzer)
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 50, ACID = 50)
species_exception = list(/datum/species/golem)
sprite_sheets = list(
diff --git a/code/modules/food_and_drinks/food_base.dm b/code/modules/food_and_drinks/food_base.dm
index b2dafb1a3d8..8da6483aef5 100644
--- a/code/modules/food_and_drinks/food_base.dm
+++ b/code/modules/food_and_drinks/food_base.dm
@@ -9,11 +9,6 @@
var/junkiness = 0 //for junk food. used to lower human satiety.
var/bitesize = 2
var/consume_sound = 'sound/items/eatfood.ogg'
- var/apply_type = REAGENT_INGEST
- var/apply_method = "swallow"
- var/transfer_efficiency = 1.0
- var/instant_application = 0 //if we want to bypass the forcedfeed delay
- var/can_taste = TRUE//whether you can taste eating from this
var/antable = TRUE // Will ants come near it?
/// location checked every 5 minutes. If its the same place, the food has a chance to spawn ants
var/ant_location
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index bcfb364c33c..ba792cbf8f1 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -578,7 +578,7 @@
/obj/item/reagent_containers/iv_bag,
/obj/item/reagent_containers/applicator,
/obj/item/storage/pill_bottle,
- /obj/item/reagent_containers/food/pill,
+ /obj/item/reagent_containers/pill,
/obj/item/stack/medical
))
@@ -618,7 +618,7 @@
/obj/item/reagent_containers/iv_bag,
/obj/item/reagent_containers/applicator,
/obj/item/storage/pill_bottle,
- /obj/item/reagent_containers/food/pill,
+ /obj/item/reagent_containers/pill,
/obj/item/stack/medical
))
@@ -652,8 +652,8 @@
/obj/machinery/smartfridge/secure/chemistry/preloaded/Initialize(mapload)
starting_items = list(
- /obj/item/reagent_containers/food/pill/epinephrine = 12,
- /obj/item/reagent_containers/food/pill/charcoal = 5,
+ /obj/item/reagent_containers/pill/epinephrine = 12,
+ /obj/item/reagent_containers/pill/charcoal = 5,
/obj/item/reagent_containers/glass/bottle/epinephrine = 1,
/obj/item/reagent_containers/glass/bottle/charcoal = 1,
)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index c245a8acbfc..d69ec32c28b 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -515,7 +515,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
var/failed = 0
if(istype(I, /obj/item/implant))
continue
- if(istype(I, /obj/item/reagent_containers/food/pill/patch))
+ if(istype(I, /obj/item/reagent_containers/patch))
continue
if(I.flags & ABSTRACT)
continue
@@ -1133,87 +1133,133 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
return shock_reduction
/mob/living/carbon/proc/can_eat(flags = 255)
- return 1
+ return TRUE
-/mob/living/carbon/proc/eat(obj/item/reagent_containers/food/toEat, mob/user, bitesize_override)
- if(!istype(toEat))
- return 0
+/mob/living/carbon/proc/eat(obj/item/reagent_containers/to_eat, mob/user, bitesize_override)
+ if(ispill(to_eat) || ispatch(to_eat))
+ return consume_patch_or_pill(to_eat, user)
+
+ if(!isfood(to_eat)) // We first have to know if it's either a pill or a patch, only then can we check if it's a food item
+ return FALSE
+
+ var/obj/item/reagent_containers/food/food = to_eat // It's not a patch or a pill so it must be food
var/fullness = nutrition + 10
- if(istype(toEat, /obj/item/reagent_containers/food/snacks))
+ if(istype(food, /obj/item/reagent_containers/food/snacks))
for(var/datum/reagent/consumable/C in reagents.reagent_list) //we add the nutrition value of what we're currently digesting
fullness += C.nutriment_factor * C.volume / (C.metabolization_rate * metabolism_efficiency)
- if(user == src)
- if(istype(toEat, /obj/item/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, bitesize_override, can_taste_container = toEat.can_taste)
- SSticker.score.score_food_eaten++
- return 1
-/mob/living/carbon/proc/selfFeed(obj/item/reagent_containers/food/toEat, fullness)
- if(ispill(toEat))
- to_chat(src, "You [toEat.apply_method] [toEat].")
+ if(user == src)
+ if(istype(food, /obj/item/reagent_containers/food/drinks))
+ if(!selfDrink(food))
+ return FALSE
+ else
+ if(!selfFeed(food, fullness))
+ return FALSE
else
- if(toEat.junkiness && satiety < -150 && nutrition > NUTRITION_LEVEL_STARVING + 50)
+ if(!forceFed(food, user, fullness))
+ return FALSE
+
+ consume(food, bitesize_override)
+ SSticker.score.score_food_eaten++
+ return TRUE
+
+/mob/living/carbon/proc/selfFeed(obj/item/reagent_containers/food/to_eat, fullness)
+ if(ispill(to_eat))
+ to_chat(src, "You swallow [to_eat].")
+ else if(ispatch(to_eat))
+ to_chat(src, "You apply [to_eat].")
+ else
+ if(to_eat.junkiness && satiety < -150 && nutrition > NUTRITION_LEVEL_STARVING + 50)
to_chat(src, "You don't feel like eating any more junk food at the moment.")
- return 0
+ return FALSE
if(fullness <= 50)
- to_chat(src, "You hungrily chew out a piece of [toEat] and gobble it!")
+ to_chat(src, "You hungrily chew out a piece of [to_eat] and gobble it!")
else if(fullness > 50 && fullness < 150)
- to_chat(src, "You hungrily begin to eat [toEat].")
+ to_chat(src, "You hungrily begin to eat [to_eat].")
else if(fullness > 150 && fullness < 500)
- to_chat(src, "You take a bite of [toEat].")
+ to_chat(src, "You take a bite of [to_eat].")
else if(fullness > 500 && fullness < 600)
- to_chat(src, "You unwillingly chew a bit of [toEat].")
+ to_chat(src, "You unwillingly chew a bit of [to_eat].")
else if(fullness > (600 * (1 + overeatduration / 2000))) // The more you eat - the more you can eat
- to_chat(src, "You cannot force any more of [toEat] to go down your throat.")
- return 0
- return 1
+ to_chat(src, "You cannot force any more of [to_eat] to go down your throat.")
+ return FALSE
+ return TRUE
/mob/living/carbon/proc/selfDrink(obj/item/reagent_containers/food/drinks/toDrink, mob/user)
- return 1
+ return TRUE
-/mob/living/carbon/proc/forceFed(obj/item/reagent_containers/food/toEat, mob/user, fullness)
- if(ispill(toEat) || fullness <= (600 * (1 + overeatduration / 1000)))
- if(!toEat.instant_application)
- 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(!toEat.instant_application)
- 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/forceFed(obj/item/reagent_containers/to_eat, mob/user, fullness)
+ if(fullness > (600 * (1 + overeatduration / 1000)))
+ visible_message("[user] cannot force anymore of [to_eat] down [src]'s throat.")
+ return FALSE
-/mob/living/carbon/proc/forceFedAttackLog(obj/item/reagent_containers/food/toEat, mob/user)
- add_attack_logs(user, src, "Fed [toEat]. Reagents: [toEat.reagents.log_list(toEat)]", toEat.reagents.harmless_helper() ? ATKLOG_ALMOSTALL : null)
+ visible_message("[user] attempts to force [src] to swallow [to_eat].")
+ if(!do_after(user, 3 SECONDS, TRUE, src))
+ return FALSE
+ forceFedAttackLog(to_eat, user)
+ visible_message("[user] forces [src] to swallow [to_eat].")
+ return TRUE
+/mob/living/carbon/proc/forceFedAttackLog(obj/item/reagent_containers/to_eat, mob/user)
+ add_attack_logs(user, src, "Fed [to_eat]. Reagents: [to_eat.reagents.log_list(to_eat)]", to_eat.reagents.harmless_helper() ? ATKLOG_ALMOSTALL : null)
/*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(obj/item/reagent_containers/food/toEat, bitesize_override, can_taste_container = TRUE)
- var/this_bite = bitesize_override ? bitesize_override : toEat.bitesize
- if(!toEat.reagents)
+/mob/living/carbon/proc/consume(obj/item/reagent_containers/food/to_eat, bitesize_override)
+ var/this_bite = bitesize_override ? bitesize_override : to_eat.bitesize
+ if(!to_eat.reagents)
return
if(satiety > -200)
- satiety -= toEat.junkiness
- if(toEat.consume_sound)
- playsound(loc, toEat.consume_sound, rand(10,50), 1)
- if(toEat.reagents.total_volume)
- if(can_taste_container)
- taste(toEat.reagents)
- var/fraction = min(this_bite/toEat.reagents.total_volume, 1)
+ satiety -= to_eat.junkiness
+ if(to_eat.consume_sound)
+ playsound(loc, to_eat.consume_sound, rand(10, 50), TRUE)
+ if(to_eat.reagents.total_volume)
+ taste(to_eat.reagents)
+ var/fraction = min(this_bite / to_eat.reagents.total_volume, 1)
if(fraction)
- toEat.reagents.reaction(src, toEat.apply_type, fraction)
- toEat.reagents.trans_to(src, this_bite*toEat.transfer_efficiency)
+ to_eat.reagents.reaction(src, REAGENT_INGEST, fraction)
+ to_eat.reagents.trans_to(src, this_bite)
+
+/mob/living/carbon/proc/consume_patch_or_pill(obj/item/reagent_containers/medicine, user) // medicine = patch or pill
+ // The reason why this is bundled up is to avoid 2 procs that will be practically identical
+ if(!medicine.reagents.total_volume)
+ return TRUE // Doesn't have reagents, would be fine to use up
+
+ if(!dna.species.dietflags) // You will not feed the IPC
+ to_chat(user, "You cannot feed [src] [medicine]!")
+ return FALSE
+
+ var/apply_method = "swallow"
+ var/reagent_application = REAGENT_INGEST
+ var/requires_mouth = TRUE
+ var/instant = FALSE
+ var/efficiency = 1
+
+ if(ispatch(medicine))
+ apply_method = "apply"
+ reagent_application = REAGENT_TOUCH
+ requires_mouth = FALSE
+ efficiency = 0.5 // Patches aren't that good at transporting reagents into the bloodstream
+ var/obj/item/reagent_containers/patch/patch = medicine
+ if(patch.instant_application)
+ instant = TRUE
+
+ if(user != src && !instant)
+ if(requires_mouth && !head)
+ to_chat(user, "You cannot feed [src] [medicine]!")
+ return FALSE
+ visible_message("[user] attempts to force [src] to [apply_method] [medicine].")
+ if(!do_after(user, 3 SECONDS, TRUE, src, TRUE))
+ return FALSE
+ forceFedAttackLog(medicine, user)
+ visible_message("[user] forces [src] to [apply_method] [medicine].")
+ else
+ to_chat(user, "You [apply_method] [medicine].")
+
+ var/fraction = min(1 / medicine.reagents.total_volume, 1)
+ medicine.reagents.reaction(src, reagent_application, fraction)
+ medicine.reagents.trans_to(src, medicine.reagents.total_volume * efficiency)
+ return TRUE
/mob/living/carbon/get_access()
. = ..()
diff --git a/code/modules/mob/living/carbon/carbon_life.dm b/code/modules/mob/living/carbon/carbon_life.dm
index fc7df749d7d..176ac304310 100644
--- a/code/modules/mob/living/carbon/carbon_life.dm
+++ b/code/modules/mob/living/carbon/carbon_life.dm
@@ -364,7 +364,7 @@
var/applied_amount = 0.35 * multiple_patch_multiplier
for(var/patch in processing_patches)
- var/obj/item/reagent_containers/food/pill/patch/P = patch
+ var/obj/item/reagent_containers/patch/P = patch
if(P.reagents && P.reagents.total_volume)
var/fractional_applied_amount = applied_amount / P.reagents.total_volume
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 3d5d5cdfdb2..a839563d6ac 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -461,7 +461,7 @@
to_chat(usr, "Not enough reagents to create these pills!")
return
- var/obj/item/reagent_containers/food/pill/P = new(loc)
+ var/obj/item/reagent_containers/pill/P = new(loc)
P.name = "[answer] pill"
P.pixel_x = rand(-7, 7) // Random position
P.pixel_y = rand(-7, 7)
@@ -495,7 +495,7 @@
to_chat(usr, "Not enough reagents to create these patches!")
return
- var/obj/item/reagent_containers/food/pill/patch/P = new(loc)
+ var/obj/item/reagent_containers/patch/P = new(loc)
P.name = "[answer] patch"
P.pixel_x = rand(-7, 7) // random position
P.pixel_y = rand(-7, 7)
diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm
index 968a8ab5aa5..6b2167e056b 100644
--- a/code/modules/reagents/reagent_containers/patch.dm
+++ b/code/modules/reagents/reagent_containers/patch.dm
@@ -1,4 +1,4 @@
-/obj/item/reagent_containers/food/pill/patch
+/obj/item/reagent_containers/patch
name = "chemical patch"
desc = "A chemical patch for touch based applications."
icon = 'icons/obj/chemical.dmi'
@@ -6,17 +6,20 @@
item_state = "bandaid"
possible_transfer_amounts = null
volume = 30
- apply_type = REAGENT_TOUCH
- apply_method = "apply"
- transfer_efficiency = 0.5 //patches aren't as effective at getting chemicals into the bloodstream.
temperature_min = 270
temperature_max = 350
+ var/instant_application = FALSE
var/needs_to_apply_reagents = TRUE
-/obj/item/reagent_containers/food/pill/patch/attack(mob/living/carbon/M, mob/user, def_zone)
+/obj/item/reagent_containers/patch/attack(mob/living/carbon/M, mob/user, def_zone)
+ return apply(M, user)
+
+/obj/item/reagent_containers/patch/attack_self(mob/user)
+ return apply(user, user)
+
+/obj/item/reagent_containers/patch/proc/apply(mob/living/carbon/M, mob/user)
if(!istype(M))
return FALSE
- bitesize = 0
if(M.eat(src, user))
if(user.get_active_hand() == src)
user.drop_item() // Only drop if they're holding the patch directly
@@ -25,50 +28,47 @@
return TRUE
return FALSE
-/obj/item/reagent_containers/food/pill/patch/afterattack(obj/target, mob/user , proximity)
- return // thanks inheritance again
-
-/obj/item/reagent_containers/food/pill/patch/styptic
+/obj/item/reagent_containers/patch/styptic
name = "brute patch"
desc = "Helps with brute injuries."
icon_state = "bandaid_brute"
- instant_application = 1
+ instant_application = TRUE
list_reagents = list("styptic_powder" = 30)
-/obj/item/reagent_containers/food/pill/patch/styptic/small
+/obj/item/reagent_containers/patch/styptic/small
name = "brute mini-patch"
list_reagents = list("styptic_powder" = 15)
-/obj/item/reagent_containers/food/pill/patch/silver_sulf
+/obj/item/reagent_containers/patch/silver_sulf
name = "burn patch"
desc = "Helps with burn injuries."
icon_state = "bandaid_burn"
- instant_application = 1
+ instant_application = TRUE
list_reagents = list("silver_sulfadiazine" = 30)
-/obj/item/reagent_containers/food/pill/patch/silver_sulf/small
+/obj/item/reagent_containers/patch/silver_sulf/small
name = "burn mini-patch"
list_reagents = list("silver_sulfadiazine" = 15)
-/obj/item/reagent_containers/food/pill/patch/synthflesh
+/obj/item/reagent_containers/patch/synthflesh
name = "synthflesh patch"
desc = "Helps with brute and burn injuries."
icon_state = "bandaid_med"
- instant_application = 1
+ instant_application = TRUE
list_reagents = list("synthflesh" = 10)
-/obj/item/reagent_containers/food/pill/patch/nicotine
+/obj/item/reagent_containers/patch/nicotine
name = "nicotine patch"
desc = "Helps temporarily curb the cravings of nicotine dependency."
list_reagents = list("nicotine" = 10)
-/obj/item/reagent_containers/food/pill/patch/jestosterone
+/obj/item/reagent_containers/patch/jestosterone
name = "jestosterone patch"
desc = "Helps with brute injuries if the affected person is a clown, otherwise inflicts various annoying effects."
icon_state = "bandaid_clown"
list_reagents = list("jestosterone" = 20)
-/obj/item/reagent_containers/food/pill/patch/perfluorodecalin
+/obj/item/reagent_containers/patch/perfluorodecalin
name = "perfluorodecalin patch"
desc = "Incredibly potent respiratory aid drug, may cause shortness of breath if used in large amounts."
icon_state = "bandaid_med"
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 0bbe6956b92..f8d257e7309 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -3,7 +3,7 @@
*
* A swallowable pill. Can be dissolved in reagent containers.
*/
-/obj/item/reagent_containers/food/pill
+/obj/item/reagent_containers/pill
name = "pill"
desc = "A pill."
icon = 'icons/obj/chemical.dmi'
@@ -13,31 +13,27 @@
possible_transfer_amounts = null
volume = 100
has_lid = FALSE
- consume_sound = null
- can_taste = FALSE
- antable = FALSE
-/obj/item/reagent_containers/food/pill/Initialize(mapload)
+/obj/item/reagent_containers/pill/Initialize(mapload)
. = ..()
if(!icon_state)
icon_state = "pill[rand(1, 20)]"
-/obj/item/reagent_containers/food/pill/proc/apply(mob/living/carbon/M, mob/user, def_zone)
+/obj/item/reagent_containers/pill/proc/apply(mob/living/carbon/M, mob/user, def_zone)
if(!istype(M))
return FALSE
- bitesize = reagents.total_volume
if(M.eat(src, user))
qdel(src)
return TRUE
return FALSE
-/obj/item/reagent_containers/food/pill/attack(mob/living/carbon/M, mob/user, def_zone)
+/obj/item/reagent_containers/pill/attack(mob/living/carbon/M, mob/user, def_zone)
return apply(M, user)
-/obj/item/reagent_containers/food/pill/attack_self(mob/user)
+/obj/item/reagent_containers/pill/attack_self(mob/user)
return apply(user, user)
-/obj/item/reagent_containers/food/pill/afterattack(obj/target, mob/user, proximity)
+/obj/item/reagent_containers/pill/afterattack(obj/target, mob/user, proximity)
if(!proximity || !target.is_refillable())
return
if(target.reagents.holder_full())
@@ -51,138 +47,138 @@
qdel(src)
// Basic set of pills below
-/obj/item/reagent_containers/food/pill/tox
+/obj/item/reagent_containers/pill/tox
name = "\improper Toxin pill"
desc = "Highly toxic."
icon_state = "pill21"
list_reagents = list("toxin" = 50)
-/obj/item/reagent_containers/food/pill/initropidril
+/obj/item/reagent_containers/pill/initropidril
name = "\improper Initropidril pill"
desc = "Don't swallow this."
icon_state = "pill21"
list_reagents = list("initropidril" = 50)
-/obj/item/reagent_containers/food/pill/fakedeath
+/obj/item/reagent_containers/pill/fakedeath
name = "fake death pill"
desc = "Swallow then rest to appear dead, stand up to wake up. Also mutes the user's voice."
icon_state = "pill4"
list_reagents = list("capulettium_plus" = 50)
-/obj/item/reagent_containers/food/pill/adminordrazine
+/obj/item/reagent_containers/pill/adminordrazine
name = "\improper Adminordrazine pill"
desc = "It's magic. We don't have to explain it."
icon_state = "pill16"
list_reagents = list("adminordrazine" = 50)
-/obj/item/reagent_containers/food/pill/morphine
+/obj/item/reagent_containers/pill/morphine
name = "\improper Morphine pill"
desc = "Commonly used to treat insomnia."
icon_state = "pill8"
list_reagents = list("morphine" = 30)
-/obj/item/reagent_containers/food/pill/methamphetamine
+/obj/item/reagent_containers/pill/methamphetamine
name = "\improper Methamphetamine pill"
desc = "Helps improve the ability to concentrate."
icon_state = "pill8"
list_reagents = list("methamphetamine" = 5)
-/obj/item/reagent_containers/food/pill/haloperidol
+/obj/item/reagent_containers/pill/haloperidol
name = "\improper Haloperidol pill"
desc = "Haloperidol is an anti-psychotic used to treat psychiatric problems."
icon_state = "pill8"
list_reagents = list("haloperidol" = 15)
-/obj/item/reagent_containers/food/pill/happy_psych
+/obj/item/reagent_containers/pill/happy_psych
name = "mood stabilizer pill"
desc = "Used to temporarily alleviate anxiety and depression. Take only as prescribed."
icon_state = "pill_happy"
list_reagents = list("happiness" = 15, "mannitol" = 5)
-/obj/item/reagent_containers/food/pill/happy
+/obj/item/reagent_containers/pill/happy
name = "happy pill"
desc = "They have little happy faces on them and smell like marker pens."
icon_state = "pill_happy"
list_reagents = list("space_drugs" = 15, "sugar" = 15)
-/obj/item/reagent_containers/food/pill/happy/happiness
+/obj/item/reagent_containers/pill/happy/happiness
name = "fun pill"
desc = "Makes you feel real good!"
list_reagents = list("happiness" = 15)
-/obj/item/reagent_containers/food/pill/zoom
+/obj/item/reagent_containers/pill/zoom
name = "zoom pill"
desc = "Zoooom!"
icon_state = "pill18"
list_reagents = list("synaptizine" = 5, "methamphetamine" = 5)
-/obj/item/reagent_containers/food/pill/charcoal
+/obj/item/reagent_containers/pill/charcoal
name = "\improper Charcoal pill"
desc = "Neutralizes many common toxins."
icon_state = "pill17"
list_reagents = list("charcoal" = 50)
-/obj/item/reagent_containers/food/pill/epinephrine
+/obj/item/reagent_containers/pill/epinephrine
name = "\improper Epinephrine pill"
desc = "Used to provide shots of adrenaline."
icon_state = "pill6"
list_reagents = list("epinephrine" = 50)
-/obj/item/reagent_containers/food/pill/salicylic
+/obj/item/reagent_containers/pill/salicylic
name = "\improper Salicylic Acid pill"
desc = "Commonly used to treat moderate pain and fevers."
icon_state = "pill4"
list_reagents = list("sal_acid" = 20)
-/obj/item/reagent_containers/food/pill/salbutamol
+/obj/item/reagent_containers/pill/salbutamol
name = "\improper Salbutamol pill"
desc = "Used to treat respiratory distress."
icon_state = "pill8"
list_reagents = list("salbutamol" = 20)
-/obj/item/reagent_containers/food/pill/hydrocodone
+/obj/item/reagent_containers/pill/hydrocodone
name = "\improper Hydrocodone pill"
desc = "Used to treat extreme pain."
icon_state = "pill6"
list_reagents = list("hydrocodone" = 15)
-/obj/item/reagent_containers/food/pill/calomel
+/obj/item/reagent_containers/pill/calomel
name = "\improper Calomel pill"
desc = "Can be used to purge impurities, but is highly toxic itself."
icon_state = "pill3"
list_reagents = list("calomel" = 15)
-/obj/item/reagent_containers/food/pill/mutadone
+/obj/item/reagent_containers/pill/mutadone
name = "\improper Mutadone pill"
desc = "Used to cure genetic abnormalities."
icon_state = "pill13"
list_reagents = list("mutadone" = 1)
-/obj/item/reagent_containers/food/pill/mannitol
+/obj/item/reagent_containers/pill/mannitol
name = "\improper Mannitol pill"
desc = "Used to treat cranial swelling."
icon_state = "pill19"
list_reagents = list("mannitol" = 10)
-/obj/item/reagent_containers/food/pill/pentetic
+/obj/item/reagent_containers/pill/pentetic
name ="\improper Pentetic pill"
desc = "Used to purge substances and radiation."
icon_state = "pill7"
list_reagents = list("pen_acid" = 5)
-/obj/item/reagent_containers/food/pill/ironsaline
+/obj/item/reagent_containers/pill/ironsaline
name = "\improper Iron saline pill"
desc = "Used to help with blood loss."
icon_state = "pill2"
list_reagents = list("iron" = 10, "salglu_solution" = 10)
-/obj/item/reagent_containers/food/pill/lazarus_reagent
+/obj/item/reagent_containers/pill/lazarus_reagent
name = "\improper Lazarus Reagent pill"
desc = "Miraculous drug used for revival. Use with caution. Improper use may cause bodies to violently blow apart."
icon_state = "pill9"
list_reagents = list("lazarus_reagent" = 1)
-/obj/item/reagent_containers/food/pill/rezadone
+/obj/item/reagent_containers/pill/rezadone
name = "\improper Rezadone pill"
desc = "Used to rapidly repair cellular defects within a subject's cell structure."
icon_state = "pill10"
diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm
index 47b09e448b6..93eeeed91e9 100644
--- a/code/modules/surgery/dental_implant.dm
+++ b/code/modules/surgery/dental_implant.dm
@@ -12,7 +12,7 @@
/datum/surgery_step/insert_pill
name = "insert pill"
- allowed_tools = list(/obj/item/reagent_containers/food/pill = 100)
+ allowed_tools = list(/obj/item/reagent_containers/pill = 100)
time = 1.6 SECONDS
/datum/surgery_step/insert_pill/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -22,12 +22,12 @@
)
return ..()
-/datum/surgery_step/insert_pill/end_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/reagent_containers/food/pill/tool, datum/surgery/surgery)
+/datum/surgery_step/insert_pill/end_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/reagent_containers/pill/tool, datum/surgery/surgery)
if(!istype(tool))
return SURGERY_STEP_INCOMPLETE
var/dental_implants = 0
- for(var/obj/item/reagent_containers/food/pill in target.contents) // Can't give them more than 4 dental implants.
+ for(var/obj/item/reagent_containers/pill in target.contents) // Can't give them more than 4 dental implants.
dental_implants++
if(dental_implants >= 4)
user.visible_message("[user] pulls \the [tool] back out of [target]'s [parse_zone(target_zone)]!", "You pull \the [tool] back out of [target]'s [parse_zone(target_zone)], there wans't enough room...")
diff --git a/tools/UpdatePaths/Scripts/23063_patch_pill.txt b/tools/UpdatePaths/Scripts/23063_patch_pill.txt
new file mode 100644
index 00000000000..4141e9657ea
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/23063_patch_pill.txt
@@ -0,0 +1,2 @@
+/obj/item/reagent_containers/food/pill/patch : /obj/item/reagent_containers/patch/@SUBTYPES{OLD}
+/obj/item/reagent_containers/food/pill : /obj/item/reagent_containers/pill/@SUBTYPES{OLD}