commit 1690f8e573a19bd9576e1e683af6adac8b0b3e3f Author: materus Date: Tue Jun 4 17:40:37 2024 +0200 Initial commit diff --git a/better_mi/common/armies/~bm_assault_armies.txt b/better_mi/common/armies/~bm_assault_armies.txt new file mode 100644 index 0000000..f758157 --- /dev/null +++ b/better_mi/common/armies/~bm_assault_armies.txt @@ -0,0 +1,160 @@ +assault_army = { + damage = 1.00 + health = 1.00 + morale = 1.00 + morale_damage = 1.00 + collateral_damage = 1.00 + war_exhaustion = 1.00 + time = 90 + icon = GFX_army_type_assault + prerequisites = { "tech_assault_armies" } + resources = { + category = armies + cost = { + minerals = 100 + } + + upkeep = { + energy = 1 + } + } + + show_tech_unlock_if = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + potential_country = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + potential = { + from = { + NOR = { + has_trait = "trait_mechanical" + has_trait = "trait_machine_unit" + has_trait = "trait_limited_cybernetic" + is_sapient = no + } + } + } + + ai_weight = { + base = 100 + modifier = { + set = 0 + OR = { + is_fallen_empire = yes + has_technology = tech_telepathy + has_technology = tech_gene_seed_purification + AND = { + OR = { + has_ethic = ethic_militarist + has_ethic = ethic_fanatic_militarist + } + has_technology = tech_gene_banks + } + } + } + modifier = { + factor = 0.01 #cannot guarantee that they actually have slaves/robots to get armies from + OR = { + AND = { + has_ai_personality_behaviour = slaver + has_technology = tech_neural_implants + } + AND = { + has_ai_personality_behaviour = robot_liberator + has_technology = tech_droid_workers + } + has_valid_civic = civic_reanimated_armies + } + } + } +} + +clone_army = { + damage = 1.00 + health = 1.00 + morale = 1.00 + collateral_damage = 1.25 + war_exhaustion = 0.50 + time = 30 + icon = GFX_army_type_clone + pop_limited = no + + resources = { + category = armies + cost = { + minerals = 75 + } + + upkeep = { + energy = 0.75 + } + } + + prerequisites = { "tech_gene_banks" } + + show_tech_unlock_if = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + + potential_country = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + potential = { + from = { + NOR = { + has_trait = "trait_mechanical" + has_trait = "trait_machine_unit" + has_trait = "trait_limited_cybernetic" + is_sapient = no + } + } + } + + ai_weight = { + base = 100 + modifier = { + set = 0 + OR = { + is_fallen_empire = yes + has_technology = tech_telepathy + has_technology = tech_gene_seed_purification + NAND = { + OR = { + has_ethic = ethic_militarist + has_ethic = ethic_fanatic_militarist + } + has_technology = tech_gene_banks + } + } + } + modifier = { + factor = 2 + has_origin = origin_clone_army + } + } +} \ No newline at end of file diff --git a/better_mi/common/armies/~bm_defense_armies.txt b/better_mi/common/armies/~bm_defense_armies.txt new file mode 100644 index 0000000..db87b9d --- /dev/null +++ b/better_mi/common/armies/~bm_defense_armies.txt @@ -0,0 +1,41 @@ +defense_army = { + defensive = yes + is_pop_spawned = yes + health = 1.25 + damage = 1.50 + morale = 1.25 + collateral_damage = 0.0 + war_exhaustion = 0.0 # No WE from defense armies + icon = GFX_army_type_defensive + + resources = { + category = armies + produces = { + trigger = { + exists = owner + owner = { has_active_tradition = tr_unyielding_resistance_is_frugal } + } + unity = 0.5 + } + } + + potential = { + from = { + NOR = { + has_trait = "trait_mechanical" + has_trait = "trait_machine_unit" + is_sapient = no + } + } + owner = { + is_primitive = no + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + } +} \ No newline at end of file diff --git a/better_mi/common/armies/~bm_occupation_armies.txt b/better_mi/common/armies/~bm_occupation_armies.txt new file mode 100644 index 0000000..8cd3b67 --- /dev/null +++ b/better_mi/common/armies/~bm_occupation_armies.txt @@ -0,0 +1,29 @@ +occupation_army = { + defensive = yes + occupation = yes + health = 1.25 + damage = 1.50 + morale = 1.25 + collateral_damage = 0.0 + war_exhaustion = 0.0 # No WE from occupation armies + icon = GFX_army_type_defensive + + potential = { + from = { + NOR = { + has_trait = "trait_mechanical" + has_trait = "trait_machine_unit" + is_sapient = no + } + } + owner = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + } +} \ No newline at end of file diff --git a/better_mi/common/ascension_perks/~00_bm_ascension.txt b/better_mi/common/ascension_perks/~00_bm_ascension.txt new file mode 100644 index 0000000..adc0c1c --- /dev/null +++ b/better_mi/common/ascension_perks/~00_bm_ascension.txt @@ -0,0 +1,43 @@ +ap_nihilistic_acquisition = { + potential = { + host_has_dlc = "Apocalypse" + NOT = { + has_ascension_perk = ap_nihilistic_acquisition + } + NOR = { + has_valid_civic = civic_barbaric_despoilers + has_valid_civic = civic_machine_assimilator + has_origin = origin_slavers + has_origin = origin_khan_successor + } + } + + on_enabled = { + custom_tooltip = "allow_raiding" + } + + possible = { + OR = { + is_authoritarian = yes + is_xenophobe = yes + has_ethic = ethic_gestalt_consciousness + } + } + + ai_weight = { + factor = 10 + modifier = { + factor = 0 + NOT = { has_ai_personality_behaviour = slaver } + } + modifier = { + factor = 0 + OR = { + has_valid_civic = civic_fanatic_purifiers + has_valid_civic = civic_hive_devouring_swarm + has_valid_civic = civic_inwards_perfection + has_valid_civic = civic_machine_terminator + } + } + } +} diff --git a/better_mi/common/ascension_perks/~00_bm_ascension_paths.txt b/better_mi/common/ascension_perks/~00_bm_ascension_paths.txt new file mode 100644 index 0000000..25b219d --- /dev/null +++ b/better_mi/common/ascension_perks/~00_bm_ascension_paths.txt @@ -0,0 +1,44 @@ +# Cyborg Ascension (Machine Intelligence: Driven Assimilators) +ap_organo_machine_interfacing_assimilator = { + on_enabled = { + custom_tooltip = "organo_machine_interfacing_tooltip" + } + possible = { + custom_tooltip = { + fail_text = "requires_ascension_perks_2" + num_ascension_perks > 1 + } + custom_tooltip = { + fail_text = "requires_not_ap_synthetic_age" + NOT = { has_ascension_perk = ap_synthetic_age } + } + custom_tooltip = { + fail_text = "requires_free_tradition_tree" + num_tradition_categories < @max_tradition_trees + } + } + + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + NOT = { + has_ascension_perk = ap_organo_machine_interfacing_assimilator + has_civic = civic_machine_servitor + has_civic = civic_machine_terminator + } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_mechromancy + } + } + + ai_weight = { + factor = @ascension_path_base_weight + modifier = { + factor = @ascension_path_synergy_weight + has_organo_machine_interfacing_assimilator_synergy = yes + } + } +} \ No newline at end of file diff --git a/better_mi/common/bombardment_stances/~00_bm_bomb.txt b/better_mi/common/bombardment_stances/~00_bm_bomb.txt new file mode 100644 index 0000000..b35e632 --- /dev/null +++ b/better_mi/common/bombardment_stances/~00_bm_bomb.txt @@ -0,0 +1,70 @@ +raiding = { + trigger = { + OR = { + owner = { has_ascension_perk = ap_nihilistic_acquisition } + owner = { has_valid_civic = civic_barbaric_despoilers } + owner = { has_valid_civic = civic_machine_assimilator } + owner = { has_origin = origin_slavers } + owner = { has_origin = origin_khan_successor } + owner = { is_country_type = debt_collectors } + AND = { + owner = { is_country_type = enclave_mercenary } + controller = { + OR = { + has_ascension_perk = ap_nihilistic_acquisition + has_valid_civic = civic_barbaric_despoilers + has_valid_civic = civic_machine_assimilator + has_origin = origin_slavers + has_origin = origin_khan_successor + } + } + } + } + } + + default = no + + stop_when_armies_dead = no + abduct_pops = yes + + planet_damage = 0.5 + army_damage = 0.5 + + kill_pop_chance = { + base = 0.15 + } + min_pops_to_kill_pop = 2 + + # root = fleet + # from = planet + ai_weight = { + weight = 8 + modifier = { + factor = 0 + exists = from + from = { + OR = { + num_pops < 2 + owner = { NOT = { is_hostile = root.owner } } + } + } + NOT = { + owner = { has_origin = origin_slavers } + } + } + modifier = { + factor = 0.01 + exists = from + from = { + owner = { has_claim = root.solar_system } + } + NOT = { + owner = { has_origin = origin_slavers } + } + } + modifier = { + factor = 100 + owner = { has_origin = origin_slavers } + } + } +} diff --git a/better_mi/common/council_agendas/~00_bm_agendas.txt b/better_mi/common/council_agendas/~00_bm_agendas.txt new file mode 100644 index 0000000..3e3c205 --- /dev/null +++ b/better_mi/common/council_agendas/~00_bm_agendas.txt @@ -0,0 +1,77 @@ +agenda_cybernetic_advantage_assimilator = { + agenda_cost = @base_tradition_agenda_cost + allow = { + has_tradition = tr_cybernetics_assimilator_adopt + } + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_synthetic_ascension = no + } + modifier = { + planet_pops_cyborgs_upkeep_mult = -0.05 + pop_growth_speed = 0.05 + } + finish_modifier = agenda_cybernetic_advantage_assimilator_finish +} + +agenda_organo_machine_interfacing_assimilator = { + agenda_cost = @ascension_agenda_cost + agenda_cooldown = @ascension_agenda_cooldown + allow = { + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_synthetic_ascension = no + NAND = { + has_technology = tech_powered_exoskeletons + has_technology = tech_integrated_cybernetics + has_technology = tech_neuro_quantum_links + } + } + effect = { + inverted_switch = { + trigger = has_technology + tech_powered_exoskeletons = { + add_tech_progress = { + tech = tech_powered_exoskeletons + progress = @agenda_award_tech_progress + } + } + tech_integrated_cybernetics = { + add_tech_progress = { + tech = tech_integrated_cybernetics + progress = @agenda_award_tech_progress + } + } + tech_neuro_quantum_links = { + add_tech_progress = { + tech = tech_neuro_quantum_links + progress = @agenda_award_tech_progress + } + } + default = { + add_monthly_resource_mult = { + resource = engineering_research + value = @tier3researchreward + min = @tier3researchmin + max = @tier3researchmax + } + } + } + } +} \ No newline at end of file diff --git a/better_mi/common/districts/~00_bm_districts.txt b/better_mi/common/districts/~00_bm_districts.txt new file mode 100644 index 0000000..c6443b5 --- /dev/null +++ b/better_mi/common/districts/~00_bm_districts.txt @@ -0,0 +1,95 @@ +district_machine_science = { + base_buildtime = 480 + is_capped_by_modifier = no + icon = district_hab_science + + prerequisites = { + tech_planetary_government + } + + show_on_uncolonized = { + exists = from + from = { + is_machine_empire = yes + NOT = { has_valid_civic = civic_machine_servitor } + } + OR = { + is_planet_class = pc_machine + pd_is_planet_class_machine = yes + } + } + + potential = { + exists = owner + owner = { + is_machine_empire = yes + NOT = { has_valid_civic = civic_machine_servitor } + } + OR = { + is_planet_class = pc_machine + pd_is_planet_class_machine = yes + } + } + + allow = { + NOT = { has_modifier = resort_colony } + NOT = { has_modifier = slave_colony } + } + + conversion_ratio = 1 + convert_to = { + district_city + district_nexus + district_hive + district_arcology_administrative + district_arcology_religious + } + + resources = { + category = planet_districts + cost = { + minerals = @city_cost + } + upkeep = { + energy = 2 + } + + } + + planet_modifier = { + job_calculator_add = 1 + planet_housing_add = 1 + } + + triggered_planet_modifier = { + potential = { + exists = owner + owner = { + is_machine_empire = yes + has_ascension_perk = ap_machine_worlds + } + } + job_calculator_add = 1 + planet_housing_add = 1 + } + + + triggered_planet_modifier = { + potential = { + exists = owner + owner = { + is_machine_empire = yes + has_ascension_perk = ap_machine_worlds + has_tradition = tr_discovery_finish + } + } + modifier = { + job_calculator_add = 1 + planet_housing_add = 1 + } + } + + triggered_desc = { + text = job_calculator_effect_desc + } +} \ No newline at end of file diff --git a/better_mi/common/game_rules/ó~00_bm_rules.txt b/better_mi/common/game_rules/ó~00_bm_rules.txt new file mode 100644 index 0000000..3b71ce7 --- /dev/null +++ b/better_mi/common/game_rules/ó~00_bm_rules.txt @@ -0,0 +1,47 @@ +can_generate_leader_from_pop = { + can_be_leader = yes + NOT = { has_living_standard = { type = living_standard_hive_mind_worker country = owner } } + NOT = { has_living_standard = { type = living_standard_hive_mind_advanced_worker country = owner } } +} +can_generate_military_leader_from_pop = { + can_be_leader = yes + can_be_military_leader = yes + NOT = { has_living_standard = { type = living_standard_hive_mind_worker country = owner } } +} + +can_release_vassal = { + custom_tooltip = { + fail_text = default + NOT = { has_valid_civic = civic_fanatic_purifiers } + } + custom_tooltip = { + fail_text = default + NOT = { has_valid_civic = civic_machine_terminator } + } + custom_tooltip = { + fail_text = default + NOT = { has_valid_civic = civic_hive_devouring_swarm } + } +} + +#Root = species +#This = country +can_release_vassal_from_species = { + root = { + is_sapient = yes + NOR = { + AND = { + has_trait = trait_hive_mind + NOT = { prev.this = { has_origin = origin_progenitor_hive } } + } + AND = { + NOT = { has_trait = trait_hive_mind } + prev.this = { has_authority = auth_hive_mind } + } + has_trait = trait_mechanical + can_think = no + has_trait = trait_clone_soldier_infertile + has_trait = trait_clone_soldier_infertile_full_potential + } + } +} \ No newline at end of file diff --git a/better_mi/common/scripted_effects/ó~00_bm_effect.txt b/better_mi/common/scripted_effects/ó~00_bm_effect.txt new file mode 100644 index 0000000..b8da680 --- /dev/null +++ b/better_mi/common/scripted_effects/ó~00_bm_effect.txt @@ -0,0 +1,464 @@ +set_origin_effect = { + country_event = { id = game_start.8 } + give_starting_resources_effect = yes + # Necrophages + if = { + limit = { + has_trait = trait_necrophage + } + set_origin = origin_necrophage + } + # Subterranean + else_if = { + limit = { + has_trait = trait_cave_dweller + } + set_origin = origin_subterranean + } + # Subterranean Machines + else_if = { + limit = { + has_trait = trait_robot_cave_dweller + } + set_origin = origin_subterranean_machines + } + # Survivor + else_if = { + limit = { + has_trait = trait_survivor + } + set_origin = origin_post_apocalyptic + } + # Survivor Machine + else_if = { + limit = { + has_trait = trait_robot_survivor + } + set_origin = origin_post_apocalyptic_machines + } + # Void Dwellers + else_if = { + limit = { + has_trait = trait_void_dweller_1 + } + set_origin = origin_void_dwellers + } + # Void Machines + else_if = { + limit = { + has_trait = trait_void_dweller_2 + } + set_origin = origin_void_machines + } + # Calamitous Birth + else_if = { + limit = { + from = { has_origin = origin_lithoid } + has_trait = trait_lithoid + } + set_origin = origin_lithoid + } + # Liberated + else_if = { + limit = { + has_country_flag = released_empire + } + set_origin = origin_liberated + } + else = { + set_origin = origin_default + } + + # Fix hive/machine + if = { + limit = { + OR = { + from = { is_machine_empire = yes } + is_machine_empire = yes + } + NOT = { has_trait = trait_machine_unit } + } + country_remove_ethic = ethic_gestalt_consciousness + shift_ethic = ethic_fanatic_materialist + shift_ethic = ethic_xenophile + change_government = { + authority = random + civics = random + cooldown = no + remove_invalid_civics = yes + } + } + else_if = { + limit = { + is_hive_empire = yes + NOT = { has_trait = trait_hive_mind } + } + country_remove_ethic = ethic_gestalt_consciousness + shift_ethic = ethic_xenophile + change_government = random + } + #Assimilators + else_if = { + limit = { + is_machine_empire = no + from = { + is_machine_empire = yes + has_valid_civic = civic_machine_assimilator + } + has_trait = trait_machine_unit + } + shift_ethic = ethic_gestalt_consciousness + change_government = { + authority = auth_machine_intelligence + civics = { + civic = civic_machine_assimilator + civic = random + } + cooldown = no + remove_invalid_civics = yes + } + } + #Servitor + else_if = { + limit = { + is_machine_empire = no + from = { + is_machine_empire = yes + has_valid_civic = civic_machine_servitor + } + has_trait = trait_machine_unit + } + shift_ethic = ethic_gestalt_consciousness + change_government = { + authority = auth_machine_intelligence + civics = { + civic = civic_machine_servitor + civic = random + } + cooldown = no + remove_invalid_civics = yes + } + } + #Generic machine + else_if = { + limit = { + is_machine_empire = no + from = { + is_machine_empire = yes + } + has_trait = trait_machine_unit + } + shift_ethic = ethic_gestalt_consciousness + change_government = { + authority = auth_machine_intelligence + civics = random + cooldown = no + remove_invalid_civics = yes + } + } + else_if = { + limit = { + is_hive_empire = no + has_trait = trait_hive_mind + } + shift_ethic = ethic_gestalt_consciousness + change_government = { + authority = auth_hive_mind + cooldown = no + remove_invalid_civics = yes + } + } + country_event = { id = game_start.70 } + country_event = { id = game_start.72 } +} + + +apply_post_assimilation_effects = { + if = { # assimilator empire + limit = { + root.owner = { + has_authority = auth_machine_intelligence + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + root.owner = { generate_cyborg_treats = yes } # scripted effect + } + if = { + limit = { + NOT = { + owner = { + any_owned_pop = { + is_exact_same_species = event_target:convert_to_species + NOT = { is_same_value = prevprev } + } + } + } + } + if = { # set citizenship + limit = { root.owner = { has_authority = auth_machine_intelligence } } + set_citizenship_type = { + type = citizenship_full_machine + country = root.owner + } + } + else = { + set_citizenship_type = { + type = citizenship_full + country = root.owner + } + } + + if = { # set citizenship + limit = { root.owner = { has_ethic = ethic_gestalt_consciousness } } + set_living_standard = { + type = living_standard_hive_mind + country = root.owner + } + } + } + + if = { # Handle assimilation of spiritualists into cybernetic empires + limit = { + root.owner = { has_policy_flag = cyberization_standards_limited } + is_spiritualist = yes + has_trait = trait_cybernetic + } + convert_to_limited_cybernetic_effect = { + CYBER_SPECIES = event_target:convert_to_species + } + } +} + + +give_society_tech_tier_1_effect = { + if = { + limit = { + is_regular_empire = yes + } + give_technology = { tech = tech_space_trading } + } + give_technology = { tech = tech_eco_simulation } + give_technology = { tech = tech_hydroponics } + give_technology = { tech = tech_food_processing_1 } + if = { + limit = { + is_regular_empire = yes + } + give_technology = { tech = tech_alien_life_studies } + } + if = { + limit = { + is_regular_empire = yes + } + give_technology = { tech = tech_frontier_health } + } + give_technology = { tech = tech_dense_jungle } + give_technology = { tech = tech_quicksand_basin } + give_technology = { tech = tech_noxious_swamp } + give_technology = { tech = tech_massive_glacier } + give_technology = { tech = tech_toxic_kelp } + give_technology = { tech = tech_deep_sinkhole } + if = { + limit = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_servitor + } + } + give_technology = { tech = tech_genome_mapping } + } + give_technology = { tech = tech_ground_defense_planning } + give_technology = { tech = tech_planetary_unification } + give_technology = { tech = tech_adaptive_bureaucracy } + if = { + limit = { + is_regular_empire = yes + } + give_technology = { tech = tech_neural_implants } + } + if = { + limit = { + is_gestalt = no + } + give_technology = { tech = tech_hyper_entertainment_forum } + } + if = { + limit = { + NOR = { + has_ethic = ethic_spiritualist + has_ethic = ethic_fanatic_spiritualist + has_valid_civic = civic_machine_servitor + } + } + give_technology = { tech = tech_heritage_site } + } +} + +give_society_tech_tier_2_effect = { + give_technology = { tech = tech_gene_crops } + give_technology = { tech = tech_arcane_deciphering } + if = { + limit = { + OR = { + is_machine_empire = no + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_servitor + } + } + give_technology = { tech = tech_colonization_2 } + } + if = { + limit = { + OR = { + is_machine_empire = no + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_servitor + } + } + give_technology = { tech = tech_colonization_3 } + } + if = { + limit = { + is_gestalt = no + } + give_technology = { tech = tech_frontier_hospital } + } + give_technology = { tech = tech_mountain_range } + give_technology = { tech = tech_volcano } + give_technology = { tech = tech_dangerous_wildlife } + give_technology = { tech = tech_terrestrial_sculpting } + if = { + limit = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + give_technology = { tech = tech_vitality_boosters } + } + if = { + limit = { + NOT = { + has_valid_civic = civic_fanatic_purifiers + #has_valid_civic = civic_machine_terminator # covered by not being machine + #has_valid_civic = civic_hive_devouring_swarm # can uplift to make delicious + } + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_servitor + } + } + give_technology = { tech = tech_epigenetic_triggers } + } + if = { + limit = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + give_technology = { tech = tech_cloning } + } + if = { + limit = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + give_technology = { tech = tech_gene_banks } + } + give_technology = { tech = tech_doctrine_fleet_size_1 } + give_technology = { tech = tech_doctrine_fleet_size_2 } + give_technology = { tech = tech_interstellar_fleet_traditions } + give_technology = { tech = tech_doctrine_navy_size_1 } + give_technology = { tech = tech_centralized_command } + give_technology = { tech = tech_global_defense_grid } + give_technology = { tech = tech_galactic_ambitions } + give_technology = { tech = tech_interstellar_campaigns } + give_technology = { tech = tech_colonial_centralization } + give_technology = { tech = tech_planetary_infrastructure_1 } + if = { + limit = { + NOT = { has_ethic = ethic_gestalt_consciousness } + } + give_technology = { tech = tech_subdermal_stimulation } + } + give_technology = { tech = tech_effective_bureaucracy } + give_technology = { tech = tech_colonial_bureaucracy } + if = { + limit = { + NOT = { has_ethic = ethic_gestalt_consciousness } + } + give_technology = { tech = tech_living_state } + } + if = { + limit = { + has_ethic = ethic_gestalt_consciousness + } + give_technology = { tech = tech_autonomous_agents } + } + if = { + limit = { + NOT = { has_ethic = ethic_gestalt_consciousness } + } + give_technology = { tech = tech_artificial_moral_codes } + } + if = { + limit = { + is_gestalt = yes + } + give_technology = { tech = tech_unity_of_purpose } + } + if = { + limit = { + has_ethic = ethic_gestalt_consciousness + } + give_technology = { tech = tech_holographic_rituals } + } + if = { + limit = { + is_hive_empire = yes + } + give_technology = { tech = tech_hive_cluster } + } + if = { + limit = { + is_gestalt = no + } + give_technology = { tech = tech_slave_colonies } + } + if = { + limit = { + is_regular_empire = yes + } + give_technology = { tech = tech_xeno_diplomacy } + } + give_technology = { tech = tech_capital_productivity_1 } +} \ No newline at end of file diff --git a/better_mi/common/scripted_triggers/!!-bm_placeholder.txt b/better_mi/common/scripted_triggers/!!-bm_placeholder.txt new file mode 100755 index 0000000..0c55373 --- /dev/null +++ b/better_mi/common/scripted_triggers/!!-bm_placeholder.txt @@ -0,0 +1,2 @@ +pd_is_planet_class_machine = { always = no } +is_materus_sap_installed = { always = no } \ No newline at end of file diff --git a/better_mi/common/scripted_triggers/~00_bm_trigger.txt b/better_mi/common/scripted_triggers/~00_bm_trigger.txt new file mode 100644 index 0000000..7e26a7d --- /dev/null +++ b/better_mi/common/scripted_triggers/~00_bm_trigger.txt @@ -0,0 +1 @@ +is_materus_bm_installed = { always = yes } \ No newline at end of file diff --git a/better_mi/common/species_rights/citizenship_types/~00_bm_citizenship.txt b/better_mi/common/species_rights/citizenship_types/~00_bm_citizenship.txt new file mode 100644 index 0000000..5f3ed7f --- /dev/null +++ b/better_mi/common/species_rights/citizenship_types/~00_bm_citizenship.txt @@ -0,0 +1,496 @@ +citizenship_full_machine = { + is_full_citizenship = yes + + potential = { + OR = { + has_synthetic_dawn = yes + has_machine_age_dlc = yes + } + exists = from + from = { has_authority = auth_machine_intelligence } + } + + allow = { + hidden_trigger = { exists = from } + if = { + limit = { + from = { NOT = { has_valid_civic = civic_machine_assimilator } } + } + custom_tooltip = { + fail_text = MACHINE_SPECIES_NOT_MACHINE + OR = { + has_trait = trait_mechanical + has_trait = trait_machine_unit + AND = { + FROM = { + has_ascension_perk = ap_mechromancy + } + has_trait = trait_cybernetic + has_trait = trait_zombie + } + AND = { + FROM = { + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_trait = trait_cybernetic + } + } + } + } + else = { + custom_tooltip = { + fail_text = ASSIMILATOR_SPECIES_NOT_CYBORG + OR = { + has_trait = trait_cybernetic + has_trait = trait_machine_unit + has_trait = trait_mechanical + } + } + } + } + ai_will_do = { + factor = 30 + } +} + +citizenship_assimilation = { + is_assimilation = yes + + potential = { + OR = { + has_synthetic_dawn = yes + has_utopia = yes + has_machine_age_dlc = yes + } + exists = from + from = { + OR = { + is_homicidal = no + AND = { + is_homicidal = yes + root = { + is_same_species = prev + } + } + AND = { + has_civic = civic_machine_terminator + root = { + is_robotic_species = yes + } + } + } + OR = { + AND = { # machine cyborg assimilator + has_authority = auth_machine_intelligence + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + OR = { + AND = { + root = { + is_robotic_species = yes + } + } + root = { + NOR = { + has_trait = trait_mechanical + has_trait = trait_machine_unit + has_trait = trait_cybernetic + } + } + } + } + AND = { # machine synthetic assimilator + has_authority = auth_machine_intelligence + root = { + is_robotic_species = yes + } + } + AND = { + OR = { + AND = { + # non-devouring hive mind + has_authority = auth_hive_mind + NOT = { has_civic = civic_hive_devouring_swarm } + } + # Regular empire + AND = { + NOT = { has_ethic = ethic_gestalt_consciousness } + is_individual_machine = no + } + } + OR = { + has_active_tradition = tr_genetics_creation # genetic assimilation + has_active_tradition = tr_cybernetics_transubstantiation_synthesis # cybernetic assimilation + } + ROOT = { is_robotic_species = no } + } + AND = { + has_country_flag = synth_assimilation # synth assimilation + NOT = { has_authority = auth_machine_intelligence } + } + has_active_tradition = tr_psionics_psionic_assimilation # psionic assimilation + AND = { + is_individual_machine = yes + ROOT = { is_robotic_species = yes } + } + } + } + } + + allow = { + hidden_trigger = { exists = from } + custom_tooltip = { + fail_text = MUST_NOT_BE_DOMINANT_SPECIES + NOT = { is_exact_same_species = from } + } + custom_tooltip = { + fail_text = "pre_sapients_citizenship" + is_sapient = yes + } + custom_tooltip = { + fail_text = "lonely_hive_mind_pops_kill_themselves_citizenship_assimilation" + if = { + limit = { is_lonely_hive_mind_pop = yes } + from = { + OR = { + has_active_tradition = tr_genetics_creation + has_active_tradition = tr_cybernetics_transubstantiation_synthesis + has_active_tradition = tr_cybernetics_assimilator_inevitable_assimilation + } + } + } + } + custom_tooltip = { + fail_text = "disconnected_machine_pops_collapse_citizenship" + OR = { + from = { + has_country_flag = synth_assimilation + } + is_disconnected_machine_pop = no + } + } + if = { + limit = { + from = { + has_authority = auth_machine_intelligence + } + } + custom_tooltip = { # machine assimilator + fail_text = MACHINE_SPECIES_MUST_BE_ORGANIC + } + custom_tooltip = { + fail_text = requires_tradition_tr_synthetics_adopt + } + } + else_if = { + limit = { + from = { + has_authority = auth_hive_mind + has_active_tradition = tr_genetics_creation + } + } + custom_tooltip = { # non-devouring hive mind + fail_text = HIVE_SPECIES_MUST_BE_NON_HIVE + NOR = { + has_trait = trait_hive_mind + has_trait = trait_mechanical + has_trait = trait_machine_unit + } + } + } + else_if = { + limit = { + from = { + has_authority = auth_hive_mind + has_active_tradition = tr_cybernetics_transubstantiation_synthesis + } + } + custom_tooltip = { # non-devouring hive mind + fail_text = HIVE_SPECIES_MUST_BE_NON_HIVE + NOR = { + has_trait = trait_mechanical + has_trait = trait_machine_unit + AND = { + has_trait = trait_hive_mind + has_trait = trait_cybernetic + } + } + } + } + else_if = { + limit = { + from = { + NOT = { has_authority = auth_hive_mind } + has_active_tradition = tr_cybernetics_transubstantiation_synthesis + } + } + custom_tooltip = { # cyborg empire + fail_text = CYBORG_SPECIES_MUST_BE_ORGANIC + OR = { + AND = { + has_trait = trait_hive_mind + from = { + NOT = { + has_authority = auth_hive_mind + } + } + } + AND = { + NOT = { + has_trait = trait_hive_mind + } + from = { + has_authority = auth_hive_mind + } + } + NOR = { + has_trait = trait_mechanical + has_trait = trait_machine_unit + has_trait = trait_cybernetic + has_trait = trait_limited_cybernetic + } + } + } + } + else_if = { + limit = { + from = { has_active_tradition = tr_psionics_psionic_assimilation } + } + custom_tooltip = { # species must be organic to transcend + fail_text = TRANSCENDING_SPECIES_MUST_BE_ORGANIC + is_robotic_species = no + } + custom_tooltip = { # species already has psionic trait + fail_text = TRANSCENDING_SPECIES_IS_ALREADY_PSIONIC + NOT = { has_trait = trait_psionic } + } + custom_tooltip = { # transcending species cannot be gestalt consciousness + fail_text = TRANSCENDING_SPECIES_CANT_BE_HIVE + OR = { has_active_tradition = tr_genetics_creation NOT = { has_trait = trait_hive_mind } } + } + } + else_if = { + limit = { + from = { has_active_tradition = tr_genetics_creation } + } + custom_tooltip = { + fail_text = CAN_ONLY_ASSIMILATE_HIVES + has_trait = trait_hive_mind + } + } + } + + ai_will_do = { + factor = 100 + modifier = { + factor = 0 + from = { + OR = { + has_valid_civic = civic_hive_devouring_swarm + has_valid_civic = civic_fanatic_purifiers + has_valid_civic = civic_machine_terminator + } + } + } + modifier = { + factor = 0.3 + from = { + is_individual_machine = yes + } + } + } +} + +citizenship_slavery = { + is_slavery = yes + + in_breach_of = { + { + key = resolution_greatergood_balance_in_the_middle + } + { + key = resolution_greatergood_universal_prosperity_mandate + } + } + + potential = { + NAND = { + exists = this + OR = { + AND = { + from = { is_individual_machine = yes } + OR = { + has_trait = trait_machine_unit + has_trait = trait_mechanical + } + } + has_trait = trait_machine_unit + has_trait = trait_mechanical + } + } + } + + allow = { + hidden_trigger = { exists = from } + custom_tooltip = { + fail_text = "presapients_allowed_citizenship" + OR = { + is_sapient = yes + from = { + NOT = { + has_policy_flag = pre_sapients_protect + has_policy_flag = pre_sapients_allow + } + } + } + } + custom_tooltip = { + fail_text = "presapients_purged_citizenship" + OR = { + is_sapient = yes + from = { + NOT = { + has_policy_flag = pre_sapients_purge + } + } + } + } + custom_tooltip = { + fail_text = "HIVE_MIND_MAIN_SPECIES_ALWAYS_CITIZEN" + NAND = { + from = { has_authority = auth_hive_mind } + has_trait = trait_hive_mind + } + } + custom_tooltip = { + fail_text = same_species_disallowed + NOT = { is_same_species = from } + } + custom_tooltip = { + fail_text = "lonely_hive_mind_pops_kill_themselves_citizenship" + is_lonely_hive_mind_pop = no + } + custom_tooltip = { + fail_text = SERVITORS_CANNOT_ENSLAVE + from = { + NOT = { has_valid_civic = civic_machine_servitor } + } + } + custom_tooltip = { + fail_text = ASSIMILATORS_CANNOT_ENSLAVE + from = { + NOT = { has_valid_civic = civic_machine_assimilator } + } + } + custom_tooltip = { + fail_text = MACHINE_CANNOT_ENSLAVE_CYBORGS + from = { + NOT = { + AND = { + has_ascension_perk = ap_organo_machine_interfacing_assimilator + has_trait = trait_cybernetic + } + } + } + } + custom_tooltip = { + fail_text = TERMINATORS_CANNOT_ENSLAVE + from = { + NOT = { has_valid_civic = civic_machine_terminator } + } + } + custom_tooltip = { + fail_text = DEVOURERS_CANNOT_ENSLAVE + from = { + NOT = { has_valid_civic = civic_hive_devouring_swarm } + } + } + custom_tooltip = { + fail_text = empire_xenophile + from = { + NOR = { + has_ethic = ethic_xenophile + has_ethic = ethic_fanatic_xenophile + } + } + } + custom_tooltip = { + fail_text = "FANATIC_PURIFIERS_MUST_PURIFY" + OR = { + NOT = { from = { has_valid_civic = civic_fanatic_purifiers } } + is_same_species = from + } + } + custom_tooltip = { + fail_text = does_not_embrace_species_slavery + from = { + allows_slavery = yes + OR = { + has_ethic = ethic_xenophobe + has_ethic = ethic_fanatic_xenophobe + has_ethic = ethic_authoritarian + has_ethic = ethic_fanatic_authoritarian + has_ethic = ethic_gestalt_consciousness + } + } + } + custom_tooltip = { + fail_text = yes_service_yes_citizenship + if = { + limit = { + from = { has_valid_civic = civic_citizen_service } + } + NOT = { has_military_service_type = { type = military_service_full country = from } } + } + } + custom_tooltip = { + fail_text = selective_kinship_must_citizen + if = { + limit = { + from = { has_valid_civic = civic_selective_kinship } + } + NOT = { is_same_species_class = from } + } + } + } + ai_will_do = { + factor = 15 + modifier = { + factor = 0 + from = { + has_valid_ai_personality = yes + NOT = { + has_ai_personality_behaviour = slaver + } + NAND = { + is_ai = no + is_xenophobe = yes + } + } + } + modifier = { + factor = 0 + from = { + is_authoritarian = no + is_xenophobe = no + is_hive_empire = no + } + } + modifier = { + factor = 0.1 + from = { + is_galactic_community_member = yes + } + OR = { + is_active_resolution = "resolution_greatergood_balance_in_the_middle" + is_active_resolution = "resolution_greatergood_universal_prosperity_mandate" + } + } + modifier = { + factor = 2 + has_species_flag = syncretic_species@from + } + } +} \ No newline at end of file diff --git a/better_mi/common/species_rights/colonization_controls/~00_bm_colonization.txt b/better_mi/common/species_rights/colonization_controls/~00_bm_colonization.txt new file mode 100644 index 0000000..aba0228 --- /dev/null +++ b/better_mi/common/species_rights/colonization_controls/~00_bm_colonization.txt @@ -0,0 +1,133 @@ +# from = country +# this = species + +colonization_control_yes = { + can_colonize = no + potential = { + NAND = { + from = { has_authority = auth_machine_intelligence } + OR = { + has_trait = trait_machine_unit + has_trait = trait_mechanical + } + } + } + + allow = { + hidden_trigger = { exists = from } + if = { + limit = { + OR = { + has_citizenship_type = { country = from type = citizenship_purge } + has_citizenship_type = { country = from type = citizenship_purge_machine } + has_citizenship_type = { country = from type = citizenship_slavery } + has_citizenship_type = { country = from type = citizenship_robot_servitude } + } + } + hidden_trigger = { always = yes } + } + else = { + custom_tooltip = { + fail_text = same_species_disallowed + NOT = { is_same_species = from } + } + } + } + + ai_will_do = { + factor = 2 + modifier = { + factor = 0 + from = { + NOR = { + has_ethic = ethic_xenophobe + has_ethic = ethic_fanatic_xenophobe + has_ethic = ethic_gestalt_consciousness + } + } + } + modifier = { + factor = 0 + has_trait = trait_cybernetic + from = { OR = { has_valid_civic = civic_machine_assimilator has_ascension_perk = ap_organo_machine_interfacing_assimilator } } + } + modifier = { + factor = 0 + has_slavery_type = { country = from type = slavery_indentured } + } + } +} + +colonization_control_no = { + potential = { + exists = from + NAND = { + from = { has_authority = auth_machine_intelligence } + NOR = { + has_trait = trait_machine_unit + has_trait = trait_mechanical + AND = { + has_trait = trait_cybernetic + from = { OR = { has_valid_civic = civic_machine_assimilator has_ascension_perk = ap_organo_machine_interfacing_assimilator } } + } + from = { has_valid_civic = civic_machine_servitor } + } + } + } + + allow = { + hidden_trigger = { exists = from } + custom_tooltip = { + NOR = { + has_citizenship_type = { country = from type = citizenship_purge_machine } + has_citizenship_type = { country = from type = citizenship_purge } + } + fail_text = is_undesirables_tooltip + } + custom_tooltip = { + fail_text = "HIVE_MIND_SPECIES_CITIZENS_ONLY" + OR = { + NOT = { from = { has_authority = auth_hive_mind } } + has_trait = trait_hive_mind + } + } + custom_tooltip = { + fail_text = "ROBOTS_CANNOT_COLONIZE" + OR = { + NOT = { has_trait = trait_mechanical } + from = { has_technology = tech_droid_workers } + from = { has_authority = auth_machine_intelligence } + } + } + custom_tooltip = { + fail_text = "SPECIES_CANNOT_COLONIZE" + NOR = { + has_trait = trait_syncretic_proles + can_think = no + } + } + custom_tooltip = { + fail_text = is_slaves_not_battle_thralls_or_indentured_fail + if = { + limit = { + has_citizenship_type = { country = from type = citizenship_slavery } + } + OR = { + has_slavery_type = { country = from type = slavery_military } + has_slavery_type = { country = from type = slavery_indentured } + } + } + } + } + ai_will_do = { + factor = 1 + modifier = { + factor = 0 + from = { has_valid_civic = civic_machine_servitor } + NOR = { + has_trait = trait_machine_unit + has_trait = trait_mechanical + } + } + } +} diff --git a/better_mi/common/species_rights/living_standards/~00_bm_assimilation_living.txt b/better_mi/common/species_rights/living_standards/~00_bm_assimilation_living.txt new file mode 100644 index 0000000..5aec5fb --- /dev/null +++ b/better_mi/common/species_rights/living_standards/~00_bm_assimilation_living.txt @@ -0,0 +1,131 @@ +living_standard_cyborg_ego_assimilation = { + in_breach_of = { + { + trigger = { + is_gestalt = yes + } + key = resolution_greatergood_universal_prosperity_mandate + } + } + + pop_modifier = { + pop_happiness = -0.50 + } + + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + NOR = { + has_trait = trait_latent_psionic + has_trait = trait_psionic + has_trait = trait_mechanical + has_trait = trait_machine_unit + } + exists = from + from = { + OR = { + AND = { + has_authority = auth_hive_mind + has_tradition = tr_cybernetics_transubstantiation_synthesis + NOT = { has_civic = civic_hive_devouring_swarm } + } + AND = { + has_authority = auth_machine_intelligence + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + prev = { + NOT = { + has_trait = trait_cybernetic + } + } + } + } + } + } + + allow = { + hidden_trigger = { exists = from } + custom_tooltip = { + fail_text = SPECIES_MUST_BE_ASSIMILATING + has_citizenship_type = { + type = citizenship_assimilation + country = from + } + } + } + + ai_will_do = { + factor = 100 + } +} + +living_standard_cyborg_ego_assimilation_psionic = { + in_breach_of = { + { + trigger = { + is_gestalt = yes + } + key = resolution_greatergood_universal_prosperity_mandate + } + } + + pop_modifier = { + pop_happiness = -0.50 + } + + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + OR = { + has_trait = trait_latent_psionic + has_trait = trait_psionic + } + NOR = { + has_trait = trait_mechanical + has_trait = trait_machine_unit + } + exists = from + from = { + OR = { + AND = { + has_authority = auth_hive_mind + has_tradition = tr_cybernetics_transubstantiation_synthesis + NOT = { has_civic = civic_hive_devouring_swarm } + } + AND = { + has_authority = auth_machine_intelligence + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + prev = { + NOT = { + has_trait = trait_cybernetic + } + } + } + } + } + } + + allow = { + hidden_trigger = { exists = from } + custom_tooltip = { + fail_text = SPECIES_MUST_BE_ASSIMILATING + has_citizenship_type = { + type = citizenship_assimilation + country = from + } + } + } + + ai_will_do = { + factor = 100 + } +} \ No newline at end of file diff --git a/better_mi/common/species_rights/living_standards/~00_bm_living.txt b/better_mi/common/species_rights/living_standards/~00_bm_living.txt new file mode 100644 index 0000000..1634b74 --- /dev/null +++ b/better_mi/common/species_rights/living_standards/~00_bm_living.txt @@ -0,0 +1,99 @@ +living_standard_hive_mind_worker = { + potential = { + from = { has_ethic = ethic_gestalt_consciousness } + } + + allow = { + if = { + limit = { + from = { has_authority = auth_hive_mind } + } + custom_tooltip = { + fail_text = species_is_not_hive + has_trait = trait_hive_mind + } + } + else_if = { + limit = { from = { has_authority = auth_machine_intelligence } } + custom_tooltip = { + fail_text = species_is_not_machine + OR = { + has_trait = trait_machine_unit + has_trait = trait_mechanical + AND = { + from = { + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_mechromancy + } + } + has_trait = trait_cybernetic + } + } + } + } + custom_tooltip = { + fail_text = SPECIES_MUST_NOT_BE_ASSIMILATING + NOT = { + has_citizenship_type = { + type = citizenship_assimilation + country = from + } + } + } + } + + ai_will_do = { + factor = 0 + } +} + +living_standard_hive_mind_advanced_worker = { + potential = { + from = { has_ethic = ethic_gestalt_consciousness } + } + + allow = { + if = { + limit = { + from = { has_authority = auth_hive_mind } + } + custom_tooltip = { + fail_text = species_is_not_hive + has_trait = trait_hive_mind + } + } + else_if = { + limit = { from = { has_authority = auth_machine_intelligence } } + custom_tooltip = { + fail_text = species_is_not_machine + OR = { + has_trait = trait_machine_unit + has_trait = trait_mechanical + AND = { + from = { + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_mechromancy + } + } + has_trait = trait_cybernetic + } + } + } + } + custom_tooltip = { + fail_text = SPECIES_MUST_NOT_BE_ASSIMILATING + NOT = { + has_citizenship_type = { + type = citizenship_assimilation + country = from + } + } + } + } + + ai_will_do = { + factor = 0 + } +} diff --git a/better_mi/common/species_rights/military_service_types/~00_bm_military_service.txt b/better_mi/common/species_rights/military_service_types/~00_bm_military_service.txt new file mode 100644 index 0000000..66b124b --- /dev/null +++ b/better_mi/common/species_rights/military_service_types/~00_bm_military_service.txt @@ -0,0 +1,133 @@ +military_service_full = { + potential = { + if = { + limit = { + from = { has_authority = auth_machine_intelligence } + } + OR = { + has_trait = trait_machine_unit + has_trait = trait_mechanical + has_trait = trait_cybernetic + } + } + } + + allow = { + hidden_trigger = { exists = from } + custom_tooltip = { + fail_text = MACHINE_NO_PURE_ORGANIC_SOLDIERS + if = { + limit = { + from = { has_authority = auth_machine_intelligence } + } + OR = { + has_trait = trait_mechanical + has_trait = trait_machine_unit + AND = { + has_trait = trait_cybernetic + from = { + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + } + } + } + custom_tooltip = { + fail_text = is_undesirables_tooltip + NOR = { + has_citizenship_type = { country = from type = citizenship_purge_machine } + has_citizenship_type = { country = from type = citizenship_purge } + } + } + custom_tooltip = { + fail_text = is_slaves_tooltip + NOT = { has_citizenship_type = { country = from type = citizenship_slavery } } + } + custom_tooltip = { + fail_text = is_serviles_tooltip + NOT = { has_trait = trait_syncretic_proles } + } + custom_tooltip = { + fail_text = is_servitude_tooltip + NOT = { has_citizenship_type = { country = from type = citizenship_robot_servitude } } + } + if = { + limit = { + from = { + NOT = { has_origin = origin_synthetic_fertility } + } + has_trait = trait_mechanical + } + custom_tooltip = { + fail_text = too_alien + OR = { + is_same_species = from + from = { + AND = { + has_valid_civic = civic_selective_kinship + is_same_species_class = root + } + } + from = { + NOR = { + has_ethic = ethic_xenophobe + has_ethic = ethic_fanatic_xenophobe + } + } + } + } + } + custom_tooltip = { + fail_text = "HIVE_MIND_SPECIES_CITIZENS_ONLY" + OR = { + NOT = { from = { has_authority = auth_hive_mind } } + has_trait = trait_hive_mind + } + } + custom_tooltip = { + fail_text = NON_MACHINE_SPECIES_NEED_PREREQ_TECH + if = { + limit = { + OR = { + has_trait = trait_mechanical + has_trait = trait_machine_unit + } + } + from = { + OR = { + has_authority = auth_machine_intelligence + is_individual_machine = yes + has_technology = tech_droid_workers + } + } + } + } + custom_tooltip = { + fail_text = nerve_stapled_cannot_lead_armies + NOT = { has_trait = trait_nerve_stapled } + } + custom_tooltip = { + fail_text = nerve_stapled_cannot_lead_armies + NOT = { has_trait = trait_robot_suppressed } + } + } + ai_will_do = { + factor = 5 + modifier = { + factor = 0 + from = { has_valid_ai_personality = no } + } + modifier = { + factor = 0 + from = { + has_valid_ai_personality = yes + NOT = { + has_ai_personality_behaviour = multispecies + } + } + } + } +} diff --git a/better_mi/common/technology/~00_bm_soc_tech.txt b/better_mi/common/technology/~00_bm_soc_tech.txt new file mode 100644 index 0000000..39e1248 --- /dev/null +++ b/better_mi/common/technology/~00_bm_soc_tech.txt @@ -0,0 +1,1088 @@ +#Eco Simulation +tech_eco_simulation = { + cost = @tier1cost1 + area = society + tier = 1 + category = { biology } + prerequisites = { "tech_industrial_farming" } + weight = @tier1weight1 + + modifier = { + planet_farmers_food_produces_mult = 0.2 + starbase_constructions_food_produces_mult = 0.10 + } + + weight_modifier = { + modifier = { + factor = 0.01 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + is_individual_machine = yes + has_origin = origin_synthetic_fertility + } + NOR = { + has_country_flag = non_lithoid_subspecies + has_valid_civic = civic_machine_servitor + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + any_owned_planet = { + OR = { + num_districts = { type = district_farming value > 0 } + num_districts = { type = district_rw_farming value > 0 } + } + } + } + } + modifier = { + factor = 0.5 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + AND = { + is_individual_machine = yes + NOT = { has_country_flag = non_lithoid_subspecies } + } + } + } + modifier = { + factor = 1.25 + has_ethic = ethic_pacifist + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_pacifist + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + } + + ai_weight = { + modifier = { + factor = 1.25 + has_ethic = ethic_pacifist + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_pacifist + } + } +} + +#Gene Crops +tech_gene_crops = { + cost = @tier2cost1 + area = society + tier = 2 + category = { biology } + prerequisites = { "tech_eco_simulation" } + weight = @tier2weight1 + + modifier = { + planet_farmers_food_produces_mult = 0.2 + starbase_constructions_food_produces_mult = 0.10 + } + + weight_modifier = { + modifier = { + factor = 0.01 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + is_individual_machine = yes + has_origin = origin_synthetic_fertility + } + NOR = { + has_country_flag = non_lithoid_subspecies + has_valid_civic = civic_machine_servitor + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + any_owned_planet = { + OR = { + num_districts = { type = district_farming value > 0 } + num_districts = { type = district_rw_farming value > 0 } + } + } + } + } + modifier = { + factor = 0.5 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + AND = { + is_individual_machine = yes + NOT = { has_country_flag = non_lithoid_subspecies } + } + } + } + modifier = { + factor = 1.25 + has_ethic = ethic_pacifist + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_pacifist + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + } + + ai_weight = { + factor = @farming_ai_weight_factor + modifier = { + factor = 1.25 + has_ethic = ethic_pacifist + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_pacifist + } + } +} + +#Nano-Vitality Crops +tech_nano_vitality_crops = { + cost = @tier3cost1 + area = society + tier = 3 + category = { biology } + prerequisites = { "tech_gene_crops" } + weight = @tier3weight1 + + modifier = { + planet_farmers_food_produces_mult = 0.2 + starbase_constructions_food_produces_mult = 0.10 + } + + weight_modifier = { + modifier = { + factor = 0.01 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + is_individual_machine = yes + has_origin = origin_synthetic_fertility + } + NOR = { + has_country_flag = non_lithoid_subspecies + has_valid_civic = civic_machine_servitor + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + any_owned_planet = { + OR = { + num_districts = { type = district_farming value > 0 } + num_districts = { type = district_rw_farming value > 0 } + } + } + } + } + modifier = { + factor = 0.5 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + AND = { + is_individual_machine = yes + NOT = { has_country_flag = non_lithoid_subspecies } + } + } + } + modifier = { + factor = 1.25 + has_ethic = ethic_pacifist + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_pacifist + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + } + + ai_weight = { + factor = @farming_ai_weight_factor + modifier = { + factor = 1.25 + has_ethic = ethic_pacifist + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_pacifist + } + } +} + +tech_nutrient_replication = { + cost = @tier4cost3 + area = society + tier = 4 + is_rare = yes + category = { biology } + prerequisites = { "tech_nano_vitality_crops" } + weight = @tier4weight3 + + modifier = { + planet_jobs_food_produces_mult = 0.15 + starbase_constructions_food_produces_mult = 0.10 + } + + potential = { + NOT = { has_authority = auth_machine_intelligence } + } + + weight_modifier = { + modifier = { + factor = 0.01 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + is_individual_machine = yes + has_origin = origin_synthetic_fertility + } + NOR = { + has_country_flag = non_lithoid_subspecies + has_valid_civic = civic_machine_servitor + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + any_owned_planet = { + OR = { + num_districts = { type = district_farming value > 0 } + num_districts = { type = district_rw_farming value > 0 } + } + } + } + } + modifier = { + factor = 0.5 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + AND = { + is_individual_machine = yes + NOT = { has_country_flag = non_lithoid_subspecies } + } + } + } + modifier = { + factor = 0.50 + NOR = { + has_trait_in_council = { TRAIT = leader_trait_expertise_biology } + has_trait_in_council = { TRAIT = leader_trait_curator } + } + } + inline_script = { + script = technologies/rare_technologies_weight_modifiers + TECHNOLOGY = tech_nutrient_replication + } + modifier = { + factor = 1.25 + has_ethic = ethic_pacifist + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_pacifist + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + } + + ai_weight = { + factor = @farming_ai_weight_factor + modifier = { + factor = 1.25 + has_ethic = ethic_pacifist + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_pacifist + } + } +} + +#Hydroponics +tech_hydroponics = { + cost = @tier1cost1 + area = society + tier = 1 + category = { biology } + prerequisites = { "tech_industrial_farming" } + weight = @tier1weight1 + + # unlock hydroponics buildings + + weight_modifier = { + factor = 2 + modifier = { + factor = 0.01 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + is_individual_machine = yes + has_origin = origin_synthetic_fertility + } + NOR = { + has_country_flag = non_lithoid_subspecies + has_valid_civic = civic_machine_servitor + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + any_owned_planet = { + OR = { + num_districts = { type = district_farming value > 0 } + num_districts = { type = district_rw_farming value > 0 } + } + } + } + } + modifier = { + factor = 0.5 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + AND = { + is_individual_machine = yes + NOT = { has_country_flag = non_lithoid_subspecies } + } + } + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + } + + ai_weight = { + } +} + +#Food Processing +tech_food_processing_1 = { + cost = @tier1cost2 + area = society + tier = 1 + category = { biology } + prerequisites = { "tech_eco_simulation" } + weight = @tier1weight2 + + # unlock food processing facility + + weight_modifier = { + modifier = { + factor = 0.01 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + is_individual_machine = yes + has_origin = origin_synthetic_fertility + } + NOR = { + has_country_flag = non_lithoid_subspecies + has_valid_civic = civic_machine_servitor + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + any_owned_planet = { + OR = { + num_districts = { type = district_farming value > 0 } + num_districts = { type = district_rw_farming value > 0 } + } + } + } + } + modifier = { + factor = 0.5 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + AND = { + is_individual_machine = yes + NOT = { has_country_flag = non_lithoid_subspecies } + } + } + } + modifier = { + factor = 1.5 + OR = { + has_valid_civic = civic_agrarian_idyll + is_anglers_empire = yes + } + } + modifier = { + factor = 2 + is_catalytic_empire = yes + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + } + + ai_weight = { + factor = @farming_building_ai_weight_factor # leads to food processing building + + modifier = { + factor = 0 + country_uses_food = no + } + modifier = { + factor = 1.5 + OR = { + has_valid_civic = civic_agrarian_idyll + is_anglers_empire = yes + } + } + modifier = { + factor = 2 + is_catalytic_empire = yes + } + } +} + +#Advanced Food Processing +tech_food_processing_2 = { + cost = @tier3cost1 + area = society + tier = 3 + category = { biology } + prerequisites = { "tech_food_processing_1" } + weight = @tier3weight1 + + weight_modifier = { + factor = 2 + modifier = { + factor = 0.01 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + is_individual_machine = yes + has_origin = origin_synthetic_fertility + } + NOR = { + has_country_flag = non_lithoid_subspecies + has_valid_civic = civic_machine_servitor + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + any_owned_planet = { + OR = { + num_districts = { type = district_farming value > 0 } + num_districts = { type = district_rw_farming value > 0 } + } + } + } + } + modifier = { + factor = 0.5 + OR = { + is_machine_empire = yes + is_lithoid_empire = yes + AND = { + is_individual_machine = yes + NOT = { has_country_flag = non_lithoid_subspecies } + } + } + } + modifier = { + factor = 0 + NOR = { + has_technology = tech_mine_volatile_motes + has_technology = tech_volatile_motes + has_country_flag = has_market_access + } + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + } + + ai_weight = { + factor = @farming_building_ai_weight_factor # food processing + + modifier = { + factor = 0 + country_uses_food = no + } + } +} +#Genome Mapping +tech_genome_mapping = { + cost = @tier1cost1 + area = society + tier = 1 + category = { biology } + weight = @tier1weight1 + + gateway = biological + + modifier = { + pop_growth_speed = 0.10 + } + + potential = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_servitor + has_civic = civic_machine_guided_sapience + } + } + + weight_modifier = { + factor = 1.5 # genetech needs to be a bit more common + modifier = { + factor = 1.25 + has_authority = auth_hive_mind + } + modifier = { + factor = 1.25 + has_tradition = tr_supremacy_adopt + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + modifier = { + factor = 0.5 + is_individual_machine = yes + } + modifier = { + factor = 0.5 + has_origin = origin_synthetic_fertility + } + modifier = { + factor = 2 + AND = { + OR = { + is_individual_machine = yes + has_origin = origin_synthetic_fertility + } + any_owned_species = { + is_organic_species = yes + } + } + } + } + + ai_weight = { + factor = @pop_growth_tech_ai_factor + } +} + +#Vitality Boosters +tech_vitality_boosters = { + cost = @tier2cost2 + area = society + tier = 2 + category = { biology } + prerequisites = { "tech_genome_mapping" } + weight = @tier2weight2 + + modifier = { + leader_lifespan_add = 10 + } + + potential = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + + weight_modifier = { + factor = 1.5 # genetech needs to be a bit more common + modifier = { + factor = 1.25 + has_authority = auth_hive_mind + } + modifier = { + factor = 1.25 + has_tradition = tr_supremacy_adopt + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + modifier = { + factor = 0.5 + is_individual_machine = yes + } + modifier = { + factor = 0.5 + has_origin = origin_synthetic_fertility + } + modifier = { + factor = 2 + AND = { + is_individual_machine = yes + any_owned_species = { + is_organic_species = yes + } + } + } + } + + ai_weight = { + } +} + +#Epigenetic Triggers +tech_epigenetic_triggers = { + cost = @tier2cost2 + area = society + tier = 2 + category = { biology } + prerequisites = { "tech_genome_mapping" } + weight = @tier2weight2 + + feature_flags = { + uplifting + } + + potential = { + NOR = { + has_valid_civic = civic_fanatic_purifiers + #has_valid_civic = civic_machine_terminator # covered by not being machine + #has_valid_civic = civic_hive_devouring_swarm # can uplift to make delicious + is_natural_design_empire = yes + } + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_servitor + has_civic = civic_machine_guided_sapience + } + } + + prereqfor_desc = { + custom = { + title = "TECH_UNLOCK_EPIGENETICS_TITLE" + desc = "TECH_UNLOCK_EPIGENETICS_DESC" + } + } + + weight_modifier = { + modifier = { + factor = 0.5 + has_ethic = ethic_fanatic_xenophobe + } + modifier = { + factor = 0.75 + has_ethic = ethic_xenophobe + } + modifier = { + factor = 1.25 + has_ethic = ethic_xenophile + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_xenophile + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + modifier = { + factor = 0.5 + is_individual_machine = yes + } + modifier = { + factor = 0.5 + has_origin = origin_synthetic_fertility + } + modifier = { + factor = 2 + AND = { + is_individual_machine = yes + any_owned_species = { + is_organic_species = yes + } + } + } + modifier = { + factor = 5 + is_guided_sapience_empire = yes + } + modifier = { + factor = 0 + NOR = { + has_country_flag = found_presapients + any_planet_within_border = { + any_owned_pop = { + is_sapient = no + } + } + } + } + } + + ai_weight = { + modifier = { + factor = 0.5 + has_ethic = ethic_fanatic_xenophobe + } + modifier = { + factor = 0.75 + has_ethic = ethic_xenophobe + } + modifier = { + factor = 1.25 + has_ethic = ethic_xenophile + } + modifier = { + factor = 1.5 + has_ethic = ethic_fanatic_xenophile + } + } +} + +#Cloning +tech_cloning = { + cost = @tier2cost2 + area = society + tier = 2 + category = { biology } + prerequisites = { "tech_genome_mapping" } + weight = @tier2weight2 + + modifier = { + pop_growth_speed = 0.10 + } + + potential = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + is_natural_design_empire = no + } + + weight_modifier = { + factor = 1.5 # genetech needs to be a bit more common + modifier = { + factor = 1.25 + has_authority = auth_hive_mind + } + modifier = { + factor = 1.25 + has_tradition = tr_supremacy_adopt + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + modifier = { + factor = 0.5 + is_individual_machine = yes + } + modifier = { + factor = 0.5 + has_origin = origin_synthetic_fertility + } + modifier = { + factor = 2 + AND = { + is_individual_machine = yes + any_owned_species = { + is_organic_species = yes + } + } + } + } + + ai_weight = { + factor = @pop_growth_tech_ai_factor + } +} + +#Gene Banks +tech_gene_banks = { + cost = @tier2cost3 + area = society + tier = 2 + category = { biology } + is_rare = yes + prerequisites = { "tech_cloning" } + weight = @tier2weight3 + + potential = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + is_natural_design_empire = no + } + + weight_modifier = { + factor = 0.5 + modifier = { + factor = 1.25 + has_authority = auth_hive_mind + } + modifier = { + factor = 0.5 + is_individual_machine = yes + } + modifier = { + factor = 2 + AND = { + is_individual_machine = yes + any_owned_species = { + is_organic_species = yes + } + } + } + modifier = { + factor = 0.20 + NOR = { + has_trait_in_council = { TRAIT = leader_trait_expertise_biology } + has_trait_in_council = { TRAIT = leader_trait_curator } + has_trait_in_council = { TRAIT = leader_trait_spark_of_genius } + has_trait_in_council = { TRAIT = leader_trait_spark_of_genius_2 } + } + } + inline_script = { + script = technologies/rare_technologies_weight_modifiers + TECHNOLOGY = tech_gene_banks + } + } +} + +#Gene Tailoring +@tech_gene_tailoring_POINTS = 2 +tech_gene_tailoring = { + cost = @tier3cost1 + area = society + tier = 3 + category = { biology } + prerequisites = { "tech_genome_mapping" } + weight = @tier3weight1 + + gateway = biological + + modifier = { + description = tech_gene_tailoring_modifier_desc + description_parameters = { + POINTS = @tech_gene_tailoring_POINTS + } + BIOLOGICAL_species_trait_points_add = @tech_gene_tailoring_POINTS + } + + feature_flags = { + modify_traits + pop_self_modification + } + + potential = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_servitor + } + is_natural_design_empire = no + } + + weight_modifier = { + factor = 2.0 # genetech needs to be a bit more common + modifier = { + factor = 1.25 + has_authority = auth_hive_mind + } + modifier = { + factor = 1.25 + is_xenophile = yes + } + modifier = { + factor = 1.25 + has_origin = origin_necrophage + has_trait = trait_necrophage + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + modifier = { + factor = 0 + is_individual_machine = yes + NOT = { + any_owned_species = { + is_organic_species = yes + } + } + } + } + + ai_weight = { + modifier = { + factor = 2 + has_origin = origin_necrophage + has_trait = trait_necrophage + } + } +} + +# Glandular Acclimation (planet preference modding) +tech_glandular_acclimation = { + cost = @tier3cost3 + area = society + tier = 3 + category = { biology } + prerequisites = { "tech_gene_tailoring" } + weight = @tier3weight3 + + feature_flags = { + habitability_gene_modding # No longer does anything except make a tooltip, handled in game rules ("can_gene_mod_habitability") + } + + potential = { + OR = { + NOT = { has_authority = auth_machine_intelligence } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_servitor + } + is_natural_design_empire = no + } + + weight_modifier = { + factor = 1.5 # genetech needs to be a bit more common + modifier = { + factor = 1.25 + has_authority = auth_hive_mind + } + modifier = { + factor = 1.25 + has_origin = origin_necrophage + has_trait = trait_necrophage + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + modifier = { + factor = 0.5 + is_individual_machine = yes + } + modifier = { + factor = 2 + AND = { + is_individual_machine = yes + any_owned_species = { + is_organic_species = yes + } + } + } + } + + ai_weight = { + modifier = { + factor = 2 + has_origin = origin_necrophage + has_trait = trait_necrophage + } + } +} + +#Targeted Gene Expressions +@tech_gene_expressions_POINTS = 1 +tech_gene_expressions = { + cost = @tier3cost3 + area = society + category = { biology } + tier = 3 + is_rare = yes + prerequisites = { "tech_gene_tailoring" } + weight = @tier3weight3 + + prereqfor_desc = { + custom = { + title = "TECH_UNLOCK_GENE_EXPRESSIONS_TITLE" + desc = "TECH_UNLOCK_GENE_EXPRESSIONS_DESC" + } + } + + potential = { + OR = { + NOR = { + has_authority = auth_machine_intelligence + is_individual_machine = yes + } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_servitor + } + NOR = { + has_valid_civic = civic_natural_design + has_valid_civic = civic_hive_natural_design + } + } + + weight_modifier = { + modifier = { + factor = 1.25 + has_authority = auth_hive_mind + } + modifier = { + factor = 0.50 + NOR = { + has_trait_in_council = { TRAIT = leader_trait_expertise_biology } + has_trait_in_council = { TRAIT = leader_trait_curator } + has_trait_in_council = { TRAIT = leader_trait_spark_of_genius } + has_trait_in_council = { TRAIT = leader_trait_spark_of_genius_2 } + } + } + inline_script = { + script = technologies/rare_technologies_weight_modifiers + TECHNOLOGY = tech_gene_expressions + } + modifier = { + factor = 2 + has_relic = r_pox_sample + } + } + + ai_weight = { + } +} diff --git a/better_mi/common/technology/~00_bm_tech.txt b/better_mi/common/technology/~00_bm_tech.txt new file mode 100644 index 0000000..d7d94b9 --- /dev/null +++ b/better_mi/common/technology/~00_bm_tech.txt @@ -0,0 +1,137 @@ +tech_pk_nanobots = { + area = engineering + cost = @tier5cost3 + tier = 5 + is_rare = yes + is_reverse_engineerable = no + category = { voidcraft } + prerequisites = { "tech_colossus" } + ai_update_type = military + weight = @tier5weight3 + + potential = { + host_has_dlc = "Apocalypse" + has_country_flag = colossus_project + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + + weight_modifier = { + factor = 0.50 + inline_script = { + script = technologies/rare_technologies_weight_modifiers + TECHNOLOGY = tech_pk_nanobots + } + modifier = { + factor = 0.20 + NOR = { + has_trait_in_council = { TRAIT = leader_trait_maniacal } + has_trait_in_council = { TRAIT = leader_trait_maniacal_2 } + has_trait_in_council = { TRAIT = leader_trait_maniacal_3 } + has_trait_in_council = { TRAIT = leader_trait_curator } + has_trait_in_council = { TRAIT = leader_trait_expertise_voidcraft } + } + } + } + + ai_weight = { + factor = 0.5 + modifier = { + factor = 5 + has_ethic = ethic_gestalt_consciousness + has_valid_civic = civic_machine_assimilator + } + } +} + +#Integrated Cybernetics +tech_integrated_cybernetics = { + cost = @tier2cost3 + area = engineering + tier = 2 + category = { industry } + prerequisites = { "tech_powered_exoskeletons" "tech_colonial_centralization" } + weight = @tier2weight3 + + modifier = { + pop_environment_tolerance = 0.05 + } + + potential = { + OR = { + AND = { + is_machine_empire = no + is_individual_machine = no + } + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + + weight_modifier = { + factor = 1.5 + + } + + ai_weight = { + factor = 2 + modifier = { + factor = 1000 + has_origin = origin_cybernetic_creed + } + } +} + +tech_neuro_quantum_links = { + area = physics + tier = 3 + cost = @tier3cost1 + category = { computing } + prerequisites = { "tech_basic_science_lab_2" "tech_integrated_cybernetics" } + weight = @tier3weight1 + + modifier = { + planet_jobs_specialist_produces_mult = 0.05 + } + + potential = { + OR = { + is_machine_empire = no + OR = { + has_valid_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + + weight_modifier = { + factor = 1.5 + modifier = { + factor = 0 + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + NOR = { + has_ascension_perk = ap_the_flesh_is_weak + has_ascension_perk = ap_organo_machine_interfacing + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + modifier = { + factor = 0.25 + NOR = { + has_trait_in_council = { TRAIT = leader_trait_expertise_computing } + has_trait_in_council = { TRAIT = leader_trait_curator } + } + } + } + + ai_weight = { + + } +} diff --git a/better_mi/common/tradition_categories/~00_bm_cybernetics_assimilator.txt b/better_mi/common/tradition_categories/~00_bm_cybernetics_assimilator.txt new file mode 100644 index 0000000..480a8f6 --- /dev/null +++ b/better_mi/common/tradition_categories/~00_bm_cybernetics_assimilator.txt @@ -0,0 +1,28 @@ +tradition_cybernetics_assimilator = { + tree_template = "tree_12_11_11" + adoption_bonus = "tr_cybernetics_assimilator_adopt" + finish_bonus = "tr_cybernetics_assimilator_finish" + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_mechromancy + } + has_synthetic_ascension = no + } + + traditions = { + "tr_cybernetics_assimilator_inevitable_assimilation" + "tr_cybernetics_assimilator_metabolic_reprocessing" + "tr_cybernetics_assimilator_integrated_anatomy" + "tr_cybernetics_assimilator_gestation" + "tr_cybernetics_assimilator_modular_cybernetics" + } + + ai_weight = { + factor = 1000 + } +} diff --git a/better_mi/common/traditions/~00_bm_traditions_cybernetic.txt b/better_mi/common/traditions/~00_bm_traditions_cybernetic.txt new file mode 100644 index 0000000..2355ac9 --- /dev/null +++ b/better_mi/common/traditions/~00_bm_traditions_cybernetic.txt @@ -0,0 +1,28 @@ +tr_cybernetics_assimilator_adopt = { + possible = { + has_ascension_perk = ap_organo_machine_interfacing_assimilator + has_technology = tech_integrated_cybernetics + } + unlocks_agenda = agenda_cybernetic_advantage_assimilator + custom_tooltip = tr_cybernetics_assimilator_adopt_desc + # Increased effects from Assimilating organic pops. + # See apply_post_assimilation_effects scripted effect + + on_enabled = { + if = { + limit = { + has_machine_age_dlc = yes + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_mechromancy + } + } + hidden_effect = { + country_event = { + id = cyber.2010 + days = 2 + } + } + } + } +} \ No newline at end of file diff --git a/better_mi/descriptor.mod b/better_mi/descriptor.mod new file mode 100644 index 0000000..065cb36 --- /dev/null +++ b/better_mi/descriptor.mod @@ -0,0 +1,9 @@ +version="1.0" +tags={ + "Overhaul" + "Gameplay" + "Balance" +} +name="Better Machine Intelligence" +supported_version="3.12.4" +remote_file_id="3261111337" \ No newline at end of file diff --git a/better_mi/events/!!bm_on_action.txt b/better_mi/events/!!bm_on_action.txt new file mode 100644 index 0000000..91e8cd8 --- /dev/null +++ b/better_mi/events/!!bm_on_action.txt @@ -0,0 +1,226 @@ + +namespace = action +# Assimilate Pops on Yearly Pulse +event = { + id = action.64 + hide_window = yes + is_triggered_only = yes + + trigger = { + any_playable_country = { + num_unique_species > 1 + any_owned_species = { + has_citizenship_type = { + type = citizenship_assimilation + country = prev + } + } + } + } + + immediate = { + log = "action.64" + set_update_modifiers_batch = begin + every_playable_country = { + limit = { + num_unique_species > 1 + any_owned_species = { + has_citizenship_type = { + type = citizenship_assimilation + country = prev + } + } + } + log = "action.64.epc" + + if = { # ascended synths + limit = { + NOT = { has_country_flag = synthetic_empire } + } + every_owned_species = { + limit = { + has_citizenship_type = { + type = citizenship_assimilation + country = prev + } + } + if = { # machines assimlating machines + limit = { + OR = { + has_trait = trait_mechanical + has_trait = trait_machine_unit + } + prev = { + has_authority = auth_machine_intelligence + has_active_tradition = tr_synthetics_adopt_machine + } + } + # Deliberately do nothing here, see assimilation_effect + } + else_if = { # assimilator empire or cyborg empire + limit = { + prev = { + OR = { + AND = { + is_hive_empire = no + has_tradition = tr_cybernetics_transubstantiation_synthesis + } + AND = { + has_authority = auth_machine_intelligence + OR = { + has_civic = civic_machine_assimilator + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + } + } + modify_species = { + species = this + add_trait = trait_cybernetic + add_traits_at_start_of_list = yes + remove_trait = trait_hive_mind + remove_trait = trait_self_modified + remove_trait = trait_latent_psionic + remove_trait = trait_psionic + change_scoped_species = no + + effect = { + set_timed_species_flag = { + flag = assimilation_species_of_species@prev + days = 30 + } + set_timed_species_flag = { + flag = assimilation_species_of_empire@prevprev + days = 30 + } + } + } + } + else_if = { # genetic hive mind + limit = { + prev = { + has_authority = auth_hive_mind + has_tradition = tr_genetics_creation + NOT = { + has_civic = civic_hive_devouring_swarm + } + } + } + modify_species = { + species = this + add_trait = trait_hive_mind + remove_trait = trait_self_modified + remove_trait = trait_latent_psionic + remove_trait = trait_psionic + change_scoped_species = no + + effect = { + set_timed_species_flag = { + flag = assimilation_species_of_species@prev + days = 30 + } + set_timed_species_flag = { + flag = assimilation_species_of_empire@prevprev + days = 30 + } + } + } + } + else_if = { # cyborg hive mind + limit = { + prev = { + has_authority = auth_hive_mind + has_tradition = tr_cybernetics_transubstantiation_synthesis + NOT = { + has_civic = civic_hive_devouring_swarm + } + } + } + modify_species = { + species = this + add_trait = trait_cybernetic + add_trait = trait_hive_mind + add_traits_at_start_of_list = yes + remove_trait = trait_self_modified + remove_trait = trait_latent_psionic + remove_trait = trait_psionic + change_scoped_species = no + + effect = { + set_timed_species_flag = { + flag = assimilation_species_of_species@prev + days = 30 + } + set_timed_species_flag = { + flag = assimilation_species_of_empire@prevprev + days = 30 + } + } + } + } + else_if = { + limit = { + prev = { + NOR = { + has_ethic = ethic_gestalt_consciousness + has_tradition = tr_cybernetics_transubstantiation_synthesis + } + } + has_trait = trait_hive_mind + } + modify_species = { + species = this + remove_trait = trait_hive_mind + change_scoped_species = no + + effect = { + set_timed_species_flag = { + flag = assimilation_species_of_species@prev + days = 30 + } + set_timed_species_flag = { + flag = assimilation_species_of_empire@prevprev + days = 30 + } + } + } + } + else_if = { #### Psionic Assimilation ADD OTHER RANDOM OPTIONS TOO + limit = { + prev = { + has_tradition = tr_psionics_psionic_assimilation + } + } + modify_species = { + species = this + add_trait = trait_psionic + add_traits_at_start_of_list = yes + remove_trait = trait_latent_psionic + remove_trait = trait_cybernetic + inline_script = { + script = traits/remove_all_cybernetic_traits + } + + effect = { + set_timed_species_flag = { + flag = assimilation_species_of_species@prev + days = 30 + } + set_timed_species_flag = { + flag = assimilation_species_of_empire@prevprev + days = 30 + } + } + } + } + } + } + + every_owned_planet = { + planet_event = { id = action.65 } + } + } + set_update_modifiers_batch = end + } +} \ No newline at end of file diff --git a/better_mi/gfx/interface/icons/agenda_icons/agenda_engineered_evolution_machine.dds b/better_mi/gfx/interface/icons/agenda_icons/agenda_engineered_evolution_machine.dds new file mode 100755 index 0000000..28d7137 Binary files /dev/null and b/better_mi/gfx/interface/icons/agenda_icons/agenda_engineered_evolution_machine.dds differ diff --git a/better_mi/interface/~council_agendas.gfx b/better_mi/interface/~council_agendas.gfx new file mode 100644 index 0000000..eb3d9a4 --- /dev/null +++ b/better_mi/interface/~council_agendas.gfx @@ -0,0 +1,6 @@ +spriteTypes = { + spriteType = { + name = "GFX_council_agenda_icon_agenda_engineered_evolution_machine" + texturefile = "gfx/interface/icons/agenda_icons/agenda_engineered_evolution_machine.dds" + } +} \ No newline at end of file diff --git a/better_mi/localisation/materus_l_english.yml b/better_mi/localisation/materus_l_english.yml new file mode 100644 index 0000000..fec94d8 --- /dev/null +++ b/better_mi/localisation/materus_l_english.yml @@ -0,0 +1,16 @@ +l_english: + district_machine_science: "Research District" + district_machine_science_plural: "Research Districts" + district_machine_science_desc: "Districts filled with server arrays and high speed processors making scientific simulations." + mod_planet_district_machine_science_build_speed_mult: "$district_machine_science$ Build Speed" + + living_standard_hive_mind_worker: "Drone Simple Worker" + living_standard_hive_mind_worker_tooltip: "While it may have little use for luxuries, a drone population still requires a great deal of resources to sustain itself. Will not generate leaders" + living_standard_hive_mind_worker_tooltip_delayed: "§LThe needs of the individual and the needs of all are one and the same.§!" + living_standard_hive_mind_advanced_worker: "Drone Advanced Worker" + living_standard_hive_mind_advanced_worker_tooltip: "While it may have little use for luxuries, a drone population still requires a great deal of resources to sustain itself. Will only generate military leaders." + living_standard_hive_mind_advanced_worker_tooltip_delayed: "§LThe needs of the individual and the needs of all are one and the same.§!" + + MACHINE_CANNOT_ENSLAVE_CYBORGS: "$TRIGGER_FAIL$§YCybernetics ascended machine§! cannot enslave cyborg species." + council_agenda_agenda_engineered_evolution_machine_name: "$ap_engineered_evolution$" + council_agenda_agenda_engineered_evolution_machine_desc: "$ap_engineered_evolution_desc$" \ No newline at end of file diff --git a/better_mi/localisation/materus_l_polish.yml b/better_mi/localisation/materus_l_polish.yml new file mode 100644 index 0000000..e7549ce --- /dev/null +++ b/better_mi/localisation/materus_l_polish.yml @@ -0,0 +1,16 @@ +l_polish: + district_machine_science: "Dzielnica naukowa" + district_machine_science_plural: "Dzielnice naukowe" + district_machine_science_desc: "Dzielnice pełne sieci serwerów i procesorów wykonujących symulacje naukowe." + mod_planet_district_machine_science_build_speed_mult: "$district_machine_science$ - szybkość budowy" + + living_standard_hive_mind_worker: "Dron - Prosty pracownik" + living_standard_hive_mind_worker_tooltip: "Populacja dronów rzadko korzysta z luksusów, ale nadal potrzebuje do życia olbrzymiej ilości zasobów. Nie będzię tworzyć przywództwów" + living_standard_hive_mind_worker_tooltip_delayed: "§LNie ma różnicy między potrzebami jednostki a potrzebami roju.§!" + living_standard_hive_mind_advanced_worker: "Dron - Zaawansowany pracownik" + living_standard_hive_mind_advanced_worker_tooltip: "Populacja dronów rzadko korzysta z luksusów, ale nadal potrzebuje do życia olbrzymiej ilości zasobów. Będzie tworzyć jedynie generałów" + living_standard_hive_mind_advanced_worker_tooltip_delayed: "§LNie ma różnicy między potrzebami jednostki a potrzebami roju.§!" + + MACHINE_CANNOT_ENSLAVE_CYBORGS: "$TRIGGER_FAIL$Nie można zniewolić cyborgów" + council_agenda_agenda_engineered_evolution_machine_name: "$ap_engineered_evolution$" + council_agenda_agenda_engineered_evolution_machine_desc: "$ap_engineered_evolution_desc$" \ No newline at end of file diff --git a/better_mi/thumbnail.png b/better_mi/thumbnail.png new file mode 100644 index 0000000..5374b90 Binary files /dev/null and b/better_mi/thumbnail.png differ diff --git a/sensible_ascension_perks/common/ascension_perks/~99_sap_ascension_paths.txt b/sensible_ascension_perks/common/ascension_perks/~99_sap_ascension_paths.txt new file mode 100755 index 0000000..634f258 --- /dev/null +++ b/sensible_ascension_perks/common/ascension_perks/~99_sap_ascension_paths.txt @@ -0,0 +1,552 @@ +################# +# ASCENSION PATHS +################# + +@ascension_path_base_weight = 100 +@ascension_path_synergy_weight = 2 +@ascension_path_anti_synergy_weight = 0.5 + +# Genetic Ascension (regular empires & Hive Minds) +ap_engineered_evolution = { + on_enabled = { + custom_tooltip = "engineered_evolution_tooltip" + if = { + limit = { + has_origin = origin_clone_army + OR = { + has_trait = trait_clone_soldier_infertile + has_trait = trait_clone_soldier_infertile_full_potential + } + } + custom_tooltip = clone_soldier_locked_genes + } + } + possible = { + custom_tooltip = { + fail_text = "synthetic_empire_biological_ascension" + OR = { + NOT = { has_trait = trait_mechanical } + has_civic = civic_machine_servitor + has_civic = civic_machine_assimilator + AND = { + is_materus_bm_installed = yes + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + custom_tooltip = { + fail_text = "requires_ascension_perks_2" + num_ascension_perks > 1 + } + custom_tooltip = { + fail_text = "requires_free_tradition_tree" + num_tradition_categories < @max_tradition_trees + } + } + + potential = { + has_utopia = yes + NOR = { + has_ascension_perk = ap_engineered_evolution + has_origin = origin_synthetic_fertility + } + OR = { + is_robot_empire = no + has_civic = civic_machine_servitor + has_civic = civic_machine_assimilator + AND = { + is_materus_bm_installed = yes + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + is_natural_design_empire = no + } + + ai_weight = { + factor = @ascension_path_base_weight + modifier = { + factor = @ascension_path_synergy_weight + has_engineered_evolution_synergy = yes + } + modifier = { + factor = 0.1 + num_ascension_perks < 3 + } + modifier = { + factor = 10 + num_ascension_perks > 4 + } + modifier = { + factor = 0.1 + OR = { + has_ascension_perk = ap_the_flesh_is_weak + has_ascension_perk = ap_organo_machine_interfacing + has_ascension_perk = ap_mind_over_matter + } + } + modifier = { + factor = 0 + has_ascension_perk = ap_synthetic_evolution + } + } +} + +# Cyborg Ascension (regular empires) +ap_the_flesh_is_weak = { + on_enabled = { + custom_tooltip = "flesh_is_weak_tooltip" + } + possible = { + custom_tooltip = { + fail_text = "synthetic_empire_synthetic_ascension" + NOT = { has_trait = trait_mechanical } + } + custom_tooltip = { + fail_text = "requires_ascension_perks_2" + OR = { + num_ascension_perks > 1 + has_origin = origin_cybernetic_creed + } + } + custom_tooltip = { + fail_text = "requires_not_ap_mind_over_matter" + NOT = { has_ascension_perk = ap_mind_over_matter } + } + custom_tooltip = { + fail_text = "requires_not_ap_synthetic_evolution" + NOT = { has_ascension_perk = ap_synthetic_evolution } + } + custom_tooltip = { + fail_text = "requires_free_tradition_tree" + num_tradition_categories < @max_tradition_trees + } + } + + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + NOR = { + has_ascension_perk = ap_the_flesh_is_weak + has_origin = origin_shroudwalker_apprentice + has_origin = origin_cybernetic_creed + has_origin = origin_synthetic_fertility + } + is_gestalt = no + is_individual_machine = no + is_natural_design_empire = no + } + + ai_weight = { + factor = @ascension_path_base_weight + modifier = { + factor = @ascension_path_anti_synergy_weight + has_flesh_is_weak_anti_synergy = yes + } + modifier = { + factor = 0.5 + has_ethic = ethic_spiritualist + } + modifier = { + factor = 0 + has_ethic = ethic_fanatic_spiritualist + } + modifier = { + factor = 0.1 + num_ascension_perks < 3 + } + modifier = { + factor = 10 + num_ascension_perks > 4 + } + modifier = { + factor = 0.1 + OR = { + has_ascension_perk = ap_engineered_evolution + has_ascension_perk = ap_organo_machine_interfacing + has_ascension_perk = ap_mind_over_matter + } + } + + modifier = { + factor = 0 + has_ascension_perk = ap_synthetic_evolution + } + } +} + +# Cyborg Ascension (Hive Minds) +ap_organo_machine_interfacing = { + on_enabled = { + custom_tooltip = "organo_machine_interfacing_tooltip" + } + possible = { + custom_tooltip = { + fail_text = "requires_ascension_perks_2" + num_ascension_perks > 1 + } + custom_tooltip = { + fail_text = "requires_free_tradition_tree" + num_tradition_categories < @max_tradition_trees + } + } + + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + NOT = { + has_ascension_perk = ap_organo_machine_interfacing + } + has_authority = auth_hive_mind + is_natural_design_empire = no + } + + ai_weight = { + factor = @ascension_path_base_weight + modifier = { + factor = 0.1 + num_ascension_perks < 3 + } + modifier = { + factor = 10 + num_ascension_perks > 4 + } + modifier = { + factor = 0.1 + OR = { + has_ascension_perk = ap_engineered_evolution + has_ascension_perk = ap_the_flesh_is_weak + has_ascension_perk = ap_mind_over_matter + } + } + modifier = { + factor = 0 + has_ascension_perk = ap_synthetic_evolution + } + } +} + +# Cyborg Ascension (Machine Intelligence: Driven Assimilators) +ap_organo_machine_interfacing_assimilator = { + on_enabled = { + custom_tooltip = "organo_machine_interfacing_tooltip" + } + possible = { + custom_tooltip = { + fail_text = "requires_ascension_perks_2" + num_ascension_perks > 1 + } + custom_tooltip = { + fail_text = "requires_free_tradition_tree" + num_tradition_categories < @max_tradition_trees + } + } + + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + NOT = { + has_ascension_perk = ap_organo_machine_interfacing_assimilator + has_civic = civic_machine_servitor + has_civic = civic_machine_terminator + } + OR = { + has_civic = civic_machine_assimilator + AND = { + has_ascension_perk = ap_mechromancy + is_materus_bm_installed = yes + } + + { + } + + ai_weight = { + factor = @ascension_path_base_weight + modifier = { + factor = @ascension_path_synergy_weight + has_organo_machine_interfacing_assimilator_synergy = yes + } + modifier = { + factor = 0.1 + num_ascension_perks < 3 + } + modifier = { + factor = 10 + num_ascension_perks > 4 + } + modifier = { + factor = 0.1 + OR = { + has_ascension_perk = ap_engineered_evolution + } + } + } +} + +# Synthetic Ascension (regular empires) +ap_synthetic_evolution = { + on_enabled = { + custom_tooltip = "synthetic_evolution_tooltip" + if = { + limit = { + has_origin = origin_necrophage + has_trait = trait_necrophage + } + custom_tooltip = disables_necrophage_features + } + if = { + limit = { + has_origin = origin_clone_army + OR = { + has_trait = trait_clone_soldier_infertile + has_trait = trait_clone_soldier_infertile_full_potential + has_trait = trait_clone_soldier_fertile + } + } + custom_tooltip = disables_clone_army_origin_features + } + if = { + limit = { + has_origin = origin_overtuned + } + custom_tooltip = disables_overtuned_features + } + if = { + limit = { + OR = { + has_valid_civic = civic_idyllic_bloom + has_valid_civic = civic_hive_idyllic_bloom + } + } + custom_tooltip = disables_idyllic_bloom + } + } + possible = { + custom_tooltip = { + fail_text = "synthetic_empire_synthetic_ascension" + NOT = { has_trait = trait_mechanical } + } + custom_tooltip = { + fail_text = "requires_ascension_perks_2" + num_ascension_perks > 1 + } + custom_tooltip = { + fail_text = "requires_not_ap_the_flesh_is_weak" + NOT = { has_ascension_perk = ap_the_flesh_is_weak } + } + custom_tooltip = { + fail_text = "requires_not_ap_mind_over_matter" + NOT = { has_ascension_perk = ap_mind_over_matter } + } + custom_tooltip = { + fail_text = "requires_free_tradition_tree" + num_tradition_categories < @max_tradition_trees + } + } + + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + NOR = { + has_ascension_perk = ap_synthetic_evolution + has_authority = "auth_machine_intelligence" + has_origin = origin_shroudwalker_apprentice + has_origin = origin_cybernetic_creed + has_origin = origin_synthetic_fertility + } + is_gestalt = no + is_mechanical_empire = no + is_natural_design_empire = no + NOT = { has_valid_civic = civic_augmentation_bazaars } + is_individual_machine = no + } + + ai_weight = { + factor = @ascension_path_base_weight + modifier = { + factor = @ascension_path_synergy_weight + has_synthetic_evolution_synergy = yes + } + modifier = { + factor = @ascension_path_anti_synergy_weight + has_synthetic_evolution_anti_synergy = yes + } + modifier = { + factor = 0 + blocks_ai_synthetic_evolution = yes + } + modifier = { + factor = 0 + is_spiritualist = yes + } + modifier = { + factor = 0.1 + num_ascension_perks < 3 + } + modifier = { + factor = 10 + num_ascension_perks > 4 + } + modifier = { + factor = 0 + OR = { + has_ascension_perk = ap_engineered_evolution + has_ascension_perk = ap_the_flesh_is_weak + has_ascension_perk = ap_organo_machine_interfacing + has_ascension_perk = ap_mind_over_matter + } + } + } +} + +# Psionic Ascension (regular empires) +ap_mind_over_matter = { + on_enabled = { + custom_tooltip = "mind_over_matter_tooltip" + } + possible = { + custom_tooltip = { + fail_text = "synthetic_empire_psionic_ascension" + NOT = { has_trait = trait_mechanical } + } + custom_tooltip = { + fail_text = "requires_ascension_perks_2" + num_ascension_perks > 1 + } + custom_tooltip = { + fail_text = "requires_not_ap_the_flesh_is_weak" + NOT = { has_ascension_perk = ap_the_flesh_is_weak } + } + custom_tooltip = { + fail_text = "requires_not_ap_synthetic_evolution" + NOT = { has_ascension_perk = ap_synthetic_evolution } + } + custom_tooltip = { + fail_text = "requires_free_tradition_tree" + num_tradition_categories < @max_tradition_trees + } + } + + potential = { + has_utopia = yes + NOR = { + has_country_flag = ratling_country + has_ascension_perk = ap_mind_over_matter + has_origin = origin_shroudwalker_apprentice + has_origin = origin_cybernetic_creed + has_origin = origin_synthetic_fertility + } + is_gestalt = no + is_mechanical_empire = no + is_cyborg_empire = no + is_natural_design_empire = no + is_individual_machine = no + NOT = { has_valid_civic = civic_augmentation_bazaars } + } + + ai_weight = { + factor = @ascension_path_base_weight + modifier = { + factor = @ascension_path_synergy_weight + has_mind_over_matter_synergy = yes + } + modifier = { + factor = @ascension_path_anti_synergy_weight + has_mind_over_matter_anti_synergy = yes + } + modifier = { + factor = 10 + has_ethic = ethic_fanatic_spiritualist + } + modifier = { + factor = 0.1 + num_ascension_perks < 3 + } + modifier = { + factor = 10 + num_ascension_perks > 4 + } + modifier = { + factor = 0.1 + OR = { + has_ascension_perk = ap_engineered_evolution + has_ascension_perk = ap_the_flesh_is_weak + has_ascension_perk = ap_organo_machine_interfacing + } + } + } +} + +# Synthetic Ascension (Machine Intelligence or Individualistic Machine) +ap_synthetic_age = { + potential = { + OR = { + has_synthetic_dawn = yes + has_machine_age_dlc = yes + } + OR = { + has_authority = auth_machine_intelligence + is_individual_machine = yes + has_country_flag = synthetics_traditions_unlocked + } + NOT = { + has_ascension_perk = ap_synthetic_age + } + is_natural_design_empire = no + } + + possible = { + custom_tooltip = { + fail_text = "requires_ascension_perks_2" + num_ascension_perks > 1 + } + custom_tooltip = { + fail_text = "requires_free_tradition_tree" + num_tradition_categories < @max_tradition_trees + } + } + + custom_tooltip = "synthetic_age_tooltip" + + tradition_swap = { + inherit_name = yes + inherit_effects = no + inherit_icon = yes + trigger = { + has_machine_age_dlc = yes + } + custom_tooltip = "synthetic_age_tooltip_machine_age" + on_enabled = { + hidden_effect = { + country_event = { id = machine_age.4000 } + } + } + + weight = { + factor = 1 + } + } + + ai_weight = { + factor = @ascension_path_base_weight + modifier = { + factor = @ascension_path_anti_synergy_weight + has_synthetic_age_anti_synergy = yes + } + modifier = { + factor = 0.1 + num_ascension_perks < 3 + } + modifier = { + factor = 10 + num_ascension_perks > 4 + } + } +} diff --git a/sensible_ascension_perks/common/council_agendas/~99_sap_agendas.txt b/sensible_ascension_perks/common/council_agendas/~99_sap_agendas.txt new file mode 100644 index 0000000..062753a --- /dev/null +++ b/sensible_ascension_perks/common/council_agendas/~99_sap_agendas.txt @@ -0,0 +1,620 @@ +@base_tradition_agenda_cost = 7000 +@ascension_agenda_cost = 3500 # Same as short_agenda_cost from traditions +@ascension_agenda_cooldown = 1080 # 3 Years + +agenda_cybernetic_advantage_assimilator = { + agenda_cost = @base_tradition_agenda_cost + allow = { + has_tradition = tr_cybernetics_assimilator_adopt + } + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + OR = { + has_civic = civic_machine_assimilator + AND = { + is_materus_bm_installed = yes + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + } + modifier = { + planet_pops_cyborgs_upkeep_mult = -0.05 + pop_growth_speed = 0.05 + } + finish_modifier = agenda_cybernetic_advantage_assimilator_finish +} + +agenda_organo_machine_interfacing_assimilator = { + agenda_cost = @ascension_agenda_cost + agenda_cooldown = @ascension_agenda_cooldown + allow = { + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + OR = { + AND = { + is_materus_bm_installed = yes + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + has_civic = civic_machine_assimilator + } + NAND = { + has_technology = tech_powered_exoskeletons + has_technology = tech_integrated_cybernetics + has_technology = tech_neuro_quantum_links + } + } + effect = { + inverted_switch = { + trigger = has_technology + tech_powered_exoskeletons = { + add_tech_progress = { + tech = tech_powered_exoskeletons + progress = @agenda_award_tech_progress + } + } + tech_integrated_cybernetics = { + add_tech_progress = { + tech = tech_integrated_cybernetics + progress = @agenda_award_tech_progress + } + } + tech_neuro_quantum_links = { + add_tech_progress = { + tech = tech_neuro_quantum_links + progress = @agenda_award_tech_progress + } + } + default = { + add_monthly_resource_mult = { + resource = engineering_research + value = @tier3researchreward + min = @tier3researchmin + max = @tier3researchmax + } + } + } + } +} +agenda_nanotech_unstoppable_swarm = { + agenda_cost = @base_tradition_agenda_cost + allow = { + has_tradition = tr_nanotech_adopt + } + potential = { + has_machine_age_dlc = yes + OR = { + is_individual_machine = yes + is_machine_empire = yes + } + NOR = { + has_country_flag = modularity_traditions_unlocked + has_country_flag = virtuality_traditions_unlocked + } + + } + modifier = { + shipsize_nanite_swarmer_build_speed_mult = 0.20 + ship_nanite_swarmer_cost_mult = -0.15 + } + finish_modifier = agenda_nanotech_unstoppable_swarm_finish +} + +agenda_modularity_reshape_form = { + agenda_cost = @base_tradition_agenda_cost + allow = { + has_tradition = tr_modularity_adopt + } + potential = { + has_machine_age_dlc = yes + OR = { + is_individual_machine = yes + is_machine_empire = yes + } + NOR = { + has_country_flag = nanotech_traditions_unlocked + has_country_flag = virtuality_traditions_unlocked + } + + } + modifier = { + planet_pops_robotics_upkeep_mult = -0.05 + planet_jobs_sr_living_metal_produces_mult = 0.05 + auto_mod_monthly_add = 1 + } + finish_modifier = agenda_modularity_reshape_form_finish +} +agenda_virtuality_optimized_network = { + agenda_cost = @base_tradition_agenda_cost + allow = { + has_tradition = tr_virtuality_adopt + } + potential = { + has_machine_age_dlc = yes + OR = { + is_individual_machine = yes + is_machine_empire = yes + } + NOR = { + has_country_flag = modularity_traditions_unlocked + has_country_flag = nanotech_traditions_unlocked + } + + } + modifier = { + planet_virtual_jobs_produces_mult = 0.05 + } + finish_modifier = agenda_virtuality_optimized_network_finish +} + +agenda_synthetic_age = { + agenda_cost = @ascension_agenda_cost + agenda_cooldown = @ascension_agenda_cooldown + allow = { + has_ascension_perk = ap_synthetic_age + } + potential = { + OR = { + is_machine_empire = yes + is_individual_machine = yes + } + OR = { + has_synthetic_dawn = yes + has_machine_age_dlc = yes + } + OR = { + has_valid_civic = civic_machine_assimilator + has_cybernetic_ascension = no + AND = { + is_materus_bm_installed = yes + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + NAND = { + has_technology = tech_powered_exoskeletons + has_technology = tech_robomodding_m + has_technology = tech_binary_motivators + has_technology = tech_nanite_assemblers + has_technology = tech_mega_assembly + } + } + effect = { + inverted_switch = { + trigger = has_technology + tech_powered_exoskeletons = { + add_tech_progress = { + tech = tech_powered_exoskeletons + progress = @agenda_award_tech_progress + } + } + tech_robomodding_m = { + add_tech_progress = { + tech = tech_robomodding_m + progress = @agenda_award_tech_progress + } + } + tech_binary_motivators = { + add_tech_progress = { + tech = tech_binary_motivators + progress = @agenda_award_tech_progress + } + } + tech_nanite_assemblers = { + add_tech_progress = { + tech = tech_nanite_assemblers + progress = @agenda_award_tech_progress + } + } + tech_mega_assembly = { + add_tech_progress = { + tech = tech_mega_assembly + progress = @agenda_award_tech_progress + } + } + default = { + add_monthly_resource_mult = { + resource = engineering_research + value = @tier3researchreward + min = @tier3researchmin + max = @tier3researchmax + } + } + } + } +} +agenda_synthetic_yield = { + agenda_cost = @base_tradition_agenda_cost + allow = { + has_tradition = tr_synthetics_adopt + } + potential = { + OR = { + AND = { + is_regular_empire = yes + is_individual_machine = no + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + } + AND = { + is_machine_empire = yes + has_synthetic_dawn = yes + has_machine_age_dlc = no + } + } + NOR = { + has_psionic_ascension = yes + is_natural_design_empire = yes + } + } + modifier = { + planet_pop_assembly_add = 0.5 + } + finish_modifier = agenda_synthetic_yield_finish +} + +agenda_organo_machine_interfacing = { + agenda_cost = @ascension_agenda_cost + agenda_cooldown = @ascension_agenda_cooldown + allow = { + has_ascension_perk = ap_organo_machine_interfacing + } + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + is_hive_empire = yes + NOR = { + has_psionic_ascension = yes + has_synthetic_ascension = yes + is_natural_design_empire = yes + is_individual_machine = yes + } + NAND = { + has_technology = tech_powered_exoskeletons + has_technology = tech_integrated_cybernetics + has_technology = tech_neuro_quantum_links + } + } + effect = { + inverted_switch = { + trigger = has_technology + tech_powered_exoskeletons = { + add_tech_progress = { + tech = tech_powered_exoskeletons + progress = @agenda_award_tech_progress + } + } + tech_integrated_cybernetics = { + add_tech_progress = { + tech = tech_integrated_cybernetics + progress = @agenda_award_tech_progress + } + } + tech_neuro_quantum_links = { + add_tech_progress = { + tech = tech_neuro_quantum_links + progress = @agenda_award_tech_progress + } + } + default = { + add_monthly_resource_mult = { + resource = engineering_research + value = @tier3researchreward + min = @tier3researchmin + max = @tier3researchmax + } + } + } + } +} + +agenda_flesh_is_weak = { + agenda_cost = @ascension_agenda_cost + agenda_cooldown = @ascension_agenda_cooldown + allow = { + OR = { + has_ascension_perk = ap_the_flesh_is_weak + has_origin = origin_cybernetic_creed + } + } + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + is_gestalt = no + NOR = { + has_psionic_ascension = yes + has_synthetic_ascension = yes + is_natural_design_empire = yes + is_individual_machine = yes + } + NAND = { + has_technology = tech_powered_exoskeletons + has_technology = tech_integrated_cybernetics + has_technology = tech_neuro_quantum_links + } + } + effect = { + inverted_switch = { + trigger = has_technology + tech_powered_exoskeletons = { + add_tech_progress = { + tech = tech_powered_exoskeletons + progress = @agenda_award_tech_progress + } + } + tech_integrated_cybernetics = { + add_tech_progress = { + tech = tech_integrated_cybernetics + progress = @agenda_award_tech_progress + } + } + tech_neuro_quantum_links = { + add_tech_progress = { + tech = tech_neuro_quantum_links + progress = @agenda_award_tech_progress + } + } + default = { + add_monthly_resource_mult = { + resource = engineering_research + value = @tier3researchreward + min = @tier3researchmin + max = @tier3researchmax + } + } + } + } +} +agenda_cybernetic_advantage = { + agenda_cost = @base_tradition_agenda_cost + allow = { + has_tradition = tr_cybernetics_adopt + } + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + is_machine_empire = no + NOR = { + has_psionic_ascension = yes + has_synthetic_ascension = yes + is_natural_design_empire = yes + is_individual_machine = yes + } + } + modifier = { + planet_pops_cyborgs_upkeep_mult = -0.05 + pop_growth_speed = 0.025 + } + finish_modifier = agenda_cybernetic_advantage_finish +} + +agenda_genetic_pursuit = { + agenda_cost = @base_tradition_agenda_cost + allow = { + has_tradition = tr_genetics_adopt + } + potential = { + has_utopia = yes + OR = { + is_machine_empire = no + has_civic = civic_machine_assimilator + has_civic = civic_machine_servitor + AND = { + is_materus_bm_installed = yes + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + NOR = { + has_synthetic_ascension = yes + is_natural_design_empire = yes + is_individual_machine = yes + } + } + modifier = { + category_biology_research_speed_mult = 0.05 + pop_growth_speed = 0.025 + planet_pop_assembly_organic_mult = 0.025 + } + finish_modifier = agenda_genetic_pursuit_finish +} + + +agenda_engineered_evolution_machine = { + agenda_cost = @ascension_agenda_cost + agenda_cooldown = @ascension_agenda_cooldown + allow = { + has_ascension_perk = ap_engineered_evolution + } + potential = { + has_utopia = yes + is_machine_empire = yes + OR = { + has_civic = civic_machine_assimilator + has_civic = civic_machine_servitor + AND = { + is_materus_bm_installed = yes + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + NAND = { + has_technology = tech_genome_mapping + has_technology = tech_gene_tailoring + has_technology = tech_glandular_acclimation + has_technology = tech_gene_expressions + } + } + effect = { + inverted_switch = { + trigger = has_technology + tech_genome_mapping = { + add_tech_progress = { + tech = tech_genome_mapping + progress = @agenda_award_tech_progress + } + } + tech_gene_tailoring = { + add_tech_progress = { + tech = tech_gene_tailoring + progress = @agenda_award_tech_progress + } + } + tech_glandular_acclimation = { + add_tech_progress = { + tech = tech_glandular_acclimation + progress = @agenda_award_tech_progress + } + } + tech_gene_expressions = { + add_tech_progress = { + tech = tech_gene_expressions + progress = @agenda_award_tech_progress + } + } + default = { + add_monthly_resource_mult = { + resource = society_research + value = @tier3researchreward + min = @tier3researchmin + max = @tier3researchmax + } + } + } + } +} + +agenda_engineered_evolution = { + agenda_cost = @ascension_agenda_cost + agenda_cooldown = @ascension_agenda_cooldown + allow = { + has_ascension_perk = ap_engineered_evolution + } + potential = { + has_utopia = yes + is_machine_empire = no + NOR = { + has_synthetic_ascension = yes + is_natural_design_empire = yes + is_individual_machine = yes + } + NAND = { + has_technology = tech_genome_mapping + has_technology = tech_gene_tailoring + has_technology = tech_glandular_acclimation + has_technology = tech_gene_expressions + has_technology = tech_gene_seed_purification + } + } + effect = { + inverted_switch = { + trigger = has_technology + tech_genome_mapping = { + add_tech_progress = { + tech = tech_genome_mapping + progress = @agenda_award_tech_progress + } + } + tech_gene_tailoring = { + add_tech_progress = { + tech = tech_gene_tailoring + progress = @agenda_award_tech_progress + } + } + tech_glandular_acclimation = { + add_tech_progress = { + tech = tech_glandular_acclimation + progress = @agenda_award_tech_progress + } + } + tech_gene_expressions = { + add_tech_progress = { + tech = tech_gene_expressions + progress = @agenda_award_tech_progress + } + } + tech_gene_seed_purification = { + add_tech_progress = { + tech = tech_gene_seed_purification + progress = @agenda_award_tech_progress + } + } + default = { + add_monthly_resource_mult = { + resource = society_research + value = @tier3researchreward + min = @tier3researchmin + max = @tier3researchmax + } + } + } + } +} +agenda_mind_over_matter = { + agenda_cost = value:agenda_mind_over_matter_cost + agenda_cooldown = @ascension_agenda_cooldown + allow = { + OR = { + has_ascension_perk = ap_mind_over_matter + has_origin = origin_shroudwalker_apprentice + } + } + potential = { + has_utopia = yes + is_gestalt = no + NOR = { + has_cybernetic_ascension = yes + has_synthetic_ascension = yes + is_natural_design_empire = yes + is_individual_machine = yes + } + NAND = { + has_technology = tech_psionic_theory + has_technology = tech_telepathy + has_technology = tech_thought_enforcement + } + } + effect = { + inverted_switch = { + trigger = has_technology + tech_psionic_theory = { + add_tech_progress = { + tech = tech_psionic_theory + progress = @agenda_award_tech_progress + } + } + tech_telepathy = { + add_tech_progress = { + tech = tech_telepathy + progress = @agenda_award_tech_progress + } + } + tech_thought_enforcement = { + add_tech_progress = { + tech = tech_thought_enforcement + progress = @agenda_award_tech_progress + } + } + default = { + add_monthly_resource_mult = { + resource = society_research + value = @tier3researchreward + min = @tier3researchmin + max = @tier3researchmax + } + } + } + } +} \ No newline at end of file diff --git a/sensible_ascension_perks/common/scripted_triggers/!!-sap_placeholder.txt b/sensible_ascension_perks/common/scripted_triggers/!!-sap_placeholder.txt new file mode 100755 index 0000000..3ad743d --- /dev/null +++ b/sensible_ascension_perks/common/scripted_triggers/!!-sap_placeholder.txt @@ -0,0 +1 @@ +is_materus_bm_installed = { always = no } \ No newline at end of file diff --git a/sensible_ascension_perks/common/scripted_triggers/~00_sap_scripted_triggers.txt b/sensible_ascension_perks/common/scripted_triggers/~00_sap_scripted_triggers.txt new file mode 100755 index 0000000..86b664a --- /dev/null +++ b/sensible_ascension_perks/common/scripted_triggers/~00_sap_scripted_triggers.txt @@ -0,0 +1,13 @@ +is_materus_sap_installed = { always = yes } + +can_add_overtuned_traits = { + hidden_trigger = { exists = from } + from = { + OR = { + has_origin = origin_overtuned + has_tradition = tr_genetics_finish + } + } +} + + diff --git a/sensible_ascension_perks/common/tradition_categories/~99_sap_cybernetics.txt b/sensible_ascension_perks/common/tradition_categories/~99_sap_cybernetics.txt new file mode 100755 index 0000000..6969dd3 --- /dev/null +++ b/sensible_ascension_perks/common/tradition_categories/~99_sap_cybernetics.txt @@ -0,0 +1,30 @@ +tradition_cybernetics = { + tree_template = "tree_12_11_11" + adoption_bonus = "tr_cybernetics_adopt" + finish_bonus = "tr_cybernetics_finish" + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + is_machine_empire = no + NOR = { + has_psionic_ascension = yes + has_synthetic_ascension = yes + is_natural_design_empire = yes + is_individual_machine = yes + } + } + + traditions = { + "tr_cybernetics_transubstantiation_synthesis" + "tr_cybernetics_metabolic_reprocessing" + "tr_cybernetics_integrated_anatomy" + "tr_cybernetics_augmentation_overload" + "tr_cybernetics_modular_cybernetics" + } + + ai_weight = { + factor = 1000 + } +} \ No newline at end of file diff --git a/sensible_ascension_perks/common/tradition_categories/~99_sap_cybernetics_assimilator.txt b/sensible_ascension_perks/common/tradition_categories/~99_sap_cybernetics_assimilator.txt new file mode 100755 index 0000000..fad9b3a --- /dev/null +++ b/sensible_ascension_perks/common/tradition_categories/~99_sap_cybernetics_assimilator.txt @@ -0,0 +1,30 @@ +tradition_cybernetics_assimilator = { + tree_template = "tree_12_11_11" + adoption_bonus = "tr_cybernetics_assimilator_adopt" + finish_bonus = "tr_cybernetics_assimilator_finish" + potential = { + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + OR = { + has_civic = civic_machine_assimilator + AND = { + is_materus_bm_installed = yes + has_ascension_perk = ap_mechromancy + } + } + } + + traditions = { + "tr_cybernetics_assimilator_inevitable_assimilation" + "tr_cybernetics_assimilator_metabolic_reprocessing" + "tr_cybernetics_assimilator_integrated_anatomy" + "tr_cybernetics_assimilator_gestation" + "tr_cybernetics_assimilator_modular_cybernetics" + } + + ai_weight = { + factor = 1000 + } +} diff --git a/sensible_ascension_perks/common/tradition_categories/~99_sap_genetics.txt b/sensible_ascension_perks/common/tradition_categories/~99_sap_genetics.txt new file mode 100755 index 0000000..de1ccc6 --- /dev/null +++ b/sensible_ascension_perks/common/tradition_categories/~99_sap_genetics.txt @@ -0,0 +1,34 @@ +tradition_genetics = { + tree_template = "tree_111_11" + adoption_bonus = "tr_genetics_adopt" + finish_bonus = "tr_genetics_finish" + + potential = { + has_utopia = yes + OR = { + is_machine_empire = no + has_civic = civic_machine_servitor + has_civic = civic_machine_assimilator + AND = { + is_materus_bm_installed = yes + has_ascension_perk = ap_organo_machine_interfacing_assimilator + } + } + NOR = { + is_natural_design_empire = yes + is_individual_machine = yes + } + } + + traditions = { + "tr_genetics_resequencing" + "tr_genetics_creation" + "tr_genetics_enhanced_expression" + "tr_genetics_retrovirus" + "tr_genetics_efficient_cloning" + } + + ai_weight = { + factor = 1000 + } +} \ No newline at end of file diff --git a/sensible_ascension_perks/common/tradition_categories/~99_sap_modularity.txt b/sensible_ascension_perks/common/tradition_categories/~99_sap_modularity.txt new file mode 100755 index 0000000..997fedf --- /dev/null +++ b/sensible_ascension_perks/common/tradition_categories/~99_sap_modularity.txt @@ -0,0 +1,30 @@ +tradition_modularity = { + tree_template = "tree_12_11_11" + adoption_bonus = "tr_modularity_adopt" + finish_bonus = "tr_modularity_finish" + + potential = { + has_machine_age_dlc = yes + OR = { + is_machine_empire = yes + is_individual_machine = yes + has_country_flag = synthetics_traditions_unlocked + } + NOR = { + has_tradition = tr_nanotech_adopt + has_tradition = tr_virtuality_adopt + } + } + + traditions = { + "tr_modularity_1" + "tr_modularity_2" + "tr_modularity_3" + "tr_modularity_4" + "tr_modularity_5" + } + + ai_weight = { + factor = 1000 + } +} diff --git a/sensible_ascension_perks/common/tradition_categories/~99_sap_nanotech.txt b/sensible_ascension_perks/common/tradition_categories/~99_sap_nanotech.txt new file mode 100755 index 0000000..b02a01d --- /dev/null +++ b/sensible_ascension_perks/common/tradition_categories/~99_sap_nanotech.txt @@ -0,0 +1,30 @@ +tradition_nanotech = { + tree_template = "tree_11_11_21" + adoption_bonus = "tr_nanotech_adopt" + finish_bonus = "tr_nanotech_finish" + + potential = { + has_machine_age_dlc = yes + OR = { + is_machine_empire = yes + is_individual_machine = yes + has_country_flag = synthetics_traditions_unlocked + } + NOR = { + has_tradition = tr_virtuality_adopt + has_tradition = tr_modularity_adopt + } + } + + traditions = { + "tr_nanotech_1" + "tr_nanotech_2" + "tr_nanotech_3" + "tr_nanotech_4" + "tr_nanotech_5" + } + + ai_weight = { + factor = 1000 + } +} diff --git a/sensible_ascension_perks/common/tradition_categories/~99_sap_psionics.txt b/sensible_ascension_perks/common/tradition_categories/~99_sap_psionics.txt new file mode 100755 index 0000000..6b55f9d --- /dev/null +++ b/sensible_ascension_perks/common/tradition_categories/~99_sap_psionics.txt @@ -0,0 +1,28 @@ +tradition_psionics = { + tree_template = "tree_21_12" + adoption_bonus = "tr_psionics_adopt" + finish_bonus = "tr_psionics_finish" + + potential = { + has_utopia = yes + is_gestalt = no + NOR = { + has_cybernetic_ascension = yes + has_synthetic_ascension = yes + is_natural_design_empire = yes + is_individual_machine = yes + } + } + + traditions = { + "tr_psionics_psi_corps" + "tr_psionics_mind_readers" + "tr_psionics_psionic_assimilation" + "tr_psionics_breach_shroud" + "tr_psionics_shrouded_encryption" + } + + ai_weight = { + factor = 1000 + } +} diff --git a/sensible_ascension_perks/common/tradition_categories/~99_sap_synthetics.txt b/sensible_ascension_perks/common/tradition_categories/~99_sap_synthetics.txt new file mode 100755 index 0000000..b6557dd --- /dev/null +++ b/sensible_ascension_perks/common/tradition_categories/~99_sap_synthetics.txt @@ -0,0 +1,39 @@ +tradition_synthetics = { + tree_template = "tree_11_12" + adoption_bonus = "tr_synthetics_adopt" + finish_bonus = "tr_synthetics_finish" + potential = { + OR = { + AND = { + is_regular_empire = yes + is_individual_machine = no + OR = { + has_utopia = yes + has_machine_age_dlc = yes + } + } + AND = { + is_machine_empire = yes + has_synthetic_dawn = yes + has_machine_age_dlc = no + } + } + NOR = { + has_cybernetic_ascension = yes + has_psionic_ascension = yes + is_natural_design_empire = yes + } + } + + traditions = { + "tr_synthetics_maintenance_protocols" + "tr_synthetics_optimization_algorithms" + "tr_synthetics_transubstatiation_synthesis" + "tr_synthetics_power_systems" + "tr_synthetics_prefabricated_components" + } + + ai_weight = { + factor = 1000 + } +} \ No newline at end of file diff --git a/sensible_ascension_perks/common/tradition_categories/~99_sap_virtuality.txt b/sensible_ascension_perks/common/tradition_categories/~99_sap_virtuality.txt new file mode 100755 index 0000000..fab391a --- /dev/null +++ b/sensible_ascension_perks/common/tradition_categories/~99_sap_virtuality.txt @@ -0,0 +1,30 @@ +tradition_virtuality = { + tree_template = "tree_21_12" + adoption_bonus = "tr_virtuality_adopt" + finish_bonus = "tr_virtuality_finish" + + potential = { + has_machine_age_dlc = yes + OR = { + is_machine_empire = yes + is_individual_machine = yes + has_country_flag = synthetics_traditions_unlocked + } + NOR = { + has_tradition = tr_nanotech_adopt + has_tradition = tr_modularity_adopt + } + } + + traditions = { + "tr_virtuality_1" + "tr_virtuality_2" + "tr_virtuality_3" + "tr_virtuality_4" + "tr_virtuality_5" + } + + ai_weight = { + factor = 1000 + } +} diff --git a/sensible_ascension_perks/descriptor.mod b/sensible_ascension_perks/descriptor.mod new file mode 100755 index 0000000..4dd5d5e --- /dev/null +++ b/sensible_ascension_perks/descriptor.mod @@ -0,0 +1,8 @@ +version="1.1" +tags={ + "Gameplay" + "Balance" +} +name="Sensible multiple ascension paths" +supported_version="3.12.4" +remote_file_id="3254863813" \ No newline at end of file diff --git a/sensible_ascension_perks/localisation/english/replace/traditions_l_english.yml b/sensible_ascension_perks/localisation/english/replace/traditions_l_english.yml new file mode 100755 index 0000000..f6fdd72 --- /dev/null +++ b/sensible_ascension_perks/localisation/english/replace/traditions_l_english.yml @@ -0,0 +1,3 @@ +l_english: + tr_genetics_finish_extra_traits_modifier_desc: "Unlocks usage of §Yovertuned§! traits.\nAllows research of rare §YTransgenesis§! technologies.\n$mod_planet_buildings_clone_vats_upkeep_mult$: §G-33%§!\n$TRADITIONS_FINISH_AP$" + diff --git a/sensible_ascension_perks/localisation/polish/replace/traditions_l_polish.yml b/sensible_ascension_perks/localisation/polish/replace/traditions_l_polish.yml new file mode 100755 index 0000000..39c8edb --- /dev/null +++ b/sensible_ascension_perks/localisation/polish/replace/traditions_l_polish.yml @@ -0,0 +1,3 @@ +l_polish: + tr_genetics_finish_extra_traits_modifier_desc: "Daje dostęp do §Yprzeładowanych cech§!.\nPozwala prowadzić badania naukowe nad rzadkimi technologiami §Ytransgenezy§!.\n$mod_planet_buildings_clone_vats_upkeep_mult$: §G-33%§!\n$TRADITIONS_FINISH_AP$" + diff --git a/sensible_ascension_perks/thumbnail.png b/sensible_ascension_perks/thumbnail.png new file mode 100755 index 0000000..0233caf Binary files /dev/null and b/sensible_ascension_perks/thumbnail.png differ