/// Allow admin to add or remove traits of datum /datum/admins/proc/modify_traits(datum/D) if(!D) return var/add_or_remove = tgui_input_list(usr, "Add or Remove Trait?", "Modify Trait", list("Add","Remove")) if(!add_or_remove) return var/list/availible_traits = list() switch(add_or_remove) if("Add") for(var/key in GLOB.traits_by_type) if(istype(D, key)) availible_traits += GLOB.traits_by_type[key] if("Remove") if(!GLOB.trait_name_map) GLOB.trait_name_map = generate_trait_name_map() for(var/trait in D.status_traits) var/name = GLOB.trait_name_map[trait] || trait availible_traits[name] = trait var/chosen_trait = tgui_input_list(usr, "Select trait to modify.", "Traits", availible_traits) if(!chosen_trait) return chosen_trait = availible_traits[chosen_trait] var/source = "adminabuse" switch(add_or_remove) if("Add") //Not doing source choosing here intentionally to make this bit faster to use, you can always vv it. ADD_TRAIT(D, chosen_trait, source) if("Remove") var/specific = tgui_input_list(usr, "All or from a specific source?", "Add or Remove Trait", list("All","Specific")) if(!specific) return switch(specific) if("All") source = null if("Specific") source = tgui_input_list(usr, "Source to be removed?", "Add or Remove Trait", D.status_traits[chosen_trait]) if(!source) return REMOVE_TRAIT(D, chosen_trait, source)