From 33903d0ca147e439130d36d3a394d337a8e29e58 Mon Sep 17 00:00:00 2001 From: Nelsonh Date: Tue, 11 Aug 2026 23:51:46 +0100 Subject: [PATCH 1/3] more risk improvements --- objects/obj_ini/Create_0.gml | 9 +++----- .../scr_apothecary_ground.gml | 22 ++++++------------- .../scr_company_order/scr_company_order.gml | 6 ++++- scripts/scr_squads/scr_squads.gml | 2 +- 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/objects/obj_ini/Create_0.gml b/objects/obj_ini/Create_0.gml index 0170932b37..d72ae92157 100644 --- a/objects/obj_ini/Create_0.gml +++ b/objects/obj_ini/Create_0.gml @@ -317,13 +317,10 @@ deserialize = function(save_data) { var _squad = new UnitSquad(); _squad.load_json_data(_squad_structs[$ _squad_uid]); squads[$ _squad_uid] = _squad; - for (var s = 0; s < array_length(_squad.members); s++) { + for (var s = array_length(_squad.members) -1; s >= 0; s--) { _squad.members[s] = fetch_unit_uid(_squad.members[s]); - } - - for (var s = array_length(_squad.members) - 1; s >= 0; s--) { - if (!is_struct(_squad.members[s])) { - array_delete(_squad.members, s, 1); + if (is_undefined(_squad.members[s])){ + array_delete(_squad.members , s); } } } diff --git a/scripts/scr_apothecary_ground/scr_apothecary_ground.gml b/scripts/scr_apothecary_ground/scr_apothecary_ground.gml index d2f52d8be2..316bbd0c8a 100644 --- a/scripts/scr_apothecary_ground/scr_apothecary_ground.gml +++ b/scripts/scr_apothecary_ground/scr_apothecary_ground.gml @@ -17,9 +17,8 @@ enum eSYSTEM_LOC { /// @self Struct.SpecialistPointHandler function calculate_full_chapter_spread() { - obj_controller.command = 0; - obj_controller.marines = 0; - var _mar_loc, is_healer, _is_tech, key_val, veh_location, array_slot, _unit; + tally_marines(); + var veh_location, array_slot; var _tech_spread = {}; var _apoth_spread = {}; var _unit_spread = {}; @@ -29,23 +28,16 @@ function calculate_full_chapter_spread() { var _company_length = max(_marine_len, _veh_len); for (var v = 0; v < _company_length; v++) { - key_val = ""; + var key_val = ""; if (v < _marine_len) { - _unit = fetch_unit([company, v]); - _mar_loc = _unit.marine_location(); - if (_unit.base_group == "astartes") { - if (_unit.IsSpecialist()) { - obj_controller.command++; - } else { - obj_controller.marines++; - } - } + var _unit = fetch_unit([company, v]); + var _mar_loc = _unit.marine_location(); forge_equipment_maintenance += _unit.equipment_maintenance_burden(); - _is_tech = _unit.IsSpecialist(SPECIALISTS_TECHS); + var _is_tech = _unit.IsSpecialist(SPECIALISTS_TECHS); if (_is_tech) { add_forge_points_to_stack(_unit); } - is_healer = ((_unit.IsSpecialist(SPECIALISTS_APOTHECARIES, true) && _unit.gear() == "Narthecium") || (_unit.role() == "Sister Hospitaler")) && _unit.hp() >= 10; + var is_healer = ((_unit.IsSpecialist(SPECIALISTS_APOTHECARIES, true) && _unit.gear() == "Narthecium") || (_unit.role() == "Sister Hospitaler")) && _unit.hp() >= 10; if (is_healer) { add_apoth_points_to_stack(_unit); } diff --git a/scripts/scr_company_order/scr_company_order.gml b/scripts/scr_company_order/scr_company_order.gml index cb646de880..610d7c4507 100644 --- a/scripts/scr_company_order/scr_company_order.gml +++ b/scripts/scr_company_order/scr_company_order.gml @@ -24,8 +24,12 @@ function tally_marines() { obj_controller.command = 0; obj_controller.marines = 0; for (var co = 0; co <= obj_ini.companies; co++) { - for (var i = 0; i < company_length(co); i++) { + for (var i = company_length(co) - 1; i >= 0 ; i--) { var _unit = fetch_unit([co, i]); + if (!is_struct(_unit)){ + array_delete(obj_ini.TTRPG[co],i,1); + continue; + } if (_unit.base_group != "astartes") { continue; } diff --git a/scripts/scr_squads/scr_squads.gml b/scripts/scr_squads/scr_squads.gml index ebffd42ea2..3335a23f30 100644 --- a/scripts/scr_squads/scr_squads.gml +++ b/scripts/scr_squads/scr_squads.gml @@ -635,7 +635,7 @@ function UnitSquad(squad_type = undefined, company = 0) constructor { static member_loop = function(member_func, data_pack) { member_length = array_length(members); for (var i = 0; i < member_length; i++) { - var _unit = fetch_unit(members[i]); + var _unit = members[i]; if (!is_struct(_unit)) { array_delete(members, i, 1); member_length--; From 238d8b7c211e777435689d63058195effadfc608 Mon Sep 17 00:00:00 2001 From: Nelsonh <81228864+OH296@users.noreply.github.com> Date: Wed, 12 Aug 2026 00:02:21 +0100 Subject: [PATCH 2/3] Update objects/obj_ini/Create_0.gml Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --- objects/obj_ini/Create_0.gml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/objects/obj_ini/Create_0.gml b/objects/obj_ini/Create_0.gml index d72ae92157..2f1e5ec53f 100644 --- a/objects/obj_ini/Create_0.gml +++ b/objects/obj_ini/Create_0.gml @@ -320,7 +320,7 @@ deserialize = function(save_data) { for (var s = array_length(_squad.members) -1; s >= 0; s--) { _squad.members[s] = fetch_unit_uid(_squad.members[s]); if (is_undefined(_squad.members[s])){ - array_delete(_squad.members , s); + array_delete(_squad.members, s, 1); } } } From 7db3cf655842b59b27b768bc029c74ff8cb998c7 Mon Sep 17 00:00:00 2001 From: Nelsonh Date: Wed, 12 Aug 2026 00:07:48 +0100 Subject: [PATCH 3/3] noralise_marine_numbers --- scripts/scr_company_order/scr_company_order.gml | 11 ++++++++++- scripts/scr_kill_unit/scr_kill_unit.gml | 4 +--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/scripts/scr_company_order/scr_company_order.gml b/scripts/scr_company_order/scr_company_order.gml index 610d7c4507..cfd9429f6e 100644 --- a/scripts/scr_company_order/scr_company_order.gml +++ b/scripts/scr_company_order/scr_company_order.gml @@ -20,14 +20,23 @@ function company_length(company) { return array_length(obj_ini.TTRPG[company]); } +function normalise_marine_numbers(company, start_index,length){ + for (var l = start_index; l < length; l++) { + obj_ini.TTRPG[company][l].marine_number = l; + } +} + function tally_marines() { obj_controller.command = 0; obj_controller.marines = 0; for (var co = 0; co <= obj_ini.companies; co++) { - for (var i = company_length(co) - 1; i >= 0 ; i--) { + var _len = company_length(co); + for (var i = _len - 1; i >= 0 ; i--) { var _unit = fetch_unit([co, i]); if (!is_struct(_unit)){ array_delete(obj_ini.TTRPG[co],i,1); + _len--; + normalise_marine_numbers(co, i, _len); continue; } if (_unit.base_group != "astartes") { diff --git a/scripts/scr_kill_unit/scr_kill_unit.gml b/scripts/scr_kill_unit/scr_kill_unit.gml index 0f8349f1ca..a4d6c78b90 100644 --- a/scripts/scr_kill_unit/scr_kill_unit.gml +++ b/scripts/scr_kill_unit/scr_kill_unit.gml @@ -26,9 +26,7 @@ function scr_kill_unit() { } array_delete(obj_ini.TTRPG[company], marine_number, 1); var _len = company_length(company); - for (var i = marine_number; i < _len; i++) { - obj_ini.TTRPG[company][i].marine_number = i; - } + normalise_marine_numbers(company, marine_number, _len); var _is_astartes = base_group == "astartes"; if (_is_astartes) { if (IsSpecialist()) {