---
# System prepended metadata

title: Automatic define lists Refactor

---

# Automatic define lists Refactor

Generate admin lists in https://github.com/tgstation/tgstation/blob/master/code/_globalvars/traits.dm
when a new trait is added using buildscript. Same for bitfields but that's more complicated.

Some simple config in buildscript dir
```
[
    {
    name : "Trait define collector"
    input_files: {"some_traits.dm","other_traits.dm"}
    prefix:"TRAIT_"
    category_tag:"Trait Category"
    output_file:"traits.dm"
    },
]

```
From traits spread around
```
#define TRAIT_GENERIC_TRAIT "a"
//Trait Category : /obj/item
#define TRAIT_ITEM_WHATEVER "b"
//Trait Category : /mob
#define TRAIT_THREE "three"
````

into new autogenned file traits.dm - empty version can be included by default in dme so no need to modify it directly

```
//AUTOGENERATED FILE HEADER WARNING BLAH BLAH

GLOBAL_LIST_INIT(traits_by_type, list(
	/obj/item = list(
		"TRAIT_ITEM_WHATEVER" = TRAIT_ITEM_WHATEVER),
	/mob = list(
		"TRAIT_THREE" = TRAIT_THREE),
    /datum = list(
		"TRAIT_GENERIC_TRAIT" = TRAIT_GENERIC_TRAIT))
```