diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index b31b5c600d..3bb6b50938 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -9,6 +9,7 @@
w_class = WEIGHT_CLASS_TINY
var/amount_per_transfer_from_this = 5
var/list/possible_transfer_amounts = list(5,10,15,20,25,30)
+ var/APTFT_altclick = TRUE //will the set amount_per_transfer_from_this proc be called on AltClick() ?
var/volume = 30
var/reagent_flags
var/list/list_reagents = null
@@ -19,20 +20,12 @@
var/container_HP = 2
var/cached_icon
-/obj/item/reagent_containers/verb/set_APTFT(mob/user) //set amount_per_transfer_from_this
- set name = "Set Transfer Amount"
- set category = "Object"
- var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts
- if(N)
- amount_per_transfer_from_this = N
- to_chat(user, "[src]'s transfer amount is now [amount_per_transfer_from_this] units.")
-
/obj/item/reagent_containers/Initialize(mapload, vol)
. = ..()
if(isnum(vol) && vol > 0)
volume = vol
- if(!possible_transfer_amounts)
- src.verbs -= /obj/item/reagent_containers/verb/set_APTFT
+ if(length(possible_transfer_amounts))
+ verbs += /obj/item/reagent_containers/proc/set_APTFT
create_reagents(volume, reagent_flags)
if(spawned_disease)
var/datum/disease/F = new spawned_disease()
@@ -48,8 +41,18 @@
/obj/item/reagent_containers/AltClick(mob/user)
. = ..()
- if(possible_transfer_amounts && user.Adjacent(src))
+ if(APTFT_altclick && length(possible_transfer_amounts) > 1 && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
set_APTFT()
+ return TRUE
+
+/obj/item/reagent_containers/proc/set_APTFT(mob/user) //set amount_per_transfer_from_this
+ set name = "Set Transfer Amount"
+ set category = "Object"
+ set waitfor = FALSE
+ var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts
+ if(N)
+ amount_per_transfer_from_this = N
+ to_chat(user, "[src]'s transfer amount is now [amount_per_transfer_from_this] units.")
/obj/item/reagent_containers/proc/add_initial_reagents()
if(list_reagents)
diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm
index 1f83e895bb..9dd51c43ae 100644
--- a/code/modules/reagents/reagent_containers/hypovial.dm
+++ b/code/modules/reagents/reagent_containers/hypovial.dm
@@ -8,6 +8,7 @@
var/comes_with = list() //Easy way of doing this.
volume = 10
possible_transfer_amounts = list(1,2,5,10)
+ APTFT_altclick = FALSE
obj_flags = UNIQUE_RENAME
unique_reskin = list("hypovial" = "hypovial",
"red hypovial" = "hypovial-b",
diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm
index d09b18f244..683a26d2cb 100644
--- a/code/modules/reagents/reagent_containers/rags.dm
+++ b/code/modules/reagents/reagent_containers/rags.dm
@@ -8,6 +8,7 @@
reagent_flags = REFILLABLE | DRAINABLE
amount_per_transfer_from_this = 5
possible_transfer_amounts = list()
+ APTFT_altclick = FALSE
volume = 5
spillable = FALSE
var/wipe_sound
diff --git a/code/modules/reagents/reagent_containers/sleeper_buffer.dm b/code/modules/reagents/reagent_containers/sleeper_buffer.dm
index 044dab2924..d353174c06 100644
--- a/code/modules/reagents/reagent_containers/sleeper_buffer.dm
+++ b/code/modules/reagents/reagent_containers/sleeper_buffer.dm
@@ -8,4 +8,4 @@
spillable = TRUE
resistance_flags = ACID_PROOF
amount_per_transfer_from_this = 0
- possible_transfer_amounts = list(0)
+ possible_transfer_amounts = list()