/// 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, "Remove/Add?", "Trait Remove/Add", 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", "Trait", 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 specific source ?", "Trait Remove/Add", list("All","Specific")) if(!specific) return switch(specific) if("All") source = null if("Specific") source = tgui_input_list(usr, "Source to be removed","Trait Remove/Add", D.status_traits[chosen_trait]) if(!source) return REMOVE_TRAIT(D,chosen_trait,source)