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}