14
14
#include " df/histfig_entity_link_squadst.h"
15
15
#include " df/historical_figure.h"
16
16
#include " df/historical_entity.h"
17
+ #include " df/history_event_remove_hf_entity_linkst.h"
17
18
#include " df/entity_position.h"
18
19
#include " df/entity_position_assignment.h"
19
20
#include " df/plotinfost.h"
@@ -334,6 +335,8 @@ static void remove_soldier_entity_link(df::historical_figure* hf, df::squad* squ
334
335
former_squad->link_strength = 100 ;
335
336
336
337
hf->entity_links .push_back (former_squad);
338
+
339
+ // Unassigning a normal soldier does not seem to generate an event record.
337
340
}
338
341
339
342
static void remove_officer_entity_link (df::historical_figure* hf, df::squad* squad)
@@ -343,6 +346,7 @@ static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squ
343
346
return ;
344
347
345
348
int32_t assignment_id = -1 ;
349
+ int32_t pos_id = -1 ;
346
350
for (auto & np : nps)
347
351
{
348
352
if (np.entity ->id != squad->entity_id || np.assignment ->squad_id != squad->id )
@@ -352,6 +356,7 @@ static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squ
352
356
np.assignment ->histfig2 = -1 ;
353
357
354
358
assignment_id = np.assignment ->id ;
359
+ pos_id = np.position ->id ;
355
360
break ;
356
361
}
357
362
@@ -389,6 +394,18 @@ static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squ
389
394
former_pos->link_strength = 100 ;
390
395
391
396
hf->entity_links .push_back (former_pos);
397
+
398
+ int32_t event_id = (*df::global::hist_event_next_id)++;
399
+ auto former_pos_event = df::allocate<df::history_event_remove_hf_entity_linkst>();
400
+ former_pos_event->year = *df::global::cur_year;
401
+ former_pos_event->seconds = *df::global::cur_year_tick;
402
+ former_pos_event->id = event_id;
403
+ former_pos_event->civ = squad->entity_id ;
404
+ former_pos_event->histfig = hf->id ;
405
+ former_pos_event->position_id = pos_id;
406
+ former_pos_event->link_type = df::histfig_entity_link_type::POSITION;
407
+
408
+ df::global::world->history .events .push_back (former_pos_event);
392
409
}
393
410
394
411
bool Military::removeFromSquad (int32_t unit_id)
0 commit comments