anchor.diff:  
   /obj/item/grenade/proc/update_mob()
   	if(ismob(loc))
  -		var/mob/M = loc
  -		M.dropItemToGround(src)
  +		var/mob/mob = loc
  +		mob.dropItemToGround(src)
   
  -/obj/item/grenade/attackby(obj/item/W, mob/user, params)
  +/obj/item/grenade/attackby(obj/item/weapon, mob/user, params)
   	if(active)
   		return ..()
   
  -	if(W.tool_behaviour == TOOL_MULTITOOL)
  +	if(weapon.tool_behaviour == TOOL_MULTITOOL)
   		var/newtime = text2num(stripped_input(user, "Please enter a new detonation time", name))
   		if (newtime != null && user.canUseTopic(src, BE_CLOSE))
   			if(change_det_time(newtime))
  
positive.code: 				if (round(newtime * 10) != det_time)
  					to_chat(user, "<span class='warning'>The new value is out of bounds. The lowest possible time is 3 seconds and highest is 5 seconds. Instant detonations are also possible.</span>")
  		return
  	else if(W.tool_behaviour == TOOL_SCREWDRIVER)
  		if(change_det_time())
  			to_chat(user, "<span class='notice'>You modify the time delay. It's set for [DisplayTimeText(det_time)].</span>")
  
  
negative.code:  * Grenades with other triggers like remote igniters probably skip this step and go straight to [/obj/item/grenade/proc/detonate]
   */
  /obj/item/grenade/proc/arm_grenade(mob/user, delayoverride, msg = TRUE, volume = 60)
  	log_grenade(user, get_turf(src)) //Inbuilt admin procs already handle null users
  	if(user)
  		add_fingerprint(user)
  		if(msg)
  