code/__DEFINES/dcs/flags.dm 
            
        
| COMPONENT_INCOMPATIBLE | Return this from /datum/component/Initializeor/datum/component/OnTransferor/datum/component/on_source_addto have the component be deleted if it's applied to an incorrect type.parentmust not be modified if this is to be returned.
This will be noted in the runtime logs | 
|---|---|
| COMPONENT_NOTRANSFER | Returned in PostTransfer to prevent transfer, similar to COMPONENT_INCOMPATIBLE | 
| ELEMENT_INCOMPATIBLE | Return value to cancel attaching | 
| ELEMENT_DETACH_ON_HOST_DESTROY | Causes the detach proc to be called when the host object is being deleted. Should only be used if you need to perform cleanup not related to the host object. You do not need this if you are only unregistering signals, for instance. You would need it if you are doing something like removing the target from a processing list. | 
| ELEMENT_DETACH | Causes the detach proc to be called when the host object is being deleted | 
| ELEMENT_BESPOKE | Only elements created with the same arguments given after argument_hash_start_idxshare an element instance
The arguments are the same when the text and number values are the same and all other values have the same ref | 
| ELEMENT_COMPLEX_DETACH | Causes all detach arguments to be passed to detach instead of only being used to identify the element When this is used your Detach proc should have the same signature as your Attach proc | 
| ELEMENT_DONT_SORT_LIST_ARGS | Elements with this flag will have their datum lists arguments compared as is, without the contents being sorted alpha-numerically first. This is good for those elements where the position of the keys matter, like in the case of color matrices. | 
| ELEMENT_NO_LIST_UNIT_TEST | Elements with this flag will be ignored by the dcs_check_list_arguments test. A good example is connect_loc, for which it's pratically undoable unless we force every signal proc to have a different name. | 
| COMPONENT_DUPE_HIGHLANDER | old component is deleted (default) | 
| COMPONENT_DUPE_ALLOWED | duplicates allowed | 
| COMPONENT_DUPE_UNIQUE | new component is deleted | 
| COMPONENT_DUPE_SOURCES | Component uses source tracking to manage adding and removal logic. Add a source/spawn to/the component by using AddComponentFrom(source, component_type, args...) Removing the last source will automatically remove the component from the parent. Arguments will be passed to on_source_add(source, args...); ensure that Initialize and on_source_add have the same signature. | 
| COMPONENT_DUPE_UNIQUE_PASSARGS | old component is given the initialization args of the new | 
| COMPONENT_DUPE_SELECTIVE | each component of the same type is consulted as to whether the duplicate should be allowed | 
Define Details
COMPONENT_DUPE_ALLOWED
            
         
    
    duplicates allowed
COMPONENT_DUPE_HIGHLANDER
            
         
    
    old component is deleted (default)
COMPONENT_DUPE_SELECTIVE
            
         
    
    each component of the same type is consulted as to whether the duplicate should be allowed
COMPONENT_DUPE_SOURCES
            
         
    
    Component uses source tracking to manage adding and removal logic. Add a source/spawn to/the component by using AddComponentFrom(source, component_type, args...) Removing the last source will automatically remove the component from the parent. Arguments will be passed to on_source_add(source, args...); ensure that Initialize and on_source_add have the same signature.
COMPONENT_DUPE_UNIQUE
            
         
    
    new component is deleted
COMPONENT_DUPE_UNIQUE_PASSARGS
            
         
    
    old component is given the initialization args of the new
COMPONENT_INCOMPATIBLE
            
         
    
    Return this from /datum/component/Initialize or /datum/component/OnTransfer or /datum/component/on_source_add to have the component be deleted if it's applied to an incorrect type.
parent must not be modified if this is to be returned.
This will be noted in the runtime logs
COMPONENT_NOTRANSFER
            
         
    
    Returned in PostTransfer to prevent transfer, similar to COMPONENT_INCOMPATIBLE
ELEMENT_BESPOKE
            
         
    
    Only elements created with the same arguments given after argument_hash_start_idx share an element instance
The arguments are the same when the text and number values are the same and all other values have the same ref
ELEMENT_COMPLEX_DETACH
            
         
    
    Causes all detach arguments to be passed to detach instead of only being used to identify the element When this is used your Detach proc should have the same signature as your Attach proc
ELEMENT_DETACH
            
         
    
    Causes the detach proc to be called when the host object is being deleted
ELEMENT_DETACH_ON_HOST_DESTROY
            
         
    
    Causes the detach proc to be called when the host object is being deleted. Should only be used if you need to perform cleanup not related to the host object. You do not need this if you are only unregistering signals, for instance. You would need it if you are doing something like removing the target from a processing list.
ELEMENT_DONT_SORT_LIST_ARGS
            
         
    
    Elements with this flag will have their datum lists arguments compared as is, without the contents being sorted alpha-numerically first. This is good for those elements where the position of the keys matter, like in the case of color matrices.
ELEMENT_INCOMPATIBLE
            
         
    
    Return value to cancel attaching
ELEMENT_NO_LIST_UNIT_TEST
            
         
    
    Elements with this flag will be ignored by the dcs_check_list_arguments test. A good example is connect_loc, for which it's pratically undoable unless we force every signal proc to have a different name.