From 9bea0a097a945420efae3607a39ea0094f5aaaa3 Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Wed, 5 Mar 2014 23:41:42 +0800 Subject: [PATCH] trans_to_ingest now used for consumption of food, drink and pills instead of trans_to. This adds a ten second delay between ingestion and addition of the reagents to the body. Conflicts: code/modules/reagents/Chemistry-Holder.dm code/modules/reagents/reagent_containers/food/cans.dm code/modules/reagents/reagent_containers/food/condiment.dm --- code/modules/reagents/Chemistry-Holder.dm | 50 ++++++++++++++++++- .../reagents/reagent_containers/food/cans.dm | 6 +-- .../reagent_containers/food/condiment.dm | 2 +- .../reagent_containers/food/drinks.dm | 4 +- .../reagent_containers/food/snacks.dm | 4 +- .../reagents/reagent_containers/pill.dm | 4 +- 6 files changed, 59 insertions(+), 11 deletions(-) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index e797541377d..06f9fa32933 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -121,7 +121,55 @@ datum src.handle_reactions() return amount - copy_to(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1) + trans_to_ingest(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1)//For items ingested. A delay is added between ingestion and addition of the reagents + if (!target ) + return + if (!target.reagents || src.total_volume<=0) + return + + /*var/datum/reagents/R = target.reagents + + var/obj/item/weapon/reagent_containers/glass/beaker/noreact/B = new /obj/item/weapon/reagent_containers/glass/beaker/noreact //temporary holder + + amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) + var/part = amount / src.total_volume + var/trans_data = null + for (var/datum/reagent/current_reagent in src.reagent_list) + if (!current_reagent) + continue + //if (current_reagent.id == "blood" && ishuman(target)) + // var/mob/living/carbon/human/H = target + // H.inject_blood(my_atom, amount) + // continue + var/current_reagent_transfer = current_reagent.volume * part + if(preserve_data) + trans_data = current_reagent.data + + B.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data, safety = 1) //safety checks on these so all chemicals are transferred + src.remove_reagent(current_reagent.id, current_reagent_transfer, safety = 1) // to the target container before handling reactions + + src.update_total() + B.update_total() + B.handle_reactions() + src.handle_reactions()*/ + + var/obj/item/weapon/reagent_containers/glass/beaker/noreact/B = new /obj/item/weapon/reagent_containers/glass/beaker/noreact //temporary holder + B.volume = 1000 + + var/datum/reagents/BR = B.reagents + var/datum/reagents/R = target.reagents + + amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) + + src.trans_to(B, amount) + + spawn(100) + BR.trans_to(target, BR.total_volume) + del(B) + + return amount + + copy_to(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1, var/safety = 0) if(!target) return if(!target.reagents || src.total_volume<=0) diff --git a/code/modules/reagents/reagent_containers/food/cans.dm b/code/modules/reagents/reagent_containers/food/cans.dm index 2c045e23766..8356d78ab9d 100644 --- a/code/modules/reagents/reagent_containers/food/cans.dm +++ b/code/modules/reagents/reagent_containers/food/cans.dm @@ -33,7 +33,7 @@ if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) - reagents.trans_to(M, gulp_size) + reagents.trans_to_ingest(M, gulp_size) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) return 1 @@ -55,7 +55,7 @@ if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) - reagents.trans_to(M, gulp_size) + reagents.trans_to_ingest(M, gulp_size) if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell var/mob/living/silicon/robot/bro = user @@ -191,7 +191,7 @@ /obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko name = "Thirteen Loko" - desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkeness, or even death. Please Drink Responsably." + desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkeness, or even death. Please Drink Responsibly." icon_state = "thirteen_loko" New() ..() diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 4af2e378728..4ebbfea3004 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -36,7 +36,7 @@ if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) - reagents.trans_to(M, 10) + reagents.trans_to_ingest(M, 10) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) return 1 diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index aaa6450ce74..e7fbb3fff7b 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -31,7 +31,7 @@ if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) - reagents.trans_to(M, gulp_size) + reagents.trans_to_ingest(M, gulp_size) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) return 1 @@ -54,7 +54,7 @@ if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) - reagents.trans_to(M, gulp_size) + reagents.trans_to_ingest(M, gulp_size) if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell var/mob/living/silicon/robot/bro = user diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 8791bf9ff46..306c1a64e13 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -91,9 +91,9 @@ var/temp_bitesize = max(reagents.total_volume /2, bitesize) reagents.trans_to(M, temp_bitesize) */ - reagents.trans_to(M, bitesize) + reagents.trans_to_ingest(M, bitesize) else - reagents.trans_to(M, reagents.total_volume) + reagents.trans_to_ingest(M, reagents.total_volume) bitecount++ On_Consume(M) return 1 diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index d4fbfa96132..e1a86e7be31 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -24,7 +24,7 @@ if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) - reagents.trans_to(M, reagents.total_volume) + reagents.trans_to_ingest(M, reagents.total_volume) del(src) else del(src) @@ -52,7 +52,7 @@ if(reagents.total_volume) reagents.reaction(M, INGEST) spawn(5) - reagents.trans_to(M, reagents.total_volume) + reagents.trans_to_ingest(M, reagents.total_volume) del(src) else del(src)