anchor.diff:  		reagents.remove_any(to_smoke)
   
   /obj/item/clothing/mask/cigarette/process(delta_time)
  -	var/turf/location = get_turf(src)
  -	var/mob/living/M = loc
  -	if(isliving(loc))
  -		M.IgniteMob()
  +	var/mob/living/user = isliving(loc) ? loc : null
  +	user?.IgniteMob()
   	if(!reagents.has_reagent(/datum/reagent/oxygen)) //cigarettes need oxygen
   		var/datum/gas_mixture/air = return_air()
   		if(!air || !air.has_gas(/datum/gas/oxygen, 1)) //or oxygen on a tile to burn
  
positive.code: 	return (TOXLOSS|OXYLOSS)
  
  /obj/item/clothing/mask/cigarette/attackby(obj/item/W, mob/user, params)
  	if(lit || smoketime <= 0)
  		return ..()
  	if(!reagents.has_reagent(/datum/reagent/oxygen)) //cigarettes need oxygen
  		var/datum/gas_mixture/air = return_air()
  		if(!air || !air.has_gas(/datum/gas/oxygen, 1)) //or oxygen on a tile to burn
  			to_chat(user, span_notice("Your [name] needs a source of oxygen to burn."))
  			return ..()
  
  	var/lighting_text = W.ignition_effect(src, user)
  	if(lighting_text)
  		light(lighting_text)
  
  /obj/item/clothing/mask/cigarette/afterattack(obj/item/reagent_containers/glass/glass, mob/user, proximity)
  	. = ..()
  
negative.code: 
  	to_chat(user, span_notice("You stuff [to_smoke] into [src]."))
  	smoketime = 13 MINUTES
  	packeditem = to_smoke.name
  	update_name()
  	if(to_smoke.reagents)
  		to_smoke.reagents.trans_to(src, to_smoke.reagents.total_volume, transfered_by = user)
  	qdel(to_smoke)
  
  
  /obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user)
  	var/atom/location = drop_location()
  	if(packeditem && !lit)
  		to_chat(user, span_notice("You empty [src] onto [location]."))
  		new /obj/effect/decal/cleanable/ash(location)
  		packeditem = null
  		smoketime = 0
  		reagents.clear_reagents()
  		update_name()
  		return
  	return ..()
  
  /obj/item/clothing/mask/cigarette/pipe/cobpipe
  	name = "corn cob pipe"
  