MCPcopy Create free account
hub / github.com/DFHack/dfhack / cursecheck

Function cursecheck

plugins/cursecheck.cpp:125–217  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

123}
124
125command_result cursecheck(color_ostream& out, vector <string>& parameters)
126{
127 df::unit* selected_unit = Gui::getSelectedUnit(out, true);
128
129 bool giveDetails = false;
130 bool giveUnitID = false;
131 bool giveNick = false;
132 bool ignoreDead = true;
133 bool verbose = false;
134 size_t cursecount = 0;
135
136 for (auto parameter : parameters)
137 {
138 if (parameter == "help" || parameter == "?")
139 return CR_WRONG_USAGE;
140 if (parameter == "detail")
141 giveDetails = true;
142 if (parameter == "ids")
143 giveUnitID = true;
144 if (parameter == "nick")
145 giveNick = true;
146 if (parameter == "all")
147 ignoreDead = false;
148 if (parameter == "verbose")
149 {
150 // verbose makes no sense without enabling details
151 giveDetails = true;
152 verbose = true;
153 }
154 }
155
156 // check whole map if no unit is selected
157 vector<df::unit*> to_check;
158 if (selected_unit)
159 to_check.push_back(selected_unit);
160 for (df::unit* unit : to_check.size() ? to_check : world->units.all)
161 {
162 // filter out all "living" units that are currently removed from play
163 // don't spam all completely dead creatures if not explicitly wanted
164 if ((!Units::isActive(unit) && !Units::isKilled(unit)) || (Units::isKilled(unit) && ignoreDead))
165 {
166 continue;
167 }
168
169 curses cursetype = determineCurse(unit);
170
171 if (cursetype != curses::None)
172 {
173 cursecount++;
174
175 if (giveNick)
176 {
177 Units::setNickname(unit, curse_names[cursetype]); //"CURSED");
178 }
179
180 if (giveDetails)
181 {
182 out << DF2CONSOLE(Units::getReadableName(unit));

Callers

nothing calls this directly

Calls 6

getSelectedUnitFunction · 0.85
determineCurseFunction · 0.85
findFunction · 0.50
bitfield_to_stringFunction · 0.50
sizeMethod · 0.45
printMethod · 0.45

Tested by

no test coverage detected