|
1 | | -//? lathe_type bitfield |
2 | | - |
3 | | -#define LATHE_TYPE_AUTOLATHE (1<<0) |
4 | | -#define LATHE_TYPE_PROTOLATHE (1<<1) |
5 | | -#define LATHE_TYPE_CIRCUIT (1<<2) |
6 | | -#define LATHE_TYPE_PROSTHETICS (1<<3) |
7 | | -#define LATHE_TYPE_MECHA (1<<4) |
8 | | -#define LATHE_TYPE_BIOPRINTER (1<<5) |
9 | | - |
10 | | -DEFINE_BITFIELD(lathe_type, list( |
11 | | - BITFIELD(LATHE_TYPE_AUTOLATHE), |
12 | | - BITFIELD(LATHE_TYPE_PROTOLATHE), |
13 | | - BITFIELD(LATHE_TYPE_CIRCUIT), |
14 | | - BITFIELD(LATHE_TYPE_PROSTHETICS), |
15 | | - BITFIELD(LATHE_TYPE_MECHA), |
16 | | - BITFIELD(LATHE_TYPE_BIOPRINTER), |
17 | | -)) |
18 | | - |
19 | 1 | //? design_unlock bitfield |
20 | 2 |
|
21 | 3 | /// any lathe that can print us should have us always |
@@ -75,6 +57,7 @@ DEFINE_BITFIELD(design_flags, list( |
75 | 57 |
|
76 | 58 | //munition subcategories |
77 | 59 | #define DESIGN_SUBCATEGORY_BALLISTIC "Ballistic" |
| 60 | +#define DESIGN_SUBCATEGORY_MAGNETIC "Magnetic" |
78 | 61 | #define DESIGN_SUBCATEGORY_ENERGY "Energy" |
79 | 62 | #define DESIGN_SUBCATEGORY_MELEE "Melee" |
80 | 63 | #define DESIGN_SUBCATEGORY_AMMO "Ammo" |
@@ -103,3 +86,56 @@ DEFINE_BITFIELD(design_flags, list( |
103 | 86 | //science subcategories |
104 | 87 | #define DESIGN_SUBCATEGORY_XENOBIOLOGY "Xenobiology" |
105 | 88 | #define DESIGN_SUBCATEGORY_XENOARCHEOLOGY "Xenoarcheology" |
| 89 | + |
| 90 | +//* Design Helpers - Generic *// |
| 91 | + |
| 92 | +/** |
| 93 | + * Generate a design for an entity. |
| 94 | + * |
| 95 | + * * Design path is appended to `/datum/prototype/design/generated`. |
| 96 | + */ |
| 97 | +#define GENERATE_DESIGN(ENTITY_PATH, DESIGN_PATH, DESIGN_ID) \ |
| 98 | +/datum/prototype/design/generated##DESIGN_PATH { \ |
| 99 | + id = DESIGN_ID; \ |
| 100 | + build_path = ENTITY_PATH; \ |
| 101 | +}; \ |
| 102 | +/datum/prototype/design/generated##DESIGN_PATH |
| 103 | + |
| 104 | +//* Design Helpers - For a specific lathe *// |
| 105 | + |
| 106 | +/** |
| 107 | + * Generates for all lathes. |
| 108 | + * * Implicitly allows protolathes to build it. |
| 109 | + */ |
| 110 | +#define GENERATE_DESIGN_FOR_AUTOLATHE(ENTITY_PATH, DESIGN_PATH, DESIGN_ID) \ |
| 111 | +GENERATE_DESIGN(ENTITY_PATH, DESIGN_PATH, DESIGN_ID); \ |
| 112 | +/datum/prototype/design/generated##DESIGN_PATH { \ |
| 113 | + lathe_type = LATHE_TYPE_AUTOLATHE | LATHE_TYPE_PROTOLATHE; \ |
| 114 | +}; \ |
| 115 | +/datum/prototype/design/generated##DESIGN_PATH |
| 116 | + |
| 117 | +/** |
| 118 | + * Generates for protolathes. |
| 119 | + */ |
| 120 | +#define GENERATE_DESIGN_FOR_PROTOLATHE(ENTITY_PATH, DESIGN_PATH, DESIGN_ID) \ |
| 121 | +GENERATE_DESIGN(ENTITY_PATH, DESIGN_PATH, DESIGN_ID); \ |
| 122 | +/datum/prototype/design/generated##DESIGN_PATH { \ |
| 123 | + lathe_type = LATHE_TYPE_PROTOLATHE; \ |
| 124 | +}; \ |
| 125 | +/datum/prototype/design/generated##DESIGN_PATH |
| 126 | + |
| 127 | +//* Design Helpers - For a specific lathe & faction *// |
| 128 | + |
| 129 | +/** |
| 130 | + * Generates for Nanotrasen-standard autolathes. In the future, we might have flags |
| 131 | + * for what factions get it automatically. |
| 132 | + */ |
| 133 | +#define GENERATE_DESIGN_FOR_NT_AUTOLATHE(ENTITY_PATH, DESIGN_PATH, DESIGN_ID) \ |
| 134 | +GENERATE_DESIGN_FOR_AUTOLATHE(ENTITY_PATH, DESIGN_PATH, DESIGN_ID) |
| 135 | + |
| 136 | +/** |
| 137 | + * Generates for Nanotrasen-standard protolathes. In the future, we might have flags |
| 138 | + * for what factions get it automatically. |
| 139 | + */ |
| 140 | +#define GENERATE_DESIGN_FOR_NT_PROTOLATHE(ENTITY_PATH, DESIGN_PATH, DESIGN_ID) \ |
| 141 | +GENERATE_DESIGN_FOR_PROTOLATHE(ENTITY_PATH, DESIGN_PATH, DESIGN_ID) |
0 commit comments