anchor.diff:  			target.status_traits = list(); \
   			_L = target.status_traits; \
   			_L[trait] = list(source); \
  +			SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait)); \
   		} else { \
   			_L = target.status_traits; \
   			if (_L[trait]) { \
   				_L[trait] |= list(source); \
   			} else { \
   				_L[trait] = list(source); \
  +				SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait)); \
   			} \
   		} \
   	} while (0)
  
positive.code: 			for (var/_T in _L) { \
  				_L[_T] &= _S;\
  				if (!length(_L[_T])) { \
  					_L -= _T } \
  				};\
  				if (!length(_L)) { \
  					target.status_traits = null\
  				};\
  		}\
  	} while (0)
  #define HAS_TRAIT(target, trait) (target.status_traits ? (target.status_traits[trait] ? TRUE : FALSE) : FALSE)
  
negative.code: 				} \
  			};\
  			if (!length(_L[trait])) { \
  				_L -= trait; \
  				SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait)); \
  			}; \
  			if (!length(_L)) { \
  				target.status_traits = null \
  