anchor.diff:  
   		if(param_var_name == "holder" || (param_var_name in locked))
   			if(!check_rights(R_DEBUG))	return
  +		if(param_var_name in ckey_edit)
  +			if(!check_rights(R_SPAWN|R_DEBUG)) return
  +		if(param_var_name in icon_edit)
  +			if(!check_rights(R_FUN|R_DEBUG)) return
   
   		variable = param_var_name
   
  
positive.code: /client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0)
  	if(!check_rights(R_VAREDIT))	return
  
  	var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "cuffed", "ka", "last_eaten", "icon", "icon_state", "mutantrace")
  
  	for(var/p in forbidden_varedit_object_types)
  		if( istype(O,p) )
  
negative.code: 
  	if(variable in locked)
  		if(!check_rights(R_DEBUG))	return
  	if(variable in ckey_edit)
  		if(!check_rights(R_SPAWN|R_DEBUG)) return
  	if(variable in icon_edit)
  		if(!check_rights(R_FUN|R_DEBUG)) return
  
  	if(isnull(variable))
  		usr << "Unable to determine variable type."
  