anchor.diff:  
   /obj/effect/overlay/sparkle/New(atom/movable/AM)
   	. = ..(null)
  -	AM.overlays += src
  -	addtimer(src, "expire", lifetime, FALSE, AM)
  +	if(AM)
  +		AM.overlays += src
  +		addtimer(src, "expire", lifetime, FALSE, AM)
  +	else
  +		qdel(AM)
   
   /obj/effect/overlay/sparkle/proc/expire(atom/movable/AM)
   	AM.overlays -= src
  
positive.code: 			of ([key_name_admin(body)])")
  		body.ghostize(0)
  		body.key = ghost.key
  		new /obj/effect/overlay/sparkle(null, body)
  
  /obj/effect/fun_balloon/sentience/emergency_shuttle
  	name = "shuttle sentience fun balloon"
  
negative.code: 	. = ..()
  
  /obj/effect/fun_balloon/process()
  	if(!popped && check() && !qdeleted(src))
  		popped = TRUE
  		pop()
  
  /obj/effect/fun_balloon/proc/check()
  	return FALSE
  
  /obj/effect/fun_balloon/proc/pop()
  	visible_message("[src] pops!")
  	playsound(get_turf(src), 'sound/items/party_horn.ogg', 50, 1, -1)
  	qdel(src)
  
  /obj/effect/fun_balloon/attack_ghost(mob/user)
  	if(!user.client || !user.client.holder || popped)
  		return
  	switch(alert("Pop [src]?","Fun Balloon","Yes","No"))
  		if("Yes")
  			pop()
  
  /obj/effect/fun_balloon/sentience
  	name = "sentience fun balloon"
  