diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm
index efd1ea57792..718851cda55 100644
--- a/code/game/objects/items/weapons/cigs.dm
+++ b/code/game/objects/items/weapons/cigs.dm
@@ -1,3 +1,5 @@
+#define REAGENT_TIME_RATIO 2.5
+
/*
CONTAINS:
CIGARETTES
@@ -502,7 +504,7 @@ LIGHTERS ARE IN LIGHTERS.DM
return
smoke()
-/obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user) //Refills the pipe. Can be changed to an attackby later, if loose tobacco is added to vendors or something.
+/obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user) // Extinguishes the pipe.
if(lit)
user.visible_message("[user] puts out [src].")
lit = FALSE
@@ -510,17 +512,27 @@ LIGHTERS ARE IN LIGHTERS.DM
item_state = icon_off
STOP_PROCESSING(SSobj, src)
return
- if(smoketime <= 0)
- to_chat(user, "You refill the pipe with tobacco.")
- reagents.add_reagent("nicotine", chem_volume)
- smoketime = initial(smoketime)
- first_puff = TRUE
/obj/item/clothing/mask/cigarette/pipe/try_light(obj/item/cigar, obj/item/lighting_item)
if(can_light_fancy(lighting_item))
return ..()
+// Refill or light the pipe
/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/food/snacks/grown))
+ var/obj/item/food/snacks/grown/O = I
+ if(O.dry)
+ if(reagents.total_volume == reagents.maximum_volume)
+ to_chat(user, "[src] is full!")
+ return
+ O.reagents.trans_to(src, chem_volume)
+ to_chat(user, "You stuff the [O.name] into the pipe.")
+ smoketime = max(reagents.total_volume * REAGENT_TIME_RATIO, smoketime)
+ qdel(O)
+ else
+ to_chat(user, "You need to dry this first!")
+ return
+
if(!is_type_in_typecache(I, things_that_light))
return
if(can_light_fancy(I))
@@ -535,8 +547,9 @@ LIGHTERS ARE IN LIGHTERS.DM
item_state = "cobpipeoff"
icon_on = "cobpipeon" //Note - these are in masks.dmi
icon_off = "cobpipeoff"
- smoketime = 800
- chem_volume = 40
+ smoketime = 0 //there is nothing to smoke initially
+ chem_volume = 160
+ list_reagents = list()
///////////
//ROLLING//
@@ -569,3 +582,5 @@ LIGHTERS ARE IN LIGHTERS.DM
to_chat(user, "You need to dry this first!")
else
..()
+
+#undef REAGENT_TIME_RATIO