From 87faef90199a894af3c454debb397772c95affac Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Wed, 31 Oct 2018 06:56:19 -0400 Subject: [PATCH] Adds logging to reagent transfers --- code/game/machinery/newscaster.dm | 2 +- code/game/mecha/equipment/tools/medical_tools.dm | 6 +++--- code/game/mecha/equipment/tools/work_tools.dm | 2 +- code/game/objects/effects/decals/cleanable.dm | 2 +- code/game/objects/effects/decals/cleanable/misc.dm | 2 +- code/game/objects/items/cigs_lighters.dm | 8 ++++---- code/game/objects/items/crayons.dm | 10 +++++----- code/game/objects/items/extinguisher.dm | 4 ++-- code/game/objects/items/holy_weapons.dm | 2 +- code/game/objects/items/tools/weldingtool.dm | 2 +- code/game/objects/items/toys.dm | 4 ++-- code/game/objects/structures/janicart.dm | 2 +- code/game/objects/structures/mop_bucket.dm | 2 +- code/game/turfs/turf.dm | 2 +- code/modules/detectivework/footprints_and_rag.dm | 2 +- code/modules/food_and_drinks/drinks/drinks.dm | 10 +++++----- code/modules/food_and_drinks/food/condiment.dm | 8 ++++---- code/modules/food_and_drinks/food/customizables.dm | 6 +++--- code/modules/food_and_drinks/food/snacks.dm | 2 +- .../food_and_drinks/kitchen_machinery/deep_fryer.dm | 2 +- .../kitchen_machinery/icecream_vat.dm | 2 -- code/modules/hydroponics/hydroponics.dm | 2 +- code/modules/paperwork/pen.dm | 2 +- code/modules/projectiles/ammunition/_firing.dm | 2 +- .../projectiles/ammunition/special/syringe.dm | 4 ++-- code/modules/reagents/chemistry/holder.dm | 10 ++++++++-- .../reagents/chemistry/machinery/chem_master.dm | 12 ++++++------ .../reagents/chemistry/machinery/reagentgrinder.dm | 8 ++++---- .../reagents/chemistry/machinery/smoke_machine.dm | 3 +-- .../modules/reagents/reagent_containers/borghydro.dm | 4 ++-- code/modules/reagents/reagent_containers/dropper.dm | 6 +++--- code/modules/reagents/reagent_containers/glass.dm | 8 ++++---- .../modules/reagents/reagent_containers/hypospray.dm | 2 +- code/modules/reagents/reagent_containers/medspray.dm | 2 +- code/modules/reagents/reagent_containers/pill.dm | 5 ++--- code/modules/reagents/reagent_containers/spray.dm | 2 +- code/modules/reagents/reagent_containers/syringes.dm | 4 ++-- code/modules/reagents/reagent_dispenser.dm | 2 +- .../xenobiology/crossbreeding/__corecross.dm | 2 +- code/modules/surgery/dental_implant.dm | 6 +++--- 40 files changed, 85 insertions(+), 83 deletions(-) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index e0ce5104500..35eb474921f 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -889,7 +889,7 @@ GLOBAL_LIST_EMPTY(allCasters) var/mob/living/carbon/human/H = user var/obj/W = new /obj/item/reagent_containers/food/drinks/bottle/whiskey(H.loc) playsound(H.loc, 'sound/items/drink.ogg', rand(10,50), 1) - W.reagents.trans_to(H, W.reagents.total_volume) + W.reagents.trans_to(H, W.reagents.total_volume, transfered_by = user) user.visible_message("[user] downs the contents of [W.name] in one gulp! Shoulda stuck to sudoku!") return(TOXLOSS) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 357be713a2c..c8f71bbbcf6 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -310,7 +310,7 @@ var/turf/trg = get_turf(target) var/obj/item/reagent_containers/syringe/mechsyringe = syringes[1] mechsyringe.forceMove(get_turf(chassis)) - reagents.trans_to(mechsyringe, min(mechsyringe.volume, reagents.total_volume)) + reagents.trans_to(mechsyringe, min(mechsyringe.volume, reagents.total_volume), transfered_by = chassis.occupant) syringes -= mechsyringe mechsyringe.icon = 'icons/obj/chemical.dmi' mechsyringe.icon_state = "syringeproj" @@ -338,7 +338,7 @@ mechsyringe.icon_state = initial(mechsyringe.icon_state) mechsyringe.icon = initial(mechsyringe.icon) mechsyringe.reagents.reaction(M, INJECT) - mechsyringe.reagents.trans_to(M, mechsyringe.reagents.total_volume) + mechsyringe.reagents.trans_to(M, mechsyringe.reagents.total_volume, transfered_by = chassis.occupant) M.take_bodypart_damage(2) log_combat(originaloccupant, M, "shot", "syringegun") break @@ -466,7 +466,7 @@ if(!(D.CanPass(S,src.loc))) occupant_message("Unable to load syringe.") return 0 - S.reagents.trans_to(src, S.reagents.total_volume) + S.reagents.trans_to(src, S.reagents.total_volume, transfered_by = chassis.occupant) S.forceMove(src) syringes += S occupant_message("Syringe loaded.") diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 4e05da152bf..3e0a1fe2e3d 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -198,7 +198,7 @@ var/datum/reagents/R = new/datum/reagents(5) W.reagents = R R.my_atom = W - reagents.trans_to(W,1) + reagents.trans_to(W,1, transfered_by = chassis.occupant) for(var/b=0, b<4, b++) if(!W) return diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index ab4dc1a19ec..a75d1fb4492 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -40,7 +40,7 @@ to_chat(user, "[W] is full!") return to_chat(user, "You scoop up [src] into [W]!") - reagents.trans_to(W, reagents.total_volume) + reagents.trans_to(W, reagents.total_volume, transfered_by = user) if(!reagents.total_volume) //scooped up all of it qdel(src) return diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 0251e39f529..81cffc48392 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -132,7 +132,7 @@ if(nutri_check.nutriment_factor >0) H.nutrition += nutri_check.nutriment_factor * nutri_check.volume reagents.remove_reagent(nutri_check.id,nutri_check.volume) - reagents.trans_to(H, reagents.total_volume) + reagents.trans_to(H, reagents.total_volume, transfered_by = user) qdel(src) /obj/effect/decal/cleanable/vomit/old diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 8ac62d839d2..b88c90addaa 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -148,7 +148,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!proximity || lit) //can't dip if cigarette is lit (it will heat the reagents in the glass instead) return if(istype(glass)) //you can dip cigarettes into beakers - if(glass.reagents.trans_to(src, chem_volume)) //if reagents were transfered, show the message + if(glass.reagents.trans_to(src, chem_volume, transfered_by = user)) //if reagents were transfered, show the message to_chat(user, "You dip \the [src] into \the [glass].") else //if not, either the beaker was empty, or the cigarette was full if(!glass.reagents.total_volume) @@ -440,7 +440,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM packeditem = 1 name = "[O.name]-packed [initial(name)]" if(O.reagents) - O.reagents.trans_to(src, O.reagents.total_volume) + O.reagents.trans_to(src, O.reagents.total_volume, transfered_by = user) qdel(O) else to_chat(user, "It has to be dried first!") @@ -689,7 +689,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(O.dry) var/obj/item/clothing/mask/cigarette/rollie/R = new /obj/item/clothing/mask/cigarette/rollie(user.loc) R.chem_volume = target.reagents.total_volume - target.reagents.trans_to(R, R.chem_volume) + target.reagents.trans_to(R, R.chem_volume, transfered_by = user) qdel(target) qdel(src) user.put_in_active_hand(R) @@ -733,7 +733,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(O.is_drainable()) if(reagents.total_volume < chem_volume) if(O.reagents.total_volume > 0) - O.reagents.trans_to(src,25) + O.reagents.trans_to(src,25, transfered_by = user) to_chat(user, "You add the contents of [O] to [src].") else to_chat(user, "[O] is empty!") diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 1e29c104107..de0ddbb67cf 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -407,7 +407,7 @@ fraction /= affected_turfs.len for(var/t in affected_turfs) reagents.reaction(t, TOUCH, fraction * volume_multiplier) - reagents.trans_to(t, ., volume_multiplier) + reagents.trans_to(t, ., volume_multiplier, transfered_by = user) check_empty(user) /obj/item/toy/crayon/attack(mob/M, mob/user) @@ -418,7 +418,7 @@ return var/fraction = min(eaten / reagents.total_volume, 1) reagents.reaction(M, INGEST, fraction * volume_multiplier) - reagents.trans_to(M, eaten, volume_multiplier) + reagents.trans_to(M, eaten, volume_multiplier, transfered_by = user) // check_empty() is called during afterattack else ..() @@ -581,7 +581,7 @@ user.visible_message("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, spraying paint across [user.p_their()] teeth!") user.say("WITNESS ME!!", forced="spraycan suicide") if(pre_noise || post_noise) - playsound(loc, 'sound/effects/spray.ogg', 5, 1, 5) + playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5) if(can_change_colour) paint_color = "#C0C0C0" update_icon() @@ -592,7 +592,7 @@ var/used = use_charges(user, 10, FALSE) var/fraction = min(1, used / reagents.maximum_volume) reagents.reaction(user, VAPOR, fraction * volume_multiplier) - reagents.trans_to(user, used, volume_multiplier) + reagents.trans_to(user, used, volume_multiplier, transfered_by = user) return (OXYLOSS) @@ -661,7 +661,7 @@ . = use_charges(user, 2) var/fraction = min(1, . / reagents.maximum_volume) reagents.reaction(target, TOUCH, fraction * volume_multiplier) - reagents.trans_to(target, ., volume_multiplier) + reagents.trans_to(target, ., volume_multiplier, transfered_by = user) if(pre_noise || post_noise) playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index a2e77516586..be1311e09d4 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -106,7 +106,7 @@ safety = safety_save return 1 var/obj/structure/reagent_dispensers/W = target //will it work? - var/transferred = W.reagents.trans_to(src, max_water) + var/transferred = W.reagents.trans_to(src, max_water, transfered_by = user) if(transferred > 0) to_chat(user, "\The [src] has been refilled by [transferred] units.") playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6) @@ -170,7 +170,7 @@ var/datum/reagents/R = new/datum/reagents(5) W.reagents = R R.my_atom = W - reagents.trans_to(W,1) + reagents.trans_to(W,1, transfered_by = user) //Make em move dat ass, hun addtimer(CALLBACK(src, /obj/item/extinguisher/proc/move_particles, water_particles), 2) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index e75eafcb7a2..d1881b58f56 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -510,7 +510,7 @@ return if(prob(30) && ishuman(A)) var/mob/living/carbon/human/H = A - user.reagents.trans_to(H, user.reagents.total_volume, 1, 1, 0) + user.reagents.trans_to(H, user.reagents.total_volume, 1, 1, 0, transfered_by = user) to_chat(user, "Your pride reflects on [H].") to_chat(H, "You feel insecure, taking on [user]'s burden.") diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index a15507132f7..e5e59fd0666 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -124,7 +124,7 @@ if(!proximity) return if(!status && O.is_refillable()) - reagents.trans_to(O, reagents.total_volume) + reagents.trans_to(O, reagents.total_volume, transfered_by = user) to_chat(user, "You empty [src]'s fuel tank into [O].") update_icon() if(isOn()) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 2f8dabffe50..f1a929a65a3 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -61,7 +61,7 @@ else if(reagents.total_volume >= 10) to_chat(user, "[src] is full.") else - A.reagents.trans_to(src, 10) + A.reagents.trans_to(src, 10, transfered_by = user) to_chat(user, "You fill the balloon with the contents of [A].") desc = "A translucent balloon with some form of liquid sloshing around in it." update_icon() @@ -76,7 +76,7 @@ else desc = "A translucent balloon with some form of liquid sloshing around in it." to_chat(user, "You fill the balloon with the contents of [I].") - I.reagents.trans_to(src, 10) + I.reagents.trans_to(src, 10, transfered_by = user) update_icon() else if(I.is_sharp()) balloon_burst() diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 80af918a39a..6bd05c02aea 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -26,7 +26,7 @@ return 0 else var/obj/item/mop/M = mop - reagents.trans_to(mop, M.mopcap) + reagents.trans_to(mop, M.mopcap, transfered_by = user) to_chat(user, "You wet [mop] in [src].") playsound(loc, 'sound/effects/slosh.ogg', 25, 1) return 1 diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 7fe9700470f..04d6133e0a4 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -17,7 +17,7 @@ if(reagents.total_volume < 1) to_chat(user, "[src] is out of water!") else - reagents.trans_to(I, 5) + reagents.trans_to(I, 5, transfered_by = user) to_chat(user, "You wet [I] in [src].") playsound(loc, 'sound/effects/slosh.ogg', 25, 1) update_icon() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 8ca81ed10c3..c672f00fe9e 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -464,7 +464,7 @@ clear_reagents_to_vomit_pool(M,V) /proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) - M.reagents.trans_to(V, M.reagents.total_volume / 10) + M.reagents.trans_to(V, M.reagents.total_volume / 10, transfered_by = M) for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food if(istype(R, /datum/reagent/consumable)) var/datum/reagent/consumable/nutri_check = R diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 9f1f2bf3806..10448e8878e 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -33,7 +33,7 @@ var/log_object = "a damp rag containing [reagentlist]" if(user.a_intent == INTENT_HARM && !C.is_mouth_covered()) reagents.reaction(C, INGEST) - reagents.trans_to(C, reagents.total_volume) + reagents.trans_to(C, reagents.total_volume, transfered_by = user) C.visible_message("[user] has smothered \the [C] with \the [src]!", "[user] has smothered you with \the [src]!", "You hear some struggling and muffled cries of surprise.") log_combat(user, C, "smothered", log_object) else diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index abc7263c552..bb0cd12ad98 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -51,7 +51,7 @@ var/fraction = min(gulp_size/reagents.total_volume, 1) checkLiked(fraction, M) reagents.reaction(M, INGEST, fraction) - reagents.trans_to(M, gulp_size) + reagents.trans_to(M, gulp_size, transfered_by = user) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) return 1 @@ -70,7 +70,7 @@ return var/refill = reagents.get_master_reagent_id() - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You transfer [trans] units of the solution to [target].") if(iscyborg(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell @@ -91,7 +91,7 @@ to_chat(user, "[src] is full.") return - var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) + var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You fill [src] with [trans] units of the contents of [target].") /obj/item/reagent_containers/food/drinks/attackby(obj/item/I, mob/user, params) @@ -412,14 +412,14 @@ sleep(10) H.visible_message("[H] takes a big sip from [src]! It looks like [H.p_theyre()] trying to commit suicide!") playsound(H,'sound/items/drink.ogg', 80, 1) - reagents.trans_to(H, src.reagents.total_volume) //a big sip + reagents.trans_to(H, src.reagents.total_volume, transfered_by = H) //a big sip sleep(5) H.say(pick("Now, Outbomb Cuban Pete, THAT was a game.", "All these new fangled arcade games are too slow. I prefer the classics.", "They don't make 'em like Orion Trail anymore.", "You know what they say. Worst day of spess carp fishing is better than the best day at work.", "They don't make 'em like good old fashioned singularity engines anymore.")) if(H.age >= 40) H.Stun(50) sleep(50) playsound(H,'sound/items/drink.ogg', 80, 1) - H.say(pick("Another day, another dollar.", "I wonder if I should hold?", "Diversifying is for young'ns.", "Yeap, times were good back then.")) + H.say(pick("Another day, another dollar.", "I wonder if I should hold?", "Diversifying is for young'ns.", "Yeap, times were good back then.")) return MANUAL_SUICIDE sleep(20) //dramatic pause return TOXLOSS diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index d6d744f4dbb..39a7c890f2a 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -53,7 +53,7 @@ var/fraction = min(10/reagents.total_volume, 1) reagents.reaction(M, INGEST, fraction) - reagents.trans_to(M, 10) + reagents.trans_to(M, 10, transfered_by = user) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) return 1 @@ -71,7 +71,7 @@ to_chat(user, "[src] is full!") return - var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) + var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You fill [src] with [trans] units of the contents of [target].") //Something like a glass or a food item. Player probably wants to transfer TO it. @@ -82,7 +82,7 @@ if(target.reagents.total_volume >= target.reagents.maximum_volume) to_chat(user, "you can't add anymore to [target]!") return - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You transfer [trans] units of the condiment to [target].") /obj/item/reagent_containers/food/condiment/on_reagent_change(changetype) @@ -258,7 +258,7 @@ return else to_chat(user, "You tear open [src] above [target] and the condiments drip onto it.") - src.reagents.trans_to(target, amount_per_transfer_from_this) + src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) qdel(src) /obj/item/reagent_containers/food/condiment/pack/on_reagent_change(changetype) diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 7c7545869b8..6948275c388 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -51,7 +51,7 @@ S.generate_trash(get_turf(user)) ingredients += S mix_filling_color(S) - S.reagents.trans_to(src,min(S.reagents.total_volume, 15)) //limit of 15, we don't want our custom food to be completely filled by just one ingredient with large reagent volume. + S.reagents.trans_to(src,min(S.reagents.total_volume, 15), transfered_by = user) //limit of 15, we don't want our custom food to be completely filled by just one ingredient with large reagent volume. foodtype |= S.foodtype update_overlays(S) to_chat(user, "You add the [I.name] to the [name].") @@ -81,7 +81,7 @@ /obj/item/reagent_containers/food/snacks/customizable/proc/initialize_custom_food(obj/item/BASE, obj/item/I, mob/user) if(istype(BASE, /obj/item/reagent_containers)) var/obj/item/reagent_containers/RC = BASE - RC.reagents.trans_to(src,RC.reagents.total_volume) + RC.reagents.trans_to(src,RC.reagents.total_volume, transfered_by = user) for(var/obj/O in BASE.contents) contents += O if(I && user) @@ -251,7 +251,7 @@ to_chat(user, "You finish the [src.name].") finished = 1 name = "[customname] sandwich" - BS.reagents.trans_to(src, BS.reagents.total_volume) + BS.reagents.trans_to(src, BS.reagents.total_volume, transfered_by = user) ingMax = ingredients.len //can't add more ingredients after that var/mutable_appearance/TOP = mutable_appearance(icon, "[BS.icon_state]") TOP.pixel_y = 2 * ingredients.len + 3 diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index f2b195c32d5..ac1e0fbcd42 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -142,7 +142,7 @@ All foods are distributed among various categories. Use common sense. SEND_SIGNAL(src, COMSIG_FOOD_EATEN, M, user) var/fraction = min(bitesize / reagents.total_volume, 1) reagents.reaction(M, INGEST, fraction) - reagents.trans_to(M, bitesize) + reagents.trans_to(M, bitesize, transfered_by = user) bitecount++ On_Consume(M) checkLiked(fraction, M) diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 5b30a4cf5d8..4641bcb962f 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -79,7 +79,7 @@ God bless America. to_chat(user, "There's nothing to dissolve [I] in!") return user.visible_message("[user] drops [I] into [src].", "You dissolve [I] in [src].") - I.reagents.trans_to(src, I.reagents.total_volume) + I.reagents.trans_to(src, I.reagents.total_volume, transfered_by = user) qdel(I) return if(!reagents.has_reagent("cooking_oil")) diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 46c9907cef7..611efc5737b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -101,8 +101,6 @@ visible_message("[icon2html(src, viewers(src))] [user] scoops delicious [flavour_name] ice cream into [I].") product_types[dispense_flavour] -= 1 I.add_ice_cream(flavour_name) - // if(beaker) - // beaker.reagents.trans_to(I, 10) if(I.reagents.total_volume < 10) I.reagents.add_reagent("sugar", 10 - I.reagents.total_volume) else diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index a68a601c69f..d916aa18fec 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -723,7 +723,7 @@ var/datum/reagents/S = new /datum/reagents() //This is a strange way, but I don't know of a better one so I can't fix it at the moment... S.my_atom = H - reagent_source.reagents.trans_to(S,split) + reagent_source.reagents.trans_to(S,split, transfered_by = user) if(istype(reagent_source, /obj/item/reagent_containers/food/snacks) || istype(reagent_source, /obj/item/reagent_containers/pill)) qdel(reagent_source) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index a42c9e440d3..e91581e0996 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -161,7 +161,7 @@ if(..()) if(reagents.total_volume) if(M.reagents) - reagents.trans_to(M, reagents.total_volume) + reagents.trans_to(M, reagents.total_volume, transfered_by = user) /obj/item/pen/sleepy/Initialize() diff --git a/code/modules/projectiles/ammunition/_firing.dm b/code/modules/projectiles/ammunition/_firing.dm index 441088c78c4..aa10076980e 100644 --- a/code/modules/projectiles/ammunition/_firing.dm +++ b/code/modules/projectiles/ammunition/_firing.dm @@ -32,7 +32,7 @@ BB.suppressed = quiet if(reagents && BB.reagents) - reagents.trans_to(BB, reagents.total_volume) //For chemical darts/bullets + reagents.trans_to(BB, reagents.total_volume, transfered_by = user) //For chemical darts/bullets qdel(reagents) /obj/item/ammo_casing/proc/throw_proj(atom/target, turf/targloc, mob/living/user, params, spread) diff --git a/code/modules/projectiles/ammunition/special/syringe.dm b/code/modules/projectiles/ammunition/special/syringe.dm index 4a2a354ca6b..490602aec6a 100644 --- a/code/modules/projectiles/ammunition/special/syringe.dm +++ b/code/modules/projectiles/ammunition/special/syringe.dm @@ -14,7 +14,7 @@ var/obj/item/reagent_containers/syringe/S = SG.syringes[1] - S.reagents.trans_to(BB, S.reagents.total_volume) + S.reagents.trans_to(BB, S.reagents.total_volume, transfered_by = user) BB.name = S.name var/obj/item/projectile/bullet/dart/D = BB D.piercing = S.proj_piercing @@ -35,7 +35,7 @@ var/obj/item/gun/chem/CG = loc if(CG.syringes_left <= 0) return - CG.reagents.trans_to(BB, 15) + CG.reagents.trans_to(BB, 15, transfered_by = user) BB.name = "chemical dart" CG.syringes_left-- ..() diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 3995f599899..1095a041c35 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -80,9 +80,10 @@ return "no reagents" var/list/data = list() + var/seperator for(var/r in reagent_list) //no reagents will be left behind var/datum/reagent/R = r - data += "[R.id] ([round(R.volume, 0.1)]u)" + data += "[seperator ? " | " : null][R.id] ([round(R.volume, 0.1)]u)" //Using IDs because SOME chemicals (I'm looking at you, chlorhydrate-beer) have the same names as other chemicals. return english_list(data) @@ -160,7 +161,7 @@ return master -/datum/reagents/proc/trans_to(obj/target, amount=1, multiplier=1, preserve_data=1, no_react = 0)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred. +/datum/reagents/proc/trans_to(obj/target, amount=1, multiplier=1, preserve_data=1, no_react = 0, mob/transfered_by)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred. var/list/cached_reagents = reagent_list if(!target || !total_volume) return @@ -174,6 +175,11 @@ if(!target.reagents) return R = target.reagents + + if(transfered_by) + target.add_hiddenprint(transfered_by) //log prints so admins can figure out who touched it last. + log_combat(transfered_by, target, "transferred reagents ([log_list()]) from [my_atom] to") + amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) var/part = amount / src.total_volume var/trans_data = null diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 153cb54bcdc..c0cccb36d96 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -232,7 +232,7 @@ P = new(drop_location()) P.name = trim("[name] pill") adjust_item_drop_location(P) - reagents.trans_to(P,vol_each) + reagents.trans_to(P,vol_each, transfered_by = usr) else var/name = stripped_input(usr, "Name:", "Name your pack!", reagents.get_master_reagent_name(), MAX_NAME_LEN) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) @@ -242,7 +242,7 @@ P.originalname = name P.name = trim("[name] pack") P.desc = "A small condiment pack. The label says it contains [name]." - reagents.trans_to(P,10) + reagents.trans_to(P,10, transfered_by = usr) . = TRUE if("createPatch") @@ -265,7 +265,7 @@ P = new/obj/item/reagent_containers/pill/patch(drop_location()) P.name = trim("[name] patch") adjust_item_drop_location(P) - reagents.trans_to(P,vol_each) + reagents.trans_to(P,vol_each, transfered_by = usr) . = TRUE if("createBottle") @@ -280,7 +280,7 @@ var/obj/item/reagent_containers/food/condiment/P = new(drop_location()) P.originalname = name P.name = trim("[name] bottle") - reagents.trans_to(P, P.volume) + reagents.trans_to(P, P.volume, transfered_by = usr) else var/amount_full = 0 var/vol_part = min(reagents.total_volume, 30) @@ -296,13 +296,13 @@ P = new/obj/item/reagent_containers/glass/bottle(drop_location()) P.name = trim("[name] bottle") adjust_item_drop_location(P) - reagents.trans_to(P, 30) + reagents.trans_to(P, 30, transfered_by = usr) if(vol_part) P = new/obj/item/reagent_containers/glass/bottle(drop_location()) P.name = trim("[name] bottle") adjust_item_drop_location(P) - reagents.trans_to(P, vol_part) + reagents.trans_to(P, vol_part, transfered_by = usr) . = TRUE if("analyze") diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 01c4a6b9493..8523d5be74c 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -272,7 +272,7 @@ beaker.reagents.add_reagent_list(I.juice_results) remove_object(I) -/obj/machinery/reagentgrinder/proc/grind() +/obj/machinery/reagentgrinder/proc/grind(mob/user) power_change() if(!beaker || (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume)) return @@ -282,15 +282,15 @@ break var/obj/item/I = i if(I.grind_results) - grind_item(i) + grind_item(i, user) -/obj/machinery/reagentgrinder/proc/grind_item(obj/item/I) //Grind results can be found in respective object definitions +/obj/machinery/reagentgrinder/proc/grind_item(obj/item/I, mob/user) //Grind results can be found in respective object definitions if(I.on_grind(src) == -1) //Call on_grind() to change amount as needed, and stop grinding the item if it returns -1 to_chat(usr, "[src] shorts out as it tries to grind up [I], and transfers it back to storage.") return beaker.reagents.add_reagent_list(I.grind_results) if(I.reagents) - I.reagents.trans_to(beaker, I.reagents.total_volume) + I.reagents.trans_to(beaker, I.reagents.total_volume, transfered_by = user) remove_object(I) /obj/machinery/reagentgrinder/proc/mix(mob/user) diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm index 4d60655488c..19b67f15507 100644 --- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm +++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm @@ -82,10 +82,9 @@ add_fingerprint(user) if(istype(I, /obj/item/reagent_containers) && I.is_open_container()) var/obj/item/reagent_containers/RC = I - var/units = RC.reagents.trans_to(src, RC.amount_per_transfer_from_this) + var/units = RC.reagents.trans_to(src, RC.amount_per_transfer_from_this, transfered_by = user) if(units) to_chat(user, "You transfer [units] units of the solution to [src].") - log_combat(usr, src, "has added [english_list(RC.reagents.reagent_list)] to [src]") return if(default_unfasten_wrench(user, I, 40)) on = FALSE diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 631e5ee2812..cc6a0298ae8 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -105,7 +105,7 @@ Borg Hypospray var/fraction = min(amount_per_transfer_from_this/R.total_volume, 1) R.reaction(M, INJECT, fraction) if(M.reagents) - var/trans = R.trans_to(M, amount_per_transfer_from_this) + var/trans = R.trans_to(M, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "[trans] unit\s injected. [R.total_volume] unit\s remaining.") var/list/injected = list() @@ -211,7 +211,7 @@ Borg Shaker to_chat(user, "[target] is full.") return - var/trans = R.trans_to(target, amount_per_transfer_from_this) + var/trans = R.trans_to(target, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You transfer [trans] unit\s of the solution to [target].") /obj/item/reagent_containers/borghypo/borgshaker/DescribeContents() diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 5b4f14a302f..afa97473a13 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -47,7 +47,7 @@ safe_thing.create_reagents(100) reagents.reaction(safe_thing, TOUCH, fraction) - trans = reagents.trans_to(safe_thing, amount_per_transfer_from_this) + trans = reagents.trans_to(safe_thing, amount_per_transfer_from_this, transfered_by = user) target.visible_message("[user] tries to squirt something into [target]'s eyes, but fails!", \ "[user] tries to squirt something into [target]'s eyes, but fails!") @@ -71,7 +71,7 @@ R += num2text(A.volume) + ")," log_combat(user, M, "squirted", R) - trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + trans = src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You transfer [trans] unit\s of the solution.") update_icon() @@ -85,7 +85,7 @@ to_chat(user, "[target] is empty!") return - var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) + var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You fill [src] with [trans] unit\s of the solution.") diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 1912e9fe9d3..dea7631b5f8 100755 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -65,7 +65,7 @@ to_chat(user, "[target] is full.") return - var/trans = reagents.trans_to(target, amount_per_transfer_from_this) + var/trans = reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You transfer [trans] unit\s of the solution to [target].") else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us. @@ -77,7 +77,7 @@ to_chat(user, "[src] is full.") return - var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) + var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You fill [src] with [trans] unit\s of the contents of [target].") else if(reagents.total_volume) @@ -100,7 +100,7 @@ to_chat(user, "[src] is full.") else to_chat(user, "You break [E] in [src].") - E.reagents.trans_to(src, E.reagents.total_volume) + E.reagents.trans_to(src, E.reagents.total_volume, transfered_by = user) qdel(E) return ..() @@ -273,7 +273,7 @@ if(reagents.total_volume < 1) to_chat(user, "[src] is out of water!") else - reagents.trans_to(O, 5) + reagents.trans_to(O, 5, transfered_by = user) to_chat(user, "You wet [O] in [src].") playsound(loc, 'sound/effects/slosh.ogg', 25, 1) else if(isprox(O)) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 6c817bd68c6..99489d9eb65 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -41,7 +41,7 @@ if(M.reagents) var/trans = 0 if(!infinite) - trans = reagents.trans_to(M, amount_per_transfer_from_this) + trans = reagents.trans_to(M, amount_per_transfer_from_this, transfered_by = user) else trans = reagents.copy_to(M, amount_per_transfer_from_this) diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index c570f31a5b4..2298c414a39 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -65,7 +65,7 @@ playsound(src, 'sound/effects/spray2.ogg', 50, 1, -6) var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1) reagents.reaction(M, apply_type, fraction) - reagents.trans_to(M, amount_per_transfer_from_this) + reagents.trans_to(M, amount_per_transfer_from_this, transfered_by = user) return /obj/item/reagent_containers/medspray/styptic diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 89417242742..7c37c87e464 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -47,10 +47,9 @@ "[user] forces [M] to [apply_method] [src].") - log_combat(user, M, "fed", reagents.log_list()) if(reagents.total_volume) reagents.reaction(M, apply_type) - reagents.trans_to(M, reagents.total_volume) + reagents.trans_to(M, reagents.total_volume, transfered_by = user) qdel(src) return 1 @@ -72,7 +71,7 @@ to_chat(user, "You dissolve [src] in [target].") for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius to_chat(O, "[user] slips something into [target]!") - reagents.trans_to(target, reagents.total_volume) + reagents.trans_to(target, reagents.total_volume, transfered_by = user) qdel(src) /obj/item/reagent_containers/pill/tox diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 1bb7128c3fa..33186ef79bf 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -37,7 +37,7 @@ to_chat(user, "[src] is full.") return - var/trans = A.reagents.trans_to(src, 50) //transfer 50u , using the spray's transfer amount would take too long to refill + var/trans = A.reagents.trans_to(src, 50, transfered_by = user) //transfer 50u , using the spray's transfer amount would take too long to refill to_chat(user, "You fill \the [src] with [trans] units of the contents of \the [A].") return diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 64e3a984a0d..6c50a773f8b 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -101,7 +101,7 @@ to_chat(user, "You cannot directly remove reagents from [target]!") return - var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares? + var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, transfered_by = user) // transfer from, transfer to - who cares? to_chat(user, "You fill [src] with [trans] units of the solution. It now contains [reagents.total_volume] units.") if (reagents.total_volume >= reagents.maximum_volume) @@ -146,7 +146,7 @@ L.log_message("injected themselves ([contained]) with [src.name]", LOG_ATTACK, color="orange") var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1) reagents.reaction(L, INJECT, fraction) - reagents.trans_to(target, amount_per_transfer_from_this) + reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) to_chat(user, "You inject [amount_per_transfer_from_this] units of the solution. The syringe now contains [reagents.total_volume] units.") if (reagents.total_volume <= 0 && mode==SYRINGE_INJECT) mode = SYRINGE_DRAW diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index ca4bc9f6ba8..e13cf839414 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -98,7 +98,7 @@ if(W.reagents.has_reagent("welding_fuel", W.max_fuel)) to_chat(user, "Your [W.name] is already full!") return - reagents.trans_to(W, W.max_fuel) + reagents.trans_to(W, W.max_fuel, transfered_by = user) user.visible_message("[user] refills [user.p_their()] [W.name].", "You refill [W].") playsound(src, 'sound/effects/refill.ogg', 50, 1) W.update_icon() diff --git a/code/modules/research/xenobiology/crossbreeding/__corecross.dm b/code/modules/research/xenobiology/crossbreeding/__corecross.dm index d9d58083cb1..df759981449 100644 --- a/code/modules/research/xenobiology/crossbreeding/__corecross.dm +++ b/code/modules/research/xenobiology/crossbreeding/__corecross.dm @@ -144,7 +144,7 @@ To add a crossbreed: to_chat(user, "This can only be used on yourself.") return if(reagents.total_volume && (ignore_flags || M.can_inject(user, 1))) - reagents.trans_to(M, reagents.total_volume) + reagents.trans_to(M, reagents.total_volume, transfered_by = user) if(user != M) to_chat(M, "[user] presses [src] against you!") to_chat(user, "You press [src] against [M], injecting [M.p_them()].") diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm index 87e6d096b39..6964c85911c 100644 --- a/code/modules/surgery/dental_implant.dm +++ b/code/modules/surgery/dental_implant.dm @@ -30,11 +30,11 @@ /datum/action/item_action/hands_free/activate_pill/Trigger() if(!..()) - return 0 + return FALSE to_chat(owner, "You grit your teeth and burst the implanted [target.name]!") log_combat(owner, null, "swallowed an implanted pill", target) if(target.reagents.total_volume) target.reagents.reaction(owner, INGEST) - target.reagents.trans_to(owner, target.reagents.total_volume) + target.reagents.trans_to(owner, target.reagents.total_volume, transfered_by = owner) qdel(target) - return 1 \ No newline at end of file + return TRUE