From 3f817a04ef07698c8b0b700466ead859a25555f2 Mon Sep 17 00:00:00 2001 From: Ying Gao Date: Wed, 12 Feb 2025 00:03:57 +0800 Subject: [PATCH 1/4] Add missing history event --- library/modules/Military.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/library/modules/Military.cpp b/library/modules/Military.cpp index cbb4295562..356c606681 100644 --- a/library/modules/Military.cpp +++ b/library/modules/Military.cpp @@ -14,6 +14,7 @@ #include "df/histfig_entity_link_squadst.h" #include "df/historical_figure.h" #include "df/historical_entity.h" +#include "df/history_event_remove_hf_entity_linkst.h" #include "df/entity_position.h" #include "df/entity_position_assignment.h" #include "df/plotinfost.h" @@ -334,6 +335,8 @@ static void remove_soldier_entity_link(df::historical_figure* hf, df::squad* squ former_squad->link_strength = 100; hf->entity_links.push_back(former_squad); + + // Unassigning a normal soldier does not seem to generate an event record. } 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 return; int32_t assignment_id = -1; + int32_t pos_id = -1; for (auto& np : nps) { 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 np.assignment->histfig2 = -1; assignment_id = np.assignment->id; + pos_id = np.position->id; break; } @@ -387,8 +392,21 @@ static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squ former_pos->start_year = start_year; former_pos->end_year = *df::global::cur_year; former_pos->link_strength = 100; - + hf->entity_links.push_back(former_pos); + + int32_t event_id = *df::global::hist_event_next_id; + auto former_pos_event = df::allocate(); + former_pos_event->year = *df::global::cur_year; + former_pos_event->seconds = *df::global::cur_year_tick; + former_pos_event->id = event_id; + former_pos_event->civ = squad->entity_id; + former_pos_event->histfig = hf->id; + former_pos_event->position_id = pos_id; + former_pos_event->link_type = df::histfig_entity_link_type::POSITION; + + df::global::world->history.events.push_back(former_pos_event); + *df::global::hist_event_next_id = event_id + 1; } bool Military::removeFromSquad(int32_t unit_id) From 25196c0281487f35b606a197676e94cd95ea6bc9 Mon Sep 17 00:00:00 2001 From: Ying Gao Date: Wed, 12 Feb 2025 00:07:38 +0800 Subject: [PATCH 2/4] Trim whitespace --- library/modules/Military.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/modules/Military.cpp b/library/modules/Military.cpp index 356c606681..2f44e04824 100644 --- a/library/modules/Military.cpp +++ b/library/modules/Military.cpp @@ -392,7 +392,7 @@ static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squ former_pos->start_year = start_year; former_pos->end_year = *df::global::cur_year; former_pos->link_strength = 100; - + hf->entity_links.push_back(former_pos); int32_t event_id = *df::global::hist_event_next_id; @@ -404,7 +404,7 @@ static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squ former_pos_event->histfig = hf->id; former_pos_event->position_id = pos_id; former_pos_event->link_type = df::histfig_entity_link_type::POSITION; - + df::global::world->history.events.push_back(former_pos_event); *df::global::hist_event_next_id = event_id + 1; } From 72819ad3a290ee399d8f86462793e4370c5b2817 Mon Sep 17 00:00:00 2001 From: Ying Gao Date: Wed, 12 Feb 2025 00:16:14 +0800 Subject: [PATCH 3/4] Update docs/dev/Lua API.rst --- docs/dev/Lua API.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 66516642a9..bbab5a6c38 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -1991,8 +1991,9 @@ Military module Removes a unit from its squad. Unsets the unit's military information (i.e., ``unit.military.squad_id`` and ``unit.military.squad_pos``), the squad's position information (i.e., - ``squad.positions[squad_pos].occupant``), and modifies the unit's entity links - to indicate former squad membership or command. + ``squad.positions[squad_pos].occupant``), modifies the unit's entity links + to indicate former squad membership or command, and creates a corresponding + world history event. Items module ------------ From 4aa4fe9468a6f4175cde36861caa520df94c5d12 Mon Sep 17 00:00:00 2001 From: Ying Gao Date: Wed, 12 Feb 2025 00:48:16 +0800 Subject: [PATCH 4/4] Change increment style --- docs/about/Authors.rst | 1 + library/modules/Military.cpp | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/about/Authors.rst b/docs/about/Authors.rst index bfb8aa02a8..d806d92aaa 100644 --- a/docs/about/Authors.rst +++ b/docs/about/Authors.rst @@ -158,6 +158,7 @@ NotRexButCaesar NotRexButCaesar Nuno Fernandes UnknowableCoder nuvu vallode Omniclasm +Ong Ying Gao ong-yinggao98 oorzkws oorzkws OwnageIsMagic OwnageIsMagic palenerd dlmarquis diff --git a/library/modules/Military.cpp b/library/modules/Military.cpp index 2f44e04824..a5946acca5 100644 --- a/library/modules/Military.cpp +++ b/library/modules/Military.cpp @@ -395,7 +395,7 @@ static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squ hf->entity_links.push_back(former_pos); - int32_t event_id = *df::global::hist_event_next_id; + int32_t event_id = (*df::global::hist_event_next_id)++; auto former_pos_event = df::allocate(); former_pos_event->year = *df::global::cur_year; former_pos_event->seconds = *df::global::cur_year_tick; @@ -406,7 +406,6 @@ static void remove_officer_entity_link(df::historical_figure* hf, df::squad* squ former_pos_event->link_type = df::histfig_entity_link_type::POSITION; df::global::world->history.events.push_back(former_pos_event); - *df::global::hist_event_next_id = event_id + 1; } bool Military::removeFromSquad(int32_t unit_id)