anchor.diff:  		} else { \
   			_sources_list = sources\
   		}; \
  -		if (_traits_list && _traits_list[trait]) { \
  +		if (_traits_list?[trait]) { \
   			for (var/_trait_source in _traits_list[trait]) { \
   				if (!(_trait_source in _sources_list)) { \
   					_traits_list[trait] -= _trait_source \
  
positive.code: 		}\
  	} while (0)
  
  #define HAS_TRAIT(target, trait) (target.status_traits ? (target.status_traits[trait] ? TRUE : FALSE) : FALSE)
  #define HAS_TRAIT_FROM(target, trait, source) (target.status_traits ? (target.status_traits[trait] ? (source in target.status_traits[trait]) : FALSE) : FALSE)
  #define HAS_TRAIT_FROM_ONLY(target, trait, source) (\
  	target.status_traits ?\
  		(target.status_traits[trait] ?\
  			((source in target.status_traits[trait]) && (length(target.status_traits) == 1))\
  			: FALSE)\
  		: FALSE)
  #define HAS_TRAIT_NOT_FROM(target, trait, source) (target.status_traits ? (target.status_traits[trait] ? (length(target.status_traits[trait] - source) > 0) : FALSE) : FALSE)
  
  /*
  Remember to update _globalvars/traits.dm if you're adding/removing/renaming traits.
  
negative.code: 		} else { \
  			_S = sources\
  		}; \
  		if (_L?[trait]) { \
  			for (var/_T in _L[trait]) { \
  				if ((!_S && (_T != ROUNDSTART_TRAIT)) || (_T in _S)) { \
  					_L[trait] -= _T \
  