diff --git a/code/datums/traits.dm b/code/datums/traits.dm deleted file mode 100644 index 15715c3c88..0000000000 --- a/code/datums/traits.dm +++ /dev/null @@ -1,75 +0,0 @@ -/datum/proc/add_trait(trait, source) - LAZYINITLIST(status_traits) - - if(!status_traits[trait]) - status_traits[trait] = list(source) - else - status_traits[trait] |= list(source) - - -/datum/proc/remove_trait(trait, list/sources, force) - if(!status_traits) - return //nothing to remove - - if(!status_traits[trait]) - return - - if(locate(ROUNDSTART_TRAIT) in status_traits[trait] && !force) //mob traits applied through roundstart cannot normally be removed - return - - if(!sources) // No defined source cures the trait entirely. - status_traits -= trait - return - - if(!islist(sources)) - sources = list(sources) - - if(LAZYLEN(sources)) - for(var/S in sources) - if(S in status_traits[trait]) - status_traits[trait] -= S - else - status_traits[trait] = list() - - if(!LAZYLEN(status_traits[trait])) - status_traits -= trait - -/datum/proc/has_trait(trait, list/sources) - if(!status_traits) - return FALSE //well of course it doesn't have the trait - - if(!status_traits[trait]) - return FALSE - - . = FALSE - - if(sources && !islist(sources)) - sources = list(sources) - if(LAZYLEN(sources)) - for(var/S in sources) - if(S in status_traits[trait]) - return TRUE - else if(LAZYLEN(status_traits[trait])) - return TRUE - -/datum/proc/remove_all_traits(remove_species_traits = FALSE, remove_organ_traits = FALSE, remove_quirks = FALSE) - if(!status_traits) - return //nothing to remove - - var/list/blacklisted_sources = list() - if(!remove_species_traits) - blacklisted_sources += SPECIES_TRAIT - if(!remove_organ_traits) - blacklisted_sources += ORGAN_TRAIT - if(!remove_quirks) - blacklisted_sources += ROUNDSTART_TRAIT - - for(var/kebab in status_traits) - var/skip - for(var/S in blacklisted_sources) - if(S in status_traits[kebab]) - skip = TRUE - break - if(!skip) - remove_trait(kebab, null, TRUE) - CHECK_TICK