@@ -74,6 +74,7 @@ enum class selectability {
74
74
// result in the plants not being usable for farming or even collectable at all).
75
75
76
76
selectability selectablePlant (color_ostream& out, const df::plant_raw* plant, bool farming) {
77
+ TRACE (log, out).print (" analyzing %s\n " , plant->id .c_str ());
77
78
const DFHack::MaterialInfo basic_mat = DFHack::MaterialInfo (plant->material_defs .type [plant_material_def::basic_mat], plant->material_defs .idx [plant_material_def::basic_mat]);
78
79
bool outOfSeason = false ;
79
80
selectability result = selectability::Nonselectable;
@@ -96,8 +97,10 @@ selectability selectablePlant(color_ostream& out, const df::plant_raw* plant, bo
96
97
return selectability::Nonselectable;
97
98
}
98
99
99
- if (basic_mat.material ->flags .is_set (material_flags::EDIBLE_RAW) ||
100
- basic_mat.material ->flags .is_set (material_flags::EDIBLE_COOKED)) {
100
+ if (basic_mat.isValid () &&
101
+ (basic_mat.material ->flags .is_set (material_flags::EDIBLE_RAW) ||
102
+ basic_mat.material ->flags .is_set (material_flags::EDIBLE_COOKED)))
103
+ {
101
104
DEBUG (log, out).print (" %s is edible\n " , plant->id .c_str ());
102
105
if (farming) {
103
106
if (basic_mat.material ->flags .is_set (material_flags::EDIBLE_RAW)) {
@@ -123,8 +126,10 @@ selectability selectablePlant(color_ostream& out, const df::plant_raw* plant, bo
123
126
}
124
127
}
125
128
126
- if (basic_mat.material ->reaction_product .id .size () > 0 ||
127
- basic_mat.material ->reaction_class .size () > 0 ) {
129
+ if (basic_mat.isValid () &&
130
+ (basic_mat.material ->reaction_product .id .size () > 0 ||
131
+ basic_mat.material ->reaction_class .size () > 0 ))
132
+ {
128
133
DEBUG (log, out).print (" %s has a reaction\n " , plant->id .c_str ());
129
134
if (farming) {
130
135
result = selectability::Selectable;
0 commit comments