From efb560d1662816040cbbc7b6d0c0d460d7f5b80a Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Wed, 12 Mar 2025 05:25:58 +0300 Subject: [PATCH 01/20] Sizeable gene-seed related adjustments --- datafiles/main/chapters/1.JSON | 4 +- datafiles/main/chapters/10.JSON | 4 +- datafiles/main/chapters/11.JSON | 2 +- datafiles/main/chapters/12.JSON | 2 +- datafiles/main/chapters/13.JSON | 4 +- datafiles/main/chapters/14.JSON | 2 +- datafiles/main/chapters/15.JSON | 2 +- datafiles/main/chapters/16.JSON | 2 +- datafiles/main/chapters/17.JSON | 4 +- datafiles/main/chapters/3.JSON | 4 +- datafiles/main/chapters/31.JSON | 2 +- datafiles/main/chapters/32.JSON | 2 +- datafiles/main/chapters/4.JSON | 4 +- datafiles/main/chapters/5.JSON | 2 +- datafiles/main/chapters/6.JSON | 2 +- datafiles/main/chapters/7.JSON | 2 +- datafiles/main/chapters/8.JSON | 4 +- datafiles/main/chapters/9.JSON | 4 +- objects/obj_ncombat/Alarm_5.gml | 2 +- objects/obj_ncombat/Create_0.gml | 2 - objects/obj_pnunit/Alarm_5.gml | 19 +++++-- scripts/scr_creation/scr_creation.gml | 6 +- .../scr_marine_struct/scr_marine_struct.gml | 56 +++++++++++++------ 23 files changed, 81 insertions(+), 56 deletions(-) diff --git a/datafiles/main/chapters/1.JSON b/datafiles/main/chapters/1.JSON index 4c9de66a28..d12231e651 100644 --- a/datafiles/main/chapters/1.JSON +++ b/datafiles/main/chapters/1.JSON @@ -11,8 +11,8 @@ "icon_name": "da", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 10, // 1-10 - "purity": 8, // 1-10 - "stability": 10, // 1-10 + "purity": 10, // 1-10 + "stability": 9, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/10.JSON b/datafiles/main/chapters/10.JSON index 41ab328c9b..7082733fb4 100644 --- a/datafiles/main/chapters/10.JSON +++ b/datafiles/main/chapters/10.JSON @@ -11,8 +11,8 @@ "icon_name": "bt", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 3, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 - "purity": 7, // 1-10 - "stability": 10, // 1-10 + "purity": 8, // 1-10 + "stability": 9, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/11.JSON b/datafiles/main/chapters/11.JSON index b605154bb7..7d130815a0 100644 --- a/datafiles/main/chapters/11.JSON +++ b/datafiles/main/chapters/11.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 10, // 1-10 + "stability": 9, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/12.JSON b/datafiles/main/chapters/12.JSON index c8b25cd6bf..f19e9d70c7 100644 --- a/datafiles/main/chapters/12.JSON +++ b/datafiles/main/chapters/12.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 6, // 1-10 + "stability": 7, // 1-10 "cooperation": 7, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/13.JSON b/datafiles/main/chapters/13.JSON index 3ef79dbbff..6e74eda7f8 100644 --- a/datafiles/main/chapters/13.JSON +++ b/datafiles/main/chapters/13.JSON @@ -11,8 +11,8 @@ "icon_name": "cf", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 - "purity": 7, // 1-10 - "stability": 10, // 1-10 + "purity": 8, // 1-10 + "stability": 8, // 1-10 "cooperation": 8, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/14.JSON b/datafiles/main/chapters/14.JSON index e00df02019..68245e3e34 100644 --- a/datafiles/main/chapters/14.JSON +++ b/datafiles/main/chapters/14.JSON @@ -12,7 +12,7 @@ "fleet_type": 3, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 1, // 1-10 "purity": 9, // 1-10 - "stability": 9, // 1-10 + "stability": 8, // 1-10 "cooperation": 1, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/15.JSON b/datafiles/main/chapters/15.JSON index b2c60b5773..ac58a8983f 100644 --- a/datafiles/main/chapters/15.JSON +++ b/datafiles/main/chapters/15.JSON @@ -11,7 +11,7 @@ "icon_name": "cd", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 - "purity": 8, // 1-10 + "purity": 9, // 1-10 "stability": 4, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/16.JSON b/datafiles/main/chapters/16.JSON index 55e51930c7..1bc3f3b49b 100644 --- a/datafiles/main/chapters/16.JSON +++ b/datafiles/main/chapters/16.JSON @@ -11,7 +11,7 @@ "icon_name": "sd", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 - "purity": 10, // 1-10 + "purity": 9, // 1-10 "stability": 2, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/17.JSON b/datafiles/main/chapters/17.JSON index 2a7d9099e1..734c60b491 100644 --- a/datafiles/main/chapters/17.JSON +++ b/datafiles/main/chapters/17.JSON @@ -11,8 +11,8 @@ "icon_name": "am", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 - "purity": 10, // 1-10 - "stability": 10, // 1-10 + "purity": 9, // 1-10 + "stability": 9, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/3.JSON b/datafiles/main/chapters/3.JSON index d734a95c36..b07cc492da 100644 --- a/datafiles/main/chapters/3.JSON +++ b/datafiles/main/chapters/3.JSON @@ -11,8 +11,8 @@ "icon_name": "sw", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 10, // 1-10 - "purity": 8, // 1-10 - "stability": 5, // 1-10 + "purity": 9, // 1-10 + "stability": 3, // 1-10 "cooperation": 4, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/31.JSON b/datafiles/main/chapters/31.JSON index 3a73c63f65..de3c85c40f 100644 --- a/datafiles/main/chapters/31.JSON +++ b/datafiles/main/chapters/31.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 10, // 1-10 + "stability": 9, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/32.JSON b/datafiles/main/chapters/32.JSON index 31d36a1f6a..e13b358848 100644 --- a/datafiles/main/chapters/32.JSON +++ b/datafiles/main/chapters/32.JSON @@ -11,7 +11,7 @@ "icon_name": "rs", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 1, // 1-10 - "purity": 6, // 1-10 + "purity": 10, // 1-10 "stability": 4, // 1-10 "cooperation": 1, // 1-10 "homeworld_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/4.JSON b/datafiles/main/chapters/4.JSON index 534eb006f2..0805dfd016 100644 --- a/datafiles/main/chapters/4.JSON +++ b/datafiles/main/chapters/4.JSON @@ -11,8 +11,8 @@ "icon_name": "if", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 6, // 1-10 - "purity": 7, // 1-10 - "stability": 10, // 1-10 + "purity": 8, // 1-10 + "stability": 9, // 1-10 "cooperation": 8, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/5.JSON b/datafiles/main/chapters/5.JSON index be7b34ac97..390f00ab48 100644 --- a/datafiles/main/chapters/5.JSON +++ b/datafiles/main/chapters/5.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 9, // 1-10 - "stability": 9, // 1-10 + "stability": 5, // 1-10 "cooperation": 7, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/6.JSON b/datafiles/main/chapters/6.JSON index 265c99f3ee..37763f5449 100644 --- a/datafiles/main/chapters/6.JSON +++ b/datafiles/main/chapters/6.JSON @@ -11,7 +11,7 @@ "icon_name": "ih", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 - "purity": 8, // 1-10 + "purity": 10, // 1-10 "stability": 8, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/7.JSON b/datafiles/main/chapters/7.JSON index cdf6a59fdc..89ba3380d4 100644 --- a/datafiles/main/chapters/7.JSON +++ b/datafiles/main/chapters/7.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 10, // 1-10 + "stability": 9, // 1-10 "cooperation": 10, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/8.JSON b/datafiles/main/chapters/8.JSON index 8be0cef646..10de71bdbd 100644 --- a/datafiles/main/chapters/8.JSON +++ b/datafiles/main/chapters/8.JSON @@ -11,8 +11,8 @@ "icon_name": "sl", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 - "purity": 8, // 1-10 - "stability": 8, // 1-10 + "purity": 9, // 1-10 + "stability": 1, // 1-10 "cooperation": 10, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/9.JSON b/datafiles/main/chapters/9.JSON index 0848df911a..4208c51e46 100644 --- a/datafiles/main/chapters/9.JSON +++ b/datafiles/main/chapters/9.JSON @@ -11,8 +11,8 @@ "icon_name": "rg", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 - "purity": 8, // 1-10 - "stability": 4, // 1-10 + "purity": 9, // 1-10 + "stability": 8, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/objects/obj_ncombat/Alarm_5.gml b/objects/obj_ncombat/Alarm_5.gml index 296ab80c29..60b4f8aba2 100644 --- a/objects/obj_ncombat/Alarm_5.gml +++ b/objects/obj_ncombat/Alarm_5.gml @@ -50,7 +50,7 @@ if (ground_mission){ } }; -seed_saved=(min(seed_max,apothecaries_alive*40))-gene_penalty; +seed_saved = (min(seed_max, apothecaries_alive * 40)); if (obj_ini.doomed) then seed_saved=0; if (seed_saved>0) then obj_controller.gene_seed+=seed_saved; diff --git a/objects/obj_ncombat/Create_0.gml b/objects/obj_ncombat/Create_0.gml index f122d3100d..9148117aad 100644 --- a/objects/obj_ncombat/Create_0.gml +++ b/objects/obj_ncombat/Create_0.gml @@ -128,7 +128,6 @@ repeat(70){i+=1; post_unit_lost[i]=""; post_unit_veh[i]=0; post_units_lost[i]=0; - post_geneseed_recovered[i]=0; post_equipment_lost[i]=""; post_equipments_lost[i]=0; @@ -158,7 +157,6 @@ newline=""; newline_color=""; liness=0; world_size=0; -gene_penalty=0; timer=0; timer_stage=0; diff --git a/objects/obj_pnunit/Alarm_5.gml b/objects/obj_pnunit/Alarm_5.gml index 903904f392..59337b838e 100644 --- a/objects/obj_pnunit/Alarm_5.gml +++ b/objects/obj_pnunit/Alarm_5.gml @@ -140,10 +140,21 @@ for (var i=0;i 0) { + _harvestable_seed++; + } + } + if (_birthday <= (_current_year - 5)) { + if (irandom(19) > 0) { + _harvestable_seed++; + } + } + obj_ncombat.seed_max += _harvestable_seed; } var last=0; diff --git a/scripts/scr_creation/scr_creation.gml b/scripts/scr_creation/scr_creation.gml index e578f42c1d..a2c4a2583d 100644 --- a/scripts/scr_creation/scr_creation.gml +++ b/scripts/scr_creation/scr_creation.gml @@ -98,11 +98,7 @@ function scr_creation(slide_num) { secretions=0; occulobe=0; mucranoid=0; - if (purity>=1) then mutations=4; - if (purity>=2) then mutations=3; - if (purity>=4) then mutations=2; - if (purity>=7) then mutations=1; - if (purity=10) then mutations=0; + mutations = 10 - purity } if (custom > 0) { diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index fcc2b4cb4e..2246048eb6 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -725,27 +725,47 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) if (faction ="chapter"){ allegiance = global.chapter_name; } - gene_seed_mutations = { - "preomnor":obj_ini.preomnor, - "lyman":obj_ini.lyman, - "omophagea":obj_ini.omophagea, - "ossmodula":obj_ini.ossmodula, - "zygote":obj_ini.zygote, - "betchers":obj_ini.betchers, - "catalepsean":obj_ini.catalepsean, - "occulobe":obj_ini.occulobe, - "mucranoid":obj_ini.mucranoid, - "membrane":obj_ini.membrane, - "voice":obj_ini.voice, - }; - var mutation_names = struct_get_names(gene_seed_mutations) - for (var mute =0; mute obj_ini.stability * 10) { + var _mutation_names = struct_get_names(gene_seed_mutations); + var _possible_mutations = []; + for (var i = 0; i < array_length(_mutation_names); i++){ + var _mutation = _mutation_names[i]; + if (gene_seed_mutations[$ _mutation] == 0){ + array_push(_possible_mutations, _mutation); + } + } + repeat (10) { + if (array_length(_possible_mutations) > 0) { + var _picked_mutation = array_random_index(_possible_mutations); + gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; + array_delete(_possible_mutations, _picked_mutation, 1); + if (irandom_range(1, 10) == 10) { + continue; + } else { + break; + } + } else { + break; } } } + if (gene_seed_mutations[$ "voice"] == 1){ charisma-=2; } From c5d6d420c1e20f67da4cc412be68c27eb88dbf79 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Wed, 19 Mar 2025 17:04:03 +0300 Subject: [PATCH 02/20] Additional mutations depend on stability and the first roll --- scripts/scr_marine_struct/scr_marine_struct.gml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index 2246048eb6..883e5d87be 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -750,12 +750,14 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) array_push(_possible_mutations, _mutation); } } - repeat (10) { + + repeat (array_length(_possible_mutations)) { if (array_length(_possible_mutations) > 0) { var _picked_mutation = array_random_index(_possible_mutations); gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; array_delete(_possible_mutations, _picked_mutation, 1); - if (irandom_range(1, 10) == 10) { + _mutation_roll -= 10; + if (_mutation_roll > obj_ini.stability * 10) { continue; } else { break; From d917b195087163f48c82c03577a9314c3b0dd1f1 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Wed, 19 Mar 2025 18:50:15 +0300 Subject: [PATCH 03/20] I like irandom_range --- objects/obj_pnunit/Alarm_5.gml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/objects/obj_pnunit/Alarm_5.gml b/objects/obj_pnunit/Alarm_5.gml index 59337b838e..73b1052820 100644 --- a/objects/obj_pnunit/Alarm_5.gml +++ b/objects/obj_pnunit/Alarm_5.gml @@ -144,13 +144,14 @@ for (var i=0;i 0) { + if (irandom_range(1, 20) > 1) { _harvestable_seed++; } } if (_birthday <= (_current_year - 5)) { - if (irandom(19) > 0) { + if (irandom_range(1, 20) > 1) { _harvestable_seed++; } } From c684df6cff80be687456a6492f78d82334d1ac9b Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Wed, 19 Mar 2025 20:22:41 +0300 Subject: [PATCH 04/20] Reduce the secondary mutation chance --- scripts/scr_marine_struct/scr_marine_struct.gml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index 883e5d87be..e00434b816 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -756,7 +756,7 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) var _picked_mutation = array_random_index(_possible_mutations); gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; array_delete(_possible_mutations, _picked_mutation, 1); - _mutation_roll -= 10; + _mutation_roll *= 0.5; if (_mutation_roll > obj_ini.stability * 10) { continue; } else { From 8dd7cc15df7db7e9d12f0c6fef7e9fffafb388e3 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Thu, 20 Mar 2025 01:20:24 +0300 Subject: [PATCH 05/20] Reroll for additional mutations --- scripts/scr_marine_struct/scr_marine_struct.gml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index e00434b816..a17b6e0f0d 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -741,7 +741,8 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) }; var _mutation_roll = (irandom_range(1, 100)); - if (_mutation_roll > obj_ini.stability * 10) { + var _mutation_threshold = obj_ini.stability * 10; + if (_mutation_roll > _mutation_threshold) { var _mutation_names = struct_get_names(gene_seed_mutations); var _possible_mutations = []; for (var i = 0; i < array_length(_mutation_names); i++){ @@ -756,8 +757,9 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) var _picked_mutation = array_random_index(_possible_mutations); gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; array_delete(_possible_mutations, _picked_mutation, 1); - _mutation_roll *= 0.5; - if (_mutation_roll > obj_ini.stability * 10) { + _mutation_threshold += 10; + _mutation_roll = (irandom_range(1, 100)); + if (_mutation_roll > _mutation_threshold) { continue; } else { break; From 83a644e8130aa681f813097f0b7acd72c97dc2a2 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Thu, 20 Mar 2025 15:19:15 +0300 Subject: [PATCH 06/20] A bit steeper mutation chance decrease --- scripts/scr_marine_struct/scr_marine_struct.gml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index a17b6e0f0d..d0a468ba82 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -757,7 +757,7 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) var _picked_mutation = array_random_index(_possible_mutations); gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; array_delete(_possible_mutations, _picked_mutation, 1); - _mutation_threshold += 10; + _mutation_threshold = min(_mutation_threshold + 20, 95); _mutation_roll = (irandom_range(1, 100)); if (_mutation_roll > _mutation_threshold) { continue; From 719f85e1877d1f9cd867f6e24358d3a10fdc8457 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Thu, 20 Mar 2025 15:55:51 +0300 Subject: [PATCH 07/20] Readjust stability again. The reference is actually purity, not stability --- datafiles/main/chapters/12.JSON | 2 +- datafiles/main/chapters/13.JSON | 2 +- datafiles/main/chapters/15.JSON | 6 +++--- datafiles/main/chapters/16.JSON | 2 +- datafiles/main/chapters/2.JSON | 2 +- datafiles/main/chapters/3.JSON | 2 +- datafiles/main/chapters/32.JSON | 2 +- datafiles/main/chapters/5.JSON | 2 +- datafiles/main/chapters/6.JSON | 2 +- datafiles/main/chapters/8.JSON | 2 +- datafiles/main/chapters/9.JSON | 6 +++--- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/datafiles/main/chapters/12.JSON b/datafiles/main/chapters/12.JSON index f19e9d70c7..b3feeddec8 100644 --- a/datafiles/main/chapters/12.JSON +++ b/datafiles/main/chapters/12.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 7, // 1-10 + "stability": 8, // 1-10 "cooperation": 7, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/13.JSON b/datafiles/main/chapters/13.JSON index 6e74eda7f8..863a448b76 100644 --- a/datafiles/main/chapters/13.JSON +++ b/datafiles/main/chapters/13.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 8, // 1-10 - "stability": 8, // 1-10 + "stability": 9, // 1-10 "cooperation": 8, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/15.JSON b/datafiles/main/chapters/15.JSON index ac58a8983f..926acf2133 100644 --- a/datafiles/main/chapters/15.JSON +++ b/datafiles/main/chapters/15.JSON @@ -11,8 +11,8 @@ "icon_name": "cd", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 - "purity": 9, // 1-10 - "stability": 4, // 1-10 + "purity": 8, // 1-10 + "stability": 9, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 0, // 1 = true @@ -39,7 +39,7 @@ "", // leave the first entry blank for now "Splintered", "Suspicious", - "", + "Black Rage", "", "", "", diff --git a/datafiles/main/chapters/16.JSON b/datafiles/main/chapters/16.JSON index 1bc3f3b49b..353f3b8bd0 100644 --- a/datafiles/main/chapters/16.JSON +++ b/datafiles/main/chapters/16.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 9, // 1-10 - "stability": 2, // 1-10 + "stability": 7, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/2.JSON b/datafiles/main/chapters/2.JSON index db573473d9..4d42a70c18 100644 --- a/datafiles/main/chapters/2.JSON +++ b/datafiles/main/chapters/2.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 8, // 1-10 + "stability": 9, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/3.JSON b/datafiles/main/chapters/3.JSON index b07cc492da..5f32599984 100644 --- a/datafiles/main/chapters/3.JSON +++ b/datafiles/main/chapters/3.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 10, // 1-10 "purity": 9, // 1-10 - "stability": 3, // 1-10 + "stability": 9, // 1-10 "cooperation": 4, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/32.JSON b/datafiles/main/chapters/32.JSON index e13b358848..a258ac58a8 100644 --- a/datafiles/main/chapters/32.JSON +++ b/datafiles/main/chapters/32.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 1, // 1-10 "purity": 10, // 1-10 - "stability": 4, // 1-10 + "stability": 8, // 1-10 "cooperation": 1, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/5.JSON b/datafiles/main/chapters/5.JSON index 390f00ab48..be7b34ac97 100644 --- a/datafiles/main/chapters/5.JSON +++ b/datafiles/main/chapters/5.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 9, // 1-10 - "stability": 5, // 1-10 + "stability": 9, // 1-10 "cooperation": 7, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/6.JSON b/datafiles/main/chapters/6.JSON index 37763f5449..d5b0d772e2 100644 --- a/datafiles/main/chapters/6.JSON +++ b/datafiles/main/chapters/6.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 8, // 1-10 + "stability": 9, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/8.JSON b/datafiles/main/chapters/8.JSON index 10de71bdbd..2f733fc8a9 100644 --- a/datafiles/main/chapters/8.JSON +++ b/datafiles/main/chapters/8.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 9, // 1-10 - "stability": 1, // 1-10 + "stability": 9, // 1-10 "cooperation": 10, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/9.JSON b/datafiles/main/chapters/9.JSON index 4208c51e46..55debdd51e 100644 --- a/datafiles/main/chapters/9.JSON +++ b/datafiles/main/chapters/9.JSON @@ -11,8 +11,8 @@ "icon_name": "rg", // ? dunno what this is used for yet but the icon breaks if you dont use it "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 - "purity": 9, // 1-10 - "stability": 8, // 1-10 + "purity": 8, // 1-10 + "stability": 9, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true @@ -37,7 +37,7 @@ "disadvantages": [ "", "Splintered", - "", + "Black Rage", "", "", "", From 0aeb0de13c972157d30205e30ed99311bf915479 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Thu, 20 Mar 2025 15:58:45 +0300 Subject: [PATCH 08/20] Adjust stability of the red scorpions and give black rage to RG and successors --- datafiles/main/chapters/31.JSON | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datafiles/main/chapters/31.JSON b/datafiles/main/chapters/31.JSON index de3c85c40f..3a73c63f65 100644 --- a/datafiles/main/chapters/31.JSON +++ b/datafiles/main/chapters/31.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 9, // 1-10 + "stability": 10, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true From 3737bf88a9f6922ab140bff00ceb39a7ea26ae16 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:11:16 +0300 Subject: [PATCH 09/20] Adjust the mutation chance again --- datafiles/main/chapters/16.JSON | 2 +- scripts/scr_marine_struct/scr_marine_struct.gml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/datafiles/main/chapters/16.JSON b/datafiles/main/chapters/16.JSON index 353f3b8bd0..7e4a15ca86 100644 --- a/datafiles/main/chapters/16.JSON +++ b/datafiles/main/chapters/16.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 9, // 1-10 - "stability": 7, // 1-10 + "stability": 3, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index d0a468ba82..8341ea5599 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -740,9 +740,9 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) "voice": obj_ini.voice }; - var _mutation_roll = (irandom_range(1, 100)); - var _mutation_threshold = obj_ini.stability * 10; - if (_mutation_roll > _mutation_threshold) { + var _mutation_roll = (irandom_range(1, 50)); + var _mutation_threshold = 10 - obj_ini.stability; + if (_mutation_roll <= _mutation_threshold) { var _mutation_names = struct_get_names(gene_seed_mutations); var _possible_mutations = []; for (var i = 0; i < array_length(_mutation_names); i++){ @@ -757,9 +757,9 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) var _picked_mutation = array_random_index(_possible_mutations); gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; array_delete(_possible_mutations, _picked_mutation, 1); - _mutation_threshold = min(_mutation_threshold + 20, 95); - _mutation_roll = (irandom_range(1, 100)); - if (_mutation_roll > _mutation_threshold) { + _mutation_threshold = min(_mutation_threshold - 1, 1); + _mutation_roll = (irandom_range(1, 50)); + if (_mutation_roll <= _mutation_threshold) { continue; } else { break; From ec6f77e050a79092f5ad35f55474dae958dee329 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:19:30 +0300 Subject: [PATCH 10/20] Adjust stability and mutations AGAIN --- datafiles/main/chapters/12.JSON | 2 +- datafiles/main/chapters/16.JSON | 2 +- datafiles/main/chapters/32.JSON | 2 +- scripts/scr_marine_struct/scr_marine_struct.gml | 12 ++++++------ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/datafiles/main/chapters/12.JSON b/datafiles/main/chapters/12.JSON index b3feeddec8..61f65539f3 100644 --- a/datafiles/main/chapters/12.JSON +++ b/datafiles/main/chapters/12.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 8, // 1-10 + "stability": 9, // 1-10 "cooperation": 7, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/16.JSON b/datafiles/main/chapters/16.JSON index 7e4a15ca86..4d5a9c08df 100644 --- a/datafiles/main/chapters/16.JSON +++ b/datafiles/main/chapters/16.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 9, // 1-10 - "stability": 3, // 1-10 + "stability": 1, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/32.JSON b/datafiles/main/chapters/32.JSON index a258ac58a8..06f41e45dc 100644 --- a/datafiles/main/chapters/32.JSON +++ b/datafiles/main/chapters/32.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 1, // 1-10 "purity": 10, // 1-10 - "stability": 8, // 1-10 + "stability": 7, // 1-10 "cooperation": 1, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index 8341ea5599..3d9c2b927e 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -740,25 +740,25 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) "voice": obj_ini.voice }; - var _mutation_roll = (irandom_range(1, 50)); - var _mutation_threshold = 10 - obj_ini.stability; + var _mutation_roll = irandom_range(1, 100); + var _mutation_threshold = 11 - obj_ini.stability; if (_mutation_roll <= _mutation_threshold) { var _mutation_names = struct_get_names(gene_seed_mutations); var _possible_mutations = []; - for (var i = 0; i < array_length(_mutation_names); i++){ + for (var i = 0; i < array_length(_mutation_names); i++) { var _mutation = _mutation_names[i]; - if (gene_seed_mutations[$ _mutation] == 0){ + if (gene_seed_mutations[$ _mutation] == 0) { array_push(_possible_mutations, _mutation); } } - + repeat (array_length(_possible_mutations)) { if (array_length(_possible_mutations) > 0) { var _picked_mutation = array_random_index(_possible_mutations); gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; array_delete(_possible_mutations, _picked_mutation, 1); _mutation_threshold = min(_mutation_threshold - 1, 1); - _mutation_roll = (irandom_range(1, 50)); + _mutation_roll = irandom_range(1, 100); if (_mutation_roll <= _mutation_threshold) { continue; } else { From 6b78953be32e703a41a595f5dd726737d3fd0328 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Wed, 19 Mar 2025 20:54:38 +0300 Subject: [PATCH 11/20] feat: Remove green bars from the point slide and add blurbs --- .../scr_creation_draw_slides.gml | 73 ++++++++++++------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml index 41b6771743..c0c8d6413b 100644 --- a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml +++ b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml @@ -496,44 +496,61 @@ function draw_chapter_trait_select(){ draw_set_halign(fa_center); draw_text_transformed(800,301,string_hash_to_newline("Chapter Stats"),0.6,0.6,0); - draw_set_halign(fa_right); + draw_set_halign(fa_left); - draw_text_transformed(617,332,$"Strength ({strength})",0.5,0.5,0); - draw_text_transformed(617,387,$"Cooperation ({cooperation})",0.5,0.5,0); - draw_text_transformed(617,442,$"GeneSeed Purity ({purity})",0.5,0.5,0); - draw_text_transformed(617,497,$"GeneSeed Stability ({stability})",0.5,0.5,0); - var arrow_buttons_controls = [strength, cooperation, purity, stability] - for (var i=0;i<4;i++){ - if (custom=2) then draw_sprite_stretched(spr_arrow,0,625,325+(i*55),32,32); - if (scr_hit(625,325+(i*55),657,357+(i*55))){ - obj_cursor.image_index=1; - if (cooldown<=0) and (custom=2) and (arrow_buttons_controls[i]>1) and (mouse_left>=1){ - arrow_buttons_controls[i]-=1; - points-=10; - cooldown=8000; + var _strength_ratings = ["", "Decimated", "Reduced", "Reduced", "Reduced", "Average", "Above Average", "Above Average", "Considerable", "Considerable", "Overwhelming"]; + var _cooperation_ratings = ["", "Antagonistic", "Uncooperative", "Uncooperative", "Uncooperative", "Neutral", "Trusted", "Trusted", "Trusted", "Trusted", "Exemplary"]; + var _geneseed_ratings = ["", "Abnormal", "Horrible", "Horrible", "Bad", "Bad", "Mediocre", "Mediocre", "Good", "Good", "Perfect"]; + draw_text_transformed(505, 332, $"Strength: {_strength_ratings[strength]} ({strength})", 0.5, 0.5, 0); + draw_text_transformed(505, 387, $"Cooperation: {_cooperation_ratings[cooperation]} ({cooperation})", 0.5, 0.5, 0); + draw_text_transformed(505, 442, $"Gene-Seed Purity: {_geneseed_ratings[purity]} ({purity})", 0.5, 0.5, 0); + draw_text_transformed(505, 497, $"Gene-Seed Stability: {_geneseed_ratings[stability]} ({stability*10}%)", 0.5, 0.5, 0); + + var arrow_buttons_controls = [strength, cooperation, purity, stability]; + if (custom == 2) { + for (var i = 0; i < 4; i++) { + draw_sprite_stretched(spr_arrow, 0, 436, 325 + (i * 55), 32, 32); + if (scr_hit(436, 325 + (i * 55), 436 + sprite_get_width(spr_arrow), 357 + (i * 55))) { + obj_cursor.image_index = 1; + if ((cooldown <= 0) && (arrow_buttons_controls[i] > 1) && (mouse_left >= 1)) { + arrow_buttons_controls[i] -= 1; + points -= 10; + cooldown = 8000; + } } - } - if (custom=2) then draw_sprite_stretched(spr_arrow,1,1135,325+(i*55),32,32); - if (scr_hit(1135,325+(i*55),1167,357+(i*55))){ - obj_cursor.image_index=1; - if (cooldown<=0) and (custom=2) and (arrow_buttons_controls[i]<10) and (points+10<=maxpoints) and (mouse_left>=1){ - arrow_buttons_controls[i]+=1; - points+=10; - cooldown=8000; + draw_sprite_stretched(spr_arrow, 1, 470, 325 + (i * 55), 32, 32); + if (scr_hit(470, 325 + (i * 55), 470 + sprite_get_width(spr_arrow), 357 + (i * 55))) { + obj_cursor.image_index = 1; + if ((cooldown <= 0) && (arrow_buttons_controls[i] < 10) && (points + 10 <= maxpoints) && (mouse_left >= 1)) { + arrow_buttons_controls[i] += 1; + points += 10; + cooldown = 8000; + } } } - draw_rectangle(668,330+(i*55),1125,351+(i*55),1); - draw_rectangle(668,330+(i*55),668+(arrow_buttons_controls[i]*45.7),351+(i*55),0); } + strength = arrow_buttons_controls[0]; cooperation = arrow_buttons_controls[1]; purity = arrow_buttons_controls[2]; stability = arrow_buttons_controls[3]; - if (scr_hit(532,325,1166,357)){tooltip="Strength";tooltip2="How many companies your chapter begins with. For every score below five a company will be removed; conversely, each score higher grants 50 additional astartes.";} - if (scr_hit(486,380,1166,412)){tooltip="Cooperation";tooltip2="How diplomatic your chapter is. A low score will lower starting dispositions of Imperial factions and make disposition increases less likely to occur.";} - if (scr_hit(442,435,1166,467)){tooltip="Purity";tooltip2="A measure of how pure and mutation-free your chapter's gene-seed is. A perfect score means no mutations must be chosen. The lower the score, the more mutations.";} - if (scr_hit(423,490,1166,522)){tooltip="Stability";tooltip2="A measure of how easily new mutations and corruption can occur with your chapter-gene seed. A perfect score makes the gene-seed almost perfectly stable.";} + if (scr_hit(436, 325, 800, 357)) { + tooltip = "Strength"; + tooltip2 = "How many marines your chapter has. \nFor every score below five a company will be removed; conversely, each score higher grants 50 additional astartes."; + } + if (scr_hit(436, 380, 800, 412)) { + tooltip = "Cooperation"; + tooltip2 = "How diplomatic your chapter is. \nA low score will lower starting dispositions of Imperial factions and make disposition increases less likely to occur."; + } + if (scr_hit(436, 435, 800, 467)) { + tooltip = "Purity"; + tooltip2 = "How many inherent mutations your gene-seed has. \nEach score bellow ten means one mutations will need to be chosen."; + } + if (scr_hit(436, 490, 800, 522)) { + tooltip = "Stability"; + tooltip2 = "How easily new mutations and corruption can occur with your chapter-gene seed. \nAffects the amount of random mutations your existing marines have, and the amount new aspirants get after the implantation is finished."; + } } if (popup!="icons"){ From 4c197c5d2a7f1f9d3053eaffdd278db88d445dfc Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:03:11 +0300 Subject: [PATCH 12/20] Stability can now range from 1 to 100 --- datafiles/main/chapters/1.JSON | 2 +- datafiles/main/chapters/10.JSON | 2 +- datafiles/main/chapters/11.JSON | 2 +- datafiles/main/chapters/12.JSON | 2 +- datafiles/main/chapters/13.JSON | 2 +- datafiles/main/chapters/14.JSON | 2 +- datafiles/main/chapters/15.JSON | 2 +- datafiles/main/chapters/16.JSON | 2 +- datafiles/main/chapters/17.JSON | 2 +- datafiles/main/chapters/2.JSON | 2 +- datafiles/main/chapters/3.JSON | 2 +- datafiles/main/chapters/31.JSON | 2 +- datafiles/main/chapters/32.JSON | 2 +- datafiles/main/chapters/4.JSON | 2 +- datafiles/main/chapters/5.JSON | 2 +- datafiles/main/chapters/6.JSON | 2 +- datafiles/main/chapters/7.JSON | 2 +- datafiles/main/chapters/8.JSON | 2 +- datafiles/main/chapters/9.JSON | 2 +- datafiles/main/chapters/template.JSON | 2 +- objects/obj_creation/Create_0.gml | 2 +- objects/obj_creation/Step_0.gml | 2 +- .../scr_chapter_random/scr_chapter_random.gml | 6 ++--- .../scr_creation_draw_slides.gml | 22 ++++++++++--------- .../scr_load_controller.gml | 2 +- .../scr_marine_struct/scr_marine_struct.gml | 2 +- .../scr_specialist_point_handler.gml | 2 +- 27 files changed, 40 insertions(+), 38 deletions(-) diff --git a/datafiles/main/chapters/1.JSON b/datafiles/main/chapters/1.JSON index d12231e651..1bb5fda5b4 100644 --- a/datafiles/main/chapters/1.JSON +++ b/datafiles/main/chapters/1.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 10, // 1-10 "purity": 10, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/10.JSON b/datafiles/main/chapters/10.JSON index 7082733fb4..915ef29077 100644 --- a/datafiles/main/chapters/10.JSON +++ b/datafiles/main/chapters/10.JSON @@ -12,7 +12,7 @@ "fleet_type": 3, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 8, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/11.JSON b/datafiles/main/chapters/11.JSON index 7d130815a0..9d3a0ac73f 100644 --- a/datafiles/main/chapters/11.JSON +++ b/datafiles/main/chapters/11.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/12.JSON b/datafiles/main/chapters/12.JSON index 61f65539f3..833a283c11 100644 --- a/datafiles/main/chapters/12.JSON +++ b/datafiles/main/chapters/12.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 7, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/13.JSON b/datafiles/main/chapters/13.JSON index 863a448b76..9ade5fc3c4 100644 --- a/datafiles/main/chapters/13.JSON +++ b/datafiles/main/chapters/13.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 8, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 8, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/14.JSON b/datafiles/main/chapters/14.JSON index 68245e3e34..b1c73196bd 100644 --- a/datafiles/main/chapters/14.JSON +++ b/datafiles/main/chapters/14.JSON @@ -12,7 +12,7 @@ "fleet_type": 3, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 1, // 1-10 "purity": 9, // 1-10 - "stability": 8, // 1-10 + "stability": 80, // 1-10 "cooperation": 1, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/15.JSON b/datafiles/main/chapters/15.JSON index 926acf2133..dbcfb26a19 100644 --- a/datafiles/main/chapters/15.JSON +++ b/datafiles/main/chapters/15.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 8, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/16.JSON b/datafiles/main/chapters/16.JSON index 4d5a9c08df..1a9f48e2ea 100644 --- a/datafiles/main/chapters/16.JSON +++ b/datafiles/main/chapters/16.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 9, // 1-10 - "stability": 1, // 1-10 + "stability": 10, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/17.JSON b/datafiles/main/chapters/17.JSON index 734c60b491..68c3b23d49 100644 --- a/datafiles/main/chapters/17.JSON +++ b/datafiles/main/chapters/17.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 9, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/2.JSON b/datafiles/main/chapters/2.JSON index 4d42a70c18..6dfe915544 100644 --- a/datafiles/main/chapters/2.JSON +++ b/datafiles/main/chapters/2.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/3.JSON b/datafiles/main/chapters/3.JSON index 5f32599984..7b317a845c 100644 --- a/datafiles/main/chapters/3.JSON +++ b/datafiles/main/chapters/3.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 10, // 1-10 "purity": 9, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 4, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/31.JSON b/datafiles/main/chapters/31.JSON index 3a73c63f65..31f5a65e96 100644 --- a/datafiles/main/chapters/31.JSON +++ b/datafiles/main/chapters/31.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 10, // 1-10 + "stability": 100, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/32.JSON b/datafiles/main/chapters/32.JSON index 06f41e45dc..c49994952d 100644 --- a/datafiles/main/chapters/32.JSON +++ b/datafiles/main/chapters/32.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 1, // 1-10 "purity": 10, // 1-10 - "stability": 7, // 1-10 + "stability": 70, // 1-10 "cooperation": 1, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/4.JSON b/datafiles/main/chapters/4.JSON index 0805dfd016..489c072b14 100644 --- a/datafiles/main/chapters/4.JSON +++ b/datafiles/main/chapters/4.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 6, // 1-10 "purity": 8, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 8, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/5.JSON b/datafiles/main/chapters/5.JSON index be7b34ac97..a44edcd29c 100644 --- a/datafiles/main/chapters/5.JSON +++ b/datafiles/main/chapters/5.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 9, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 7, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/6.JSON b/datafiles/main/chapters/6.JSON index d5b0d772e2..b481f343bc 100644 --- a/datafiles/main/chapters/6.JSON +++ b/datafiles/main/chapters/6.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 2, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/7.JSON b/datafiles/main/chapters/7.JSON index 89ba3380d4..f3e1bd3f07 100644 --- a/datafiles/main/chapters/7.JSON +++ b/datafiles/main/chapters/7.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 10, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/8.JSON b/datafiles/main/chapters/8.JSON index 2f733fc8a9..f3ca154661 100644 --- a/datafiles/main/chapters/8.JSON +++ b/datafiles/main/chapters/8.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 9, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 10, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/9.JSON b/datafiles/main/chapters/9.JSON index 55debdd51e..9b87cd78dc 100644 --- a/datafiles/main/chapters/9.JSON +++ b/datafiles/main/chapters/9.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 8, // 1-10 - "stability": 9, // 1-10 + "stability": 90, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/template.JSON b/datafiles/main/chapters/template.JSON index 587311e60c..6784006f86 100644 --- a/datafiles/main/chapters/template.JSON +++ b/datafiles/main/chapters/template.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 5, // 1-10 - "stability": 5, // 1-10 + "stability": 50, // 1-10 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/objects/obj_creation/Create_0.gml b/objects/obj_creation/Create_0.gml index 3e22d56e45..67dbfb4218 100644 --- a/objects/obj_creation/Create_0.gml +++ b/objects/obj_creation/Create_0.gml @@ -349,7 +349,7 @@ fleet_type=1; strength=5; cooperation=5; purity=5; -stability=5; +stability=50; var i = 9; diff --git a/objects/obj_creation/Step_0.gml b/objects/obj_creation/Step_0.gml index 32232f913d..fb1f7d9055 100644 --- a/objects/obj_creation/Step_0.gml +++ b/objects/obj_creation/Step_0.gml @@ -101,7 +101,7 @@ if (change_slide==35) or (change_slide==36) or (chapter_name=="Doom Benefactors" strength=5; cooperation=5; purity=5; - stability=5; + stability=50; for(var i=0; i<16; i++){ adv[i]=""; adv_num[i]=0; diff --git a/scripts/scr_chapter_random/scr_chapter_random.gml b/scripts/scr_chapter_random/scr_chapter_random.gml index 5394ade1a8..fb4b554377 100644 --- a/scripts/scr_chapter_random/scr_chapter_random.gml +++ b/scripts/scr_chapter_random/scr_chapter_random.gml @@ -26,7 +26,7 @@ function scr_chapter_random(argument0) { icon=1;icon_name="da"; founding=1;found_secret=0; points=0;maxpoints=100; - fleet_type=1;strength=5;cooperation=5;purity=5;stability=5; + fleet_type=1;strength=5;cooperation=5;purity=5;stability=50; homeworld="Temperate";homeworld_name=global.name_generator.generate_star_name(); recruiting="Death";recruiting_name=global.name_generator.generate_star_name(); flagship_name=global.name_generator.generate_imperial_ship_name(); @@ -84,8 +84,8 @@ function scr_chapter_random(argument0) { if (argument0=1){ strength=choose(2,3,4,5,6,7,8); purity=choose(2,3,4,5,6,7,8);if (strength<5) then purity+=2; - stability=choose(2,3,4,5,6,7,8);if (purity<5) then stability+=2; - cooperation=choose(2,3,4,5,6,7,8);if (stability<5) then cooperation+=2; + stability=choose(20,30,40,50,60,70,80);if (purity<5) then stability+=20; + cooperation=choose(2,3,4,5,6,7,8);if (stability<50) then cooperation+=2; founding=10;found_secret=floor(random(10))+1; points=100;maxpoints=100; diff --git a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml index c0c8d6413b..db099494ab 100644 --- a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml +++ b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml @@ -504,27 +504,29 @@ function draw_chapter_trait_select(){ draw_text_transformed(505, 332, $"Strength: {_strength_ratings[strength]} ({strength})", 0.5, 0.5, 0); draw_text_transformed(505, 387, $"Cooperation: {_cooperation_ratings[cooperation]} ({cooperation})", 0.5, 0.5, 0); draw_text_transformed(505, 442, $"Gene-Seed Purity: {_geneseed_ratings[purity]} ({purity})", 0.5, 0.5, 0); - draw_text_transformed(505, 497, $"Gene-Seed Stability: {_geneseed_ratings[stability]} ({stability*10}%)", 0.5, 0.5, 0); + draw_text_transformed(505, 497, $"Gene-Seed Stability: ({stability}%)", 0.5, 0.5, 0); var arrow_buttons_controls = [strength, cooperation, purity, stability]; + var score_costs = [10, 10, 10, 1]; + var scores_max = [10, 10, 10, 100]; + var scores_min = [1, 1, 1, 1]; + var click_change = keyboard_check(vk_control) ? 10 : 1; if (custom == 2) { for (var i = 0; i < 4; i++) { draw_sprite_stretched(spr_arrow, 0, 436, 325 + (i * 55), 32, 32); if (scr_hit(436, 325 + (i * 55), 436 + sprite_get_width(spr_arrow), 357 + (i * 55))) { obj_cursor.image_index = 1; - if ((cooldown <= 0) && (arrow_buttons_controls[i] > 1) && (mouse_left >= 1)) { - arrow_buttons_controls[i] -= 1; - points -= 10; - cooldown = 8000; + if (scr_click_left() && (arrow_buttons_controls[i] - click_change) >= scores_min[i]) { + arrow_buttons_controls[i] -= click_change; + points -= score_costs[i] * click_change; } } draw_sprite_stretched(spr_arrow, 1, 470, 325 + (i * 55), 32, 32); if (scr_hit(470, 325 + (i * 55), 470 + sprite_get_width(spr_arrow), 357 + (i * 55))) { obj_cursor.image_index = 1; - if ((cooldown <= 0) && (arrow_buttons_controls[i] < 10) && (points + 10 <= maxpoints) && (mouse_left >= 1)) { - arrow_buttons_controls[i] += 1; - points += 10; - cooldown = 8000; + if (scr_click_left() && (arrow_buttons_controls[i] + click_change) <= scores_max[i] && (points + (score_costs[i] * click_change) <= maxpoints)) { + arrow_buttons_controls[i] += click_change; + points += score_costs[i] * click_change; } } } @@ -549,7 +551,7 @@ function draw_chapter_trait_select(){ } if (scr_hit(436, 490, 800, 522)) { tooltip = "Stability"; - tooltip2 = "How easily new mutations and corruption can occur with your chapter-gene seed. \nAffects the amount of random mutations your existing marines have, and the amount new aspirants get after the implantation is finished."; + tooltip2 = "How easily new mutations and corruption can occur with your chapter's gene seed. \nAffects the amount of random mutations your existing marines have, and the amount new aspirants get after the implantation is finished. \nEven a 100% stable gene seed is not fully protected from the mutations."; } } diff --git a/scripts/scr_load_controller/scr_load_controller.gml b/scripts/scr_load_controller/scr_load_controller.gml index cacf71b234..024c3a9ad2 100644 --- a/scripts/scr_load_controller/scr_load_controller.gml +++ b/scripts/scr_load_controller/scr_load_controller.gml @@ -95,7 +95,7 @@ function scr_load_controller(save_id){ obj_controller.tau_messenger=ini_read_real("Controller","tau_messenger",0); obj_controller.fleet_all=ini_read_real("Controller","fleet_all",0); obj_ini.tolerant=ini_read_real("Controller","tolerant",0); - obj_ini.stability=ini_read_real("Controller","stability",5); + obj_ini.stability=ini_read_real("Controller","stability",50); obj_ini.purity=ini_read_real("Controller","purity",5); obj_controller.tolerant=ini_read_real("Controller","tolerant",0); obj_controller.unload=ini_read_real("Controller","unload",0); diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index 3d9c2b927e..50311a05ee 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -741,7 +741,7 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) }; var _mutation_roll = irandom_range(1, 100); - var _mutation_threshold = 11 - obj_ini.stability; + var _mutation_threshold = 101 - obj_ini.stability; if (_mutation_roll <= _mutation_threshold) { var _mutation_names = struct_get_names(gene_seed_mutations); var _possible_mutations = []; diff --git a/scripts/scr_specialist_point_handler/scr_specialist_point_handler.gml b/scripts/scr_specialist_point_handler/scr_specialist_point_handler.gml index 38a4b091f6..f9504443d6 100644 --- a/scripts/scr_specialist_point_handler/scr_specialist_point_handler.gml +++ b/scripts/scr_specialist_point_handler/scr_specialist_point_handler.gml @@ -383,7 +383,7 @@ function SpecialistPointHandler() constructor{ _cur_slave = _slaves[i]; if (_cur_slave.num>0){ _cur_slave.eta--; - if (irandom(100000)<=(10-obj_ini.stability)*_cur_slave.num){ + if (irandom(100000)<=(101-obj_ini.stability)*_cur_slave.num){ _cur_slave.num--; _lost_gene_slaves++; scr_add_item("Gene Pod Incubator"); From ae1069b0b6a6d152a42ee7a05fc7dff3d174ea5b Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:51:01 +0300 Subject: [PATCH 13/20] Readjust stability to cap at 99; set it to 90 by default; more mutations for unlucky --- datafiles/main/chapters/1.JSON | 2 +- datafiles/main/chapters/10.JSON | 2 +- datafiles/main/chapters/11.JSON | 2 +- datafiles/main/chapters/12.JSON | 2 +- datafiles/main/chapters/13.JSON | 2 +- datafiles/main/chapters/14.JSON | 2 +- datafiles/main/chapters/15.JSON | 2 +- datafiles/main/chapters/16.JSON | 2 +- datafiles/main/chapters/17.JSON | 2 +- datafiles/main/chapters/2.JSON | 2 +- datafiles/main/chapters/3.JSON | 2 +- datafiles/main/chapters/31.JSON | 2 +- datafiles/main/chapters/32.JSON | 2 +- datafiles/main/chapters/4.JSON | 2 +- datafiles/main/chapters/5.JSON | 2 +- datafiles/main/chapters/6.JSON | 2 +- datafiles/main/chapters/7.JSON | 2 +- datafiles/main/chapters/8.JSON | 2 +- datafiles/main/chapters/9.JSON | 2 +- datafiles/main/chapters/template.JSON | 2 +- objects/obj_creation/Create_0.gml | 2 +- objects/obj_creation/Step_0.gml | 2 +- scripts/scr_chapter_random/scr_chapter_random.gml | 6 +++--- .../scr_creation_draw_slides/scr_creation_draw_slides.gml | 2 +- scripts/scr_load_controller/scr_load_controller.gml | 2 +- scripts/scr_marine_struct/scr_marine_struct.gml | 5 ++--- .../scr_specialist_point_handler.gml | 2 +- 27 files changed, 30 insertions(+), 31 deletions(-) diff --git a/datafiles/main/chapters/1.JSON b/datafiles/main/chapters/1.JSON index 1bb5fda5b4..34f0bb6f4f 100644 --- a/datafiles/main/chapters/1.JSON +++ b/datafiles/main/chapters/1.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 10, // 1-10 "purity": 10, // 1-10 - "stability": 90, // 1-10 + "stability": 96, // 1-99 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/10.JSON b/datafiles/main/chapters/10.JSON index 915ef29077..bafb985a30 100644 --- a/datafiles/main/chapters/10.JSON +++ b/datafiles/main/chapters/10.JSON @@ -12,7 +12,7 @@ "fleet_type": 3, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 8, // 1-10 - "stability": 90, // 1-10 + "stability": 96, // 1-99 "cooperation": 5, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/11.JSON b/datafiles/main/chapters/11.JSON index 9d3a0ac73f..fe0b8083e0 100644 --- a/datafiles/main/chapters/11.JSON +++ b/datafiles/main/chapters/11.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 90, // 1-10 + "stability": 99, // 1-99 "cooperation": 2, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/12.JSON b/datafiles/main/chapters/12.JSON index 833a283c11..75b31fd4fc 100644 --- a/datafiles/main/chapters/12.JSON +++ b/datafiles/main/chapters/12.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 90, // 1-10 + "stability": 96, // 1-99 "cooperation": 7, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/13.JSON b/datafiles/main/chapters/13.JSON index 9ade5fc3c4..a82b06ee96 100644 --- a/datafiles/main/chapters/13.JSON +++ b/datafiles/main/chapters/13.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 8, // 1-10 - "stability": 90, // 1-10 + "stability": 96, // 1-99 "cooperation": 8, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/14.JSON b/datafiles/main/chapters/14.JSON index b1c73196bd..db82d1da1d 100644 --- a/datafiles/main/chapters/14.JSON +++ b/datafiles/main/chapters/14.JSON @@ -12,7 +12,7 @@ "fleet_type": 3, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 1, // 1-10 "purity": 9, // 1-10 - "stability": 80, // 1-10 + "stability": 90, // 1-99 "cooperation": 1, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/15.JSON b/datafiles/main/chapters/15.JSON index dbcfb26a19..bfd44e2137 100644 --- a/datafiles/main/chapters/15.JSON +++ b/datafiles/main/chapters/15.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 8, // 1-10 - "stability": 90, // 1-10 + "stability": 92, // 1-99 "cooperation": 5, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/16.JSON b/datafiles/main/chapters/16.JSON index 1a9f48e2ea..b35a832ad7 100644 --- a/datafiles/main/chapters/16.JSON +++ b/datafiles/main/chapters/16.JSON @@ -12,7 +12,7 @@ "fleet_type": 2, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 9, // 1-10 - "stability": 10, // 1-10 + "stability": 76, // 1-99 "cooperation": 2, // 1-10 "homeworld_exists": 0, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/17.JSON b/datafiles/main/chapters/17.JSON index 68c3b23d49..9bbd55f955 100644 --- a/datafiles/main/chapters/17.JSON +++ b/datafiles/main/chapters/17.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 9, // 1-10 - "stability": 90, // 1-10 + "stability": 96, // 1-99 "cooperation": 2, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/2.JSON b/datafiles/main/chapters/2.JSON index 6dfe915544..5f1d726b43 100644 --- a/datafiles/main/chapters/2.JSON +++ b/datafiles/main/chapters/2.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 90, // 1-10 + "stability": 96, // 1-99 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/3.JSON b/datafiles/main/chapters/3.JSON index 7b317a845c..cd332c4366 100644 --- a/datafiles/main/chapters/3.JSON +++ b/datafiles/main/chapters/3.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 10, // 1-10 "purity": 9, // 1-10 - "stability": 90, // 1-10 + "stability": 94, // 1-99 "cooperation": 4, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/31.JSON b/datafiles/main/chapters/31.JSON index 31f5a65e96..beecc4d4d7 100644 --- a/datafiles/main/chapters/31.JSON +++ b/datafiles/main/chapters/31.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 100, // 1-10 + "stability": 99, // 1-99 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/32.JSON b/datafiles/main/chapters/32.JSON index c49994952d..c63b890d3c 100644 --- a/datafiles/main/chapters/32.JSON +++ b/datafiles/main/chapters/32.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 1, // 1-10 "purity": 10, // 1-10 - "stability": 70, // 1-10 + "stability": 86, // 1-99 "cooperation": 1, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/4.JSON b/datafiles/main/chapters/4.JSON index 489c072b14..bb39adf144 100644 --- a/datafiles/main/chapters/4.JSON +++ b/datafiles/main/chapters/4.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 6, // 1-10 "purity": 8, // 1-10 - "stability": 90, // 1-10 + "stability": 96, // 1-99 "cooperation": 8, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/5.JSON b/datafiles/main/chapters/5.JSON index a44edcd29c..35f4a60a36 100644 --- a/datafiles/main/chapters/5.JSON +++ b/datafiles/main/chapters/5.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 9, // 1-10 - "stability": 90, // 1-10 + "stability": 94, // 1-99 "cooperation": 7, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/6.JSON b/datafiles/main/chapters/6.JSON index b481f343bc..a5039659e5 100644 --- a/datafiles/main/chapters/6.JSON +++ b/datafiles/main/chapters/6.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 90, // 1-10 + "stability": 96, // 1-99 "cooperation": 2, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/7.JSON b/datafiles/main/chapters/7.JSON index f3e1bd3f07..7ef9a130f7 100644 --- a/datafiles/main/chapters/7.JSON +++ b/datafiles/main/chapters/7.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 10, // 1-10 - "stability": 90, // 1-10 + "stability": 96, // 1-99 "cooperation": 10, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/8.JSON b/datafiles/main/chapters/8.JSON index f3ca154661..fcf1ae6c85 100644 --- a/datafiles/main/chapters/8.JSON +++ b/datafiles/main/chapters/8.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 2, // 1-10 "purity": 9, // 1-10 - "stability": 90, // 1-10 + "stability": 95, // 1-99 "cooperation": 10, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 0, // 1 = true diff --git a/datafiles/main/chapters/9.JSON b/datafiles/main/chapters/9.JSON index 9b87cd78dc..b114549f1f 100644 --- a/datafiles/main/chapters/9.JSON +++ b/datafiles/main/chapters/9.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 8, // 1-10 - "stability": 90, // 1-10 + "stability": 95, // 1-99 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/datafiles/main/chapters/template.JSON b/datafiles/main/chapters/template.JSON index 6784006f86..a1170806e1 100644 --- a/datafiles/main/chapters/template.JSON +++ b/datafiles/main/chapters/template.JSON @@ -12,7 +12,7 @@ "fleet_type": 1, // 1= Homeworld, 2 = Fleet based, 3 = Penitent "strength": 5, // 1-10 "purity": 5, // 1-10 - "stability": 50, // 1-10 + "stability": 50, // 1-99 "cooperation": 5, // 1-10 "homeworld_exists": 1, // 1 = true "recruiting_exists": 1, // 1 = true diff --git a/objects/obj_creation/Create_0.gml b/objects/obj_creation/Create_0.gml index 67dbfb4218..2b13c3bab0 100644 --- a/objects/obj_creation/Create_0.gml +++ b/objects/obj_creation/Create_0.gml @@ -349,7 +349,7 @@ fleet_type=1; strength=5; cooperation=5; purity=5; -stability=50; +stability=90; var i = 9; diff --git a/objects/obj_creation/Step_0.gml b/objects/obj_creation/Step_0.gml index fb1f7d9055..e2f3ec348e 100644 --- a/objects/obj_creation/Step_0.gml +++ b/objects/obj_creation/Step_0.gml @@ -101,7 +101,7 @@ if (change_slide==35) or (change_slide==36) or (chapter_name=="Doom Benefactors" strength=5; cooperation=5; purity=5; - stability=50; + stability=90; for(var i=0; i<16; i++){ adv[i]=""; adv_num[i]=0; diff --git a/scripts/scr_chapter_random/scr_chapter_random.gml b/scripts/scr_chapter_random/scr_chapter_random.gml index fb4b554377..57aa9ac8bb 100644 --- a/scripts/scr_chapter_random/scr_chapter_random.gml +++ b/scripts/scr_chapter_random/scr_chapter_random.gml @@ -26,7 +26,7 @@ function scr_chapter_random(argument0) { icon=1;icon_name="da"; founding=1;found_secret=0; points=0;maxpoints=100; - fleet_type=1;strength=5;cooperation=5;purity=5;stability=50; + fleet_type=1;strength=5;cooperation=5;purity=5;stability=90; homeworld="Temperate";homeworld_name=global.name_generator.generate_star_name(); recruiting="Death";recruiting_name=global.name_generator.generate_star_name(); flagship_name=global.name_generator.generate_imperial_ship_name(); @@ -84,8 +84,8 @@ function scr_chapter_random(argument0) { if (argument0=1){ strength=choose(2,3,4,5,6,7,8); purity=choose(2,3,4,5,6,7,8);if (strength<5) then purity+=2; - stability=choose(20,30,40,50,60,70,80);if (purity<5) then stability+=20; - cooperation=choose(2,3,4,5,6,7,8);if (stability<50) then cooperation+=2; + stability=choose(20,30,40,50,60,70,80);if (purity<5) then stability+=19; + cooperation=choose(2,3,4,5,6,7,8);if (stability<90) then cooperation+=2; founding=10;found_secret=floor(random(10))+1; points=100;maxpoints=100; diff --git a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml index db099494ab..aed9e6bd76 100644 --- a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml +++ b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml @@ -508,7 +508,7 @@ function draw_chapter_trait_select(){ var arrow_buttons_controls = [strength, cooperation, purity, stability]; var score_costs = [10, 10, 10, 1]; - var scores_max = [10, 10, 10, 100]; + var scores_max = [10, 10, 10, 99]; var scores_min = [1, 1, 1, 1]; var click_change = keyboard_check(vk_control) ? 10 : 1; if (custom == 2) { diff --git a/scripts/scr_load_controller/scr_load_controller.gml b/scripts/scr_load_controller/scr_load_controller.gml index 024c3a9ad2..d4b8c599b0 100644 --- a/scripts/scr_load_controller/scr_load_controller.gml +++ b/scripts/scr_load_controller/scr_load_controller.gml @@ -95,7 +95,7 @@ function scr_load_controller(save_id){ obj_controller.tau_messenger=ini_read_real("Controller","tau_messenger",0); obj_controller.fleet_all=ini_read_real("Controller","fleet_all",0); obj_ini.tolerant=ini_read_real("Controller","tolerant",0); - obj_ini.stability=ini_read_real("Controller","stability",50); + obj_ini.stability=ini_read_real("Controller","stability",90); obj_ini.purity=ini_read_real("Controller","purity",5); obj_controller.tolerant=ini_read_real("Controller","tolerant",0); obj_controller.unload=ini_read_real("Controller","unload",0); diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index 50311a05ee..8dc771cbc4 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -741,7 +741,7 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) }; var _mutation_roll = irandom_range(1, 100); - var _mutation_threshold = 101 - obj_ini.stability; + var _mutation_threshold = 100 - obj_ini.stability; if (_mutation_roll <= _mutation_threshold) { var _mutation_names = struct_get_names(gene_seed_mutations); var _possible_mutations = []; @@ -757,8 +757,7 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) var _picked_mutation = array_random_index(_possible_mutations); gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; array_delete(_possible_mutations, _picked_mutation, 1); - _mutation_threshold = min(_mutation_threshold - 1, 1); - _mutation_roll = irandom_range(1, 100); + _mutation_threshold = max(_mutation_threshold - 5, 0); if (_mutation_roll <= _mutation_threshold) { continue; } else { diff --git a/scripts/scr_specialist_point_handler/scr_specialist_point_handler.gml b/scripts/scr_specialist_point_handler/scr_specialist_point_handler.gml index f9504443d6..1862d21b85 100644 --- a/scripts/scr_specialist_point_handler/scr_specialist_point_handler.gml +++ b/scripts/scr_specialist_point_handler/scr_specialist_point_handler.gml @@ -383,7 +383,7 @@ function SpecialistPointHandler() constructor{ _cur_slave = _slaves[i]; if (_cur_slave.num>0){ _cur_slave.eta--; - if (irandom(100000)<=(101-obj_ini.stability)*_cur_slave.num){ + if (irandom(100000)<=(100-obj_ini.stability)*_cur_slave.num){ _cur_slave.num--; _lost_gene_slaves++; scr_add_item("Gene Pod Incubator"); From dc2298189c511ab3da9135eba0da8e2169527f23 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Fri, 21 Mar 2025 18:33:40 +0300 Subject: [PATCH 14/20] Mutation stuff into methods --- .../scr_marine_struct/scr_marine_struct.gml | 83 ++++++++++--------- 1 file changed, 45 insertions(+), 38 deletions(-) diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index 8dc771cbc4..79dba07cef 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -726,52 +726,59 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) allegiance = global.chapter_name; } - gene_seed_mutations = { - "preomnor": obj_ini.preomnor, - "lyman": obj_ini.lyman, - "omophagea": obj_ini.omophagea, - "ossmodula": obj_ini.ossmodula, - "zygote": obj_ini.zygote, - "betchers": obj_ini.betchers, - "catalepsean": obj_ini.catalepsean, - "occulobe": obj_ini.occulobe, - "mucranoid": obj_ini.mucranoid, - "membrane": obj_ini.membrane, - "voice": obj_ini.voice + assign_inherent_mutations(); + assign_random_mutations(); + + if (gene_seed_mutations[$ "voice"] == 1){ + charisma-=2; + } + + static assign_inherent_mutations = function() { + gene_seed_mutations = { + "preomnor": obj_ini.preomnor, + "lyman": obj_ini.lyman, + "omophagea": obj_ini.omophagea, + "ossmodula": obj_ini.ossmodula, + "zygote": obj_ini.zygote, + "betchers": obj_ini.betchers, + "catalepsean": obj_ini.catalepsean, + "occulobe": obj_ini.occulobe, + "mucranoid": obj_ini.mucranoid, + "membrane": obj_ini.membrane, + "voice": obj_ini.voice + }; }; - var _mutation_roll = irandom_range(1, 100); - var _mutation_threshold = 100 - obj_ini.stability; - if (_mutation_roll <= _mutation_threshold) { - var _mutation_names = struct_get_names(gene_seed_mutations); - var _possible_mutations = []; - for (var i = 0; i < array_length(_mutation_names); i++) { - var _mutation = _mutation_names[i]; - if (gene_seed_mutations[$ _mutation] == 0) { - array_push(_possible_mutations, _mutation); + static assign_random_mutations = function() { + var _mutation_roll = irandom_range(1, 100); + var _mutation_threshold = 100 - obj_ini.stability; + if (_mutation_roll <= _mutation_threshold) { + var _mutation_names = struct_get_names(gene_seed_mutations); + var _possible_mutations = []; + for (var i = 0; i < array_length(_mutation_names); i++) { + var _mutation = _mutation_names[i]; + if (gene_seed_mutations[$ _mutation] == 0) { + array_push(_possible_mutations, _mutation); + } } - } - - repeat (array_length(_possible_mutations)) { - if (array_length(_possible_mutations) > 0) { - var _picked_mutation = array_random_index(_possible_mutations); - gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; - array_delete(_possible_mutations, _picked_mutation, 1); - _mutation_threshold = max(_mutation_threshold - 5, 0); - if (_mutation_roll <= _mutation_threshold) { - continue; + + repeat (array_length(_possible_mutations)) { + if (array_length(_possible_mutations) > 0) { + var _picked_mutation = array_random_index(_possible_mutations); + gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; + array_delete(_possible_mutations, _picked_mutation, 1); + _mutation_threshold = max(_mutation_threshold - 5, 0); + if (_mutation_roll <= _mutation_threshold) { + continue; + } else { + break; + } } else { break; } - } else { - break; } } - } - - if (gene_seed_mutations[$ "voice"] == 1){ - charisma-=2; - } + }; //array index 0 == trait to add // array index 1 == probability e.g 99,98 == if (irandom(99)>98){add_trait} From 2adfbc464f96cc5b0d0c28ac7d045e7f27b6119e Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Fri, 21 Mar 2025 18:34:12 +0300 Subject: [PATCH 15/20] Minor creation screen cleanup --- objects/obj_creation/Draw_0.gml | 108 +++++++++++++++++- .../scr_creation_draw_slides.gml | 20 ++-- 2 files changed, 114 insertions(+), 14 deletions(-) diff --git a/objects/obj_creation/Draw_0.gml b/objects/obj_creation/Draw_0.gml index 0d564c2936..cc4a850ae2 100644 --- a/objects/obj_creation/Draw_0.gml +++ b/objects/obj_creation/Draw_0.gml @@ -193,18 +193,113 @@ try { draw_rectangle(445, 200, 1125, 202, true); + draw_set_halign(fa_center); draw_set_font(fnt_40k_30b); - draw_text_transformed(503, 210, string_hash_to_newline("Gene-Seed Mutations"), 0.6, 0.6, 0); - if (mutations > mutations_selected) { - draw_text_transformed(585, 230, $"Select {mutations - mutations_selected} More", 0.5, 0.5, 0); + draw_text_transformed(800, 210, string_hash_to_newline("Gene-Seed Mutations"), 0.6, 0.6, 0); + if (purity == 10) { + draw_text_transformed(800, 230, $"The gene-seed is perfectly pure", 0.5, 0.5, 0); + } else { + if (mutations > mutations_selected) { + draw_text_transformed(800, 230, $"Select {mutations - mutations_selected} more, according to your purity score", 0.5, 0.5, 0); + } else { + draw_text_transformed(800, 230, $"The gene-seed is mutated enough", 0.5, 0.5, 0); + draw_set_alpha(0.5); + } } + draw_set_halign(fa_left); var x1, y1, spac = 34; - if (custom < 2) { + if (custom < 2 || purity == 10) { draw_set_alpha(0.5); } - var mutations_defects = [{t_tip: "Anemic Preomnor", t_tip2: "Your Astartes lack the detoxifying gland called the Preomnor- they are more susceptible to poisons and toxins.", data: preomnor, mutation_points: 1}, {t_tip: "Disturbing Voice", t_tip2: "Your Astartes have a voice like a creaking door or a rumble. Decreases Imperium and Imperial Guard disposition.", data: voice, mutation_points: 1, disposition: [[eFACTION.Imperium, -8]]}, {t_tip: "Doomed", t_tip2: "Your Chapter cannot make more Astartes until enough research is generated. Counts as four mutations.", data: doomed, mutation_points: 4, disposition: [[eFACTION.Imperium, -8], [6, 8]]}, {t_tip: "Faulty Lyman's Ear", t_tip2: "Lacking a working Lyman's ear, all deep-striked Astartes recieve moderate penalties to both attack and defense.", data: lyman, mutation_points: 1}, {t_tip: "Hyper-Stimulated Omophagea", t_tip2: "After every battle the Astartes have a chance to feast upon their fallen enemies, or seldom, their allies.", data: omophagea, mutation_points: 1}, {t_tip: "Hyperactive Ossmodula", t_tip2: "Instead of wound tissue bone is generated; Apothecaries must spend twice the normal time healing your Astartes.", data: ossmodula, mutation_points: 1}, {t_tip: "Lost Zygote", t_tip2: "One of the Zygotes is faulty or missing. The Astartes only have one each and generate half the normal Gene-Seed.", data: zygote, mutation_points: 2}, {t_tip: "Inactive Sus-an Membrane", t_tip2: "Your Astartes do not have a Sus-an Membrane; they cannot enter suspended animation and recieve more casualties as a result.", data: membrane, mutation_points: 1}, {t_tip: "Missing Betchers Gland", t_tip2: "Your Astartes cannot spit acid, and as a result, have slightly less attack in melee combat.", data: betchers, mutation_points: 1}, {t_tip: "Mutated Catalepsean Node", t_tip2: "Your Astartes have reduced awareness when tired. Slightly less attack in ranged and melee combat.", data: catalepsean, mutation_points: 1}, {t_tip: "Oolitic Secretions", t_tip2: "Either by secretions or radiation, your Astartes have an unusual or strange skin color. Decreases disposition.", data: secretions, mutation_points: 1, disposition: [[eFACTION.Imperium, -8]]}, {t_tip: "Oversensitive Occulobe", t_tip2: "Your Astartes are no longer immune to stun grenades, bright lights, and have a massive penalty during morning battles.", data: occulobe, mutation_points: 1, disposition: [[eFACTION.Imperium, -8]]}, {t_tip: "Rampant Mucranoid", t_tip2: "Your Astartes' Mucranoid cannot be turned off; the slime lowers most dispositions and occasionally damages their armour.", data: mucranoid, mutation_points: 1, disposition: [[1, -4], [eFACTION.Imperium, -8], [3, -4], [4, -4], [5, -4], [6, -4]]}]; + var mutations_defects = [{ + t_tip: "Anemic Preomnor", + t_tip2: "Your Astartes lack the detoxifying gland called the Preomnor- they are more susceptible to poisons and toxins.", + data: preomnor, + mutation_points: 1 + }, { + t_tip: "Disturbing Voice", + t_tip2: "Your Astartes have a voice like a creaking door or a rumble. Decreases Imperium and Imperial Guard disposition.", + data: voice, + mutation_points: 1, + disposition: [ + [eFACTION.Imperium, -8] + ] + }, { + t_tip: "Doomed", + t_tip2: "Your Chapter cannot make more Astartes until enough research is generated. Counts as four mutations.", + data: doomed, + mutation_points: 4, + disposition: [ + [eFACTION.Imperium, -8], + [6, 8] + ] + }, { + t_tip: "Faulty Lyman's Ear", + t_tip2: "Lacking a working Lyman's ear, all deep-striked Astartes recieve moderate penalties to both attack and defense.", + data: lyman, + mutation_points: 1 + }, { + t_tip: "Hyper-Stimulated Omophagea", + t_tip2: "After every battle the Astartes have a chance to feast upon their fallen enemies, or seldom, their allies.", + data: omophagea, + mutation_points: 1 + }, { + t_tip: "Hyperactive Ossmodula", + t_tip2: "Instead of wound tissue bone is generated; Apothecaries must spend twice the normal time healing your Astartes.", + data: ossmodula, + mutation_points: 1 + }, { + t_tip: "Lost Zygote", + t_tip2: "One of the Zygotes is faulty or missing. The Astartes only have one each and generate half the normal Gene-Seed.", + data: zygote, + mutation_points: 2 + }, { + t_tip: "Inactive Sus-an Membrane", + t_tip2: "Your Astartes do not have a Sus-an Membrane; they cannot enter suspended animation and recieve more casualties as a result.", + data: membrane, + mutation_points: 1 + }, { + t_tip: "Missing Betchers Gland", + t_tip2: "Your Astartes cannot spit acid, and as a result, have slightly less attack in melee combat.", + data: betchers, + mutation_points: 1 + }, { + t_tip: "Mutated Catalepsean Node", + t_tip2: "Your Astartes have reduced awareness when tired. Slightly less attack in ranged and melee combat.", + data: catalepsean, + mutation_points: 1 + }, { + t_tip: "Oolitic Secretions", + t_tip2: "Either by secretions or radiation, your Astartes have an unusual or strange skin color. Decreases disposition.", + data: secretions, + mutation_points: 1, + disposition: [ + [eFACTION.Imperium, -8] + ] + }, { + t_tip: "Oversensitive Occulobe", + t_tip2: "Your Astartes are no longer immune to stun grenades, bright lights, and have a massive penalty during morning battles.", + data: occulobe, + mutation_points: 1, + disposition: [ + [eFACTION.Imperium, -8] + ] + }, { + t_tip: "Rampant Mucranoid", + t_tip2: "Your Astartes' Mucranoid cannot be turned off; the slime lowers most dispositions and occasionally damages their armour.", + data: mucranoid, + mutation_points: 1, + disposition: [ + [1, -4], + [eFACTION.Imperium, -8], + [3, -4], + [4, -4], + [5, -4], + [6, -4] + ] + }]; x1 = 450; y1 = 260; for (var i = 0; i < array_length(mutations_defects); i++) { @@ -263,7 +358,8 @@ try { draw_line(445, 507, 1125, 507); draw_set_font(fnt_40k_30b); - draw_text_transformed(444, 515, string_hash_to_newline("Starting Disposition"), 0.6, 0.6, 0); + draw_set_halign(fa_center); + draw_text_transformed(800, 515, string_hash_to_newline("Starting Disposition"), 0.6, 0.6, 0); draw_set_font(fnt_40k_14b); draw_set_halign(fa_right); diff --git a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml index aed9e6bd76..6515917059 100644 --- a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml +++ b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml @@ -495,7 +495,7 @@ function draw_chapter_trait_select(){ draw_line(445,291,1125,291); draw_set_halign(fa_center); - draw_text_transformed(800,301,string_hash_to_newline("Chapter Stats"),0.6,0.6,0); + draw_text_transformed(800,301,"Chapter Stats",0.6,0.6,0); draw_set_halign(fa_left); var _strength_ratings = ["", "Decimated", "Reduced", "Reduced", "Reduced", "Average", "Above Average", "Above Average", "Considerable", "Considerable", "Overwhelming"]; @@ -516,6 +516,8 @@ function draw_chapter_trait_select(){ draw_sprite_stretched(spr_arrow, 0, 436, 325 + (i * 55), 32, 32); if (scr_hit(436, 325 + (i * 55), 436 + sprite_get_width(spr_arrow), 357 + (i * 55))) { obj_cursor.image_index = 1; + tooltip = "Decrease"; + tooltip2 = "(Hold Ctrl to decrease by 10)"; if (scr_click_left() && (arrow_buttons_controls[i] - click_change) >= scores_min[i]) { arrow_buttons_controls[i] -= click_change; points -= score_costs[i] * click_change; @@ -524,6 +526,8 @@ function draw_chapter_trait_select(){ draw_sprite_stretched(spr_arrow, 1, 470, 325 + (i * 55), 32, 32); if (scr_hit(470, 325 + (i * 55), 470 + sprite_get_width(spr_arrow), 357 + (i * 55))) { obj_cursor.image_index = 1; + tooltip = "Increase"; + tooltip2 = "(Hold Ctrl to increase by 10)"; if (scr_click_left() && (arrow_buttons_controls[i] + click_change) <= scores_max[i] && (points + (score_costs[i] * click_change) <= maxpoints)) { arrow_buttons_controls[i] += click_change; points += score_costs[i] * click_change; @@ -537,21 +541,21 @@ function draw_chapter_trait_select(){ purity = arrow_buttons_controls[2]; stability = arrow_buttons_controls[3]; - if (scr_hit(436, 325, 800, 357)) { + if (scr_hit(505, 325, 800, 357)) { tooltip = "Strength"; tooltip2 = "How many marines your chapter has. \nFor every score below five a company will be removed; conversely, each score higher grants 50 additional astartes."; } - if (scr_hit(436, 380, 800, 412)) { + if (scr_hit(505, 380, 800, 412)) { tooltip = "Cooperation"; tooltip2 = "How diplomatic your chapter is. \nA low score will lower starting dispositions of Imperial factions and make disposition increases less likely to occur."; } - if (scr_hit(436, 435, 800, 467)) { - tooltip = "Purity"; + if (scr_hit(505, 435, 800, 467)) { + tooltip = "Gene-Seed Purity"; tooltip2 = "How many inherent mutations your gene-seed has. \nEach score bellow ten means one mutations will need to be chosen."; } - if (scr_hit(436, 490, 800, 522)) { - tooltip = "Stability"; - tooltip2 = "How easily new mutations and corruption can occur with your chapter's gene seed. \nAffects the amount of random mutations your existing marines have, and the amount new aspirants get after the implantation is finished. \nEven a 100% stable gene seed is not fully protected from the mutations."; + if (scr_hit(505, 490, 800, 522)) { + tooltip = "Gene-Seed Stability"; + tooltip2 = "How easily new mutations and corruption can occur with your chapter's gene seed. \nAffects the amount of random mutations your existing marines have, and the amount new aspirants get after the implantation is finished."; } } From a3ecef537b5218d688ebb5479e7bfc63191a3c1b Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Fri, 21 Mar 2025 19:19:28 +0300 Subject: [PATCH 16/20] Stability mods compliant with the new values --- scripts/scr_creation/scr_creation.gml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/scr_creation/scr_creation.gml b/scripts/scr_creation/scr_creation.gml index a2c4a2583d..2f49d7235e 100644 --- a/scripts/scr_creation/scr_creation.gml +++ b/scripts/scr_creation/scr_creation.gml @@ -106,8 +106,8 @@ function scr_creation(slide_num) { disposition[eSTART_FACTION.Progenitor] = 60 + ((cooperation - 5) * 4); // Prog disposition[eSTART_FACTION.Imperium] = 50 + ((cooperation - 5) * 4); // Imp disposition[eSTART_FACTION.Mechanicus] = 40 + ((cooperation - 5) * 2); // Mech - disposition[eSTART_FACTION.Inquisition] = 30 + ((cooperation - 5) * 2) - (2 * (10 - purity)) - (2 * (10 - stability)); // Inq - disposition[eSTART_FACTION.Ecclesiarchy] = 40 + ((cooperation - 5) * 4) - (10 - purity) - ((10 - stability)); // Ecclesiarchy + disposition[eSTART_FACTION.Inquisition] = 30 + ((cooperation - 5) * 2) - (2 * (10 - purity)) - ((99 - stability) / 5)); // Inq + disposition[eSTART_FACTION.Ecclesiarchy] = 40 + ((cooperation - 5) * 4) - (10 - purity) - ((99 - stability) / 5); // Ecclesiarchy switch (founding) { case eCHAPTERS.SPACE_WOLVES: From 27066111fc1f117e63085719e7ed23889787da4b Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Fri, 21 Mar 2025 19:21:50 +0300 Subject: [PATCH 17/20] Typo fixes --- objects/obj_creation/Draw_0.gml | 4 ++-- scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/objects/obj_creation/Draw_0.gml b/objects/obj_creation/Draw_0.gml index cc4a850ae2..2c8ac75fd0 100644 --- a/objects/obj_creation/Draw_0.gml +++ b/objects/obj_creation/Draw_0.gml @@ -237,7 +237,7 @@ try { ] }, { t_tip: "Faulty Lyman's Ear", - t_tip2: "Lacking a working Lyman's ear, all deep-striked Astartes recieve moderate penalties to both attack and defense.", + t_tip2: "Lacking a working Lyman's ear, all deep-striked Astartes receive moderate penalties to both attack and defense.", data: lyman, mutation_points: 1 }, { @@ -257,7 +257,7 @@ try { mutation_points: 2 }, { t_tip: "Inactive Sus-an Membrane", - t_tip2: "Your Astartes do not have a Sus-an Membrane; they cannot enter suspended animation and recieve more casualties as a result.", + t_tip2: "Your Astartes do not have a Sus-an Membrane; they cannot enter suspended animation and receive more casualties as a result.", data: membrane, mutation_points: 1 }, { diff --git a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml index 6515917059..cf0689c5f7 100644 --- a/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml +++ b/scripts/scr_creation_draw_slides/scr_creation_draw_slides.gml @@ -551,7 +551,7 @@ function draw_chapter_trait_select(){ } if (scr_hit(505, 435, 800, 467)) { tooltip = "Gene-Seed Purity"; - tooltip2 = "How many inherent mutations your gene-seed has. \nEach score bellow ten means one mutations will need to be chosen."; + tooltip2 = "How many inherent mutations your gene-seed has. \nEach score below ten means one mutations will need to be chosen."; } if (scr_hit(505, 490, 800, 522)) { tooltip = "Gene-Seed Stability"; From 880890bdc632e18ae5f2797850a139cf390d9f50 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Fri, 21 Mar 2025 19:32:34 +0300 Subject: [PATCH 18/20] Update scripts/scr_creation/scr_creation.gml Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- scripts/scr_creation/scr_creation.gml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/scr_creation/scr_creation.gml b/scripts/scr_creation/scr_creation.gml index 2f49d7235e..5cb6b278db 100644 --- a/scripts/scr_creation/scr_creation.gml +++ b/scripts/scr_creation/scr_creation.gml @@ -106,7 +106,7 @@ function scr_creation(slide_num) { disposition[eSTART_FACTION.Progenitor] = 60 + ((cooperation - 5) * 4); // Prog disposition[eSTART_FACTION.Imperium] = 50 + ((cooperation - 5) * 4); // Imp disposition[eSTART_FACTION.Mechanicus] = 40 + ((cooperation - 5) * 2); // Mech - disposition[eSTART_FACTION.Inquisition] = 30 + ((cooperation - 5) * 2) - (2 * (10 - purity)) - ((99 - stability) / 5)); // Inq + disposition[eSTART_FACTION.Inquisition] = 30 + ((cooperation - 5) * 2) - (2 * (10 - purity)) - ((99 - stability) / 5); // Inq disposition[eSTART_FACTION.Ecclesiarchy] = 40 + ((cooperation - 5) * 4) - (10 - purity) - ((99 - stability) / 5); // Ecclesiarchy switch (founding) { From 73c82b26fc49bd72391fa3fb20ce2d83b4c17dfa Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Fri, 21 Mar 2025 19:40:18 +0300 Subject: [PATCH 19/20] A bit steeper chance drop for consequent mutations --- scripts/scr_marine_struct/scr_marine_struct.gml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index 79dba07cef..032ef929f1 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -762,12 +762,14 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) } } + var _mutations_assigned = 0; repeat (array_length(_possible_mutations)) { if (array_length(_possible_mutations) > 0) { var _picked_mutation = array_random_index(_possible_mutations); gene_seed_mutations[$ _possible_mutations[_picked_mutation]] = 1; array_delete(_possible_mutations, _picked_mutation, 1); - _mutation_threshold = max(_mutation_threshold - 5, 0); + _mutations_assigned++; + _mutation_threshold = max(_mutation_threshold - 5 * _mutations_assigned, 0); if (_mutation_roll <= _mutation_threshold) { continue; } else { From cf57e44263ed01538f2c7de6f3a976680b3ca8b7 Mon Sep 17 00:00:00 2001 From: EttyKitty <20323032+EttyKitty@users.noreply.github.com> Date: Fri, 21 Mar 2025 19:41:34 +0300 Subject: [PATCH 20/20] Lucky dice roll --- scripts/scr_marine_struct/scr_marine_struct.gml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/scr_marine_struct/scr_marine_struct.gml b/scripts/scr_marine_struct/scr_marine_struct.gml index 032ef929f1..8570dcd1f0 100644 --- a/scripts/scr_marine_struct/scr_marine_struct.gml +++ b/scripts/scr_marine_struct/scr_marine_struct.gml @@ -750,7 +750,7 @@ function TTRPG_stats(faction, comp, mar, class = "marine", other_spawn_data={}) }; static assign_random_mutations = function() { - var _mutation_roll = irandom_range(1, 100); + var _mutation_roll = roll_personal_dice(1, 100, "high", self); var _mutation_threshold = 100 - obj_ini.stability; if (_mutation_roll <= _mutation_threshold) { var _mutation_names = struct_get_names(gene_seed_mutations);