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

Function remove_soldier_entity_link

library/modules/Military.cpp:310–343  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

308}
309
310static void remove_soldier_entity_link(df::historical_figure* hf, df::squad* squad)
311{
312 int32_t start_year = -1;
313 for (size_t i = 0; i < hf->entity_links.size(); i++)
314 {
315 df::histfig_entity_link* link = hf->entity_links[i];
316 if (link->getType() != df::enums::histfig_entity_link_type::SQUAD)
317 continue;
318
319 auto squad_link = strict_virtual_cast<df::histfig_entity_link_squadst>(link);
320 if (squad_link == nullptr || squad_link->squad_id != squad->id)
321 continue;
322
323 hf->entity_links.erase(hf->entity_links.begin() + i);
324 start_year = squad_link->start_year;
325
326 delete squad_link;
327 break;
328 }
329
330 if (start_year == -1)
331 return;
332
333 auto former_squad = df::allocate<df::histfig_entity_link_former_squadst>();
334 former_squad->squad_id = squad->id;
335 former_squad->entity_id = squad->entity_id;
336 former_squad->start_year = start_year;
337 former_squad->end_year = *df::global::cur_year;
338 former_squad->link_strength = 100;
339
340 hf->entity_links.push_back(former_squad);
341
342 // Unassigning a normal soldier does not seem to generate an event record.
343}
344
345static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squad)
346{

Callers 1

removeFromSquadMethod · 0.85

Calls 4

getTypeMethod · 0.80
sizeMethod · 0.45
eraseMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected